summaryrefslogtreecommitdiffstats
path: root/runtime/syntax
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax')
-rw-r--r--runtime/syntax/2html.vim1995
-rw-r--r--runtime/syntax/8th.vim404
-rw-r--r--runtime/syntax/README.txt41
-rw-r--r--runtime/syntax/a2ps.vim71
-rw-r--r--runtime/syntax/a65.vim153
-rw-r--r--runtime/syntax/aap.vim158
-rw-r--r--runtime/syntax/abap.vim196
-rw-r--r--runtime/syntax/abaqus.vim34
-rw-r--r--runtime/syntax/abc.vim51
-rw-r--r--runtime/syntax/abel.vim161
-rw-r--r--runtime/syntax/acedb.vim110
-rw-r--r--runtime/syntax/ada.vim368
-rw-r--r--runtime/syntax/aflex.vim82
-rw-r--r--runtime/syntax/ahdl.vim81
-rw-r--r--runtime/syntax/aidl.vim23
-rw-r--r--runtime/syntax/alsaconf.vim49
-rw-r--r--runtime/syntax/amiga.vim88
-rw-r--r--runtime/syntax/aml.vim144
-rw-r--r--runtime/syntax/ampl.vim140
-rw-r--r--runtime/syntax/ant.vim97
-rw-r--r--runtime/syntax/antlr.vim54
-rw-r--r--runtime/syntax/apache.vim204
-rw-r--r--runtime/syntax/apachestyle.vim54
-rw-r--r--runtime/syntax/aptconf.vim577
-rw-r--r--runtime/syntax/arch.vim41
-rw-r--r--runtime/syntax/arduino.vim83
-rw-r--r--runtime/syntax/art.vim50
-rw-r--r--runtime/syntax/asciidoc.vim185
-rw-r--r--runtime/syntax/asm.vim164
-rw-r--r--runtime/syntax/asm68k.vim378
-rw-r--r--runtime/syntax/asmh8300.vim58
-rw-r--r--runtime/syntax/asn.vim73
-rw-r--r--runtime/syntax/aspperl.vim25
-rw-r--r--runtime/syntax/aspvbs.vim182
-rw-r--r--runtime/syntax/asterisk.vim88
-rw-r--r--runtime/syntax/asteriskvm.vim51
-rw-r--r--runtime/syntax/atlas.vim85
-rw-r--r--runtime/syntax/autodoc.vim101
-rw-r--r--runtime/syntax/autohotkey.vim325
-rw-r--r--runtime/syntax/autoit.vim1125
-rw-r--r--runtime/syntax/automake.vim77
-rw-r--r--runtime/syntax/ave.vim79
-rw-r--r--runtime/syntax/avra.vim71
-rw-r--r--runtime/syntax/awk.vim217
-rw-r--r--runtime/syntax/ayacc.vim75
-rw-r--r--runtime/syntax/b.vim114
-rw-r--r--runtime/syntax/baan.vim1917
-rw-r--r--runtime/syntax/bash.vim20
-rw-r--r--runtime/syntax/basic.vim380
-rw-r--r--runtime/syntax/bc.vim66
-rw-r--r--runtime/syntax/bdf.vim97
-rw-r--r--runtime/syntax/bib.vim121
-rw-r--r--runtime/syntax/bindzone.vim97
-rw-r--r--runtime/syntax/bitbake.vim126
-rw-r--r--runtime/syntax/blank.vim39
-rw-r--r--runtime/syntax/bsdl.vim17
-rw-r--r--runtime/syntax/bst.vim70
-rw-r--r--runtime/syntax/btm.vim216
-rw-r--r--runtime/syntax/bzl.vim16
-rw-r--r--runtime/syntax/bzr.vim50
-rw-r--r--runtime/syntax/c.vim519
-rw-r--r--runtime/syntax/cabal.vim278
-rw-r--r--runtime/syntax/cabalconfig.vim30
-rw-r--r--runtime/syntax/cabalproject.vim28
-rw-r--r--runtime/syntax/calendar.vim110
-rw-r--r--runtime/syntax/catalog.vim30
-rw-r--r--runtime/syntax/cdl.vim78
-rw-r--r--runtime/syntax/cdrdaoconf.vim139
-rw-r--r--runtime/syntax/cdrtoc.vim537
-rw-r--r--runtime/syntax/cf.vim1018
-rw-r--r--runtime/syntax/cfg.vim48
-rw-r--r--runtime/syntax/ch.vim38
-rw-r--r--runtime/syntax/chaiscript.vim94
-rw-r--r--runtime/syntax/change.vim29
-rw-r--r--runtime/syntax/changelog.vim58
-rw-r--r--runtime/syntax/chaskell.vim14
-rw-r--r--runtime/syntax/chatito.vim62
-rw-r--r--runtime/syntax/cheetah.vim47
-rw-r--r--runtime/syntax/chicken.vim94
-rw-r--r--runtime/syntax/chill.vim178
-rw-r--r--runtime/syntax/chordpro.vim173
-rw-r--r--runtime/syntax/cl.vim98
-rw-r--r--runtime/syntax/clean.vim90
-rw-r--r--runtime/syntax/clipper.vim135
-rw-r--r--runtime/syntax/clojure.vim218
-rw-r--r--runtime/syntax/cmake.vim477
-rw-r--r--runtime/syntax/cmod.vim144
-rw-r--r--runtime/syntax/cmusrc.vim309
-rw-r--r--runtime/syntax/cobol.vim260
-rw-r--r--runtime/syntax/coco.vim33
-rw-r--r--runtime/syntax/colortest.vim81
-rw-r--r--runtime/syntax/conaryrecipe.vim137
-rw-r--r--runtime/syntax/conf.vim26
-rw-r--r--runtime/syntax/config.vim54
-rw-r--r--runtime/syntax/confini.vim12
-rw-r--r--runtime/syntax/context.vim144
-rw-r--r--runtime/syntax/cpp.vim129
-rw-r--r--runtime/syntax/crm.vim41
-rw-r--r--runtime/syntax/crontab.vim67
-rw-r--r--runtime/syntax/cs.vim331
-rw-r--r--runtime/syntax/csc.vim191
-rw-r--r--runtime/syntax/csdl.vim536
-rw-r--r--runtime/syntax/csh.vim143
-rw-r--r--runtime/syntax/csp.vim182
-rw-r--r--runtime/syntax/css.vim665
-rw-r--r--runtime/syntax/cterm.vim177
-rw-r--r--runtime/syntax/ctrlh.vim23
-rw-r--r--runtime/syntax/cucumber.vim142
-rw-r--r--runtime/syntax/cuda.vim65
-rw-r--r--runtime/syntax/cupl.vim124
-rw-r--r--runtime/syntax/cuplsim.vim63
-rw-r--r--runtime/syntax/cvs.vim29
-rw-r--r--runtime/syntax/cvsrc.vim39
-rw-r--r--runtime/syntax/cweb.vim68
-rw-r--r--runtime/syntax/cynlib.vim74
-rw-r--r--runtime/syntax/cynpp.vim50
-rw-r--r--runtime/syntax/d.vim573
-rw-r--r--runtime/syntax/dart.vim90
-rw-r--r--runtime/syntax/datascript.vim102
-rw-r--r--runtime/syntax/dcd.vim51
-rw-r--r--runtime/syntax/dcl.vim152
-rw-r--r--runtime/syntax/debchangelog.vim77
-rw-r--r--runtime/syntax/debcontrol.vim145
-rw-r--r--runtime/syntax/debcopyright.vim33
-rw-r--r--runtime/syntax/debsources.vim61
-rw-r--r--runtime/syntax/def.vim44
-rw-r--r--runtime/syntax/denyhosts.vim289
-rw-r--r--runtime/syntax/dep3patch.vim57
-rw-r--r--runtime/syntax/desc.vim88
-rw-r--r--runtime/syntax/desktop.vim267
-rw-r--r--runtime/syntax/dictconf.vim80
-rw-r--r--runtime/syntax/dictdconf.vim146
-rw-r--r--runtime/syntax/diff.vim389
-rw-r--r--runtime/syntax/dircolors.vim222
-rw-r--r--runtime/syntax/dirpager.vim56
-rw-r--r--runtime/syntax/diva.vim96
-rw-r--r--runtime/syntax/django.vim84
-rw-r--r--runtime/syntax/dns.vim5
-rw-r--r--runtime/syntax/dnsmasq.vim242
-rw-r--r--runtime/syntax/docbk.vim186
-rw-r--r--runtime/syntax/docbksgml.vim7
-rw-r--r--runtime/syntax/docbkxml.vim7
-rw-r--r--runtime/syntax/dockerfile.vim45
-rw-r--r--runtime/syntax/dosbatch.vim152
-rw-r--r--runtime/syntax/dosini.vim40
-rw-r--r--runtime/syntax/dot.vim121
-rw-r--r--runtime/syntax/doxygen.vim633
-rw-r--r--runtime/syntax/dracula.vim72
-rw-r--r--runtime/syntax/dsl.vim38
-rw-r--r--runtime/syntax/dtd.vim161
-rw-r--r--runtime/syntax/dtml.vim208
-rw-r--r--runtime/syntax/dtrace.vim145
-rw-r--r--runtime/syntax/dts.vim79
-rw-r--r--runtime/syntax/dune.vim47
-rw-r--r--runtime/syntax/dylan.vim92
-rw-r--r--runtime/syntax/dylanintr.vim39
-rw-r--r--runtime/syntax/dylanlid.vim29
-rw-r--r--runtime/syntax/ecd.vim44
-rw-r--r--runtime/syntax/edif.vim45
-rw-r--r--runtime/syntax/editorconfig.vim21
-rw-r--r--runtime/syntax/eiffel.vim199
-rw-r--r--runtime/syntax/elf.vim82
-rw-r--r--runtime/syntax/elinks.vim188
-rw-r--r--runtime/syntax/elm.vim105
-rw-r--r--runtime/syntax/elmfilt.vim58
-rw-r--r--runtime/syntax/erlang.vim266
-rw-r--r--runtime/syntax/eruby.vim79
-rw-r--r--runtime/syntax/esmtprc.vim31
-rw-r--r--runtime/syntax/esqlc.vim58
-rw-r--r--runtime/syntax/esterel.vim78
-rw-r--r--runtime/syntax/eterm.vim429
-rw-r--r--runtime/syntax/euphoria3.vim133
-rw-r--r--runtime/syntax/euphoria4.vim245
-rw-r--r--runtime/syntax/eviews.vim87
-rw-r--r--runtime/syntax/exim.vim105
-rw-r--r--runtime/syntax/expect.vim103
-rw-r--r--runtime/syntax/exports.vim58
-rw-r--r--runtime/syntax/falcon.vim197
-rw-r--r--runtime/syntax/fan.vim132
-rw-r--r--runtime/syntax/fasm.vim151
-rw-r--r--runtime/syntax/fdcc.vim101
-rw-r--r--runtime/syntax/fetchmail.vim83
-rw-r--r--runtime/syntax/fgl.vim134
-rw-r--r--runtime/syntax/fish.vim225
-rw-r--r--runtime/syntax/flexwiki.vim133
-rw-r--r--runtime/syntax/focexec.vim88
-rw-r--r--runtime/syntax/form.vim145
-rw-r--r--runtime/syntax/forth.vim266
-rw-r--r--runtime/syntax/fortran.vim553
-rw-r--r--runtime/syntax/foxpro.vim716
-rw-r--r--runtime/syntax/fpcmake.vim58
-rw-r--r--runtime/syntax/framescript.vim491
-rw-r--r--runtime/syntax/freebasic.vim674
-rw-r--r--runtime/syntax/fstab.vim494
-rw-r--r--runtime/syntax/fvwm.vim642
-rw-r--r--runtime/syntax/fvwm2m4.vim32
-rw-r--r--runtime/syntax/gdb.vim104
-rw-r--r--runtime/syntax/gdmo.vim83
-rw-r--r--runtime/syntax/gdresource.vim65
-rw-r--r--runtime/syntax/gdscript.vim103
-rw-r--r--runtime/syntax/gdshader.vim57
-rw-r--r--runtime/syntax/gedcom.vim53
-rw-r--r--runtime/syntax/gemtext.vim24
-rw-r--r--runtime/syntax/gift.vim216
-rw-r--r--runtime/syntax/git.vim111
-rw-r--r--runtime/syntax/gitattributes.vim63
-rw-r--r--runtime/syntax/gitcommit.vim107
-rw-r--r--runtime/syntax/gitconfig.vim36
-rw-r--r--runtime/syntax/gitignore.vim29
-rw-r--r--runtime/syntax/gitolite.vim94
-rw-r--r--runtime/syntax/gitrebase.vim62
-rw-r--r--runtime/syntax/gitsendemail.vim23
-rw-r--r--runtime/syntax/gkrellmrc.vim75
-rw-r--r--runtime/syntax/gnash.vim96
-rw-r--r--runtime/syntax/gnuplot.vim549
-rw-r--r--runtime/syntax/go.vim550
-rw-r--r--runtime/syntax/godoc.vim19
-rw-r--r--runtime/syntax/gp.vim83
-rw-r--r--runtime/syntax/gpg.vim107
-rw-r--r--runtime/syntax/gprof.vim70
-rw-r--r--runtime/syntax/grads.vim73
-rw-r--r--runtime/syntax/gretl.vim85
-rw-r--r--runtime/syntax/groff.vim10
-rw-r--r--runtime/syntax/groovy.vim451
-rw-r--r--runtime/syntax/group.vim52
-rw-r--r--runtime/syntax/grub.vim93
-rw-r--r--runtime/syntax/gsp.vim54
-rw-r--r--runtime/syntax/gtkrc.vim126
-rw-r--r--runtime/syntax/gvpr.vim85
-rw-r--r--runtime/syntax/gyp.vim49
-rw-r--r--runtime/syntax/haml.vim109
-rw-r--r--runtime/syntax/hamster.vim370
-rw-r--r--runtime/syntax/hare.vim133
-rw-r--r--runtime/syntax/haskell.vim191
-rw-r--r--runtime/syntax/haste.vim142
-rw-r--r--runtime/syntax/hastepreproc.vim38
-rw-r--r--runtime/syntax/hb.vim89
-rw-r--r--runtime/syntax/help.vim229
-rw-r--r--runtime/syntax/help_ru.vim65
-rw-r--r--runtime/syntax/hercules.vim119
-rw-r--r--runtime/syntax/hex.vim89
-rw-r--r--runtime/syntax/hgcommit.vim30
-rw-r--r--runtime/syntax/hitest.vim149
-rw-r--r--runtime/syntax/hlsplaylist.vim120
-rw-r--r--runtime/syntax/hog.vim208
-rw-r--r--runtime/syntax/hollywood.vim180
-rw-r--r--runtime/syntax/hostconf.vim147
-rw-r--r--runtime/syntax/hostsaccess.vim23
-rw-r--r--runtime/syntax/html.vim359
-rw-r--r--runtime/syntax/htmlcheetah.vim24
-rw-r--r--runtime/syntax/htmldjango.vim26
-rw-r--r--runtime/syntax/htmlm4.vim31
-rw-r--r--runtime/syntax/htmlos.vim149
-rw-r--r--runtime/syntax/i3config.vim264
-rw-r--r--runtime/syntax/ia64.vim293
-rw-r--r--runtime/syntax/ibasic.vim176
-rw-r--r--runtime/syntax/icemenu.vim34
-rw-r--r--runtime/syntax/icon.vim211
-rw-r--r--runtime/syntax/idl.vim324
-rw-r--r--runtime/syntax/idlang.vim240
-rw-r--r--runtime/syntax/indent.vim153
-rw-r--r--runtime/syntax/inform.vim392
-rw-r--r--runtime/syntax/initex.vim376
-rw-r--r--runtime/syntax/initng.vim90
-rw-r--r--runtime/syntax/inittab.vim62
-rw-r--r--runtime/syntax/ipfilter.vim55
-rw-r--r--runtime/syntax/ishd.vim409
-rw-r--r--runtime/syntax/iss.vim136
-rw-r--r--runtime/syntax/ist.vim58
-rw-r--r--runtime/syntax/j.vim146
-rw-r--r--runtime/syntax/jal.vim236
-rw-r--r--runtime/syntax/jam.vim240
-rw-r--r--runtime/syntax/jargon.vim24
-rw-r--r--runtime/syntax/java.vim380
-rw-r--r--runtime/syntax/javacc.vim65
-rw-r--r--runtime/syntax/javascript.vim142
-rw-r--r--runtime/syntax/javascriptreact.vim3
-rw-r--r--runtime/syntax/jess.vim144
-rw-r--r--runtime/syntax/jgraph.vim45
-rw-r--r--runtime/syntax/jovial.vim110
-rw-r--r--runtime/syntax/jproperties.vim135
-rw-r--r--runtime/syntax/json.vim136
-rw-r--r--runtime/syntax/jsonc.vim44
-rw-r--r--runtime/syntax/jsp.vim68
-rw-r--r--runtime/syntax/julia.vim550
-rw-r--r--runtime/syntax/kconfig.vim739
-rw-r--r--runtime/syntax/kivy.vim36
-rw-r--r--runtime/syntax/kix.vim170
-rw-r--r--runtime/syntax/krl.vim458
-rw-r--r--runtime/syntax/kscript.vim57
-rw-r--r--runtime/syntax/kwt.vim70
-rw-r--r--runtime/syntax/lace.vim122
-rw-r--r--runtime/syntax/latte.vim81
-rw-r--r--runtime/syntax/lc.vim31
-rw-r--r--runtime/syntax/ld.vim81
-rw-r--r--runtime/syntax/ldapconf.vim338
-rw-r--r--runtime/syntax/ldif.vim33
-rw-r--r--runtime/syntax/less.vim78
-rw-r--r--runtime/syntax/lex.vim188
-rw-r--r--runtime/syntax/lftp.vim152
-rw-r--r--runtime/syntax/lhaskell.vim134
-rw-r--r--runtime/syntax/libao.vim27
-rw-r--r--runtime/syntax/lifelines.vim154
-rw-r--r--runtime/syntax/lilo.vim174
-rw-r--r--runtime/syntax/limits.vim44
-rw-r--r--runtime/syntax/liquid.vim138
-rw-r--r--runtime/syntax/lisp.vim622
-rw-r--r--runtime/syntax/lite.vim168
-rw-r--r--runtime/syntax/litestep.vim269
-rw-r--r--runtime/syntax/loginaccess.vim96
-rw-r--r--runtime/syntax/logindefs.vim174
-rw-r--r--runtime/syntax/logtalk.vim454
-rw-r--r--runtime/syntax/lotos.vim69
-rw-r--r--runtime/syntax/lout.vim135
-rw-r--r--runtime/syntax/lpc.vim447
-rw-r--r--runtime/syntax/lprolog.vim124
-rw-r--r--runtime/syntax/lscript.vim200
-rw-r--r--runtime/syntax/lsl.vim277
-rw-r--r--runtime/syntax/lss.vim123
-rw-r--r--runtime/syntax/lua.vim442
-rw-r--r--runtime/syntax/lynx.vim140
-rw-r--r--runtime/syntax/lyrics.vim43
-rw-r--r--runtime/syntax/m3build.vim177
-rw-r--r--runtime/syntax/m3quake.vim74
-rw-r--r--runtime/syntax/m4.vim62
-rw-r--r--runtime/syntax/mail.vim112
-rw-r--r--runtime/syntax/mailaliases.vim71
-rw-r--r--runtime/syntax/mailcap.vim35
-rw-r--r--runtime/syntax/make.vim144
-rw-r--r--runtime/syntax/mallard.vim37
-rw-r--r--runtime/syntax/man.vim56
-rw-r--r--runtime/syntax/manconf.vim117
-rw-r--r--runtime/syntax/manual.vim29
-rw-r--r--runtime/syntax/maple.vim622
-rw-r--r--runtime/syntax/markdown.vim200
-rw-r--r--runtime/syntax/masm.vim377
-rw-r--r--runtime/syntax/mason.vim85
-rw-r--r--runtime/syntax/master.vim37
-rw-r--r--runtime/syntax/matlab.vim119
-rw-r--r--runtime/syntax/maxima.vim261
-rw-r--r--runtime/syntax/mel.vim108
-rw-r--r--runtime/syntax/mermaid.vim155
-rw-r--r--runtime/syntax/meson.vim158
-rw-r--r--runtime/syntax/messages.vim74
-rw-r--r--runtime/syntax/mf.vim308
-rw-r--r--runtime/syntax/mgl.vim117
-rw-r--r--runtime/syntax/mgp.vim69
-rw-r--r--runtime/syntax/mib.vim57
-rw-r--r--runtime/syntax/mix.vim84
-rw-r--r--runtime/syntax/mma.vim321
-rw-r--r--runtime/syntax/mmix.vim152
-rw-r--r--runtime/syntax/mmp.vim49
-rw-r--r--runtime/syntax/modconf.vim44
-rw-r--r--runtime/syntax/model.vim44
-rw-r--r--runtime/syntax/modsim3.vim97
-rw-r--r--runtime/syntax/modula2.vim73
-rw-r--r--runtime/syntax/modula3.vim145
-rw-r--r--runtime/syntax/monk.vim217
-rw-r--r--runtime/syntax/moo.vim173
-rw-r--r--runtime/syntax/mp.vim273
-rw-r--r--runtime/syntax/mplayerconf.vim128
-rw-r--r--runtime/syntax/mrxvtrc.vim282
-rw-r--r--runtime/syntax/msidl.vim84
-rw-r--r--runtime/syntax/msmessages.vim132
-rw-r--r--runtime/syntax/msql.vim83
-rw-r--r--runtime/syntax/mupad.vim284
-rw-r--r--runtime/syntax/murphi.vim126
-rw-r--r--runtime/syntax/mush.vim215
-rw-r--r--runtime/syntax/muttrc.vim821
-rw-r--r--runtime/syntax/mysql.vim288
-rw-r--r--runtime/syntax/n1ql.vim434
-rw-r--r--runtime/syntax/named.vim229
-rw-r--r--runtime/syntax/nanorc.vim243
-rw-r--r--runtime/syntax/nasm.vim527
-rw-r--r--runtime/syntax/nastran.vim181
-rw-r--r--runtime/syntax/natural.vim201
-rw-r--r--runtime/syntax/ncf.vim247
-rw-r--r--runtime/syntax/neomuttrc.vim880
-rw-r--r--runtime/syntax/netrc.vim52
-rw-r--r--runtime/syntax/netrw.vim146
-rw-r--r--runtime/syntax/nginx.vim2338
-rw-r--r--runtime/syntax/ninja.vim87
-rw-r--r--runtime/syntax/nix.vim210
-rw-r--r--runtime/syntax/nosyntax.vim30
-rw-r--r--runtime/syntax/nqc.vim365
-rw-r--r--runtime/syntax/nroff.vim249
-rw-r--r--runtime/syntax/nsis.vim730
-rw-r--r--runtime/syntax/obj.vim83
-rw-r--r--runtime/syntax/objc.vim534
-rw-r--r--runtime/syntax/objcpp.vim20
-rw-r--r--runtime/syntax/obse.vim3360
-rw-r--r--runtime/syntax/ocaml.vim393
-rw-r--r--runtime/syntax/occam.vim116
-rw-r--r--runtime/syntax/omnimark.vim106
-rw-r--r--runtime/syntax/opam.vim38
-rw-r--r--runtime/syntax/openroad.vim252
-rw-r--r--runtime/syntax/openscad.vim129
-rw-r--r--runtime/syntax/openvpn.vim72
-rw-r--r--runtime/syntax/opl.vim89
-rw-r--r--runtime/syntax/ora.vim464
-rw-r--r--runtime/syntax/pamconf.vim131
-rw-r--r--runtime/syntax/pamenv.vim28
-rw-r--r--runtime/syntax/papp.vim76
-rw-r--r--runtime/syntax/pascal.vim384
-rw-r--r--runtime/syntax/passwd.vim71
-rw-r--r--runtime/syntax/pbtxt.vim44
-rw-r--r--runtime/syntax/pcap.vim48
-rw-r--r--runtime/syntax/pccts.vim89
-rw-r--r--runtime/syntax/pdf.vim73
-rw-r--r--runtime/syntax/perl.vim662
-rw-r--r--runtime/syntax/pf.vim333
-rw-r--r--runtime/syntax/pfmain.vim1835
-rw-r--r--runtime/syntax/php.vim978
-rw-r--r--runtime/syntax/phtml.vim6
-rw-r--r--runtime/syntax/pic.vim114
-rw-r--r--runtime/syntax/pike.vim386
-rw-r--r--runtime/syntax/pilrc.vim136
-rw-r--r--runtime/syntax/pine.vim355
-rw-r--r--runtime/syntax/pinfo.vim110
-rw-r--r--runtime/syntax/plaintex.vim170
-rw-r--r--runtime/syntax/pli.vim266
-rw-r--r--runtime/syntax/plm.vim134
-rw-r--r--runtime/syntax/plp.vim37
-rw-r--r--runtime/syntax/plsql.vim863
-rw-r--r--runtime/syntax/po.vim133
-rw-r--r--runtime/syntax/pod.vim222
-rw-r--r--runtime/syntax/poefilter.vim167
-rw-r--r--runtime/syntax/poke.vim151
-rw-r--r--runtime/syntax/postscr.vim780
-rw-r--r--runtime/syntax/pov.vim144
-rw-r--r--runtime/syntax/povini.vim56
-rw-r--r--runtime/syntax/ppd.vim35
-rw-r--r--runtime/syntax/ppwiz.vim84
-rw-r--r--runtime/syntax/prescribe.vim56
-rw-r--r--runtime/syntax/privoxy.vim71
-rw-r--r--runtime/syntax/procmail.vim54
-rw-r--r--runtime/syntax/progress.vim312
-rw-r--r--runtime/syntax/prolog.vim118
-rw-r--r--runtime/syntax/promela.vim53
-rw-r--r--runtime/syntax/proto.vim83
-rw-r--r--runtime/syntax/protocols.vim44
-rw-r--r--runtime/syntax/ps1.vim182
-rw-r--r--runtime/syntax/ps1xml.vim51
-rw-r--r--runtime/syntax/psf.vim91
-rw-r--r--runtime/syntax/psl.vim83
-rw-r--r--runtime/syntax/ptcap.vim95
-rw-r--r--runtime/syntax/purifylog.vim106
-rw-r--r--runtime/syntax/pyrex.vim51
-rw-r--r--runtime/syntax/python.vim340
-rw-r--r--runtime/syntax/python2.vim345
-rw-r--r--runtime/syntax/qb64.vim409
-rw-r--r--runtime/syntax/qf.vim24
-rw-r--r--runtime/syntax/quake.vim170
-rw-r--r--runtime/syntax/quarto.vim17
-rw-r--r--runtime/syntax/r.vim390
-rw-r--r--runtime/syntax/racc.vim142
-rw-r--r--runtime/syntax/racket.vim656
-rw-r--r--runtime/syntax/radiance.vim142
-rw-r--r--runtime/syntax/raku.vim1971
-rw-r--r--runtime/syntax/raml.vim106
-rw-r--r--runtime/syntax/ratpoison.vim275
-rw-r--r--runtime/syntax/rc.vim191
-rw-r--r--runtime/syntax/rcs.vim63
-rw-r--r--runtime/syntax/rcslog.vim25
-rw-r--r--runtime/syntax/readline.vim411
-rw-r--r--runtime/syntax/rebol.vim199
-rw-r--r--runtime/syntax/redif.vim970
-rw-r--r--runtime/syntax/registry.vim103
-rw-r--r--runtime/syntax/rego.vim120
-rw-r--r--runtime/syntax/remind.vim73
-rw-r--r--runtime/syntax/resolv.vim119
-rw-r--r--runtime/syntax/reva.vim191
-rw-r--r--runtime/syntax/rexx.vim318
-rw-r--r--runtime/syntax/rhelp.vim274
-rw-r--r--runtime/syntax/rib.vim62
-rw-r--r--runtime/syntax/rmd.vim177
-rw-r--r--runtime/syntax/rnc.vim68
-rw-r--r--runtime/syntax/rng.vim25
-rw-r--r--runtime/syntax/rnoweb.vim52
-rw-r--r--runtime/syntax/robots.vim57
-rw-r--r--runtime/syntax/routeros.vim91
-rw-r--r--runtime/syntax/rpcgen.vim46
-rw-r--r--runtime/syntax/rpl.vim483
-rw-r--r--runtime/syntax/rrst.vim43
-rw-r--r--runtime/syntax/rst.vim290
-rw-r--r--runtime/syntax/rtf.vim75
-rw-r--r--runtime/syntax/ruby.vim606
-rw-r--r--runtime/syntax/rust.vim295
-rw-r--r--runtime/syntax/samba.vim118
-rw-r--r--runtime/syntax/sas.vim265
-rw-r--r--runtime/syntax/sass.vim106
-rw-r--r--runtime/syntax/sather.vim92
-rw-r--r--runtime/syntax/sbt.vim32
-rw-r--r--runtime/syntax/scala.vim233
-rw-r--r--runtime/syntax/scdoc.vim63
-rw-r--r--runtime/syntax/scheme.vim467
-rw-r--r--runtime/syntax/scilab.vim102
-rw-r--r--runtime/syntax/screen.vim260
-rw-r--r--runtime/syntax/scss.vim25
-rw-r--r--runtime/syntax/sd.vim71
-rw-r--r--runtime/syntax/sdc.vim41
-rw-r--r--runtime/syntax/sdl.vim153
-rw-r--r--runtime/syntax/sed.vim123
-rw-r--r--runtime/syntax/sendpr.vim37
-rw-r--r--runtime/syntax/sensors.vim52
-rw-r--r--runtime/syntax/services.vim54
-rw-r--r--runtime/syntax/setserial.vim120
-rw-r--r--runtime/syntax/sexplib.vim88
-rw-r--r--runtime/syntax/sgml.vim334
-rw-r--r--runtime/syntax/sgmldecl.vim72
-rw-r--r--runtime/syntax/sgmllnx.vim54
-rw-r--r--runtime/syntax/sh.vim813
-rw-r--r--runtime/syntax/shared/README.txt2
-rw-r--r--runtime/syntax/shared/context-data-context.vim345
-rw-r--r--runtime/syntax/shared/context-data-interfaces.vim1183
-rw-r--r--runtime/syntax/shared/context-data-metafun.vim117
-rw-r--r--runtime/syntax/shared/context-data-tex.vim225
-rw-r--r--runtime/syntax/shared/hgcommitDiff.vim390
-rw-r--r--runtime/syntax/shared/typescriptcommon.vim2099
-rw-r--r--runtime/syntax/sicad.vim390
-rw-r--r--runtime/syntax/sieve.vim55
-rw-r--r--runtime/syntax/sil.vim179
-rw-r--r--runtime/syntax/simula.vim87
-rw-r--r--runtime/syntax/sinda.vim129
-rw-r--r--runtime/syntax/sindacmp.vim61
-rw-r--r--runtime/syntax/sindaout.vim83
-rw-r--r--runtime/syntax/sisu.vim275
-rw-r--r--runtime/syntax/skill.vim549
-rw-r--r--runtime/syntax/sl.vim107
-rw-r--r--runtime/syntax/slang.vim89
-rw-r--r--runtime/syntax/slice.vim78
-rw-r--r--runtime/syntax/slpconf.vim273
-rw-r--r--runtime/syntax/slpreg.vim122
-rw-r--r--runtime/syntax/slpspi.vim39
-rw-r--r--runtime/syntax/slrnrc.vim181
-rw-r--r--runtime/syntax/slrnsc.vim68
-rw-r--r--runtime/syntax/sm.vim80
-rw-r--r--runtime/syntax/smarty.vim76
-rw-r--r--runtime/syntax/smcl.vim307
-rw-r--r--runtime/syntax/smil.vim146
-rw-r--r--runtime/syntax/smith.vim39
-rw-r--r--runtime/syntax/sml.vim220
-rw-r--r--runtime/syntax/snnsnet.vim67
-rw-r--r--runtime/syntax/snnspat.vim62
-rw-r--r--runtime/syntax/snnsres.vim50
-rw-r--r--runtime/syntax/snobol4.vim113
-rw-r--r--runtime/syntax/solidity.vim173
-rw-r--r--runtime/syntax/spec.vim226
-rw-r--r--runtime/syntax/specman.vim169
-rw-r--r--runtime/syntax/spice.vim75
-rw-r--r--runtime/syntax/splint.vim243
-rw-r--r--runtime/syntax/spup.vim269
-rw-r--r--runtime/syntax/spyce.vim104
-rw-r--r--runtime/syntax/sql.vim36
-rw-r--r--runtime/syntax/sqlanywhere.vim905
-rw-r--r--runtime/syntax/sqlforms.vim152
-rw-r--r--runtime/syntax/sqlhana.vim290
-rw-r--r--runtime/syntax/sqlinformix.vim183
-rw-r--r--runtime/syntax/sqlj.vim91
-rw-r--r--runtime/syntax/sqloracle.vim150
-rw-r--r--runtime/syntax/sqr.vim262
-rw-r--r--runtime/syntax/squid.vim140
-rw-r--r--runtime/syntax/squirrel.vim50
-rw-r--r--runtime/syntax/srec.vim83
-rw-r--r--runtime/syntax/srt.vim62
-rw-r--r--runtime/syntax/ssa.vim63
-rw-r--r--runtime/syntax/sshconfig.vim296
-rw-r--r--runtime/syntax/sshdconfig.vim308
-rw-r--r--runtime/syntax/st.vim95
-rw-r--r--runtime/syntax/stata.vim450
-rw-r--r--runtime/syntax/stp.vim154
-rw-r--r--runtime/syntax/strace.vim52
-rw-r--r--runtime/syntax/structurizr.vim81
-rw-r--r--runtime/syntax/sudoers.vim390
-rw-r--r--runtime/syntax/svg.vim15
-rw-r--r--runtime/syntax/svn.vim56
-rw-r--r--runtime/syntax/swayconfig.vim106
-rw-r--r--runtime/syntax/swift.vim286
-rw-r--r--runtime/syntax/swiftgyb.vim24
-rw-r--r--runtime/syntax/syncolor.vim87
-rw-r--r--runtime/syntax/synload.vim83
-rw-r--r--runtime/syntax/syntax.vim44
-rw-r--r--runtime/syntax/sysctl.vim39
-rw-r--r--runtime/syntax/systemd.vim8
-rw-r--r--runtime/syntax/systemverilog.vim85
-rw-r--r--runtime/syntax/tads.vim171
-rw-r--r--runtime/syntax/tags.vim31
-rw-r--r--runtime/syntax/tak.vim119
-rw-r--r--runtime/syntax/takcmp.vim69
-rw-r--r--runtime/syntax/takout.vim85
-rw-r--r--runtime/syntax/tap.vim86
-rw-r--r--runtime/syntax/tar.vim19
-rw-r--r--runtime/syntax/taskdata.vim45
-rw-r--r--runtime/syntax/taskedit.vim37
-rw-r--r--runtime/syntax/tasm.vim115
-rw-r--r--runtime/syntax/tcl.vim274
-rw-r--r--runtime/syntax/tcsh.vim255
-rw-r--r--runtime/syntax/template.vim15
-rw-r--r--runtime/syntax/teraterm.vim140
-rw-r--r--runtime/syntax/terminfo.vim93
-rw-r--r--runtime/syntax/tex.vim1352
-rw-r--r--runtime/syntax/texinfo.vim46
-rw-r--r--runtime/syntax/texmf.vim74
-rw-r--r--runtime/syntax/tf.vim196
-rw-r--r--runtime/syntax/tidy.vim276
-rw-r--r--runtime/syntax/tilde.vim41
-rw-r--r--runtime/syntax/tli.vim58
-rw-r--r--runtime/syntax/tmux.vim154
-rw-r--r--runtime/syntax/toml.vim81
-rw-r--r--runtime/syntax/tpp.vim83
-rw-r--r--runtime/syntax/trasys.vim160
-rw-r--r--runtime/syntax/treetop.vim110
-rw-r--r--runtime/syntax/trustees.vim44
-rw-r--r--runtime/syntax/tsalt.vim206
-rw-r--r--runtime/syntax/tsscl.vim204
-rw-r--r--runtime/syntax/tssgm.vim98
-rw-r--r--runtime/syntax/tssop.vim74
-rw-r--r--runtime/syntax/tt2.vim209
-rw-r--r--runtime/syntax/tt2html.vim22
-rw-r--r--runtime/syntax/tt2js.vim22
-rw-r--r--runtime/syntax/typescript.vim47
-rw-r--r--runtime/syntax/typescriptreact.vim160
-rw-r--r--runtime/syntax/uc.vim165
-rw-r--r--runtime/syntax/udevconf.vim39
-rw-r--r--runtime/syntax/udevperm.vim69
-rw-r--r--runtime/syntax/udevrules.vim171
-rw-r--r--runtime/syntax/uil.vim75
-rw-r--r--runtime/syntax/updatedb.vim41
-rw-r--r--runtime/syntax/upstart.vim111
-rw-r--r--runtime/syntax/upstreamdat.vim305
-rw-r--r--runtime/syntax/upstreaminstalllog.vim27
-rw-r--r--runtime/syntax/upstreamlog.vim54
-rw-r--r--runtime/syntax/upstreamrpt.vim310
-rw-r--r--runtime/syntax/usserverlog.vim60
-rw-r--r--runtime/syntax/usw2kagtlog.vim54
-rw-r--r--runtime/syntax/valgrind.vim110
-rw-r--r--runtime/syntax/vb.vim375
-rw-r--r--runtime/syntax/vdf.vim54
-rw-r--r--runtime/syntax/vera.vim348
-rw-r--r--runtime/syntax/verilog.vim119
-rw-r--r--runtime/syntax/verilogams.vim132
-rw-r--r--runtime/syntax/vgrindefs.vim45
-rw-r--r--runtime/syntax/vhdl.vim268
-rw-r--r--runtime/syntax/vim.vim1046
-rw-r--r--runtime/syntax/viminfo.vim48
-rw-r--r--runtime/syntax/virata.vim207
-rw-r--r--runtime/syntax/vmasm.vim238
-rw-r--r--runtime/syntax/voscm.vim94
-rw-r--r--runtime/syntax/vrml.vim222
-rw-r--r--runtime/syntax/vroom.vim110
-rw-r--r--runtime/syntax/vsejcl.vim36
-rw-r--r--runtime/syntax/vue.vim14
-rw-r--r--runtime/syntax/wast.vim84
-rw-r--r--runtime/syntax/wdiff.vim29
-rw-r--r--runtime/syntax/wdl.vim41
-rw-r--r--runtime/syntax/web.vim32
-rw-r--r--runtime/syntax/webmacro.vim67
-rw-r--r--runtime/syntax/wget.vim243
-rw-r--r--runtime/syntax/wget2.vim250
-rw-r--r--runtime/syntax/whitespace.vim13
-rw-r--r--runtime/syntax/winbatch.vim174
-rw-r--r--runtime/syntax/wml.vim150
-rw-r--r--runtime/syntax/wsh.vim45
-rw-r--r--runtime/syntax/wsml.vim113
-rw-r--r--runtime/syntax/wvdial.vim28
-rw-r--r--runtime/syntax/xbl.vim29
-rw-r--r--runtime/syntax/xdefaults.vim132
-rw-r--r--runtime/syntax/xf86conf.vim207
-rw-r--r--runtime/syntax/xhtml.vim11
-rw-r--r--runtime/syntax/xinetd.vim347
-rw-r--r--runtime/syntax/xkb.vim79
-rw-r--r--runtime/syntax/xmath.vim225
-rw-r--r--runtime/syntax/xml.vim361
-rw-r--r--runtime/syntax/xmodmap.vim677
-rw-r--r--runtime/syntax/xpm.vim141
-rw-r--r--runtime/syntax/xpm2.vim153
-rw-r--r--runtime/syntax/xquery.vim82
-rw-r--r--runtime/syntax/xs.vim3680
-rw-r--r--runtime/syntax/xsd.vim61
-rw-r--r--runtime/syntax/xslt.vim71
-rw-r--r--runtime/syntax/xxd.vim30
-rw-r--r--runtime/syntax/yacc.vim120
-rw-r--r--runtime/syntax/yaml.vim243
-rw-r--r--runtime/syntax/z8a.vim101
-rw-r--r--runtime/syntax/zig.vim292
-rw-r--r--runtime/syntax/zimbu.vim160
-rw-r--r--runtime/syntax/zir.vim49
-rw-r--r--runtime/syntax/zsh.vim359
688 files changed, 133147 insertions, 0 deletions
diff --git a/runtime/syntax/2html.vim b/runtime/syntax/2html.vim
new file mode 100644
index 0000000..69780cf
--- /dev/null
+++ b/runtime/syntax/2html.vim
@@ -0,0 +1,1995 @@
+" Vim syntax support file
+" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
+" Last Change: 2023 Jan 01
+"
+" Additional contributors:
+"
+" Original by Bram Moolenaar <Bram@vim.org>
+" Modified by David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
+" XHTML support by Panagiotis Issaris <takis@lumumba.luc.ac.be>
+" Made w3 compliant by Edd Barrett <vext01@gmail.com>
+" Added html_font. Edd Barrett <vext01@gmail.com>
+" Progress bar based off code from "progressbar widget" plugin by
+" Andreas Politz, heavily modified:
+" http://www.vim.org/scripts/script.php?script_id=2006
+"
+" See Mercurial change logs for more!
+
+" Transform a file into HTML, using the current syntax highlighting.
+
+" this file uses line continuations
+let s:cpo_sav = &cpo
+let s:ls = &ls
+let s:ei_sav = &eventignore
+set cpo&vim
+
+" HTML filetype can take a while to load/highlight if the destination file
+" already exists.
+set eventignore+=FileType
+
+let s:end=line('$')
+
+" Font
+if exists("g:html_font")
+ if type(g:html_font) == type([])
+ let s:htmlfont = "'". join(g:html_font,"','") . "', monospace"
+ else
+ let s:htmlfont = "'". g:html_font . "', monospace"
+ endif
+else
+ let s:htmlfont = "monospace"
+endif
+
+let s:settings = tohtml#GetUserSettings()
+
+if s:settings.use_xhtml
+ let s:html5 = 0
+elseif s:settings.use_css && !s:settings.no_pre
+ let s:html5 = 1
+else
+ let s:html5 = 0
+endif
+
+if !exists('s:FOLDED_ID')
+ let s:FOLDED_ID = hlID("Folded") | lockvar s:FOLDED_ID
+ let s:FOLD_C_ID = hlID("FoldColumn") | lockvar s:FOLD_C_ID
+ let s:LINENR_ID = hlID('LineNr') | lockvar s:LINENR_ID
+ let s:DIFF_D_ID = hlID("DiffDelete") | lockvar s:DIFF_D_ID
+ let s:DIFF_A_ID = hlID("DiffAdd") | lockvar s:DIFF_A_ID
+ let s:DIFF_C_ID = hlID("DiffChange") | lockvar s:DIFF_C_ID
+ let s:DIFF_T_ID = hlID("DiffText") | lockvar s:DIFF_T_ID
+ let s:CONCEAL_ID = hlID('Conceal') | lockvar s:CONCEAL_ID
+endif
+
+" Whitespace
+if s:settings.pre_wrap
+ let s:whitespace = "white-space: pre-wrap; "
+else
+ let s:whitespace = ""
+endif
+
+if !empty(s:settings.prevent_copy)
+ if s:settings.no_invalid
+ " User has decided they don't want invalid markup. Still works in
+ " OpenOffice, and for text editors, but when pasting into Microsoft Word the
+ " input elements get pasted too and they cannot be deleted (at least not
+ " easily).
+ let s:unselInputType = ""
+ else
+ " Prevent from copy-pasting the input elements into Microsoft Word where
+ " they cannot be deleted easily by deliberately inserting invalid markup.
+ let s:unselInputType = " type='invalid_input_type'"
+ endif
+endif
+
+" When gui colors are not supported, we can only guess the colors.
+" TODO - is this true anymore? Is there a way to ask the terminal what colors
+" each number means or read them from some file?
+if &termguicolors || has("gui_running")
+ let s:whatterm = "gui"
+else
+ let s:whatterm = "cterm"
+ if &t_Co == 8
+ let s:cterm_color = {
+ \ 0: "#808080", 1: "#ff6060", 2: "#00ff00", 3: "#ffff00",
+ \ 4: "#8080ff", 5: "#ff40ff", 6: "#00ffff", 7: "#ffffff"
+ \ }
+ else
+ let s:cterm_color = {
+ \ 0: "#000000", 1: "#c00000", 2: "#008000", 3: "#804000",
+ \ 4: "#0000c0", 5: "#c000c0", 6: "#008080", 7: "#c0c0c0",
+ \ 8: "#808080", 9: "#ff6060", 10: "#00ff00", 11: "#ffff00",
+ \ 12: "#8080ff", 13: "#ff40ff", 14: "#00ffff", 15: "#ffffff"
+ \ }
+
+ " Colors for 88 and 256 come from xterm.
+ if &t_Co == 88
+ call extend(s:cterm_color, {
+ \ 16: "#000000", 17: "#00008b", 18: "#0000cd", 19: "#0000ff",
+ \ 20: "#008b00", 21: "#008b8b", 22: "#008bcd", 23: "#008bff",
+ \ 24: "#00cd00", 25: "#00cd8b", 26: "#00cdcd", 27: "#00cdff",
+ \ 28: "#00ff00", 29: "#00ff8b", 30: "#00ffcd", 31: "#00ffff",
+ \ 32: "#8b0000", 33: "#8b008b", 34: "#8b00cd", 35: "#8b00ff",
+ \ 36: "#8b8b00", 37: "#8b8b8b", 38: "#8b8bcd", 39: "#8b8bff",
+ \ 40: "#8bcd00", 41: "#8bcd8b", 42: "#8bcdcd", 43: "#8bcdff",
+ \ 44: "#8bff00", 45: "#8bff8b", 46: "#8bffcd", 47: "#8bffff",
+ \ 48: "#cd0000", 49: "#cd008b", 50: "#cd00cd", 51: "#cd00ff",
+ \ 52: "#cd8b00", 53: "#cd8b8b", 54: "#cd8bcd", 55: "#cd8bff",
+ \ 56: "#cdcd00", 57: "#cdcd8b", 58: "#cdcdcd", 59: "#cdcdff",
+ \ 60: "#cdff00", 61: "#cdff8b", 62: "#cdffcd", 63: "#cdffff",
+ \ 64: "#ff0000"
+ \ })
+ call extend(s:cterm_color, {
+ \ 65: "#ff008b", 66: "#ff00cd", 67: "#ff00ff", 68: "#ff8b00",
+ \ 69: "#ff8b8b", 70: "#ff8bcd", 71: "#ff8bff", 72: "#ffcd00",
+ \ 73: "#ffcd8b", 74: "#ffcdcd", 75: "#ffcdff", 76: "#ffff00",
+ \ 77: "#ffff8b", 78: "#ffffcd", 79: "#ffffff", 80: "#2e2e2e",
+ \ 81: "#5c5c5c", 82: "#737373", 83: "#8b8b8b", 84: "#a2a2a2",
+ \ 85: "#b9b9b9", 86: "#d0d0d0", 87: "#e7e7e7"
+ \ })
+ elseif &t_Co == 256
+ call extend(s:cterm_color, {
+ \ 16: "#000000", 17: "#00005f", 18: "#000087", 19: "#0000af",
+ \ 20: "#0000d7", 21: "#0000ff", 22: "#005f00", 23: "#005f5f",
+ \ 24: "#005f87", 25: "#005faf", 26: "#005fd7", 27: "#005fff",
+ \ 28: "#008700", 29: "#00875f", 30: "#008787", 31: "#0087af",
+ \ 32: "#0087d7", 33: "#0087ff", 34: "#00af00", 35: "#00af5f",
+ \ 36: "#00af87", 37: "#00afaf", 38: "#00afd7", 39: "#00afff",
+ \ 40: "#00d700", 41: "#00d75f", 42: "#00d787", 43: "#00d7af",
+ \ 44: "#00d7d7", 45: "#00d7ff", 46: "#00ff00", 47: "#00ff5f",
+ \ 48: "#00ff87", 49: "#00ffaf", 50: "#00ffd7", 51: "#00ffff",
+ \ 52: "#5f0000", 53: "#5f005f", 54: "#5f0087", 55: "#5f00af",
+ \ 56: "#5f00d7", 57: "#5f00ff", 58: "#5f5f00", 59: "#5f5f5f",
+ \ 60: "#5f5f87", 61: "#5f5faf", 62: "#5f5fd7", 63: "#5f5fff",
+ \ 64: "#5f8700"
+ \ })
+ call extend(s:cterm_color, {
+ \ 65: "#5f875f", 66: "#5f8787", 67: "#5f87af", 68: "#5f87d7",
+ \ 69: "#5f87ff", 70: "#5faf00", 71: "#5faf5f", 72: "#5faf87",
+ \ 73: "#5fafaf", 74: "#5fafd7", 75: "#5fafff", 76: "#5fd700",
+ \ 77: "#5fd75f", 78: "#5fd787", 79: "#5fd7af", 80: "#5fd7d7",
+ \ 81: "#5fd7ff", 82: "#5fff00", 83: "#5fff5f", 84: "#5fff87",
+ \ 85: "#5fffaf", 86: "#5fffd7", 87: "#5fffff", 88: "#870000",
+ \ 89: "#87005f", 90: "#870087", 91: "#8700af", 92: "#8700d7",
+ \ 93: "#8700ff", 94: "#875f00", 95: "#875f5f", 96: "#875f87",
+ \ 97: "#875faf", 98: "#875fd7", 99: "#875fff", 100: "#878700",
+ \ 101: "#87875f", 102: "#878787", 103: "#8787af", 104: "#8787d7",
+ \ 105: "#8787ff", 106: "#87af00", 107: "#87af5f", 108: "#87af87",
+ \ 109: "#87afaf", 110: "#87afd7", 111: "#87afff", 112: "#87d700"
+ \ })
+ call extend(s:cterm_color, {
+ \ 113: "#87d75f", 114: "#87d787", 115: "#87d7af", 116: "#87d7d7",
+ \ 117: "#87d7ff", 118: "#87ff00", 119: "#87ff5f", 120: "#87ff87",
+ \ 121: "#87ffaf", 122: "#87ffd7", 123: "#87ffff", 124: "#af0000",
+ \ 125: "#af005f", 126: "#af0087", 127: "#af00af", 128: "#af00d7",
+ \ 129: "#af00ff", 130: "#af5f00", 131: "#af5f5f", 132: "#af5f87",
+ \ 133: "#af5faf", 134: "#af5fd7", 135: "#af5fff", 136: "#af8700",
+ \ 137: "#af875f", 138: "#af8787", 139: "#af87af", 140: "#af87d7",
+ \ 141: "#af87ff", 142: "#afaf00", 143: "#afaf5f", 144: "#afaf87",
+ \ 145: "#afafaf", 146: "#afafd7", 147: "#afafff", 148: "#afd700",
+ \ 149: "#afd75f", 150: "#afd787", 151: "#afd7af", 152: "#afd7d7",
+ \ 153: "#afd7ff", 154: "#afff00", 155: "#afff5f", 156: "#afff87",
+ \ 157: "#afffaf", 158: "#afffd7"
+ \ })
+ call extend(s:cterm_color, {
+ \ 159: "#afffff", 160: "#d70000", 161: "#d7005f", 162: "#d70087",
+ \ 163: "#d700af", 164: "#d700d7", 165: "#d700ff", 166: "#d75f00",
+ \ 167: "#d75f5f", 168: "#d75f87", 169: "#d75faf", 170: "#d75fd7",
+ \ 171: "#d75fff", 172: "#d78700", 173: "#d7875f", 174: "#d78787",
+ \ 175: "#d787af", 176: "#d787d7", 177: "#d787ff", 178: "#d7af00",
+ \ 179: "#d7af5f", 180: "#d7af87", 181: "#d7afaf", 182: "#d7afd7",
+ \ 183: "#d7afff", 184: "#d7d700", 185: "#d7d75f", 186: "#d7d787",
+ \ 187: "#d7d7af", 188: "#d7d7d7", 189: "#d7d7ff", 190: "#d7ff00",
+ \ 191: "#d7ff5f", 192: "#d7ff87", 193: "#d7ffaf", 194: "#d7ffd7",
+ \ 195: "#d7ffff", 196: "#ff0000", 197: "#ff005f", 198: "#ff0087",
+ \ 199: "#ff00af", 200: "#ff00d7", 201: "#ff00ff", 202: "#ff5f00",
+ \ 203: "#ff5f5f", 204: "#ff5f87"
+ \ })
+ call extend(s:cterm_color, {
+ \ 205: "#ff5faf", 206: "#ff5fd7", 207: "#ff5fff", 208: "#ff8700",
+ \ 209: "#ff875f", 210: "#ff8787", 211: "#ff87af", 212: "#ff87d7",
+ \ 213: "#ff87ff", 214: "#ffaf00", 215: "#ffaf5f", 216: "#ffaf87",
+ \ 217: "#ffafaf", 218: "#ffafd7", 219: "#ffafff", 220: "#ffd700",
+ \ 221: "#ffd75f", 222: "#ffd787", 223: "#ffd7af", 224: "#ffd7d7",
+ \ 225: "#ffd7ff", 226: "#ffff00", 227: "#ffff5f", 228: "#ffff87",
+ \ 229: "#ffffaf", 230: "#ffffd7", 231: "#ffffff", 232: "#080808",
+ \ 233: "#121212", 234: "#1c1c1c", 235: "#262626", 236: "#303030",
+ \ 237: "#3a3a3a", 238: "#444444", 239: "#4e4e4e", 240: "#585858",
+ \ 241: "#626262", 242: "#6c6c6c", 243: "#767676", 244: "#808080",
+ \ 245: "#8a8a8a", 246: "#949494", 247: "#9e9e9e", 248: "#a8a8a8",
+ \ 249: "#b2b2b2", 250: "#bcbcbc", 251: "#c6c6c6", 252: "#d0d0d0",
+ \ 253: "#dadada", 254: "#e4e4e4", 255: "#eeeeee"
+ \ })
+ endif
+ endif
+endif
+
+" Return good color specification: in GUI no transformation is done, in
+" terminal return RGB values of known colors and empty string for unknown
+if s:whatterm == "gui"
+ function! s:HtmlColor(color)
+ return a:color
+ endfun
+else
+ function! s:HtmlColor(color)
+ if has_key(s:cterm_color, a:color)
+ return s:cterm_color[a:color]
+ else
+ return ""
+ endif
+ endfun
+endif
+
+" Find out the background and foreground color for use later
+let s:fgc = s:HtmlColor(synIDattr(hlID("Normal"), "fg#", s:whatterm))
+let s:bgc = s:HtmlColor(synIDattr(hlID("Normal"), "bg#", s:whatterm))
+if s:fgc == ""
+ let s:fgc = ( &background == "dark" ? "#ffffff" : "#000000" )
+endif
+if s:bgc == ""
+ let s:bgc = ( &background == "dark" ? "#000000" : "#ffffff" )
+endif
+
+if !s:settings.use_css
+ " Return opening HTML tag for given highlight id
+ function! s:HtmlOpening(id, extra_attrs)
+ let a = ""
+ if synIDattr(a:id, "inverse")
+ " For inverse, we always must set both colors (and exchange them)
+ let x = s:HtmlColor(synIDattr(a:id, "fg#", s:whatterm))
+ let a = a . '<span '.a:extra_attrs.'style="background-color: ' . ( x != "" ? x : s:fgc ) . '">'
+ let x = s:HtmlColor(synIDattr(a:id, "bg#", s:whatterm))
+ let a = a . '<font color="' . ( x != "" ? x : s:bgc ) . '">'
+ else
+ let x = s:HtmlColor(synIDattr(a:id, "bg#", s:whatterm))
+ if x != ""
+ let a = a . '<span '.a:extra_attrs.'style="background-color: ' . x . '">'
+ elseif !empty(a:extra_attrs)
+ let a = a . '<span '.a:extra_attrs.'>'
+ endif
+ let x = s:HtmlColor(synIDattr(a:id, "fg#", s:whatterm))
+ if x != "" | let a = a . '<font color="' . x . '">' | endif
+ endif
+ if synIDattr(a:id, "bold") | let a = a . "<b>" | endif
+ if synIDattr(a:id, "italic") | let a = a . "<i>" | endif
+ if synIDattr(a:id, "underline") | let a = a . "<u>" | endif
+ return a
+ endfun
+
+ " Return closing HTML tag for given highlight id
+ function! s:HtmlClosing(id, has_extra_attrs)
+ let a = ""
+ if synIDattr(a:id, "underline") | let a = a . "</u>" | endif
+ if synIDattr(a:id, "italic") | let a = a . "</i>" | endif
+ if synIDattr(a:id, "bold") | let a = a . "</b>" | endif
+ if synIDattr(a:id, "inverse")
+ let a = a . '</font></span>'
+ else
+ let x = s:HtmlColor(synIDattr(a:id, "fg#", s:whatterm))
+ if x != "" | let a = a . '</font>' | endif
+ let x = s:HtmlColor(synIDattr(a:id, "bg#", s:whatterm))
+ if x != "" || a:has_extra_attrs | let a = a . '</span>' | endif
+ endif
+ return a
+ endfun
+endif
+
+" Use a different function for formatting based on user options. This way we
+" can avoid a lot of logic during the actual execution.
+"
+" Build the function line by line containing only what is needed for the options
+" in use for maximum code sharing with minimal branch logic for greater speed.
+"
+" Note, 'exec' commands do not recognize line continuations, so must concatenate
+" lines rather than continue them.
+if s:settings.use_css
+ " save CSS to a list of rules to add to the output at the end of processing
+
+ " first, get the style names we need
+ let wrapperfunc_lines = [
+ \ 'function! s:BuildStyleWrapper(style_id, diff_style_id, extra_attrs, text, make_unselectable, unformatted)',
+ \ '',
+ \ ' let l:style_name = synIDattr(a:style_id, "name", s:whatterm)'
+ \ ]
+ if &diff
+ let wrapperfunc_lines += [
+ \ ' let l:diff_style_name = synIDattr(a:diff_style_id, "name", s:whatterm)']
+
+ " Add normal groups and diff groups to separate lists so we can order them to
+ " allow diff highlight to override normal highlight
+
+ " if primary style IS a diff style, grab it from the diff cache instead
+ " (always succeeds because we pre-populate it)
+ let wrapperfunc_lines += [
+ \ '',
+ \ ' if a:style_id == s:DIFF_D_ID || a:style_id == s:DIFF_A_ID ||'.
+ \ ' a:style_id == s:DIFF_C_ID || a:style_id == s:DIFF_T_ID',
+ \ ' let l:saved_style = get(s:diffstylelist,a:style_id)',
+ \ ' else'
+ \ ]
+ endif
+
+ " get primary style info from cache or build it on the fly if not found
+ let wrapperfunc_lines += [
+ \ ' let l:saved_style = get(s:stylelist,a:style_id)',
+ \ ' if type(l:saved_style) == type(0)',
+ \ ' unlet l:saved_style',
+ \ ' let l:saved_style = s:CSS1(a:style_id)',
+ \ ' if l:saved_style != ""',
+ \ ' let l:saved_style = "." . l:style_name . " { " . l:saved_style . "}"',
+ \ ' endif',
+ \ ' let s:stylelist[a:style_id]= l:saved_style',
+ \ ' endif'
+ \ ]
+ if &diff
+ let wrapperfunc_lines += [ ' endif' ]
+ endif
+
+ " Build the wrapper tags around the text. It turns out that caching these
+ " gives pretty much zero performance gain and adds a lot of logic.
+
+ let wrapperfunc_lines += [
+ \ '',
+ \ ' if l:saved_style == "" && empty(a:extra_attrs)'
+ \ ]
+ if &diff
+ let wrapperfunc_lines += [
+ \ ' if a:diff_style_id <= 0'
+ \ ]
+ endif
+ " no surroundings if neither primary nor diff style has any info
+ let wrapperfunc_lines += [
+ \ ' return a:text'
+ \ ]
+ if &diff
+ " no primary style, but diff style
+ let wrapperfunc_lines += [
+ \ ' else',
+ \ ' return "<span class=\"" .l:diff_style_name . "\">".a:text."</span>"',
+ \ ' endif'
+ \ ]
+ endif
+ " open tag for non-empty primary style
+ let wrapperfunc_lines += [
+ \ ' else']
+ " non-empty primary style. handle either empty or non-empty diff style.
+ "
+ " separate the two classes by a space to apply them both if there is a diff
+ " style name, unless the primary style is empty, then just use the diff style
+ " name
+ let diffstyle =
+ \ (&diff ? '(a:diff_style_id <= 0 ? "" : " ". l:diff_style_name) .'
+ \ : "")
+ if s:settings.prevent_copy == ""
+ let wrapperfunc_lines += [
+ \ ' return "<span ".a:extra_attrs."class=\"" . l:style_name .'.diffstyle.'"\">".a:text."</span>"'
+ \ ]
+ else
+
+ " New method: use generated content in the CSS. The only thing needed here
+ " is a span with no content, with an attribute holding the desired text.
+ "
+ " Old method: use an <input> element when text is unsectable. This is still
+ " used in conditional comments for Internet Explorer, where the new method
+ " doesn't work.
+ "
+ " Wrap the <input> in a <span> to allow fixing the stupid bug in some fonts
+ " which cause browsers to display a 1px gap between lines when these
+ " <input>s have a background color (maybe not really a bug, this isn't
+ " well-defined)
+ "
+ " use strwidth, because we care only about how many character boxes are
+ " needed to size the input, we don't care how many characters (including
+ " separately counted composing chars, from strchars()) or bytes (from
+ " len())the string contains. strdisplaywidth() is not needed because none of
+ " the unselectable groups can contain tab characters (fold column, fold
+ " text, line number).
+ "
+ " Note, if maxlength property needs to be added in the future, it will need
+ " to use strchars(), because HTML specifies that the maxlength parameter
+ " uses the number of unique codepoints for its limit.
+ let wrapperfunc_lines += [
+ \ ' if a:make_unselectable',
+ \ ' return "<span ".a:extra_attrs."class=\"" . l:style_name .'.diffstyle.'"\"'
+ \ ]
+ if s:settings.use_input_for_pc !=# 'all'
+ let wrapperfunc_lines[-1] .= ' " . "data-" . l:style_name . "-content=\"".a:text."\"'
+ endif
+ let wrapperfunc_lines[-1] .= '>'
+ if s:settings.use_input_for_pc !=# 'none'
+ let wrapperfunc_lines[-1] .=
+ \ '<input'.s:unselInputType.' class=\"" . l:style_name .'.diffstyle.'"\"'.
+ \ ' value=\"".substitute(a:unformatted,''\s\+$'',"","")."\"'.
+ \ ' onselect=''this.blur(); return false;'''.
+ \ ' onmousedown=''this.blur(); return false;'''.
+ \ ' onclick=''this.blur(); return false;'''.
+ \ ' readonly=''readonly'''.
+ \ ' size=\"".strwidth(a:unformatted)."\"'.
+ \ (s:settings.use_xhtml ? '/' : '').'>'
+ endif
+ let wrapperfunc_lines[-1] .= '</span>"'
+ let wrapperfunc_lines += [
+ \ ' else',
+ \ ' return "<span ".a:extra_attrs."class=\"" . l:style_name .'. diffstyle .'"\">".a:text."</span>"'
+ \ ]
+ endif
+ let wrapperfunc_lines += [
+ \ ' endif',
+ \ 'endfun'
+ \ ]
+else
+ " Non-CSS method just needs the wrapper.
+ "
+ " Functions used to get opening/closing automatically return null strings if
+ " no styles exist.
+ if &diff
+ let wrapperfunc_lines = [
+ \ 'function! s:BuildStyleWrapper(style_id, diff_style_id, extra_attrs, text, unusedarg, unusedarg2)',
+ \ ' return s:HtmlOpening(a:style_id, a:extra_attrs).(a:diff_style_id <= 0 ? "" :'.
+ \ 's:HtmlOpening(a:diff_style_id, "")).a:text.'.
+ \ '(a:diff_style_id <= 0 ? "" : s:HtmlClosing(a:diff_style_id, 0)).s:HtmlClosing(a:style_id, !empty(a:extra_attrs))',
+ \ 'endfun'
+ \ ]
+ else
+ let wrapperfunc_lines = [
+ \ 'function! s:BuildStyleWrapper(style_id, diff_style_id, extra_attrs, text, unusedarg, unusedarg2)',
+ \ ' return s:HtmlOpening(a:style_id, a:extra_attrs).a:text.s:HtmlClosing(a:style_id, !empty(a:extra_attrs))',
+ \ 'endfun'
+ \ ]
+ endif
+endif
+
+" create the function we built line by line above
+exec join(wrapperfunc_lines, "\n")
+
+let s:diff_mode = &diff
+
+" Return HTML valid characters enclosed in a span of class style_name with
+" unprintable characters expanded and double spaces replaced as necessary.
+"
+" TODO: eliminate unneeded logic like done for BuildStyleWrapper
+function! s:HtmlFormat(text, style_id, diff_style_id, extra_attrs, make_unselectable)
+ " Replace unprintable characters
+ let unformatted = strtrans(a:text)
+
+ let formatted = unformatted
+
+ " Replace the reserved html characters
+ let formatted = substitute(formatted, '&', '\&amp;', 'g')
+ let formatted = substitute(formatted, '<', '\&lt;', 'g')
+ let formatted = substitute(formatted, '>', '\&gt;', 'g')
+ let formatted = substitute(formatted, '"', '\&quot;', 'g')
+ " &apos; is not valid in HTML but it is in XHTML, so just use the numeric
+ " reference for it instead. Needed because it could appear in quotes
+ " especially if unselectable regions is turned on.
+ let formatted = substitute(formatted, '"', '\&#0039;', 'g')
+
+ " Replace a "form feed" character with HTML to do a page break
+ " TODO: need to prevent this in unselectable areas? Probably it should never
+ " BE in an unselectable area...
+ let formatted = substitute(formatted, "\x0c", '<hr class="PAGE-BREAK">', 'g')
+
+ " Replace double spaces, leading spaces, and trailing spaces if needed
+ if ' ' != s:HtmlSpace
+ let formatted = substitute(formatted, ' ', s:HtmlSpace . s:HtmlSpace, 'g')
+ let formatted = substitute(formatted, '^ ', s:HtmlSpace, 'g')
+ let formatted = substitute(formatted, ' \+$', s:HtmlSpace, 'g')
+ endif
+
+ " Enclose in the correct format
+ return s:BuildStyleWrapper(a:style_id, a:diff_style_id, a:extra_attrs, formatted, a:make_unselectable, unformatted)
+endfun
+
+" set up functions to call HtmlFormat in certain ways based on whether the
+" element is supposed to be unselectable or not
+if s:settings.prevent_copy =~# 'n'
+ if s:settings.number_lines
+ if s:settings.line_ids
+ function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
+ if a:lnr > 0
+ return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.s:settings.id_suffix.'" ', 1)
+ else
+ return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 1)
+ endif
+ endfun
+ else
+ function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
+ return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 1)
+ endfun
+ endif
+ elseif s:settings.line_ids
+ " if lines are not being numbered the only reason this function gets called
+ " is to put the line IDs on each line; "text" will be empty but lnr will
+ " always be non-zero, however we don't want to use the <input> because that
+ " won't work as nice for empty text
+ function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
+ return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.s:settings.id_suffix.'" ', 0)
+ endfun
+ endif
+else
+ if s:settings.line_ids
+ function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
+ if a:lnr > 0
+ return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.s:settings.id_suffix.'" ', 0)
+ else
+ return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 0)
+ endif
+ endfun
+ else
+ function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
+ return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 0)
+ endfun
+ endif
+endif
+if s:settings.prevent_copy =~# 'd'
+ function! s:HtmlFormat_d(text, style_id, diff_style_id)
+ return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 1)
+ endfun
+else
+ function! s:HtmlFormat_d(text, style_id, diff_style_id)
+ return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 0)
+ endfun
+endif
+if s:settings.prevent_copy =~# 'f'
+ if s:settings.use_input_for_pc ==# 'none'
+ " Simply space-pad to the desired width inside the generated content (note
+ " that the FoldColumn definition includes a whitespace:pre rule)
+ function! s:FoldColumn_build(char, len, numfill, char2, class, click)
+ return "<a href='#' class='".a:class."' onclick='".a:click."' data-FoldColumn-content='".
+ \ repeat(a:char, a:len).a:char2.repeat(' ', a:numfill).
+ \ "'></a>"
+ endfun
+ function! s:FoldColumn_fill()
+ return s:HtmlFormat(repeat(' ', s:foldcolumn), s:FOLD_C_ID, 0, "", 1)
+ endfun
+ else
+ " Note the <input> elements for fill spaces will have a single space for
+ " content, to allow active cursor CSS selection to work.
+ "
+ " Wrap the whole thing in a span for the 1px padding workaround for gaps.
+ "
+ " Build the function line by line containing only what is needed for the
+ " options in use for maximum code sharing with minimal branch logic for
+ " greater speed.
+ "
+ " Note, 'exec' commands do not recognize line continuations, so must
+ " concatenate lines rather than continue them.
+ let build_fun_lines = [
+ \ 'function! s:FoldColumn_build(char, len, numfill, char2, class, click)',
+ \ ' let l:input_open = "<input readonly=''readonly''".s:unselInputType.'.
+ \ ' " onselect=''this.blur(); return false;''".'.
+ \ ' " onmousedown=''this.blur(); ".a:click." return false;''".'.
+ \ ' " onclick=''return false;'' size=''".'.
+ \ ' string(a:len + (empty(a:char2) ? 0 : 1) + a:numfill) .'.
+ \ ' "'' "',
+ \ ' let l:common_attrs = "class=''FoldColumn'' value=''"',
+ \ ' let l:input_close = (s:settings.use_xhtml ? "'' />" : "''>")'
+ \ ]
+ if s:settings.use_input_for_pc ==# 'fallback'
+ let build_fun_lines += [
+ \ ' let l:gen_content_link ='.
+ \ ' "<a href=''#'' class=''FoldColumn'' onclick=''".a:click."'' data-FoldColumn-content=''".'.
+ \ ' repeat(a:char, a:len).a:char2.repeat('' '', a:numfill).'.
+ \ ' "''></a>"'
+ \ ]
+ endif
+ let build_fun_lines += [
+ \ ' return "<span class=''".a:class."''>".'.
+ \ ' l:input_open.l:common_attrs.repeat(a:char, a:len).(a:char2).'.
+ \ ' l:input_close.'.
+ \ (s:settings.use_input_for_pc ==# 'fallback' ? 'l:gen_content_link.' : "").
+ \ ' "</span>"',
+ \ 'endfun'
+ \ ]
+ " create the function we built line by line above
+ exec join(build_fun_lines, "\n")
+
+ function! s:FoldColumn_fill()
+ return s:FoldColumn_build(' ', s:foldcolumn, 0, '', 'FoldColumn', '')
+ endfun
+ endif
+else
+ " For normal fold columns, simply space-pad to the desired width (note that
+ " the FoldColumn definition includes a whitespace:pre rule)
+ function! s:FoldColumn_build(char, len, numfill, char2, class, click)
+ return "<a href='#' class='".a:class."' onclick='".a:click."'>".
+ \ repeat(a:char, a:len).a:char2.repeat(' ', a:numfill).
+ \ "</a>"
+ endfun
+ function! s:FoldColumn_fill()
+ return s:HtmlFormat(repeat(' ', s:foldcolumn), s:FOLD_C_ID, 0, "", 0)
+ endfun
+endif
+if s:settings.prevent_copy =~# 't'
+ " put an extra empty span at the end for dynamic folds, so the linebreak can
+ " be surrounded. Otherwise do it as normal.
+ "
+ " TODO: isn't there a better way to do this, than placing it here and using a
+ " substitute later?
+ if s:settings.dynamic_folds
+ function! s:HtmlFormat_t(text, style_id, diff_style_id)
+ return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 1) .
+ \ s:HtmlFormat("", a:style_id, 0, "", 0)
+ endfun
+ else
+ function! s:HtmlFormat_t(text, style_id, diff_style_id)
+ return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 1)
+ endfun
+ endif
+else
+ function! s:HtmlFormat_t(text, style_id, diff_style_id)
+ return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 0)
+ endfun
+endif
+
+" Return CSS style describing given highlight id (can be empty)
+function! s:CSS1(id)
+ let a = ""
+ if synIDattr(a:id, "inverse")
+ " For inverse, we always must set both colors (and exchange them)
+ let x = s:HtmlColor(synIDattr(a:id, "bg#", s:whatterm))
+ let a = a . "color: " . ( x != "" ? x : s:bgc ) . "; "
+ let x = s:HtmlColor(synIDattr(a:id, "fg#", s:whatterm))
+ let a = a . "background-color: " . ( x != "" ? x : s:fgc ) . "; "
+ else
+ let x = s:HtmlColor(synIDattr(a:id, "fg#", s:whatterm))
+ if x != "" | let a = a . "color: " . x . "; " | endif
+ let x = s:HtmlColor(synIDattr(a:id, "bg#", s:whatterm))
+ if x != ""
+ let a = a . "background-color: " . x . "; "
+ " stupid hack because almost every browser seems to have at least one font
+ " which shows 1px gaps between lines which have background
+ let a = a . "padding-bottom: 1px; "
+ elseif (a:id == s:FOLDED_ID || a:id == s:LINENR_ID || a:id == s:FOLD_C_ID) && !empty(s:settings.prevent_copy)
+ " input elements default to a different color than the rest of the page
+ let a = a . "background-color: " . s:bgc . "; "
+ endif
+ endif
+ if synIDattr(a:id, "bold") | let a = a . "font-weight: bold; " | endif
+ if synIDattr(a:id, "italic") | let a = a . "font-style: italic; " | endif
+ if synIDattr(a:id, "underline") | let a = a . "text-decoration: underline; " | endif
+ return a
+endfun
+
+if s:settings.dynamic_folds
+ " compares two folds as stored in our list of folds
+ " A fold is "less" than another if it starts at an earlier line number,
+ " or ends at a later line number, ties broken by fold level
+ function! s:FoldCompare(f1, f2)
+ if a:f1.firstline != a:f2.firstline
+ " put it before if it starts earlier
+ return a:f1.firstline - a:f2.firstline
+ elseif a:f1.lastline != a:f2.lastline
+ " put it before if it ends later
+ return a:f2.lastline - a:f1.lastline
+ else
+ " if folds begin and end on the same lines, put lowest fold level first
+ return a:f1.level - a:f2.level
+ endif
+ endfunction
+
+endif
+
+
+" Set some options to make it work faster.
+" Don't report changes for :substitute, there will be many of them.
+" Don't change other windows; turn off scroll bind temporarily
+let s:old_title = &title
+let s:old_icon = &icon
+let s:old_et = &l:et
+let s:old_bind = &l:scrollbind
+let s:old_report = &report
+let s:old_search = @/
+let s:old_more = &more
+set notitle noicon
+setlocal et
+set nomore
+set report=1000000
+setlocal noscrollbind
+
+if exists(':ownsyntax') && exists('w:current_syntax')
+ let s:current_syntax = w:current_syntax
+elseif exists('b:current_syntax')
+ let s:current_syntax = b:current_syntax
+else
+ let s:current_syntax = 'none'
+endif
+
+if s:current_syntax == ''
+ let s:current_syntax = 'none'
+endif
+
+" If the user is sourcing this script directly then the plugin version isn't
+" known because the main plugin script didn't load. In the usual case where the
+" user still has the full Vim runtime installed, or has this full plugin
+" installed in a package or something, then we can extract the version from the
+" main plugin file at it's usual spot relative to this file. Otherwise the user
+" is assembling their runtime piecemeal and we have no idea what versions of
+" other files may be present so don't even try to make a guess or assume the
+" presence of other specific files with specific meaning.
+"
+" We don't want to actually source the main plugin file here because the user
+" may have a good reason not to (e.g. they define their own TOhtml command or
+" something).
+"
+" If this seems way too complicated and convoluted, it is. Probably I should
+" have put the version information in the autoload file from the start. But the
+" version has been in the global variable for so long that changing it could
+" break a lot of user scripts.
+if exists("g:loaded_2html_plugin")
+ let s:pluginversion = g:loaded_2html_plugin
+else
+ if !exists("g:unloaded_tohtml_plugin")
+ let s:main_plugin_path = expand("<sfile>:p:h:h")."/plugin/tohtml.vim"
+ if filereadable(s:main_plugin_path)
+ let s:lines = readfile(s:main_plugin_path, "", 20)
+ call filter(s:lines, 'v:val =~ "loaded_2html_plugin = "')
+ if empty(s:lines)
+ let g:unloaded_tohtml_plugin = "unknown"
+ else
+ let g:unloaded_tohtml_plugin = substitute(s:lines[0], '.*loaded_2html_plugin = \([''"]\)\(\%(\1\@!.\)\+\)\1', '\2', '')
+ endif
+ unlet s:lines
+ else
+ let g:unloaded_tohtml_plugin = "unknown"
+ endif
+ unlet s:main_plugin_path
+ endif
+ let s:pluginversion = g:unloaded_tohtml_plugin
+endif
+
+" Split window to create a buffer with the HTML file.
+let s:orgbufnr = winbufnr(0)
+let s:origwin_stl = &l:stl
+if expand("%") == ""
+ if exists('g:html_diff_win_num')
+ exec 'new Untitled_win'.g:html_diff_win_num.'.'.(s:settings.use_xhtml ? 'x' : '').'html'
+ else
+ exec 'new Untitled.'.(s:settings.use_xhtml ? 'x' : '').'html'
+ endif
+else
+ exec 'new %.'.(s:settings.use_xhtml ? 'x' : '').'html'
+endif
+
+" Resize the new window to very small in order to make it draw faster
+let s:old_winheight = winheight(0)
+let s:old_winfixheight = &l:winfixheight
+if s:old_winheight > 2
+ resize 1 " leave enough room to view one line at a time
+ norm! G
+ norm! zt
+endif
+setlocal winfixheight
+
+let s:newwin_stl = &l:stl
+
+" on the new window, set the least time-consuming fold method
+let s:old_fen = &foldenable
+setlocal foldmethod=manual
+setlocal nofoldenable
+
+let s:newwin = winnr()
+let s:orgwin = bufwinnr(s:orgbufnr)
+
+setlocal modifiable
+%d
+let s:old_paste = &paste
+set paste
+let s:old_magic = &magic
+set magic
+
+" set the fileencoding to match the charset we'll be using
+let &l:fileencoding=s:settings.vim_encoding
+
+" According to http://www.w3.org/TR/html4/charset.html#doc-char-set, the byte
+" order mark is highly recommend on the web when using multibyte encodings. But,
+" it is not a good idea to include it on UTF-8 files. Otherwise, let Vim
+" determine when it is actually inserted.
+if s:settings.vim_encoding == 'utf-8'
+ setlocal nobomb
+else
+ setlocal bomb
+endif
+
+let s:lines = []
+
+if s:settings.use_xhtml
+ if s:settings.encoding != ""
+ call add(s:lines, "<?xml version=\"1.0\" encoding=\"" . s:settings.encoding . "\"?>")
+ else
+ call add(s:lines, "<?xml version=\"1.0\"?>")
+ endif
+ let s:tag_close = ' />'
+else
+ let s:tag_close = '>'
+endif
+
+let s:HtmlSpace = ' '
+let s:LeadingSpace = ' '
+let s:HtmlEndline = ''
+if s:settings.no_pre
+ let s:HtmlEndline = '<br' . s:tag_close
+ let s:LeadingSpace = s:settings.use_xhtml ? '&#160;' : '&nbsp;'
+ let s:HtmlSpace = '\' . s:LeadingSpace
+endif
+
+" HTML header, with the title and generator ;-). Left free space for the CSS,
+" to be filled at the end.
+if !s:settings.no_doc
+ call extend(s:lines, [
+ \ "<html>",
+ \ "<head>"])
+ " include encoding as close to the top as possible, but only if not already
+ " contained in XML information (to avoid haggling over content type)
+ if s:settings.encoding != "" && !s:settings.use_xhtml
+ if s:html5
+ call add(s:lines, '<meta charset="' . s:settings.encoding . '"' . s:tag_close)
+ else
+ call add(s:lines, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . s:tag_close)
+ endif
+ endif
+ call extend(s:lines, [
+ \ ("<title>".expand("%:p:~")."</title>"),
+ \ ("<meta name=\"Generator\" content=\"Vim/".v:version/100.".".v:version%100.'"'.s:tag_close),
+ \ ("<meta name=\"plugin-version\" content=\"".s:pluginversion.'"'.s:tag_close)
+ \ ])
+ call add(s:lines, '<meta name="syntax" content="'.s:current_syntax.'"'.s:tag_close)
+ call add(s:lines, '<meta name="settings" content="'.
+ \ join(filter(keys(s:settings),'s:settings[v:val]'),',').
+ \ ',prevent_copy='.s:settings.prevent_copy.
+ \ ',use_input_for_pc='.s:settings.use_input_for_pc.
+ \ '"'.s:tag_close)
+ call add(s:lines, '<meta name="colorscheme" content="'.
+ \ (exists('g:colors_name')
+ \ ? g:colors_name
+ \ : 'none'). '"'.s:tag_close)
+
+ if s:settings.use_css
+ call extend(s:lines, [
+ \ "<style" . (s:html5 ? "" : " type=\"text/css\"") . ">",
+ \ s:settings.use_xhtml ? "" : "<!--"])
+ let s:ieonly = []
+ if s:settings.dynamic_folds
+ if s:settings.hover_unfold
+ " if we are doing hover_unfold, use css 2 with css 1 fallback for IE6
+ call extend(s:lines, [
+ \ ".FoldColumn { text-decoration: none; white-space: pre; }",
+ \ "",
+ \ "body * { margin: 0; padding: 0; }", "",
+ \ ".open-fold > span.Folded { display: none; }",
+ \ ".open-fold > .fulltext { display: inline; }",
+ \ ".closed-fold > .fulltext { display: none; }",
+ \ ".closed-fold > span.Folded { display: inline; }",
+ \ "",
+ \ ".open-fold > .toggle-open { display: none; }",
+ \ ".open-fold > .toggle-closed { display: inline; }",
+ \ ".closed-fold > .toggle-open { display: inline; }",
+ \ ".closed-fold > .toggle-closed { display: none; }",
+ \ "", "",
+ \ '/* opening a fold while hovering won''t be supported by IE6 and other',
+ \ "similar browsers, but it should fail gracefully. */",
+ \ ".closed-fold:hover > .fulltext { display: inline; }",
+ \ ".closed-fold:hover > .toggle-filler { display: none; }",
+ \ ".closed-fold:hover > .Folded { display: none; }"])
+ " TODO: IE6 is REALLY old and I can't even test it anymore. Maybe we
+ " should remove this? Leave it in for now, it was working at one point,
+ " and doesn't affect any modern browsers. Even newer IE versions should
+ " support the above code and ignore the following.
+ let s:ieonly = [
+ \ "<!--[if lt IE 7]><style type=\"text/css\">",
+ \ ".open-fold .fulltext { display: inline; }",
+ \ ".open-fold span.Folded { display: none; }",
+ \ ".open-fold .toggle-open { display: none; }",
+ \ ".open-fold .toggle-closed { display: inline; }",
+ \ "",
+ \ ".closed-fold .fulltext { display: none; }",
+ \ ".closed-fold span.Folded { display: inline; }",
+ \ ".closed-fold .toggle-open { display: inline; }",
+ \ ".closed-fold .toggle-closed { display: none; }",
+ \ "</style>",
+ \ "<![endif]-->",
+ \]
+ else
+ " if we aren't doing hover_unfold, use CSS 1 only
+ call extend(s:lines, [
+ \ ".FoldColumn { text-decoration: none; white-space: pre; }",
+ \ ".open-fold .fulltext { display: inline; }",
+ \ ".open-fold span.Folded { display: none; }",
+ \ ".open-fold .toggle-open { display: none; }",
+ \ ".open-fold .toggle-closed { display: inline; }",
+ \ "",
+ \ ".closed-fold .fulltext { display: none; }",
+ \ ".closed-fold span.Folded { display: inline; }",
+ \ ".closed-fold .toggle-open { display: inline; }",
+ \ ".closed-fold .toggle-closed { display: none; }",
+ \])
+ endif
+ endif
+ " else we aren't doing any dynamic folding, no need for any special rules
+
+ call extend(s:lines, [
+ \ s:settings.use_xhtml ? "" : '-->',
+ \ "</style>",
+ \])
+ call extend(s:lines, s:ieonly)
+ unlet s:ieonly
+ endif
+
+ let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids
+
+ " insert script tag if needed
+ if s:uses_script
+ call extend(s:lines, [
+ \ "",
+ \ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
+ \ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
+ endif
+
+ " insert javascript to toggle folds open and closed
+ if s:settings.dynamic_folds
+ call extend(s:lines, [
+ \ "",
+ \ "function toggleFold(objID)",
+ \ "{",
+ \ " var fold;",
+ \ " fold = document.getElementById(objID);",
+ \ " if (fold.className == 'closed-fold')",
+ \ " {",
+ \ " fold.className = 'open-fold';",
+ \ " }",
+ \ " else if (fold.className == 'open-fold')",
+ \ " {",
+ \ " fold.className = 'closed-fold';",
+ \ " }",
+ \ "}"
+ \ ])
+ endif
+
+ if s:settings.line_ids
+ " insert javascript to get IDs from line numbers, and to open a fold before
+ " jumping to any lines contained therein
+ call extend(s:lines, [
+ \ "",
+ \ "/* function to open any folds containing a jumped-to line before jumping to it */",
+ \ "function JumpToLine()",
+ \ "{",
+ \ " var lineNum;",
+ \ " lineNum = window.location.hash;",
+ \ " lineNum = lineNum.substr(1); /* strip off '#' */",
+ \ "",
+ \ " if (lineNum.indexOf('L') == -1) {",
+ \ " lineNum = 'L'+lineNum;",
+ \ " }",
+ \ " var lineElem = document.getElementById(lineNum);"
+ \ ])
+
+ if s:settings.dynamic_folds
+ call extend(s:lines, [
+ \ "",
+ \ " /* navigate upwards in the DOM tree to open all folds containing the line */",
+ \ " var node = lineElem;",
+ \ " while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')",
+ \ " {",
+ \ " if (node.className == 'closed-fold')",
+ \ " {",
+ \ " node.className = 'open-fold';",
+ \ " }",
+ \ " node = node.parentNode;",
+ \ " }",
+ \ ])
+ endif
+ call extend(s:lines, [
+ \ " /* Always jump to new location even if the line was hidden inside a fold, or",
+ \ " * we corrected the raw number to a line ID.",
+ \ " */",
+ \ " if (lineElem) {",
+ \ " lineElem.scrollIntoView(true);",
+ \ " }",
+ \ " return true;",
+ \ "}",
+ \ "if ('onhashchange' in window) {",
+ \ " window.onhashchange = JumpToLine;",
+ \ "}"
+ \ ])
+ endif
+
+ " insert script closing tag if needed
+ if s:uses_script
+ call extend(s:lines, [
+ \ '',
+ \ s:settings.use_xhtml ? '//]]>' : '-->',
+ \ "</script>"
+ \ ])
+ endif
+
+ call extend(s:lines, ["</head>",
+ \ "<body".(s:settings.line_ids ? " onload='JumpToLine();'" : "").">"])
+endif
+
+if s:settings.no_pre
+ " if we're not using CSS we use a font tag which can't have a div inside
+ if s:settings.use_css
+ call extend(s:lines, ["<div id='vimCodeElement" .. s:settings.id_suffix .. "'>"])
+ endif
+else
+ call extend(s:lines, ["<pre id='vimCodeElement" .. s:settings.id_suffix .. "'>"])
+endif
+
+exe s:orgwin . "wincmd w"
+
+" caches of style data
+" initialize to include line numbers if using them
+if s:settings.number_lines
+ let s:stylelist = { s:LINENR_ID : ".LineNr { " . s:CSS1( s:LINENR_ID ) . "}" }
+else
+ let s:stylelist = {}
+endif
+let s:diffstylelist = {
+ \ s:DIFF_A_ID : ".DiffAdd { " . s:CSS1( s:DIFF_A_ID ) . "}",
+ \ s:DIFF_C_ID : ".DiffChange { " . s:CSS1( s:DIFF_C_ID ) . "}",
+ \ s:DIFF_D_ID : ".DiffDelete { " . s:CSS1( s:DIFF_D_ID ) . "}",
+ \ s:DIFF_T_ID : ".DiffText { " . s:CSS1( s:DIFF_T_ID ) . "}"
+ \ }
+
+" set up progress bar in the status line
+if !s:settings.no_progress
+ " ProgressBar Indicator
+ let s:progressbar={}
+
+ " Progressbar specific functions
+
+ func! s:SetProgbarColor()
+ if hlID("TOhtmlProgress") != 0
+ hi! link TOhtmlProgress_auto TOhtmlProgress
+ elseif hlID("TOhtmlProgress_auto")==0 ||
+ \ !exists("s:last_colors_name") || !exists("g:colors_name") ||
+ \ g:colors_name != s:last_colors_name
+ let s:last_colors_name = exists("g:colors_name") ? g:colors_name : "none"
+
+ let l:diffatr = synIDattr(hlID("DiffDelete"), "reverse", s:whatterm) ? "fg#" : "bg#"
+ let l:stlatr = synIDattr(hlID("StatusLine"), "reverse", s:whatterm) ? "fg#" : "bg#"
+
+ let l:progbar_color = synIDattr(hlID("DiffDelete"), l:diffatr, s:whatterm)
+ let l:stl_color = synIDattr(hlID("StatusLine"), l:stlatr, s:whatterm)
+
+ if "" == l:progbar_color
+ let l:progbar_color = synIDattr(hlID("DiffDelete"), "reverse", s:whatterm) ? s:fgc : s:bgc
+ endif
+ if "" == l:stl_color
+ let l:stl_color = synIDattr(hlID("StatusLine"), "reverse", s:whatterm) ? s:fgc : s:bgc
+ endif
+
+ if l:progbar_color == l:stl_color
+ if s:whatterm == 'cterm'
+ if l:progbar_color >= (&t_Co/2)
+ let l:progbar_color-=1
+ else
+ let l:progbar_color+=1
+ endif
+ else
+ let l:rgb = map(matchlist(l:progbar_color, '#\zs\x\x\ze\(\x\x\)\(\x\x\)')[:2], 'str2nr(v:val, 16)')
+ let l:avg = (l:rgb[0] + l:rgb[1] + l:rgb[2])/3
+ if l:avg >= 128
+ let l:avg_new = l:avg
+ while l:avg - l:avg_new < 0x15
+ let l:rgb = map(l:rgb, 'v:val * 3 / 4')
+ let l:avg_new = (l:rgb[0] + l:rgb[1] + l:rgb[2])/3
+ endwhile
+ else
+ let l:avg_new = l:avg
+ while l:avg_new - l:avg < 0x15
+ let l:rgb = map(l:rgb, 'min([max([v:val, 4]) * 5 / 4, 255])')
+ let l:avg_new = (l:rgb[0] + l:rgb[1] + l:rgb[2])/3
+ endwhile
+ endif
+ let l:progbar_color = printf("#%02x%02x%02x", l:rgb[0], l:rgb[1], l:rgb[2])
+ endif
+ echomsg "diff detected progbar color set to" l:progbar_color
+ endif
+ exe "hi TOhtmlProgress_auto" s:whatterm."bg=".l:progbar_color
+ endif
+ endfun
+
+ func! s:ProgressBar(title, max_value, winnr)
+ let pgb=copy(s:progressbar)
+ let pgb.title = a:title.' '
+ let pgb.max_value = a:max_value
+ let pgb.winnr = a:winnr
+ let pgb.cur_value = 0
+
+ let pgb.items = { 'title' : { 'color' : 'Statusline' },
+ \'bar' : { 'color' : 'Statusline' , 'fillcolor' : 'TOhtmlProgress_auto' , 'bg' : 'Statusline' } ,
+ \'counter' : { 'color' : 'Statusline' } }
+ let pgb.last_value = 0
+ let pgb.needs_redraw = 0
+ " Note that you must use len(split) instead of len() if you want to use
+ " unicode in title.
+ "
+ " Subtract 3 for spacing around the title.
+ " Subtract 4 for the percentage display.
+ " Subtract 2 for spacing before this.
+ " Subtract 2 more for the '|' on either side of the progress bar
+ let pgb.subtractedlen=len(split(pgb.title, '\zs'))+3+4+2+2
+ let pgb.max_len = 0
+ set laststatus=2
+ return pgb
+ endfun
+
+ " Function: progressbar.calculate_ticks() {{{1
+ func! s:progressbar.calculate_ticks(pb_len)
+ if a:pb_len<=0
+ let pb_len = 100
+ else
+ let pb_len = a:pb_len
+ endif
+ let self.progress_ticks = map(range(pb_len+1), "v:val * self.max_value / pb_len")
+ endfun
+
+ "Function: progressbar.paint()
+ func! s:progressbar.paint()
+ " Recalculate widths.
+ let max_len = winwidth(self.winnr)
+ let pb_len = 0
+ " always true on first call because of initial value of self.max_len
+ if max_len != self.max_len
+ let self.max_len = max_len
+
+ " Progressbar length
+ let pb_len = max_len - self.subtractedlen
+
+ call self.calculate_ticks(pb_len)
+
+ let self.needs_redraw = 1
+ let cur_value = 0
+ let self.pb_len = pb_len
+ else
+ " start searching at the last found index to make the search for the
+ " appropriate tick value normally take 0 or 1 comparisons
+ let cur_value = self.last_value
+ let pb_len = self.pb_len
+ endif
+
+ let cur_val_max = pb_len > 0 ? pb_len : 100
+
+ " find the current progress bar position based on precalculated thresholds
+ while cur_value < cur_val_max && self.cur_value > self.progress_ticks[cur_value]
+ let cur_value += 1
+ endwhile
+
+ " update progress bar
+ if self.last_value != cur_value || self.needs_redraw || self.cur_value == self.max_value
+ let self.needs_redraw = 1
+ let self.last_value = cur_value
+
+ let t_color = self.items.title.color
+ let b_fcolor = self.items.bar.fillcolor
+ let b_color = self.items.bar.color
+ let c_color = self.items.counter.color
+
+ let stl = "%#".t_color."#%-( ".self.title." %)".
+ \"%#".b_color."#".
+ \(pb_len>0 ?
+ \ ('|%#'.b_fcolor."#%-(".repeat(" ",cur_value)."%)".
+ \ '%#'.b_color."#".repeat(" ",pb_len-cur_value)."|"):
+ \ ('')).
+ \"%=%#".c_color."#%( ".printf("%3.d ",100*self.cur_value/self.max_value)."%% %)"
+ call setwinvar(self.winnr, '&stl', stl)
+ endif
+ endfun
+
+ func! s:progressbar.incr( ... )
+ let self.cur_value += (a:0 ? a:1 : 1)
+ " if we were making a general-purpose progress bar, we'd need to limit to a
+ " lower limit as well, but since we always increment with a positive value
+ " in this script, we only need limit the upper value
+ let self.cur_value = (self.cur_value > self.max_value ? self.max_value : self.cur_value)
+ call self.paint()
+ endfun
+ " }}}
+ if s:settings.dynamic_folds
+ " to process folds we make two passes through each line
+ let s:pgb = s:ProgressBar("Processing folds:", line('$')*2, s:orgwin)
+ endif
+
+ call s:SetProgbarColor()
+endif
+
+" First do some preprocessing for dynamic folding. Do this for the entire file
+" so we don't accidentally start within a closed fold or something.
+let s:allfolds = []
+
+if s:settings.dynamic_folds
+ let s:lnum = 1
+ let s:end = line('$')
+ " save the fold text and set it to the default so we can find fold levels
+ let s:foldtext_save = &foldtext
+ setlocal foldtext&
+
+ " we will set the foldcolumn in the html to the greater of the maximum fold
+ " level and the current foldcolumn setting
+ let s:foldcolumn = &foldcolumn
+
+ " get all info needed to describe currently closed folds
+ while s:lnum <= s:end
+ if foldclosed(s:lnum) == s:lnum
+ " default fold text has '+-' and then a number of dashes equal to fold
+ " level, so subtract 2 from index of first non-dash after the dashes
+ " in order to get the fold level of the current fold
+ let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2
+ " store fold info for later use
+ let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
+ call add(s:allfolds, s:newfold)
+ " open the fold so we can find any contained folds
+ execute s:lnum."foldopen"
+ else
+ if !s:settings.no_progress
+ call s:pgb.incr()
+ if s:pgb.needs_redraw
+ redrawstatus
+ let s:pgb.needs_redraw = 0
+ endif
+ endif
+ let s:lnum = s:lnum + 1
+ endif
+ endwhile
+
+ " close all folds to get info for originally open folds
+ silent! %foldclose!
+ let s:lnum = 1
+
+ " the originally open folds will be all folds we encounter that aren't
+ " already in the list of closed folds
+ while s:lnum <= s:end
+ if foldclosed(s:lnum) == s:lnum
+ " default fold text has '+-' and then a number of dashes equal to fold
+ " level, so subtract 2 from index of first non-dash after the dashes
+ " in order to get the fold level of the current fold
+ let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2
+ let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
+ " only add the fold if we don't already have it
+ if empty(s:allfolds) || index(s:allfolds, s:newfold) == -1
+ let s:newfold.type = "open-fold"
+ call add(s:allfolds, s:newfold)
+ endif
+ " open the fold so we can find any contained folds
+ execute s:lnum."foldopen"
+ else
+ if !s:settings.no_progress
+ call s:pgb.incr()
+ if s:pgb.needs_redraw
+ redrawstatus
+ let s:pgb.needs_redraw = 0
+ endif
+ endif
+ let s:lnum = s:lnum + 1
+ endif
+ endwhile
+
+ " sort the folds so that we only ever need to look at the first item in the
+ " list of folds
+ call sort(s:allfolds, "s:FoldCompare")
+
+ let &l:foldtext = s:foldtext_save
+ unlet s:foldtext_save
+
+ " close all folds again so we can get the fold text as we go
+ silent! %foldclose!
+
+ " Go through and remove folds we don't need to (or cannot) process in the
+ " current conversion range
+ "
+ " If a fold is removed which contains other folds, which are included, we need
+ " to adjust the level of the included folds as used by the conversion logic
+ " (avoiding special cases is good)
+ "
+ " Note any time we remove a fold, either all of the included folds are in it,
+ " or none of them, because we only remove a fold if neither its start nor its
+ " end are within the conversion range.
+ let leveladjust = 0
+ for afold in s:allfolds
+ let removed = 0
+ if exists("g:html_start_line") && exists("g:html_end_line")
+ if afold.firstline < g:html_start_line
+ if afold.lastline <= g:html_end_line && afold.lastline >= g:html_start_line
+ " if a fold starts before the range to convert but stops within the
+ " range, we need to include it. Make it start on the first converted
+ " line.
+ let afold.firstline = g:html_start_line
+ else
+ " if the fold lies outside the range or the start and stop enclose
+ " the entire range, don't bother parsing it
+ call remove(s:allfolds, index(s:allfolds, afold))
+ let removed = 1
+ if afold.lastline > g:html_end_line
+ let leveladjust += 1
+ endif
+ endif
+ elseif afold.firstline > g:html_end_line
+ " If the entire fold lies outside the range we need to remove it.
+ call remove(s:allfolds, index(s:allfolds, afold))
+ let removed = 1
+ endif
+ elseif exists("g:html_start_line")
+ if afold.firstline < g:html_start_line
+ " if there is no last line, but there is a first line, the end of the
+ " fold will always lie within the region of interest, so keep it
+ let afold.firstline = g:html_start_line
+ endif
+ elseif exists("g:html_end_line")
+ " if there is no first line we default to the first line in the buffer so
+ " the fold start will always be included if the fold itself is included.
+ " If however the entire fold lies outside the range we need to remove it.
+ if afold.firstline > g:html_end_line
+ call remove(s:allfolds, index(s:allfolds, afold))
+ let removed = 1
+ endif
+ endif
+ if !removed
+ let afold.level -= leveladjust
+ if afold.level+1 > s:foldcolumn
+ let s:foldcolumn = afold.level+1
+ endif
+ endif
+ endfor
+
+ " if we've removed folds containing the conversion range from processing,
+ " getting foldtext as we go won't know to open the removed folds, so the
+ " foldtext would be wrong; open them now.
+ "
+ " Note that only when a start and an end line is specified will a fold
+ " containing the current range ever be removed.
+ while leveladjust > 0
+ exe g:html_start_line."foldopen"
+ let leveladjust -= 1
+ endwhile
+endif
+
+" Now loop over all lines in the original text to convert to html.
+" Use html_start_line and html_end_line if they are set.
+if exists("g:html_start_line")
+ let s:lnum = html_start_line
+ if s:lnum < 1 || s:lnum > line("$")
+ let s:lnum = 1
+ endif
+else
+ let s:lnum = 1
+endif
+if exists("g:html_end_line")
+ let s:end = html_end_line
+ if s:end < s:lnum || s:end > line("$")
+ let s:end = line("$")
+ endif
+else
+ let s:end = line("$")
+endif
+
+" stack to keep track of all the folds containing the current line
+let s:foldstack = []
+
+if !s:settings.no_progress
+ let s:pgb = s:ProgressBar("Processing lines:", s:end - s:lnum + 1, s:orgwin)
+endif
+
+if s:settings.number_lines
+ let s:margin = strlen(s:end) + 1
+else
+ let s:margin = 0
+endif
+
+if has('folding') && !s:settings.ignore_folding
+ let s:foldfillchar = &fillchars[matchend(&fillchars, 'fold:')]
+ if s:foldfillchar == ''
+ let s:foldfillchar = '-'
+ endif
+endif
+let s:difffillchar = &fillchars[matchend(&fillchars, 'diff:')]
+if s:difffillchar == ''
+ let s:difffillchar = '-'
+endif
+
+let s:foldId = 0
+
+if !s:settings.expand_tabs
+ " If keeping tabs, add them to printable characters so we keep them when
+ " formatting text (strtrans() doesn't replace printable chars)
+ let s:old_isprint = &isprint
+ setlocal isprint+=9
+endif
+
+while s:lnum <= s:end
+
+ " If there are filler lines for diff mode, show these above the line.
+ let s:filler = diff_filler(s:lnum)
+ if s:filler > 0
+ let s:n = s:filler
+ while s:n > 0
+ let s:new = repeat(s:difffillchar, 3)
+
+ if s:n > 2 && s:n < s:filler && !s:settings.whole_filler
+ let s:new = s:new . " " . s:filler . " inserted lines "
+ let s:n = 2
+ endif
+
+ if !s:settings.no_pre
+ " HTML line wrapping is off--go ahead and fill to the margin
+ " TODO: what about when CSS wrapping is turned on?
+ let s:new = s:new . repeat(s:difffillchar, &columns - strlen(s:new) - s:margin)
+ else
+ let s:new = s:new . repeat(s:difffillchar, 3)
+ endif
+
+ let s:new = s:HtmlFormat_d(s:new, s:DIFF_D_ID, 0)
+ if s:settings.number_lines
+ " Indent if line numbering is on. Indent gets style of line number
+ " column.
+ let s:new = s:HtmlFormat_n(repeat(' ', s:margin), s:LINENR_ID, 0, 0) . s:new
+ endif
+ if s:settings.dynamic_folds && !s:settings.no_foldcolumn && s:foldcolumn > 0
+ " Indent for foldcolumn if there is one. Assume it's empty, there should
+ " not be a fold for deleted lines in diff mode.
+ let s:new = s:FoldColumn_fill() . s:new
+ endif
+ call add(s:lines, s:new.s:HtmlEndline)
+
+ let s:n = s:n - 1
+ endwhile
+ unlet s:n
+ endif
+ unlet s:filler
+
+ " Start the line with the line number.
+ if s:settings.number_lines
+ let s:numcol = repeat(' ', s:margin - 1 - strlen(s:lnum)) . s:lnum . ' '
+ endif
+
+ let s:new = ""
+
+ if has('folding') && !s:settings.ignore_folding && foldclosed(s:lnum) > -1 && !s:settings.dynamic_folds
+ "
+ " This is the beginning of a folded block (with no dynamic folding)
+ let s:new = foldtextresult(s:lnum)
+ if !s:settings.no_pre
+ " HTML line wrapping is off--go ahead and fill to the margin
+ let s:new = s:new . repeat(s:foldfillchar, &columns - strlen(s:new))
+ endif
+
+ " put numcol in a separate group for sake of unselectable text
+ let s:new = (s:settings.number_lines ? s:HtmlFormat_n(s:numcol, s:FOLDED_ID, 0, s:lnum): "") . s:HtmlFormat_t(s:new, s:FOLDED_ID, 0)
+
+ " Skip to the end of the fold
+ let s:new_lnum = foldclosedend(s:lnum)
+
+ if !s:settings.no_progress
+ call s:pgb.incr(s:new_lnum - s:lnum)
+ endif
+
+ let s:lnum = s:new_lnum
+
+ else
+ "
+ " A line that is not folded, or doing dynamic folding.
+ "
+ let s:line = getline(s:lnum)
+ let s:len = strlen(s:line)
+
+ if s:settings.dynamic_folds
+ " First insert a closing for any open folds that end on this line
+ while !empty(s:foldstack) && get(s:foldstack,0).lastline == s:lnum-1
+ let s:new = s:new."</span></span>"
+ call remove(s:foldstack, 0)
+ endwhile
+
+ " Now insert an opening for any new folds that start on this line
+ let s:firstfold = 1
+ while !empty(s:allfolds) && get(s:allfolds,0).firstline == s:lnum
+ let s:foldId = s:foldId + 1
+ let s:new .= "<span id='"
+ let s:new .= (exists('g:html_diff_win_num') ? "win".g:html_diff_win_num : "")
+ let s:new .= "fold".s:foldId.s:settings.id_suffix."' class='".s:allfolds[0].type."'>"
+
+
+ " Unless disabled, add a fold column for the opening line of a fold.
+ "
+ " Note that dynamic folds require using css so we just use css to take
+ " care of the leading spaces rather than using &nbsp; in the case of
+ " html_no_pre to make it easier
+ if !s:settings.no_foldcolumn
+ " add fold column that can open the new fold
+ if s:allfolds[0].level > 1 && s:firstfold
+ let s:new = s:new . s:FoldColumn_build('|', s:allfolds[0].level - 1, 0, "",
+ \ 'toggle-open FoldColumn','javascript:toggleFold("fold'.s:foldstack[0].id.s:settings.id_suffix.'");')
+ endif
+ " add the filler spaces separately from the '+' char so that it can be
+ " shown/hidden separately during a hover unfold
+ let s:new = s:new . s:FoldColumn_build("+", 1, 0, "",
+ \ 'toggle-open FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
+ " If this is not the last fold we're opening on this line, we need
+ " to keep the filler spaces hidden if the fold is opened by mouse
+ " hover. If it is the last fold to open in the line, we shouldn't hide
+ " them, so don't apply the toggle-filler class.
+ let s:new = s:new . s:FoldColumn_build(" ", 1, s:foldcolumn - s:allfolds[0].level - 1, "",
+ \ 'toggle-open FoldColumn'. (get(s:allfolds, 1, {'firstline': 0}).firstline == s:lnum ?" toggle-filler" :""),
+ \ 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
+
+ " add fold column that can close the new fold
+ " only add extra blank space if we aren't opening another fold on the
+ " same line
+ if get(s:allfolds, 1, {'firstline': 0}).firstline != s:lnum
+ let s:extra_space = s:foldcolumn - s:allfolds[0].level
+ else
+ let s:extra_space = 0
+ endif
+ if s:firstfold
+ " the first fold in a line has '|' characters from folds opened in
+ " previous lines, before the '-' for this fold
+ let s:new .= s:FoldColumn_build('|', s:allfolds[0].level - 1, s:extra_space, '-',
+ \ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
+ else
+ " any subsequent folds in the line only add a single '-'
+ let s:new = s:new . s:FoldColumn_build("-", 1, s:extra_space, "",
+ \ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
+ endif
+ let s:firstfold = 0
+ endif
+
+ " Add fold text, moving the span ending to the next line so collapsing
+ " of folds works correctly.
+ " Put numcol in a separate group for sake of unselectable text.
+ let s:new = s:new . (s:settings.number_lines ? s:HtmlFormat_n(s:numcol, s:FOLDED_ID, 0, 0) : "") . substitute(s:HtmlFormat_t(foldtextresult(s:lnum), s:FOLDED_ID, 0), '</span>', s:HtmlEndline.'\n\0', '')
+ let s:new = s:new . "<span class='fulltext'>"
+
+ " open the fold now that we have the fold text to allow retrieval of
+ " fold text for subsequent folds
+ execute s:lnum."foldopen"
+ call insert(s:foldstack, remove(s:allfolds,0))
+ let s:foldstack[0].id = s:foldId
+ endwhile
+
+ " Unless disabled, add a fold column for other lines.
+ "
+ " Note that dynamic folds require using css so we just use css to take
+ " care of the leading spaces rather than using &nbsp; in the case of
+ " html_no_pre to make it easier
+ if !s:settings.no_foldcolumn
+ if empty(s:foldstack)
+ " add the empty foldcolumn for unfolded lines if there is a fold
+ " column at all
+ if s:foldcolumn > 0
+ let s:new = s:new . s:FoldColumn_fill()
+ endif
+ else
+ " add the fold column for folds not on the opening line
+ if get(s:foldstack, 0).firstline < s:lnum
+ let s:new = s:new . s:FoldColumn_build('|', s:foldstack[0].level, s:foldcolumn - s:foldstack[0].level, "",
+ \ 'FoldColumn', 'javascript:toggleFold("fold'.s:foldstack[0].id.s:settings.id_suffix.'");')
+ endif
+ endif
+ endif
+ endif
+
+ " Now continue with the unfolded line text
+ if s:settings.number_lines
+ let s:new = s:new . s:HtmlFormat_n(s:numcol, s:LINENR_ID, 0, s:lnum)
+ elseif s:settings.line_ids
+ let s:new = s:new . s:HtmlFormat_n("", s:LINENR_ID, 0, s:lnum)
+ endif
+
+ " Get the diff attribute, if any.
+ let s:diffattr = diff_hlID(s:lnum, 1)
+
+ " initialize conceal info to act like not concealed, just in case
+ let s:concealinfo = [0, '']
+
+ " Loop over each character in the line
+ let s:col = 1
+
+ " most of the time we won't use the diff_id, initialize to zero
+ let s:diff_id = 0
+
+ while s:col <= s:len || (s:col == 1 && s:diffattr)
+ let s:startcol = s:col " The start column for processing text
+ if !s:settings.ignore_conceal && has('conceal')
+ let s:concealinfo = synconcealed(s:lnum, s:col)
+ endif
+ if !s:settings.ignore_conceal && s:concealinfo[0]
+ let s:col = s:col + 1
+ " Speed loop (it's small - that's the trick)
+ " Go along till we find a change in the match sequence number (ending
+ " the specific concealed region) or until there are no more concealed
+ " characters.
+ while s:col <= s:len && s:concealinfo == synconcealed(s:lnum, s:col) | let s:col = s:col + 1 | endwhile
+ elseif s:diffattr
+ let s:diff_id = diff_hlID(s:lnum, s:col)
+ let s:id = synID(s:lnum, s:col, 1)
+ let s:col = s:col + 1
+ " Speed loop (it's small - that's the trick)
+ " Go along till we find a change in hlID
+ while s:col <= s:len && s:id == synID(s:lnum, s:col, 1)
+ \ && s:diff_id == diff_hlID(s:lnum, s:col) |
+ \ let s:col = s:col + 1 |
+ \ endwhile
+ if s:len < &columns && !s:settings.no_pre
+ " Add spaces at the end of the raw text line to extend the changed
+ " line to the full width.
+ let s:line = s:line . repeat(' ', &columns - virtcol([s:lnum, s:len]) - s:margin)
+ let s:len = &columns
+ endif
+ else
+ let s:id = synID(s:lnum, s:col, 1)
+ let s:col = s:col + 1
+ " Speed loop (it's small - that's the trick)
+ " Go along till we find a change in synID
+ while s:col <= s:len && s:id == synID(s:lnum, s:col, 1) | let s:col = s:col + 1 | endwhile
+ endif
+
+ if s:settings.ignore_conceal || !s:concealinfo[0]
+ " Expand tabs if needed
+ let s:expandedtab = strpart(s:line, s:startcol - 1, s:col - s:startcol)
+ if s:settings.expand_tabs
+ let s:offset = 0
+ let s:idx = stridx(s:expandedtab, "\t")
+ let s:tablist = split(&vts,',')
+ if empty(s:tablist)
+ let s:tablist = [ &ts ]
+ endif
+ let s:tabidx = 0
+ let s:tabwidth = 0
+ while s:idx >= 0
+ if s:startcol + s:idx == 1
+ let s:i = s:tablist[0]
+ else
+ " Get the character, which could be multiple bytes, which falls
+ " immediately before the found tab. Extract it by matching a
+ " character just prior to the column where the tab matches.
+ " We'll use this to get the byte index of the character
+ " immediately preceding the tab, so we can then look up the
+ " virtual column that character appears in, to determine how
+ " much of the current tabstop has been used up.
+ if s:idx == 0
+ " if the found tab is the first character in the text being
+ " processed, we need to get the character prior to the text,
+ " given by startcol.
+ let s:prevc = matchstr(s:line, '.\%' . (s:startcol + s:offset) . 'c')
+ else
+ " Otherwise, the byte index of the tab into s:expandedtab is
+ " given by s:idx.
+ let s:prevc = matchstr(s:expandedtab, '.\%' . (s:idx + 1) . 'c')
+ endif
+ let s:vcol = virtcol([s:lnum, s:startcol + s:idx + s:offset - len(s:prevc)])
+
+ " find the tabstop interval to use for the tab we just found. Keep
+ " adding tabstops (which could be variable) until we would exceed
+ " the virtual screen position of the start of the found tab.
+ while s:vcol >= s:tabwidth + s:tablist[s:tabidx]
+ let s:tabwidth += s:tablist[s:tabidx]
+ if s:tabidx < len(s:tablist)-1
+ let s:tabidx = s:tabidx+1
+ endif
+ endwhile
+ let s:i = s:tablist[s:tabidx] - (s:vcol - s:tabwidth)
+ endif
+ " update offset to keep the index within the line corresponding to
+ " actual tab characters instead of replaced spaces; s:idx reflects
+ " replaced spaces in s:expandedtab, s:offset cancels out all but
+ " the tab character itself.
+ let s:offset -= s:i - 1
+ let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', s:i), '')
+ let s:idx = stridx(s:expandedtab, "\t")
+ endwhile
+ end
+
+ " get the highlight group name to use
+ let s:id = synIDtrans(s:id)
+ else
+ " use Conceal highlighting for concealed text
+ let s:id = s:CONCEAL_ID
+ let s:expandedtab = s:concealinfo[1]
+ endif
+
+ " Output the text with the same synID, with class set to the highlight ID
+ " name, unless it has been concealed completely.
+ if strlen(s:expandedtab) > 0
+ let s:new = s:new . s:HtmlFormat(s:expandedtab, s:id, s:diff_id, "", 0)
+ endif
+ endwhile
+ endif
+
+ call extend(s:lines, split(s:new.s:HtmlEndline, '\n', 1))
+ if !s:settings.no_progress && s:pgb.needs_redraw
+ redrawstatus
+ let s:pgb.needs_redraw = 0
+ endif
+ let s:lnum = s:lnum + 1
+
+ if !s:settings.no_progress
+ call s:pgb.incr()
+ endif
+endwhile
+
+if s:settings.dynamic_folds
+ " finish off any open folds
+ while !empty(s:foldstack)
+ let s:lines[-1].="</span></span>"
+ call remove(s:foldstack, 0)
+ endwhile
+
+ " add fold column to the style list if not already there
+ let s:id = s:FOLD_C_ID
+ if !has_key(s:stylelist, s:id)
+ let s:stylelist[s:id] = '.FoldColumn { ' . s:CSS1(s:id) . '}'
+ endif
+endif
+
+if s:settings.no_pre
+ if !s:settings.use_css
+ " Close off the font tag that encapsulates the whole <body>
+ call extend(s:lines, ["</font>"])
+ else
+ call extend(s:lines, ["</div>"])
+ endif
+else
+ call extend(s:lines, ["</pre>"])
+endif
+if !s:settings.no_doc
+ call extend(s:lines, ["</body>", "</html>"])
+endif
+
+exe s:newwin . "wincmd w"
+call setline(1, s:lines)
+unlet s:lines
+
+" Mangle modelines so Vim doesn't try to use HTML text as a modeline if editing
+" this file in the future; need to do this after generating all the text in case
+" the modeline text has different highlight groups which all turn out to be
+" stripped from the final output.
+%s!\v(%(^|\s+)%([Vv]i%(m%([<=>]?\d+)?)?|ex)):!\1\&#0058;!ge
+
+" The generated HTML is admittedly ugly and takes a LONG time to fold.
+" Make sure the user doesn't do syntax folding when loading a generated file,
+" using a modeline.
+if !s:settings.no_modeline
+ call append(line('$'), "<!-- vim: set foldmethod=manual : -->")
+endif
+
+" Now, when we finally know which, we define the colors and styles
+if s:settings.use_css && !s:settings.no_doc
+ 1;/<style\>/+1
+
+ " Normal/global attributes
+ if s:settings.no_pre
+ call append('.', "body { color: " . s:fgc . "; background-color: " . s:bgc . "; font-family: ". s:htmlfont ."; }")
+ +
+ else
+ call append('.', "pre { " . s:whitespace . "font-family: ". s:htmlfont ."; color: " . s:fgc . "; background-color: " . s:bgc . "; }")
+ +
+ yank
+ put
+ execute "normal! ^cwbody\e"
+ " body should not have the wrap formatting, only the pre section
+ if s:whitespace != ''
+ exec 's#'.s:whitespace
+ endif
+ endif
+ " fix browser inconsistencies (sometimes within the same browser) of different
+ " default font size for different elements
+ call append('.', '* { font-size: 1em; }')
+ +
+ " if we use any input elements for unselectable content, make sure they look
+ " like normal text
+ if !empty(s:settings.prevent_copy)
+ if s:settings.use_input_for_pc !=# "none"
+ call append('.', 'input { border: none; margin: 0; padding: 0; font-family: '.s:htmlfont.'; }')
+ +
+ " ch units for browsers which support them, em units for a somewhat
+ " reasonable fallback.
+ for w in range(1, 20, 1)
+ call append('.', [
+ \ "input[size='".w."'] { width: ".w."em; width: ".w."ch; }"
+ \ ])
+ +
+ endfor
+ endif
+
+ if s:settings.use_input_for_pc !=# 'all'
+ let s:unselectable_styles = []
+ if s:settings.prevent_copy =~# 'f'
+ call add(s:unselectable_styles, 'FoldColumn')
+ endif
+ if s:settings.prevent_copy =~# 'n'
+ call add(s:unselectable_styles, 'LineNr')
+ endif
+ if s:settings.prevent_copy =~# 't' && !s:settings.ignore_folding
+ call add(s:unselectable_styles, 'Folded')
+ endif
+ if s:settings.prevent_copy =~# 'd'
+ call add(s:unselectable_styles, 'DiffDelete')
+ endif
+ if s:settings.use_input_for_pc !=# 'none'
+ call append('.', [
+ \ '/* Note: IE does not support @supports conditionals, but also does not fully support',
+ \ ' "content:" with custom content, so we *want* the check to fail */',
+ \ '@supports ( content: attr(data-custom-content) ) {'
+ \ ])
+ +3
+ endif
+ " The line number column inside the foldtext is styled just like the fold
+ " text in Vim, but it should use the prevent_copy settings of line number
+ " rather than fold text. Apply the prevent_copy styles to foldtext
+ " specifically for line numbers, which always come after the fold column,
+ " or at the beginning of the line.
+ if s:settings.prevent_copy =~# 'n' && !s:settings.ignore_folding
+ call append('.', [
+ \ ' .FoldColumn + .Folded, .Folded:first-child { user-select: none; }',
+ \ ' .FoldColumn + [data-Folded-content]::before, [data-Folded-content]:first-child::before { content: attr(data-Folded-content); }',
+ \ ' .FoldColumn + [data-Folded-content]::before, [data-Folded-content]:first-child::before { padding-bottom: 1px; display: inline-block; /* match the 1-px padding of standard items with background */ }',
+ \ ' .FoldColumn + span[data-Folded-content]::before, [data-Folded-content]:first-child::before { cursor: default; }',
+ \ ])
+ +4
+ endif
+ for s:style_name in s:unselectable_styles
+ call append('.', [
+ \ ' .'.s:style_name.' { user-select: none; }',
+ \ ' [data-'.s:style_name.'-content]::before { content: attr(data-'.s:style_name.'-content); }',
+ \ ' [data-'.s:style_name.'-content]::before { padding-bottom: 1px; display: inline-block; /* match the 1-px padding of standard items with background */ }',
+ \ ' span[data-'.s:style_name.'-content]::before { cursor: default; }',
+ \ ])
+ +4
+ endfor
+ if s:settings.use_input_for_pc !=# 'none'
+ call append('.', [
+ \ ' input { display: none; }',
+ \ '}'
+ \ ])
+ +2
+ endif
+ unlet s:unselectable_styles
+ endif
+
+ " Fix mouse cursor shape for the fallback <input> method of uncopyable text
+ if s:settings.use_input_for_pc !=# 'none'
+ if s:settings.prevent_copy =~# 'f'
+ " Make the cursor show active fold columns as active areas, and empty fold
+ " columns as not interactive.
+ call append('.', ['input.FoldColumn { cursor: pointer; }',
+ \ 'input.FoldColumn[value="'.repeat(' ', s:foldcolumn).'"] { cursor: default; }'
+ \ ])
+ +2
+ if s:settings.use_input_for_pc !=# 'all'
+ call append('.', [
+ \ 'a[data-FoldColumn-content="'.repeat(' ', s:foldcolumn).'"] { cursor: default; }'
+ \ ])
+ +1
+ end
+ endif
+ " make line number column show as non-interactive if not selectable
+ if s:settings.prevent_copy =~# 'n'
+ call append('.', 'input.LineNr { cursor: default; }')
+ +
+ endif
+ " make fold text and line number column within fold text show as
+ " non-interactive if not selectable
+ if (s:settings.prevent_copy =~# 'n' || s:settings.prevent_copy =~# 't') && !s:settings.ignore_folding
+ call append('.', 'input.Folded { cursor: default; }')
+ +
+ endif
+ " make diff filler show as non-interactive if not selectable
+ if s:settings.prevent_copy =~# 'd'
+ call append('.', 'input.DiffDelete { cursor: default; }')
+ +
+ endif
+ endif
+ endif
+endif
+
+if !s:settings.use_css && !s:settings.no_doc
+ " For Netscape 4, set <body> attributes too, though, strictly speaking, it's
+ " incorrect.
+ execute '%s:<body\([^>]*\):<body bgcolor="' . s:bgc . '" text="' . s:fgc . '"\1>\r<font face="'. s:htmlfont .'"'
+endif
+
+" Gather attributes for all other classes. Do diff first so that normal
+" highlight groups are inserted before it.
+if s:settings.use_css && !s:settings.no_doc
+ if s:diff_mode
+ call append('.', filter(map(keys(s:diffstylelist), "s:diffstylelist[v:val]"), 'v:val != ""'))
+ endif
+ if !empty(s:stylelist)
+ call append('.', filter(map(keys(s:stylelist), "s:stylelist[v:val]"), 'v:val != ""'))
+ endif
+endif
+
+" Add hyperlinks
+if !s:settings.no_links
+ %s+\(https\=://\S\{-}\)\(\([.,;:}]\=\(\s\|$\)\)\|[\\"'<>]\|&gt;\|&lt;\|&quot;\)+<a href="\1">\1</a>\2+ge
+endif
+
+" The DTD
+if !s:settings.no_doc
+ if s:settings.use_xhtml
+ exe "normal! gg$a\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"
+ elseif s:html5
+ exe "normal! gg0i<!DOCTYPE html>\n"
+ else
+ exe "normal! gg0i<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"
+ endif
+endif
+
+if s:settings.use_xhtml && !s:settings.no_doc
+ exe "normal! gg/<html/e\na xmlns=\"http://www.w3.org/1999/xhtml\"\e"
+endif
+
+" Cleanup
+%s:\s\+$::e
+
+" Restore old settings (new window first)
+"
+" Don't bother restoring foldmethod in case it was syntax because the markup is
+" so weirdly formatted it can take a LONG time.
+let &l:foldenable = s:old_fen
+let &report = s:old_report
+let &title = s:old_title
+let &icon = s:old_icon
+let &paste = s:old_paste
+let &magic = s:old_magic
+let @/ = s:old_search
+let &more = s:old_more
+
+" switch to original window to restore those settings
+exe s:orgwin . "wincmd w"
+
+if !s:settings.expand_tabs
+ let &l:isprint = s:old_isprint
+endif
+let &l:stl = s:origwin_stl
+let &l:et = s:old_et
+let &l:scrollbind = s:old_bind
+
+" and back to the new window again to end there
+exe s:newwin . "wincmd w"
+
+let &l:stl = s:newwin_stl
+exec 'resize' s:old_winheight
+let &l:winfixheight = s:old_winfixheight
+
+let &ls=s:ls
+let &eventignore=s:ei_sav
+
+" Save a little bit of memory (worth doing?)
+unlet s:htmlfont s:whitespace
+unlet s:old_et s:old_paste s:old_icon s:old_report s:old_title s:old_search
+unlet s:old_magic s:old_more s:old_fen s:old_winheight
+unlet! s:old_isprint
+unlet s:whatterm s:stylelist s:diffstylelist s:lnum s:end s:margin s:fgc s:bgc s:old_winfixheight
+unlet! s:col s:id s:attr s:len s:line s:new s:expandedtab s:concealinfo s:diff_mode
+unlet! s:orgwin s:newwin s:orgbufnr s:idx s:i s:offset s:ls s:ei_sav s:origwin_stl
+unlet! s:newwin_stl s:current_syntax
+if !v:profiling
+ delfunc s:HtmlColor
+ delfunc s:HtmlFormat
+ delfunc s:CSS1
+ delfunc s:BuildStyleWrapper
+ if !s:settings.use_css
+ delfunc s:HtmlOpening
+ delfunc s:HtmlClosing
+ endif
+ if s:settings.dynamic_folds
+ delfunc s:FoldCompare
+ endif
+
+ if !s:settings.no_progress
+ delfunc s:ProgressBar
+ delfunc s:progressbar.paint
+ delfunc s:progressbar.incr
+ unlet s:pgb s:progressbar
+ endif
+endif
+
+unlet! s:new_lnum s:diffattr s:difffillchar s:foldfillchar s:HtmlSpace
+unlet! s:LeadingSpace s:HtmlEndline s:firstfold s:numcol s:foldcolumn
+unlet s:foldstack s:allfolds s:foldId s:settings
+
+let &cpo = s:cpo_sav
+unlet! s:cpo_sav
+
+" Make sure any patches will probably use consistent indent
+" vim: ts=8 sw=2 sts=2 noet
diff --git a/runtime/syntax/8th.vim b/runtime/syntax/8th.vim
new file mode 100644
index 0000000..ce27d10
--- /dev/null
+++ b/runtime/syntax/8th.vim
@@ -0,0 +1,404 @@
+" Vim syntax file
+" Language: 8th
+" Version: 21.08
+" Last Change: 2021 Sep 20
+" Maintainer: Ron Aaron <ron@aaron-tech.com>
+" URL: https://8th-dev.com/
+" Filetypes: *.8th
+" NOTE: You should also have the ftplugin/8th.vim file to set 'isk'
+
+if version < 600
+ syntax clear
+ finish
+elseif exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+syn clear
+" Synchronization method
+syn sync ccomment
+syn sync maxlines=100
+syn case match
+syn match eighthColonName "\S\+" contained
+syn match eighthColonDef ":\s\+\S\+" contains=eighthColonName
+
+" new words
+syn match eighthClasses "\<\S\+:" contained
+syn match eighthClassWord "\<\S\+:.\+" contains=eighthClasses
+
+syn keyword eighthEndOfColonDef ; i;
+syn keyword eighthDefine var var,
+
+" Built in words:
+com! -nargs=+ Builtin syn keyword eighthBuiltin <args>
+
+Builtin args #:args b #:b dhm #:dhm exec# #:exec# id2ns #:id2ns id? #:id? idd #:idd key #:key oa #:oa
+Builtin oid #:oid okey #:okey with #:with with! #:with! zip #:zip gen-secret 2fa:gen-secret gen-url 2fa:gen-url
+Builtin validate-code 2fa:validate-code ! G:! #! G:#! ## G:## #> G:#> #if G:#if ' G:' ( G:( (* G:(*
+Builtin (:) G:(:) (code) G:(code) (defer) G:(defer) (dump) G:(dump) (getc) G:(getc) (gets) G:(gets)
+Builtin (interp) G:(interp) (log) G:(log) (needs) G:(needs) (parseln) G:(parseln) (putc) G:(putc) (puts) G:(puts)
+Builtin (putslim) G:(putslim) (stat) G:(stat) (with) G:(with) ) G:) +hook G:+hook +listener G:+listener
+Builtin +ref G:+ref ,# G:,# -- G:-- -----BEGIN G:-----BEGIN -Inf G:-Inf -Inf? G:-Inf? -hook G:-hook
+Builtin -listener G:-listener -ref G:-ref -rot G:-rot . G:. .# G:.# .hook G:.hook .needs G:.needs .r G:.r
+Builtin .s G:.s .s-truncate G:.s-truncate .stats G:.stats .ver G:.ver .with G:.with 0; G:0; 2dip G:2dip
+Builtin 2drop G:2drop 2dup G:2dup 2over G:2over 2swap G:2swap 3drop G:3drop 3rev G:3rev 4drop G:4drop
+Builtin 8thdt? G:8thdt? 8thsku G:8thsku 8thver? G:8thver? 8thvernum? G:8thvernum? : G:: ; G:; ;; G:;;
+Builtin ;;; G:;;; ;with G:;with <# G:<# <#> G:<#> >clip G:>clip >json G:>json >kind G:>kind >n G:>n
+Builtin >r G:>r >s G:>s ?: G:?: @ G:@ BITMAP: G:BITMAP: ENUM: G:ENUM: FLAG: G:FLAG: Inf G:Inf Inf? G:Inf?
+Builtin NaN G:NaN NaN? G:NaN? SED-CHECK G:SED-CHECK SED: G:SED: SED: G:SED: \ G:\ _dup G:_dup _swap G:_swap
+Builtin actor: G:actor: again G:again ahead G:ahead and G:and appname G:appname apropos G:apropos argc G:argc
+Builtin args G:args array? G:array? assert G:assert base G:base bi G:bi bits G:bits break G:break break? G:break?
+Builtin breakif G:breakif build? G:build? buildver? G:buildver? bye G:bye c# G:c# c/does G:c/does case: G:case:
+Builtin catch G:catch chdir G:chdir clip> G:clip> clone G:clone clone-shallow G:clone-shallow cold G:cold
+Builtin compile G:compile compile? G:compile? compiling? G:compiling? conflict G:conflict const G:const
+Builtin container? G:container? counting-allocations G:counting-allocations cr G:cr curlang G:curlang
+Builtin curry G:curry curry: G:curry: decimal G:decimal default: G:default: defer: G:defer: deferred: G:deferred:
+Builtin deg>rad G:deg>rad depth G:depth die G:die dip G:dip drop G:drop dstack G:dstack dump G:dump
+Builtin dup G:dup dup>r G:dup>r dup? G:dup? e# G:e# enum: G:enum: error? G:error? eval G:eval eval! G:eval!
+Builtin eval0 G:eval0 execnull G:execnull expect G:expect extra! G:extra! extra@ G:extra@ false G:false
+Builtin fnv G:fnv fourth G:fourth free G:free func: G:func: getc G:getc getcwd G:getcwd getenv G:getenv
+Builtin gets G:gets handler G:handler header G:header help G:help hex G:hex i: G:i: i; G:i; isa? G:isa?
+Builtin items-used G:items-used jcall G:jcall jclass G:jclass jmethod G:jmethod json! G:json! json-8th> G:json-8th>
+Builtin json-nesting G:json-nesting json-pretty G:json-pretty json-throw G:json-throw json> G:json>
+Builtin json@ G:json@ k32 G:k32 keep G:keep l: G:l: last G:last lib G:lib libbin G:libbin libc G:libc
+Builtin listener@ G:listener@ literal G:literal locals: G:locals: lock G:lock lock-to G:lock-to locked? G:locked?
+Builtin log G:log log-syslog G:log-syslog log-task G:log-task log-time G:log-time log-time-local G:log-time-local
+Builtin long-days G:long-days long-months G:long-months longjmp G:longjmp lookup G:lookup loop G:loop
+Builtin loop- G:loop- map? G:map? mark G:mark mark? G:mark? memfree G:memfree mobile? G:mobile? n# G:n#
+Builtin name>os G:name>os name>sem G:name>sem ndrop G:ndrop needs G:needs new G:new next-arg G:next-arg
+Builtin nip G:nip noop G:noop not G:not nothrow G:nothrow ns G:ns ns: G:ns: ns>ls G:ns>ls ns>s G:ns>s
+Builtin ns? G:ns? null G:null null; G:null; null? G:null? number? G:number? of: G:of: off G:off on G:on
+Builtin onexit G:onexit only G:only op! G:op! or G:or os G:os os-names G:os-names os>long-name G:os>long-name
+Builtin os>name G:os>name over G:over p: G:p: pack G:pack parse G:parse parse-csv G:parse-csv parsech G:parsech
+Builtin parseln G:parseln parsews G:parsews pick G:pick poke G:poke pool-clear G:pool-clear pool-clear-all G:pool-clear-all
+Builtin prior G:prior private G:private process-args G:process-args process-args-fancy G:process-args-fancy
+Builtin process-args-help G:process-args-help process-args-vars G:process-args-vars prompt G:prompt
+Builtin public G:public putc G:putc puts G:puts putslim G:putslim quote G:quote r! G:r! r> G:r> r@ G:r@
+Builtin rad>deg G:rad>deg rand-jit G:rand-jit rand-jsf G:rand-jsf rand-native G:rand-native rand-normal G:rand-normal
+Builtin rand-pcg G:rand-pcg rand-pcg-seed G:rand-pcg-seed rand-range G:rand-range rand-select G:rand-select
+Builtin randbuf-pcg G:randbuf-pcg random G:random rdrop G:rdrop recurse G:recurse recurse-stack G:recurse-stack
+Builtin ref@ G:ref@ reg! G:reg! reg@ G:reg@ regbin@ G:regbin@ remaining-args G:remaining-args repeat G:repeat
+Builtin required? G:required? requires G:requires reset G:reset roll G:roll rop! G:rop! rot G:rot rpick G:rpick
+Builtin rroll G:rroll rstack G:rstack rswap G:rswap rusage G:rusage s>ns G:s>ns same? G:same? scriptdir G:scriptdir
+Builtin scriptfile G:scriptfile sem G:sem sem-post G:sem-post sem-rm G:sem-rm sem-wait G:sem-wait sem-wait? G:sem-wait?
+Builtin sem>name G:sem>name semi-throw G:semi-throw set-wipe G:set-wipe setenv G:setenv setjmp G:setjmp
+Builtin settings! G:settings! settings![] G:settings![] settings@ G:settings@ settings@? G:settings@?
+Builtin settings@[] G:settings@[] sh G:sh sh$ G:sh$ short-days G:short-days short-months G:short-months
+Builtin sleep G:sleep sleep-until G:sleep-until slog G:slog space G:space stack-check G:stack-check
+Builtin stack-size G:stack-size step G:step sthrow G:sthrow string? G:string? struct: G:struct: swap G:swap
+Builtin tab-hook G:tab-hook tell-conflict G:tell-conflict tempdir G:tempdir tempfilename G:tempfilename
+Builtin third G:third throw G:throw thrownull G:thrownull times G:times tlog G:tlog tri G:tri true G:true
+Builtin tuck G:tuck type-check G:type-check typeassert G:typeassert uid G:uid uname G:uname unlock G:unlock
+Builtin unpack G:unpack until G:until until! G:until! while G:while while! G:while! with: G:with: word? G:word?
+Builtin words G:words words-like G:words-like words/ G:words/ xchg G:xchg xor G:xor >auth HTTP:>auth
+Builtin (curry) I:(curry) notimpl I:notimpl sh I:sh trace-word I:trace-word call JSONRPC:call auth-string OAuth:auth-string
+Builtin gen-nonce OAuth:gen-nonce params OAuth:params call SOAP:call ! a:! + a:+ - a:- / a:/ 2each a:2each
+Builtin 2map a:2map 2map+ a:2map+ 2map= a:2map= = a:= @ a:@ @? a:@? _@ a:_@ all a:all any a:any bsearch a:bsearch
+Builtin centroid a:centroid clear a:clear close a:close diff a:diff dot a:dot each a:each each! a:each!
+Builtin each-slice a:each-slice exists? a:exists? filter a:filter generate a:generate group a:group
+Builtin indexof a:indexof insert a:insert intersect a:intersect join a:join len a:len map a:map map+ a:map+
+Builtin map= a:map= mean a:mean mean&variance a:mean&variance merge a:merge new a:new op! a:op! open a:open
+Builtin pop a:pop push a:push qsort a:qsort randeach a:randeach reduce a:reduce reduce+ a:reduce+ remove a:remove
+Builtin rev a:rev shift a:shift shuffle a:shuffle slice a:slice slice+ a:slice+ slide a:slide smear a:smear
+Builtin sort a:sort union a:union x a:x x-each a:x-each xchg a:xchg y a:y zip a:zip 8thdir app:8thdir
+Builtin asset app:asset atrun app:atrun atrun app:atrun atrun app:atrun basedir app:basedir current app:current
+Builtin datadir app:datadir exename app:exename lowmem app:lowmem main app:main name app:name oncrash app:oncrash
+Builtin opts! app:opts! opts@ app:opts@ orientation app:orientation orientation! app:orientation! pid app:pid
+Builtin post-main app:post-main pre-main app:pre-main raise app:raise request-perm app:request-perm
+Builtin restart app:restart resumed app:resumed signal app:signal standalone app:standalone subdir app:subdir
+Builtin suspended app:suspended sysquit app:sysquit terminated app:terminated trap app:trap (here) asm:(here)
+Builtin >n asm:>n avail asm:avail c, asm:c, here! asm:here! n> asm:n> used asm:used w, asm:w, ! b:!
+Builtin + b:+ / b:/ 1+ b:1+ 1- b:1- = b:= >base16 b:>base16 >base32 b:>base32 >base64 b:>base64 >base85 b:>base85
+Builtin >hex b:>hex >mpack b:>mpack @ b:@ append b:append base16> b:base16> base32> b:base32> base64> b:base64>
+Builtin base85> b:base85> bit! b:bit! bit@ b:bit@ clear b:clear compress b:compress conv b:conv each b:each
+Builtin each! b:each! each-slice b:each-slice expand b:expand fill b:fill getb b:getb hex> b:hex> len b:len
+Builtin mem> b:mem> move b:move mpack-compat b:mpack-compat mpack-date b:mpack-date mpack-ignore b:mpack-ignore
+Builtin mpack> b:mpack> n! b:n! n+ b:n+ n@ b:n@ new b:new op b:op pad b:pad rev b:rev search b:search
+Builtin shmem b:shmem slice b:slice splice b:splice ungetb b:ungetb unpad b:unpad writable b:writable
+Builtin xor b:xor +block bc:+block .blocks bc:.blocks add-block bc:add-block block-hash bc:block-hash
+Builtin block@ bc:block@ first-block bc:first-block hash bc:hash last-block bc:last-block load bc:load
+Builtin new bc:new save bc:save set-sql bc:set-sql validate bc:validate validate-block bc:validate-block
+Builtin add bloom:add filter bloom:filter in? bloom:in? accept bt:accept ch! bt:ch! ch@ bt:ch@ connect bt:connect
+Builtin disconnect bt:disconnect init bt:init leconnect bt:leconnect lescan bt:lescan listen bt:listen
+Builtin on? bt:on? read bt:read scan bt:scan service? bt:service? services? bt:services? write bt:write
+Builtin * c:* * c:* + c:+ + c:+ = c:= = c:= >ri c:>ri >ri c:>ri abs c:abs abs c:abs arg c:arg arg c:arg
+Builtin conj c:conj conj c:conj im c:im n> c:n> new c:new new c:new re c:re >redir con:>redir accept con:accept
+Builtin accept-pwd con:accept-pwd ansi? con:ansi? black con:black blue con:blue clreol con:clreol cls con:cls
+Builtin cyan con:cyan down con:down free con:free getxy con:getxy gotoxy con:gotoxy green con:green
+Builtin key con:key key? con:key? left con:left load-history con:load-history magenta con:magenta onBlack con:onBlack
+Builtin onBlue con:onBlue onCyan con:onCyan onGreen con:onGreen onMagenta con:onMagenta onRed con:onRed
+Builtin onWhite con:onWhite onYellow con:onYellow print con:print red con:red redir> con:redir> redir? con:redir?
+Builtin right con:right save-history con:save-history size? con:size? up con:up white con:white yellow con:yellow
+Builtin >aes128gcm cr:>aes128gcm >aes256gcm cr:>aes256gcm >cp cr:>cp >cpe cr:>cpe >decrypt cr:>decrypt
+Builtin >edbox cr:>edbox >encrypt cr:>encrypt >nbuf cr:>nbuf >rsabox cr:>rsabox >uuid cr:>uuid CBC cr:CBC
+Builtin CFB cr:CFB CTR cr:CTR ECB cr:ECB GCM cr:GCM OFB cr:OFB aad? cr:aad? aes128box-sig cr:aes128box-sig
+Builtin aes128gcm> cr:aes128gcm> aes256box-sig cr:aes256box-sig aes256gcm> cr:aes256gcm> aesgcm cr:aesgcm
+Builtin blakehash cr:blakehash chacha20box-sig cr:chacha20box-sig chachapoly cr:chachapoly cipher! cr:cipher!
+Builtin cipher@ cr:cipher@ cp> cr:cp> cpe> cr:cpe> decrypt cr:decrypt decrypt+ cr:decrypt+ decrypt> cr:decrypt>
+Builtin dh-genkey cr:dh-genkey dh-secret cr:dh-secret dh-sign cr:dh-sign dh-verify cr:dh-verify ebox-sig cr:ebox-sig
+Builtin ecc-genkey cr:ecc-genkey ecc-secret cr:ecc-secret ecc-sign cr:ecc-sign ecc-verify cr:ecc-verify
+Builtin edbox-sig cr:edbox-sig edbox> cr:edbox> encrypt cr:encrypt encrypt+ cr:encrypt+ encrypt> cr:encrypt>
+Builtin ensurekey cr:ensurekey gcm-tag-size cr:gcm-tag-size genkey cr:genkey hash cr:hash hash! cr:hash!
+Builtin hash+ cr:hash+ hash>b cr:hash>b hash>s cr:hash>s hash@ cr:hash@ hmac cr:hmac hotp cr:hotp iv? cr:iv?
+Builtin mode cr:mode mode@ cr:mode@ rand cr:rand randbuf cr:randbuf randkey cr:randkey restore cr:restore
+Builtin root-certs cr:root-certs rsa_decrypt cr:rsa_decrypt rsa_encrypt cr:rsa_encrypt rsa_sign cr:rsa_sign
+Builtin rsa_verify cr:rsa_verify rsabox-sig cr:rsabox-sig rsabox> cr:rsabox> rsagenkey cr:rsagenkey
+Builtin save cr:save sbox-sig cr:sbox-sig sha1-hmac cr:sha1-hmac shard cr:shard tag? cr:tag? totp cr:totp
+Builtin totp-epoch cr:totp-epoch totp-time-step cr:totp-time-step unshard cr:unshard uuid cr:uuid uuid> cr:uuid>
+Builtin validate-pgp-sig cr:validate-pgp-sig (.hebrew) d:(.hebrew) (.islamic) d:(.islamic) + d:+ +day d:+day
+Builtin +hour d:+hour +min d:+min +msec d:+msec - d:- .hebrew d:.hebrew .islamic d:.islamic .time d:.time
+Builtin / d:/ = d:= >fixed d:>fixed >hebepoch d:>hebepoch >jdn d:>jdn >msec d:>msec >unix d:>unix >ymd d:>ymd
+Builtin ?= d:?= Adar d:Adar Adar2 d:Adar2 Adar2 d:Adar2 Av d:Av Elul d:Elul Fri d:Fri Heshvan d:Heshvan
+Builtin Iyar d:Iyar Kislev d:Kislev Mon d:Mon Nissan d:Nissan Sat d:Sat Shevat d:Shevat Sivan d:Sivan
+Builtin Sun d:Sun Tammuz d:Tammuz Tevet d:Tevet Thu d:Thu Tishrei d:Tishrei Tue d:Tue Wed d:Wed adjust-dst d:adjust-dst
+Builtin approx! d:approx! approx? d:approx? approximates! d:approximates! between d:between d. d:d.
+Builtin dawn d:dawn days-in-hebrew-year d:days-in-hebrew-year displaying-hebrew d:displaying-hebrew
+Builtin do-dawn d:do-dawn do-dusk d:do-dusk do-rise d:do-rise doy d:doy dst? d:dst? dstquery d:dstquery
+Builtin dstzones? d:dstzones? dusk d:dusk elapsed-timer d:elapsed-timer elapsed-timer-seconds d:elapsed-timer-seconds
+Builtin first-dow d:first-dow fixed> d:fixed> fixed>dow d:fixed>dow fixed>hebrew d:fixed>hebrew fixed>islamic d:fixed>islamic
+Builtin format d:format hanukkah d:hanukkah hebrew-epoch d:hebrew-epoch hebrew>fixed d:hebrew>fixed
+Builtin hebrewtoday d:hebrewtoday hmonth-name d:hmonth-name islamic.epoch d:islamic.epoch islamic>fixed d:islamic>fixed
+Builtin islamictoday d:islamictoday jdn> d:jdn> join d:join last-day-of-hebrew-month d:last-day-of-hebrew-month
+Builtin last-dow d:last-dow last-month d:last-month last-week d:last-week last-year d:last-year latitude d:latitude
+Builtin longitude d:longitude longitude d:longitude msec d:msec msec> d:msec> new d:new next-dow d:next-dow
+Builtin next-month d:next-month next-week d:next-week next-year d:next-year number>hebrew d:number>hebrew
+Builtin omer d:omer parse d:parse parse-approx d:parse-approx parse-range d:parse-range pesach d:pesach
+Builtin prev-dow d:prev-dow purim d:purim rosh-chodesh? d:rosh-chodesh? rosh-hashanah d:rosh-hashanah
+Builtin shavuot d:shavuot start-timer d:start-timer sunrise d:sunrise taanit-esther d:taanit-esther
+Builtin ticks d:ticks ticks/sec d:ticks/sec timer d:timer timer-ctrl d:timer-ctrl tisha-beav d:tisha-beav
+Builtin tzadjust d:tzadjust unix> d:unix> unknown d:unknown unknown? d:unknown? updatetz d:updatetz
+Builtin year@ d:year@ ymd d:ymd ymd> d:ymd> yom-haatsmaut d:yom-haatsmaut yom-kippur d:yom-kippur add-func db:add-func
+Builtin aes! db:aes! begin db:begin bind db:bind bind-exec db:bind-exec bind-exec[] db:bind-exec[]
+Builtin close db:close col db:col col[] db:col[] col{} db:col{} commit db:commit each db:each exec db:exec
+Builtin exec-cb db:exec-cb exec-name db:exec-name get db:get get-sub db:get-sub key db:key kind? db:kind?
+Builtin last-rowid db:last-rowid mysql? db:mysql? odbc? db:odbc? open db:open open? db:open? prep-name db:prep-name
+Builtin prepare db:prepare query db:query query-all db:query-all rekey db:rekey rollback db:rollback
+Builtin set db:set set-sub db:set-sub sql@ db:sql@ bp dbg:bp except-task@ dbg:except-task@ go dbg:go
+Builtin line-info dbg:line-info prompt dbg:prompt stop dbg:stop trace dbg:trace trace-enter dbg:trace-enter
+Builtin trace-leave dbg:trace-leave / f:/ abspath f:abspath absrel f:absrel append f:append associate f:associate
+Builtin atime f:atime canwrite? f:canwrite? chmod f:chmod close f:close copy f:copy copydir f:copydir
+Builtin create f:create ctime f:ctime dir? f:dir? dname f:dname eachbuf f:eachbuf eachline f:eachline
+Builtin enssep f:enssep eof? f:eof? exists? f:exists? flush f:flush fname f:fname getb f:getb getc f:getc
+Builtin getline f:getline getmod f:getmod glob f:glob glob-nocase f:glob-nocase homedir f:homedir homedir! f:homedir!
+Builtin include f:include ioctl f:ioctl join f:join launch f:launch link f:link link> f:link> link? f:link?
+Builtin mkdir f:mkdir mmap f:mmap mmap-range f:mmap-range mmap-range? f:mmap-range? mtime f:mtime mv f:mv
+Builtin name@ f:name@ open f:open open-ro f:open-ro popen f:popen print f:print read f:read read? f:read?
+Builtin relpath f:relpath rglob f:rglob rm f:rm rmdir f:rmdir seek f:seek sep f:sep size f:size slurp f:slurp
+Builtin sparse? f:sparse? spit f:spit stderr f:stderr stdin f:stdin stdout f:stdout tell f:tell times f:times
+Builtin tmpspit f:tmpspit trash f:trash truncate f:truncate ungetb f:ungetb ungetc f:ungetc unzip f:unzip
+Builtin unzip-entry f:unzip-entry watch f:watch write f:write writen f:writen zip+ f:zip+ zip@ f:zip@
+Builtin zipentry f:zipentry zipnew f:zipnew zipopen f:zipopen zipsave f:zipsave atlas! font:atlas!
+Builtin atlas@ font:atlas@ default-size font:default-size info font:info ls font:ls measure font:measure
+Builtin new font:new oversample font:oversample pixels font:pixels pixels? font:pixels? +edge gr:+edge
+Builtin +edge+w gr:+edge+w +node gr:+node connect gr:connect edges gr:edges edges! gr:edges! m! gr:m!
+Builtin m@ gr:m@ neighbors gr:neighbors new gr:new node-edges gr:node-edges nodes gr:nodes traverse gr:traverse
+Builtin weight! gr:weight! + h:+ clear h:clear cmp! h:cmp! len h:len max! h:max! new h:new peek h:peek
+Builtin pop h:pop push h:push unique h:unique arm? hw:arm? camera hw:camera camera-img hw:camera-img
+Builtin camera-limits hw:camera-limits camera? hw:camera? cpu? hw:cpu? device? hw:device? displays? hw:displays?
+Builtin displaysize? hw:displaysize? finger-match hw:finger-match finger-support hw:finger-support
+Builtin gpio hw:gpio gpio! hw:gpio! gpio-mmap hw:gpio-mmap gpio@ hw:gpio@ i2c hw:i2c i2c! hw:i2c! i2c!reg hw:i2c!reg
+Builtin i2c@ hw:i2c@ i2c@reg hw:i2c@reg isround? hw:isround? iswatch? hw:iswatch? mac? hw:mac? mem? hw:mem?
+Builtin model? hw:model? poll hw:poll sensor hw:sensor start hw:start stop hw:stop uid? hw:uid? fetch-full imap:fetch-full
+Builtin fetch-uid-mail imap:fetch-uid-mail login imap:login logout imap:logout new imap:new search imap:search
+Builtin select-inbox imap:select-inbox >file img:>file >fmt img:>fmt copy img:copy crop img:crop data img:data
+Builtin desat img:desat fill img:fill fillrect img:fillrect filter img:filter flip img:flip from-svg img:from-svg
+Builtin new img:new pix! img:pix! pix@ img:pix@ qr-gen img:qr-gen qr-parse img:qr-parse rotate img:rotate
+Builtin scale img:scale scroll img:scroll size img:size countries iso:countries find loc:find sort loc:sort
+Builtin ! m:! !? m:!? + m:+ +? m:+? - m:- >arr m:>arr @ m:@ @? m:@? _! m:_! _@ m:_@ arr> m:arr> bitmap m:bitmap
+Builtin clear m:clear data m:data each m:each exists? m:exists? filter m:filter iter m:iter iter-all m:iter-all
+Builtin keys m:keys len m:len map m:map merge m:merge new m:new op! m:op! open m:open slice m:slice
+Builtin vals m:vals xchg m:xchg zip m:zip ! mat:! * mat:* + mat:+ = mat:= @ mat:@ affine mat:affine
+Builtin col mat:col data mat:data det mat:det dim? mat:dim? get-n mat:get-n ident mat:ident inv mat:inv
+Builtin m. mat:m. minor mat:minor n* mat:n* new mat:new new-minor mat:new-minor rotate mat:rotate row mat:row
+Builtin same-size? mat:same-size? scale mat:scale shear mat:shear trans mat:trans translate mat:translate
+Builtin xform mat:xform 2console md:2console 2html md:2html 2nk md:2nk bounds meta:bounds color meta:color
+Builtin console meta:console end meta:end ffi meta:ffi ! n:! * n:* */ n:*/ + n:+ +! n:+! - n:- / n:/
+Builtin /mod n:/mod 1+ n:1+ 1- n:1- < n:< = n:= > n:> BIGE n:BIGE BIGPI n:BIGPI E n:E PI n:PI ^ n:^
+Builtin _mod n:_mod abs n:abs acos n:acos acos n:acos asin n:asin asin n:asin atan n:atan atan n:atan
+Builtin atan2 n:atan2 band n:band between n:between bfloat n:bfloat bic n:bic bint n:bint binv n:binv
+Builtin bnot n:bnot bor n:bor bxor n:bxor cast n:cast ceil n:ceil clamp n:clamp cmp n:cmp comb n:comb
+Builtin cos n:cos cosd n:cosd emod n:emod exp n:exp expm1 n:expm1 expmod n:expmod float n:float floor n:floor
+Builtin fmod n:fmod frac n:frac gcd n:gcd int n:int invmod n:invmod kind? n:kind? lcm n:lcm ln n:ln
+Builtin ln1p n:ln1p max n:max median n:median min n:min mod n:mod neg n:neg odd? n:odd? perm n:perm
+Builtin prime? n:prime? quantize n:quantize quantize! n:quantize! r+ n:r+ range n:range rot32l n:rot32l
+Builtin rot32r n:rot32r round n:round round2 n:round2 rounding n:rounding running-variance n:running-variance
+Builtin running-variance-finalize n:running-variance-finalize sgn n:sgn shl n:shl shr n:shr sin n:sin
+Builtin sind n:sind sqr n:sqr sqrt n:sqrt tan n:tan tand n:tand trunc n:trunc ~= n:~= ! net:! !? net:!?
+Builtin - net:- >url net:>url @ net:@ @? net:@? DGRAM net:DGRAM INET4 net:INET4 INET6 net:INET6 PROTO_TCP net:PROTO_TCP
+Builtin PROTO_UDP net:PROTO_UDP STREAM net:STREAM accept net:accept addrinfo>o net:addrinfo>o again? net:again?
+Builtin alloc-and-read net:alloc-and-read alloc-buf net:alloc-buf bind net:bind close net:close closed? net:closed?
+Builtin connect net:connect debug? net:debug? delete net:delete get net:get getaddrinfo net:getaddrinfo
+Builtin getpeername net:getpeername head net:head ifaces? net:ifaces? listen net:listen map>url net:map>url
+Builtin net-socket net:net-socket opts net:opts port-is-ssl? net:port-is-ssl? post net:post proxy! net:proxy!
+Builtin put net:put read net:read read-all net:read-all recvfrom net:recvfrom s>url net:s>url sendto net:sendto
+Builtin server net:server setsockopt net:setsockopt socket net:socket tlshello net:tlshello url> net:url>
+Builtin user-agent net:user-agent wait net:wait write net:write (begin) nk:(begin) (chart-begin) nk:(chart-begin)
+Builtin (chart-begin-colored) nk:(chart-begin-colored) (chart-end) nk:(chart-end) (end) nk:(end) (group-begin) nk:(group-begin)
+Builtin (group-end) nk:(group-end) (property) nk:(property) >img nk:>img addfont nk:addfont anti-alias nk:anti-alias
+Builtin any-clicked? nk:any-clicked? bounds nk:bounds bounds! nk:bounds! button nk:button button-color nk:button-color
+Builtin button-label nk:button-label button-set-behavior nk:button-set-behavior button-symbol nk:button-symbol
+Builtin button-symbol-label nk:button-symbol-label chart-add-slot nk:chart-add-slot chart-add-slot-colored nk:chart-add-slot-colored
+Builtin chart-push nk:chart-push chart-push-slot nk:chart-push-slot checkbox nk:checkbox clicked? nk:clicked?
+Builtin close-this! nk:close-this! close-this? nk:close-this? close? nk:close? color-picker nk:color-picker
+Builtin combo nk:combo combo-begin-color nk:combo-begin-color combo-begin-label nk:combo-begin-label
+Builtin combo-cb nk:combo-cb combo-end nk:combo-end contextual-begin nk:contextual-begin contextual-close nk:contextual-close
+Builtin contextual-end nk:contextual-end contextual-item-image-text nk:contextual-item-image-text contextual-item-symbol-text nk:contextual-item-symbol-text
+Builtin contextual-item-text nk:contextual-item-text cp! nk:cp! cp@ nk:cp@ display-info nk:display-info
+Builtin display@ nk:display@ do nk:do down? nk:down? draw-image nk:draw-image draw-image-at nk:draw-image-at
+Builtin draw-image-centered nk:draw-image-centered draw-sub-image nk:draw-sub-image draw-text nk:draw-text
+Builtin draw-text-high nk:draw-text-high draw-text-wrap nk:draw-text-wrap edit-focus nk:edit-focus
+Builtin edit-string nk:edit-string event nk:event event-boost nk:event-boost event-msec nk:event-msec
+Builtin event-wait nk:event-wait fill-arc nk:fill-arc fill-circle nk:fill-circle fill-poly nk:fill-poly
+Builtin fill-rect nk:fill-rect fill-rect-color nk:fill-rect-color fill-triangle nk:fill-triangle flags! nk:flags!
+Builtin flags@ nk:flags@ fullscreen nk:fullscreen get nk:get get-row-height nk:get-row-height getfont nk:getfont
+Builtin getmap nk:getmap gl? nk:gl? grid nk:grid grid-push nk:grid-push group-scroll-ofs nk:group-scroll-ofs
+Builtin group-scroll-ofs! nk:group-scroll-ofs! hovered? nk:hovered? image nk:image init nk:init input-button nk:input-button
+Builtin input-key nk:input-key input-motion nk:input-motion input-scroll nk:input-scroll input-string nk:input-string
+Builtin key-down? nk:key-down? key-pressed? nk:key-pressed? key-released? nk:key-released? label nk:label
+Builtin label-colored nk:label-colored label-wrap nk:label-wrap label-wrap-colored nk:label-wrap-colored
+Builtin layout-bounds nk:layout-bounds layout-grid-begin nk:layout-grid-begin layout-grid-end nk:layout-grid-end
+Builtin layout-push-dynamic nk:layout-push-dynamic layout-push-static nk:layout-push-static layout-push-variable nk:layout-push-variable
+Builtin layout-ratio-from-pixel nk:layout-ratio-from-pixel layout-reset-row-height nk:layout-reset-row-height
+Builtin layout-row nk:layout-row layout-row-begin nk:layout-row-begin layout-row-dynamic nk:layout-row-dynamic
+Builtin layout-row-end nk:layout-row-end layout-row-height nk:layout-row-height layout-row-push nk:layout-row-push
+Builtin layout-row-static nk:layout-row-static layout-row-template-begin nk:layout-row-template-begin
+Builtin layout-row-template-end nk:layout-row-template-end layout-space-begin nk:layout-space-begin
+Builtin layout-space-end nk:layout-space-end layout-space-push nk:layout-space-push layout-widget-bounds nk:layout-widget-bounds
+Builtin list-begin nk:list-begin list-end nk:list-end list-new nk:list-new list-range nk:list-range
+Builtin m! nk:m! m@ nk:m@ make-style nk:make-style max-vertex-element nk:max-vertex-element measure nk:measure
+Builtin measure-font nk:measure-font menu-begin nk:menu-begin menu-close nk:menu-close menu-end nk:menu-end
+Builtin menu-item-image nk:menu-item-image menu-item-label nk:menu-item-label menu-item-symbol nk:menu-item-symbol
+Builtin menubar-begin nk:menubar-begin menubar-end nk:menubar-end mouse-pos nk:mouse-pos msgdlg nk:msgdlg
+Builtin option nk:option plot nk:plot plot-fn nk:plot-fn pop-font nk:pop-font popup-begin nk:popup-begin
+Builtin popup-close nk:popup-close popup-end nk:popup-end popup-scroll-ofs nk:popup-scroll-ofs popup-scroll-ofs! nk:popup-scroll-ofs!
+Builtin progress nk:progress prop-int nk:prop-int pt>local nk:pt>local pt>screen nk:pt>screen pts>rect nk:pts>rect
+Builtin push-font nk:push-font rect-center nk:rect-center rect-intersect nk:rect-intersect rect-ofs nk:rect-ofs
+Builtin rect-pad nk:rect-pad rect-shrink nk:rect-shrink rect-union nk:rect-union rect/high nk:rect/high
+Builtin rect/wide nk:rect/wide rect>center nk:rect>center rect>local nk:rect>local rect>pos nk:rect>pos
+Builtin rect>pts nk:rect>pts rect>screen nk:rect>screen rect>size nk:rect>size released? nk:released?
+Builtin render nk:render restore nk:restore rotate nk:rotate save nk:save scale nk:scale scancode? nk:scancode?
+Builtin screen-saver nk:screen-saver screen-size nk:screen-size screen-win-close nk:screen-win-close
+Builtin selectable nk:selectable set nk:set set-font nk:set-font set-num-vertices nk:set-num-vertices
+Builtin setpos nk:setpos setwin nk:setwin slider nk:slider slider-int nk:slider-int space nk:space
+Builtin spacing nk:spacing stroke-arc nk:stroke-arc stroke-circle nk:stroke-circle stroke-curve nk:stroke-curve
+Builtin stroke-line nk:stroke-line stroke-polygon nk:stroke-polygon stroke-polyline nk:stroke-polyline
+Builtin stroke-rect nk:stroke-rect stroke-tri nk:stroke-tri style-from-table nk:style-from-table sw-gl nk:sw-gl
+Builtin text? nk:text? tooltip nk:tooltip translate nk:translate tree-pop nk:tree-pop tree-state-push nk:tree-state-push
+Builtin use-style nk:use-style vsync nk:vsync widget nk:widget widget-bounds nk:widget-bounds widget-fitting nk:widget-fitting
+Builtin widget-high nk:widget-high widget-hovered? nk:widget-hovered? widget-mouse-click-down? nk:widget-mouse-click-down?
+Builtin widget-mouse-clicked? nk:widget-mouse-clicked? widget-pos nk:widget-pos widget-size nk:widget-size
+Builtin widget-wide nk:widget-wide win nk:win win-bounds nk:win-bounds win-bounds! nk:win-bounds! win-close nk:win-close
+Builtin win-closed? nk:win-closed? win-collapse nk:win-collapse win-collapsed? nk:win-collapsed? win-content-bounds nk:win-content-bounds
+Builtin win-focus nk:win-focus win-focused? nk:win-focused? win-hidden? nk:win-hidden? win-high nk:win-high
+Builtin win-hovered? nk:win-hovered? win-pos nk:win-pos win-scroll-ofs nk:win-scroll-ofs win-scroll-ofs! nk:win-scroll-ofs!
+Builtin win-show nk:win-show win-size nk:win-size win-wide nk:win-wide win? nk:win? MAX ns:MAX ! o:!
+Builtin + o:+ +? o:+? ??? o:??? @ o:@ class o:class exec o:exec isa o:isa method o:method mutate o:mutate
+Builtin new o:new super o:super devname os:devname env os:env lang os:lang mem-arenas os:mem-arenas
+Builtin notify os:notify region os:region cast ptr:cast len ptr:len null? ptr:null? pack ptr:pack unpack ptr:unpack
+Builtin unpack_orig ptr:unpack_orig publish pubsub:publish qsize pubsub:qsize subscribe pubsub:subscribe
+Builtin + q:+ clear q:clear len q:len new q:new notify q:notify overwrite q:overwrite peek q:peek pick q:pick
+Builtin pop q:pop push q:push remove q:remove shift q:shift size q:size slide q:slide throwing q:throwing
+Builtin wait q:wait ++match r:++match +/ r:+/ +match r:+match / r:/ @ r:@ len r:len match r:match new r:new
+Builtin rx r:rx str r:str * rat:* + rat:+ - rat:- / rat:/ >n rat:>n >s rat:>s new rat:new proper rat:proper
+Builtin ! s:! * s:* + s:+ - s:- / s:/ /scripts s:/scripts <+ s:<+ = s:= =ic s:=ic >base64 s:>base64
+Builtin >ucs2 s:>ucs2 @ s:@ append s:append base64> s:base64> clear s:clear cmp s:cmp cmpi s:cmpi compress s:compress
+Builtin days! s:days! dist s:dist each s:each each! s:each! eachline s:eachline escape s:escape expand s:expand
+Builtin fill s:fill fmt s:fmt fold s:fold gershayim s:gershayim globmatch s:globmatch hexupr s:hexupr
+Builtin insert s:insert intl s:intl intl! s:intl! lang s:lang lc s:lc lc? s:lc? len s:len lsub s:lsub
+Builtin ltrim s:ltrim map s:map months! s:months! new s:new norm s:norm reduce s:reduce repinsert s:repinsert
+Builtin replace s:replace replace! s:replace! rev s:rev rsearch s:rsearch rsub s:rsub rtrim s:rtrim
+Builtin script? s:script? search s:search size s:size slice s:slice soundex s:soundex strfmap s:strfmap
+Builtin strfmt s:strfmt text-wrap s:text-wrap trim s:trim tsub s:tsub uc s:uc uc? s:uc? ucs2> s:ucs2>
+Builtin utf8? s:utf8? zt s:zt close sio:close enum sio:enum open sio:open opts! sio:opts! opts@ sio:opts@
+Builtin read sio:read write sio:write @ slv:@ auto slv:auto build slv:build constraint slv:constraint
+Builtin dump slv:dump edit slv:edit named-variable slv:named-variable new slv:new relation slv:relation
+Builtin reset slv:reset suggest slv:suggest term slv:term update slv:update v[] slv:v[] variable slv:variable
+Builtin v{} slv:v{} new smtp:new send smtp:send apply-filter snd:apply-filter devices? snd:devices?
+Builtin end-record snd:end-record filter snd:filter formats? snd:formats? freq snd:freq gain snd:gain
+Builtin gain? snd:gain? init snd:init len snd:len loop snd:loop loop? snd:loop? mix snd:mix new snd:new
+Builtin pause snd:pause play snd:play played snd:played rate snd:rate ready? snd:ready? record snd:record
+Builtin resume snd:resume seek snd:seek stop snd:stop stopall snd:stopall volume snd:volume volume? snd:volume?
+Builtin + st:+ . st:. clear st:clear len st:len ndrop st:ndrop new st:new op! st:op! peek st:peek pick st:pick
+Builtin pop st:pop push st:push roll st:roll shift st:shift size st:size slide st:slide swap st:swap
+Builtin throwing st:throwing >buf struct:>buf arr> struct:arr> buf struct:buf buf> struct:buf> byte struct:byte
+Builtin double struct:double field! struct:field! field@ struct:field@ float struct:float ignore struct:ignore
+Builtin int struct:int long struct:long struct; struct:struct; word struct:word ! t:! @ t:@ by-name t:by-name
+Builtin cor t:cor cor-drop t:cor-drop curtask t:curtask def-queue t:def-queue def-stack t:def-stack
+Builtin done? t:done? err! t:err! err? t:err? errno? t:errno? getq t:getq handler t:handler handler@ t:handler@
+Builtin kill t:kill list t:list main t:main max-exceptions t:max-exceptions name! t:name! name@ t:name@
+Builtin notify t:notify parent t:parent pop t:pop priority t:priority push t:push q-notify t:q-notify
+Builtin q-wait t:q-wait qlen t:qlen result t:result set-affinity t:set-affinity setq t:setq start t:start
+Builtin task t:task task-n t:task-n task-stop t:task-stop wait t:wait yield t:yield yield! t:yield!
+Builtin add tree:add binary tree:binary bk tree:bk btree tree:btree cmp! tree:cmp! data tree:data del tree:del
+Builtin find tree:find iter tree:iter next tree:next nodes tree:nodes parent tree:parent parse tree:parse
+Builtin prev tree:prev root tree:root search tree:search trie tree:trie ! w:! (is) w:(is) @ w:@ alias: w:alias:
+Builtin cb w:cb deprecate w:deprecate dlcall w:dlcall dlopen w:dlopen dlsym w:dlsym exec w:exec exec? w:exec?
+Builtin ffifail w:ffifail find w:find forget w:forget is w:is name w:name undo w:undo >s xml:>s >txt xml:>txt
+Builtin md-init xml:md-init md-parse xml:md-parse parse xml:parse parse-html xml:parse-html parse-stream xml:parse-stream
+Builtin getmsg[] zmq:getmsg[] sendmsg[] zmq:sendmsg[]
+
+" numbers
+syn keyword eighthMath decimal hex base@ base!
+syn match eighthInteger '\<-\=[0-9.]*[0-9.]\+\>'
+
+" recognize hex and binary numbers, the '$' and '%' notation is for eighth
+syn match eighthInteger '\<\$\x*\x\+\>' " *1* --- dont't mess
+syn match eighthInteger '\<\x*\d\x*\>' " *2* --- this order!
+syn match eighthInteger '\<%[0-1]*[0-1]\+\>'
+syn match eighthInteger "\<'.\>"
+
+" Strings
+syn region eighthString start=+\.\?\"+ skip=+"+ end=+$+
+syn keyword jsonNull null
+syn keyword jsonBool /\(true\|false\)/
+syn region eighthString start=/\<"/ end=/"\>/
+syn match jsonObjEntry /"\"[^"]\+\"\ze\s*:/
+
+" Include files
+syn region eighthComment start="\zs\\" end="$" contains=eighthTodo
+
+" Define the default highlighting.
+if !exists("did_eighth_syntax_inits")
+ let did_eighth_syntax_inits=1
+
+ " The default methods for highlighting. Can be overriden later.
+ hi def link eighthTodo Todo
+ hi def link eighthOperators Operator
+ hi def link eighthMath Number
+ hi def link eighthInteger Number
+ hi def link eighthStack Special
+ hi def link eighthFStack Special
+ hi def link eighthSP Special
+ hi def link eighthColonDef Define
+ hi def link eighthColonName Operator
+ hi def link eighthEndOfColonDef Define
+ hi def link eighthDefine Define
+ hi def link eighthDebug Debug
+ hi def link eighthCharOps Character
+ hi def link eighthConversion String
+ hi def link eighthForth Statement
+ hi def link eighthVocs Statement
+ hi def link eighthString String
+ hi def link eighthComment Comment
+ hi def link eighthClassDef Define
+ hi def link eighthEndOfClassDef Define
+ hi def link eighthObjectDef Define
+ hi def link eighthEndOfObjectDef Define
+ hi def link eighthInclude Include
+ hi def link eighthBuiltin Define
+ hi def link eighthClasses Define
+ hi def link eighthClassWord Keyword
+ hi def link jsonObject Delimiter
+ hi def link jsonObjEntry Label
+ hi def link jsonArray Special
+ hi def link jsonNull Function
+ hi def link jsonBool Boolean
+endif
+
+let b:current_syntax = "8th"
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ft=vim:ts=8:sw=4:nocindent:smartindent:
diff --git a/runtime/syntax/README.txt b/runtime/syntax/README.txt
new file mode 100644
index 0000000..d6a86e5
--- /dev/null
+++ b/runtime/syntax/README.txt
@@ -0,0 +1,41 @@
+This directory contains Vim scripts for syntax highlighting.
+
+These scripts are not for a language, but are used by Vim itself:
+
+syntax.vim Used for the ":syntax on" command. Uses synload.vim.
+
+manual.vim Used for the ":syntax manual" command. Uses synload.vim.
+
+synload.vim Contains autocommands to load a language file when a certain
+ file name (extension) is used. And sets up the Syntax menu
+ for the GUI.
+
+nosyntax.vim Used for the ":syntax off" command. Undo the loading of
+ synload.vim.
+
+The "shared" directory contains generated files and what is used by more than
+one syntax.
+
+
+A few special files:
+
+2html.vim Converts any highlighted file to HTML (GUI only).
+colortest.vim Check for color names and actual color on screen.
+hitest.vim View the current highlight settings.
+whitespace.vim View Tabs and Spaces.
+
+
+If you want to write a syntax file, read the docs at ":help usr_44.txt".
+
+If you make a new syntax file which would be useful for others, please send it
+to Bram@vim.org. Include instructions for detecting the file type for this
+language, by file name extension or by checking a few lines in the file.
+And please write the file in a portable way, see ":help 44.12".
+
+If you have remarks about an existing file, send them to the maintainer of
+that file. Only when you get no response send a message to Bram@vim.org.
+
+If you are the maintainer of a syntax file and make improvements, send the new
+version to Bram@vim.org.
+
+For further info see ":help syntax" in Vim.
diff --git a/runtime/syntax/a2ps.vim b/runtime/syntax/a2ps.vim
new file mode 100644
index 0000000..afe3af1
--- /dev/null
+++ b/runtime/syntax/a2ps.vim
@@ -0,0 +1,71 @@
+" Vim syntax file
+" Language: a2ps(1) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword a2psPreProc Include
+ \ nextgroup=a2psKeywordColon
+
+syn keyword a2psMacro UserOption
+ \ nextgroup=a2psKeywordColon
+
+syn keyword a2psKeyword LibraryPath AppendLibraryPath PrependLibraryPath
+ \ Options Medium Printer UnknownPrinter
+ \ DefaultPrinter OutputFirstLine
+ \ PageLabelFormat Delegation FileCommand
+ \ nextgroup=a2psKeywordColon
+
+syn match a2psKeywordColon contained display ':'
+
+syn keyword a2psKeyword Variable nextgroup=a2psVariableColon
+
+syn match a2psVariableColon contained display ':'
+ \ nextgroup=a2psVariable skipwhite
+
+syn match a2psVariable contained display '[^ \t:(){}]\+'
+ \ contains=a2psVarPrefix
+
+syn match a2psVarPrefix contained display
+ \ '\<\%(del\|pro\|ps\|pl\|toc\|user\|\)\ze\.'
+
+syn match a2psLineCont display '\\$'
+
+syn match a2psSubst display '$\%(-\=.\=\d\+\)\=\h\d\='
+syn match a2psSubst display '#[?!]\=\w\d\='
+syn match a2psSubst display '#{[^}]\+}'
+
+syn region a2psString display oneline start=+'+ end=+'+
+ \ contains=a2psSubst
+
+syn region a2psString display oneline start=+"+ end=+"+
+ \ contains=a2psSubst
+
+syn keyword a2psTodo contained TODO FIXME XXX NOTE
+
+syn region a2psComment display oneline start='^\s*#' end='$'
+ \ contains=a2psTodo,@Spell
+
+hi def link a2psTodo Todo
+hi def link a2psComment Comment
+hi def link a2psPreProc PreProc
+hi def link a2psMacro Macro
+hi def link a2psKeyword Keyword
+hi def link a2psKeywordColon Delimiter
+hi def link a2psVariableColon Delimiter
+hi def link a2psVariable Identifier
+hi def link a2psVarPrefix Type
+hi def link a2psLineCont Special
+hi def link a2psSubst PreProc
+hi def link a2psString String
+
+let b:current_syntax = "a2ps"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/a65.vim b/runtime/syntax/a65.vim
new file mode 100644
index 0000000..b232e82
--- /dev/null
+++ b/runtime/syntax/a65.vim
@@ -0,0 +1,153 @@
+" Vim syntax file
+" Language: xa 6502 cross assembler
+" Maintainer: Clemens Kirchgatterer <clemens@1541.org>
+" Last Change: 2016 Aug 31
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" Opcodes
+syn match a65Opcode "\<PHP\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<PLA\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<PLX\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<PLY\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<SEC\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<CLD\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<SED\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<CLI\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<BVC\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<BVS\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<BCS\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<BCC\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<DEY\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<DEC\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<CMP\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<CPX\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<BIT\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<ROL\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<ROR\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<ASL\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<TXA\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<TYA\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<TSX\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<TXS\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<LDA\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<LDX\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<LDY\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<STA\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<PLP\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<BRK\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<RTI\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<NOP\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<SEI\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<CLV\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<PHA\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<PHX\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<BRA\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<JMP\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<JSR\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<RTS\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<CPY\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<BNE\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<BEQ\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<BMI\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<LSR\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<INX\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<INY\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<INC\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<ADC\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<SBC\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<AND\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<ORA\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<STX\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<STY\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<STZ\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<EOR\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<DEX\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<BPL\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<CLC\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<PHY\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<TRB\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<BBR\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<BBS\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<RMB\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<SMB\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<TAY\($\|\s\)" nextgroup=a65Address
+syn match a65Opcode "\<TAX\($\|\s\)" nextgroup=a65Address
+
+" Addresses
+syn match a65Address "\s*!\=$[0-9A-F]\{2}\($\|\s\)"
+syn match a65Address "\s*!\=$[0-9A-F]\{4}\($\|\s\)"
+syn match a65Address "\s*!\=$[0-9A-F]\{2},X\($\|\s\)"
+syn match a65Address "\s*!\=$[0-9A-F]\{4},X\($\|\s\)"
+syn match a65Address "\s*!\=$[0-9A-F]\{2},Y\($\|\s\)"
+syn match a65Address "\s*!\=$[0-9A-F]\{4},Y\($\|\s\)"
+syn match a65Address "\s*($[0-9A-F]\{2})\($\|\s\)"
+syn match a65Address "\s*($[0-9A-F]\{4})\($\|\s\)"
+syn match a65Address "\s*($[0-9A-F]\{2},X)\($\|\s\)"
+syn match a65Address "\s*($[0-9A-F]\{2}),Y\($\|\s\)"
+
+" Numbers
+syn match a65Number "#\=[0-9]*\>"
+syn match a65Number "#\=$[0-9A-F]*\>"
+syn match a65Number "#\=&[0-7]*\>"
+syn match a65Number "#\=%[01]*\>"
+
+syn case match
+
+" Types
+syn match a65Type "\(^\|\s\)\.byt\($\|\s\)"
+syn match a65Type "\(^\|\s\)\.word\($\|\s\)"
+syn match a65Type "\(^\|\s\)\.asc\($\|\s\)"
+syn match a65Type "\(^\|\s\)\.dsb\($\|\s\)"
+syn match a65Type "\(^\|\s\)\.fopt\($\|\s\)"
+syn match a65Type "\(^\|\s\)\.text\($\|\s\)"
+syn match a65Type "\(^\|\s\)\.data\($\|\s\)"
+syn match a65Type "\(^\|\s\)\.bss\($\|\s\)"
+syn match a65Type "\(^\|\s\)\.zero\($\|\s\)"
+syn match a65Type "\(^\|\s\)\.align\($\|\s\)"
+
+" Blocks
+syn match a65Section "\(^\|\s\)\.(\($\|\s\)"
+syn match a65Section "\(^\|\s\)\.)\($\|\s\)"
+
+" Strings
+syn match a65String "\".*\""
+
+" Programm Counter
+syn region a65PC start="\*=" end="\>" keepend
+
+" HI/LO Byte
+syn region a65HiLo start="#[<>]" end="$\|\s" contains=a65Comment keepend
+
+" Comments
+syn keyword a65Todo TODO XXX FIXME BUG contained
+syn match a65Comment ";.*"hs=s+1 contains=a65Todo
+syn region a65Comment start="/\*" end="\*/" contains=a65Todo,a65Comment
+
+" Preprocessor
+syn region a65PreProc start="^#" end="$" contains=a65Comment,a65Continue
+syn match a65End excludenl /end$/ contained
+syn match a65Continue "\\$" contained
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link a65Section Special
+hi def link a65Address Special
+hi def link a65Comment Comment
+hi def link a65PreProc PreProc
+hi def link a65Number Number
+hi def link a65String String
+hi def link a65Type Statement
+hi def link a65Opcode Type
+hi def link a65PC Error
+hi def link a65Todo Todo
+hi def link a65HiLo Number
+
+
+let b:current_syntax = "a65"
diff --git a/runtime/syntax/aap.vim b/runtime/syntax/aap.vim
new file mode 100644
index 0000000..8399a4d
--- /dev/null
+++ b/runtime/syntax/aap.vim
@@ -0,0 +1,158 @@
+" Vim syntax file
+" Language: A-A-P recipe
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last Change: 2004 Jun 13
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn include @aapPythonScript syntax/python.vim
+
+syn match aapVariable /$[-+?*="'\\!]*[a-zA-Z0-9_.]*/
+syn match aapVariable /$[-+?*="'\\!]*([a-zA-Z0-9_.]*)/
+syn keyword aapTodo contained TODO Todo
+syn match aapString +'[^']\{-}'+
+syn match aapString +"[^"]\{-}"+
+
+syn match aapCommand '^\s*:action\>'
+syn match aapCommand '^\s*:add\>'
+syn match aapCommand '^\s*:addall\>'
+syn match aapCommand '^\s*:asroot\>'
+syn match aapCommand '^\s*:assertpkg\>'
+syn match aapCommand '^\s*:attr\>'
+syn match aapCommand '^\s*:attribute\>'
+syn match aapCommand '^\s*:autodepend\>'
+syn match aapCommand '^\s*:buildcheck\>'
+syn match aapCommand '^\s*:cd\>'
+syn match aapCommand '^\s*:chdir\>'
+syn match aapCommand '^\s*:checkin\>'
+syn match aapCommand '^\s*:checkout\>'
+syn match aapCommand '^\s*:child\>'
+syn match aapCommand '^\s*:chmod\>'
+syn match aapCommand '^\s*:commit\>'
+syn match aapCommand '^\s*:commitall\>'
+syn match aapCommand '^\s*:conf\>'
+syn match aapCommand '^\s*:copy\>'
+syn match aapCommand '^\s*:del\>'
+syn match aapCommand '^\s*:deldir\>'
+syn match aapCommand '^\s*:delete\>'
+syn match aapCommand '^\s*:delrule\>'
+syn match aapCommand '^\s*:dll\>'
+syn match aapCommand '^\s*:do\>'
+syn match aapCommand '^\s*:error\>'
+syn match aapCommand '^\s*:execute\>'
+syn match aapCommand '^\s*:exit\>'
+syn match aapCommand '^\s*:export\>'
+syn match aapCommand '^\s*:fetch\>'
+syn match aapCommand '^\s*:fetchall\>'
+syn match aapCommand '^\s*:filetype\>'
+syn match aapCommand '^\s*:finish\>'
+syn match aapCommand '^\s*:global\>'
+syn match aapCommand '^\s*:import\>'
+syn match aapCommand '^\s*:include\>'
+syn match aapCommand '^\s*:installpkg\>'
+syn match aapCommand '^\s*:lib\>'
+syn match aapCommand '^\s*:local\>'
+syn match aapCommand '^\s*:log\>'
+syn match aapCommand '^\s*:ltlib\>'
+syn match aapCommand '^\s*:mkdir\>'
+syn match aapCommand '^\s*:mkdownload\>'
+syn match aapCommand '^\s*:move\>'
+syn match aapCommand '^\s*:pass\>'
+syn match aapCommand '^\s*:popdir\>'
+syn match aapCommand '^\s*:produce\>'
+syn match aapCommand '^\s*:program\>'
+syn match aapCommand '^\s*:progsearch\>'
+syn match aapCommand '^\s*:publish\>'
+syn match aapCommand '^\s*:publishall\>'
+syn match aapCommand '^\s*:pushdir\>'
+syn match aapCommand '^\s*:quit\>'
+syn match aapCommand '^\s*:recipe\>'
+syn match aapCommand '^\s*:refresh\>'
+syn match aapCommand '^\s*:remove\>'
+syn match aapCommand '^\s*:removeall\>'
+syn match aapCommand '^\s*:require\>'
+syn match aapCommand '^\s*:revise\>'
+syn match aapCommand '^\s*:reviseall\>'
+syn match aapCommand '^\s*:route\>'
+syn match aapCommand '^\s*:rule\>'
+syn match aapCommand '^\s*:start\>'
+syn match aapCommand '^\s*:symlink\>'
+syn match aapCommand '^\s*:sys\>'
+syn match aapCommand '^\s*:sysdepend\>'
+syn match aapCommand '^\s*:syspath\>'
+syn match aapCommand '^\s*:system\>'
+syn match aapCommand '^\s*:tag\>'
+syn match aapCommand '^\s*:tagall\>'
+syn match aapCommand '^\s*:toolsearch\>'
+syn match aapCommand '^\s*:totype\>'
+syn match aapCommand '^\s*:touch\>'
+syn match aapCommand '^\s*:tree\>'
+syn match aapCommand '^\s*:unlock\>'
+syn match aapCommand '^\s*:update\>'
+syn match aapCommand '^\s*:usetool\>'
+syn match aapCommand '^\s*:variant\>'
+syn match aapCommand '^\s*:verscont\>'
+
+syn match aapCommand '^\s*:print\>' nextgroup=aapPipeEnd
+syn match aapPipeCmd '\s*:print\>' nextgroup=aapPipeEnd contained
+syn match aapCommand '^\s*:cat\>' nextgroup=aapPipeEnd
+syn match aapPipeCmd '\s*:cat\>' nextgroup=aapPipeEnd contained
+syn match aapCommand '^\s*:syseval\>' nextgroup=aapPipeEnd
+syn match aapPipeCmd '\s*:syseval\>' nextgroup=aapPipeEnd contained
+syn match aapPipeCmd '\s*:assign\>' contained
+syn match aapCommand '^\s*:eval\>' nextgroup=aapPipeEnd
+syn match aapPipeCmd '\s*:eval\>' nextgroup=aapPipeEndPy contained
+syn match aapPipeCmd '\s*:tee\>' nextgroup=aapPipeEnd contained
+syn match aapPipeCmd '\s*:log\>' nextgroup=aapPipeEnd contained
+syn match aapPipeEnd '[^|]*|' nextgroup=aapPipeCmd contained skipnl
+syn match aapPipeEndPy '[^|]*|' nextgroup=aapPipeCmd contained skipnl contains=@aapPythonScript
+syn match aapPipeStart '^\s*|' nextgroup=aapPipeCmd
+
+"
+" A Python line starts with @. Can be continued with a trailing backslash.
+syn region aapPythonRegion start="\s*@" skip='\\$' end=+$+ contains=@aapPythonScript keepend
+"
+" A Python block starts with ":python" and continues so long as the indent is
+" bigger.
+syn region aapPythonRegion matchgroup=aapCommand start="\z(\s*\):python" skip='\n\z1\s\|\n\s*\n' end=+$+ contains=@aapPythonScript
+
+" A Python expression is enclosed in backticks.
+syn region aapPythonRegion start="`" skip="``" end="`" contains=@aapPythonScript
+
+" TODO: There is something wrong with line continuation.
+syn match aapComment '#.*' contains=aapTodo
+syn match aapComment '#.*\(\\\n.*\)' contains=aapTodo
+
+syn match aapSpecial '$#'
+syn match aapSpecial '$\$'
+syn match aapSpecial '$(.)'
+
+" A heredoc assignment.
+syn region aapHeredoc start="^\s*\k\+\s*$\=+\=?\=<<\s*\z(\S*\)"hs=e+1 end="^\s*\z1\s*$"he=s-1
+
+" Syncing is needed for ":python" and "VAR << EOF". Don't use Python syncing
+syn sync clear
+syn sync fromstart
+
+" The default highlighting.
+hi def link aapTodo Todo
+hi def link aapString String
+hi def link aapComment Comment
+hi def link aapSpecial Special
+hi def link aapVariable Identifier
+hi def link aapPipeCmd aapCommand
+hi def link aapCommand Statement
+hi def link aapHeredoc Constant
+
+let b:current_syntax = "aap"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8
diff --git a/runtime/syntax/abap.vim b/runtime/syntax/abap.vim
new file mode 100644
index 0000000..e48dfc3
--- /dev/null
+++ b/runtime/syntax/abap.vim
@@ -0,0 +1,196 @@
+" Vim ABAP syntax file
+" Language: SAP - ABAP/R4
+" Maintainer: Marius Piedallu van Wyk <lailoken@gmail.com>
+" Last Change: 2021 Jan 02
+" Comment: Thanks to EPI-USE Labs for all your assistance. :)
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Always ignore case
+syn case ignore
+
+" Symbol Operators (space delimited)
+syn match abapSymbolOperator "\W+\W"
+syn match abapSymbolOperator "\W-\W"
+syn match abapSymbolOperator "\W/\W"
+syn match abapSymbolOperator "\W%\W"
+syn match abapSymbolOperator "\W=\W"
+syn match abapSymbolOperator "\W<\W"
+syn match abapSymbolOperator "\W>\W"
+syn match abapSymbolOperator "\W\*\W"
+syn match abapSymbolOperator "\W[<>]=\W"
+syn match abapSymbolOperator "\W<>\W"
+syn match abapSymbolOperator "\W\*\*\W"
+syn match abapSymbolOperator "\[\]"
+syn match abapSymbolOperator "->\*\?"
+syn match abapSymbolOperator "=>"
+syn match abapSymbolOperator "[()~:,\.&$]"
+
+" Literals
+syn region abapCharString matchgroup=abapCharString start="'" end="'" contains=abapCharStringEscape
+syn match abapCharStringEscape contained "''"
+
+syn region abapString matchgroup=abapString start="`" end="`" contains=abapStringEscape
+syn match abapStringEscape contained "``"
+
+syn match abapNumber "\-\=\<\d\+\>"
+syn region abapHex matchgroup=abapHex start="X'" end="'"
+
+setlocal iskeyword=48-57,_,A-Z,a-z,/
+
+syn match abapNamespace "\</\w\+/"
+
+" multi-word statements
+syn match abapComplexStatement "\<\(WITH\W\+\(HEADER\W\+LINE\|FRAME\|KEY\)\|WITH\)\>"
+syn match abapComplexStatement "\<NO\W\+STANDARD\W\+PAGE\W\+HEADING\>"
+syn match abapComplexStatement "\<\(EXIT\W\+FROM\W\+STEP\W\+LOOP\|EXIT\)\>"
+syn match abapComplexStatement "\<\(BEGIN\W\+OF\W\+\(BLOCK\|LINE\)\|BEGIN\W\+OF\)\>"
+syn match abapComplexStatement "\<\(END\W\+OF\W\+\(BLOCK\|LINE\)\|END\W\+OF\)\>"
+syn match abapComplexStatement "\<NO\W\+INTERVALS\>"
+syn match abapComplexStatement "\<RESPECTING\W\+BLANKS\>"
+syn match abapComplexStatement "\<SEPARATED\W\+BY\>"
+syn match abapComplexStatement "\<USING\(\W\+EDIT\W\+MASK\)\?\>"
+syn match abapComplexStatement "\<WHERE\(\W\+LINE\)\?\>"
+syn match abapComplexStatement "\<GET\W\+\(TIME\(\W\+STAMP\)\?\(\W\+FIELD\)\?\|PF-STATUS\|BADI\|BIT\|CONNECTION\|CURSOR\|REFERENCE\W\+OF\)\>"
+syn match abapComplexStatement "\<RADIOBUTTON\W\+GROUP\>"
+syn match abapComplexStatement "\<REF\W\+TO\>"
+syn match abapComplexStatement "\<\(PUBLIC\|PRIVATE\|PROTECTED\)\(\W\+SECTION\)\?\>"
+syn match abapComplexStatement "\<DELETING\W\+\(TRAILING\|LEADING\)\>"
+syn match abapComplexStatement "\<\(ALL\W\+OCCURRENCES\)\|\(\(FIRST\|LAST\)\W\+OCCURRENCE\)\>"
+syn match abapComplexStatement "\<INHERITING\W\+FROM\>"
+syn match abapComplexStatement "\<\(UP\W\+\)\?TO\>"
+
+" hyphenated-word statements
+syn match abapComplexStatement "\<LINE-COUNT\>"
+syn match abapComplexStatement "\<ADD-CORRESPONDING\>"
+syn match abapComplexStatement "\<AUTHORITY-CHECK\>"
+syn match abapComplexStatement "\<BREAK-POINT\>"
+syn match abapComplexStatement "\<CLASS-DATA\>"
+syn match abapComplexStatement "\<CLASS-METHODS\>"
+syn match abapComplexStatement "\<CLASS-METHOD\>"
+syn match abapComplexStatement "\<DIVIDE-CORRESPONDING\>"
+syn match abapComplexStatement "\<EDITOR-CALL\>"
+syn match abapComplexStatement "\<END-OF-DEFINITION\>"
+syn match abapComplexStatement "\<END-OF-PAGE\>"
+syn match abapComplexStatement "\<END-OF-SELECTION\>"
+syn match abapComplexStatement "\<FIELD-GROUPS\>"
+syn match abapComplexStatement "\<FIELD-SYMBOLS\>"
+syn match abapComplexStatement "\<FUNCTION-POOL\>"
+syn match abapComplexStatement "\<IS\W\+\(NOT\W\+\)\?\(ASSIGNED\|BOUND\|INITIAL\|SUPPLIED\)\>"
+syn match abapComplexStatement "\<MOVE-CORRESPONDING\>"
+syn match abapComplexStatement "\<MULTIPLY-CORRESPONDING\>"
+syn match abapComplexStatement "\<NEW-LINE\>"
+syn match abapComplexStatement "\<NEW-PAGE\>"
+syn match abapComplexStatement "\<NEW-SECTION\>"
+syn match abapComplexStatement "\<PRINT-CONTROL\>"
+syn match abapComplexStatement "\<RP-PROVIDE-FROM-LAST\>"
+syn match abapComplexStatement "\<SELECT-OPTIONS\>"
+syn match abapComplexStatement "\<SELECTION-SCREEN\>"
+syn match abapComplexStatement "\<START-OF-SELECTION\>"
+syn match abapComplexStatement "\<SUBTRACT-CORRESPONDING\>"
+syn match abapComplexStatement "\<SYNTAX-CHECK\>"
+syn match abapComplexStatement "\<SYNTAX-TRACE\>"
+syn match abapComplexStatement "\<TOP-OF-PAGE\>"
+syn match abapComplexStatement "\<TYPE-POOL\>"
+syn match abapComplexStatement "\<TYPE-POOLS\>"
+syn match abapComplexStatement "\<LINE-SIZE\>"
+syn match abapComplexStatement "\<LINE-COUNT\>"
+syn match abapComplexStatement "\<MESSAGE-ID\>"
+syn match abapComplexStatement "\<DISPLAY-MODE\>"
+syn match abapComplexStatement "\<READ\(-ONLY\)\?\>"
+
+" ABAP statements
+syn keyword abapStatement ADD ALIAS ALIASES ASSERT ASSIGN ASSIGNING AT
+syn keyword abapStatement BACK
+syn keyword abapStatement CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY
+syn keyword abapStatement DATA DEFINE DEFINITION DEFERRED DELETE DESCRIBE DETAIL DIVIDE DO
+syn keyword abapStatement ELSE ELSEIF ENDAT ENDCASE ENDCLASS ENDDO ENDEXEC ENDFORM ENDFUNCTION ENDIF ENDIFEND ENDINTERFACE ENDLOOP ENDMETHOD ENDMODULE ENDON ENDPROVIDE ENDSELECT ENDTRY ENDWHILE EVENT EVENTS EXEC EXIT EXPORT EXPORTING EXTRACT
+syn keyword abapStatement FETCH FIELDS FORM FORMAT FREE FROM FUNCTION
+syn keyword abapStatement GENERATE
+syn keyword abapStatement HIDE
+syn keyword abapStatement IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION
+syn keyword abapStatement LEAVE LIKE LINE LOAD LOCAL LOOP
+syn keyword abapStatement MESSAGE METHOD METHODS MODIFY MODULE MOVE MULTIPLY
+syn keyword abapStatement ON OVERLAY OPTIONAL OTHERS
+syn keyword abapStatement PACK PARAMETERS PERFORM POSITION PROGRAM PROVIDE PUT
+syn keyword abapStatement RAISE RANGES RECEIVE RECEIVING REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURNING ROLLBACK
+syn keyword abapStatement SCAN SCROLL SEARCH SELECT SET SHIFT SKIP SORT SORTED SPLIT STANDARD STATICS STEP STOP SUBMIT SUBTRACT SUM SUMMARY SUPPRESS
+syn keyword abapStatement TABLES TIMES TRANSFER TRANSLATE TRY TYPE TYPES
+syn keyword abapStatement UNASSIGN ULINE UNPACK UPDATE
+syn keyword abapStatement WHEN WHILE WINDOW WRITE
+
+" More statemets
+syn keyword abapStatement LINES
+syn keyword abapStatement INTO GROUP BY HAVING ORDER BY SINGLE
+syn keyword abapStatement APPENDING CORRESPONDING FIELDS OF TABLE
+syn keyword abapStatement LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER ROWS CONNECTING
+syn keyword abapStatement OCCURS STRUCTURE OBJECT PROPERTY
+syn keyword abapStatement CASTING APPEND RAISING VALUE COLOR
+syn keyword abapStatement CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT
+syn keyword abapStatement ID NUMBER FOR TITLE OUTPUT
+
+" Special ABAP specific tables:
+syn match abapSpecialTables "\<\(sy\|\(hrp\|p\|pa\)\d\d\d\d\|t\d\d\d.\|innnn\)-"me=e-1 contained
+syn match abapStructure "\<\w\+-[^\>]"me=e-2 contains=abapSpecialTables,abapStatement,abapComplexStatement
+syn match abapField "-\w\+"ms=s+1
+
+" Pointer
+syn match abapSpecial "<\w\+>"
+
+" Abap common constants:
+syn keyword abapSpecial TRUE FALSE NULL SPACE
+
+" Includes
+syn region abapInclude start="include" end="." contains=abapComment
+
+" Types
+syn keyword abapTypes c n i int8 p f d t x string xstring decfloat16 decfloat34
+
+" Atritmitic operators
+syn keyword abapOperator abs sign ceil floor trunc frac acos asin atan cos sin tan
+syn keyword abapOperator cosh sinh tanh exp log log10 sqrt
+
+" String operators
+syn keyword abapStatement strlen xstrlen charlen numofchar dbmaxlen
+
+syn keyword abapOperator EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN
+
+" An error? Not strictly... but cannot think of reason this is intended.
+syn match abapError "\.\."
+
+" Comments
+syn region abapComment start="^\*" end="$" contains=abapTodo
+syn match abapComment "\".*" contains=abapTodo
+syn keyword abapTodo contained TODO NOTE
+syn match abapTodo "\#EC\W\+\w\+"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link abapError Error
+hi def link abapComment Comment
+hi def link abapInclude Include
+hi def link abapStatement Statement
+hi def link abapComplexStatement Statement
+hi def link abapSpecial Special
+hi def link abapNamespace Special
+hi def link abapSpecialTables Special
+hi def link abapSymbolOperator abapOperator
+hi def link abapOperator Operator
+hi def link abapCharString String
+hi def link abapString String
+hi def link abapFloat Float
+hi def link abapTypes Type
+hi def link abapSymbol Structure
+hi def link abapStructure Structure
+hi def link abapField Variable
+hi def link abapNumber Number
+hi def link abapHex Number
+
+
+let b:current_syntax = "abap"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/abaqus.vim b/runtime/syntax/abaqus.vim
new file mode 100644
index 0000000..e6f025d
--- /dev/null
+++ b/runtime/syntax/abaqus.vim
@@ -0,0 +1,34 @@
+" Vim syntax file
+" Language: Abaqus finite element input file (www.hks.com)
+" Maintainer: Carl Osterwisch <costerwi@gmail.com>
+" Last Change: 2002 Feb 24
+" Remark: Huge improvement in folding performance--see filetype plugin
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Abaqus comment lines
+syn match abaqusComment "^\*\*.*$"
+
+" Abaqus keyword lines
+syn match abaqusKeywordLine "^\*\h.*" contains=abaqusKeyword,abaqusParameter,abaqusValue display
+syn match abaqusKeyword "^\*\h[^,]*" contained display
+syn match abaqusParameter ",[^,=]\+"lc=1 contained display
+syn match abaqusValue "=\s*[^,]*"lc=1 contained display
+
+" Illegal syntax
+syn match abaqusBadLine "^\s\+\*.*" display
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later
+hi def link abaqusComment Comment
+hi def link abaqusKeyword Statement
+hi def link abaqusParameter Identifier
+hi def link abaqusValue Constant
+hi def link abaqusBadLine Error
+
+let b:current_syntax = "abaqus"
diff --git a/runtime/syntax/abc.vim b/runtime/syntax/abc.vim
new file mode 100644
index 0000000..1a7b3bf
--- /dev/null
+++ b/runtime/syntax/abc.vim
@@ -0,0 +1,51 @@
+" Vim syntax file
+" Language: abc music notation language
+" Maintainer: James Allwright <J.R.Allwright@westminster.ac.uk>
+" URL: http://perun.hscs.wmin.ac.uk/~jra/vim/syntax/abc.vim
+" Last Change: 27th April 2001
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" tags
+syn region abcGuitarChord start=+"[A-G]+ end=+"+ contained
+syn match abcNote "z[1-9]*[0-9]*" contained
+syn match abcNote "z[1-9]*[0-9]*/[248]\=" contained
+syn match abcNote "[=_\^]\{,2}[A-G],*[1-9]*[0-9]*" contained
+syn match abcNote "[=_\^]\{,2}[A-G],*[1-9]*[0-9]*/[248]\=" contained
+syn match abcNote "[=_\^]\{,2}[a-g]'*[1-9]*[0-9]*" contained
+syn match abcNote "[=_\^]\{,2}[a-g]'*[1-9]*[0-9]*/[248]\=" contained
+syn match abcBar "|" contained
+syn match abcBar "[:|][:|]" contained
+syn match abcBar ":|2" contained
+syn match abcBar "|1" contained
+syn match abcBar "\[[12]" contained
+syn match abcTuple "([1-9]\+:\=[0-9]*:\=[0-9]*" contained
+syn match abcBroken "<\|<<\|<<<\|>\|>>\|>>>" contained
+syn match abcTie "-"
+syn match abcHeadField "^[A-EGHIK-TVWXZ]:.*$" contained
+syn match abcBodyField "^[KLMPQWVw]:.*$" contained
+syn region abcHeader start="^X:" end="^K:.*$" contained contains=abcHeadField,abcComment keepend
+syn region abcTune start="^X:" end="^ *$" contains=abcHeader,abcComment,abcBar,abcNote,abcBodyField,abcGuitarChord,abcTuple,abcBroken,abcTie
+syn match abcComment "%.*$"
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link abcComment Comment
+hi def link abcHeadField Type
+hi def link abcBodyField Special
+hi def link abcBar Statement
+hi def link abcTuple Statement
+hi def link abcBroken Statement
+hi def link abcTie Statement
+hi def link abcGuitarChord Identifier
+hi def link abcNote Constant
+
+
+let b:current_syntax = "abc"
+
+" vim: ts=4
diff --git a/runtime/syntax/abel.vim b/runtime/syntax/abel.vim
new file mode 100644
index 0000000..dbed541
--- /dev/null
+++ b/runtime/syntax/abel.vim
@@ -0,0 +1,161 @@
+" Vim syntax file
+" Language: ABEL
+" Maintainer: John Cook <johncook3@gmail.com>
+" Last Change: 2011 Dec 27
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" this language is oblivious to case
+syn case ignore
+
+" A bunch of keywords
+syn keyword abelHeader module title device options
+syn keyword abelSection declarations equations test_vectors end
+syn keyword abelDeclaration state truth_table state_diagram property
+syn keyword abelType pin node attribute constant macro library
+
+syn keyword abelTypeId com reg neg pos buffer dc reg_d reg_t contained
+syn keyword abelTypeId reg_sr reg_jk reg_g retain xor invert contained
+
+syn keyword abelStatement when then else if with endwith case endcase
+syn keyword abelStatement fuses expr trace
+
+" option to omit obsolete statements
+if exists("abel_obsolete_ok")
+ syn keyword abelStatement enable flag in
+else
+ syn keyword abelError enable flag in
+endif
+
+" directives
+syn match abelDirective "@alternate"
+syn match abelDirective "@standard"
+syn match abelDirective "@const"
+syn match abelDirective "@dcset"
+syn match abelDirective "@include"
+syn match abelDirective "@page"
+syn match abelDirective "@radix"
+syn match abelDirective "@repeat"
+syn match abelDirective "@irp"
+syn match abelDirective "@expr"
+syn match abelDirective "@if"
+syn match abelDirective "@ifb"
+syn match abelDirective "@ifnb"
+syn match abelDirective "@ifdef"
+syn match abelDirective "@ifndef"
+syn match abelDirective "@ifiden"
+syn match abelDirective "@ifniden"
+
+syn keyword abelTodo contained TODO XXX FIXME
+
+" wrap up type identifiers to differentiate them from normal strings
+syn region abelSpecifier start='istype' end=';' contains=abelTypeIdChar,abelTypeId,abelTypeIdEnd keepend
+syn match abelTypeIdChar "[,']" contained
+syn match abelTypeIdEnd ";" contained
+
+" string constants and special characters within them
+syn match abelSpecial contained "\\['\\]"
+syn region abelString start=+'+ skip=+\\"+ end=+'+ contains=abelSpecial
+
+" valid integer number formats (decimal, binary, octal, hex)
+syn match abelNumber "\<[-+]\=[0-9]\+\>"
+syn match abelNumber "\^d[0-9]\+\>"
+syn match abelNumber "\^b[01]\+\>"
+syn match abelNumber "\^o[0-7]\+\>"
+syn match abelNumber "\^h[0-9a-f]\+\>"
+
+" special characters
+" (define these after abelOperator so ?= overrides ?)
+syn match abelSpecialChar "[\[\](){},;:?]"
+
+" operators
+syn match abelLogicalOperator "[!#&$]"
+syn match abelRangeOperator "\.\."
+syn match abelAlternateOperator "[/*+]"
+syn match abelAlternateOperator ":[+*]:"
+syn match abelArithmeticOperator "[-%]"
+syn match abelArithmeticOperator "<<"
+syn match abelArithmeticOperator ">>"
+syn match abelRelationalOperator "[<>!=]="
+syn match abelRelationalOperator "[<>]"
+syn match abelAssignmentOperator "[:?]\=="
+syn match abelAssignmentOperator "?:="
+syn match abelTruthTableOperator "->"
+
+" signal extensions
+syn match abelExtension "\.aclr\>"
+syn match abelExtension "\.aset\>"
+syn match abelExtension "\.clk\>"
+syn match abelExtension "\.clr\>"
+syn match abelExtension "\.com\>"
+syn match abelExtension "\.fb\>"
+syn match abelExtension "\.[co]e\>"
+syn match abelExtension "\.l[eh]\>"
+syn match abelExtension "\.fc\>"
+syn match abelExtension "\.pin\>"
+syn match abelExtension "\.set\>"
+syn match abelExtension "\.[djksrtq]\>"
+syn match abelExtension "\.pr\>"
+syn match abelExtension "\.re\>"
+syn match abelExtension "\.a[pr]\>"
+syn match abelExtension "\.s[pr]\>"
+
+" special constants
+syn match abelConstant "\.[ckudfpxz]\."
+syn match abelConstant "\.sv[2-9]\."
+
+" one-line comments
+syn region abelComment start=+"+ end=+"\|$+ contains=abelNumber,abelTodo
+" option to prevent C++ style comments
+if !exists("abel_cpp_comments_illegal")
+ syn region abelComment start=+//+ end=+$+ contains=abelNumber,abelTodo
+endif
+
+syn sync minlines=1
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default highlighting.
+hi def link abelHeader abelStatement
+hi def link abelSection abelStatement
+hi def link abelDeclaration abelStatement
+hi def link abelLogicalOperator abelOperator
+hi def link abelRangeOperator abelOperator
+hi def link abelAlternateOperator abelOperator
+hi def link abelArithmeticOperator abelOperator
+hi def link abelRelationalOperator abelOperator
+hi def link abelAssignmentOperator abelOperator
+hi def link abelTruthTableOperator abelOperator
+hi def link abelSpecifier abelStatement
+hi def link abelOperator abelStatement
+hi def link abelStatement Statement
+hi def link abelIdentifier Identifier
+hi def link abelTypeId abelType
+hi def link abelTypeIdChar abelType
+hi def link abelType Type
+hi def link abelNumber abelString
+hi def link abelString String
+hi def link abelConstant Constant
+hi def link abelComment Comment
+hi def link abelExtension abelSpecial
+hi def link abelSpecialChar abelSpecial
+hi def link abelTypeIdEnd abelSpecial
+hi def link abelSpecial Special
+hi def link abelDirective PreProc
+hi def link abelTodo Todo
+hi def link abelError Error
+
+
+let b:current_syntax = "abel"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim:ts=8
diff --git a/runtime/syntax/acedb.vim b/runtime/syntax/acedb.vim
new file mode 100644
index 0000000..2c2cd70
--- /dev/null
+++ b/runtime/syntax/acedb.vim
@@ -0,0 +1,110 @@
+" Vim syntax file
+" Language: AceDB model files
+" Maintainer: Stewart Morris (Stewart.Morris@ed.ac.uk)
+" Last change: Thu Apr 26 10:38:01 BST 2001
+" URL: http://www.ed.ac.uk/~swmorris/vim/acedb.vim
+
+" Syntax file to handle all $ACEDB/wspec/*.wrm files, primarily models.wrm
+" AceDB software is available from http://www.acedb.org
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn keyword acedbXref XREF
+syn keyword acedbModifier UNIQUE REPEAT
+
+syn case ignore
+syn keyword acedbModifier Constraints
+syn keyword acedbType DateType Int Text Float
+
+" Magic tags from: http://genome.cornell.edu/acedocs/magic/summary.html
+syn keyword acedbMagic pick_me_to_call No_cache Non_graphic Title
+syn keyword acedbMagic Flipped Centre Extent View Default_view
+syn keyword acedbMagic From_map Minimal_view Main_Marker Map Includes
+syn keyword acedbMagic Mapping_data More_data Position Ends Left Right
+syn keyword acedbMagic Multi_Position Multi_Ends With Error Relative
+syn keyword acedbMagic Min Anchor Gmap Grid_map Grid Submenus Cambridge
+syn keyword acedbMagic No_buttons Columns Colour Surround_colour Tag
+syn keyword acedbMagic Scale_unit Cursor Cursor_on Cursor_unit
+syn keyword acedbMagic Locator Magnification Projection_lines_on
+syn keyword acedbMagic Marker_points Marker_intervals Contigs
+syn keyword acedbMagic Physical_genes Two_point Multi_point Likelihood
+syn keyword acedbMagic Point_query Point_yellow Point_width
+syn keyword acedbMagic Point_pne Point_pe Point_nne Point_ne
+syn keyword acedbMagic Derived_tags DT_query DT_width DT_no_duplicates
+syn keyword acedbMagic RH_data RH_query RH_spacing RH_show_all
+syn keyword acedbMagic Names_on Width Symbol Colours Pne Pe Nne pMap
+syn keyword acedbMagic Sequence Gridded FingerPrint In_Situ Cosmid_grid
+syn keyword acedbMagic Layout Lines_at Space_at No_stagger A1_labelling
+syn keyword acedbMagic DNA Structure From Source Source_Exons
+syn keyword acedbMagic Coding CDS Transcript Assembly_tags Allele
+syn keyword acedbMagic Display Colour Frame_sensitive Strand_sensitive
+syn keyword acedbMagic Score_bounds Percent Bumpable Width Symbol
+syn keyword acedbMagic Blixem_N Address E_mail Paper Reference Title
+syn keyword acedbMagic Point_1 Point_2 Calculation Full One_recombinant
+syn keyword acedbMagic Tested Selected_trans Backcross Back_one
+syn keyword acedbMagic Dom_semi Dom_let Direct Complex_mixed Calc
+syn keyword acedbMagic Calc_upper_conf Item_1 Item_2 Results A_non_B
+syn keyword acedbMagic Score Score_by_offset Score_by_width
+syn keyword acedbMagic Right_priority Blastn Blixem Blixem_X
+syn keyword acedbMagic Journal Year Volume Page Author
+syn keyword acedbMagic Selected One_all Recs_all One_let
+syn keyword acedbMagic Sex_full Sex_one Sex_cis Dom_one Dom_selected
+syn keyword acedbMagic Calc_distance Calc_lower_conf Canon_for_cosmid
+syn keyword acedbMagic Reversed_physical Points Positive Negative
+syn keyword acedbMagic Point_error_scale Point_segregate_ordered
+syn keyword acedbMagic Point_symbol Interval_JTM Interval_RD
+syn keyword acedbMagic EMBL_feature Homol Feature
+syn keyword acedbMagic DT_tag Spacer Spacer_colour Spacer_width
+syn keyword acedbMagic RH_positive RH_negative RH_contradictory Query
+syn keyword acedbMagic Clone Y_remark PCR_remark Hybridizes_to
+syn keyword acedbMagic Row Virtual_row Mixed In_pool Subpool B_non_A
+syn keyword acedbMagic Interval_SRK Point_show_marginal Subsequence
+syn keyword acedbMagic Visible Properties Transposon
+
+syn match acedbClass "^?\w\+\|^#\w\+"
+syn match acedbComment "//.*"
+syn region acedbComment start="/\*" end="\*/"
+syn match acedbComment "^#\W.*"
+syn match acedbHelp "^\*\*\w\+$"
+syn match acedbTag "[^^]?\w\+\|[^^]#\w\+"
+syn match acedbBlock "//#.\+#$"
+syn match acedbOption "^_[DVH]\S\+"
+syn match acedbFlag "\s\+-\h\+"
+syn match acedbSubclass "^Class"
+syn match acedbSubtag "^Visible\|^Is_a_subclass_of\|^Filter\|^Hidden"
+syn match acedbNumber "\<\d\+\>"
+syn match acedbNumber "\<\d\+\.\d\+\>"
+syn match acedbHyb "\<Positive_\w\+\>\|\<Negative\w\+\>"
+syn region acedbString start=/"/ end=/"/ skip=/\\"/ oneline
+
+" Rest of syntax highlighting rules start here
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link acedbMagic Special
+hi def link acedbHyb Special
+hi def link acedbType Type
+hi def link acedbOption Type
+hi def link acedbSubclass Type
+hi def link acedbSubtag Include
+hi def link acedbFlag Include
+hi def link acedbTag Include
+hi def link acedbClass Todo
+hi def link acedbHelp Todo
+hi def link acedbXref Identifier
+hi def link acedbModifier Label
+hi def link acedbComment Comment
+hi def link acedbBlock ModeMsg
+hi def link acedbNumber Number
+hi def link acedbString String
+
+
+let b:current_syntax = "acedb"
+
+" The structure of the model.wrm file is sensitive to mixed tab and space
+" indentation and assumes tabs are 8 so...
+se ts=8
diff --git a/runtime/syntax/ada.vim b/runtime/syntax/ada.vim
new file mode 100644
index 0000000..415c952
--- /dev/null
+++ b/runtime/syntax/ada.vim
@@ -0,0 +1,368 @@
+"----------------------------------------------------------------------------
+" Description: Vim Ada syntax file
+" Language: Ada (2005)
+" $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $
+" Copyright: Copyright (C) 2006 Martin Krischik
+" Maintainer: Martin Krischik
+" David A. Wheeler <dwheeler@dwheeler.com>
+" Simon Bradley <simon.bradley@pitechnology.com>
+" Contributors: Preben Randhol.
+" $Author: krischik $
+" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
+" Version: 4.6
+" $Revision: 887 $
+" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/syntax/ada.vim $
+" http://www.dwheeler.com/vim
+" History: 24.05.2006 MK Unified Headers
+" 26.05.2006 MK ' should not be in iskeyword.
+" 16.07.2006 MK Ada-Mode as vim-ball
+" 02.10.2006 MK Better folding.
+" 15.10.2006 MK Bram's suggestion for runtime integration
+" 05.11.2006 MK Spell check for comments and strings only
+" 05.11.2006 MK Bram suggested to save on spaces
+" Help Page: help ft-ada-syntax
+"------------------------------------------------------------------------------
+" The formal spec of Ada 2005 (ARM) is the "Ada 2005 Reference Manual".
+" For more Ada 2005 info, see http://www.gnuada.org and http://www.adapower.com.
+"
+" This vim syntax file works on vim 7.0 only and makes use of most of Voim 7.0
+" advanced features.
+"------------------------------------------------------------------------------
+
+if exists("b:current_syntax") || version < 700
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+let b:current_syntax = "ada"
+
+" Section: Ada is entirely case-insensitive. {{{1
+"
+syntax case ignore
+
+" Section: Highlighting commands {{{1
+"
+" There are 72 reserved words in total in Ada2005. Some keywords are
+" used in more than one way. For example:
+" 1. "end" is a general keyword, but "end if" ends a Conditional.
+" 2. "then" is a conditional, but "and then" is an operator.
+"
+for b:Item in g:ada#Keywords
+ " Standard Exceptions (including I/O).
+ " We'll highlight the standard exceptions, similar to vim's Python mode.
+ " It's possible to redefine the standard exceptions as something else,
+ " but doing so is very bad practice, so simply highlighting them makes sense.
+ if b:Item['kind'] == "x"
+ execute "syntax keyword adaException " . b:Item['word']
+ endif
+ if b:Item['kind'] == "a"
+ execute 'syntax match adaAttribute "\V' . b:Item['word'] . '"'
+ endif
+ " We don't normally highlight types in package Standard
+ " (Integer, Character, Float, etc.). I don't think it looks good
+ " with the other type keywords, and many Ada programs define
+ " so many of their own types that it looks inconsistent.
+ " However, if you want this highlighting, turn on "ada_standard_types".
+ " For package Standard's definition, see ARM section A.1.
+ if b:Item['kind'] == "t" && exists ("g:ada_standard_types")
+ execute "syntax keyword adaBuiltinType " . b:Item['word']
+ endif
+endfor
+
+" Section: others {{{1
+"
+syntax keyword adaLabel others
+
+" Section: Operatoren {{{1
+"
+syntax keyword adaOperator abs mod not rem xor
+syntax match adaOperator "\<and\>"
+syntax match adaOperator "\<and\s\+then\>"
+syntax match adaOperator "\<or\>"
+syntax match adaOperator "\<or\s\+else\>"
+syntax match adaOperator "[-+*/<>&]"
+syntax keyword adaOperator **
+syntax match adaOperator "[/<>]="
+syntax keyword adaOperator =>
+syntax match adaOperator "\.\."
+syntax match adaOperator "="
+
+" Section: <> {{{1
+"
+" Handle the box, <>, specially:
+"
+syntax keyword adaSpecial <>
+
+" Section: rainbow color {{{1
+"
+if exists("g:ada_rainbow_color")
+ syntax match adaSpecial "[:;.,]"
+ call rainbow_parenthsis#LoadRound ()
+ call rainbow_parenthsis#Activate ()
+else
+ syntax match adaSpecial "[:;().,]"
+endif
+
+" Section: := {{{1
+"
+" We won't map "adaAssignment" by default, but we need to map ":=" to
+" something or the "=" inside it will be mislabelled as an operator.
+" Note that in Ada, assignment (:=) is not considered an operator.
+"
+syntax match adaAssignment ":="
+
+" Section: Numbers, including floating point, exponents, and alternate bases. {{{1
+"
+syntax match adaNumber "\<\d[0-9_]*\(\.\d[0-9_]*\)\=\([Ee][+-]\=\d[0-9_]*\)\=\>"
+syntax match adaNumber "\<\d\d\=#\x[0-9A-Fa-f_]*\(\.\x[0-9A-Fa-f_]*\)\=#\([Ee][+-]\=\d[0-9_]*\)\="
+
+" Section: Identify leading numeric signs {{{1
+"
+" In "A-5" the "-" is an operator, " but in "A:=-5" the "-" is a sign. This
+" handles "A3+-5" (etc.) correctly. " This assumes that if you put a
+" don't put a space after +/- when it's used " as an operator, you won't
+" put a space before it either -- which is true " in code I've seen.
+"
+syntax match adaSign "[[:space:]<>=(,|:;&*/+-][+-]\d"lc=1,hs=s+1,he=e-1,me=e-1
+
+" Section: Labels for the goto statement. {{{1
+"
+syntax region adaLabel start="<<" end=">>"
+
+" Section: Boolean Constants {{{1
+" Boolean Constants.
+syntax keyword adaBoolean true false
+
+" Section: Warn C/C++ {{{1
+"
+" Warn people who try to use C/C++ notation erroneously:
+"
+syntax match adaError "//"
+syntax match adaError "/\*"
+syntax match adaError "=="
+
+
+" Section: Space Errors {{{1
+"
+if exists("g:ada_space_errors")
+ if !exists("g:ada_no_trail_space_error")
+ syntax match adaSpaceError excludenl "\s\+$"
+ endif
+ if !exists("g:ada_no_tab_space_error")
+ syntax match adaSpaceError " \+\t"me=e-1
+ endif
+ if !exists("g:ada_all_tab_usage")
+ syntax match adaSpecial "\t"
+ endif
+endif
+
+" Section: end {{{1
+" Unless special ("end loop", "end if", etc.), "end" marks the end of a
+" begin, package, task etc. Assigning it to adaEnd.
+syntax match adaEnd /\<end\>/
+
+syntax keyword adaPreproc pragma
+
+syntax keyword adaRepeat exit for loop reverse while
+syntax match adaRepeat "\<end\s\+loop\>"
+
+syntax keyword adaStatement accept delay goto raise requeue return
+syntax keyword adaStatement terminate
+syntax match adaStatement "\<abort\>"
+
+" Section: Handle Ada's record keywords. {{{1
+"
+" 'record' usually starts a structure, but "with null record;" does not,
+" and 'end record;' ends a structure. The ordering here is critical -
+" 'record;' matches a "with null record", so make it a keyword (this can
+" match when the 'with' or 'null' is on a previous line).
+" We see the "end" in "end record" before the word record, so we match that
+" pattern as adaStructure (and it won't match the "record;" pattern).
+"
+syntax match adaStructure "\<record\>" contains=adaRecord
+syntax match adaStructure "\<end\s\+record\>" contains=adaRecord
+syntax match adaKeyword "\<record;"me=e-1
+
+" Section: type classes {{{1
+"
+syntax keyword adaStorageClass abstract access aliased array at constant delta
+syntax keyword adaStorageClass digits limited of private range tagged
+syntax keyword adaStorageClass interface synchronized
+syntax keyword adaTypedef subtype type
+
+" Section: Conditionals {{{1
+"
+" "abort" after "then" is a conditional of its own.
+"
+syntax match adaConditional "\<then\>"
+syntax match adaConditional "\<then\s\+abort\>"
+syntax match adaConditional "\<else\>"
+syntax match adaConditional "\<end\s\+if\>"
+syntax match adaConditional "\<end\s\+case\>"
+syntax match adaConditional "\<end\s\+select\>"
+syntax keyword adaConditional if case select
+syntax keyword adaConditional elsif when
+
+" Section: other keywords {{{1
+syntax match adaKeyword "\<is\>" contains=adaRecord
+syntax keyword adaKeyword all do exception in new null out
+syntax keyword adaKeyword separate until overriding
+
+" Section: begin keywords {{{1
+"
+" These keywords begin various constructs, and you _might_ want to
+" highlight them differently.
+"
+syntax keyword adaBegin begin body declare entry generic
+syntax keyword adaBegin protected renames task
+
+syntax match adaBegin "\<function\>" contains=adaFunction
+syntax match adaBegin "\<procedure\>" contains=adaProcedure
+syntax match adaBegin "\<package\>" contains=adaPackage
+
+if exists("ada_with_gnat_project_files")
+ syntax keyword adaBegin project
+endif
+
+" Section: with, use {{{1
+"
+if exists("ada_withuse_ordinary")
+ " Don't be fancy. Display "with" and "use" as ordinary keywords in all cases.
+ syntax keyword adaKeyword with use
+else
+ " Highlight "with" and "use" clauses like C's "#include" when they're used
+ " to reference other compilation units; otherwise they're ordinary keywords.
+ " If we have vim 6.0 or later, we'll use its advanced pattern-matching
+ " capabilities so that we won't match leading spaces.
+ syntax match adaKeyword "\<with\>"
+ syntax match adaKeyword "\<use\>"
+ syntax match adaBeginWith "^\s*\zs\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc
+ syntax match adaSemiWith ";\s*\zs\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc
+ syntax match adaInc "\<with\>" contained contains=NONE
+ syntax match adaInc "\<with\s\+type\>" contained contains=NONE
+ syntax match adaInc "\<use\>" contained contains=NONE
+ " Recognize "with null record" as a keyword (even the "record").
+ syntax match adaKeyword "\<with\s\+null\s\+record\>"
+ " Consider generic formal parameters of subprograms and packages as keywords.
+ syntax match adaKeyword ";\s*\zswith\s\+\(function\|procedure\|package\)\>"
+ syntax match adaKeyword "^\s*\zswith\s\+\(function\|procedure\|package\)\>"
+endif
+
+" Section: String and character constants. {{{1
+"
+syntax region adaString contains=@Spell start=+"+ skip=+""+ end=+"+
+syntax match adaCharacter "'.'"
+
+" Section: Todo (only highlighted in comments) {{{1
+"
+syntax keyword adaTodo contained TODO FIXME XXX NOTE
+
+" Section: Comments. {{{1
+"
+syntax region adaComment
+ \ oneline
+ \ contains=adaTodo,adaLineError,@Spell
+ \ start="--"
+ \ end="$"
+
+" Section: line errors {{{1
+"
+" Note: Line errors have become quite slow with Vim 7.0
+"
+if exists("g:ada_line_errors")
+ syntax match adaLineError "\(^.\{79}\)\@<=." contains=ALL containedin=ALL
+endif
+
+" Section: syntax folding {{{1
+"
+" Syntax folding is very tricky - for now I still suggest to use
+" indent folding
+"
+if exists("g:ada_folding") && g:ada_folding[0] == 's'
+ if stridx (g:ada_folding, 'p') >= 0
+ syntax region adaPackage
+ \ start="\(\<package\s\+body\>\|\<package\>\)\s*\z(\k*\)"
+ \ end="end\s\+\z1\s*;"
+ \ keepend extend transparent fold contains=ALL
+ endif
+ if stridx (g:ada_folding, 'f') >= 0
+ syntax region adaProcedure
+ \ start="\<procedure\>\s*\z(\k*\)"
+ \ end="\<end\>\s\+\z1\s*;"
+ \ keepend extend transparent fold contains=ALL
+ syntax region adaFunction
+ \ start="\<procedure\>\s*\z(\k*\)"
+ \ end="end\s\+\z1\s*;"
+ \ keepend extend transparent fold contains=ALL
+ endif
+ if stridx (g:ada_folding, 'f') >= 0
+ syntax region adaRecord
+ \ start="\<is\s\+record\>"
+ \ end="\<end\s\+record\>"
+ \ keepend extend transparent fold contains=ALL
+ endif
+endif
+
+" Section: The default methods for highlighting. Can be overridden later. {{{1
+"
+highlight def link adaCharacter Character
+highlight def link adaComment Comment
+highlight def link adaConditional Conditional
+highlight def link adaKeyword Keyword
+highlight def link adaLabel Label
+highlight def link adaNumber Number
+highlight def link adaSign Number
+highlight def link adaOperator Operator
+highlight def link adaPreproc PreProc
+highlight def link adaRepeat Repeat
+highlight def link adaSpecial Special
+highlight def link adaStatement Statement
+highlight def link adaString String
+highlight def link adaStructure Structure
+highlight def link adaTodo Todo
+highlight def link adaType Type
+highlight def link adaTypedef Typedef
+highlight def link adaStorageClass StorageClass
+highlight def link adaBoolean Boolean
+highlight def link adaException Exception
+highlight def link adaAttribute Tag
+highlight def link adaInc Include
+highlight def link adaError Error
+highlight def link adaSpaceError Error
+highlight def link adaLineError Error
+highlight def link adaBuiltinType Type
+highlight def link adaAssignment Special
+
+" Subsection: Begin, End {{{2
+"
+if exists ("ada_begin_preproc")
+ " This is the old default display:
+ highlight def link adaBegin PreProc
+ highlight def link adaEnd PreProc
+else
+ " This is the new default display:
+ highlight def link adaBegin Keyword
+ highlight def link adaEnd Keyword
+endif
+
+
+
+" Section: sync {{{1
+"
+" We don't need to look backwards to highlight correctly;
+" this speeds things up greatly.
+syntax sync minlines=1 maxlines=1
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+finish " 1}}}
+
+"------------------------------------------------------------------------------
+" Copyright (C) 2006 Martin Krischik
+"
+" Vim is Charityware - see ":help license" or uganda.txt for licence details.
+"------------------------------------------------------------------------------
+"vim: textwidth=78 nowrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab
+"vim: foldmethod=marker
diff --git a/runtime/syntax/aflex.vim b/runtime/syntax/aflex.vim
new file mode 100644
index 0000000..aa8b5f8
--- /dev/null
+++ b/runtime/syntax/aflex.vim
@@ -0,0 +1,82 @@
+
+" Vim syntax file
+" Language: AfLex (from Lex syntax file)
+" Maintainer: Mathieu Clabaut <mathieu.clabaut@free.fr>
+" LastChange: 02 May 2001
+" Original: Lex, maintained by Dr. Charles E. Campbell, Jr.
+" Comment: Replaced sourcing c.vim file by ada.vim and rename lex*
+" in aflex*
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the Ada syntax to start with
+runtime! syntax/ada.vim
+unlet b:current_syntax
+
+
+" --- AfLex stuff ---
+
+"I'd prefer to use aflex.* , but it doesn't handle forward definitions yet
+syn cluster aflexListGroup contains=aflexAbbrvBlock,aflexAbbrv,aflexAbbrv,aflexAbbrvRegExp,aflexInclude,aflexPatBlock,aflexPat,aflexBrace,aflexPatString,aflexPatTag,aflexPatTag,aflexPatComment,aflexPatCodeLine,aflexMorePat,aflexPatSep,aflexSlashQuote,aflexPatCode,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2
+syn cluster aflexListPatCodeGroup contains=aflexAbbrvBlock,aflexAbbrv,aflexAbbrv,aflexAbbrvRegExp,aflexInclude,aflexPatBlock,aflexPat,aflexBrace,aflexPatTag,aflexPatTag,aflexPatComment,aflexPatCodeLine,aflexMorePat,aflexPatSep,aflexSlashQuote,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2
+
+" Abbreviations Section
+syn region aflexAbbrvBlock start="^\([a-zA-Z_]\+\t\|%{\)" end="^%%$"me=e-2 skipnl nextgroup=aflexPatBlock contains=aflexAbbrv,aflexInclude,aflexAbbrvComment
+syn match aflexAbbrv "^\I\i*\s"me=e-1 skipwhite contained nextgroup=aflexAbbrvRegExp
+syn match aflexAbbrv "^%[sx]" contained
+syn match aflexAbbrvRegExp "\s\S.*$"lc=1 contained nextgroup=aflexAbbrv,aflexInclude
+syn region aflexInclude matchgroup=aflexSep start="^%{" end="%}" contained contains=ALLBUT,@aflexListGroup
+syn region aflexAbbrvComment start="^\s\+/\*" end="\*/"
+
+"%% : Patterns {Actions}
+syn region aflexPatBlock matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=aflexPat,aflexPatTag,aflexPatComment
+syn region aflexPat start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 contained nextgroup=aflexMorePat,aflexPatSep contains=aflexPatString,aflexSlashQuote,aflexBrace
+syn region aflexBrace start="\[" skip=+\\\\\|\\+ end="]" contained
+syn region aflexPatString matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained
+syn match aflexPatTag "^<\I\i*\(,\I\i*\)*>*" contained nextgroup=aflexPat,aflexPatTag,aflexMorePat,aflexPatSep
+syn match aflexPatTag +^<\I\i*\(,\I\i*\)*>*\(\\\\\)*\\"+ contained nextgroup=aflexPat,aflexPatTag,aflexMorePat,aflexPatSep
+syn region aflexPatComment start="^\s*/\*" end="\*/" skipnl contained contains=cTodo nextgroup=aflexPatComment,aflexPat,aflexPatString,aflexPatTag
+syn match aflexPatCodeLine ".*$" contained contains=ALLBUT,@aflexListGroup
+syn match aflexMorePat "\s*|\s*$" skipnl contained nextgroup=aflexPat,aflexPatTag,aflexPatComment
+syn match aflexPatSep "\s\+" contained nextgroup=aflexMorePat,aflexPatCode,aflexPatCodeLine
+syn match aflexSlashQuote +\(\\\\\)*\\"+ contained
+syn region aflexPatCode matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" skipnl contained contains=ALLBUT,@aflexListPatCodeGroup
+
+syn keyword aflexCFunctions BEGIN input unput woutput yyleng yylook yytext
+syn keyword aflexCFunctions ECHO output winput wunput yyless yymore yywrap
+
+" <c.vim> includes several ALLBUTs; these have to be treated so as to exclude aflex* groups
+syn cluster cParenGroup add=aflex.*
+syn cluster cDefineGroup add=aflex.*
+syn cluster cPreProcGroup add=aflex.*
+syn cluster cMultiGroup add=aflex.*
+
+" Synchronization
+syn sync clear
+syn sync minlines=300
+syn sync match aflexSyncPat grouphere aflexPatBlock "^%[a-zA-Z]"
+syn sync match aflexSyncPat groupthere aflexPatBlock "^<$"
+syn sync match aflexSyncPat groupthere aflexPatBlock "^%%$"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link aflexSlashQuote aflexPat
+hi def link aflexBrace aflexPat
+hi def link aflexAbbrvComment aflexPatComment
+
+hi def link aflexAbbrv SpecialChar
+hi def link aflexAbbrvRegExp Macro
+hi def link aflexCFunctions Function
+hi def link aflexMorePat SpecialChar
+hi def link aflexPat Function
+hi def link aflexPatComment Comment
+hi def link aflexPatString Function
+hi def link aflexPatTag Special
+hi def link aflexSep Delimiter
+
+let b:current_syntax = "aflex"
+
+" vim:ts=10
diff --git a/runtime/syntax/ahdl.vim b/runtime/syntax/ahdl.vim
new file mode 100644
index 0000000..3a40dcf
--- /dev/null
+++ b/runtime/syntax/ahdl.vim
@@ -0,0 +1,81 @@
+" Vim syn file
+" Language: Altera AHDL
+" Maintainer: John Cook <john.cook@kla-tencor.com>
+" Last Change: 2001 Apr 25
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+"this language is oblivious to case.
+syn case ignore
+
+" a bunch of keywords
+syn keyword ahdlKeyword assert begin bidir bits buried case clique
+syn keyword ahdlKeyword connected_pins constant defaults define design
+syn keyword ahdlKeyword device else elsif end for function generate
+syn keyword ahdlKeyword gnd help_id if in include input is machine
+syn keyword ahdlKeyword node of options others output parameters
+syn keyword ahdlKeyword returns states subdesign table then title to
+syn keyword ahdlKeyword tri_state_node variable vcc when with
+
+" a bunch of types
+syn keyword ahdlIdentifier carry cascade dffe dff exp global
+syn keyword ahdlIdentifier jkffe jkff latch lcell mcell memory opendrn
+syn keyword ahdlIdentifier soft srffe srff tffe tff tri wire x
+
+syn keyword ahdlMegafunction lpm_and lpm_bustri lpm_clshift lpm_constant
+syn keyword ahdlMegafunction lpm_decode lpm_inv lpm_mux lpm_or lpm_xor
+syn keyword ahdlMegafunction busmux mux
+
+syn keyword ahdlMegafunction divide lpm_abs lpm_add_sub lpm_compare
+syn keyword ahdlMegafunction lpm_counter lpm_mult
+
+syn keyword ahdlMegafunction altdpram csfifo dcfifo scfifo csdpram lpm_ff
+syn keyword ahdlMegafunction lpm_latch lpm_shiftreg lpm_ram_dq lpm_ram_io
+syn keyword ahdlMegafunction lpm_rom lpm_dff lpm_tff clklock pll ntsc
+
+syn keyword ahdlTodo contained TODO
+
+" String constants
+syn region ahdlString start=+"+ skip=+\\"+ end=+"+
+
+" valid integer number formats (decimal, binary, octal, hex)
+syn match ahdlNumber '\<\d\+\>'
+syn match ahdlNumber '\<b"\(0\|1\|x\)\+"'
+syn match ahdlNumber '\<\(o\|q\)"\o\+"'
+syn match ahdlNumber '\<\(h\|x\)"\x\+"'
+
+" operators
+syn match ahdlOperator "[!&#$+\-<>=?:\^]"
+syn keyword ahdlOperator not and nand or nor xor xnor
+syn keyword ahdlOperator mod div log2 used ceil floor
+
+" one line and multi-line comments
+" (define these after ahdlOperator so -- overrides -)
+syn match ahdlComment "--.*" contains=ahdlNumber,ahdlTodo
+syn region ahdlComment start="%" end="%" contains=ahdlNumber,ahdlTodo
+
+" other special characters
+syn match ahdlSpecialChar "[\[\]().,;]"
+
+syn sync minlines=1
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default highlighting.
+hi def link ahdlNumber ahdlString
+hi def link ahdlMegafunction ahdlIdentifier
+hi def link ahdlSpecialChar SpecialChar
+hi def link ahdlKeyword Statement
+hi def link ahdlString String
+hi def link ahdlComment Comment
+hi def link ahdlIdentifier Identifier
+hi def link ahdlOperator Operator
+hi def link ahdlTodo Todo
+
+
+let b:current_syntax = "ahdl"
+" vim:ts=8
diff --git a/runtime/syntax/aidl.vim b/runtime/syntax/aidl.vim
new file mode 100644
index 0000000..3a79433
--- /dev/null
+++ b/runtime/syntax/aidl.vim
@@ -0,0 +1,23 @@
+" Vim syntax file
+" Language: aidl (Android Interface Definition Language)
+" https://developer.android.com/guide/components/aidl
+" Maintainer: Dominique Pelle <dominique.pelle@tomtom.com>
+" LastChange: 2020/12/03
+
+" Quit when a syntax file was already loaded.
+if exists("b:current_syntax")
+ finish
+endif
+
+source <sfile>:p:h/java.vim
+
+syn keyword aidlParamDir in out inout
+syn keyword aidlKeyword const oneway parcelable
+
+" Needed for the 'in', 'out', 'inout' keywords to be highlighted.
+syn cluster javaTop add=aidlParamDir
+
+hi def link aidlParamDir StorageClass
+hi def link aidlKeyword Keyword
+
+let b:current_syntax = "aidl"
diff --git a/runtime/syntax/alsaconf.vim b/runtime/syntax/alsaconf.vim
new file mode 100644
index 0000000..143fcc0
--- /dev/null
+++ b/runtime/syntax/alsaconf.vim
@@ -0,0 +1,49 @@
+" Vim syntax file
+" Language: alsaconf(8) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword alsoconfTodo contained FIXME TODO XXX NOTE
+
+syn region alsaconfComment display oneline
+ \ start='#' end='$'
+ \ contains=alsaconfTodo,@Spell
+
+syn match alsaconfSpecialChar contained display '\\[ntvbrf]'
+syn match alsaconfSpecialChar contained display '\\\o\+'
+
+syn region alsaconfString start=+"+ skip=+\\$+ end=+"\|$+
+ \ contains=alsaconfSpecialChar
+
+syn match alsaconfSpecial contained display 'confdir:'
+
+syn region alsaconfPreProc start='<' end='>' contains=alsaconfSpecial
+
+syn match alsaconfMode display '[+?!-]'
+
+syn keyword alsaconfKeyword card default device errors files func strings
+syn keyword alsaconfKeyword subdevice type vars
+
+syn match alsaconfVariables display '@\(hooks\|func\|args\)'
+
+hi def link alsoconfTodo Todo
+hi def link alsaconfComment Comment
+hi def link alsaconfSpecialChar SpecialChar
+hi def link alsaconfString String
+hi def link alsaconfSpecial Special
+hi def link alsaconfPreProc PreProc
+hi def link alsaconfMode Special
+hi def link alsaconfKeyword Keyword
+hi def link alsaconfVariables Identifier
+
+let b:current_syntax = "alsaconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/amiga.vim b/runtime/syntax/amiga.vim
new file mode 100644
index 0000000..5a664c4
--- /dev/null
+++ b/runtime/syntax/amiga.vim
@@ -0,0 +1,88 @@
+" Vim syntax file
+" Language: AmigaDos
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Last Change: Aug 31, 2016
+" Version: 10
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_AMIGA
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" Amiga Devices
+syn match amiDev "\(par\|ser\|prt\|con\|nil\):"
+
+" Amiga aliases and paths
+syn match amiAlias "\<[a-zA-Z][a-zA-Z0-9]\+:"
+syn match amiAlias "\<[a-zA-Z][a-zA-Z0-9]\+:[a-zA-Z0-9/]*/"
+
+" strings
+syn region amiString start=+"+ end=+"+ oneline contains=@Spell
+
+" numbers
+syn match amiNumber "\<\d\+\>"
+
+" Logic flow
+syn region amiFlow matchgroup=Statement start="if" matchgroup=Statement end="endif" contains=ALL
+syn keyword amiFlow skip endskip
+syn match amiError "else\|endif"
+syn keyword amiElse contained else
+
+syn keyword amiTest contained not warn error fail eq gt ge val exists
+
+" echo exception
+syn region amiEcho matchgroup=Statement start="\<echo\>" end="$" oneline contains=amiComment
+syn region amiEcho matchgroup=Statement start="^\.[bB][rR][aA]" end="$" oneline
+syn region amiEcho matchgroup=Statement start="^\.[kK][eE][tT]" end="$" oneline
+
+" commands
+syn keyword amiKey addbuffers copy fault join pointer setdate
+syn keyword amiKey addmonitor cpu filenote keyshow printer setenv
+syn keyword amiKey alias date fixfonts lab printergfx setfont
+syn keyword amiKey ask delete fkey list printfiles setmap
+syn keyword amiKey assign dir font loadwb prompt setpatch
+syn keyword amiKey autopoint diskchange format lock protect sort
+syn keyword amiKey avail diskcopy get magtape quit stack
+syn keyword amiKey binddrivers diskdoctor getenv makedir relabel status
+syn keyword amiKey bindmonitor display graphicdump makelink remrad time
+syn keyword amiKey blanker iconedit more rename type
+syn keyword amiKey break ed icontrol mount resident unalias
+syn keyword amiKey calculator edit iconx newcli run unset
+syn keyword amiKey cd endcli ihelp newshell say unsetenv
+syn keyword amiKey changetaskpri endshell info nocapslock screenmode version
+syn keyword amiKey clock eval initprinter nofastmem search wait
+syn keyword amiKey cmd exchange input overscan serial wbpattern
+syn keyword amiKey colors execute install palette set which
+syn keyword amiKey conclip failat iprefs path setclock why
+
+" comments
+syn cluster amiCommentGroup contains=amiTodo,@Spell
+syn case ignore
+syn keyword amiTodo contained todo
+syn case match
+syn match amiComment ";.*$" contains=amiCommentGroup
+
+" sync
+syn sync lines=50
+
+" Define the default highlighting.
+if !exists("skip_amiga_syntax_inits")
+
+ hi def link amiAlias Type
+ hi def link amiComment Comment
+ hi def link amiDev Type
+ hi def link amiEcho String
+ hi def link amiElse Statement
+ hi def link amiError Error
+ hi def link amiKey Statement
+ hi def link amiNumber Number
+ hi def link amiString String
+ hi def link amiTest Special
+
+endif
+let b:current_syntax = "amiga"
+
+" vim:ts=15
diff --git a/runtime/syntax/aml.vim b/runtime/syntax/aml.vim
new file mode 100644
index 0000000..46621ed
--- /dev/null
+++ b/runtime/syntax/aml.vim
@@ -0,0 +1,144 @@
+" Vim syntax file
+" Language: AML (ARC/INFO Arc Macro Language)
+" Written By: Nikki Knuit <Nikki.Knuit@gems3.gov.bc.ca>
+" Maintainer: Todd Glover <todd.glover@gems9.gov.bc.ca>
+" Last Change: 2001 May 10
+
+" FUTURE CODING: Bold application commands after &sys, &tty
+" Only highlight aml Functions at the beginning
+" of [], in order to avoid -read highlighted,
+" or [quote] strings highlighted
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" ARC, ARCEDIT, ARCPLOT, LIBRARIAN, GRID, SCHEMAEDIT reserved words,
+" defined as keywords.
+
+syn keyword amlArcCmd contained 2button abb abb[reviations] abs ac acos acosh add addc[ogoatt] addcogoatt addf[eatureclass] addh[istory] addi addim[age] addindexatt addit[em] additem addressb[uild] addressc[reate] addresse[rrors] addressedit addressm[atch] addressp[arse] addresst[est] addro[utemeasure] addroutemeasure addte[xt] addto[stack] addw[orktable] addx[y] adj[ust] adm[inlicense] adr[ggrid] ads adsa[rc] ae af ag[gregate] ai ai[request] airequest al alia[s] alig[n] alt[erarchive] am[sarc] and annoa[lignment] annoadd annocapture annocl[ip] annoco[verage] annocurve annoe[dit] annoedit annof annofeature annofit annoitem annola[yer] annole[vel] annolevel annoline annooffset annop[osition] annoplace annos[ize] annoselectfeatur annoset annosum annosymbol annot annot[ext] annotext annotype ao ap apm[ode] app[end] arc arcad[s] arcar[rows] arcc[ogo] arcdf[ad] arcdi[me] arcdl[g] arcdx[f] arced[it] arcedit arcen[dtext] arcf[ont] arcigd[s] arcige[s] arcla[bel] arcli[nes] arcma[rkers] arcmo[ss]
+syn keyword amlArcCmd contained arcpl[ot] arcplot arcpo[int] arcr[oute] arcs arcsc[itex] arcse[ction] arcsh[ape] arcsl[f] arcsn[ap] arcsp[ot] arcte[xt] arctig[er] arctin arcto[ols] arctools arcty[pe] area areaq[uery] arm arrow arrows[ize] arrowt[ype] as asc asciig[rid] asciih[elp] asciihelp asco[nnect] asconnect asd asda[tabase] asdi[sconnect] asdisconnect asel[ect] asex[ecute] asf asin asinh asp[ect] asr[eadlocks] ast[race] at atan atan2 atanh atusage aud[ittrail] autoi[ncrement] autol[ink] axis axish[atch] axisl[abels] axisr[uler] axist[ext] bac[klocksymbol] backcoverage backenvironment backnodeangleite backsymbolitem backtextitem base[select] basi[n] bat[ch] bc be be[lls] blackout blockmaj[ority] blockmax blockmea[n] blockmed[ian] blockmin blockmino[rity] blockr[ange] blockst[d] blocksu[m] blockv[ariety] bnai bou[ndaryclean] box br[ief] bsi bti buf[fer] bug[form] bugform build builds[ta] buildv[at] calco[mp] calcomp calcu[late] cali[brateroutes] calibrateroutes can[d] cartr[ead] cartread
+syn keyword amlArcCmd contained cartw[rite] cartwrite cei[l] cel[lvalue] cen[troidlabels] cgm cgme[scape] cha[nge] checkin checkinrel checkout checkoutrel chm[od] chown chownt[ransaction] chowntran chowntransaction ci ci[rcle] cir class classp[rob] classs[ig] classsample clean clear clears[elect] clip clipg[raphextent] clipm[apextent] clo[sedatabase] cntvrt co cod[efind] cog[oinverse] cogocom cogoenv cogomenu coll[ocate] color color2b[lue] color2g[reen] color2h[ue] color2r[ed] color2s[at] color2v[al] colorchart coloredit colorh[cbs] colorhcbs colu[mns] comb[ine] comm[ands] commands con connect connectu[ser] cons[ist] conto[ur] contr[olpoints] convertd[oc] convertdoc converti[mage] convertla[yer] convertli[brary] convertr[emap] convertw[orkspace] coo[rdinate] coordinate coordinates copy copyf[eatures] copyi[nfo] copyl[ayer] copyo copyo[ut] copyout copys[tack] copyw[orkspace] copyworkspace cor corr[idor] correlation cos cosh costa[llocation] costb[acklink] costd[istance] costp[ath] cou[ntvertices]
+syn keyword amlArcCmd contained countvertices cpw cr create create2[dindex] createa[ttributes] createca[talog] createco[go] createcogo createf[eature] createind[ex] createinf[otable] createlab[els] createlay[er] createli[brary] createn[etindex] creater[emap] creates[ystables] createta[blespace] createti[n] createw[orkspace] createworkspace cs culdesac curs[or] curv[ature] curve3pt cut[fill] cutoff cw cx[or] da dar[cyflow] dat[aset] dba[seinfo] dbmsc dbmsc[ursor] dbmscursor dbmse[xecute] dbmsi[nfo] dbmss[et] de delete deletea[rrows] deletet[ic] deletew[orkspace] deleteworkspace demg[rid] deml[attice] dend[rogram] densify densifya[rc] describe describea[rchive] describel[attice] describeti[n] describetr[ans] describetrans dev df[adarc] dg dif[f] digi[tizer] digt[est] dim[earc] dir dir[ectory] directory disa[blepanzoom] disconnect disconnectu[ser] disp disp[lay] display dissolve dissolvee[vents] dissolveevents dista[nce] distr[ibutebuild] div dl[garc] do doce[ll] docu[ment] document dogroup drag
+syn keyword amlArcCmd contained draw drawenvironment draworder draws[ig] drawselect drawt[raverses] drawz[oneshape] drop2[dindex] dropa[rchive] dropfeaturec[lass] dropfeatures dropfr[omstack] dropgroup droph[istory] dropind[ex] dropinf[otable] dropit[em] dropla[yer] droplib[rary] droplin[e] dropline dropn[etindex] dropt[ablespace] dropw[orktable] ds dt[edgrid] dtrans du[plicate] duplicatearcs dw dxf dxfa[rc] dxfi[nfo] dynamicpan dynpan ebe ec ed edg[esnap] edgematch editboundaryerro edit[coverage] editdistance editf editfeature editp[lot] editplot edits[ig] editsymbol ef el[iminate] em[f] en[d] envrst envsav ep[s] eq equ[alto] er[ase] es et et[akarc] euca[llocation] eucdir[ection] eucdis[tance] eval eventa[rc] evente[nds] eventh[atch] eventi[nfo] eventlinee[ndtext] eventlines eventlinet[ext] eventlis[t] eventma[rkers] eventme[nu] eventmenu eventpoint eventpointt[ext] eventse[ction] eventso[urce] eventt[ransform] eventtransform exi[t] exp exp1[0] exp2 expa[nd] expo[rt] exten[d] external externala[ll]
+syn keyword amlArcCmd contained fd[convert] featuregroup fg fie[lddata] file fill filt[er] fix[ownership] flip flipa[ngle] float floatg[rid] floo[r] flowa[ccumulation] flowd[irection] flowl[ength] fm[od] focalf[low] focalmaj[ority] focalmax focalmea[n] focalmed[ian] focalmin focalmino[rity] focalr[ange] focalst[d] focalsu[m] focalv[ariety] fonta[rc] fontco[py] fontcr[eate] fontd[elete] fontdump fontl[oad] fontload forc[e] form[edit] formedit forms fr[equency] ge geary general[ize] generat[e] gerbera[rc] gerberr[ead] gerberread gerberw[rite] gerberwrite get getz[factor] gi gi[rasarc] gnds grai[n] graphb[ar] graphe[xtent] graphi[cs] graphicimage graphicview graphlim[its] graphlin[e] graphp[oint] graphs[hade] gray[shade] gre[aterthan] grid grida[scii] gridcl[ip] gridclip gridco[mposite] griddesk[ew] griddesp[eckle] griddi[rection] gride[dit] gridfli[p] gridflo[at] gridim[age] gridin[sert] gridl[ine] gridma[jority] gridmi[rror] gridmo[ss] gridn[et] gridnodatasymbol gridpa[int] gridpoi[nt] gridpol[y]
+syn keyword amlArcCmd contained gridq[uery] gridr[otate] gridshad[es] gridshap[e] gridshi[ft] gridw[arp] group groupb[y] gt gv gv[tolerance] ha[rdcopy] he[lp] help hid[densymbol] hig[hlow] hil[lshade] his[togram] historicalview ho[ldadjust] hpgl hpgl2 hsv2b[lue] hsv2g[reen] hsv2r[ed] ht[ml] hview ia ided[it] identif[y] identit[y] idw if igdsa[rc] igdsi[nfo] ige[sarc] il[lustrator] illustrator image imageg[rid] imagep[lot] imageplot imageview imp[ort] in index indexi[tem] info infodba[se] infodbm[s] infof[ile] init90[00] init9100 init9100b init91[00] init95[00] int intersect intersectarcs intersecte[rr] isn[ull] iso[cluster] it[ems] iview j[oinitem] join keeps keepselect keyan[gle] keyar[ea] keyb[ox] keyf[orms] keyl[ine] keym keym[arker] keymap keyp[osition] keyse[paration] keysh[ade] keyspot kill killm[ap] kr[iging] la labela[ngle] labele[rrors] labelm[arkers] labels labelsc[ale] labelsp[ot] labelt[ext] lal latticecl[ip] latticeco[ntour] latticed[em] latticem[erge] latticemarkers latticeo[perate]
+syn keyword amlArcCmd contained latticep[oly] latticerep[lace] latticeres[ample] lattices[pot] latticet[in] latticetext layer layera[nno] layerca[lculate] layerco[lumns] layerde[lete] layerdo[ts] layerdr[aw] layere[xport] layerf[ilter] layerid[entify] layerim[port] layerio[mode] layerli[st] layerloc[k] layerlog[file] layerq[uery] layerse[arch] layersp[ot] layert[ext] lc ldbmst le leadera[rrows] leaders leadersy[mbol] leadert[olerance] len[gth] les[sthan] lf lg lh li lib librari[an] library limitadjust limitautolink line line2pt linea[djustment] linecl[osureangle] linecolor linecolorr[amp] linecopy linecopyl[ayer] linedelete linedeletel[ayer] lineden[sity] linedir[ection] linedis[t] lineedit lineg[rid] lineh[ollow] lineinf[o] lineint[erval] linel[ayer] linelist linem[iterangle] lineo[ffset] linepa[ttern] linepe[n] linepu[t] linesa[ve] linesc[ale] linese[t] linesi[ze] linest[ats] linesy[mbol] linete[mplate]
+syn keyword amlArcCmd contained linety[pe] link[s] linkfeatures list listarchives listatt listc[overages] listcoverages listdbmstables listg[rids] listgrids listhistory listi[mages] listimages listinfotables listlayers listlibraries listo[utput] listse[lect] listst[acks] liststacks listtablespaces listti[ns] listtins listtr[averses] listtran listtransactions listw[orkspaces] listworkspaces lit ll ll[sfit] lla lm ln load loada[djacent] loadcolormap locko[nly] locks[ymbol] log log1[0] log2 logf[ile] logg[ing] loo[kup] lot[area] lp[os] lstk lt lts lw madditem majority majorityf[ilter] makere[gion] makero[ute] makese[ction] makest[ack] mal[ign] map mapa[ngle] mape[xtent] mapextent mapi[nfo] mapj[oin] mapl[imits] mappo[sition] mappr[ojection] mapsc[ale] mapsh[ift] mapu[nits] mapw[arp] mapz[oom] marker markera[ngle] markercolor markercolorr[amp] markercopy markercopyl[ayer] markerdelete markerdeletel[aye] markeredit markerf[ont] markeri[nfo] markerl[ayer] markerlist markerm[ask] markero[ffset]
+syn keyword amlArcCmd contained markerpa[ttern] markerpe[n] markerpu[t] markersa[ve] markersc[ale] markerse[t] markersi[ze] markersy[mbol] mas[elect] matchc[over] matchn[ode] max mb[egin] mc[opy] md[elete] me mean measure measurer[oute] measureroute med mend menu[cover] menuedit menv[ironment] merge mergeh[istory] mergev[at] mfi[t] mfr[esh] mg[roup] miadsa[rc] miadsr[ead] miadsread min minf[o] mino[rity] mir[ror] mitems mjoin ml[classify] mma[sk] mmo[ve] mn[select] mod mor[der] moran mosa[ic] mossa[rc] mossg[rid] move movee[nd] movei[tem] mp[osition] mr mr[otate] msc[ale] mse[lect] mselect mt[olerance] mu[nselect] multcurve multinv multipleadditem multipleitems multiplejoin multipleselect multprop mw[ho] nai ne near neatline neatlineg[rid] neatlineh[atch] neatlinel[abels] neatlinet[ics] new next ni[bble] nodeangleitem nodec[olor] nodee[rrors] nodem[arkers] nodep[oint] nodes nodesi[ze] nodesn[ap] nodesp[ot] nodet[ext] nor[mal] not ns[elect] oe ogrid ogridt[ool] oldwindow oo[ps] op[endatabase] or
+syn keyword amlArcCmd contained osymbol over overflow overflowa[rea] overflowp[osition] overflows[eparati] overl[ayevents] overlapsymbol overlayevents overp[ost] pagee[xtent] pages[ize] pageu[nits] pal[info] pan panview par[ticletrack] patc[h] path[distance] pe[nsize] pi[ck] pli[st] plot plotcopy plotg[erber] ploti[con] plotmany plotpanel plotsc[itex] plotsi[f] pointde[nsity] pointdist pointdista[nce] pointdo[ts] pointg[rid] pointi[nterp] pointm[arkers] pointn[ode] points pointsp[ot] pointst[ats] pointt[ext] polygonb[ordertex] polygond[ots] polygone[vents] polygonevents polygonl[ines] polygons polygonsh[ades] polygonsi[zelimit] polygonsp[ot] polygont[ext] polygr[id] polyr[egion] pop[ularity] por[ouspuff] pos pos[tscript] positions postscript pow prec[ision] prep[are] princ[omp] print product producti[nfo] project projectcom[pare] projectcop[y] projectd[efine] pul[litems] pur[gehistory] put pv q q[uit] quit rand rang[e] rank rb rc re readg[raphic] reads[elect] reb[ox] recl[ass] recoverdb rect[ify]
+syn keyword amlArcCmd contained red[o] refreshview regionb[uffer] regioncla[ss] regioncle[an] regiondi[ssolve] regiondo[ts] regione[rrors] regiong[roup] regionj[oin] regionl[ines] regionpoly regionpolyc[ount] regionpolycount regionpolyl[ist] regionpolylist regionq[uery] regions regionse[lect] regionsh[ades] regionsp[ot] regiont[ext] regionxa[rea] regionxarea regionxt[ab] regionxtab register registerd[bms] regr[ession] reindex rej[ects] rela[te] rele[ase] rem remapgrid reme[asure] remo[vescalar] remove removeback removecover removeedit removesnap removetransfer rename renamew[orkspace] renameworkspace reno[de] rep[lace] reposition resa[mple] resel[ect] reset resh[ape] restore restorearce[dit] restorearch[ive] resu[me] rgb2h[ue] rgb2s[at] rgb2v[al] rotate rotatep[lot] routea[rc] routeends routeendt[ext] routeer[rors] routeev[entspot] routeh[atch] routel[ines] routes routesp[ot] routest[ats] routet[ext] rp rs rt rt[l] rtl rv rw sa sai sample samples[ig] sav[e] savecolormap sc scal[ar] scat[tergram]
+syn keyword amlArcCmd contained scenefog sceneformat scenehaze sceneoversample sceneroll scenesave scenesize scenesky scitexl[ine] scitexpoi[nt] scitexpol[y] scitexr[ead] scitexread scitexw[rite] scitexwrite sco screenr[estore] screens[ave] sd sds sdtse[xport] sdtsim[port] sdtsin[fo] sdtsl[ist] se sea[rchtolerance] sectiona[rc] sectionends sectionendt[ext] sectionh[atch] sectionl[ines] sections sectionsn[ap] sectionsp[ot] sectiont[ext] sel select selectb[ox] selectc[ircle] selectg[et] selectm[ask] selectmode selectpoi[nt] selectpol[ygon] selectpu[t] selectt[ype] selectw[ithin] semivariogram sep[arator] separator ser[verstatus] setan[gle] setar[row] setce[ll] setcoa[lesce] setcon[nectinfo] setd[bmscheckin] setdrawsymbol sete[ditmode] setincrement setm[ask] setn[ull] setools setreference setsymbol setturn setw[indow] sext sf sfmt sfo sha shade shadea[ngle] shadeb[ackcolor] shadecolor shadecolorr[amp] shadecopy shadecopyl[ayer] shadedelete shadedeletel[ayer] shadeedit shadegrid shadei[nfo] shadela[yer]
+syn keyword amlArcCmd contained shadeli[nepattern] shadelist shadeo[ffset] shadepa[ttern] shadepe[n] shadepu[t] shadesa[ve] shadesc[ale] shadesep[aration] shadeset shadesi[ze] shadesy[mbol] shadet[ype] shapea[rc] shapef[ile] shapeg[rid] shi[ft] show showconstants showe[ditmode] shr[ink] si sin sinfo sing[leuser] sinh sink sit[e] sl slf[arc] sli[ce] slo[pe] sm smartanno snap snapc[over] snapcover snapcoverage snapenvironment snapfeatures snapitems snapo[rder] snappi[ng] snappo[ur] so[rt] sobs sos spi[der] spiraltrans spline splinem[ethod] split spot spoto[ffset] spots[ize] sproj sqr sqrt sra sre srl ss ssc ssh ssi ssky ssz sta stackh[istogram] stackprofile stacksc[attergram] stackshade stackst[ats] stati[stics] statu[s] statuscogo std stra[ighten] streamline streamlink streamo[rder] stri[pmap] subm[it] subs[elect] sum surface surfaceabbrev surfacecontours surfacedefaults surfacedrape surfaceextent surfaceinfo surfacel[ength] surfacelimits surfacemarker surfacemenu surfaceobserver surfaceprofile
+syn keyword amlArcCmd contained surfaceprojectio surfacerange surfaceresolutio surfacesave surfacescene surfaceshade surfacesighting surfacetarget surfacevalue surfaceviewfield surfaceviewshed surfacevisibility surfacexsection surfacezoom surfacezscale sv svfd svs sxs symboldump symboli[tem] symbolsa[ve] symbolsc[ale] symbolse[t] symbolset sz tab[les] tal[ly] tan tanh tc te tes[t] text textal[ignment] textan[gle] textcolor textcolorr[amp] textcop[y] textde[lete] textdi[rection] textedit textfil[e] textfit textfo[nt] textin[fo] textit[em] textj[ustificatio] textlist textm[ask] texto[ffset] textpe[n] textpr[ecision] textpu[t] textq[uality] textsa[ve] textsc[ale] textse[t] textset textsi[ze] textsl[ant] textspa[cing] textspl[ine] textst[yle] textsy[mbol] tf th thie[ssen] thin ti tics tict[ext] tigera[rc] tigert[ool] tigertool til[es] timped tin tina[rc] tinc[ontour] tinerrors tinhull tinl[attice] tinlines tinmarkers tins[pot] tinshades tintext tinv[rml] tl tm tol[erance] top[ogrid] topogridtool
+syn keyword amlArcCmd contained transa[ction] transfe[r] transfercoverage transferfeature transferitems transfersymbol transfo[rm] travrst travsav tre[nd] ts tsy tt tur[ntable] turnimpedance tut[orial] una[ry] unde[lete] undo ungenerate ungeneratet[in] unio[n] unit[s] unr[egisterdbms] unse[lect] unsp[lit] update updatei[nfoschema] updatel[abels] upo[s] us[age] v va[riety] vcgl vcgl2 veri[fy] vers[ion] vertex viewrst viewsav vip visd[ecode] visdecode vise[ncode] visencode visi[bility] vo[lume] vpfe[xport] vpfi[mport] vpfl[ist] vpft[ile] w war[p] wat[ershed] weedd[raw] weedo[perator] weedt[olerance] weedtolerance whe[re] whi[le] who wi[ndows] wm[f] wo[rkspace] workspace writec[andidates] writeg[raphic] writes[elect] wt x[or] ze[ta] zeta zi zo zonala[rea] zonalc[entroid] zonalf[ill] zonalg[eometry] zonalmaj[ority] zonalmax zonalmea[n] zonalmed[ian] zonalmin zonalmino[rity] zonalp[erimeter] zonalr[ange] zonalsta[ts] zonalstd zonalsu[m] zonalt[hickness] zonalv[ariety] zoomview zv
+
+" FORMEDIT reserved words, defined as keywords.
+
+syn keyword amlFormedCmd contained button choice display help input slider text
+
+" TABLES reserved words, defined as keywords.
+
+syn keyword amlTabCmd contained add additem alter asciihelp aselect at calc calculate change commands commit copy define directory dropindex dropitem erase external get help indexitem items kill list move nselect purge quit redefine rename reselect rollback save select show sort statistics unload update usagecontained
+
+" INFO reserved words, defined as keywords.
+
+syn keyword amlInfoCmd contained accept add adir alter dialog alter alt directory aret arithmetic expressions aselect automatic return calculate cchr change options change comi cominput commands list como comoutput compile concatenate controlling defaults copy cursor data delete data entry data manipulate data retrieval data update date format datafile create datafile management decode define delimiter dfmt directory management directory display do doend documentation done end environment erase execute exiting expand export external fc files first format forms control get goto help import input form ipf internal item types items label lchar list logical expressions log merge modify options modify move next nselect output password prif print programming program protect purge query quit recase redefine relate relate release notes remark rename report options reporting report reselect reserved words restrictions run save security select set sleep sort special form spool stop items system variables take terminal types terminal time topics list type update upf
+
+" VTRACE reserved words, defined as keywords.
+
+syn keyword amlVtrCmd contained add al arcscan arrowlength arrowwidth as aw backtrack branch bt cj clearjunction commands cs dash endofline endofsession eol eos fan fg foreground gap generalizetolerance gtol help hole js junctionsensitivity linesymbol linevariation linewidth ls lv lw markersymbol mode ms raster regionofinterest reset restore retrace roi save searchradius skip sr sta status stc std str straightenangle straightencorner straightendistance straightenrange vt vtrace
+
+" The AML reserved words, defined as keywords.
+
+syn keyword amlFunction contained abs access acos after angrad asin atan before calc close copy cos cover coverage cvtdistance date delete dignum dir directory entryname exist[s] exp extract file filelist format formatdate full getchar getchoice getcover getdatabase getdeflayers getfile getgrid getimage getitem getlayercols getlibrary getstack getsymbol gettin getunique iacclose iacconnect iacdisconnect iacopen iacrequest index indexed info invangle invdistance iteminfo joinfile keyword length listfile listitem listunique locase log max menu min mod noecho null okangle okdistance open pathname prefix query quote quoteexists r radang random read rename response round scratchname search show sin sort sqrt subst substr suffix tan task token translate trim truncate type unquote upcase username value variable verify write
+
+syn keyword amlDir contained abbreviations above all aml amlpath append arc args atool brief by call canvas cc center cl codepage commands conv_watch_to_aml coordinates cr create current cursor cwta dalines data date_format delete delvar describe dfmt digitizer display do doend dv echo else enable encode encrypt end error expansion fail file flushpoints force form format frame fullscreen function getlastpoint getpoint goto iacreturn if ignore info inform key keypad label lc left lf lg list listchar listfiles listglobal listheader listlocal listprogram listvar ll lp lr lv map matrix menu menupath menutype mess message[s] modal mouse nopaging off on others page pause pinaction popup position pt pulldown push pushpoint r repeat return right routine run runwatch rw screen seconds select self setchar severity show sidebar single size staggered station stop stripe sys system tablet tb terminal test then thread to top translate tty ty type uc ul until ur usage w warning watch when while window workspace
+
+syn keyword amlDir2 contained delvar dv s set setvar sv
+
+syn keyword amlOutput contained inform warning error pause stop tty ty type
+
+
+" AML Directives:
+syn match amlDirSym "&"
+syn match amlDirective "&[a-zA-Z]*" contains=amlDir,amlDir2,amlDirSym
+
+" AML Functions
+syn region amlFunc start="\[ *[a-zA-Z]*" end="\]" contains=amlFunction,amlVar
+syn match amlFunc2 "\[.*\[.*\].*\]" contains=amlFunction,amlVar
+
+" Numbers:
+"syn match amlNumber "-\=\<[0-9]*\.\=[0-9_]\>"
+
+" Quoted Strings:
+syn region amlQuote start=+"+ skip=+\\"+ end=+"+ contains=amlVar
+syn region amlQuote start=+'+ skip=+\\'+ end=+'+
+
+" ARC Application Commands only selected at the beginning of the line,
+" or after a one line &if &then statement
+syn match amlAppCmd "^ *[a-zA-Z]*" contains=amlArcCmd,amlInfoCmd,amlTabCmd,amlVtrCmd,amlFormedCmd
+syn region amlAppCmd start="&then" end="$" contains=amlArcCmd,amlFormedCmd,amlInfoCmd,amlTabCmd,amlVtrCmd,amlFunction,amlDirective,amlVar2,amlSkip,amlVar,amlComment
+
+" Variables
+syn region amlVar start="%" end="%"
+syn region amlVar start="%" end="%" contained
+syn match amlVar2 "&s [a-zA-Z_.0-9]*" contains=amlDir2,amlDirSym
+syn match amlVar2 "&sv [a-zA-Z_.0-9]*" contains=amlDir2,amlDirSym
+syn match amlVar2 "&set [a-zA-Z_.0-9]*" contains=amlDir2,amlDirSym
+syn match amlVar2 "&setvar [a-zA-Z_.0-9]*" contains=amlDir2,amlDirSym
+syn match amlVar2 "&dv [a-zA-Z_.0-9]*" contains=amlDir2,amlDirSym
+syn match amlVar2 "&delvar [a-zA-Z_.0-9]*" contains=amlDir2,amlDirSym
+
+" Formedit 2 word commands
+syn match amlFormed "^ *check box"
+syn match amlFormed "^ *data list"
+syn match amlFormed "^ *symbol list"
+
+" Tables 2 word commands
+syn match amlTab "^ *q stop"
+syn match amlTab "^ *quit stop"
+
+" Comments:
+syn match amlComment "/\*.*"
+
+" Regions for skipping over (not highlighting) program output strings:
+syn region amlSkip matchgroup=amlOutput start="&call" end="$" contains=amlVar
+syn region amlSkip matchgroup=amlOutput start="&routine" end="$" contains=amlVar
+syn region amlSkip matchgroup=amlOutput start="&inform" end="$" contains=amlVar
+syn region amlSkip matchgroup=amlOutput start="&return &inform" end="$" contains=amlVar
+syn region amlSkip matchgroup=amlOutput start="&return &warning" end="$" contains=amlVar
+syn region amlSkip matchgroup=amlOutput start="&return &error" end="$" contains=amlVar
+syn region amlSkip matchgroup=amlOutput start="&pause" end="$" contains=amlVar
+syn region amlSkip matchgroup=amlOutput start="&stop" end="$" contains=amlVar
+syn region amlSkip matchgroup=amlOutput start="&tty" end="$" contains=amlVar
+syn region amlSkip matchgroup=amlOutput start="&ty" end="$" contains=amlVar
+syn region amlSkip matchgroup=amlOutput start="&typ" end="$" contains=amlVar
+syn region amlSkip matchgroup=amlOutput start="&type" end="$" contains=amlVar
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link amlComment Comment
+hi def link amlNumber Number
+hi def link amlQuote String
+hi def link amlVar Identifier
+hi def link amlVar2 Identifier
+hi def link amlFunction PreProc
+hi def link amlDir Statement
+hi def link amlDir2 Statement
+hi def link amlDirSym Statement
+hi def link amlOutput Statement
+hi def link amlArcCmd ModeMsg
+hi def link amlFormedCmd amlArcCmd
+hi def link amlTabCmd amlArcCmd
+hi def link amlInfoCmd amlArcCmd
+hi def link amlVtrCmd amlArcCmd
+hi def link amlFormed amlArcCmd
+hi def link amlTab amlArcCmd
+
+
+let b:current_syntax = "aml"
diff --git a/runtime/syntax/ampl.vim b/runtime/syntax/ampl.vim
new file mode 100644
index 0000000..ad78f7d
--- /dev/null
+++ b/runtime/syntax/ampl.vim
@@ -0,0 +1,140 @@
+" Language: ampl (A Mathematical Programming Language)
+" Maintainer: Krief David <david.krief@etu.enseeiht.fr> or <david_krief@hotmail.com>
+" Last Change: 2003 May 11
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+
+
+"--
+syn match amplEntityKeyword "\(subject to\)\|\(subj to\)\|\(s\.t\.\)"
+syn keyword amplEntityKeyword minimize maximize objective
+
+syn keyword amplEntityKeyword coeff coef cover obj default
+syn keyword amplEntityKeyword from to to_come net_in net_out
+syn keyword amplEntityKeyword dimen dimension
+
+
+
+"--
+syn keyword amplType integer binary set param var
+syn keyword amplType node ordered circular reversed symbolic
+syn keyword amplType arc
+
+
+
+"--
+syn keyword amplStatement check close \display drop include
+syn keyword amplStatement print printf quit reset restore
+syn keyword amplStatement solve update write shell model
+syn keyword amplStatement data option let solution fix
+syn keyword amplStatement unfix end function pipe format
+
+
+
+"--
+syn keyword amplConditional if then else and or
+syn keyword amplConditional exists forall in not within
+
+
+
+"--
+syn keyword amplRepeat while repeat for
+
+
+
+"--
+syn keyword amplOperators union diff difference symdiff sum
+syn keyword amplOperators inter intersect intersection cross setof
+syn keyword amplOperators by less mod div product
+"syn keyword amplOperators min max
+"conflict between functions max, min and operators max, min
+
+syn match amplBasicOperators "||\|<=\|==\|\^\|<\|=\|!\|-\|\.\.\|:="
+syn match amplBasicOperators "&&\|>=\|!=\|\*\|>\|:\|/\|+\|\*\*"
+
+
+
+
+"--
+syn match amplComment "\#.*"
+syn region amplComment start=+\/\*+ end=+\*\/+
+
+syn region amplStrings start=+\'+ skip=+\\'+ end=+\'+
+syn region amplStrings start=+\"+ skip=+\\"+ end=+\"+
+
+syn match amplNumerics "[+-]\=\<\d\+\(\.\d\+\)\=\([dDeE][-+]\=\d\+\)\=\>"
+syn match amplNumerics "[+-]\=Infinity"
+
+
+"--
+syn keyword amplSetFunction card next nextw prev prevw
+syn keyword amplSetFunction first last member ord ord0
+
+syn keyword amplBuiltInFunction abs acos acosh alias asin
+syn keyword amplBuiltInFunction asinh atan atan2 atanh ceil
+syn keyword amplBuiltInFunction cos exp floor log log10
+syn keyword amplBuiltInFunction max min precision round sin
+syn keyword amplBuiltInFunction sinh sqrt tan tanh trunc
+
+syn keyword amplRandomGenerator Beta Cauchy Exponential Gamma Irand224
+syn keyword amplRandomGenerator Normal Poisson Uniform Uniform01
+
+
+
+"-- to highlight the 'dot-suffixes'
+syn match amplDotSuffix "\h\w*\.\(lb\|ub\)"hs=e-2
+syn match amplDotSuffix "\h\w*\.\(lb0\|lb1\|lb2\|lrc\|ub0\)"hs=e-3
+syn match amplDotSuffix "\h\w*\.\(ub1\|ub2\|urc\|val\|lbs\|ubs\)"hs=e-3
+syn match amplDotSuffix "\h\w*\.\(init\|body\|dinit\|dual\)"hs=e-4
+syn match amplDotSuffix "\h\w*\.\(init0\|ldual\|slack\|udual\)"hs=e-5
+syn match amplDotSuffix "\h\w*\.\(lslack\|uslack\|dinit0\)"hs=e-6
+
+
+
+"--
+syn match amplPiecewise "<<\|>>"
+
+
+
+"-- Todo.
+syn keyword amplTodo contained TODO FIXME XXX
+
+
+
+
+
+
+
+
+
+
+
+" The default methods for highlighting. Can be overridden later.
+hi def link amplEntityKeyword Keyword
+hi def link amplType Type
+hi def link amplStatement Statement
+hi def link amplOperators Operator
+hi def link amplBasicOperators Operator
+hi def link amplConditional Conditional
+hi def link amplRepeat Repeat
+hi def link amplStrings String
+hi def link amplNumerics Number
+hi def link amplSetFunction Function
+hi def link amplBuiltInFunction Function
+hi def link amplRandomGenerator Function
+hi def link amplComment Comment
+hi def link amplDotSuffix Special
+hi def link amplPiecewise Special
+
+
+let b:current_syntax = "ampl"
+
+" vim: ts=8
+
+
diff --git a/runtime/syntax/ant.vim b/runtime/syntax/ant.vim
new file mode 100644
index 0000000..6696f96
--- /dev/null
+++ b/runtime/syntax/ant.vim
@@ -0,0 +1,97 @@
+" Vim syntax file
+" Language: ANT build file (xml)
+" Maintainer: Johannes Zellner <johannes@zellner.org>
+" Last Change: Tue Apr 27 13:05:59 CEST 2004
+" Filenames: build.xml
+" $Id: ant.vim,v 1.1 2004/06/13 18:13:18 vimboss Exp $
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:ant_cpo_save = &cpo
+set cpo&vim
+
+runtime! syntax/xml.vim
+
+syn case ignore
+
+if !exists('*AntSyntaxScript')
+ fun AntSyntaxScript(tagname, synfilename)
+ unlet b:current_syntax
+ let s:include = expand("<sfile>:p:h").'/'.a:synfilename
+ if filereadable(s:include)
+ exe 'syn include @ant'.a:tagname.' '.s:include
+ else
+ exe 'syn include @ant'.a:tagname." $VIMRUNTIME/syntax/".a:synfilename
+ endif
+
+ exe 'syn region ant'.a:tagname
+ \." start=#<script[^>]\\{-}language\\s*=\\s*['\"]".a:tagname."['\"]\\(>\\|[^>]*[^/>]>\\)#"
+ \.' end=#</script>#'
+ \.' fold'
+ \.' contains=@ant'.a:tagname.',xmlCdataStart,xmlCdataEnd,xmlTag,xmlEndTag'
+ \.' keepend'
+ exe 'syn cluster xmlRegionHook add=ant'.a:tagname
+ endfun
+endif
+
+" TODO: add more script languages here ?
+call AntSyntaxScript('javascript', 'javascript.vim')
+call AntSyntaxScript('jpython', 'python.vim')
+
+
+syn cluster xmlTagHook add=antElement
+
+syn keyword antElement display WsdlToDotnet addfiles and ant antcall antstructure apply archives arg argument
+syn keyword antElement display assertions attrib attribute available basename bcc blgenclient bootclasspath
+syn keyword antElement display borland bottom buildnumber buildpath buildpathelement bunzip2 bzip2 cab
+syn keyword antElement display catalogpath cc cccheckin cccheckout cclock ccmcheckin ccmcheckintask ccmcheckout
+syn keyword antElement display ccmcreatetask ccmkattr ccmkbl ccmkdir ccmkelem ccmklabel ccmklbtype
+syn keyword antElement display ccmreconfigure ccrmtype ccuncheckout ccunlock ccupdate checksum chgrp chmod
+syn keyword antElement display chown classconstants classes classfileset classpath commandline comment
+syn keyword antElement display compilerarg compilerclasspath concat concatfilter condition copy copydir
+syn keyword antElement display copyfile coveragepath csc custom cvs cvschangelog cvspass cvstagdiff cvsversion
+syn keyword antElement display daemons date defaultexcludes define delete deletecharacters deltree depend
+syn keyword antElement display depends dependset depth description different dirname dirset disable dname
+syn keyword antElement display doclet doctitle dtd ear echo echoproperties ejbjar element enable entity entry
+syn keyword antElement display env equals escapeunicode exclude excludepackage excludesfile exec execon
+syn keyword antElement display existing expandproperties extdirs extension extensionSet extensionset factory
+syn keyword antElement display fail filelist filename filepath fileset filesmatch filetokenizer filter
+syn keyword antElement display filterchain filterreader filters filterset filtersfile fixcrlf footer format
+syn keyword antElement display from ftp generic genkey get gjdoc grant group gunzip gzip header headfilter http
+syn keyword antElement display ignoreblank ilasm ildasm import importtypelib include includesfile input iplanet
+syn keyword antElement display iplanet-ejbc isfalse isreference isset istrue jar jarlib-available
+syn keyword antElement display jarlib-manifest jarlib-resolve java javac javacc javadoc javadoc2 jboss jdepend
+syn keyword antElement display jjdoc jjtree jlink jonas jpcoverage jpcovmerge jpcovreport jsharpc jspc
+syn keyword antElement display junitreport jvmarg lib libfileset linetokenizer link loadfile loadproperties
+syn keyword antElement display location macrodef mail majority manifest map mapper marker mergefiles message
+syn keyword antElement display metainf method mimemail mkdir mmetrics modified move mparse none not options or
+syn keyword antElement display os outputproperty package packageset parallel param patch path pathconvert
+syn keyword antElement display pathelement patternset permissions prefixlines present presetdef project
+syn keyword antElement display property propertyfile propertyref propertyset pvcs pvcsproject record reference
+syn keyword antElement display regexp rename renameext replace replacefilter replaceregex replaceregexp
+syn keyword antElement display replacestring replacetoken replacetokens replacevalue replyto report resource
+syn keyword antElement display revoke rmic root rootfileset rpm scp section selector sequential serverdeploy
+syn keyword antElement display setproxy signjar size sleep socket soscheckin soscheckout sosget soslabel source
+syn keyword antElement display sourcepath sql src srcfile srcfilelist srcfiles srcfileset sshexec stcheckin
+syn keyword antElement display stcheckout stlabel stlist stringtokenizer stripjavacomments striplinebreaks
+syn keyword antElement display striplinecomments style subant substitution support symlink sync sysproperty
+syn keyword antElement display syspropertyset tabstospaces tag taglet tailfilter tar tarfileset target
+syn keyword antElement display targetfile targetfilelist targetfileset taskdef tempfile test testlet text title
+syn keyword antElement display to token tokenfilter touch transaction translate triggers trim tstamp type
+syn keyword antElement display typedef unjar untar unwar unzip uptodate url user vbc vssadd vsscheckin
+syn keyword antElement display vsscheckout vsscp vsscreate vssget vsshistory vsslabel waitfor war wasclasspath
+syn keyword antElement display webapp webinf weblogic weblogictoplink websphere whichresource wlclasspath
+syn keyword antElement display wljspc wsdltodotnet xmlcatalog xmlproperty xmlvalidate xslt zip zipfileset
+syn keyword antElement display zipgroupfileset
+
+hi def link antElement Statement
+
+let b:current_syntax = "ant"
+
+let &cpo = s:ant_cpo_save
+unlet s:ant_cpo_save
+
+" vim: ts=8
diff --git a/runtime/syntax/antlr.vim b/runtime/syntax/antlr.vim
new file mode 100644
index 0000000..9b0b061
--- /dev/null
+++ b/runtime/syntax/antlr.vim
@@ -0,0 +1,54 @@
+" Vim syntax file
+" Antlr: ANTLR, Another Tool For Language Recognition <www.antlr.org>
+" Maintainer: Mathieu Clabaut <mathieu.clabaut@free.fr>
+" LastChange: 02 May 2001
+" Original: Comes from JavaCC.vim
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" This syntac file is a first attempt. It is far from perfect...
+
+" Uses java.vim, and adds a few special things for JavaCC Parser files.
+" Those files usually have the extension *.jj
+
+" source the java.vim file
+runtime! syntax/java.vim
+unlet b:current_syntax
+
+"remove catching errors caused by wrong parenthesis (does not work in antlr
+"files) (first define them in case they have not been defined in java)
+syn match javaParen "--"
+syn match javaParenError "--"
+syn match javaInParen "--"
+syn match javaError2 "--"
+syn clear javaParen
+syn clear javaParenError
+syn clear javaInParen
+syn clear javaError2
+
+" remove function definitions (they look different) (first define in
+" in case it was not defined in java.vim)
+"syn match javaFuncDef "--"
+"syn clear javaFuncDef
+"syn match javaFuncDef "[a-zA-Z][a-zA-Z0-9_. \[\]]*([^-+*/()]*)[ \t]*:" contains=javaType
+" syn region javaFuncDef start=+t[a-zA-Z][a-zA-Z0-9_. \[\]]*([^-+*/()]*,[ ]*+ end=+)[ \t]*:+
+
+syn keyword antlrPackages options language buildAST
+syn match antlrPackages "PARSER_END([^)]*)"
+syn match antlrPackages "PARSER_BEGIN([^)]*)"
+syn match antlrSpecToken "<EOF>"
+" the dot is necessary as otherwise it will be matched as a keyword.
+syn match antlrSpecToken ".LOOKAHEAD("ms=s+1,me=e-1
+syn match antlrSep "[|:]\|\.\."
+syn keyword antlrActionToken TOKEN SKIP MORE SPECIAL_TOKEN
+syn keyword antlrError DEBUG IGNORE_IN_BNF
+
+hi def link antlrSep Statement
+hi def link antlrPackages Statement
+
+let b:current_syntax = "antlr"
+
+" vim: ts=8
diff --git a/runtime/syntax/apache.vim b/runtime/syntax/apache.vim
new file mode 100644
index 0000000..e73045e
--- /dev/null
+++ b/runtime/syntax/apache.vim
@@ -0,0 +1,204 @@
+" Vim syntax file
+" Language: Apache configuration (httpd.conf, srm.conf, access.conf, .htaccess)
+" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
+" License: This file can be redistribued and/or modified under the same terms
+" as Vim itself.
+" Last Change: 2022 Apr 25
+" Notes: Last synced with apache-2.2.3, version 1.x is no longer supported
+" TODO: see particular FIXME's scattered through the file
+" make it really linewise?
+" + add `display' where appropriate
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" Base constructs
+syn match apacheComment "^\s*#.*$" contains=apacheFixme
+syn match apacheUserID "#-\?\d\+\>"
+syn case match
+syn keyword apacheFixme FIXME TODO XXX NOT
+syn case ignore
+syn match apacheAnything "\s[^>]*" contained
+syn match apacheError "\w\+" contained
+syn region apacheString start=+"+ end=+"+ skip=+\\\\\|\\\"+ oneline
+
+" Following is to prevent escaped quotes from being parsed as strings.
+syn match apacheSkipQuote +\\"+
+
+" Core and mpm
+syn keyword apacheDeclaration AccessFileName AddDefaultCharset AllowOverride AuthName AuthType ContentDigest DefaultType DocumentRoot ErrorDocument ErrorLog HostNameLookups IdentityCheck Include KeepAlive KeepAliveTimeout LimitRequestBody LimitRequestFields LimitRequestFieldsize LimitRequestLine LogLevel MaxKeepAliveRequests NameVirtualHost Options Require RLimitCPU RLimitMEM RLimitNPROC Satisfy ScriptInterpreterSource ServerAdmin ServerAlias ServerName ServerPath ServerRoot ServerSignature ServerTokens TimeOut UseCanonicalName
+syn keyword apacheDeclaration AcceptPathInfo CGIMapExtension EnableMMAP FileETag ForceType LimitXMLRequestBody SetHandler SetInputFilter SetOutputFilter
+syn keyword apacheDeclaration AcceptFilter AllowEncodedSlashes EnableSendfile LimitInternalRecursion TraceEnable
+syn keyword apacheOption INode MTime Size
+syn keyword apacheOption Any All On Off Double EMail DNS Min Minimal OS Prod ProductOnly Full
+syn keyword apacheOption emerg alert crit error warn notice info debug
+syn keyword apacheOption registry script inetd standalone
+syn match apacheOptionOption "[+-]\?\<\(ExecCGI\|FollowSymLinks\|Includes\|IncludesNoExec\|Indexes\|MultiViews\|SymLinksIfOwnerMatch\)\>"
+syn keyword apacheOption user group
+syn match apacheOption "\<valid-user\>"
+syn case match
+syn keyword apacheMethodOption GET POST PUT DELETE CONNECT OPTIONS TRACE PATCH PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK contained
+" Added as suggested by Mikko Koivunalho
+syn keyword apacheMethodOption BASELINE-CONTROL CHECKIN CHECKOUT LABEL MERGE MKACTIVITY MKWORKSPACE REPORT UNCHECKOUT UPDATE VERSION-CONTROL contained
+syn case ignore
+syn match apacheSection "<\/\=\(Directory\|DirectoryMatch\|Files\|FilesMatch\|IfModule\|IfDefine\|Location\|LocationMatch\|VirtualHost\)[^>]*>" contains=apacheAnything
+syn match apacheSection "<\/\=\(RequireAll\|RequireAny\|RequireNone\)>" contains=apacheAnything
+syn match apacheLimitSection "<\/\=\(Limit\|LimitExcept\)[^>]*>" contains=apacheLimitSectionKeyword,apacheMethodOption,apacheError
+syn keyword apacheLimitSectionKeyword Limit LimitExcept contained
+syn match apacheAuthType "AuthType\s.*$" contains=apacheAuthTypeValue
+syn keyword apacheAuthTypeValue Basic Digest
+syn match apacheAllowOverride "AllowOverride\s.*$" contains=apacheAllowOverrideValue,apacheComment
+syn keyword apacheAllowOverrideValue AuthConfig FileInfo Indexes Limit Options contained
+syn keyword apacheDeclaration CoreDumpDirectory EnableExceptionHook GracefulShutdownTimeout Group Listen ListenBacklog LockFile MaxClients MaxMemFree MaxRequestsPerChild MaxSpareThreads MaxSpareThreadsPerChild MinSpareThreads NumServers PidFile ScoreBoardFile SendBufferSize ServerLimit StartServers StartThreads ThreadLimit ThreadsPerChild User
+syn keyword apacheDeclaration MaxThreads ThreadStackSize
+syn keyword apacheDeclaration Win32DisableAcceptEx
+syn keyword apacheDeclaration AssignUserId ChildPerUserId
+syn keyword apacheDeclaration AcceptMutex MaxSpareServers MinSpareServers
+syn keyword apacheOption flock fcntl sysvsem pthread
+
+" Modules
+syn keyword apacheDeclaration Action Script
+syn keyword apacheDeclaration Alias AliasMatch Redirect RedirectMatch RedirectTemp RedirectPermanent ScriptAlias ScriptAliasMatch
+syn keyword apacheOption permanent temp seeother gone
+syn keyword apacheDeclaration AuthAuthoritative AuthGroupFile AuthUserFile
+syn keyword apacheDeclaration AuthBasicAuthoritative AuthBasicProvider
+syn keyword apacheDeclaration AuthDigestAlgorithm AuthDigestDomain AuthDigestNcCheck AuthDigestNonceFormat AuthDigestNonceLifetime AuthDigestProvider AuthDigestQop AuthDigestShmemSize
+syn keyword apacheOption none auth auth-int MD5 MD5-sess
+syn match apacheSection "<\/\=\(<AuthnProviderAlias\)[^>]*>" contains=apacheAnything
+syn keyword apacheDeclaration Anonymous Anonymous_Authoritative Anonymous_LogEmail Anonymous_MustGiveEmail Anonymous_NoUserID Anonymous_VerifyEmail
+syn keyword apacheDeclaration AuthDBDUserPWQuery AuthDBDUserRealmQuery
+syn keyword apacheDeclaration AuthDBMGroupFile AuthDBMAuthoritative
+syn keyword apacheDeclaration AuthDBM TypeAuthDBMUserFile
+syn keyword apacheOption default SDBM GDBM NDBM DB
+syn keyword apacheDeclaration AuthDefaultAuthoritative
+syn keyword apacheDeclaration AuthUserFile
+syn keyword apacheDeclaration AuthLDAPBindON AuthLDAPEnabled AuthLDAPFrontPageHack AuthLDAPStartTLS
+syn keyword apacheDeclaration AuthLDAPBindDN AuthLDAPBindPassword AuthLDAPCharsetConfig AuthLDAPCompareDNOnServer AuthLDAPDereferenceAliases AuthLDAPGroupAttribute AuthLDAPGroupAttributeIsDN AuthLDAPRemoteUserIsDN AuthLDAPUrl AuthzLDAPAuthoritative
+syn keyword apacheOption always never searching finding
+syn keyword apacheOption ldap-user ldap-group ldap-dn ldap-attribute ldap-filter
+syn keyword apacheDeclaration AuthDBMGroupFile AuthzDBMAuthoritative AuthzDBMType
+syn keyword apacheDeclaration AuthzDefaultAuthoritative
+syn keyword apacheDeclaration AuthGroupFile AuthzGroupFileAuthoritative
+syn match apacheAllowDeny "Allow\s\+from.*$" contains=apacheAllowDenyValue,apacheComment
+syn match apacheAllowDeny "Deny\s\+from.*$" contains=apacheAllowDenyValue,apacheComment
+syn keyword apacheAllowDenyValue All None contained
+syn match apacheOrder "^\s*Order\s.*$" contains=apacheOrderValue,apacheComment
+syn keyword apacheOrderValue Deny Allow contained
+syn keyword apacheDeclaration AuthzOwnerAuthoritative
+syn keyword apacheDeclaration AuthzUserAuthoritative
+syn keyword apacheDeclaration AddAlt AddAltByEncoding AddAltByType AddDescription AddIcon AddIconByEncoding AddIconByType DefaultIcon HeaderName IndexIgnore IndexOptions IndexOrderDefault ReadmeName
+syn keyword apacheDeclaration IndexStyleSheet
+syn keyword apacheOption DescriptionWidth FancyIndexing FoldersFirst IconHeight IconsAreLinks IconWidth NameWidth ScanHTMLTitles SuppressColumnSorting SuppressDescription SuppressHTMLPreamble SuppressLastModified SuppressSize TrackModified
+syn keyword apacheOption Ascending Descending Name Date Size Description
+syn keyword apacheOption HTMLTable SuppressIcon SuppressRules VersionSort XHTML
+syn keyword apacheOption IgnoreClient IgnoreCase ShowForbidden SuppresRules
+syn keyword apacheDeclaration CacheForceCompletion CacheMaxStreamingBuffer
+syn keyword apacheDeclaration CacheDefaultExpire CacheDisable CacheEnable CacheIgnoreCacheControl CacheIgnoreHeaders CacheIgnoreNoLastMod CacheLastModifiedFactor CacheMaxExpire CacheStoreNoStore CacheStorePrivate
+syn keyword apacheDeclaration MetaFiles MetaDir MetaSuffix
+syn keyword apacheDeclaration ScriptLog ScriptLogLength ScriptLogBuffer
+syn keyword apacheDeclaration ScriptStock
+syn keyword apacheDeclaration CharsetDefault CharsetOptions CharsetSourceEnc
+syn keyword apacheOption DebugLevel ImplicitAdd NoImplicitAdd
+syn keyword apacheDeclaration Dav DavDepthInfinity DavMinTimeout
+syn keyword apacheDeclaration DavLockDB
+syn keyword apacheDeclaration DavGenericLockDB
+syn keyword apacheDeclaration DBDExptime DBDKeep DBDMax DBDMin DBDParams DBDPersist DBDPrepareSQL DBDriver
+syn keyword apacheDeclaration DeflateCompressionLevel DeflateBufferSize DeflateFilterNote DeflateMemLevel DeflateWindowSize
+syn keyword apacheDeclaration DirectoryIndex DirectorySlash
+syn keyword apacheDeclaration CacheExpiryCheck CacheGcClean CacheGcDaily CacheGcInterval CacheGcMemUsage CacheGcUnused CacheSize CacheTimeMargin
+syn keyword apacheDeclaration CacheDirLength CacheDirLevels CacheMaxFileSize CacheMinFileSize CacheRoot
+syn keyword apacheDeclaration DumpIOInput DumpIOOutput
+syn keyword apacheDeclaration ProtocolEcho
+syn keyword apacheDeclaration PassEnv SetEnv UnsetEnv
+syn keyword apacheDeclaration Example
+syn keyword apacheDeclaration ExpiresActive ExpiresByType ExpiresDefault
+syn keyword apacheDeclaration ExtFilterDefine ExtFilterOptions
+syn keyword apacheOption PreservesContentLength DebugLevel LogStderr NoLogStderr
+syn match apacheOption "\<\(cmd\|mode\|intype\|outtype\|ftype\|disableenv\|enableenv\)\ze="
+syn keyword apacheDeclaration CacheFile MMapFile
+syn keyword apacheDeclaration FilterChain FilterDeclare FilterProtocol FilterProvider FilterTrace
+syn keyword apacheDeclaration Header
+syn keyword apacheDeclaration RequestHeader
+syn keyword apacheOption set unset append add
+syn keyword apacheDeclaration IdentityCheck IdentityCheckTimeout
+syn keyword apacheDeclaration ImapMenu ImapDefault ImapBase
+syn keyword apacheOption none formatted semiformatted unformatted
+syn keyword apacheOption nocontent referer error map
+syn keyword apacheDeclaration SSIEndTag SSIErrorMsg SSIStartTag SSITimeFormat SSIUndefinedEcho XBitHack
+syn keyword apacheOption on off full
+syn keyword apacheDeclaration AddModuleInfo
+syn keyword apacheDeclaration ISAPIReadAheadBuffer ISAPILogNotSupported ISAPIAppendLogToErrors ISAPIAppendLogToQuery
+syn keyword apacheDeclaration ISAPICacheFile ISAIPFakeAsync
+syn keyword apacheDeclaration LDAPCertDBPath
+syn keyword apacheDeclaration LDAPCacheEntries LDAPCacheTTL LDAPConnectionTimeout LDAPOpCacheEntries LDAPOpCacheTTL LDAPSharedCacheFile LDAPSharedCacheSize LDAPTrustedClientCert LDAPTrustedGlobalCert LDAPTrustedMode LDAPVerifyServerCert
+syn keyword apacheOption CA_DER CA_BASE64 CA_CERT7_DB CA_SECMOD CERT_DER CERT_BASE64 CERT_KEY3_DB CERT_NICKNAME CERT_PFX KEY_DER KEY_BASE64 KEY_PFX
+syn keyword apacheDeclaration BufferedLogs CookieLog CustomLog LogFormat TransferLog
+syn keyword apacheDeclaration ForensicLog
+syn keyword apacheDeclaration MCacheMaxObjectCount MCacheMaxObjectSize MCacheMaxStreamingBuffer MCacheMinObjectSize MCacheRemovalAlgorithm MCacheSize
+syn keyword apacheDeclaration AddCharset AddEncoding AddHandler AddLanguage AddType DefaultLanguage RemoveEncoding RemoveHandler RemoveType TypesConfig
+syn keyword apacheDeclaration AddInputFilter AddOutputFilter ModMimeUsePathInfo MultiviewsMatch RemoveInputFilter RemoveOutputFilter RemoveCharset
+syn keyword apacheOption NegotiatedOnly Filters Handlers
+syn keyword apacheDeclaration MimeMagicFile
+syn keyword apacheDeclaration MMapFile
+syn keyword apacheDeclaration CacheNegotiatedDocs LanguagePriority ForceLanguagePriority
+syn keyword apacheDeclaration NWSSLTrustedCerts NWSSLUpgradeable SecureListen
+syn keyword apacheDeclaration PerlModule PerlRequire PerlTaintCheck PerlWarn
+syn keyword apacheDeclaration PerlSetVar PerlSetEnv PerlPassEnv PerlSetupEnv
+syn keyword apacheDeclaration PerlInitHandler PerlPostReadRequestHandler PerlHeaderParserHandler
+syn keyword apacheDeclaration PerlTransHandler PerlAccessHandler PerlAuthenHandler PerlAuthzHandler
+syn keyword apacheDeclaration PerlTypeHandler PerlFixupHandler PerlHandler PerlLogHandler
+syn keyword apacheDeclaration PerlCleanupHandler PerlChildInitHandler PerlChildExitHandler
+syn keyword apacheDeclaration PerlRestartHandler PerlDispatchHandler
+syn keyword apacheDeclaration PerlFreshRestart PerlSendHeader
+syn keyword apacheDeclaration php_value php_flag php_admin_value php_admin_flag
+syn match apacheSection "<\/\=\(Proxy\|ProxyMatch\)[^>]*>" contains=apacheAnything
+syn keyword apacheDeclaration AllowCONNECT NoProxy ProxyBadHeader ProxyBlock ProxyDomain ProxyErrorOverride ProxyIOBufferSize ProxyMaxForwards ProxyPass ProxyPassMatch ProxyPassReverse ProxyPassReverseCookieDomain ProxyPassReverseCookiePath ProxyPreserveHost ProxyReceiveBufferSize ProxyRemote ProxyRemoteMatch ProxyRequests ProxyTimeout ProxyVia
+syn keyword apacheDeclaration RewriteBase RewriteCond RewriteEngine RewriteLock RewriteLog RewriteLogLevel RewriteMap RewriteOptions RewriteRule
+syn keyword apacheOption inherit
+syn keyword apacheDeclaration BrowserMatch BrowserMatchNoCase SetEnvIf SetEnvIfNoCase
+syn keyword apacheDeclaration LoadFile LoadModule
+syn keyword apacheDeclaration CheckSpelling CheckCaseOnly
+syn keyword apacheDeclaration SSLCACertificateFile SSLCACertificatePath SSLCADNRequestFile SSLCADNRequestPath SSLCARevocationFile SSLCARevocationPath SSLCertificateChainFile SSLCertificateFile SSLCertificateKeyFile SSLCipherSuite SSLCompression SSLCryptoDevice SSLEngine SSLFIPS SSLHonorCipherOrder SSLInsecureRenegotiation SSLMutex SSLOptions SSLPassPhraseDialog SSLProtocol SSLProxyCACertificateFile SSLProxyCACertificatePath SSLProxyCARevocationFile SSLProxyCARevocationPath SSLProxyCheckPeerCN SSLProxyCheckPeerExpire SSLProxyCipherSuite SSLProxyEngine SSLProxyMachineCertificateChainFile SSLProxyMachineCertificateFile SSLProxyMachineCertificatePath SSLProxyProtocol SSLProxyVerify SSLProxyVerifyDepth SSLRandomSeed SSLRenegBufferSize SSLRequire SSLRequireSSL SSLSessionCache SSLSessionCacheTimeout SSLSessionTicketKeyFile SSLSessionTickets SSLStrictSNIVHostCheck SSLUserName SSLVerifyClient SSLVerifyDepth
+syn match apacheOption "[+-]\?\<\(StdEnvVars\|CompatEnvVars\|ExportCertData\|FakeBasicAuth\|StrictRequire\|OptRenegotiate\)\>"
+syn keyword apacheOption builtin sem
+syn match apacheOption "\(file\|exec\|egd\|dbm\|shm\):"
+syn match apacheOption "[+-]\?\<\(SSLv2\|SSLv3\|TLSv1\|kRSA\|kHDr\|kDHd\|kEDH\|aNULL\|aRSA\|aDSS\|aRH\|eNULL\|DES\|3DES\|RC2\|RC4\|IDEA\|MD5\|SHA1\|SHA\|EXP\|EXPORT40\|EXPORT56\|LOW\|MEDIUM\|HIGH\|RSA\|DH\|EDH\|ADH\|DSS\|NULL\)\>"
+syn keyword apacheOption optional optional_no_ca
+syn keyword apacheDeclaration ExtendedStatus
+syn keyword apacheDeclaration SuexecUserGroup
+syn keyword apacheDeclaration UserDir
+syn keyword apacheDeclaration CookieDomain CookieExpires CookieName CookieStyle CookieTracking
+syn keyword apacheOption Netscape Cookie Cookie2 RFC2109 RFC2965
+syn match apacheSection "<\/\=\(<IfVersion\)[^>]*>" contains=apacheAnything
+syn keyword apacheDeclaration VirtualDocumentRoot VirtualDocumentRootIP VirtualScriptAlias VirtualScriptAliasIP
+
+" Define the default highlighting
+
+hi def link apacheAllowOverride apacheDeclaration
+hi def link apacheAllowOverrideValue apacheOption
+hi def link apacheAuthType apacheDeclaration
+hi def link apacheAuthTypeValue apacheOption
+hi def link apacheOptionOption apacheOption
+hi def link apacheDeclaration Function
+hi def link apacheAnything apacheOption
+hi def link apacheOption Number
+hi def link apacheComment Comment
+hi def link apacheFixme Todo
+hi def link apacheLimitSectionKeyword apacheLimitSection
+hi def link apacheLimitSection apacheSection
+hi def link apacheSection Label
+hi def link apacheMethodOption Type
+hi def link apacheAllowDeny Include
+hi def link apacheAllowDenyValue Identifier
+hi def link apacheOrder Special
+hi def link apacheOrderValue String
+hi def link apacheString String
+hi def link apacheError Error
+hi def link apacheUserID Number
+
+
+let b:current_syntax = "apache"
diff --git a/runtime/syntax/apachestyle.vim b/runtime/syntax/apachestyle.vim
new file mode 100644
index 0000000..bd5c89d
--- /dev/null
+++ b/runtime/syntax/apachestyle.vim
@@ -0,0 +1,54 @@
+" Vim syntax file
+" Language: Apache-Style configuration files (proftpd.conf/apache.conf/..)
+" Maintainer: Ben RUBSON <ben.rubson@gmail.com>
+" Former Maintainer: Christian Hammers <ch@westend.com>
+" ChangeLog:
+" 2017-12-17,ch
+" correctly detect comments
+" 2001-05-04,ch
+" adopted Vim 6.0 syntax style
+" 1999-10-28,ch
+" initial release
+
+" The following formats are recognised:
+" Apache-style .conf
+" # Comment
+" Option value
+" Option value1 value2
+" Option = value1 value2 #not apache but also allowed
+" <Section Name?>
+" Option value
+" <SubSection Name?>
+" </SubSection>
+" </Section>
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+syn match apOption /^\s*[^ \t#<=]*/
+syn match apComment /^\s*#.*$/
+"syn match apLastValue /[^ \t<=#]*$/ contains=apComment ugly
+
+" tags
+syn region apTag start=/</ end=/>/ contains=apTagOption,apTagError
+" the following should originally be " [^<>]+" but this didn't work :(
+syn match apTagOption contained / [-\/_\.:*a-zA-Z0-9]\+/ms=s+1
+syn match apTagError contained /[^>]</ms=s+1
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link apComment Comment
+hi def link apOption Keyword
+"hi def link apLastValue Identifier ugly?
+hi def link apTag Special
+hi def link apTagOption Identifier
+hi def link apTagError Error
+
+
+let b:current_syntax = "apachestyle"
+" vim: ts=8
diff --git a/runtime/syntax/aptconf.vim b/runtime/syntax/aptconf.vim
new file mode 100644
index 0000000..d51e7bd
--- /dev/null
+++ b/runtime/syntax/aptconf.vim
@@ -0,0 +1,577 @@
+" Vim syntax file
+" Language: APT config file
+" Maintainer: Yann Amar <quidame@poivron.org>
+" Last Change: 2021 Jul 12
+
+" quit when a syntax file was already loaded
+if !exists("main_syntax")
+ if exists("b:current_syntax")
+ finish
+ endif
+ let main_syntax = 'aptconf'
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Errors:
+" Catch all that is not overridden by next rules/items:
+syn match aptconfError display '[^[:blank:]]'
+syn match aptconfError display '^[^[:blank:]][^:{]*'
+
+" Options:
+" Define a general regular expression for the options that are not defined
+" later as keywords. Following apt.conf(5), we know that options are case
+" insensitive, and can contain alphanumeric characters and '/-:._+'; we
+" assume that there can not be consecutive colons (::) which is used as
+" syntax operator; we also assume that an option name can not start or end
+" by a colon.
+syn case ignore
+syn match aptconfRegexpOpt '[-[:alnum:]/.+_]\+\(:[-[:alnum:]/.+_]\+\)*' contained display
+
+" Keywords:
+setlocal iskeyword+=/,-,.,_,+
+"setlocal iskeyword+=: is problematic, because of the '::' separator
+
+" Incomplete keywords will be treated differently than completely bad strings:
+syn keyword aptconfGroupIncomplete
+ \ a[cquire] a[dequate] a[ptitude] a[ptlistbugs] d[ebtags] d[ebug]
+ \ d[ir] d[pkg] d[select] o[rderlist] p[ackagemanager] p[kgcachegen]
+ \ q[uiet] r[pm] s[ynaptic] u[nattended-upgrade] w[hatmaps]
+
+" Only the following keywords can be used at toplevel (to begin an option):
+syn keyword aptconfGroup
+ \ acquire adequate apt aptitude aptlistbugs debtags debug
+ \ dir dpkg dselect orderlist packagemanager pkgcachegen
+ \ quiet rpm synaptic unattended-upgrade whatmaps
+
+" Possible options for each group:
+" Acquire: {{{
+syn keyword aptconfAcquire contained
+ \ cdrom Check-Valid-Until CompressionTypes ForceHash ForceIPv4
+ \ ForceIPv6 ftp gpgv GzipIndexes http https Languages Max-ValidTime
+ \ Min-ValidTime PDiffs Queue-Mode Retries Source-Symlinks
+
+syn keyword aptconfAcquireCDROM contained
+ \ AutoDetect CdromOnly Mount UMount
+
+syn keyword aptconfAcquireCompressionTypes contained
+ \ bz2 lzma gz Order
+
+syn keyword aptconfAcquireFTP contained
+ \ ForceExtended Passive Proxy ProxyLogin Timeout
+
+syn keyword aptconfAcquireHTTP contained
+ \ AllowRedirect Dl-Limit Max-Age No-Cache No-Store Pipeline-Depth
+ \ Proxy ProxyAutoDetect Proxy-Auto-Detect Timeout User-Agent
+
+syn keyword aptconfAcquireHTTPS contained
+ \ AllowRedirect CaInfo CaPath CrlFile Dl-Limit IssuerCert Max-Age
+ \ No-Cache No-Store Proxy SslCert SslForceVersion SslKey Timeout
+ \ Verify-Host Verify-Peer
+
+syn keyword aptconfAcquireMaxValidTime contained
+ \ Debian Debian-Security
+
+syn keyword aptconfAcquirePDiffs contained
+ \ FileLimit SizeLimit
+
+syn cluster aptconfAcquire_ contains=aptconfAcquire,
+ \ aptconfAcquireCDROM,aptconfAcquireCompressionTypes,aptconfAcquireFTP,
+ \ aptconfAcquireHTTP,aptconfAcquireHTTPS,aptconfAcquireMaxValidTime,
+ \ aptconfAcquirePDiffs
+" }}}
+" Adequate: {{{
+syn keyword aptconfAdequate contained
+ \ Enabled
+
+syn cluster aptconfAdequate_ contains=aptconfAdequate
+" }}}
+" Apt: {{{
+syn keyword aptconfApt contained
+ \ Architecture Architectures Archive Authentication AutoRemove
+ \ Build-Essential Build-Profiles Cache Cache-Grow Cache-Limit
+ \ Cache-Start CDROM Changelogs Clean-Installed Compressor
+ \ Default-Release Force-LoopBreak Get Ignore-Hold Immediate-Configure
+ \ Install-Recommends Install-Suggests Keep-Fds List-Cleanup
+ \ Move-Autobit-Sections NeverAutoRemove Never-MarkAuto-Sections
+ \ Periodic Status-Fd Update VersionedKernelPackages
+
+syn keyword aptconfAptAuthentication contained
+ \ TrustCDROM
+
+syn keyword aptconfAptAutoRemove contained
+ \ RecommendsImportant SuggestsImportant
+
+syn keyword aptconfAptCache contained
+ \ AllNames AllVersions Generate GivenOnly Important Installed NamesOnly
+ \ RecurseDepends ShowFull
+
+syn keyword aptconfAptCDROM contained
+ \ Fast NoAct NoMount Rename
+
+syn keyword aptconfAptChangelogs contained
+ \ Server
+
+syn keyword aptconfAptCompressor contained
+ \ bzip2 gzip lzma xz
+
+syn keyword aptconfAptCompressorAll contained
+ \ Binary CompressArg Cost Extension Name UncompressArg
+
+syn keyword aptconfAptGet contained
+ \ AllowUnauthenticated Arch-Only Assume-No Assume-Yes AutomaticRemove
+ \ Build-Dep-Automatic Compile Diff-Only Download Download-Only Dsc-Only
+ \ Fix-Broken Fix-Missing Force-Yes HideAutoRemove Host-Architecture
+ \ List-Cleanup Only-Source Print-URIs Purge ReInstall Remove
+ \ Show-Upgraded Show-User-Simulation-Note Show-Versions Simulate
+ \ Tar-Only Trivial-Only Upgrade
+
+syn keyword aptconfAptPeriodic contained
+ \ AutocleanInterval BackupArchiveInterval BackupLevel
+ \ Download-Upgradeable-Packages Download-Upgradeable-Packages-Debdelta
+ \ Enable MaxAge MaxSize MinAge Unattended-Upgrade Update-Package-Lists
+ \ Verbose
+
+syn keyword aptconfAptUpdate contained
+ \ List-Refresh Pre-Invoke Post-Invoke Post-Invoke-Success
+
+syn cluster aptconfApt_ contains=aptconfApt,
+ \ aptconfAptAuthentication,aptconfAptAutoRemove,aptconfAptCache,
+ \ aptconfAptCDROM,aptconfAptChangelogs,aptconfAptCompressor,
+ \ aptconfAptCompressorAll,aptconfAptGet,aptconfAptPeriodic,
+ \ aptconfAptUpdate
+" }}}
+" Aptitude: {{{
+syn keyword aptconfAptitude contained
+ \ Allow-Null-Upgrade Always-Use-Safe-Resolver Autoclean-After-Update
+ \ Auto-Install Auto-Fix-Broken Cmdline Debtags-Binary
+ \ Debtags-Update-Options Delete-Unused Delete-Unused-Pattern
+ \ Display-Planned-Action Forget-New-On-Install Forget-New-On-Update
+ \ Get-Root-Command Ignore-Old-Tmp Ignore-Recommends-Important
+ \ Keep-Recommends Keep-Suggests Keep-Unused-Pattern LockFile Log
+ \ Logging Parse-Description-Bullets Pkg-Display-Limit ProblemResolver
+ \ Purge-Unused Recommends-Important Safe-Resolver Screenshot Sections
+ \ Simulate Spin-Interval Suggests-Important Suppress-Read-Only-Warning
+ \ Theme Track-Dselect-State UI Warn-Not-Root
+
+syn keyword aptconfAptitudeCmdline contained
+ \ Always-Prompt Assume-Yes Disable-Columns Download-Only Fix-Broken
+ \ Ignore-Trust-Violations Package-Display-Format Package-Display-Width
+ \ Progress Request-Strictness Resolver-Debug Resolver-Dump
+ \ Resolver-Show-Steps Safe-Upgrade Show-Deps Show-Size-Changes
+ \ Show-Versions Show-Why Simulate Verbose Version-Display-Format
+ \ Versions-Group-By Versions-Show-Package-Names Visual-Preview
+ \ Why-Display-Mode
+
+syn keyword aptconfAptitudeCmdlineProgress contained
+ \ Percent-On-Right Retain-Completed
+
+syn keyword aptconfAptitudeCmdlineSafeUpgrade contained
+ \ No-New-Installs
+
+syn keyword aptconfAptitudeLogging contained
+ \ File Levels
+
+syn keyword aptconfAptitudeProblemResolver contained
+ \ Allow-Break-Holds BreakHoldScore Break-Hold-Level BrokenScore
+ \ DefaultResolutionScore Discard-Null-Solution
+ \ EssentialRemoveScore ExtraScore FullReplacementScore FutureHorizon
+ \ Hints ImportantScore Infinity InstallScore Keep-All-Level KeepScore
+ \ NonDefaultScore Non-Default-Level OptionalScore PreserveAutoScore
+ \ PreserveManualScore RemoveScore Remove-Essential-Level Remove-Level
+ \ RequiredScore ResolutionScore Safe-Level SolutionCost StandardScore
+ \ StepLimit StepScore Trace-Directory Trace-File
+ \ UndoFullReplacementScore UnfixedSoftScore UpgradeScore
+
+syn keyword aptconfAptitudeSafeResolver contained
+ \ No-New-Installs No-New-Upgrades Show-Resolver-Actions
+
+syn keyword aptconfAptitudeScreenshot contained
+ \ Cache-Max IncrementalLoadLimit
+
+syn keyword aptconfAptitudeSections contained
+ \ Descriptions Top-Sections
+
+syn keyword aptconfAptitudeUI contained
+ \ Advance-On-Action Auto-Show-Reasons Default-Grouping
+ \ Default-Package-View Default-Preview-Grouping Default-Sorting
+ \ Description-Visible-By-Default Exit-On-Last-Close Fill-Text
+ \ Flat-View-As-First-View HelpBar Incremental-Search InfoAreaTabs
+ \ KeyBindings MenuBar-Autohide Minibuf-Download-Bar Minibuf-Prompts
+ \ New-package-Commands Package-Display-Format Package-Header-Format
+ \ Package-Status-Format Pause-After-Download Preview-Limit
+ \ Prompt-On-Exit Styles ViewTabs
+
+syn keyword aptconfAptitudeUIKeyBindings contained
+ \ ApplySolution Begin BugReport Cancel Changelog ChangePkgTreeGrouping
+ \ ChangePkgTreeLimit ChangePkgTreeSorting ClearAuto CollapseAll
+ \ CollapseTree Commit Confirm Cycle CycleNext CycleOrder CyclePrev
+ \ DelBOL DelBack DelEOL DelForward Dependencies DescriptionCycle
+ \ DescriptionDown DescriptionUp DoInstallRun Down DpkgReconfigure
+ \ DumpResolver EditHier End ExamineSolution ExpandAll ExpandTree
+ \ FirstSolution ForbidUpgrade ForgetNewPackages Help HistoryNext
+ \ HistoryPrev Hold Install InstallSingle Keep LastSolution Left
+ \ LevelDown LevelUp MarkUpgradable MineFlagSquare MineLoadGame
+ \ MineSaveGame MineSweepSquare MineUncoverSquare MineUncoverSweepSquare
+ \ NextPage NextSolution No Parent PrevPage PrevSolution Purge
+ \ PushButton Quit QuitProgram RejectBreakHolds Refresh Remove
+ \ ReInstall RepeatSearchBack ReSearch ReverseDependencies Right
+ \ SaveHier Search SearchBack SearchBroken SetAuto ShowHideDescription
+ \ SolutionActionApprove SolutionActionReject ToggleExpanded
+ \ ToggleMenuActive Undo Up UpdatePackageList Versions Yes
+
+syn keyword aptconfAptitudeUIStyles contained
+ \ Bullet ChangeLogNewerVersion Default DepBroken DisabledMenuEntry
+ \ DownloadHit DownloadProgress EditLine Error Header HighlightedMenuBar
+ \ HighlightedMenuEntry MediaChange MenuBar MenuBorder MenuEntry
+ \ MineBomb MineBorder MineFlag MineNumber1 MineNumber2 MineNumber3
+ \ MineNumber4 MineNumber5 MineNumber6 MineNumber7 MineNumber8
+ \ MultiplexTab MultiplexTabHighlighted PkgBroken PkgBrokenHighlighted
+ \ PkgIsInstalled PkgIsInstalledHighlighted PkgNotInstalled
+ \ PkgNotInstalledHighlighted PkgToDowngrade PkgToDowngradeHighlighted
+ \ PkgToHold PkgToHoldHighlighted PkgToInstall PkgToInstallHighlighted
+ \ PkgToRemove PkgToRemoveHighlighted PkgToUpgrade
+ \ PkgToUpgradeHighlighted Progress SolutionActionApproved
+ \ SolutionActionRejected Status TreeBackground TrustWarning
+
+syn keyword aptconfAptitudeUIStylesElements contained
+ \ bg clear fg flip set
+
+syn cluster aptconfAptitude_ contains=aptconfAptitude,
+ \ aptconfAptitudeCmdline,aptconfAptitudeCmdlineProgress,
+ \ aptconfAptitudeCmdlineSafeUpgrade,aptconfAptitudeLogging,
+ \ aptconfAptitudeProblemResolver,aptconfAptitudeSafeResolver,
+ \ aptconfAptitudeScreenshot,aptconfAptitudeSections,aptconfAptitudeUI,
+ \ aptconfAptitudeUIKeyBindings,aptconfAptitudeUIStyles,
+ \ aptconfAptitudeUIStylesElements
+" }}}
+" AptListbugs: {{{
+syn keyword aptconfAptListbugs contained
+ \ IgnoreRegexp Severities
+
+syn cluster aptconfAptListbugs_ contains=aptconfAptListbugs
+" }}}
+" DebTags: {{{
+syn keyword aptconfDebTags contained
+ \ Vocabulary
+
+syn cluster aptconfDebTags_ contains=aptconfDebTags
+" }}}
+" Debug: {{{
+syn keyword aptconfDebug contained
+ \ Acquire aptcdrom BuildDeps Hashes IdentCdrom Nolocking
+ \ pkgAcquire pkgAutoRemove pkgCacheGen pkgDepCache pkgDPkgPM
+ \ pkgDPkgProgressReporting pkgInitialize pkgOrderList
+ \ pkgPackageManager pkgPolicy pkgProblemResolver RunScripts
+ \ sourceList
+
+syn keyword aptconfDebugAcquire contained
+ \ cdrom Ftp gpgv Http Https netrc
+
+syn keyword aptconfDebugPkgAcquire contained
+ \ Auth Diffs RRed Worker
+
+syn keyword aptconfDebugPkgDepCache contained
+ \ AutoInstall Marker
+
+syn keyword aptconfDebugPkgProblemResolver contained
+ \ ShowScores
+
+syn cluster aptconfDebug_ contains=aptconfDebug,
+ \ aptconfDebugAcquire,aptconfDebugPkgAcquire,aptconfDebugPkgDepCache,
+ \ aptconfDebugPkgProblemResolver
+" }}}
+" Dir: {{{
+syn keyword aptconfDir contained
+ \ Aptitude Bin Cache Etc Ignore-Files-Silently Log Media Parts RootDir
+ \ State
+
+syn keyword aptconfDirAptitude contained
+ \ state
+
+syn keyword aptconfDirBin contained
+ \ apt-get apt-cache dpkg dpkg-buildpackage dpkg-source gpg gzip Methods
+ \ solvers
+
+syn keyword aptconfDirCache contained
+ \ Archives Backup pkgcache srcpkgcache
+
+syn keyword aptconfDirEtc contained
+ \ Main Netrc Parts Preferences PreferencesParts SourceList SourceParts
+ \ VendorList VendorParts Trusted TrustedParts
+
+syn keyword aptconfDirLog contained
+ \ History Terminal
+
+syn keyword aptconfDirMedia contained
+ \ MountPath
+
+syn keyword aptconfDirState contained
+ \ cdroms extended_states Lists mirrors preferences status
+
+syn cluster aptconfDir_ contains=aptconfDir,
+ \ aptconfDirAptitude,aptconfDirBin,aptconfDirCache,aptconfDirEtc,
+ \ aptconfDirLog,aptconfDirMedia,aptconfDirState
+" }}}
+" DPkg: {{{
+syn keyword aptconfDPkg contained
+ \ Build-Options Chroot-Directory ConfigurePending FlushSTDIN
+ \ MaxArgBytes MaxArgs MaxBytes NoTriggers options
+ \ Pre-Install-Pkgs Pre-Invoke Post-Invoke
+ \ Run-Directory StopOnError Tools TriggersPending
+
+syn keyword aptconfDPkgTools contained
+ \ adequate InfoFD Options Version
+
+syn cluster aptconfDPkg_ contains=aptconfDPkg,
+ \ aptconfDPkgTools
+" }}}
+" DSelect: {{{
+syn keyword aptconfDSelect contained
+ \ CheckDir Clean Options PromptAfterUpdate UpdateOptions
+
+syn cluster aptconfDSelect_ contains=aptconfDSelect
+" }}}
+" OrderList: {{{
+syn keyword aptconfOrderList contained
+ \ Score
+
+syn keyword aptconfOrderListScore contained
+ \ Delete Essential Immediate PreDepends
+
+syn cluster aptconfOrderList_ contains=aptconfOrderList,
+ \ aptconfOrderListScore
+" }}}
+" PackageManager: {{{
+syn keyword aptconfPackageManager contained
+ \ Configure
+
+syn cluster aptconfPackageManager_ contains=aptconfPackageManager
+" }}}
+" PkgCacheGen: {{{
+syn keyword aptconfPkgCacheGen contained
+ \ Essential
+
+syn cluster aptconfPkgCacheGen_ contains=aptconfPkgCacheGen
+" }}}
+" Quiet: {{{
+syn keyword aptconfQuiet contained
+ \ NoUpdate
+
+syn cluster aptconfQuiet_ contains=aptconfQuiet
+" }}}
+" Rpm: {{{
+syn keyword aptconfRpm contained
+ \ Post-Invoke Pre-Invoke
+
+syn cluster aptconfRpm_ contains=aptconfRpm
+" }}}
+" Synaptic: {{{
+syn keyword aptconfSynaptic contained
+ \ AskQuitOnProceed AskRelated AutoCleanCache CleanCache DefaultDistro
+ \ delAction delHistory Download-Only ftpProxy ftpProxyPort httpProxy
+ \ httpProxyPort Install-Recommends LastSearchType Maximized noProxy
+ \ OneClickOnStatusActions ShowAllPkgInfoInMain showWelcomeDialog
+ \ ToolbarState undoStackSize update upgradeType useProxy UseStatusColors
+ \ UseTerminal useUserFont useUserTerminalFont ViewMode
+ \ availVerColumnPos availVerColumnVisible componentColumnPos
+ \ componentColumnVisible descrColumnPos descrColumnVisible
+ \ downloadSizeColumnPos downloadSizeColumnVisible hpanedPos
+ \ instVerColumnPos instVerColumnVisible instSizeColumnPos
+ \ instSizeColumnVisible nameColumnPos nameColumnVisible
+ \ sectionColumnPos sectionColumnVisible statusColumnPos
+ \ statusColumnVisible supportedColumnPos supportedColumnVisible
+ \ vpanedPos windowWidth windowHeight windowX windowY closeZvt
+ \ color-available color-available-locked color-broken color-downgrade
+ \ color-install color-installed-locked color-installed-outdated
+ \ color-installed-updated color-new color-purge color-reinstall
+ \ color-remove color-upgrade
+
+syn keyword aptconfSynapticUpdate contained
+ \ last type
+
+syn cluster aptconfSynaptic_ contains=aptconfSynaptic,
+ \ aptconfSynapticUpdate
+" }}}
+" Unattended Upgrade: {{{
+syn keyword aptconfUnattendedUpgrade contained
+ \ Allow-APT-Mark-Fallback Allow-downgrade AutoFixInterruptedDpkg
+ \ Automatic-Reboot Automatic-Reboot-Time Automatic-Reboot-WithUsers
+ \ Debug InstallOnShutdown Mail MailOnlyOnError MailReport MinimalSteps
+ \ OnlyOnACPower Origins-Pattern Package-Blacklist
+ \ Remove-New-Unused-Dependencies Remove-Unused-Dependencies
+ \ Remove-Unused-Kernel-Packages Skip-Updates-On-Metered-Connections
+ \ SyslogEnable SyslogFacility Verbose
+
+syn cluster aptconfUnattendedUpgrade_ contains=aptconfUnattendedUpgrade
+" }}}
+" Whatmaps: {{{
+syn keyword aptconfWhatmaps contained
+ \ Enable-Restart Security-Update-Origins
+
+syn cluster aptconfWhatmaps_ contains=aptconfWhatmaps
+" }}}
+
+syn case match
+
+" Now put all the keywords (and 'valid' options) in a single cluster:
+syn cluster aptconfOptions contains=aptconfRegexpOpt,
+ \ @aptconfAcquire_,@aptconfAdequate_,@aptconfApt_,@aptconfAptitude_,
+ \ @aptconfAptListbugs_,@aptconfDebTags_,@aptconfDebug_,@aptconfDir_,
+ \ @aptconfDPkg_,@aptconfDSelect_,@aptconfOrderList_,
+ \ @aptconfPackageManager_,@aptconfPkgCacheGen_,@aptconfQuiet_,
+ \ @aptconfRpm_,@aptconfSynaptic_,@aptconfUnattendedUpgrade_,
+ \ @aptconfWhatmaps_
+
+" Syntax:
+syn match aptconfSemiColon ';'
+syn match aptconfDoubleColon '::'
+syn match aptconfCurlyBraces '[{}]'
+syn region aptconfValue start='"' end='"' oneline display
+syn region aptconfInclude matchgroup=aptconfOperator start='{' end='}' contains=ALLBUT,aptconfGroup,aptconfGroupIncomplete,@aptconfCommentSpecial
+syn region aptconfInclude matchgroup=aptconfOperator start='::' end='{'me=s-1 contains=@aptconfOptions,aptconfError display
+syn region aptconfInclude matchgroup=aptconfOperator start='::' end='::\|\s'me=s-1 oneline contains=@aptconfOptions,aptconfError display
+
+" Basic Syntax Errors: XXX avoid to generate false positives !!!
+"
+" * Undocumented inline comment. Since it is currently largely used, and does
+" not seem to cause trouble ('apt-config dump' never complains when # is used
+" the same way than //) it has been moved to aptconfComment group. But it
+" still needs to be defined here (i.e. before #clear and #include directives)
+syn match aptconfComment '#.*' contains=@aptconfCommentSpecial
+"
+" * When a semicolon is missing after a double-quoted string:
+" There are some cases (for example in the Dir group of options, but not only)
+" where this syntax is valid. So we don't treat it as a strict error.
+syn match aptconfAsError display '"[^"]*"[^;]'me=e-1
+syn match aptconfAsError display '"[^"]*"$'
+"
+" * When double quotes are missing around a value (before a semicolon):
+" This omission has no effect if the value is a single string (without blank
+" characters). But apt.conf(5) says that quotes are required, and this item
+" avoids to match unquoted keywords.
+syn match aptconfAsError display '\s[^"[:blank:]]*[^}"];'me=e-1
+"
+" * When only one double quote is missing around a value (before a semicolon):
+" No comment for that: it must be highly visible.
+syn match aptconfError display '\(\s\|;\)"[^"[:blank:]]\+;'me=e-1
+syn match aptconfError display '\(\s\|;\)[^"[:blank:]]\+";'me=e-1
+"
+" * When space is missing between option and (quoted) value:
+" TODO (partially implemented)
+syn match aptconfError display '::[^[:blank:]]*"'
+
+" Special Actions:
+syn match aptconfAction '^#\(clear\|include\)\>'
+syn region aptconfAction matchgroup=aptconfAction start='^#clear\>' end=';'me=s-1 oneline contains=aptconfGroup,aptconfDoubleColon,@aptconfOptions
+syn region aptconfAction matchgroup=aptconfAction start='^#include\>' end=';'me=s-1 oneline contains=aptconfRegexpOpt
+
+" Comments:
+syn keyword aptconfTodo TODO FIXME NOTE XXX contained
+syn cluster aptconfCommentSpecial contains=@Spell,aptconfTodo
+syn match aptconfComment '//.*' contains=@aptconfCommentSpecial
+syn region aptconfComment start='/\*' end='\*/' contains=@aptconfCommentSpecial
+
+" Highlight Definitions:
+hi def link aptconfTodo Todo
+hi def link aptconfError Error
+hi def link aptconfComment Comment
+hi def link aptconfOperator Operator
+
+hi def link aptconfAction PreProc
+hi def link aptconfOption Type
+hi def link aptconfValue String
+hi def link aptconfRegexpOpt Normal
+hi def link aptconfAsError Special
+
+hi def link aptconfSemiColon aptconfOperator
+hi def link aptconfDoubleColon aptconfOperator
+hi def link aptconfCurlyBraces aptconfOperator
+
+hi def link aptconfGroupIncomplete Special
+hi def link aptconfGroup aptconfOption
+
+hi def link aptconfAcquire aptconfOption
+hi def link aptconfAcquireCDROM aptconfOption
+hi def link aptconfAcquireCompressionTypes aptconfOption
+hi def link aptconfAcquireFTP aptconfOption
+hi def link aptconfAcquireHTTP aptconfOption
+hi def link aptconfAcquireHTTPS aptconfOption
+hi def link aptconfAcquireMaxValidTime aptconfOption
+hi def link aptconfAcquirePDiffs aptconfOption
+
+hi def link aptconfAdequate aptconfOption
+
+hi def link aptconfApt aptconfOption
+hi def link aptconfAptAuthentication aptconfOption
+hi def link aptconfAptAutoRemove aptconfOption
+hi def link aptconfAptCache aptconfOption
+hi def link aptconfAptCDROM aptconfOption
+hi def link aptconfAptChangelogs aptconfOption
+hi def link aptconfAptCompressor aptconfOption
+hi def link aptconfAptCompressorAll aptconfOption
+hi def link aptconfAptGet aptconfOption
+hi def link aptconfAptPeriodic aptconfOption
+hi def link aptconfAptUpdate aptconfOption
+
+hi def link aptconfAptitude aptconfOption
+hi def link aptconfAptitudeCmdline aptconfOption
+hi def link aptconfAptitudeCmdlineProgress aptconfOption
+hi def link aptconfAptitudeCmdlineSafeUpgrade aptconfOption
+hi def link aptconfAptitudeLogging aptconfOption
+hi def link aptconfAptitudeProblemResolver aptconfOption
+hi def link aptconfAptitudeSafeResolver aptconfOption
+hi def link aptconfAptitudeScreenshot aptconfOption
+hi def link aptconfAptitudeSections aptconfOption
+hi def link aptconfAptitudeUI aptconfOption
+hi def link aptconfAptitudeUIKeyBindings aptconfOption
+hi def link aptconfAptitudeUIStyles aptconfOption
+hi def link aptconfAptitudeUIStylesElements aptconfOption
+
+hi def link aptconfAptListbugs aptconfOption
+
+hi def link aptconfDebTags aptconfOption
+
+hi def link aptconfDebug aptconfOption
+hi def link aptconfDebugAcquire aptconfOption
+hi def link aptconfDebugPkgAcquire aptconfOption
+hi def link aptconfDebugPkgDepCache aptconfOption
+hi def link aptconfDebugPkgProblemResolver aptconfOption
+
+hi def link aptconfDir aptconfOption
+hi def link aptconfDirAptitude aptconfOption
+hi def link aptconfDirBin aptconfOption
+hi def link aptconfDirCache aptconfOption
+hi def link aptconfDirEtc aptconfOption
+hi def link aptconfDirLog aptconfOption
+hi def link aptconfDirMedia aptconfOption
+hi def link aptconfDirState aptconfOption
+
+hi def link aptconfDPkg aptconfOption
+hi def link aptconfDPkgTools aptconfOption
+
+hi def link aptconfDSelect aptconfOption
+
+hi def link aptconfOrderList aptconfOption
+hi def link aptconfOrderListScore aptconfOption
+
+hi def link aptconfPackageManager aptconfOption
+
+hi def link aptconfPkgCacheGen aptconfOption
+
+hi def link aptconfQuiet aptconfOption
+
+hi def link aptconfRpm aptconfOption
+
+hi def link aptconfSynaptic aptconfOption
+hi def link aptconfSynapticUpdate aptconfOption
+
+hi def link aptconfUnattendedUpgrade aptconfOption
+
+hi def link aptconfWhatmaps aptconfOption
+
+let b:current_syntax = "aptconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/arch.vim b/runtime/syntax/arch.vim
new file mode 100644
index 0000000..f9d095e
--- /dev/null
+++ b/runtime/syntax/arch.vim
@@ -0,0 +1,41 @@
+" Vim syntax file
+" Language: GNU Arch inventory file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-06-17
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword+=-
+
+syn keyword archTodo TODO FIXME XXX NOTE
+
+syn region archComment display start='^\%(#\|\s\)' end='$'
+ \ contains=archTodo,@Spell
+
+syn match archBegin display '^' nextgroup=archKeyword,archComment
+
+syn keyword archKeyword contained implicit tagline explicit names
+syn keyword archKeyword contained untagged-source
+ \ nextgroup=archTMethod skipwhite
+syn keyword archKeyword contained exclude junk backup precious unrecognized
+ \ source nextgroup=archRegex skipwhite
+
+syn keyword archTMethod contained source precious backup junk unrecognized
+
+syn match archRegex contained '\s*\zs.*'
+
+hi def link archTodo Todo
+hi def link archComment Comment
+hi def link archKeyword Keyword
+hi def link archTMethod Type
+hi def link archRegex String
+
+let b:current_syntax = "arch"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/arduino.vim b/runtime/syntax/arduino.vim
new file mode 100644
index 0000000..2f06eb6
--- /dev/null
+++ b/runtime/syntax/arduino.vim
@@ -0,0 +1,83 @@
+" Vim syntax file
+" Language: Arduino
+" Maintainer: Johannes Hoff <johannes@johanneshoff.com>
+" Last Change: 21 October 2021
+" License: VIM license (:help license, replace vim by arduino.vim)
+
+" Syntax highlighting like in the Arduino IDE
+" Automatically generated by the script available at
+" https://github.com/johshoff/arduino-vim-syntax
+" Using keywords from <arduino>/build/shared/lib/keywords.txt
+" From version: 1.8.16
+
+" Thanks to Rik, Erik Nomitch, Adam Obeng, Graeme Cross and Niall Parker
+" for helpful feedback!
+
+" 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
+
+" Read the C syntax to start with
+if version < 600
+ so <sfile>:p:h/cpp.vim
+else
+ runtime! syntax/cpp.vim
+endif
+
+syn keyword arduinoConstant BIN CHANGE DEC DEFAULT EXTERNAL FALLING HALF_PI HEX
+syn keyword arduinoConstant HIGH INPUT INPUT_PULLUP INTERNAL INTERNAL1V1
+syn keyword arduinoConstant INTERNAL2V56 LED_BUILTIN LED_BUILTIN_RX
+syn keyword arduinoConstant LED_BUILTIN_TX LOW LSBFIRST MSBFIRST OCT OUTPUT PI
+syn keyword arduinoConstant RISING TWO_PI
+
+syn keyword arduinoFunc analogRead analogReadResolution analogReference
+syn keyword arduinoFunc analogWrite analogWriteResolution attachInterrupt
+syn keyword arduinoFunc bit bitClear bitRead bitSet bitWrite delay
+syn keyword arduinoFunc delayMicroseconds detachInterrupt
+syn keyword arduinoFunc digitalPinToInterrupt digitalRead digitalWrite
+syn keyword arduinoFunc highByte interrupts lowByte micros millis
+syn keyword arduinoFunc noInterrupts noTone pinMode pulseIn pulseInLong
+syn keyword arduinoFunc shiftIn shiftOut tone yield
+
+syn keyword arduinoMethod available availableForWrite begin charAt compareTo
+syn keyword arduinoMethod concat end endsWith equals equalsIgnoreCase export
+syn keyword arduinoMethod final find findUntil flush getBytes indexOf
+syn keyword arduinoMethod lastIndexOf length loop override parseFloat
+syn keyword arduinoMethod parseInt peek print println read readBytes
+syn keyword arduinoMethod readBytesUntil readString readStringUntil replace
+syn keyword arduinoMethod setCharAt setTimeout setup startsWith Stream
+syn keyword arduinoMethod substring toCharArray toInt toLowerCase toUpperCase
+syn keyword arduinoMethod trim
+
+syn keyword arduinoModule Keyboard Mouse Serial Serial1 Serial2 Serial3
+syn keyword arduinoModule SerialUSB
+
+syn keyword arduinoStdFunc abs accept acos acosf asin asinf atan atan2 atan2f
+syn keyword arduinoStdFunc atanf cbrt cbrtf ceil ceilf click constrain
+syn keyword arduinoStdFunc copysign copysignf cos cosf cosh coshf degrees exp
+syn keyword arduinoStdFunc expf fabs fabsf fdim fdimf floor floorf fma fmaf
+syn keyword arduinoStdFunc fmax fmaxf fmin fminf fmod fmodf hypot hypotf
+syn keyword arduinoStdFunc isfinite isinf isnan isPressed ldexp ldexpf log
+syn keyword arduinoStdFunc log10 log10f logf lrint lrintf lround lroundf map
+syn keyword arduinoStdFunc max min move pow powf press radians random
+syn keyword arduinoStdFunc randomSeed release releaseAll round roundf signbit
+syn keyword arduinoStdFunc sin sinf sinh sinhf sq sqrt sqrtf tan tanf tanh
+syn keyword arduinoStdFunc tanhf trunc truncf
+
+syn keyword arduinoType _Bool _Complex _Imaginary array atomic_bool
+syn keyword arduinoType atomic_char atomic_int atomic_llong atomic_long
+syn keyword arduinoType atomic_schar atomic_short atomic_uchar atomic_uint
+syn keyword arduinoType atomic_ullong atomic_ulong atomic_ushort boolean
+syn keyword arduinoType byte char16_t char32_t complex NULL null PROGMEM
+syn keyword arduinoType String word
+
+hi def link arduinoType Type
+hi def link arduinoConstant Constant
+hi def link arduinoStdFunc Function
+hi def link arduinoFunc Function
+hi def link arduinoMethod Function
+hi def link arduinoModule Identifier
diff --git a/runtime/syntax/art.vim b/runtime/syntax/art.vim
new file mode 100644
index 0000000..8551198
--- /dev/null
+++ b/runtime/syntax/art.vim
@@ -0,0 +1,50 @@
+" Vim syntax file
+" Language: ART-IM and ART*Enterprise
+" Maintainer: Dorai Sitaram <ds26@gte.com>
+" URL: http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html
+" Last Change: 2011 Dec 28 by Thilo Six
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case ignore
+
+syn keyword artspform => and assert bind
+syn keyword artspform declare def-art-fun deffacts defglobal defrule defschema do
+syn keyword artspform else for if in$ not or
+syn keyword artspform progn retract salience schema test then while
+
+syn match artvariable "?[^ \t";()|&~]\+"
+
+syn match artglobalvar "?\*[^ \t";()|&~]\+\*"
+
+syn match artinstance "![^ \t";()|&~]\+"
+
+syn match delimiter "[()|&~]"
+
+syn region string start=/"/ skip=/\\[\\"]/ end=/"/
+
+syn match number "\<[-+]\=\([0-9]\+\(\.[0-9]*\)\=\|\.[0-9]\+\)\>"
+
+syn match comment ";.*$"
+
+syn match comment "#+:\=ignore" nextgroup=artignore skipwhite skipnl
+
+syn region artignore start="(" end=")" contained contains=artignore,comment
+
+syn region artignore start=/"/ skip=/\\[\\"]/ end=/"/ contained
+
+hi def link artinstance type
+hi def link artglobalvar preproc
+hi def link artignore comment
+hi def link artspform statement
+hi def link artvariable function
+
+let b:current_syntax = "art"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/asciidoc.vim b/runtime/syntax/asciidoc.vim
new file mode 100644
index 0000000..29451f9
--- /dev/null
+++ b/runtime/syntax/asciidoc.vim
@@ -0,0 +1,185 @@
+" Vim syntax file
+" Language: AsciiDoc
+" Maintainer: @aerostitch on GitHub (tag me in your issue in the
+" github/vim/vim repository and I'll answer when available)
+" Original author: Stuart Rackham <srackham@gmail.com> (inspired by Felix
+" Obenhuber's original asciidoc.vim script).
+" URL: http://asciidoc.org/
+" Licence: GPL (http://www.gnu.org)
+" Remarks: Vim 6 or greater
+" Last Update: 2020 May 03 (see Issue 240)
+" Limitations:
+"
+" - Nested quoted text formatting is highlighted according to the outer
+" format.
+" - If a closing Example Block delimiter may be mistaken for a title
+" underline. A workaround is to insert a blank line before the closing
+" delimiter.
+" - Lines within a paragraph starting with equals characters are
+" highlighted as single-line titles.
+" - Lines within a paragraph beginning with a period are highlighted as
+" block titles.
+
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" Use the default syntax syncing.
+
+" Run :help syn-priority to review syntax matching priority.
+syn keyword asciidocToDo TODO FIXME CHECK TEST XXX ZZZ DEPRECATED
+syn match asciidocBackslash /\\/
+syn region asciidocIdMarker start=/^\$Id:\s/ end=/\s\$$/
+syn match asciidocCallout /\\\@<!<\d\{1,2}>/
+syn match asciidocOpenBlockDelimiter /^--$/
+syn match asciidocLineBreak /[ \t]+$/ containedin=asciidocList
+syn match asciidocRuler /^'\{3,}$/
+syn match asciidocPagebreak /^<\{3,}$/
+syn match asciidocEntityRef /\\\@<!&[#a-zA-Z]\S\{-};/
+syn region asciidocLiteralParagraph start=/\(\%^\|\_^\s*\n\)\@<=\s\+\S\+/ end=/\(^\(+\|--\)\?\s*$\)\@=/ contains=asciidocToDo
+syn match asciidocURL /\\\@<!\<\(http\|https\|ftp\|file\|irc\):\/\/[^| \t]*\(\w\|\/\)/
+syn match asciidocEmail /[\\.:]\@<!\(\<\|<\)\w\(\w\|[.-]\)*@\(\w\|[.-]\)*\w>\?[0-9A-Za-z_]\@!/
+syn match asciidocAttributeRef /\\\@<!{\w\(\w\|[-,+]\)*\([=!@#$%?:].*\)\?}/
+
+" As a damage control measure quoted patterns always terminate at a blank
+" line (see 'Limitations' above).
+syn match asciidocQuotedAttributeList /\\\@<!\[[a-zA-Z0-9_-][a-zA-Z0-9 _-]*\][+_'`#*]\@=/
+syn match asciidocQuotedSubscript /\\\@<!\~\S\_.\{-}\(\~\|\n\s*\n\)/ contains=asciidocEntityRef
+syn match asciidocQuotedSuperscript /\\\@<!\^\S\_.\{-}\(\^\|\n\s*\n\)/ contains=asciidocEntityRef
+
+syn match asciidocQuotedMonospaced /\(^\|[| \t([.,=\]]\)\@<=+\([+ \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(+\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
+syn match asciidocQuotedMonospaced2 /\(^\|[| \t([.,=\]]\)\@<=`\([` \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(`\([| \t)[\],.?!;:=]\|$\)\@=\)/
+syn match asciidocQuotedUnconstrainedMonospaced /[\\+]\@<!++\S\_.\{-}\(++\|\n\s*\n\)/ contains=asciidocEntityRef
+
+syn match asciidocQuotedEmphasized /\(^\|[| \t([.,=\]]\)\@<=_\([_ \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(_\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
+syn match asciidocQuotedEmphasized2 /\(^\|[| \t([.,=\]]\)\@<='\([' \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\('\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
+syn match asciidocQuotedUnconstrainedEmphasized /\\\@<!__\S\_.\{-}\(__\|\n\s*\n\)/ contains=asciidocEntityRef
+
+syn match asciidocQuotedBold /\(^\|[| \t([.,=\]]\)\@<=\*\([* \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(\*\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
+syn match asciidocQuotedUnconstrainedBold /\\\@<!\*\*\S\_.\{-}\(\*\*\|\n\s*\n\)/ contains=asciidocEntityRef
+
+" Don't allow ` in single quoted (a kludge to stop confusion with `monospaced`).
+syn match asciidocQuotedSingleQuoted /\(^\|[| \t([.,=\]]\)\@<=`\([` \n\t]\)\@!\([^`]\|\n\(\s*\n\)\@!\)\{-}[^` \t]\('\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
+
+syn match asciidocQuotedDoubleQuoted /\(^\|[| \t([.,=\]]\)\@<=``\([` \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(''\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
+
+syn match asciidocDoubleDollarPassthrough /\\\@<!\(^\|[^0-9a-zA-Z$]\)\@<=\$\$..\{-}\(\$\$\([^0-9a-zA-Z$]\|$\)\@=\|^$\)/
+syn match asciidocTriplePlusPassthrough /\\\@<!\(^\|[^0-9a-zA-Z$]\)\@<=+++..\{-}\(+++\([^0-9a-zA-Z$]\|$\)\@=\|^$\)/
+
+syn match asciidocAdmonition /^\u\{3,15}:\(\s\+.*\)\@=/
+
+syn region asciidocTable_OLD start=/^\([`.']\d*[-~_]*\)\+[-~_]\+\d*$/ end=/^$/
+syn match asciidocBlockTitle /^\.[^. \t].*[^-~_]$/ contains=asciidocQuoted.*,asciidocAttributeRef
+syn match asciidocTitleUnderline /[-=~^+]\{2,}$/ transparent contained contains=NONE
+syn match asciidocOneLineTitle /^=\{1,5}\s\+\S.*$/ contains=asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash
+syn match asciidocTwoLineTitle /^[^. +/].*[^.]\n[-=~^+]\{3,}$/ contains=asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash,asciidocTitleUnderline
+
+syn match asciidocAttributeList /^\[[^[ \t].*\]$/
+syn match asciidocQuoteBlockDelimiter /^_\{4,}$/
+syn match asciidocExampleBlockDelimiter /^=\{4,}$/
+syn match asciidocSidebarDelimiter /^*\{4,}$/
+
+" See http://vimdoc.sourceforge.net/htmldoc/usr_44.html for excluding region
+" contents from highlighting.
+syn match asciidocTablePrefix /\(\S\@<!\(\([0-9.]\+\)\([*+]\)\)\?\([<\^>.]\{,3}\)\?\([a-z]\)\?\)\?|/ containedin=asciidocTableBlock contained
+syn region asciidocTableBlock matchgroup=asciidocTableDelimiter start=/^|=\{3,}$/ end=/^|=\{3,}$/ keepend contains=ALL
+syn match asciidocTablePrefix /\(\S\@<!\(\([0-9.]\+\)\([*+]\)\)\?\([<\^>.]\{,3}\)\?\([a-z]\)\?\)\?!/ containedin=asciidocTableBlock contained
+syn region asciidocTableBlock2 matchgroup=asciidocTableDelimiter2 start=/^!=\{3,}$/ end=/^!=\{3,}$/ keepend contains=ALL
+
+syn match asciidocListContinuation /^+$/
+syn region asciidocLiteralBlock start=/^\.\{4,}$/ end=/^\.\{4,}$/ contains=asciidocCallout,asciidocToDo keepend
+syn region asciidocListingBlock start=/^-\{4,}$/ end=/^-\{4,}$/ contains=asciidocCallout,asciidocToDo keepend
+syn region asciidocCommentBlock start="^/\{4,}$" end="^/\{4,}$" contains=asciidocToDo
+syn region asciidocPassthroughBlock start="^+\{4,}$" end="^+\{4,}$"
+
+" Allowing leading \w characters in the filter delimiter is to accomodate
+" the pre version 8.2.7 syntax and may be removed in future releases.
+syn region asciidocFilterBlock start=/^\w*\~\{4,}$/ end=/^\w*\~\{4,}$/
+
+syn region asciidocMacroAttributes matchgroup=asciidocRefMacro start=/\\\@<!<<"\{-}\(\w\|-\|_\|:\|\.\)\+"\?,\?/ end=/\(>>\)\|^$/ contains=asciidocQuoted.* keepend
+syn region asciidocMacroAttributes matchgroup=asciidocAnchorMacro start=/\\\@<!\[\{2}\(\w\|-\|_\|:\|\.\)\+,\?/ end=/\]\{2}/ keepend
+syn region asciidocMacroAttributes matchgroup=asciidocAnchorMacro start=/\\\@<!\[\{3}\(\w\|-\|_\|:\|\.\)\+/ end=/\]\{3}/ keepend
+syn region asciidocMacroAttributes matchgroup=asciidocMacro start=/[\\0-9a-zA-Z]\@<!\w\(\w\|-\)*:\S\{-}\[/ skip=/\\\]/ end=/\]\|^$/ contains=asciidocQuoted.*,asciidocAttributeRef,asciidocEntityRef keepend
+" Highlight macro that starts with an attribute reference (a common idiom).
+syn region asciidocMacroAttributes matchgroup=asciidocMacro start=/\(\\\@<!{\w\(\w\|[-,+]\)*\([=!@#$%?:].*\)\?}\)\@<=\S\{-}\[/ skip=/\\\]/ end=/\]\|^$/ contains=asciidocQuoted.*,asciidocAttributeRef keepend
+syn region asciidocMacroAttributes matchgroup=asciidocIndexTerm start=/\\\@<!(\{2,3}/ end=/)\{2,3}/ contains=asciidocQuoted.*,asciidocAttributeRef keepend
+
+syn match asciidocCommentLine "^//\([^/].*\|\)$" contains=asciidocToDo
+
+syn region asciidocAttributeEntry start=/^:\w/ end=/:\(\s\|$\)/ oneline
+
+" Lists.
+syn match asciidocListBullet /^\s*\zs\(-\|\*\{1,5}\)\ze\s/
+syn match asciidocListNumber /^\s*\zs\(\(\d\+\.\)\|\.\{1,5}\|\(\a\.\)\|\([ivxIVX]\+)\)\)\ze\s\+/
+syn region asciidocListLabel start=/^\s*/ end=/\(:\{2,4}\|;;\)$/ oneline contains=asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash,asciidocToDo keepend
+" DEPRECATED: Horizontal label.
+syn region asciidocHLabel start=/^\s*/ end=/\(::\|;;\)\(\s\+\|\\$\)/ oneline contains=asciidocQuoted.*,asciidocMacroAttributes keepend
+" Starts with any of the above.
+syn region asciidocList start=/^\s*\(-\|\*\{1,5}\)\s/ start=/^\s*\(\(\d\+\.\)\|\.\{1,5}\|\(\a\.\)\|\([ivxIVX]\+)\)\)\s\+/ start=/.\+\(:\{2,4}\|;;\)$/ end=/\(^[=*]\{4,}$\)\@=/ end=/\(^\(+\|--\)\?\s*$\)\@=/ contains=asciidocList.\+,asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash,asciidocCommentLine,asciidocAttributeList,asciidocToDo
+
+hi def link asciidocAdmonition Special
+hi def link asciidocAnchorMacro Macro
+hi def link asciidocAttributeEntry Special
+hi def link asciidocAttributeList Special
+hi def link asciidocAttributeMacro Macro
+hi def link asciidocAttributeRef Special
+hi def link asciidocBackslash Special
+hi def link asciidocBlockTitle Title
+hi def link asciidocCallout Label
+hi def link asciidocCommentBlock Comment
+hi def link asciidocCommentLine Comment
+hi def link asciidocDoubleDollarPassthrough Special
+hi def link asciidocEmail Macro
+hi def link asciidocEntityRef Special
+hi def link asciidocExampleBlockDelimiter Type
+hi def link asciidocFilterBlock Type
+hi def link asciidocHLabel Label
+hi def link asciidocIdMarker Special
+hi def link asciidocIndexTerm Macro
+hi def link asciidocLineBreak Special
+hi def link asciidocOpenBlockDelimiter Label
+hi def link asciidocListBullet Label
+hi def link asciidocListContinuation Label
+hi def link asciidocListingBlock Identifier
+hi def link asciidocListLabel Label
+hi def link asciidocListNumber Label
+hi def link asciidocLiteralBlock Identifier
+hi def link asciidocLiteralParagraph Identifier
+hi def link asciidocMacroAttributes Label
+hi def link asciidocMacro Macro
+hi def link asciidocOneLineTitle Title
+hi def link asciidocPagebreak Type
+hi def link asciidocPassthroughBlock Identifier
+hi def link asciidocQuoteBlockDelimiter Type
+hi def link asciidocQuotedAttributeList Special
+hi def link asciidocQuotedBold Special
+hi def link asciidocQuotedDoubleQuoted Label
+hi def link asciidocQuotedEmphasized2 Type
+hi asciidocQuotedEmphasizedItalic term=italic cterm=italic gui=italic
+hi def link asciidocQuotedEmphasized asciidocQuotedEmphasizedItalic
+hi def link asciidocQuotedMonospaced2 Identifier
+hi def link asciidocQuotedMonospaced Identifier
+hi def link asciidocQuotedSingleQuoted Label
+hi def link asciidocQuotedSubscript Type
+hi def link asciidocQuotedSuperscript Type
+hi def link asciidocQuotedUnconstrainedBold Special
+hi def link asciidocQuotedUnconstrainedEmphasized Type
+hi def link asciidocQuotedUnconstrainedMonospaced Identifier
+hi def link asciidocRefMacro Macro
+hi def link asciidocRuler Type
+hi def link asciidocSidebarDelimiter Type
+hi def link asciidocTableBlock2 NONE
+hi def link asciidocTableBlock NONE
+hi def link asciidocTableDelimiter2 Label
+hi def link asciidocTableDelimiter Label
+hi def link asciidocTable_OLD Type
+hi def link asciidocTablePrefix2 Label
+hi def link asciidocTablePrefix Label
+hi def link asciidocToDo Todo
+hi def link asciidocTriplePlusPassthrough Special
+hi def link asciidocTwoLineTitle Title
+hi def link asciidocURL Macro
+let b:current_syntax = "asciidoc"
+
+" vim: wrap et sw=2 sts=2:
diff --git a/runtime/syntax/asm.vim b/runtime/syntax/asm.vim
new file mode 100644
index 0000000..73f283a
--- /dev/null
+++ b/runtime/syntax/asm.vim
@@ -0,0 +1,164 @@
+" Vim syntax file
+" Language: GNU Assembler
+" Maintainer: Doug Kearns dougkearns@gmail.com
+" Previous Maintainers: Erik Wognsen <erik.wognsen@gmail.com>
+" Kevin Dahlhausen <kdahlhaus@yahoo.com>
+" Contributors: Ori Avtalion, Lakshay Garg
+" Last Change: 2020 Oct 31
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case ignore
+
+" storage types
+syn match asmType "\.long"
+syn match asmType "\.ascii"
+syn match asmType "\.asciz"
+syn match asmType "\.byte"
+syn match asmType "\.double"
+syn match asmType "\.float"
+syn match asmType "\.hword"
+syn match asmType "\.int"
+syn match asmType "\.octa"
+syn match asmType "\.quad"
+syn match asmType "\.short"
+syn match asmType "\.single"
+syn match asmType "\.space"
+syn match asmType "\.string"
+syn match asmType "\.word"
+
+syn match asmIdentifier "[a-z_][a-z0-9_]*"
+syn match asmLabel "[a-z_][a-z0-9_]*:"he=e-1
+
+" Various #'s as defined by GAS ref manual sec 3.6.2.1
+" Technically, the first asmDecimal def is actually octal,
+" since the value of 0-7 octal is the same as 0-7 decimal,
+" I (Kevin) prefer to map it as decimal:
+syn match asmDecimal "\<0\+[1-7]\=\>" display
+syn match asmDecimal "\<[1-9]\d*\>" display
+syn match asmOctal "\<0[0-7][0-7]\+\>" display
+syn match asmHexadecimal "\<0[xX][0-9a-fA-F]\+\>" display
+syn match asmBinary "\<0[bB][0-1]\+\>" display
+
+syn match asmFloat "\<\d\+\.\d*\%(e[+-]\=\d\+\)\=\>" display
+syn match asmFloat "\.\d\+\%(e[+-]\=\d\+\)\=\>" display
+syn match asmFloat "\<\d\%(e[+-]\=\d\+\)\>" display
+syn match asmFloat "[+-]\=Inf\>\|\<NaN\>" display
+
+syn match asmFloat "\%(0[edfghprs]\)[+-]\=\d*\%(\.\d\+\)\%(e[+-]\=\d\+\)\=" display
+syn match asmFloat "\%(0[edfghprs]\)[+-]\=\d\+\%(\.\d\+\)\=\%(e[+-]\=\d\+\)\=" display
+" Avoid fighting the hexadecimal match for unicorn-like '0x' prefixed floats
+syn match asmFloat "\%(0x\)[+-]\=\d*\%(\.\d\+\)\%(e[+-]\=\d\+\)\=" display
+
+" Allow all characters to be escaped (and in strings) as these vary across
+" architectures [See sec 3.6.1.1 Strings]
+syn match asmCharacterEscape "\\." contained
+syn match asmCharacter "'\\\=." contains=asmCharacterEscape
+
+syn match asmStringEscape "\\\_." contained
+syn match asmStringEscape "\\\%(\o\{3}\|00[89]\)" contained display
+syn match asmStringEscape "\\x\x\+" contained display
+
+syn region asmString start="\"" end="\"" skip="\\\\\|\\\"" contains=asmStringEscape
+
+syn keyword asmTodo contained TODO FIXME XXX NOTE
+
+" GAS supports one type of multi line comments:
+syn region asmComment start="/\*" end="\*/" contains=asmTodo,@Spell
+
+" GAS (undocumentedly?) supports C++ style comments. Unlike in C/C++ however,
+" a backslash ending a C++ style comment does not extend the comment to the
+" next line (hence the syntax region does not define 'skip="\\$"')
+syn region asmComment start="//" end="$" keepend contains=asmTodo,@Spell
+
+" Line comment characters depend on the target architecture and command line
+" options and some comments may double as logical line number directives or
+" preprocessor commands. This situation is described at
+" http://sourceware.org/binutils/docs-2.22/as/Comments.html
+" Some line comment characters have other meanings for other targets. For
+" example, .type directives may use the `@' character which is also an ARM
+" comment marker.
+" As a compromise to accommodate what I arbitrarily assume to be the most
+" frequently used features of the most popular architectures (and also the
+" non-GNU assembly languages that use this syntax file because their asm files
+" are also named *.asm), the following are used as line comment characters:
+syn match asmComment "[#;!|].*" contains=asmTodo,@Spell
+
+" Side effects of this include:
+" - When `;' is used to separate statements on the same line (many targets
+" support this), all statements except the first get highlighted as
+" comments. As a remedy, remove `;' from the above.
+" - ARM comments are not highlighted correctly. For ARM, uncomment the
+" following two lines and comment the one above.
+"syn match asmComment "@.*" contains=asmTodo
+"syn match asmComment "^#.*" contains=asmTodo
+
+" Advanced users of specific architectures will probably want to change the
+" comment highlighting or use a specific, more comprehensive syntax file.
+
+syn match asmInclude "\.include"
+syn match asmCond "\.if"
+syn match asmCond "\.else"
+syn match asmCond "\.endif"
+syn match asmMacro "\.macro"
+syn match asmMacro "\.endm"
+
+" Assembler directives start with a '.' and may contain upper case (e.g.,
+" .ABORT), numbers (e.g., .p2align), dash (e.g., .app-file) and underscore in
+" CFI directives (e.g., .cfi_startproc). This will also match labels starting
+" with '.', including the GCC auto-generated '.L' labels.
+syn match asmDirective "\.[A-Za-z][0-9A-Za-z-_]*"
+
+syn case match
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later
+hi def link asmSection Special
+hi def link asmLabel Label
+hi def link asmComment Comment
+hi def link asmTodo Todo
+hi def link asmDirective Statement
+
+hi def link asmInclude Include
+hi def link asmCond PreCondit
+hi def link asmMacro Macro
+
+if exists('g:asm_legacy_syntax_groups')
+ hi def link hexNumber Number
+ hi def link decNumber Number
+ hi def link octNumber Number
+ hi def link binNumber Number
+ hi def link asmHexadecimal hexNumber
+ hi def link asmDecimal decNumber
+ hi def link asmOctal octNumber
+ hi def link asmBinary binNumber
+else
+ hi def link asmHexadecimal Number
+ hi def link asmDecimal Number
+ hi def link asmOctal Number
+ hi def link asmBinary Number
+endif
+hi def link asmFloat Float
+
+hi def link asmString String
+hi def link asmStringEscape Special
+hi def link asmCharacter Character
+hi def link asmCharacterEscape Special
+
+hi def link asmIdentifier Identifier
+hi def link asmType Type
+
+let b:current_syntax = "asm"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 noet
diff --git a/runtime/syntax/asm68k.vim b/runtime/syntax/asm68k.vim
new file mode 100644
index 0000000..e13dfe6
--- /dev/null
+++ b/runtime/syntax/asm68k.vim
@@ -0,0 +1,378 @@
+" Vim syntax file
+" Language: Motorola 68000 Assembler
+" Maintainer: Steve Wall
+" Last change: 2001 May 01
+"
+" This is incomplete. In particular, support for 68020 and
+" up and 68851/68881 co-processors is partial or non-existant.
+" Feel free to contribute...
+"
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" Partial list of register symbols
+syn keyword asm68kReg a0 a1 a2 a3 a4 a5 a6 a7 d0 d1 d2 d3 d4 d5 d6 d7
+syn keyword asm68kReg pc sr ccr sp usp ssp
+
+" MC68010
+syn keyword asm68kReg vbr sfc sfcr dfc dfcr
+
+" MC68020
+syn keyword asm68kReg msp isp zpc cacr caar
+syn keyword asm68kReg za0 za1 za2 za3 za4 za5 za6 za7
+syn keyword asm68kReg zd0 zd1 zd2 zd3 zd4 zd5 zd6 zd7
+
+" MC68030
+syn keyword asm68kReg crp srp tc ac0 ac1 acusr tt0 tt1 mmusr
+
+" MC68040
+syn keyword asm68kReg dtt0 dtt1 itt0 itt1 urp
+
+" MC68851 registers
+syn keyword asm68kReg cal val scc crp srp drp tc ac psr pcsr
+syn keyword asm68kReg bac0 bac1 bac2 bac3 bac4 bac5 bac6 bac7
+syn keyword asm68kReg bad0 bad1 bad2 bad3 bad4 bad5 bad6 bad7
+
+" MC68881/82 registers
+syn keyword asm68kReg fp0 fp1 fp2 fp3 fp4 fp5 fp6 fp7
+syn keyword asm68kReg control status iaddr fpcr fpsr fpiar
+
+" M68000 opcodes - order is important!
+syn match asm68kOpcode "\<abcd\(\.b\)\=\s"
+syn match asm68kOpcode "\<adda\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<addi\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<addq\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<addx\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<add\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<andi\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<and\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<as[lr]\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<b[vc][cs]\(\.[bwls]\)\=\s"
+syn match asm68kOpcode "\<beq\(\.[bwls]\)\=\s"
+syn match asm68kOpcode "\<bg[et]\(\.[bwls]\)\=\s"
+syn match asm68kOpcode "\<b[hm]i\(\.[bwls]\)\=\s"
+syn match asm68kOpcode "\<bl[est]\(\.[bwls]\)\=\s"
+syn match asm68kOpcode "\<bne\(\.[bwls]\)\=\s"
+syn match asm68kOpcode "\<bpl\(\.[bwls]\)\=\s"
+syn match asm68kOpcode "\<bchg\(\.[bl]\)\=\s"
+syn match asm68kOpcode "\<bclr\(\.[bl]\)\=\s"
+syn match asm68kOpcode "\<bfchg\s"
+syn match asm68kOpcode "\<bfclr\s"
+syn match asm68kOpcode "\<bfexts\s"
+syn match asm68kOpcode "\<bfextu\s"
+syn match asm68kOpcode "\<bfffo\s"
+syn match asm68kOpcode "\<bfins\s"
+syn match asm68kOpcode "\<bfset\s"
+syn match asm68kOpcode "\<bftst\s"
+syn match asm68kOpcode "\<bkpt\s"
+syn match asm68kOpcode "\<bra\(\.[bwls]\)\=\s"
+syn match asm68kOpcode "\<bset\(\.[bl]\)\=\s"
+syn match asm68kOpcode "\<bsr\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<btst\(\.[bl]\)\=\s"
+syn match asm68kOpcode "\<callm\s"
+syn match asm68kOpcode "\<cas2\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<cas\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<chk2\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<chk\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<clr\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<cmpa\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<cmpi\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<cmpm\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<cmp2\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<cmp\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<db[cv][cs]\(\.w\)\=\s"
+syn match asm68kOpcode "\<dbeq\(\.w\)\=\s"
+syn match asm68kOpcode "\<db[ft]\(\.w\)\=\s"
+syn match asm68kOpcode "\<dbg[et]\(\.w\)\=\s"
+syn match asm68kOpcode "\<db[hm]i\(\.w\)\=\s"
+syn match asm68kOpcode "\<dbl[est]\(\.w\)\=\s"
+syn match asm68kOpcode "\<dbne\(\.w\)\=\s"
+syn match asm68kOpcode "\<dbpl\(\.w\)\=\s"
+syn match asm68kOpcode "\<dbra\(\.w\)\=\s"
+syn match asm68kOpcode "\<div[su]\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<div[su]l\(\.l\)\=\s"
+syn match asm68kOpcode "\<eori\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<eor\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<exg\(\.l\)\=\s"
+syn match asm68kOpcode "\<extb\(\.l\)\=\s"
+syn match asm68kOpcode "\<ext\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<illegal\>"
+syn match asm68kOpcode "\<jmp\(\.[ls]\)\=\s"
+syn match asm68kOpcode "\<jsr\(\.[ls]\)\=\s"
+syn match asm68kOpcode "\<lea\(\.l\)\=\s"
+syn match asm68kOpcode "\<link\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<ls[lr]\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<movea\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<movec\(\.l\)\=\s"
+syn match asm68kOpcode "\<movem\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<movep\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<moveq\(\.l\)\=\s"
+syn match asm68kOpcode "\<moves\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<move\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<mul[su]\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<nbcd\(\.b\)\=\s"
+syn match asm68kOpcode "\<negx\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<neg\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<nop\>"
+syn match asm68kOpcode "\<not\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<ori\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<or\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<pack\s"
+syn match asm68kOpcode "\<pea\(\.l\)\=\s"
+syn match asm68kOpcode "\<reset\>"
+syn match asm68kOpcode "\<ro[lr]\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<rox[lr]\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<rt[dm]\s"
+syn match asm68kOpcode "\<rt[ers]\>"
+syn match asm68kOpcode "\<sbcd\(\.b\)\=\s"
+syn match asm68kOpcode "\<s[cv][cs]\(\.b\)\=\s"
+syn match asm68kOpcode "\<seq\(\.b\)\=\s"
+syn match asm68kOpcode "\<s[ft]\(\.b\)\=\s"
+syn match asm68kOpcode "\<sg[et]\(\.b\)\=\s"
+syn match asm68kOpcode "\<s[hm]i\(\.b\)\=\s"
+syn match asm68kOpcode "\<sl[est]\(\.b\)\=\s"
+syn match asm68kOpcode "\<sne\(\.b\)\=\s"
+syn match asm68kOpcode "\<spl\(\.b\)\=\s"
+syn match asm68kOpcode "\<suba\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<subi\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<subq\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<subx\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<sub\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<swap\(\.w\)\=\s"
+syn match asm68kOpcode "\<tas\(\.b\)\=\s"
+syn match asm68kOpcode "\<tdiv[su]\(\.l\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=[cv][cs]\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=eq\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=[ft]\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=g[et]\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=[hm]i\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=l[est]\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=ne\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=pl\(\.[wl]\)\=\s"
+syn match asm68kOpcode "\<t\(rap\)\=v\>"
+syn match asm68kOpcode "\<t\(rap\)\=[cv][cs]\>"
+syn match asm68kOpcode "\<t\(rap\)\=eq\>"
+syn match asm68kOpcode "\<t\(rap\)\=[ft]\>"
+syn match asm68kOpcode "\<t\(rap\)\=g[et]\>"
+syn match asm68kOpcode "\<t\(rap\)\=[hm]i\>"
+syn match asm68kOpcode "\<t\(rap\)\=l[est]\>"
+syn match asm68kOpcode "\<t\(rap\)\=ne\>"
+syn match asm68kOpcode "\<t\(rap\)\=pl\>"
+syn match asm68kOpcode "\<trap\s"
+syn match asm68kOpcode "\<tst\(\.[bwl]\)\=\s"
+syn match asm68kOpcode "\<unlk\s"
+syn match asm68kOpcode "\<unpk\s"
+
+" Valid labels
+syn match asm68kLabel "^[a-z_?.][a-z0-9_?.$]*$"
+syn match asm68kLabel "^[a-z_?.][a-z0-9_?.$]*\s"he=e-1
+syn match asm68kLabel "^\s*[a-z_?.][a-z0-9_?.$]*:"he=e-1
+
+" Various number formats
+syn match hexNumber "\$[0-9a-fA-F]\+\>"
+syn match hexNumber "\<[0-9][0-9a-fA-F]*H\>"
+syn match octNumber "@[0-7]\+\>"
+syn match octNumber "\<[0-7]\+[QO]\>"
+syn match binNumber "%[01]\+\>"
+syn match binNumber "\<[01]\+B\>"
+syn match decNumber "\<[0-9]\+D\=\>"
+syn match floatE "_*E_*" contained
+syn match floatExponent "_*E_*[-+]\=[0-9]\+" contained contains=floatE
+syn match floatNumber "[-+]\=[0-9]\+_*E_*[-+]\=[0-9]\+" contains=floatExponent
+syn match floatNumber "[-+]\=[0-9]\+\.[0-9]\+\(E[-+]\=[0-9]\+\)\=" contains=floatExponent
+syn match floatNumber ":\([0-9a-f]\+_*\)\+"
+
+" Character string constants
+syn match asm68kStringError "'[ -~]*'"
+syn match asm68kStringError "'[ -~]*$"
+syn region asm68kString start="'" skip="''" end="'" oneline contains=asm68kCharError
+syn match asm68kCharError "[^ -~]" contained
+
+" Immediate data
+syn match asm68kImmediate "#\$[0-9a-fA-F]\+" contains=hexNumber
+syn match asm68kImmediate "#[0-9][0-9a-fA-F]*H" contains=hexNumber
+syn match asm68kImmediate "#@[0-7]\+" contains=octNumber
+syn match asm68kImmediate "#[0-7]\+[QO]" contains=octNumber
+syn match asm68kImmediate "#%[01]\+" contains=binNumber
+syn match asm68kImmediate "#[01]\+B" contains=binNumber
+syn match asm68kImmediate "#[0-9]\+D\=" contains=decNumber
+syn match asm68kSymbol "[a-z_?.][a-z0-9_?.$]*" contained
+syn match asm68kImmediate "#[a-z_?.][a-z0-9_?.]*" contains=asm68kSymbol
+
+" Special items for comments
+syn keyword asm68kTodo contained TODO
+
+" Operators
+syn match asm68kOperator "[-+*/]" " Must occur before Comments
+syn match asm68kOperator "\.SIZEOF\."
+syn match asm68kOperator "\.STARTOF\."
+syn match asm68kOperator "<<" " shift left
+syn match asm68kOperator ">>" " shift right
+syn match asm68kOperator "&" " bit-wise logical and
+syn match asm68kOperator "!" " bit-wise logical or
+syn match asm68kOperator "!!" " exclusive or
+syn match asm68kOperator "<>" " inequality
+syn match asm68kOperator "=" " must be before other ops containing '='
+syn match asm68kOperator ">="
+syn match asm68kOperator "<="
+syn match asm68kOperator "==" " operand existance - used in macro definitions
+
+" Condition code style operators
+syn match asm68kOperator "<[CV][CS]>"
+syn match asm68kOperator "<EQ>"
+syn match asm68kOperator "<G[TE]>"
+syn match asm68kOperator "<[HM]I>"
+syn match asm68kOperator "<L[SET]>"
+syn match asm68kOperator "<NE>"
+syn match asm68kOperator "<PL>"
+
+" Comments
+syn match asm68kComment ";.*" contains=asm68kTodo
+syn match asm68kComment "\s!.*"ms=s+1 contains=asm68kTodo
+syn match asm68kComment "^\s*[*!].*" contains=asm68kTodo
+
+" Include
+syn match asm68kInclude "\<INCLUDE\s"
+
+" Standard macros
+syn match asm68kCond "\<IF\(\.[BWL]\)\=\s"
+syn match asm68kCond "\<THEN\(\.[SL]\)\=\>"
+syn match asm68kCond "\<ELSE\(\.[SL]\)\=\>"
+syn match asm68kCond "\<ENDI\>"
+syn match asm68kCond "\<BREAK\(\.[SL]\)\=\>"
+syn match asm68kRepeat "\<FOR\(\.[BWL]\)\=\s"
+syn match asm68kRepeat "\<DOWNTO\s"
+syn match asm68kRepeat "\<TO\s"
+syn match asm68kRepeat "\<BY\s"
+syn match asm68kRepeat "\<DO\(\.[SL]\)\=\>"
+syn match asm68kRepeat "\<ENDF\>"
+syn match asm68kRepeat "\<NEXT\(\.[SL]\)\=\>"
+syn match asm68kRepeat "\<REPEAT\>"
+syn match asm68kRepeat "\<UNTIL\(\.[BWL]\)\=\s"
+syn match asm68kRepeat "\<WHILE\(\.[BWL]\)\=\s"
+syn match asm68kRepeat "\<ENDW\>"
+
+" Macro definition
+syn match asm68kMacro "\<MACRO\>"
+syn match asm68kMacro "\<LOCAL\s"
+syn match asm68kMacro "\<MEXIT\>"
+syn match asm68kMacro "\<ENDM\>"
+syn match asm68kMacroParam "\\[0-9]"
+
+" Conditional assembly
+syn match asm68kPreCond "\<IFC\s"
+syn match asm68kPreCond "\<IFDEF\s"
+syn match asm68kPreCond "\<IFEQ\s"
+syn match asm68kPreCond "\<IFGE\s"
+syn match asm68kPreCond "\<IFGT\s"
+syn match asm68kPreCond "\<IFLE\s"
+syn match asm68kPreCond "\<IFLT\s"
+syn match asm68kPreCond "\<IFNC\>"
+syn match asm68kPreCond "\<IFNDEF\s"
+syn match asm68kPreCond "\<IFNE\s"
+syn match asm68kPreCond "\<ELSEC\>"
+syn match asm68kPreCond "\<ENDC\>"
+
+" Loop control
+syn match asm68kPreCond "\<REPT\s"
+syn match asm68kPreCond "\<IRP\s"
+syn match asm68kPreCond "\<IRPC\s"
+syn match asm68kPreCond "\<ENDR\>"
+
+" Directives
+syn match asm68kDirective "\<ALIGN\s"
+syn match asm68kDirective "\<CHIP\s"
+syn match asm68kDirective "\<COMLINE\s"
+syn match asm68kDirective "\<COMMON\(\.S\)\=\s"
+syn match asm68kDirective "\<DC\(\.[BWLSDXP]\)\=\s"
+syn match asm68kDirective "\<DC\.\\[0-9]\s"me=e-3 " Special use in a macro def
+syn match asm68kDirective "\<DCB\(\.[BWLSDXP]\)\=\s"
+syn match asm68kDirective "\<DS\(\.[BWLSDXP]\)\=\s"
+syn match asm68kDirective "\<END\>"
+syn match asm68kDirective "\<EQU\s"
+syn match asm68kDirective "\<FEQU\(\.[SDXP]\)\=\s"
+syn match asm68kDirective "\<FAIL\>"
+syn match asm68kDirective "\<FOPT\s"
+syn match asm68kDirective "\<\(NO\)\=FORMAT\>"
+syn match asm68kDirective "\<IDNT\>"
+syn match asm68kDirective "\<\(NO\)\=LIST\>"
+syn match asm68kDirective "\<LLEN\s"
+syn match asm68kDirective "\<MASK2\>"
+syn match asm68kDirective "\<NAME\s"
+syn match asm68kDirective "\<NOOBJ\>"
+syn match asm68kDirective "\<OFFSET\s"
+syn match asm68kDirective "\<OPT\>"
+syn match asm68kDirective "\<ORG\(\.[SL]\)\=\>"
+syn match asm68kDirective "\<\(NO\)\=PAGE\>"
+syn match asm68kDirective "\<PLEN\s"
+syn match asm68kDirective "\<REG\s"
+syn match asm68kDirective "\<RESTORE\>"
+syn match asm68kDirective "\<SAVE\>"
+syn match asm68kDirective "\<SECT\(\.S\)\=\s"
+syn match asm68kDirective "\<SECTION\(\.S\)\=\s"
+syn match asm68kDirective "\<SET\s"
+syn match asm68kDirective "\<SPC\s"
+syn match asm68kDirective "\<TTL\s"
+syn match asm68kDirective "\<XCOM\s"
+syn match asm68kDirective "\<XDEF\s"
+syn match asm68kDirective "\<XREF\(\.S\)\=\s"
+
+syn case match
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later
+" Comment Constant Error Identifier PreProc Special Statement Todo Type
+"
+" Constant Boolean Character Number String
+" Identifier Function
+" PreProc Define Include Macro PreCondit
+" Special Debug Delimiter SpecialChar SpecialComment Tag
+" Statement Conditional Exception Keyword Label Operator Repeat
+" Type StorageClass Structure Typedef
+
+hi def link asm68kComment Comment
+hi def link asm68kTodo Todo
+
+hi def link hexNumber Number " Constant
+hi def link octNumber Number " Constant
+hi def link binNumber Number " Constant
+hi def link decNumber Number " Constant
+hi def link floatNumber Number " Constant
+hi def link floatExponent Number " Constant
+hi def link floatE SpecialChar " Statement
+"hi def link floatE Number " Constant
+
+hi def link asm68kImmediate SpecialChar " Statement
+"hi def link asm68kSymbol Constant
+
+hi def link asm68kString String " Constant
+hi def link asm68kCharError Error
+hi def link asm68kStringError Error
+
+hi def link asm68kReg Identifier
+hi def link asm68kOperator Identifier
+
+hi def link asm68kInclude Include " PreProc
+hi def link asm68kMacro Macro " PreProc
+hi def link asm68kMacroParam Keyword " Statement
+
+hi def link asm68kDirective Special
+hi def link asm68kPreCond Special
+
+
+hi def link asm68kOpcode Statement
+hi def link asm68kCond Conditional " Statement
+hi def link asm68kRepeat Repeat " Statement
+
+hi def link asm68kLabel Type
+
+let b:current_syntax = "asm68k"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/asmh8300.vim b/runtime/syntax/asmh8300.vim
new file mode 100644
index 0000000..2eabb7e
--- /dev/null
+++ b/runtime/syntax/asmh8300.vim
@@ -0,0 +1,58 @@
+" Vim syntax file
+" Language: Hitachi H-8300h specific syntax for GNU Assembler
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Kevin Dahlhausen <kdahlhaus@yahoo.com>
+" Last Change: 2020 Oct 31
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/asm.vim
+
+syn case ignore
+
+syn match asmDirective "\.h8300[hs]n\="
+
+"h8300[h] registers
+syn match asmRegister "e\=r\o[lh]\="
+
+"h8300[h] opcodes - order is important!
+syn match asmOpcode "add\.[lbw]"
+syn match asmOpcode "add[sx :]"
+syn match asmOpcode "and\.[lbw]"
+syn match asmOpcode "bl[deots]"
+syn match asmOpcode "cmp\.[lbw]"
+syn match asmOpcode "dec\.[lbw]"
+syn match asmOpcode "divx[us].[bw]"
+syn match asmOpcode "ext[su]\.[lw]"
+syn match asmOpcode "inc\.[lw]"
+syn match asmOpcode "mov\.[lbw]"
+syn match asmOpcode "mulx[su]\.[bw]"
+syn match asmOpcode "neg\.[lbw]"
+syn match asmOpcode "not\.[lbw]"
+syn match asmOpcode "or\.[lbw]"
+syn match asmOpcode "pop\.[wl]"
+syn match asmOpcode "push\.[wl]"
+syn match asmOpcode "rotx\=[lr]\.[lbw]"
+syn match asmOpcode "sha[lr]\.[lbw]"
+syn match asmOpcode "shl[lr]\.[lbw]"
+syn match asmOpcode "sub\.[lbw]"
+syn match asmOpcode "xor\.[lbw]"
+
+syn keyword asmOpcode andc band bcc bclr bcs beq bf bge bgt
+syn keyword asmOpcode bhi bhs biand bild bior bist bixor bmi
+syn keyword asmOpcode bne bnot bnp bor bpl bpt bra brn bset
+syn keyword asmOpcode bsr btst bst bt bvc bvs bxor cmp daa
+syn keyword asmOpcode das eepmov eepmovw inc jmp jsr ldc movfpe
+syn keyword asmOpcode movtpe mov nop orc rte rts sleep stc
+syn keyword asmOpcode sub trapa xorc
+
+syn case match
+
+hi def link asmOpcode Statement
+hi def link asmRegister Identifier
+
+let b:current_syntax = "asmh8300"
+
+" vim: nowrap sw=2 sts=2 ts=8 noet
diff --git a/runtime/syntax/asn.vim b/runtime/syntax/asn.vim
new file mode 100644
index 0000000..e90c7e0
--- /dev/null
+++ b/runtime/syntax/asn.vim
@@ -0,0 +1,73 @@
+" Vim syntax file
+" Language: ASN.1
+" Maintainer: Claudio Fleiner <claudio@fleiner.com>
+" URL: http://www.fleiner.com/vim/syntax/asn.vim
+" Last Change: 2012 Oct 05
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" keyword definitions
+syn keyword asnExternal DEFINITIONS BEGIN END IMPORTS EXPORTS FROM
+syn match asnExternal "\<IMPLICIT\s\+TAGS\>"
+syn match asnExternal "\<EXPLICIT\s\+TAGS\>"
+syn keyword asnFieldOption DEFAULT OPTIONAL
+syn keyword asnTagModifier IMPLICIT EXPLICIT
+syn keyword asnTypeInfo ABSENT PRESENT SIZE UNIVERSAL APPLICATION PRIVATE
+syn keyword asnBoolValue TRUE FALSE
+syn keyword asnNumber MIN MAX
+syn match asnNumber "\<PLUS-INFINITY\>"
+syn match asnNumber "\<MINUS-INFINITY\>"
+syn keyword asnType INTEGER REAL STRING BIT BOOLEAN OCTET NULL EMBEDDED PDV
+syn keyword asnType BMPString IA5String TeletexString GeneralString GraphicString ISO646String NumericString PrintableString T61String UniversalString VideotexString VisibleString
+syn keyword asnType ANY DEFINED
+syn match asnType "\.\.\."
+syn match asnType "OBJECT\s\+IDENTIFIER"
+syn match asnType "TYPE-IDENTIFIER"
+syn keyword asnType UTF8String
+syn keyword asnStructure CHOICE SEQUENCE SET OF ENUMERATED CONSTRAINED BY WITH COMPONENTS CLASS
+
+" Strings and constants
+syn match asnSpecial contained "\\\d\d\d\|\\."
+syn region asnString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=asnSpecial
+syn match asnCharacter "'[^\\]'"
+syn match asnSpecialCharacter "'\\.'"
+syn match asnNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
+syn match asnLineComment "--.*"
+syn match asnLineComment "--.*--"
+
+syn match asnDefinition "^\s*[a-zA-Z][-a-zA-Z0-9_.\[\] \t{}]* *::="me=e-3 contains=asnType
+syn match asnBraces "[{}]"
+
+syn sync ccomment asnComment
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link asnDefinition Function
+hi def link asnBraces Function
+hi def link asnStructure Statement
+hi def link asnBoolValue Boolean
+hi def link asnSpecial Special
+hi def link asnString String
+hi def link asnCharacter Character
+hi def link asnSpecialCharacter asnSpecial
+hi def link asnNumber asnValue
+hi def link asnComment Comment
+hi def link asnLineComment asnComment
+hi def link asnType Type
+hi def link asnTypeInfo PreProc
+hi def link asnValue Number
+hi def link asnExternal Include
+hi def link asnTagModifier Function
+hi def link asnFieldOption Type
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+let b:current_syntax = "asn"
+
+" vim: ts=8
diff --git a/runtime/syntax/aspperl.vim b/runtime/syntax/aspperl.vim
new file mode 100644
index 0000000..5a9abed
--- /dev/null
+++ b/runtime/syntax/aspperl.vim
@@ -0,0 +1,25 @@
+" Vim syntax file
+" Language: Active State's PerlScript (ASP)
+" Maintainer: Aaron Hope <edh@brioforge.com>
+" URL: http://nim.dhs.org/~edh/aspperl.vim
+" Last Change: 2001 May 09
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'perlscript'
+endif
+
+runtime! syntax/html.vim
+unlet b:current_syntax
+syn include @AspPerlScript syntax/perl.vim
+
+syn cluster htmlPreproc add=AspPerlScriptInsideHtmlTags
+
+syn region AspPerlScriptInsideHtmlTags keepend matchgroup=Delimiter start=+<%=\=+ skip=+".*%>.*"+ end=+%>+ contains=@AspPerlScript
+syn region AspPerlScriptInsideHtmlTags keepend matchgroup=Delimiter start=+<script\s\+language="\=perlscript"\=[^>]*>+ end=+</script>+ contains=@AspPerlScript
+
+let b:current_syntax = "aspperl"
diff --git a/runtime/syntax/aspvbs.vim b/runtime/syntax/aspvbs.vim
new file mode 100644
index 0000000..44909b6
--- /dev/null
+++ b/runtime/syntax/aspvbs.vim
@@ -0,0 +1,182 @@
+" Vim syntax file
+" Language: Microsoft VBScript Web Content (ASP)
+" Maintainer: Devin Weaver <ktohg@tritarget.com> (non-functional)
+" URL: http://tritarget.com/pub/vim/syntax/aspvbs.vim (broken)
+" Last Change: 2006 Jun 19
+" by Dan Casey
+" Version: $Revision: 1.3 $
+" Thanks to Jay-Jay <vim@jay-jay.net> for a syntax sync hack, hungarian
+" notation, and extra highlighting.
+" Thanks to patrick dehne <patrick@steidle.net> for the folding code.
+" Thanks to Dean Hall <hall@apt7.com> for testing the use of classes in
+" VBScripts which I've been too scared to do.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'aspvbs'
+endif
+
+runtime! syntax/html.vim
+unlet b:current_syntax
+
+syn cluster htmlPreProc add=AspVBScriptInsideHtmlTags
+
+
+" Colored variable names, if written in hungarian notation
+hi def AspVBSVariableSimple term=standout ctermfg=3 guifg=#99ee99
+hi def AspVBSVariableComplex term=standout ctermfg=3 guifg=#ee9900
+syn match AspVBSVariableSimple contained "\<\(bln\|byt\|dtm\=\|dbl\|int\|str\)\u\w*"
+syn match AspVBSVariableComplex contained "\<\(arr\|ary\|obj\)\u\w*"
+
+
+" Functions and methods that are in VB but will cause errors in an ASP page
+" This is helpful if your porting VB code to ASP
+" I removed (Count, Item) because these are common variable names in AspVBScript
+syn keyword AspVBSError contained Val Str CVar CVDate DoEvents GoSub Return GoTo
+syn keyword AspVBSError contained Stop LinkExecute Add Type LinkPoke
+syn keyword AspVBSError contained LinkRequest LinkSend Declare Optional Sleep
+syn keyword AspVBSError contained ParamArray Static Erl TypeOf Like LSet RSet Mid StrConv
+" It may seem that most of these can fit into a keyword clause but keyword takes
+" priority over all so I can't get the multi-word matches
+syn match AspVBSError contained "\<Def[a-zA-Z0-9_]\+\>"
+syn match AspVBSError contained "^\s*Open\s\+"
+syn match AspVBSError contained "Debug\.[a-zA-Z0-9_]*"
+syn match AspVBSError contained "^\s*[a-zA-Z0-9_]\+:"
+syn match AspVBSError contained "[a-zA-Z0-9_]\+![a-zA-Z0-9_]\+"
+syn match AspVBSError contained "^\s*#.*$"
+syn match AspVBSError contained "\<As\s\+[a-zA-Z0-9_]*"
+syn match AspVBSError contained "\<End\>\|\<Exit\>"
+syn match AspVBSError contained "\<On\s\+Error\>\|\<On\>\|\<Error\>\|\<Resume\s\+Next\>\|\<Resume\>"
+syn match AspVBSError contained "\<Option\s\+\(Base\|Compare\|Private\s\+Module\)\>"
+" This one I want 'cause I always seem to mis-spell it.
+syn match AspVBSError contained "Respon\?ce\.\S*"
+syn match AspVBSError contained "Respose\.\S*"
+" When I looked up the VBScript syntax it mentioned that Property Get/Set/Let
+" statements are illegal, however, I have received reports that they do work.
+" So I commented it out for now.
+" syn match AspVBSError contained "\<Property\s\+\(Get\|Let\|Set\)\>"
+
+" AspVBScript Reserved Words.
+syn match AspVBSStatement contained "\<On\s\+Error\s\+\(Resume\s\+Next\|goto\s\+0\)\>\|\<Next\>"
+syn match AspVBSStatement contained "\<End\s\+\(If\|For\|Select\|Class\|Function\|Sub\|With\|Property\)\>"
+syn match AspVBSStatement contained "\<Exit\s\+\(Do\|For\|Sub\|Function\)\>"
+syn match AspVBSStatement contained "\<Exit\s\+\(Do\|For\|Sub\|Function\|Property\)\>"
+syn match AspVBSStatement contained "\<Option\s\+Explicit\>"
+syn match AspVBSStatement contained "\<For\s\+Each\>\|\<For\>"
+syn match AspVBSStatement contained "\<Set\>"
+syn keyword AspVBSStatement contained Call Class Const Default Dim Do Loop Erase And
+syn keyword AspVBSStatement contained Function If Then Else ElseIf Or
+syn keyword AspVBSStatement contained Private Public Randomize ReDim
+syn keyword AspVBSStatement contained Select Case Sub While With Wend Not
+
+" AspVBScript Functions
+syn keyword AspVBSFunction contained Abs Array Asc Atn CBool CByte CCur CDate CDbl
+syn keyword AspVBSFunction contained Chr CInt CLng Cos CreateObject CSng CStr Date
+syn keyword AspVBSFunction contained DateAdd DateDiff DatePart DateSerial DateValue
+syn keyword AspVBSFunction contained Date Day Exp Filter Fix FormatCurrency
+syn keyword AspVBSFunction contained FormatDateTime FormatNumber FormatPercent
+syn keyword AspVBSFunction contained GetObject Hex Hour InputBox InStr InStrRev Int
+syn keyword AspVBSFunction contained IsArray IsDate IsEmpty IsNull IsNumeric
+syn keyword AspVBSFunction contained IsObject Join LBound LCase Left Len LoadPicture
+syn keyword AspVBSFunction contained Log LTrim Mid Minute Month MonthName MsgBox Now
+syn keyword AspVBSFunction contained Oct Replace RGB Right Rnd Round RTrim
+syn keyword AspVBSFunction contained ScriptEngine ScriptEngineBuildVersion
+syn keyword AspVBSFunction contained ScriptEngineMajorVersion
+syn keyword AspVBSFunction contained ScriptEngineMinorVersion Second Sgn Sin Space
+syn keyword AspVBSFunction contained Split Sqr StrComp StrReverse String Tan Time Timer
+syn keyword AspVBSFunction contained TimeSerial TimeValue Trim TypeName UBound UCase
+syn keyword AspVBSFunction contained VarType Weekday WeekdayName Year
+
+" AspVBScript Methods
+syn keyword AspVBSMethods contained Add AddFolders BuildPath Clear Close Copy
+syn keyword AspVBSMethods contained CopyFile CopyFolder CreateFolder CreateTextFile
+syn keyword AspVBSMethods contained Delete DeleteFile DeleteFolder DriveExists
+syn keyword AspVBSMethods contained Exists FileExists FolderExists
+syn keyword AspVBSMethods contained GetAbsolutePathName GetBaseName GetDrive
+syn keyword AspVBSMethods contained GetDriveName GetExtensionName GetFile
+syn keyword AspVBSMethods contained GetFileName GetFolder GetParentFolderName
+syn keyword AspVBSMethods contained GetSpecialFolder GetTempName Items Keys Move
+syn keyword AspVBSMethods contained MoveFile MoveFolder OpenAsTextStream
+syn keyword AspVBSMethods contained OpenTextFile Raise Read ReadAll ReadLine Remove
+syn keyword AspVBSMethods contained RemoveAll Skip SkipLine Write WriteBlankLines
+syn keyword AspVBSMethods contained WriteLine
+syn match AspVBSMethods contained "Response\.\w*"
+" Colorize boolean constants:
+syn keyword AspVBSMethods contained true false
+
+" AspVBScript Number Constants
+" Integer number, or floating point number without a dot.
+syn match AspVBSNumber contained "\<\d\+\>"
+" Floating point number, with dot
+syn match AspVBSNumber contained "\<\d\+\.\d*\>"
+" Floating point number, starting with a dot
+syn match AspVBSNumber contained "\.\d\+\>"
+
+" String and Character Constants
+" removed (skip=+\\\\\|\\"+) because VB doesn't have backslash escaping in
+" strings (or does it?)
+syn region AspVBSString contained start=+"+ end=+"+ keepend
+
+" AspVBScript Comments
+syn region AspVBSComment contained start="^REM\s\|\sREM\s" end="$" contains=AspVBSTodo keepend
+syn region AspVBSComment contained start="^'\|\s'" end="$" contains=AspVBSTodo keepend
+" misc. Commenting Stuff
+syn keyword AspVBSTodo contained TODO FIXME
+
+" Cosmetic syntax errors commanly found in VB but not in AspVBScript
+" AspVBScript doesn't use line numbers
+syn region AspVBSError contained start="^\d" end="\s" keepend
+" AspVBScript also doesn't have type defining variables
+syn match AspVBSError contained "[a-zA-Z0-9_][\$&!#]"ms=s+1
+" Since 'a%' is a VB variable with a type and in AspVBScript you can have 'a%>'
+" I have to make a special case so 'a%>' won't show as an error.
+syn match AspVBSError contained "[a-zA-Z0-9_]%\($\|[^>]\)"ms=s+1
+
+" Top Cluster
+syn cluster AspVBScriptTop contains=AspVBSStatement,AspVBSFunction,AspVBSMethods,AspVBSNumber,AspVBSString,AspVBSComment,AspVBSError,AspVBSVariableSimple,AspVBSVariableComplex
+
+" Folding
+syn region AspVBSFold start="^\s*\(class\)\s\+.*$" end="^\s*end\s\+\(class\)\>.*$" fold contained transparent keepend
+syn region AspVBSFold start="^\s*\(private\|public\)\=\(\s\+default\)\=\s\+\(sub\|function\)\s\+.*$" end="^\s*end\s\+\(function\|sub\)\>.*$" fold contained transparent keepend
+
+" Define AspVBScript delimiters
+" <%= func("string_with_%>_in_it") %> This is illegal in ASP syntax.
+syn region AspVBScriptInsideHtmlTags keepend matchgroup=Delimiter start=+<%=\=+ end=+%>+ contains=@AspVBScriptTop, AspVBSFold
+syn region AspVBScriptInsideHtmlTags keepend matchgroup=Delimiter start=+<script\s\+language="\=vbscript"\=[^>]*\s\+runatserver[^>]*>+ end=+</script>+ contains=@AspVBScriptTop
+
+
+" Synchronization
+" syn sync match AspVBSSyncGroup grouphere AspVBScriptInsideHtmlTags "<%"
+" This is a kludge so the HTML will sync properly
+syn sync match htmlHighlight grouphere htmlTag "%>"
+
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+"hi def link AspVBScript Special
+hi def link AspVBSLineNumber Comment
+hi def link AspVBSNumber Number
+hi def link AspVBSError Error
+hi def link AspVBSStatement Statement
+hi def link AspVBSString String
+hi def link AspVBSComment Comment
+hi def link AspVBSTodo Todo
+hi def link AspVBSFunction Identifier
+hi def link AspVBSMethods PreProc
+hi def link AspVBSEvents Special
+hi def link AspVBSTypeSpecifier Type
+
+
+let b:current_syntax = "aspvbs"
+
+if main_syntax == 'aspvbs'
+ unlet main_syntax
+endif
+
+" vim: ts=8:sw=2:sts=0:noet
diff --git a/runtime/syntax/asterisk.vim b/runtime/syntax/asterisk.vim
new file mode 100644
index 0000000..4b3d246
--- /dev/null
+++ b/runtime/syntax/asterisk.vim
@@ -0,0 +1,88 @@
+" Vim syntax file
+" Language: Asterisk config file
+" Maintainer: Jean Aunis <jean.aunis@yahoo.fr>
+" Previous Maintainer: brc007
+" Updated for 1.2 by Tilghman Lesher (Corydon76)
+" Last Change: 2015 Feb 27
+" version 0.4
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn sync clear
+syn sync fromstart
+
+syn keyword asteriskTodo TODO contained
+syn match asteriskComment ";.*" contains=asteriskTodo
+syn match asteriskContext "\[.\{-}\]"
+syn match asteriskExten "^\s*\zsexten\s*=>\?\s*[^,]\+\ze," contains=asteriskPattern nextgroup=asteriskPriority
+syn match asteriskExten "^\s*\zssame\s*=>\?\s*\ze" nextgroup=asteriskPriority
+syn match asteriskExten "^\s*\(register\|channel\|ignorepat\|include\|l\?e\?switch\|\(no\)\?load\)\s*=>\?"
+syn match asteriskPattern "_\(\[[[:alnum:]#*\-]\+\]\|[[:alnum:]#*]\)*\.\?" contained
+syn match asteriskPattern "[^A-Za-z0-9,]\zs[[:alnum:]#*]\+\ze" contained
+syn match asteriskApp ",\zs[a-zA-Z]\+\ze$"
+syn match asteriskApp ",\zs[a-zA-Z]\+\ze("
+" Digits plus oldlabel (newlabel)
+syn match asteriskPriority "\zs[[:digit:]]\+\(+[[:alpha:]][[:alnum:]_]*\)\?\(([[:alpha:]][[:alnum:]_]*)\)\?\ze," contains=asteriskLabel
+" oldlabel plus digits (newlabel)
+syn match asteriskPriority "\zs[[:alpha:]][[:alnum:]_]*+[[:digit:]]\+\(([[:alpha:]][[:alnum:]_]*)\)\?\ze," contains=asteriskLabel
+" s or n plus digits (newlabel)
+syn match asteriskPriority "\zs[sn]\(+[[:digit:]]\+\)\?\(([[:alpha:]][[:alnum:]_]*)\)\?\ze," contains=asteriskLabel
+syn match asteriskLabel "(\zs[[:alpha:]][[:alnum:]]*\ze)" contained
+syn match asteriskError "^\s*#\s*[[:alnum:]]*"
+syn match asteriskInclude "^\s*#\s*\(include\|exec\)\s.*"
+syn match asteriskVar "\${_\{0,2}[[:alpha:]][[:alnum:]_]*\(:-\?[[:digit:]]\+\(:[[:digit:]]\+\)\?\)\?}"
+syn match asteriskVar "_\{0,2}[[:alpha:]][[:alnum:]_]*\ze="
+syn match asteriskVarLen "\${_\{0,2}[[:alpha:]][[:alnum:]_]*(.*)}" contains=asteriskVar,asteriskVarLen,asteriskExp
+syn match asteriskVarLen "(\zs[[:alpha:]][[:alnum:]_]*(.\{-})\ze=" contains=asteriskVar,asteriskVarLen,asteriskExp
+syn match asteriskExp "\$\[.\{-}\]" contains=asteriskVar,asteriskVarLen,asteriskExp
+syn match asteriskCodecsPermit "^\s*\(allow\|disallow\)\s*=\s*.*$" contains=asteriskCodecs
+syn match asteriskCodecs "\(vp9\|vp8\|h264\|h263p\|h263\|h261\|jpeg\|opus\|g722\|g723\|gsm\|ulaw\|alaw\|g719\|g726\|g726aal2\|siren7\|siren14\|adpcm\|slin\|lpc10\|g729\|speex\|ilbc\|wav\|all\s*$\)"
+syn match asteriskError "^\(type\|auth\|permit\|deny\|bindaddr\|host\)\s*=.*$"
+syn match asteriskType "^\zstype=\ze\<\(peer\|user\|friend\)\>$" contains=asteriskTypeType
+syn match asteriskTypeType "\<\(peer\|user\|friend\)\>" contained
+syn match asteriskAuth "^\zsauth\s*=\ze\s*\<\(md5\|rsa\|plaintext\)\>$" contains=asteriskAuthType
+syn match asteriskAuthType "\<\(md5\|rsa\|plaintext\)\>"
+syn match asteriskAuth "^\zs\(secret\|inkeys\|outkey\)\s*=\ze.*$"
+syn match asteriskAuth "^\(permit\|deny\)\s*=\s*\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\s*$" contains=asteriskIPRange
+syn match asteriskIPRange "\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}" contained
+syn match asteriskIP "\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}" contained
+syn match asteriskHostname "[[:alnum:]][[:alnum:]\-\.]*\.[[:alpha:]]{2,10}" contained
+syn match asteriskPort "\d\{1,5}" contained
+syn match asteriskSetting "^bindaddr\s*=\s*\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}$" contains=asteriskIP
+syn match asteriskSetting "^port\s*=\s*\d\{1,5}\s*$" contains=asteriskPort
+syn match asteriskSetting "^host\s*=\s*\(dynamic\|\(\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)\|\([[:alnum:]][[:alnum:]\-\.]*\.[[:alpha:]]{2,10}\)\)" contains=asteriskIP,asteriskHostname
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link asteriskComment Comment
+hi def link asteriskExten String
+hi def link asteriskContext Preproc
+hi def link asteriskPattern Type
+hi def link asteriskApp Statement
+hi def link asteriskInclude Preproc
+hi def link asteriskIncludeBad Error
+hi def link asteriskPriority Preproc
+hi def link asteriskLabel Type
+hi def link asteriskVar String
+hi def link asteriskVarLen Function
+hi def link asteriskExp Type
+hi def link asteriskCodecsPermit Preproc
+hi def link asteriskCodecs String
+hi def link asteriskType Statement
+hi def link asteriskTypeType Type
+hi def link asteriskAuth String
+hi def link asteriskAuthType Type
+hi def link asteriskIPRange Identifier
+hi def link asteriskIP Identifier
+hi def link asteriskPort Identifier
+hi def link asteriskHostname Identifier
+hi def link asteriskSetting Statement
+hi def link asteriskError Error
+
+let b:current_syntax = "asterisk"
+" vim: ts=8 sw=2
+
diff --git a/runtime/syntax/asteriskvm.vim b/runtime/syntax/asteriskvm.vim
new file mode 100644
index 0000000..fa55af5
--- /dev/null
+++ b/runtime/syntax/asteriskvm.vim
@@ -0,0 +1,51 @@
+" Vim syntax file
+" Language: Asterisk voicemail config file
+" Maintainer: Tilghman Lesher (Corydon76)
+" Last Change: 2006 Mar 21
+" version 0.2
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn sync clear
+syn sync fromstart
+
+
+syn keyword asteriskvmTodo TODO contained
+syn match asteriskvmComment ";.*" contains=asteriskvmTodo
+syn match asteriskvmContext "\[.\{-}\]"
+
+" ZoneMessages
+syn match asteriskvmZone "^[[:alnum:]]\+\s*=>\?\s*[[:alnum:]/_]\+|.*$" contains=zoneName,zoneDef
+syn match zoneName "=\zs[[:alnum:]/_]\+\ze" contained
+syn match zoneDef "|\zs.*\ze$" contained
+
+syn match asteriskvmSetting "\<\(format\|serveremail\|minmessage\|maxmessage\|maxgreet\|skipms\|maxsilence\|silencethreshold\|maxlogins\)="
+syn match asteriskvmSetting "\<\(externnotify\|externpass\|directoryintro\|charset\|adsi\(fdn\|sec\|ver\)\|\(pager\)\?fromstring\|email\(subject\|body\|cmd\)\|tz\|cidinternalcontexts\|saydurationm\|dialout\|callback\)="
+syn match asteriskvmSettingBool "\<\(attach\|pbxskip\|usedirectory\|saycid\|sayduration\|sendvoicemail\|review\|operator\|envelope\|delete\|nextaftercmd\|forcename\|forcegreeting\)=\(yes\|no\|1\|0\|true\|false\|t\|f\)"
+
+" Individual mailbox definitions
+syn match asteriskvmMailbox "^[[:digit:]]\+\s*=>\?\s*[[:digit:]]\+\(,[^,]*\(,[^,]*\(,[^,]*\(,[^,]*\)\?\)\?\)\?\)\?" contains=mailboxEmail,asteriskvmSetting,asteriskvmSettingBool,comma
+syn match mailboxEmail ",\zs[^@=,]*@[[:alnum:]\-\.]\+\.[[:alpha:]]\{2,10}\ze" contains=comma
+syn match comma "[,|]" contained
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link asteriskvmComment Comment
+hi def link asteriskvmContext Identifier
+hi def link asteriskvmZone Type
+hi def link zoneName String
+hi def link zoneDef String
+hi def link asteriskvmSetting Type
+hi def link asteriskvmSettingBool Type
+
+hi def link asteriskvmMailbox Statement
+hi def link mailboxEmail String
+
+let b:current_syntax = "asteriskvm"
+
+" vim: ts=8 sw=2
+
diff --git a/runtime/syntax/atlas.vim b/runtime/syntax/atlas.vim
new file mode 100644
index 0000000..1cdceab
--- /dev/null
+++ b/runtime/syntax/atlas.vim
@@ -0,0 +1,85 @@
+" Vim syntax file
+" Language: ATLAS
+" Maintainer: Inaki Saez <jisaez@sfe.indra.es>
+" Last Change: 2001 May 09
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+syn keyword atlasStatement begin terminate
+syn keyword atlasStatement fill calculate compare
+syn keyword atlasStatement setup connect close open disconnect reset
+syn keyword atlasStatement initiate read fetch
+syn keyword atlasStatement apply measure verify remove
+syn keyword atlasStatement perform leave finish output delay
+syn keyword atlasStatement prepare execute
+syn keyword atlasStatement do
+syn match atlasStatement "\<go[ ]\+to\>"
+syn match atlasStatement "\<wait[ ]\+for\>"
+
+syn keyword atlasInclude include
+syn keyword atlasDefine define require declare identify
+
+"syn keyword atlasReserved true false go nogo hi lo via
+syn keyword atlasReserved true false
+
+syn keyword atlasStorageClass external global
+
+syn keyword atlasConditional if then else end
+syn keyword atlasRepeat while for thru
+
+" Flags BEF and statement number
+syn match atlasSpecial "^[BE ][ 0-9]\{,6}\>"
+
+" Number formats
+syn match atlasHexNumber "\<X'[0-9A-F]\+'"
+syn match atlasOctalNumber "\<O'[0-7]\+'"
+syn match atlasBinNumber "\<B'[01]\+'"
+syn match atlasNumber "\<\d\+\>"
+"Floating point number part only
+syn match atlasDecimalNumber "\.\d\+\([eE][-+]\=\d\)\=\>"
+
+syn region atlasFormatString start=+((+ end=+\())\)\|\()[ ]*\$\)+me=e-1
+syn region atlasString start=+\<C'+ end=+'+ oneline
+
+syn region atlasComment start=+^C+ end=+\$+
+syn region atlasComment2 start=+\$.\++ms=s+1 end=+$+ oneline
+
+syn match atlasIdentifier "'[A-Za-z0-9 ._-]\+'"
+
+"Synchronization with Statement terminator $
+syn sync match atlasTerminator grouphere atlasComment "^C"
+syn sync match atlasTerminator groupthere NONE "\$"
+syn sync maxlines=100
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link atlasConditional Conditional
+hi def link atlasRepeat Repeat
+hi def link atlasStatement Statement
+hi def link atlasNumber Number
+hi def link atlasHexNumber Number
+hi def link atlasOctalNumber Number
+hi def link atlasBinNumber Number
+hi def link atlasDecimalNumber Float
+hi def link atlasFormatString String
+hi def link atlasString String
+hi def link atlasComment Comment
+hi def link atlasComment2 Comment
+hi def link atlasInclude Include
+hi def link atlasDefine Macro
+hi def link atlasReserved PreCondit
+hi def link atlasStorageClass StorageClass
+hi def link atlasIdentifier NONE
+hi def link atlasSpecial Special
+
+
+let b:current_syntax = "atlas"
+
+" vim: ts=8
diff --git a/runtime/syntax/autodoc.vim b/runtime/syntax/autodoc.vim
new file mode 100644
index 0000000..67a627e
--- /dev/null
+++ b/runtime/syntax/autodoc.vim
@@ -0,0 +1,101 @@
+" Vim syntax file
+" Language: Autodoc
+" Maintainer: Stephen R. van den Berg <srb@cuci.nl>
+" Last Change: 2018 Jan 23
+" Version: 2.9
+" Remark: Included by pike.vim, cmod.vim and optionally c.vim
+" Remark: In order to make c.vim use it, set: c_autodoc
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case match
+
+" A bunch of useful autodoc keywords
+syn keyword autodocStatement contained appears belongs global
+syn keyword autodocStatement contained decl directive inherit
+syn keyword autodocStatement contained deprecated obsolete bugs
+syn keyword autodocStatement contained copyright example fixme note param returns
+syn keyword autodocStatement contained seealso thanks throws constant
+syn keyword autodocStatement contained member index elem
+syn keyword autodocStatement contained value type item
+
+syn keyword autodocRegion contained enum mapping code multiset array
+syn keyword autodocRegion contained int string section mixed ol ul dl
+syn keyword autodocRegion contained class module namespace
+syn keyword autodocRegion contained endenum endmapping endcode endmultiset
+syn keyword autodocRegion contained endarray endint endstring endsection
+syn keyword autodocRegion contained endmixed endol endul enddl
+syn keyword autodocRegion contained endclass endmodule endnamespace
+
+syn keyword autodocIgnore contained ignore endignore
+
+syn keyword autodocStatAcc contained b i u tt url pre sub sup
+syn keyword autodocStatAcc contained ref rfc xml dl expr image
+
+syn keyword autodocTodo contained TODO FIXME XXX
+
+syn match autodocLineStart display "\(//\|/\?\*\)\@2<=!"
+syn match autodocWords "[^!@{}[\]]\+" display contains=@Spell
+
+syn match autodocLink "@\[[^[\]]\+]"hs=s+2,he=e-1 display contains=autodocLead
+syn match autodocAtStmt "@[a-z]\+\%(\s\|$\)\@="hs=s+1 display contains=autodocStatement,autodocIgnore,autodocLead,autodocRegion
+
+" Due to limitations of the matching algorithm, we cannot highlight
+" nested autodocNStmtAcc structures correctly
+syn region autodocNStmtAcc start="@[a-z]\+{" end="@}" contains=autodocStatAcc,autodocLead keepend
+
+syn match autodocUrl contained display ".\+"
+syn region autodocAtUrlAcc start="{"ms=s+1 end="@}"he=e-1,me=e-2 contained display contains=autodocUrl,autodocLead keepend
+syn region autodocNUrlAcc start="@url{" end="@}" contains=autodocStatAcc,autodocAtUrlAcc,autodocLead transparent
+
+syn match autodocSpecial "@@" display
+syn match autodocLead "@" display contained
+
+"when wanted, highlight trailing white space
+if exists("c_space_errors")
+ if !exists("c_no_trail_space_error")
+ syn match autodocSpaceError display excludenl "\s\+$"
+ endif
+ if !exists("c_no_tab_space_error")
+ syn match autodocSpaceError display " \+\t"me=e-1
+ endif
+endif
+
+if exists("c_minlines")
+ let b:c_minlines = c_minlines
+else
+ if !exists("c_no_if0")
+ let b:c_minlines = 50 " #if 0 constructs can be long
+ else
+ let b:c_minlines = 15 " mostly for () constructs
+ endif
+endif
+exec "syn sync ccomment autodocComment minlines=" . b:c_minlines
+
+" Define the default highlighting.
+" Only used when an item doesn't have highlighting yet
+hi def link autodocStatement Statement
+hi def link autodocStatAcc Statement
+hi def link autodocRegion Structure
+hi def link autodocAtStmt Error
+hi def link autodocNStmtAcc Identifier
+hi def link autodocLink Type
+hi def link autodocTodo Todo
+hi def link autodocSpaceError Error
+hi def link autodocLineStart SpecialComment
+hi def link autodocSpecial SpecialChar
+hi def link autodocUrl Underlined
+hi def link autodocLead Statement
+hi def link autodocIgnore Delimiter
+
+let b:current_syntax = "autodoc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/autohotkey.vim b/runtime/syntax/autohotkey.vim
new file mode 100644
index 0000000..a888394
--- /dev/null
+++ b/runtime/syntax/autohotkey.vim
@@ -0,0 +1,325 @@
+" Vim syntax file
+" Language: AutoHotkey script file
+" Maintainer: Michael Wong
+" https://github.com/mmikeww/autohotkey.vim
+" Latest Revision: 2022-07-25
+" Previous Maintainers: SungHyun Nam <goweol@gmail.com>
+" Nikolai Weibull <now@bitwi.se>
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case ignore
+
+syn keyword autohotkeyTodo
+ \ contained
+ \ TODO FIXME XXX NOTE
+
+" only these chars are valid as escape sequences: ,%`;nrbtvaf
+" https://autohotkey.com/docs/commands/_EscapeChar.htm
+syn match autohotkeyEscape
+ \ display
+ \ '`[,%`;nrbtvaf]'
+
+syn region autohotkeyString
+ \ display
+ \ oneline
+ \ matchgroup=autohotkeyStringDelimiter
+ \ start=+"+
+ \ end=+"+
+ \ contains=autohotkeyEscape,autohotkeyMatchClass
+
+syn match autohotkeyVariable
+ \ display
+ \ oneline
+ \ contains=autohotkeyBuiltinVariable
+ \ keepend
+ \ '%\S\{-}%'
+
+syn keyword autohotkeyBuiltinVariable
+ \ A_Space A_Tab
+ \ A_WorkingDir A_ScriptDir A_ScriptName A_ScriptFullPath A_ScriptHwnd A_LineNumber
+ \ A_LineFile A_ThisFunc A_ThisLabel A_AhkVersion A_AhkPath A_IsUnicode A_IsCompiled A_ExitReason
+ \ A_YYYY A_MM A_DD A_MMMM A_MMM A_DDDD A_DDD A_WDay A_YDay A_YWeek A_Hour A_Min
+ \ A_Mon A_Year A_MDay A_NumBatchLines
+ \ A_Sec A_MSec A_Now A_NowUTC A_TickCount
+ \ A_IsSuspended A_IsPaused A_IsCritical A_BatchLines A_TitleMatchMode A_TitleMatchModeSpeed
+ \ A_DetectHiddenWindows A_DetectHiddenText A_AutoTrim A_StringCaseSense
+ \ A_FileEncoding A_FormatInteger A_FormatFloat A_WinDelay A_ControlDelay
+ \ A_SendMode A_SendLevel A_StoreCapsLockMode A_KeyDelay A_KeyDuration
+ \ A_KeyDelayPlay A_KeyDurationPlay A_MouseDelayPlay
+ \ A_MouseDelay A_DefaultMouseSpeed A_RegView A_IconHidden A_IconTip A_IconFile
+ \ A_CoordModeToolTip A_CoordModePixel A_CoordModeMouse A_CoordModeCaret A_CoordModeMenu
+ \ A_IconNumber
+ \ A_TimeIdle A_TimeIdlePhysical A_DefaultGui A_DefaultListView A_DefaultTreeView
+ \ A_Gui A_GuiControl A_GuiWidth A_GuiHeight A_GuiX A_GuiY A_GuiEvent
+ \ A_GuiControlEvent A_EventInfo
+ \ A_ThisMenuItem A_ThisMenu A_ThisMenuItemPos A_ThisHotkey A_PriorHotkey
+ \ A_PriorKey A_TimeSinceThisHotkey A_TimeSincePriorHotkey A_EndChar
+ \ ComSpec A_Temp A_OSType A_OSVersion A_Language A_ComputerName A_UserName
+ \ A_Is64BitOS A_PtrSize
+ \ A_WinDir A_ProgramFiles ProgramFiles A_AppData A_AppDataCommon A_Desktop
+ \ A_DesktopCommon A_StartMenu A_StartMenuCommon A_Programs
+ \ A_ProgramsCommon A_Startup A_StartupCommon A_MyDocuments A_IsAdmin
+ \ A_ScreenWidth A_ScreenHeight A_ScreenDPI A_IPAddress1 A_IPAddress2 A_IPAddress3
+ \ A_IPAddress4
+ \ A_Cursor A_CaretX A_CaretY Clipboard ClipboardAll ErrorLevel A_LastError
+ \ A_Index A_LoopFileName A_LoopRegName A_LoopReadLine A_LoopField
+ \ A_LoopFileExt A_LoopFileFullPath A_LoopFileLongPath A_LoopFileShortPath
+ \ A_LoopFileShortName A_LoopFileDir A_LoopFileTimeModified A_LoopFileTimeCreated
+ \ A_LoopFileTimeAccessed A_LoopFileAttrib A_LoopFileSize A_LoopFileSizeKB A_LoopFileSizeMB
+ \ A_LoopRegType A_LoopRegKey A_LoopRegSubKey A_LoopRegTimeModified
+ \ A_TimeIdleKeyboard A_TimeIdleMouse A_ListLines A_ComSpec A_LoopFilePath A_Args
+
+syn match autohotkeyBuiltinVariable
+ \ contained
+ \ display
+ \ '%\d\+%'
+
+syn keyword autohotkeyCommand
+ \ ClipWait EnvGet EnvSet EnvUpdate
+ \ Drive DriveGet DriveSpaceFree FileAppend FileCopy FileCopyDir
+ \ FileCreateDir FileCreateShortcut FileDelete FileGetAttrib FileEncoding
+ \ FileGetShortcut FileGetSize FileGetTime FileGetVersion FileInstall
+ \ FileMove FileMoveDir FileReadLine FileRead FileRecycle FileRecycleEmpty
+ \ FileRemoveDir FileSelectFolder FileSelectFile FileSetAttrib FileSetTime
+ \ IniDelete IniRead IniWrite SetWorkingDir
+ \ SplitPath
+ \ Gui GuiControl GuiControlGet IfMsgBox InputBox MsgBox Progress
+ \ SplashImage SplashTextOn SplashTextOff ToolTip TrayTip
+ \ Hotkey ListHotkeys BlockInput ControlSend ControlSendRaw GetKeyState
+ \ KeyHistory KeyWait Input Send SendRaw SendInput SendPlay SendEvent
+ \ SendMode SetKeyDelay SetNumScrollCapsLockState SetStoreCapslockMode
+ \ EnvAdd EnvDiv EnvMult EnvSub Random SetFormat Transform
+ \ AutoTrim BlockInput CoordMode Critical Edit ImageSearch
+ \ ListLines ListVars Menu OutputDebug PixelGetColor PixelSearch
+ \ SetBatchLines SetEnv SetTimer SysGet Thread Transform URLDownloadToFile
+ \ Click ControlClick MouseClick MouseClickDrag MouseGetPos MouseMove
+ \ SetDefaultMouseSpeed SetMouseDelay
+ \ Process Run RunWait RunAs Shutdown Sleep
+ \ RegDelete RegRead RegWrite
+ \ SoundBeep SoundGet SoundGetWaveVolume SoundPlay SoundSet
+ \ SoundSetWaveVolume
+ \ FormatTime IfInString IfNotInString Sort StringCaseSense StringGetPos
+ \ StringLeft StringRight StringLower StringUpper StringMid StringReplace
+ \ StringSplit StringTrimLeft StringTrimRight StringLen
+ \ StrSplit StrReplace Throw
+ \ Control ControlClick ControlFocus ControlGet ControlGetFocus
+ \ ControlGetPos ControlGetText ControlMove ControlSend ControlSendRaw
+ \ ControlSetText Menu PostMessage SendMessage SetControlDelay
+ \ WinMenuSelectItem GroupActivate GroupAdd GroupClose GroupDeactivate
+ \ DetectHiddenText DetectHiddenWindows SetTitleMatchMode SetWinDelay
+ \ StatusBarGetText StatusBarWait WinActivate WinActivateBottom WinClose
+ \ WinGet WinGetActiveStats WinGetActiveTitle WinGetClass WinGetPos
+ \ WinGetText WinGetTitle WinHide WinKill WinMaximize WinMinimize
+ \ WinMinimizeAll WinMinimizeAllUndo WinMove WinRestore WinSet
+ \ WinSetTitle WinShow WinWait WinWaitActive WinWaitNotActive WinWaitClose
+ \ SetCapsLockState SetNumLockState SetScrollLockState
+ \ Hotstring LoadPicture MenuGetHandle MenuGetName OnError OnClipboardChange
+
+syn keyword autohotkeyFunction
+ \ InStr RegExMatch RegExReplace StrLen SubStr Asc Chr Func
+ \ DllCall VarSetCapacity WinActive WinExist IsLabel OnMessage
+ \ Abs Ceil Exp Floor Log Ln Mod Round Sqrt Sin Cos Tan ASin ACos ATan
+ \ FileExist GetKeyState NumGet NumPut StrGet StrPut RegisterCallback
+ \ IsFunc Trim LTrim RTrim IsObject Object Array FileOpen
+ \ ComObjActive ComObjArray ComObjConnect ComObjCreate ComObjGet
+ \ ComObjError ComObjFlags ComObjQuery ComObjType ComObjValue ComObject
+ \ Format Exception Ord InputHook
+
+syn keyword autohotkeyStatement
+ \ Break Continue Exit ExitApp Gosub Goto OnExit Pause Return
+ \ Suspend Reload new class extends
+
+syn keyword autohotkeyRepeat
+ \ Loop
+
+syn keyword autohotkeyConditional
+ \ IfExist IfNotExist If IfEqual IfLess IfGreater Else
+ \ IfWinExist IfWinNotExist IfWinActive IfWinNotActive
+ \ IfNotEqual IfLessOrEqual IfGreaterOrEqual
+ \ while until for in try catch finally not
+ \ switch case default
+
+syn match autohotkeyPreProcStart
+ \ nextgroup=
+ \ autohotkeyInclude,
+ \ autohotkeyPreProc
+ \ skipwhite
+ \ display
+ \ '^\s*\zs#'
+
+syn keyword autohotkeyInclude
+ \ contained
+ \ Include
+ \ IncludeAgain
+
+syn keyword autohotkeyPreProc
+ \ contained
+ \ HotkeyInterval HotKeyModifierTimeout
+ \ Hotstring
+ \ IfWinActive IfWinNotActive IfWinExist IfWinNotExist
+ \ If IfTimeout
+ \ MaxHotkeysPerInterval MaxThreads MaxThreadsBuffer MaxThreadsPerHotkey
+ \ UseHook InstallKeybdHook InstallMouseHook
+ \ KeyHistory
+ \ NoTrayIcon SingleInstance
+ \ WinActivateForce
+ \ AllowSameLineComments
+ \ ClipboardTimeout
+ \ CommentFlag
+ \ ErrorStdOut
+ \ EscapeChar
+ \ MaxMem
+ \ NoEnv
+ \ Persistent
+ \ LTrim
+ \ InputLevel
+ \ MenuMaskKey
+ \ Warn
+
+syn keyword autohotkeyMatchClass
+ \ ahk_group ahk_class ahk_id ahk_pid ahk_exe
+
+syn match autohotkeyNumbers
+ \ display
+ \ transparent
+ \ contains=
+ \ autohotkeyInteger,
+ \ autohotkeyFloat
+ \ '\<\d\|\.\d'
+
+syn match autohotkeyInteger
+ \ contained
+ \ display
+ \ '\d\+\>'
+
+syn match autohotkeyInteger
+ \ contained
+ \ display
+ \ '0x\x\+\>'
+
+syn match autohotkeyFloat
+ \ contained
+ \ display
+ \ '\d\+\.\d*\|\.\d\+\>'
+
+syn keyword autohotkeyType
+ \ local
+ \ global
+ \ static
+ \ byref
+
+syn keyword autohotkeyBoolean
+ \ true
+ \ false
+
+syn match autohotkeyHotkey
+ \ contains=autohotkeyKey,
+ \ autohotkeyHotkeyDelimiter
+ \ display
+ \ '^\s*\S*\%( Up\)\?::'
+
+syn match autohotkeyKey
+ \ contained
+ \ display
+ \ '^.\{-}'
+
+syn match autohotkeyDelimiter
+ \ contained
+ \ display
+ \ '::'
+
+" allowable hotstring options:
+" https://autohotkey.com/docs/Hotstrings.htm
+syn match autohotkeyHotstringDefinition
+ \ contains=autohotkeyHotstring,
+ \ autohotkeyHotstringDelimiter
+ \ display
+ \ '^\s*:\%([*?]\|[BORZ]0\?\|C[01]\?\|K\d\+\|P\d\+\|S[IPE]\)*:.\{-}::'
+
+syn match autohotkeyHotstring
+ \ contained
+ \ display
+ \ '.\{-}'
+
+syn match autohotkeyHotstringDelimiter
+ \ contained
+ \ display
+ \ '::'
+
+syn match autohotkeyHotstringDelimiter
+ \ contains=autohotkeyHotstringOptions
+ \ contained
+ \ display
+ \ ':\%([*?]\|[BORZ]0\?\|C[01]\?\|K\d\+\|P\d\+\|S[IPE]\)*:'
+
+syn match autohotkeyHotstringOptions
+ \ contained
+ \ display
+ \ '\%([*?]\|[BORZ]0\?\|C[01]\?\|K\d\+\|P\d\+\|S[IPE]\)*'
+
+syn cluster autohotkeyCommentGroup
+ \ contains=
+ \ autohotkeyTodo,
+ \ @Spell
+
+syn match autohotkeyComment
+ \ display
+ \ contains=@autohotkeyCommentGroup
+ \ '\%(^;\|\s\+;\).*$'
+
+syn region autohotkeyComment
+ \ contains=@autohotkeyCommentGroup
+ \ matchgroup=autohotkeyCommentStart
+ \ start='^\s*/\*'
+ \ end='^\s*\*/'
+
+" TODO: Shouldn't we look for g:, b:, variables before defaulting to
+" something?
+if exists("g:autohotkey_syntax_sync_minlines")
+ let b:autohotkey_syntax_sync_minlines = g:autohotkey_syntax_sync_minlines
+else
+ let b:autohotkey_syntax_sync_minlines = 50
+endif
+exec "syn sync ccomment autohotkeyComment minlines=" . b:autohotkey_syntax_sync_minlines
+
+hi def link autohotkeyTodo Todo
+hi def link autohotkeyComment Comment
+hi def link autohotkeyCommentStart autohotkeyComment
+hi def link autohotkeyEscape Special
+hi def link autohotkeyHotkey Type
+hi def link autohotkeyKey Type
+hi def link autohotkeyDelimiter Delimiter
+hi def link autohotkeyHotstringDefinition Type
+hi def link autohotkeyHotstring Type
+hi def link autohotkeyHotstringDelimiter autohotkeyDelimiter
+hi def link autohotkeyHotstringOptions Special
+hi def link autohotkeyString String
+hi def link autohotkeyStringDelimiter autohotkeyString
+hi def link autohotkeyVariable Identifier
+hi def link autohotkeyVariableDelimiter autohotkeyVariable
+hi def link autohotkeyBuiltinVariable Macro
+hi def link autohotkeyCommand Keyword
+hi def link autohotkeyFunction Function
+hi def link autohotkeyStatement autohotkeyCommand
+hi def link autohotkeyRepeat Repeat
+hi def link autohotkeyConditional Conditional
+hi def link autohotkeyPreProcStart PreProc
+hi def link autohotkeyInclude Include
+hi def link autohotkeyPreProc PreProc
+hi def link autohotkeyMatchClass Typedef
+hi def link autohotkeyNumber Number
+hi def link autohotkeyInteger autohotkeyNumber
+hi def link autohotkeyFloat autohotkeyNumber
+hi def link autohotkeyType Type
+hi def link autohotkeyBoolean Boolean
+
+let b:current_syntax = "autohotkey"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/autoit.vim b/runtime/syntax/autoit.vim
new file mode 100644
index 0000000..6b6048a
--- /dev/null
+++ b/runtime/syntax/autoit.vim
@@ -0,0 +1,1125 @@
+" Vim syntax file
+"
+" Language: AutoIt v3 (http://www.autoitscript.com/autoit3/)
+" Maintainer: Jared Breland <jbreland@legroom.net>
+" Authored By: Riccardo Casini <ric@libero.it>
+" Script URL: http://www.vim.org/scripts/script.php?script_id=1239
+" ChangeLog: Please visit the script URL for detailed change information
+" Included change from #970.
+
+" Quit when a syntax file was already loaded.
+if exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+let b:current_syntax = "autoit"
+
+" AutoIt is not case dependent
+syn case ignore
+
+" Definitions for AutoIt reserved keywords
+syn keyword autoitKeyword Default False True
+syn keyword autoitKeyword Const Dim Global Local ReDim
+syn keyword autoitKeyword If Else ElseIf Then EndIf
+syn keyword autoitKeyword Select Switch Case EndSelect EndSwitch
+syn keyword autoitKeyword Enum For In To Step Next
+syn keyword autoitKeyword With While EndWith Wend Do Until
+syn keyword autoitKeyword ContinueCase ContinueLoop ExitLoop Exit
+
+" inside script inclusion and global options
+syn match autoitIncluded display contained "<[^>]*>"
+syn match autoitInclude display "^\s*#\s*include\>\s*["<]"
+ \ contains=autoitIncluded,autoitString
+syn match autoitInclude "^\s*#include-once\>"
+syn match autoitInclude "^\s*#NoTrayIcon\>"
+syn match autoitInclude "^\s*#RequireAdmin\>"
+
+" user-defined functions
+syn keyword autoitKeyword Func ByRef EndFunc Return OnAutoItStart OnAutoItExit
+
+" built-in functions
+" environment management
+syn keyword autoitFunction ClipGet ClipPut EnvGet EnvSet EnvUpdate MemGetStats
+" file, directory, and disk management
+syn keyword autoitFunction ConsoleRead ConsoleWrite ConsoleWriteError
+syn keyword autoitFunction DirCopy DirCreate DirGetSize DirMove DirRemove
+syn keyword autoitFunction DriveGetDrive DriveGetFileSystem DriveGetLabel
+ \ DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet
+ \ DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus
+syn keyword autoitFunction FileChangeDir FileClose FileCopy FileCreateNTFSLink
+ \ FileCreateShortcut FileDelete FileExists FileFindFirstFile
+ \ FileFindNextFile FileGetAttrib FileGetLongName FileGetShortcut
+ \ FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall
+ \ FileMove FileOpen FileOpenDialog FileRead FileReadLine FileRecycle
+ \ FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib
+ \ FileSetTime FileWrite FileWriteLine
+syn keyword autoitFunction IniDelete IniRead IniReadSection IniReadSectionNames
+ \ IniRenameSection IniWrite IniWriteSection
+syn keyword autoitFunction StderrRead StdinWrite StdoutRead
+" graphic and sound
+syn keyword autoitFunction Beep PixelChecksum PixelGetColor PixelSearch
+ \ SoundPlay SoundSetWaveVolume
+" gui reference
+syn keyword autoitFunction GUICreate GUIDelete GUICtrlGetHandle GUICtrlGetState
+ \ GUICtrlRead GUICtrlRecvMsg GUICtrlSendMsg GUICtrlSendToDummy
+ \ GUIGetCursorInfo GUIGetMsg GUIRegisterMsg GUIStartGroup GUISwitch
+syn keyword autoitFunction GUICtrlCreateAvi GUICtrlCreateButton
+ \ GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu
+ \ GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit
+ \ GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon
+ \ GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList
+ \ GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu
+ \ GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj
+ \ GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio
+ \ GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem
+ \ GUICtrlCreateTreeView GUICtrlCreateTreeViewItem
+ \ GUICtrlCreateUpDown GUICtrlDelete
+syn keyword autoitFunction GUICtrlRegisterListViewSort GUICtrlSetBkColor
+ \ GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetFont
+ \ GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent
+ \ GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle
+ \ GUICtrlSetTip
+syn keyword autoitFunction GUISetBkColor GUISetCoord GUISetCursor GUISetFont
+ \ GUISetHelp GUISetIcon GUISetOnEvent GUISetState
+" keyboard control
+syn keyword autoitFunction HotKeySet Send
+" math
+syn keyword autoitFunction Abs ACos ASin ATan BitAND BitNOT BitOR BitRotate
+ \ BitShift BitXOR Cos Ceiling Exp Floor Log Mod Random Round Sin Sqrt
+ \ SRandom Tan
+" message boxes and dialogs
+syn keyword autoitFunction InputBox MsgBox ProgressOff ProgressOn ProgressSet
+ \ SplashImageOn SplashOff SplashTextOn ToolTip
+" miscellaneous
+syn keyword autoitFunction AdlibDisable AdlibEnable AutoItSetOption
+ \ AutoItWinGetTitle AutoItWinSetTitle BlockInput Break Call CDTray
+ \ Execute Opt SetError SetExtended
+" mouse control
+syn keyword autoitFunction MouseClick MouseClickDrag MouseDown MouseGetCursor
+ \ MouseGetPos MouseMove MouseUp MouseWheel
+" network
+syn keyword autoitFunction FtpSetProxy HttpSetProxy InetGet InetGetSize Ping
+ \ TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIp TCPRecv
+ \ TCPSend TCPShutDown TCPStartup UDPBind UDPCloseSocket UDPOpen UDPRecv
+ \ UDPSend UDPShutdown UDPStartup
+" obj/com reference
+syn keyword autoitFunction ObjCreate ObjEvent ObjGet ObjName
+" process management
+syn keyword autoitFunction DllCall DllClose DllOpen DllStructCreate
+ \ DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData
+ \ ProcessClose ProcessExists ProcessSetPriority ProcessList ProcessWait
+ \ ProcessWaitClose Run RunAsSet RunWait ShellExecute ShellExecuteWait
+ \ Shutdown
+ " removed from 3.2.0 docs - PluginClose PluginOpen
+" registry management
+syn keyword autoitFunction RegDelete RegEnumKey RegEnumVal RegRead RegWrite
+" string management
+syn keyword autoitFunction StringAddCR StringFormat StringInStr StringIsAlNum
+ \ StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt
+ \ StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft
+ \ StringLen StringLower StringMid StringRegExp StringRegExpReplace
+ \ StringReplace StringRight StringSplit StringStripCR StringStripWS
+ \ StringTrimLeft StringTrimRight StringUpper
+" timer and delay
+syn keyword autoitFunction Sleep TimerInit TimerDiff
+" tray
+syn keyword autoitFunction TrayCreateItem TrayCreateMenu TrayItemDelete
+ \ TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent
+ \ TrayItemSetState TrayItemSetText TrayGetMsg TraySetClick TraySetIcon
+ \ TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip
+" variables and conversions
+syn keyword autoitFunction Asc Assign Binary Chr Dec Eval Hex HWnd Int IsAdmin
+ \ IsArray IsBinaryString IsBool IsDeclared IsDllStruct IsFloat IsHWnd
+ \ IsInt IsKeyword IsNumber IsObj IsString Number String UBound
+" window management
+syn keyword autoitFunction WinActivate WinActive WinClose WinExists WinFlash
+ \ WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos
+ \ WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList
+ \ WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove
+ \ WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait WinWaitActive
+ \ WinWaitClose WinWaitNotActive
+syn keyword autoitFunction ControlClick ControlCommand ControlDisable
+ \ ControlEnable ControlFocus ControlGetFocus ControlGetHandle
+ \ ControlGetPos ControlGetText ControlHide ControlListView ControlMove
+ \ ControlSend ControlSetText ControlShow StatusBarGetText
+
+" user defined functions
+" array
+syn keyword autoitFunction _ArrayAdd _ArrayBinarySearch _ArrayCreate
+ \ _ArrayDelete _ArrayDisplay _ArrayInsert _ArrayMax _ArrayMaxIndex
+ \ _ArrayMin _ArrayMinIndex _ArrayPop _ArrayPush _ArrayReverse
+ \ _ArraySearch _ArraySort _ArraySwap _ArrayToClip _ArrayToString
+ \ _ArrayTrim
+" color
+syn keyword autoitFunction _ColorgetBlue _ColorGetGreen _ColorGetRed
+" date
+syn keyword autoitFunction _DateAdd _DateDayOfWeek _DateDaysInMonth _DateDiff
+ \ _DateIsLeapYear _DateIsValid _DateTimeFormat _DateTimeSplit
+ \ _DateToDayOfWeek _ToDayOfWeekISO _DateToDayValue _DayValueToDate _Now
+ \ _NowCalc _NowCalcDate _NowDate _NowTime _SetDate _SetTime _TicksToTime
+ \ _TimeToTicks _WeekNumberISO
+" file
+syn keyword autoitFunction _FileCountLines _FileCreate _FileListToArray
+ \ _FilePrint _FileReadToArray _FileWriteFromArray _FileWriteLog
+ \ _FileWriteToLine _PathFull _PathMake _PathSplit _ReplaceStringInFile
+ \ _TempFile
+" guicombo
+syn keyword autoitFunction _GUICtrlComboAddDir _GUICtrlComboAddString
+ \ _GUICtrlComboAutoComplete _GUICtrlComboDeleteString
+ \ _GUICtrlComboFindString _GUICtrlComboGetCount _GUICtrlComboGetCurSel
+ \ _GUICtrlComboGetDroppedControlRect _GUICtrlComboGetDroppedState
+ \ _GUICtrlComboGetDroppedWidth _GUICtrlComboGetEditSel
+ \ _GUICtrlComboGetExtendedUI _GUICtrlComboGetHorizontalExtent
+ \ _GUICtrlComboGetItemHeight _GUICtrlComboGetLBText
+ \ _GUICtrlComboGetLBTextLen _GUICtrlComboGetList _GUICtrlComboGetLocale
+ \ _GUICtrlComboGetMinVisible _GUICtrlComboGetTopIndex
+ \ _GUICtrlComboInitStorage _GUICtrlComboInsertString
+ \ _GUICtrlComboLimitText _GUICtrlComboResetContent
+ \ _GUICtrlComboSelectString _GUICtrlComboSetCurSel
+ \ _GUICtrlComboSetDroppedWidth _GUICtrlComboSetEditSel
+ \ _GUICtrlComboSetExtendedUI _GUICtrlComboSetHorizontalExtent
+ \ _GUICtrlComboSetItemHeight _GUICtrlComboSetMinVisible
+ \ _GUICtrlComboSetTopIndex _GUICtrlComboShowDropDown
+" guiedit
+syn keyword autoitFunction _GUICtrlEditCanUndo _GUICtrlEditEmptyUndoBuffer
+ \ _GuiCtrlEditFind _GUICtrlEditGetFirstVisibleLine _GUICtrlEditGetLine
+ \ _GUICtrlEditGetLineCount _GUICtrlEditGetModify _GUICtrlEditGetRect
+ \ _GUICtrlEditGetSel _GUICtrlEditLineFromChar _GUICtrlEditLineIndex
+ \ _GUICtrlEditLineLength _GUICtrlEditLineScroll _GUICtrlEditReplaceSel
+ \ _GUICtrlEditScroll _GUICtrlEditSetModify _GUICtrlEditSetRect
+ \ _GUICtrlEditSetSel _GUICtrlEditUndo
+" guiipaddress
+syn keyword autoitFunction _GUICtrlIpAddressClear _GUICtrlIpAddressCreate
+ \ _GUICtrlIpAddressDelete _GUICtrlIpAddressGet _GUICtrlIpAddressIsBlank
+ \ _GUICtrlIpAddressSet _GUICtrlIpAddressSetFocus
+ \ _GUICtrlIpAddressSetFont
+ \ _GUICtrlIpAddressSetRange _GUICtrlIpAddressShowHide
+" guilist
+syn keyword autoitFunction _GUICtrlListAddDir _GUICtrlListAddItem
+ \ _GUICtrlListClear
+ \ _GUICtrlListCount _GUICtrlListDeleteItem _GUICtrlListFindString
+ \ _GUICtrlListGetAnchorIndex _GUICtrlListGetCaretIndex
+ \ _GUICtrlListGetHorizontalExtent _GUICtrlListGetInfo
+ \ _GUICtrlListGetItemRect _GUICtrlListGetLocale _GUICtrlListGetSelCount
+ \ _GUICtrlListGetSelItems _GUICtrlListGetSelItemsText
+ \ _GUICtrlListGetSelState _GUICtrlListGetText _GUICtrlListGetTextLen
+ \ _GUICtrlListGetTopIndex _GUICtrlListInsertItem
+ \ _GUICtrlListReplaceString _GUICtrlListSelectedIndex
+ \ _GUICtrlListSelectIndex _GUICtrlListSelectString
+ \ _GUICtrlListSelItemRange _GUICtrlListSelItemRangeEx
+ \ _GUICtrlListSetAnchorIndex _GUICtrlListSetCaretIndex
+ \ _GUICtrlListSetHorizontalExtent _GUICtrlListSetLocale
+ \ _GUICtrlListSetSel _GUICtrlListSetTopIndex _GUICtrlListSort
+ \ _GUICtrlListSwapString
+" guilistview
+syn keyword autoitFunction _GUICtrlListViewCopyItems
+ \ _GUICtrlListViewDeleteAllItems _GUICtrlListViewDeleteColumn
+ \ _GUICtrlListViewDeleteItem _GUICtrlListViewDeleteItemsSelected
+ \ _GUICtrlListViewEnsureVisible _GUICtrlListViewFindItem
+ \ _GUICtrlListViewGetBackColor _GUICtrlListViewGetCallBackMask
+ \ _GUICtrlListViewGetCheckedState _GUICtrlListViewGetColumnOrder
+ \ _GUICtrlListViewGetColumnWidth _GUICtrlListViewGetCounterPage
+ \ _GUICtrlListViewGetCurSel _GUICtrlListViewGetExtendedListViewStyle
+ \ _GUICtrlListViewGetHeader _GUICtrlListViewGetHotCursor
+ \ _GUICtrlListViewGetHotItem _GUICtrlListViewGetHoverTime
+ \ _GUICtrlListViewGetItemCount _GUICtrlListViewGetItemText
+ \ _GUICtrlListViewGetItemTextArray _GUICtrlListViewGetNextItem
+ \ _GUICtrlListViewGetSelectedCount _GUICtrlListViewGetSelectedIndices
+ \ _GUICtrlListViewGetSubItemsCount _GUICtrlListViewGetTopIndex
+ \ _GUICtrlListViewGetUnicodeFormat _GUICtrlListViewHideColumn
+ \ _GUICtrlListViewInsertColumn _GUICtrlListViewInsertItem
+ \ _GUICtrlListViewJustifyColumn _GUICtrlListViewScroll
+ \ _GUICtrlListViewSetCheckState _GUICtrlListViewSetColumnHeaderText
+ \ _GUICtrlListViewSetColumnOrder _GUICtrlListViewSetColumnWidth
+ \ _GUICtrlListViewSetHotItem _GUICtrlListViewSetHoverTime
+ \ _GUICtrlListViewSetItemCount _GUICtrlListViewSetItemSelState
+ \ _GUICtrlListViewSetItemText _GUICtrlListViewSort
+" guimonthcal
+syn keyword autoitFunction _GUICtrlMonthCalGet1stDOW _GUICtrlMonthCalGetColor
+ \ _GUICtrlMonthCalGetDelta _GUICtrlMonthCalGetMaxSelCount
+ \ _GUICtrlMonthCalGetMaxTodayWidth _GUICtrlMonthCalGetMinReqRect
+ \ _GUICtrlMonthCalSet1stDOW _GUICtrlMonthCalSetColor
+ \ _GUICtrlMonthCalSetDelta _GUICtrlMonthCalSetMaxSelCount
+" guislider
+syn keyword autoitFunction _GUICtrlSliderClearTics _GUICtrlSliderGetLineSize
+ \ _GUICtrlSliderGetNumTics _GUICtrlSliderGetPageSize
+ \ _GUICtrlSliderGetPos _GUICtrlSliderGetRangeMax
+ \ _GUICtrlSliderGetRangeMin _GUICtrlSliderSetLineSize
+ \ _GUICtrlSliderSetPageSize _GUICtrlSliderSetPos
+ \ _GUICtrlSliderSetTicFreq
+" guistatusbar
+syn keyword autoitFunction _GuiCtrlStatusBarCreate
+ \ _GUICtrlStatusBarCreateProgress _GUICtrlStatusBarDelete
+ \ _GuiCtrlStatusBarGetBorders _GuiCtrlStatusBarGetIcon
+ \ _GuiCtrlStatusBarGetParts _GuiCtrlStatusBarGetRect
+ \ _GuiCtrlStatusBarGetText _GuiCtrlStatusBarGetTextLength
+ \ _GuiCtrlStatusBarGetTip _GuiCtrlStatusBarGetUnicode
+ \ _GUICtrlStatusBarIsSimple _GuiCtrlStatusBarResize
+ \ _GuiCtrlStatusBarSetBKColor _GuiCtrlStatusBarSetIcon
+ \ _GuiCtrlStatusBarSetMinHeight _GUICtrlStatusBarSetParts
+ \ _GuiCtrlStatusBarSetSimple _GuiCtrlStatusBarSetText
+ \ _GuiCtrlStatusBarSetTip _GuiCtrlStatusBarSetUnicode
+ \ _GUICtrlStatusBarShowHide
+" guitab
+syn keyword autoitFunction _GUICtrlTabDeleteAllItems _GUICtrlTabDeleteItem
+ \ _GUICtrlTabDeselectAll _GUICtrlTabGetCurFocus _GUICtrlTabGetCurSel
+ \ _GUICtrlTabGetExtendedStyle _GUICtrlTabGetItemCount
+ \ _GUICtrlTabGetItemRect _GUICtrlTabGetRowCount
+ \ _GUICtrlTabGetUnicodeFormat _GUICtrlTabHighlightItem
+ \ _GUICtrlTabSetCurFocus _GUICtrlTabSetCurSel
+ \ _GUICtrlTabSetMinTabWidth _GUICtrlTabSetUnicodeFormat
+" guitreeview
+syn keyword autoitFunction _GUICtrlTreeViewDeleteAllItems
+ \ _GUICtrlTreeViewDeleteItem _GUICtrlTreeViewExpand
+ \ _GUICtrlTreeViewGetBkColor _GUICtrlTreeViewGetCount
+ \ _GUICtrlTreeViewGetIndent _GUICtrlTreeViewGetLineColor
+ \ _GUICtrlTreeViewGetParentHandle _GUICtrlTreeViewGetParentID
+ \ _GUICtrlTreeViewGetState _GUICtrlTreeViewGetText
+ \ _GUICtrlTreeViewGetTextColor _GUICtrlTreeViewItemGetTree
+ \ _GUICtrlTreeViewInsertItem _GUICtrlTreeViewSetBkColor
+ \ _GUICtrlTreeViewSetIcon _GUICtrlTreeViewSetIndent
+ \ _GUICtrlTreeViewSetLineColor GUICtrlTreeViewSetState
+ \ _GUICtrlTreeViewSetText _GUICtrlTreeViewSetTextColor
+ \ _GUICtrlTreeViewSort
+" ie
+syn keyword autoitFunction _IE_Example _IE_Introduction _IE_VersionInfo
+ \ _IEAction _IEAttach _IEBodyReadHTML _IEBodyReadText _IEBodyWriteHTML
+ \ _IECreate _IECreateEmbedded _IEDocGetObj _IEDocInsertHTML
+ \ _IEDocInsertText _IEDocReadHTML _IEDocWriteHTML
+ \ _IEErrorHandlerDeRegister _IEErrorHandlerRegister _IEErrorNotify
+ \ _IEFormElementCheckboxSelect _IEFormElementGetCollection
+ \ _IEFormElementGetObjByName _IEFormElementGetValue
+ \ _IEFormElementOptionSelect _IEFormElementRadioSelect
+ \ _IEFormElementSetValue _IEFormGetCollection _IEFormGetObjByName
+ \ _IEFormImageClick _IEFormReset _IEFormSubmit _IEFrameGetCollection
+ \ _IEFrameGetObjByName _IEGetObjByName _IEHeadInsertEventScript
+ \ _IEImgClick _IEImgGetCollection _IEIsFrameSet _IELinkClickByIndex
+ \ _IELinkClickByText _IELinkGetCollection _IELoadWait _IELoadWaitTimeout
+ \ _IENavigate _IEPropertyGet _IEPropertySet _IEQuit
+ \ _IETableGetCollection _IETableWriteToArray _IETagNameAllGetCollection
+ \ _IETagNameGetCollection
+" inet
+syn keyword autoitFunction _GetIP _INetExplorerCapable _INetGetSource _INetMail
+ \ _INetSmtpMail _TCPIpToName
+" math
+syn keyword autoitFunction _Degree _MathCheckDiv _Max _Min _Radian
+" miscellaneous
+syn keyword autoitFunction _ChooseColor _ChooseFont _ClipPutFile _Iif
+ \ _IsPressed _MouseTrap _SendMessage _Singleton
+" process
+syn keyword autoitFunction _ProcessGetName _ProcessGetPriority _RunDOS
+" sound
+syn keyword autoitFunction _SoundClose _SoundLength _SoundOpen _SoundPause
+ \ _SoundPlay _SoundPos _SoundResume _SoundSeek _SoundStatus _SoundStop
+" sqlite
+syn keyword autoitFunction _SQLite_Changes _SQLite_Close
+ \ _SQLite_Display2DResult _SQLite_Encode _SQLite_ErrCode _SQLite_ErrMsg
+ \ _SQLite_Escape _SQLite_Exec _SQLite_FetchData _SQLite_FetchNames
+ \ _SQLite_GetTable _SQLite_GetTable2D _SQLite_LastInsertRowID
+ \ _SQLite_LibVersion _SQLite_Open _SQLite_Query _SQLite_QueryFinalize
+ \ _SQLite_QueryReset _SQLite_QuerySingleRow _SQLite_SaveMode
+ \ _SQLite_SetTimeout _SQLite_Shutdown _SQLite_SQLiteExe _SQLite_Startup
+ \ _SQLite_TotalChanges
+" string
+syn keyword autoitFunction _HexToString _StringAddComma _StringBetween
+ \ _StringEncrypt _StringInsert _StringProper _StringRepeat
+ \ _StringReverse _StringToHex
+" visa
+syn keyword autoitFunction _viClose _viExecCommand _viFindGpib _viGpibBusReset
+ \ _viGTL _viOpen _viSetAttribute _viSetTimeout
+
+" read-only macros
+syn match autoitBuiltin "@AppData\(Common\)\=Dir"
+syn match autoitBuiltin "@AutoItExe"
+syn match autoitBuiltin "@AutoItPID"
+syn match autoitBuiltin "@AutoItVersion"
+syn match autoitBuiltin "@COM_EventObj"
+syn match autoitBuiltin "@CommonFilesDir"
+syn match autoitBuiltin "@Compiled"
+syn match autoitBuiltin "@ComputerName"
+syn match autoitBuiltin "@ComSpec"
+syn match autoitBuiltin "@CR\(LF\)\="
+syn match autoitBuiltin "@Desktop\(Common\)\=Dir"
+syn match autoitBuiltin "@DesktopDepth"
+syn match autoitBuiltin "@DesktopHeight"
+syn match autoitBuiltin "@DesktopRefresh"
+syn match autoitBuiltin "@DesktopWidth"
+syn match autoitBuiltin "@DocumentsCommonDir"
+syn match autoitBuiltin "@Error"
+syn match autoitBuiltin "@ExitCode"
+syn match autoitBuiltin "@ExitMethod"
+syn match autoitBuiltin "@Extended"
+syn match autoitBuiltin "@Favorites\(Common\)\=Dir"
+syn match autoitBuiltin "@GUI_CtrlId"
+syn match autoitBuiltin "@GUI_CtrlHandle"
+syn match autoitBuiltin "@GUI_DragId"
+syn match autoitBuiltin "@GUI_DragFile"
+syn match autoitBuiltin "@GUI_DropId"
+syn match autoitBuiltin "@GUI_WinHandle"
+syn match autoitBuiltin "@HomeDrive"
+syn match autoitBuiltin "@HomePath"
+syn match autoitBuiltin "@HomeShare"
+syn match autoitBuiltin "@HOUR"
+syn match autoitBuiltin "@HotKeyPressed"
+syn match autoitBuiltin "@InetGetActive"
+syn match autoitBuiltin "@InetGetBytesRead"
+syn match autoitBuiltin "@IPAddress[1234]"
+syn match autoitBuiltin "@KBLayout"
+syn match autoitBuiltin "@LF"
+syn match autoitBuiltin "@Logon\(DNS\)\=Domain"
+syn match autoitBuiltin "@LogonServer"
+syn match autoitBuiltin "@MDAY"
+syn match autoitBuiltin "@MIN"
+syn match autoitBuiltin "@MON"
+syn match autoitBuiltin "@MyDocumentsDir"
+syn match autoitBuiltin "@NumParams"
+syn match autoitBuiltin "@OSBuild"
+syn match autoitBuiltin "@OSLang"
+syn match autoitBuiltin "@OSServicePack"
+syn match autoitBuiltin "@OSTYPE"
+syn match autoitBuiltin "@OSVersion"
+syn match autoitBuiltin "@ProcessorArch"
+syn match autoitBuiltin "@ProgramFilesDir"
+syn match autoitBuiltin "@Programs\(Common\)\=Dir"
+syn match autoitBuiltin "@ScriptDir"
+syn match autoitBuiltin "@ScriptFullPath"
+syn match autoitBuiltin "@ScriptLineNumber"
+syn match autoitBuiltin "@ScriptName"
+syn match autoitBuiltin "@SEC"
+syn match autoitBuiltin "@StartMenu\(Common\)\=Dir"
+syn match autoitBuiltin "@Startup\(Common\)\=Dir"
+syn match autoitBuiltin "@SW_DISABLE"
+syn match autoitBuiltin "@SW_ENABLE"
+syn match autoitBuiltin "@SW_HIDE"
+syn match autoitBuiltin "@SW_LOCK"
+syn match autoitBuiltin "@SW_MAXIMIZE"
+syn match autoitBuiltin "@SW_MINIMIZE"
+syn match autoitBuiltin "@SW_RESTORE"
+syn match autoitBuiltin "@SW_SHOW"
+syn match autoitBuiltin "@SW_SHOWDEFAULT"
+syn match autoitBuiltin "@SW_SHOWMAXIMIZED"
+syn match autoitBuiltin "@SW_SHOWMINIMIZED"
+syn match autoitBuiltin "@SW_SHOWMINNOACTIVE"
+syn match autoitBuiltin "@SW_SHOWNA"
+syn match autoitBuiltin "@SW_SHOWNOACTIVATE"
+syn match autoitBuiltin "@SW_SHOWNORMAL"
+syn match autoitBuiltin "@SW_UNLOCK"
+syn match autoitBuiltin "@SystemDir"
+syn match autoitBuiltin "@TAB"
+syn match autoitBuiltin "@TempDir"
+syn match autoitBuiltin "@TRAY_ID"
+syn match autoitBuiltin "@TrayIconFlashing"
+syn match autoitBuiltin "@TrayIconVisible"
+syn match autoitBuiltin "@UserProfileDir"
+syn match autoitBuiltin "@UserName"
+syn match autoitBuiltin "@WDAY"
+syn match autoitBuiltin "@WindowsDir"
+syn match autoitBuiltin "@WorkingDir"
+syn match autoitBuiltin "@YDAY"
+syn match autoitBuiltin "@YEAR"
+
+"comments and commenting-out
+syn match autoitComment ";.*"
+"in this way also #ce alone will be highlighted
+syn match autoitCommDelimiter "^\s*#comments-start\>"
+syn match autoitCommDelimiter "^\s*#cs\>"
+syn match autoitCommDelimiter "^\s*#comments-end\>"
+syn match autoitCommDelimiter "^\s*#ce\>"
+syn region autoitComment
+ \ matchgroup=autoitCommDelimiter
+ \ start="^\s*#comments-start\>" start="^\s*#cs\>"
+ \ end="^\s*#comments-end\>" end="^\s*#ce\>"
+
+"one character operators
+syn match autoitOperator "[-+*/&^=<>][^-+*/&^=<>]"me=e-1
+"two characters operators
+syn match autoitOperator "==[^=]"me=e-1
+syn match autoitOperator "<>"
+syn match autoitOperator "<="
+syn match autoitOperator ">="
+syn match autoitOperator "+="
+syn match autoitOperator "-="
+syn match autoitOperator "*="
+syn match autoitOperator "/="
+syn match autoitOperator "&="
+syn keyword autoitOperator NOT AND OR
+
+syn match autoitParen "(\|)"
+syn match autoitBracket "\[\|\]"
+syn match autoitComma ","
+
+"numbers must come after operator '-'
+"decimal numbers without a dot
+syn match autoitNumber "-\=\<\d\+\>"
+"hexadecimal numbers without a dot
+syn match autoitNumber "-\=\<0x\x\+\>"
+"floating point number with dot (inside or at end)
+
+syn match autoitNumber "-\=\<\d\+\.\d*\>"
+"floating point number, starting with a dot
+syn match autoitNumber "-\=\<\.\d\+\>"
+"scientific notation numbers without dots
+syn match autoitNumber "-\=\<\d\+e[-+]\=\d\+\>"
+"scientific notation numbers with dots
+syn match autoitNumber "-\=\<\(\(\d\+\.\d*\)\|\(\.\d\+\)\)\(e[-+]\=\d\+\)\=\>"
+
+"string constants
+"we want the escaped quotes marked in red
+syn match autoitDoubledSingles +''+ contained
+syn match autoitDoubledDoubles +""+ contained
+"we want the continuation character marked in red
+"(also at the top level, not just contained)
+syn match autoitCont "_$"
+
+" send key list - must be defined before autoitStrings
+syn match autoitSend "{!}" contained
+syn match autoitSend "{#}" contained
+syn match autoitSend "{+}" contained
+syn match autoitSend "{^}" contained
+syn match autoitSend "{{}" contained
+syn match autoitSend "{}}" contained
+syn match autoitSend "{SPACE}" contained
+syn match autoitSend "{ENTER}" contained
+syn match autoitSend "{ALT}" contained
+syn match autoitSend "{BACKSPACE}" contained
+syn match autoitSend "{BS}" contained
+syn match autoitSend "{DELETE}" contained
+syn match autoitSend "{DEL}" contained
+syn match autoitSend "{UP}" contained
+syn match autoitSend "{DOWN}" contained
+syn match autoitSend "{LEFT}" contained
+syn match autoitSend "{RIGHT}" contained
+syn match autoitSend "{HOME}" contained
+syn match autoitSend "{END}" contained
+syn match autoitSend "{ESCAPE}" contained
+syn match autoitSend "{ESC}" contained
+syn match autoitSend "{INSERT}" contained
+syn match autoitSend "{INS}" contained
+syn match autoitSend "{PGUP}" contained
+syn match autoitSend "{PGDN}" contained
+syn match autoitSend "{F1}" contained
+syn match autoitSend "{F2}" contained
+syn match autoitSend "{F3}" contained
+syn match autoitSend "{F4}" contained
+syn match autoitSend "{F5}" contained
+syn match autoitSend "{F6}" contained
+syn match autoitSend "{F7}" contained
+syn match autoitSend "{F8}" contained
+syn match autoitSend "{F9}" contained
+syn match autoitSend "{F10}" contained
+syn match autoitSend "{F11}" contained
+syn match autoitSend "{F12}" contained
+syn match autoitSend "{TAB}" contained
+syn match autoitSend "{PRINTSCREEN}" contained
+syn match autoitSend "{LWIN}" contained
+syn match autoitSend "{RWIN}" contained
+syn match autoitSend "{NUMLOCK}" contained
+syn match autoitSend "{CTRLBREAK}" contained
+syn match autoitSend "{PAUSE}" contained
+syn match autoitSend "{CAPSLOCK}" contained
+syn match autoitSend "{NUMPAD0}" contained
+syn match autoitSend "{NUMPAD1}" contained
+syn match autoitSend "{NUMPAD2}" contained
+syn match autoitSend "{NUMPAD3}" contained
+syn match autoitSend "{NUMPAD4}" contained
+syn match autoitSend "{NUMPAD5}" contained
+syn match autoitSend "{NUMPAD6}" contained
+syn match autoitSend "{NUMPAD7}" contained
+syn match autoitSend "{NUMPAD8}" contained
+syn match autoitSend "{NUMPAD9}" contained
+syn match autoitSend "{NUMPADMULT}" contained
+syn match autoitSend "{NUMPADADD}" contained
+syn match autoitSend "{NUMPADSUB}" contained
+syn match autoitSend "{NUMPADDIV}" contained
+syn match autoitSend "{NUMPADDOT}" contained
+syn match autoitSend "{NUMPADENTER}" contained
+syn match autoitSend "{APPSKEY}" contained
+syn match autoitSend "{LALT}" contained
+syn match autoitSend "{RALT}" contained
+syn match autoitSend "{LCTRL}" contained
+syn match autoitSend "{RCTRL}" contained
+syn match autoitSend "{LSHIFT}" contained
+syn match autoitSend "{RSHIFT}" contained
+syn match autoitSend "{SLEEP}" contained
+syn match autoitSend "{ALTDOWN}" contained
+syn match autoitSend "{SHIFTDOWN}" contained
+syn match autoitSend "{CTRLDOWN}" contained
+syn match autoitSend "{LWINDOWN}" contained
+syn match autoitSend "{RWINDOWN}" contained
+syn match autoitSend "{ASC \d\d\d\d}" contained
+syn match autoitSend "{BROWSER_BACK}" contained
+syn match autoitSend "{BROWSER_FORWARD}" contained
+syn match autoitSend "{BROWSER_REFRESH}" contained
+syn match autoitSend "{BROWSER_STOP}" contained
+syn match autoitSend "{BROWSER_SEARCH}" contained
+syn match autoitSend "{BROWSER_FAVORITES}" contained
+syn match autoitSend "{BROWSER_HOME}" contained
+syn match autoitSend "{VOLUME_MUTE}" contained
+syn match autoitSend "{VOLUME_DOWN}" contained
+syn match autoitSend "{VOLUME_UP}" contained
+syn match autoitSend "{MEDIA_NEXT}" contained
+syn match autoitSend "{MEDIA_PREV}" contained
+syn match autoitSend "{MEDIA_STOP}" contained
+syn match autoitSend "{MEDIA_PLAY_PAUSE}" contained
+syn match autoitSend "{LAUNCH_MAIL}" contained
+syn match autoitSend "{LAUNCH_MEDIA}" contained
+syn match autoitSend "{LAUNCH_APP1}" contained
+syn match autoitSend "{LAUNCH_APP2}" contained
+
+"this was tricky!
+"we use an oneline region, instead of a match, in order to use skip=
+"matchgroup= so start and end quotes are not considered as au3Doubled
+"contained
+syn region autoitString oneline contains=autoitSend matchgroup=autoitQuote start=+"+
+ \ end=+"+ end=+_\n\{1}.*"+
+ \ contains=autoitCont,autoitDoubledDoubles skip=+""+
+syn region autoitString oneline matchgroup=autoitQuote start=+'+
+ \ end=+'+ end=+_\n\{1}.*'+
+ \ contains=autoitCont,autoitDoubledSingles skip=+''+
+
+syn match autoitVarSelector "\$" contained display
+syn match autoitVariable "$\w\+" contains=autoitVarSelector
+
+" options - must be defined after autoitStrings
+syn match autoitOption "\([\"\']\)CaretCoordMode\1"
+syn match autoitOption "\([\"\']\)ColorMode\1"
+syn match autoitOption "\([\"\']\)ExpandEnvStrings\1"
+syn match autoitOption "\([\"\']\)ExpandVarStrings\1"
+syn match autoitOption "\([\"\']\)FtpBinaryMode\1"
+syn match autoitOption "\([\"\']\)GUICloseOnEsc\1"
+syn match autoitOption "\([\"\']\)GUICoordMode\1"
+syn match autoitOption "\([\"\']\)GUIDataSeparatorChar\1"
+syn match autoitOption "\([\"\']\)GUIOnEventMode\1"
+syn match autoitOption "\([\"\']\)GUIResizeMode\1"
+syn match autoitOption "\([\"\']\)GUIEventCompatibilityMode\1"
+syn match autoitOption "\([\"\']\)MouseClickDelay\1"
+syn match autoitOption "\([\"\']\)MouseClickDownDelay\1"
+syn match autoitOption "\([\"\']\)MouseClickDragDelay\1"
+syn match autoitOption "\([\"\']\)MouseCoordMode\1"
+syn match autoitOption "\([\"\']\)MustDeclareVars\1"
+syn match autoitOption "\([\"\']\)OnExitFunc\1"
+syn match autoitOption "\([\"\']\)PixelCoordMode\1"
+syn match autoitOption "\([\"\']\)RunErrorsFatal\1"
+syn match autoitOption "\([\"\']\)SendAttachMode\1"
+syn match autoitOption "\([\"\']\)SendCapslockMode\1"
+syn match autoitOption "\([\"\']\)SendKeyDelay\1"
+syn match autoitOption "\([\"\']\)SendKeyDownDelay\1"
+syn match autoitOption "\([\"\']\)TCPTimeout\1"
+syn match autoitOption "\([\"\']\)TrayAutoPause\1"
+syn match autoitOption "\([\"\']\)TrayIconDebug\1"
+syn match autoitOption "\([\"\']\)TrayIconHide\1"
+syn match autoitOption "\([\"\']\)TrayMenuMode\1"
+syn match autoitOption "\([\"\']\)TrayOnEventMode\1"
+syn match autoitOption "\([\"\']\)WinDetectHiddenText\1"
+syn match autoitOption "\([\"\']\)WinSearchChildren\1"
+syn match autoitOption "\([\"\']\)WinTextMatchMode\1"
+syn match autoitOption "\([\"\']\)WinTitleMatchMode\1"
+syn match autoitOption "\([\"\']\)WinWaitDelay\1"
+
+" styles - must be defined after autoitVariable
+" common
+syn match autoitStyle "\$WS_BORDER"
+syn match autoitStyle "\$WS_POPUP"
+syn match autoitStyle "\$WS_CAPTION"
+syn match autoitStyle "\$WS_CLIPCHILDREN"
+syn match autoitStyle "\$WS_CLIPSIBLINGS"
+syn match autoitStyle "\$WS_DISABLED"
+syn match autoitStyle "\$WS_DLGFRAME"
+syn match autoitStyle "\$WS_HSCROLL"
+syn match autoitStyle "\$WS_MAXIMIZE"
+syn match autoitStyle "\$WS_MAXIMIZEBOX"
+syn match autoitStyle "\$WS_MINIMIZE"
+syn match autoitStyle "\$WS_MINIMIZEBOX"
+syn match autoitStyle "\$WS_OVERLAPPED"
+syn match autoitStyle "\$WS_OVERLAPPEDWINDOW"
+syn match autoitStyle "\$WS_POPUPWINDOW"
+syn match autoitStyle "\$WS_SIZEBOX"
+syn match autoitStyle "\$WS_SYSMENU"
+syn match autoitStyle "\$WS_THICKFRAME"
+syn match autoitStyle "\$WS_VSCROLL"
+syn match autoitStyle "\$WS_VISIBLE"
+syn match autoitStyle "\$WS_CHILD"
+syn match autoitStyle "\$WS_GROUP"
+syn match autoitStyle "\$WS_TABSTOP"
+syn match autoitStyle "\$DS_MODALFRAME"
+syn match autoitStyle "\$DS_SETFOREGROUND"
+syn match autoitStyle "\$DS_CONTEXTHELP"
+" common extended
+syn match autoitStyle "\$WS_EX_ACCEPTFILES"
+syn match autoitStyle "\$WS_EX_APPWINDOW"
+syn match autoitStyle "\$WS_EX_CLIENTEDGE"
+syn match autoitStyle "\$WS_EX_CONTEXTHELP"
+syn match autoitStyle "\$WS_EX_DLGMODALFRAME"
+syn match autoitStyle "\$WS_EX_MDICHILD"
+syn match autoitStyle "\$WS_EX_OVERLAPPEDWINDOW"
+syn match autoitStyle "\$WS_EX_STATICEDGE"
+syn match autoitStyle "\$WS_EX_TOPMOST"
+syn match autoitStyle "\$WS_EX_TRANSPARENT"
+syn match autoitStyle "\$WS_EX_TOOLWINDOW"
+syn match autoitStyle "\$WS_EX_WINDOWEDGE"
+syn match autoitStyle "\$WS_EX_LAYERED"
+syn match autoitStyle "\$GUI_WS_EX_PARENTDRAG"
+" checkbox
+syn match autoitStyle "\$BS_3STATE"
+syn match autoitStyle "\$BS_AUTO3STATE"
+syn match autoitStyle "\$BS_AUTOCHECKBOX"
+syn match autoitStyle "\$BS_CHECKBOX"
+syn match autoitStyle "\$BS_LEFT"
+syn match autoitStyle "\$BS_PUSHLIKE"
+syn match autoitStyle "\$BS_RIGHT"
+syn match autoitStyle "\$BS_RIGHTBUTTON"
+syn match autoitStyle "\$BS_GROUPBOX"
+syn match autoitStyle "\$BS_AUTORADIOBUTTON"
+" push button
+syn match autoitStyle "\$BS_BOTTOM"
+syn match autoitStyle "\$BS_CENTER"
+syn match autoitStyle "\$BS_DEFPUSHBUTTON"
+syn match autoitStyle "\$BS_MULTILINE"
+syn match autoitStyle "\$BS_TOP"
+syn match autoitStyle "\$BS_VCENTER"
+syn match autoitStyle "\$BS_ICON"
+syn match autoitStyle "\$BS_BITMAP"
+syn match autoitStyle "\$BS_FLAT"
+" combo
+syn match autoitStyle "\$CBS_AUTOHSCROLL"
+syn match autoitStyle "\$CBS_DISABLENOSCROLL"
+syn match autoitStyle "\$CBS_DROPDOWN"
+syn match autoitStyle "\$CBS_DROPDOWNLIST"
+syn match autoitStyle "\$CBS_LOWERCASE"
+syn match autoitStyle "\$CBS_NOINTEGRALHEIGHT"
+syn match autoitStyle "\$CBS_OEMCONVERT"
+syn match autoitStyle "\$CBS_SIMPLE"
+syn match autoitStyle "\$CBS_SORT"
+syn match autoitStyle "\$CBS_UPPERCASE"
+" list
+syn match autoitStyle "\$LBS_DISABLENOSCROLL"
+syn match autoitStyle "\$LBS_NOINTEGRALHEIGHT"
+syn match autoitStyle "\$LBS_NOSEL"
+syn match autoitStyle "\$LBS_NOTIFY"
+syn match autoitStyle "\$LBS_SORT"
+syn match autoitStyle "\$LBS_STANDARD"
+syn match autoitStyle "\$LBS_USETABSTOPS"
+" edit/input
+syn match autoitStyle "\$ES_AUTOHSCROLL"
+syn match autoitStyle "\$ES_AUTOVSCROLL"
+syn match autoitStyle "\$ES_CENTER"
+syn match autoitStyle "\$ES_LOWERCASE"
+syn match autoitStyle "\$ES_NOHIDESEL"
+syn match autoitStyle "\$ES_NUMBER"
+syn match autoitStyle "\$ES_OEMCONVERT"
+syn match autoitStyle "\$ES_MULTILINE"
+syn match autoitStyle "\$ES_PASSWORD"
+syn match autoitStyle "\$ES_READONLY"
+syn match autoitStyle "\$ES_RIGHT"
+syn match autoitStyle "\$ES_UPPERCASE"
+syn match autoitStyle "\$ES_WANTRETURN"
+" progress bar
+syn match autoitStyle "\$PBS_SMOOTH"
+syn match autoitStyle "\$PBS_VERTICAL"
+" up-down
+syn match autoitStyle "\$UDS_ALIGNLEFT"
+syn match autoitStyle "\$UDS_ALIGNRIGHT"
+syn match autoitStyle "\$UDS_ARROWKEYS"
+syn match autoitStyle "\$UDS_HORZ"
+syn match autoitStyle "\$UDS_NOTHOUSANDS"
+syn match autoitStyle "\$UDS_WRAP"
+" label/static
+syn match autoitStyle "\$SS_BLACKFRAME"
+syn match autoitStyle "\$SS_BLACKRECT"
+syn match autoitStyle "\$SS_CENTER"
+syn match autoitStyle "\$SS_CENTERIMAGE"
+syn match autoitStyle "\$SS_ETCHEDFRAME"
+syn match autoitStyle "\$SS_ETCHEDHORZ"
+syn match autoitStyle "\$SS_ETCHEDVERT"
+syn match autoitStyle "\$SS_GRAYFRAME"
+syn match autoitStyle "\$SS_GRAYRECT"
+syn match autoitStyle "\$SS_LEFT"
+syn match autoitStyle "\$SS_LEFTNOWORDWRAP"
+syn match autoitStyle "\$SS_NOPREFIX"
+syn match autoitStyle "\$SS_NOTIFY"
+syn match autoitStyle "\$SS_RIGHT"
+syn match autoitStyle "\$SS_RIGHTJUST"
+syn match autoitStyle "\$SS_SIMPLE"
+syn match autoitStyle "\$SS_SUNKEN"
+syn match autoitStyle "\$SS_WHITEFRAME"
+syn match autoitStyle "\$SS_WHITERECT"
+" tab
+syn match autoitStyle "\$TCS_SCROLLOPPOSITE"
+syn match autoitStyle "\$TCS_BOTTOM"
+syn match autoitStyle "\$TCS_RIGHT"
+syn match autoitStyle "\$TCS_MULTISELECT"
+syn match autoitStyle "\$TCS_FLATBUTTONS"
+syn match autoitStyle "\$TCS_FORCEICONLEFT"
+syn match autoitStyle "\$TCS_FORCELABELLEFT"
+syn match autoitStyle "\$TCS_HOTTRACK"
+syn match autoitStyle "\$TCS_VERTICAL"
+syn match autoitStyle "\$TCS_TABS"
+syn match autoitStyle "\$TCS_BUTTONS"
+syn match autoitStyle "\$TCS_SINGLELINE"
+syn match autoitStyle "\$TCS_MULTILINE"
+syn match autoitStyle "\$TCS_RIGHTJUSTIFY"
+syn match autoitStyle "\$TCS_FIXEDWIDTH"
+syn match autoitStyle "\$TCS_RAGGEDRIGHT"
+syn match autoitStyle "\$TCS_FOCUSONBUTTONDOWN"
+syn match autoitStyle "\$TCS_OWNERDRAWFIXED"
+syn match autoitStyle "\$TCS_TOOLTIPS"
+syn match autoitStyle "\$TCS_FOCUSNEVER"
+" avi clip
+syn match autoitStyle "\$ACS_AUTOPLAY"
+syn match autoitStyle "\$ACS_CENTER"
+syn match autoitStyle "\$ACS_TRANSPARENT"
+syn match autoitStyle "\$ACS_NONTRANSPARENT"
+" date
+syn match autoitStyle "\$DTS_UPDOWN"
+syn match autoitStyle "\$DTS_SHOWNONE"
+syn match autoitStyle "\$DTS_LONGDATEFORMAT"
+syn match autoitStyle "\$DTS_TIMEFORMAT"
+syn match autoitStyle "\$DTS_RIGHTALIGN"
+syn match autoitStyle "\$DTS_SHORTDATEFORMAT"
+" monthcal
+syn match autoitStyle "\$MCS_NOTODAY"
+syn match autoitStyle "\$MCS_NOTODAYCIRCLE"
+syn match autoitStyle "\$MCS_WEEKNUMBERS"
+" treeview
+syn match autoitStyle "\$TVS_HASBUTTONS"
+syn match autoitStyle "\$TVS_HASLINES"
+syn match autoitStyle "\$TVS_LINESATROOT"
+syn match autoitStyle "\$TVS_DISABLEDRAGDROP"
+syn match autoitStyle "\$TVS_SHOWSELALWAYS"
+syn match autoitStyle "\$TVS_RTLREADING"
+syn match autoitStyle "\$TVS_NOTOOLTIPS"
+syn match autoitStyle "\$TVS_CHECKBOXES"
+syn match autoitStyle "\$TVS_TRACKSELECT"
+syn match autoitStyle "\$TVS_SINGLEEXPAND"
+syn match autoitStyle "\$TVS_FULLROWSELECT"
+syn match autoitStyle "\$TVS_NOSCROLL"
+syn match autoitStyle "\$TVS_NONEVENHEIGHT"
+" slider
+syn match autoitStyle "\$TBS_AUTOTICKS"
+syn match autoitStyle "\$TBS_BOTH"
+syn match autoitStyle "\$TBS_BOTTOM"
+syn match autoitStyle "\$TBS_HORZ"
+syn match autoitStyle "\$TBS_VERT"
+syn match autoitStyle "\$TBS_NOTHUMB"
+syn match autoitStyle "\$TBS_NOTICKS"
+syn match autoitStyle "\$TBS_LEFT"
+syn match autoitStyle "\$TBS_RIGHT"
+syn match autoitStyle "\$TBS_TOP"
+" listview
+syn match autoitStyle "\$LVS_ICON"
+syn match autoitStyle "\$LVS_REPORT"
+syn match autoitStyle "\$LVS_SMALLICON"
+syn match autoitStyle "\$LVS_LIST"
+syn match autoitStyle "\$LVS_EDITLABELS"
+syn match autoitStyle "\$LVS_NOCOLUMNHEADER"
+syn match autoitStyle "\$LVS_NOSORTHEADER"
+syn match autoitStyle "\$LVS_SINGLESEL"
+syn match autoitStyle "\$LVS_SHOWSELALWAYS"
+syn match autoitStyle "\$LVS_SORTASCENDING"
+syn match autoitStyle "\$LVS_SORTDESCENDING"
+" listview extended
+syn match autoitStyle "\$LVS_EX_FULLROWSELECT"
+syn match autoitStyle "\$LVS_EX_GRIDLINES"
+syn match autoitStyle "\$LVS_EX_HEADERDRAGDROP"
+syn match autoitStyle "\$LVS_EX_TRACKSELECT"
+syn match autoitStyle "\$LVS_EX_CHECKBOXES"
+syn match autoitStyle "\$LVS_EX_BORDERSELECT"
+syn match autoitStyle "\$LVS_EX_DOUBLEBUFFER"
+syn match autoitStyle "\$LVS_EX_FLATSB"
+syn match autoitStyle "\$LVS_EX_MULTIWORKAREAS"
+syn match autoitStyle "\$LVS_EX_SNAPTOGRID"
+syn match autoitStyle "\$LVS_EX_SUBITEMIMAGES"
+
+" constants - must be defined after autoitVariable - excludes styles
+" constants - autoit options
+syn match autoitConst "\$OPT_COORDSRELATIVE"
+syn match autoitConst "\$OPT_COORDSABSOLUTE"
+syn match autoitConst "\$OPT_COORDSCLIENT"
+syn match autoitConst "\$OPT_ERRORSILENT"
+syn match autoitConst "\$OPT_ERRORFATAL"
+syn match autoitConst "\$OPT_CAPSNOSTORE"
+syn match autoitConst "\$OPT_CAPSSTORE"
+syn match autoitConst "\$OPT_MATCHSTART"
+syn match autoitConst "\$OPT_MATCHANY"
+syn match autoitConst "\$OPT_MATCHEXACT"
+syn match autoitConst "\$OPT_MATCHADVANCED"
+" constants - file
+syn match autoitConst "\$FC_NOOVERWRITE"
+syn match autoitConst "\$FC_OVERWRITE"
+syn match autoitConst "\$FT_MODIFIED"
+syn match autoitConst "\$FT_CREATED"
+syn match autoitConst "\$FT_ACCESSED"
+syn match autoitConst "\$FO_READ"
+syn match autoitConst "\$FO_APPEND"
+syn match autoitConst "\$FO_OVERWRITE"
+syn match autoitConst "\$EOF"
+syn match autoitConst "\$FD_FILEMUSTEXIST"
+syn match autoitConst "\$FD_PATHMUSTEXIST"
+syn match autoitConst "\$FD_MULTISELECT"
+syn match autoitConst "\$FD_PROMPTCREATENEW"
+syn match autoitConst "\$FD_PROMPTOVERWRITE"
+" constants - keyboard
+syn match autoitConst "\$KB_SENDSPECIAL"
+syn match autoitConst "\$KB_SENDRAW"
+syn match autoitConst "\$KB_CAPSOFF"
+syn match autoitConst "\$KB_CAPSON"
+" constants - message box
+syn match autoitConst "\$MB_OK"
+syn match autoitConst "\$MB_OKCANCEL"
+syn match autoitConst "\$MB_ABORTRETRYIGNORE"
+syn match autoitConst "\$MB_YESNOCANCEL"
+syn match autoitConst "\$MB_YESNO"
+syn match autoitConst "\$MB_RETRYCANCEL"
+syn match autoitConst "\$MB_ICONHAND"
+syn match autoitConst "\$MB_ICONQUESTION"
+syn match autoitConst "\$MB_ICONEXCLAMATION"
+syn match autoitConst "\$MB_ICONASTERISK"
+syn match autoitConst "\$MB_DEFBUTTON1"
+syn match autoitConst "\$MB_DEFBUTTON2"
+syn match autoitConst "\$MB_DEFBUTTON3"
+syn match autoitConst "\$MB_APPLMODAL"
+syn match autoitConst "\$MB_SYSTEMMODAL"
+syn match autoitConst "\$MB_TASKMODAL"
+syn match autoitConst "\$MB_TOPMOST"
+syn match autoitConst "\$MB_RIGHTJUSTIFIED"
+syn match autoitConst "\$IDTIMEOUT"
+syn match autoitConst "\$IDOK"
+syn match autoitConst "\$IDCANCEL"
+syn match autoitConst "\$IDABORT"
+syn match autoitConst "\$IDRETRY"
+syn match autoitConst "\$IDIGNORE"
+syn match autoitConst "\$IDYES"
+syn match autoitConst "\$IDNO"
+syn match autoitConst "\$IDTRYAGAIN"
+syn match autoitConst "\$IDCONTINUE"
+" constants - progress and splash
+syn match autoitConst "\$DLG_NOTITLE"
+syn match autoitConst "\$DLG_NOTONTOP"
+syn match autoitConst "\$DLG_TEXTLEFT"
+syn match autoitConst "\$DLG_TEXTRIGHT"
+syn match autoitConst "\$DLG_MOVEABLE"
+syn match autoitConst "\$DLG_TEXTVCENTER"
+" constants - tray tip
+syn match autoitConst "\$TIP_ICONNONE"
+syn match autoitConst "\$TIP_ICONASTERISK"
+syn match autoitConst "\$TIP_ICONEXCLAMATION"
+syn match autoitConst "\$TIP_ICONHAND"
+syn match autoitConst "\$TIP_NOSOUND"
+" constants - mouse
+syn match autoitConst "\$IDC_UNKNOWN"
+syn match autoitConst "\$IDC_APPSTARTING"
+syn match autoitConst "\$IDC_ARROW"
+syn match autoitConst "\$IDC_CROSS"
+syn match autoitConst "\$IDC_HELP"
+syn match autoitConst "\$IDC_IBEAM"
+syn match autoitConst "\$IDC_ICON"
+syn match autoitConst "\$IDC_NO"
+syn match autoitConst "\$IDC_SIZE"
+syn match autoitConst "\$IDC_SIZEALL"
+syn match autoitConst "\$IDC_SIZENESW"
+syn match autoitConst "\$IDC_SIZENS"
+syn match autoitConst "\$IDC_SIZENWSE"
+syn match autoitConst "\$IDC_SIZEWE"
+syn match autoitConst "\$IDC_UPARROW"
+syn match autoitConst "\$IDC_WAIT"
+" constants - process
+syn match autoitConst "\$SD_LOGOFF"
+syn match autoitConst "\$SD_SHUTDOWN"
+syn match autoitConst "\$SD_REBOOT"
+syn match autoitConst "\$SD_FORCE"
+syn match autoitConst "\$SD_POWERDOWN"
+" constants - string
+syn match autoitConst "\$STR_NOCASESENSE"
+syn match autoitConst "\$STR_CASESENSE"
+syn match autoitConst "\$STR_STRIPLEADING"
+syn match autoitConst "\$STR_STRIPTRAILING"
+syn match autoitConst "\$STR_STRIPSPACES"
+syn match autoitConst "\$STR_STRIPALL"
+" constants - tray
+syn match autoitConst "\$TRAY_ITEM_EXIT"
+syn match autoitConst "\$TRAY_ITEM_PAUSE"
+syn match autoitConst "\$TRAY_ITEM_FIRST"
+syn match autoitConst "\$TRAY_CHECKED"
+syn match autoitConst "\$TRAY_UNCHECKED"
+syn match autoitConst "\$TRAY_ENABLE"
+syn match autoitConst "\$TRAY_DISABLE"
+syn match autoitConst "\$TRAY_FOCUS"
+syn match autoitConst "\$TRAY_DEFAULT"
+syn match autoitConst "\$TRAY_EVENT_SHOWICON"
+syn match autoitConst "\$TRAY_EVENT_HIDEICON"
+syn match autoitConst "\$TRAY_EVENT_FLASHICON"
+syn match autoitConst "\$TRAY_EVENT_NOFLASHICON"
+syn match autoitConst "\$TRAY_EVENT_PRIMARYDOWN"
+syn match autoitConst "\$TRAY_EVENT_PRIMARYUP"
+syn match autoitConst "\$TRAY_EVENT_SECONDARYDOWN"
+syn match autoitConst "\$TRAY_EVENT_SECONDARYUP"
+syn match autoitConst "\$TRAY_EVENT_MOUSEOVER"
+syn match autoitConst "\$TRAY_EVENT_MOUSEOUT"
+syn match autoitConst "\$TRAY_EVENT_PRIMARYDOUBLE"
+syn match autoitConst "\$TRAY_EVENT_SECONDARYDOUBLE"
+" constants - stdio
+syn match autoitConst "\$STDIN_CHILD"
+syn match autoitConst "\$STDOUT_CHILD"
+syn match autoitConst "\$STDERR_CHILD"
+" constants - color
+syn match autoitConst "\$COLOR_BLACK"
+syn match autoitConst "\$COLOR_SILVER"
+syn match autoitConst "\$COLOR_GRAY"
+syn match autoitConst "\$COLOR_WHITE"
+syn match autoitConst "\$COLOR_MAROON"
+syn match autoitConst "\$COLOR_RED"
+syn match autoitConst "\$COLOR_PURPLE"
+syn match autoitConst "\$COLOR_FUCHSIA"
+syn match autoitConst "\$COLOR_GREEN"
+syn match autoitConst "\$COLOR_LIME"
+syn match autoitConst "\$COLOR_OLIVE"
+syn match autoitConst "\$COLOR_YELLOW"
+syn match autoitConst "\$COLOR_NAVY"
+syn match autoitConst "\$COLOR_BLUE"
+syn match autoitConst "\$COLOR_TEAL"
+syn match autoitConst "\$COLOR_AQUA"
+" constants - reg value type
+syn match autoitConst "\$REG_NONE"
+syn match autoitConst "\$REG_SZ"
+syn match autoitConst "\$REG_EXPAND_SZ"
+syn match autoitConst "\$REG_BINARY"
+syn match autoitConst "\$REG_DWORD"
+syn match autoitConst "\$REG_DWORD_BIG_ENDIAN"
+syn match autoitConst "\$REG_LINK"
+syn match autoitConst "\$REG_MULTI_SZ"
+syn match autoitConst "\$REG_RESOURCE_LIST"
+syn match autoitConst "\$REG_FULL_RESOURCE_DESCRIPTOR"
+syn match autoitConst "\$REG_RESOURCE_REQUIREMENTS_LIST"
+" guiconstants - events and messages
+syn match autoitConst "\$GUI_EVENT_CLOSE"
+syn match autoitConst "\$GUI_EVENT_MINIMIZE"
+syn match autoitConst "\$GUI_EVENT_RESTORE"
+syn match autoitConst "\$GUI_EVENT_MAXIMIZE"
+syn match autoitConst "\$GUI_EVENT_PRIMARYDOWN"
+syn match autoitConst "\$GUI_EVENT_PRIMARYUP"
+syn match autoitConst "\$GUI_EVENT_SECONDARYDOWN"
+syn match autoitConst "\$GUI_EVENT_SECONDARYUP"
+syn match autoitConst "\$GUI_EVENT_MOUSEMOVE"
+syn match autoitConst "\$GUI_EVENT_RESIZED"
+syn match autoitConst "\$GUI_EVENT_DROPPED"
+syn match autoitConst "\$GUI_RUNDEFMSG"
+" guiconstants - state
+syn match autoitConst "\$GUI_AVISTOP"
+syn match autoitConst "\$GUI_AVISTART"
+syn match autoitConst "\$GUI_AVICLOSE"
+syn match autoitConst "\$GUI_CHECKED"
+syn match autoitConst "\$GUI_INDETERMINATE"
+syn match autoitConst "\$GUI_UNCHECKED"
+syn match autoitConst "\$GUI_DROPACCEPTED"
+syn match autoitConst "\$GUI_DROPNOTACCEPTED"
+syn match autoitConst "\$GUI_ACCEPTFILES"
+syn match autoitConst "\$GUI_SHOW"
+syn match autoitConst "\$GUI_HIDE"
+syn match autoitConst "\$GUI_ENABLE"
+syn match autoitConst "\$GUI_DISABLE"
+syn match autoitConst "\$GUI_FOCUS"
+syn match autoitConst "\$GUI_NOFOCUS"
+syn match autoitConst "\$GUI_DEFBUTTON"
+syn match autoitConst "\$GUI_EXPAND"
+syn match autoitConst "\$GUI_ONTOP"
+" guiconstants - font
+syn match autoitConst "\$GUI_FONTITALIC"
+syn match autoitConst "\$GUI_FONTUNDER"
+syn match autoitConst "\$GUI_FONTSTRIKE"
+" guiconstants - resizing
+syn match autoitConst "\$GUI_DOCKAUTO"
+syn match autoitConst "\$GUI_DOCKLEFT"
+syn match autoitConst "\$GUI_DOCKRIGHT"
+syn match autoitConst "\$GUI_DOCKHCENTER"
+syn match autoitConst "\$GUI_DOCKTOP"
+syn match autoitConst "\$GUI_DOCKBOTTOM"
+syn match autoitConst "\$GUI_DOCKVCENTER"
+syn match autoitConst "\$GUI_DOCKWIDTH"
+syn match autoitConst "\$GUI_DOCKHEIGHT"
+syn match autoitConst "\$GUI_DOCKSIZE"
+syn match autoitConst "\$GUI_DOCKMENUBAR"
+syn match autoitConst "\$GUI_DOCKSTATEBAR"
+syn match autoitConst "\$GUI_DOCKALL"
+syn match autoitConst "\$GUI_DOCKBORDERS"
+" guiconstants - graphic
+syn match autoitConst "\$GUI_GR_CLOSE"
+syn match autoitConst "\$GUI_GR_LINE"
+syn match autoitConst "\$GUI_GR_BEZIER"
+syn match autoitConst "\$GUI_GR_MOVE"
+syn match autoitConst "\$GUI_GR_COLOR"
+syn match autoitConst "\$GUI_GR_RECT"
+syn match autoitConst "\$GUI_GR_ELLIPSE"
+syn match autoitConst "\$GUI_GR_PIE"
+syn match autoitConst "\$GUI_GR_DOT"
+syn match autoitConst "\$GUI_GR_PIXEL"
+syn match autoitConst "\$GUI_GR_HINT"
+syn match autoitConst "\$GUI_GR_REFRESH"
+syn match autoitConst "\$GUI_GR_PENSIZE"
+syn match autoitConst "\$GUI_GR_NOBKCOLOR"
+" guiconstants - control default styles
+syn match autoitConst "\$GUI_SS_DEFAULT_AVI"
+syn match autoitConst "\$GUI_SS_DEFAULT_BUTTON"
+syn match autoitConst "\$GUI_SS_DEFAULT_CHECKBOX"
+syn match autoitConst "\$GUI_SS_DEFAULT_COMBO"
+syn match autoitConst "\$GUI_SS_DEFAULT_DATE"
+syn match autoitConst "\$GUI_SS_DEFAULT_EDIT"
+syn match autoitConst "\$GUI_SS_DEFAULT_GRAPHIC"
+syn match autoitConst "\$GUI_SS_DEFAULT_GROUP"
+syn match autoitConst "\$GUI_SS_DEFAULT_ICON"
+syn match autoitConst "\$GUI_SS_DEFAULT_INPUT"
+syn match autoitConst "\$GUI_SS_DEFAULT_LABEL"
+syn match autoitConst "\$GUI_SS_DEFAULT_LIST"
+syn match autoitConst "\$GUI_SS_DEFAULT_LISTVIEW"
+syn match autoitConst "\$GUI_SS_DEFAULT_MONTHCAL"
+syn match autoitConst "\$GUI_SS_DEFAULT_PIC"
+syn match autoitConst "\$GUI_SS_DEFAULT_PROGRESS"
+syn match autoitConst "\$GUI_SS_DEFAULT_RADIO"
+syn match autoitConst "\$GUI_SS_DEFAULT_SLIDER"
+syn match autoitConst "\$GUI_SS_DEFAULT_TAB"
+syn match autoitConst "\$GUI_SS_DEFAULT_TREEVIEW"
+syn match autoitConst "\$GUI_SS_DEFAULT_UPDOWN"
+syn match autoitConst "\$GUI_SS_DEFAULT_GUI"
+" guiconstants - background color special flags
+syn match autoitConst "\$GUI_BKCOLOR_DEFAULT"
+syn match autoitConst "\$GUI_BKCOLOR_LV_ALTERNATE"
+syn match autoitConst "\$GUI_BKCOLOR_TRANSPARENT"
+
+" registry constants
+syn match autoitConst "\([\"\']\)REG_BINARY\1"
+syn match autoitConst "\([\"\']\)REG_SZ\1"
+syn match autoitConst "\([\"\']\)REG_MULTI_SZ\1"
+syn match autoitConst "\([\"\']\)REG_EXPAND_SZ\1"
+syn match autoitConst "\([\"\']\)REG_DWORD\1"
+
+" Define the default highlighting.
+" Unused colors: Underlined, Ignore, Error, Todo
+hi def link autoitFunction Statement " yellow/yellow
+hi def link autoitKeyword Statement
+hi def link autoitOperator Operator
+hi def link autoitVarSelector Operator
+hi def link autoitComment Comment " cyan/blue
+hi def link autoitParen Comment
+hi def link autoitComma Comment
+hi def link autoitBracket Comment
+hi def link autoitNumber Constant " magenta/red
+hi def link autoitString Constant
+hi def link autoitQuote Constant
+hi def link autoitIncluded Constant
+hi def link autoitCont Special " red/orange
+hi def link autoitDoubledSingles Special
+hi def link autoitDoubledDoubles Special
+hi def link autoitCommDelimiter PreProc " blue/magenta
+hi def link autoitInclude PreProc
+hi def link autoitVariable Identifier " cyan/cyan
+hi def link autoitBuiltin Type " green/green
+hi def link autoitOption Type
+hi def link autoitStyle Type
+hi def link autoitConst Type
+hi def link autoitSend Type
+
+syn sync minlines=50
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/runtime/syntax/automake.vim b/runtime/syntax/automake.vim
new file mode 100644
index 0000000..2f1ad98
--- /dev/null
+++ b/runtime/syntax/automake.vim
@@ -0,0 +1,77 @@
+" Vim syntax file
+" Language: automake Makefile.am
+" Maintainer: Debian Vim Maintainers
+" Former Maintainer: John Williams <jrw@pobox.com>
+" Last Change: 2023 Jan 16
+" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/automake.vim
+"
+" XXX This file is in need of a new maintainer, Debian VIM Maintainers maintain
+" it only because patches have been submitted for it by Debian users and the
+" former maintainer was MIA (Missing In Action), taking over its
+" maintenance was thus the only way to include those patches.
+" If you care about this file, and have time to maintain it please do so!
+"
+" This script adds support for automake's Makefile.am format. It highlights
+" Makefile variables significant to automake as well as highlighting
+" autoconf-style @variable@ substitutions . Subsitutions are marked as errors
+" when they are used in an inappropriate place, such as in defining
+" EXTRA_SOURCES.
+
+" Standard syntax initialization
+if exists('b:current_syntax')
+ finish
+endif
+
+" Read the Makefile syntax to start with
+runtime! syntax/make.vim
+
+syn match automakePrimary "^\w\+\(_PROGRAMS\|_LIBRARIES\|_LISP\|_PYTHON\|_JAVA\|_SCRIPTS\|_DATA\|_HEADERS\|_MANS\|_TEXINFOS\|_LTLIBRARIES\)\s*\ze+\=="
+syn match automakePrimary "^TESTS\s*\ze+\=="me=e-1
+syn match automakeSecondary "^\w\+\(_SOURCES\|_LIBADD\|_LDADD\|_LDFLAGS\|_DEPENDENCIES\|_AR\|_CCASFLAGS\|_CFLAGS\|_CPPFLAGS\|_CXXFLAGS\|_FCFLAGS\|_FFLAGS\|_GCJFLAGS\|_LFLAGS\|_LIBTOOLFLAGS\|OBJCFLAGS\|RFLAGS\|UPCFLAGS\|YFLAGS\)\s*\ze+\=="
+syn match automakeSecondary "^\(LDADD\|ARFLAGS\|OMIT_DEPENDENCIES\|AM_MAKEFLAGS\|\(AM_\)\=\(MAKEINFOFLAGS\|RUNTESTDEFAULTFLAGS\|ETAGSFLAGS\|CTAGSFLAGS\|JAVACFLAGS\)\)\s*\ze+\=="
+syn match automakeExtra "^EXTRA_\w\+\s*\ze+\=="
+syn match automakeOptions "^\(ACLOCAL_AMFLAGS\|AUTOMAKE_OPTIONS\|DISTCHECK_CONFIGURE_FLAGS\|ETAGS_ARGS\|TAGS_DEPENDENCIES\)\s*\ze+\=="
+syn match automakeClean "^\(MOSTLY\|DIST\|MAINTAINER\)\=CLEANFILES\s*\ze+\=="
+syn match automakeSubdirs "^\(DIST_\)\=SUBDIRS\s*\ze+\=="
+syn match automakeConditional "^\(if\s*!\=\w\+\|else\|endif\)\s*$"
+
+syn match automakeSubst "@\w\+@"
+syn match automakeSubst "^\s*@\w\+@"
+syn match automakeComment1 "#.*$" contains=automakeSubst,@Spell
+syn match automakeComment2 "##.*$" contains=@Spell
+
+syn match automakeMakeError "$[{(][^})]*[^a-zA-Z0-9_})][^})]*[})]" " GNU make function call
+syn match automakeMakeError "^AM_LDADD\s*\ze+\==" " Common mistake
+
+syn region automakeNoSubst start="^EXTRA_\w*\s*+\==" end="$" contains=ALLBUT,automakeNoSubst transparent
+syn region automakeNoSubst start="^DIST_SUBDIRS\s*+\==" end="$" contains=ALLBUT,automakeNoSubst transparent
+syn region automakeNoSubst start="^\w*_SOURCES\s*+\==" end="$" contains=ALLBUT,automakeNoSubst transparent
+syn match automakeBadSubst "@\(\w*@\=\)\=" contained
+
+syn region automakeMakeDString start=+"+ skip=+\\"+ end=+"+ contains=makeIdent,automakeSubstitution
+syn region automakeMakeSString start=+'+ skip=+\\'+ end=+'+ contains=makeIdent,automakeSubstitution
+syn region automakeMakeBString start=+`+ skip=+\\`+ end=+`+ contains=makeIdent,makeSString,makeDString,makeNextLine,automakeSubstitution
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link automakePrimary Statement
+hi def link automakeSecondary Type
+hi def link automakeExtra Special
+hi def link automakeOptions Special
+hi def link automakeClean Special
+hi def link automakeSubdirs Statement
+hi def link automakeConditional PreProc
+hi def link automakeSubst PreProc
+hi def link automakeComment1 makeComment
+hi def link automakeComment2 makeComment
+hi def link automakeMakeError makeError
+hi def link automakeBadSubst makeError
+hi def link automakeMakeDString makeDString
+hi def link automakeMakeSString makeSString
+hi def link automakeMakeBString makeBString
+
+
+let b:current_syntax = 'automake'
+
+" vi: ts=8 sw=4 sts=4
diff --git a/runtime/syntax/ave.vim b/runtime/syntax/ave.vim
new file mode 100644
index 0000000..e63e7d2
--- /dev/null
+++ b/runtime/syntax/ave.vim
@@ -0,0 +1,79 @@
+" Vim syntax file
+" Copyright by Jan-Oliver Wagner
+" Language: avenue
+" Maintainer: Jan-Oliver Wagner <Jan-Oliver.Wagner@intevation.de>
+" Last change: 2001 May 10
+
+" Avenue is the ArcView built-in language. ArcView is
+" a desktop GIS by ESRI. Though it is a built-in language
+" and a built-in editor is provided, the use of VIM increases
+" development speed.
+" I use some technologies to automatically load avenue scripts
+" into ArcView.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Avenue is entirely case-insensitive.
+syn case ignore
+
+" The keywords
+
+syn keyword aveStatement if then elseif else end break exit return
+syn keyword aveStatement for each in continue while
+
+" String
+
+syn region aveString start=+"+ end=+"+
+
+" Integer number
+syn match aveNumber "[+-]\=\<[0-9]\+\>"
+
+" Operator
+
+syn keyword aveOperator or and max min xor mod by
+" 'not' is a kind of a problem: It's an Operator as well as a method
+" 'not' is only marked as an Operator if not applied as method
+syn match aveOperator "[^\.]not[^a-zA-Z]"
+
+" Variables
+
+syn keyword aveFixVariables av nil self false true nl tab cr tab
+syn match globalVariables "_[a-zA-Z][a-zA-Z0-9]*"
+syn match aveVariables "[a-zA-Z][a-zA-Z0-9_]*"
+syn match aveConst "#[A-Z][A-Z_]+"
+
+" Comments
+
+syn match aveComment "'.*"
+
+" Typical Typos
+
+" for C programmers:
+syn match aveTypos "=="
+syn match aveTypos "!="
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting+yet
+
+hi def link aveStatement Statement
+
+hi def link aveString String
+hi def link aveNumber Number
+
+hi def link aveFixVariables Special
+hi def link aveVariables Identifier
+hi def link globalVariables Special
+hi def link aveConst Special
+
+hi def link aveClassMethods Function
+
+hi def link aveOperator Operator
+hi def link aveComment Comment
+
+hi def link aveTypos Error
+
+
+let b:current_syntax = "ave"
diff --git a/runtime/syntax/avra.vim b/runtime/syntax/avra.vim
new file mode 100644
index 0000000..0e02bd8
--- /dev/null
+++ b/runtime/syntax/avra.vim
@@ -0,0 +1,71 @@
+" Vim syntax file
+" Language: AVR Assembler (AVRA)
+" AVRA Home: http://avra.sourceforge.net/index.html
+" AVRA Version: 1.3.0
+" Last Update: 2016 Oct 7
+" Maintainer: Marius Ghita <mhitza@gmail.com>
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case ignore
+
+syn keyword avraRegister r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14
+syn keyword avraRegister r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27
+syn keyword avraRegister r28 r29 r30 r31
+
+syn keyword avraInstr add adc adiw sub subi sbc sbci sbiw and andi or ori eor
+syn keyword avraInstr com neg sbr cbr inc dec tst clr ser mul muls mulsu fmul
+syn keyword avraInstr fmuls fmulsu des rjmp ijmp eijmp jmp rcall icall eicall
+syn keyword avraInstr call ret reti cpse cp cpc cpi sbrc sbrs sbic sbis brbs
+syn keyword avraInstr brbc breq brne brcs brcc brsh brlo brmi brpl brge brlt
+syn keyword avraInstr brhs brhc brts brtc brvs brvc brie brid mov movw ldi lds
+syn keyword avraInstr ld ldd sts st std lpm elpm spm in out push pop xch las
+syn keyword avraInstr lac lat lsl lsr rol ror asr swap bset bclr sbi cbi bst bld
+syn keyword avraInstr sec clc sen cln sez clz sei cli ses cls sev clv set clt
+syn keyword avraInstr seh clh break nop sleep wdr
+
+syn keyword avraDirective .byte .cseg .db .def .device .dseg .dw .endmacro .equ
+syn keyword avraDirective .eseg .exit .include .list .listmac .macro .nolist
+syn keyword avraDirective .org .set .define .undef .ifdef .ifndef .if .else
+syn keyword avraDirective .elif .elseif .warning
+
+syn keyword avraOperator low high byte2 byte3 byte4 lwrd hwrd page exp2 log2
+
+syn match avraNumericOperator "[-*/+]"
+syn match avraUnaryOperator "!"
+syn match avraBinaryOperator "<<\|>>\|<\|<=\|>\|>=\|==\|!="
+syn match avraBitwiseOperator "[~&^|]\|&&\|||"
+
+syn match avraBinaryNumber "\<0[bB][0-1]*\>"
+syn match avraHexNumber "\<0[xX][0-9a-fA-F]\+\>"
+syn match avraDecNumber "\<\(0\|[1-9]\d*\)\>"
+
+syn region avraComment start=";" end="$"
+syn region avraString start="\"" end="\"\|$"
+
+syn match avraLabel "^\s*[^; \t]\+:"
+
+hi def link avraBinaryNumber avraNumber
+hi def link avraHexNumber avraNumber
+hi def link avraDecNumber avraNumber
+
+hi def link avraNumericOperator avraOperator
+hi def link avraUnaryOperator avraOperator
+hi def link avraBinaryOperator avraOperator
+hi def link avraBitwiseOperator avraOperator
+
+
+hi def link avraOperator operator
+hi def link avraComment comment
+hi def link avraDirective preproc
+hi def link avraRegister type
+hi def link avraNumber constant
+hi def link avraString String
+hi def link avraInstr keyword
+hi def link avraLabel label
+
+let b:current_syntax = "avra"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/awk.vim b/runtime/syntax/awk.vim
new file mode 100644
index 0000000..3082c1c
--- /dev/null
+++ b/runtime/syntax/awk.vim
@@ -0,0 +1,217 @@
+" Vim syntax file
+" Language: awk, nawk, gawk, mawk
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Antonio Colombo <azc100@gmail.com>
+" Last Change: 2020 Aug 18
+
+" AWK ref. is: Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger
+" The AWK Programming Language, Addison-Wesley, 1988
+
+" GAWK ref. is: Arnold D. Robbins
+" Effective AWK Programming, Third Edition, O'Reilly, 2001
+" Effective AWK Programming, Fourth Edition, O'Reilly, 2015
+" (up-to-date version available with the gawk source distribution)
+
+" MAWK is a "new awk" meaning it implements AWK ref.
+" mawk conforms to the Posix 1003.2 (draft 11.3)
+" definition of the AWK language which contains a few features
+" not described in the AWK book, and mawk provides a small number of extensions.
+
+" TODO:
+" Dig into the commented out syntax expressions below.
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn iskeyword @,48-57,_,192-255,@-@
+
+" A bunch of useful Awk keywords
+" AWK ref. p. 188
+syn keyword awkStatement break continue delete exit
+syn keyword awkStatement function getline next
+syn keyword awkStatement print printf return
+" GAWK ref. Chapter 7-9
+syn keyword awkStatement case default switch nextfile
+syn keyword awkStatement func
+" GAWK ref. Chapter 2.7, Including Other Files into Your Program
+" GAWK ref. Chapter 2.8, Loading Dynamic Extensions into Your Program
+" GAWK ref. Chapter 15, Namespaces
+" Directives
+syn keyword awkStatement @include @load @namespace
+"
+" GAWK ref. Chapter 9, Functions
+" Numeric Functions
+syn keyword awkFunction atan2 cos exp int log rand sin sqrt srand
+" String Manipulation Functions
+syn keyword awkFunction asort asorti gensub gsub index length match
+syn keyword awkFunction patsplit split sprintf strtonum sub substr
+syn keyword awkFunction tolower toupper
+" Input Output Functions
+syn keyword awkFunction close fflush system
+" Time Functions
+syn keyword awkFunction mktime strftime systime
+" Bit Manipulation Functions
+syn keyword awkFunction and compl lshift or rshift xor
+" Getting Type Information Functions
+syn keyword awkFunction isarray typeof
+" String-Translation Functions
+syn keyword awkFunction bindtextdomain dcgettext dcngetext
+
+syn keyword awkConditional if else
+syn keyword awkRepeat while for do
+
+syn keyword awkTodo contained TODO
+
+syn keyword awkPatterns BEGIN END BEGINFILE ENDFILE
+
+" GAWK ref. Chapter 7
+" Built-in Variables That Control awk
+syn keyword awkVariables BINMODE CONVFMT FIELDWIDTHS FPAT FS
+syn keyword awkVariables IGNORECASE LINT OFMT OFS ORS PREC
+syn keyword awkVariables ROUNDMODE RS SUBSEP TEXTDOMAIN
+" Built-in Variables That Convey Information
+syn keyword awkVariables ARGC ARGV ARGIND ENVIRON ERRNO FILENAME
+syn keyword awkVariables FNR NF FUNCTAB NR PROCINFO RLENGTH RSTART
+syn keyword awkVariables RT SYMTAB
+
+" Arithmetic operators: +, and - take care of ++, and --
+syn match awkOperator "+\|-\|\*\|/\|%\|="
+syn match awkOperator "+=\|-=\|\*=\|/=\|%="
+syn match awkOperator "\^\|\^="
+
+" Octal format character.
+syn match awkSpecialCharacter display contained "\\[0-7]\{1,3\}"
+" Hex format character.
+syn match awkSpecialCharacter display contained "\\x[0-9A-Fa-f]\+"
+
+syn match awkFieldVars "\$\d\+"
+
+" catch errors caused by wrong parenthesis
+syn region awkParen transparent start="(" end=")" contains=ALLBUT,awkParenError,awkSpecialCharacter,awkArrayElement,awkArrayArray,awkTodo,awkRegExp,awkBrktRegExp,awkBrackets,awkCharClass,awkComment
+syn match awkParenError display ")"
+"syn match awkInParen display contained "[{}]"
+
+" 64 lines for complex &&'s, and ||'s in a big "if"
+syn sync ccomment awkParen maxlines=64
+
+" Search strings & Regular Expressions therein.
+syn region awkSearch oneline start="^[ \t]*/"ms=e start="\(,\|!\=\~\)[ \t]*/"ms=e skip="\\\\\|\\/" end="/" contains=awkBrackets,awkRegExp,awkSpecialCharacter
+syn region awkBrackets contained start="\[\^\]\="ms=s+2 start="\[[^\^]"ms=s+1 end="\]"me=e-1 contains=awkBrktRegExp,awkCharClass
+syn region awkSearch oneline start="[ \t]*/"hs=e skip="\\\\\|\\/" end="/" contains=awkBrackets,awkRegExp,awkSpecialCharacter
+
+syn match awkCharClass contained "\[:[^:\]]*:\]"
+syn match awkBrktRegExp contained "\\.\|.\-[^]]"
+syn match awkRegExp contained "/\^"ms=s+1
+syn match awkRegExp contained "\$/"me=e-1
+syn match awkRegExp contained "[?.*{}|+]"
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn region awkString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell,awkSpecialCharacter,awkSpecialPrintf
+syn match awkSpecialCharacter contained "\\."
+
+" Some of these combinations may seem weird, but they work.
+syn match awkSpecialPrintf contained "%[-+ #]*\d*\.\=\d*[cdefgiosuxEGX%]"
+
+" Numbers, allowing signs (both -, and +)
+" Integer number.
+syn match awkNumber display "[+-]\=\<\d\+\>"
+" Floating point number.
+syn match awkFloat display "[+-]\=\<\d\+\.\d+\>"
+" Floating point number, starting with a dot.
+syn match awkFloat display "[+-]\=\<.\d+\>"
+syn case ignore
+"floating point number, with dot, optional exponent
+syn match awkFloat display "\<\d\+\.\d*\(e[-+]\=\d\+\)\=\>"
+"floating point number, starting with a dot, optional exponent
+syn match awkFloat display "\.\d\+\(e[-+]\=\d\+\)\=\>"
+"floating point number, without dot, with exponent
+syn match awkFloat display "\<\d\+e[-+]\=\d\+\>"
+syn case match
+
+"syn match awkIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
+
+" Comparison expressions.
+syn match awkExpression "==\|>=\|=>\|<=\|=<\|\!="
+syn match awkExpression "\~\|\!\~"
+syn match awkExpression "?\|:"
+syn keyword awkExpression in
+
+" Boolean Logic (OR, AND, NOT)
+syn match awkBoolLogic "||\|&&\|\!"
+
+" This is overridden by less-than & greater-than.
+" Put this above those to override them.
+" Put this in a 'match "\<printf\=\>.*;\="' to make it not override
+" less/greater than (most of the time), but it won't work yet because
+" keywords always have precedence over match & region.
+" File I/O: (print foo, bar > "filename") & for nawk (getline < "filename")
+"syn match awkFileIO contained ">"
+"syn match awkFileIO contained "<"
+
+" Expression separators: ';' and ','
+syn match awkSemicolon ";"
+syn match awkComma ","
+
+syn match awkComment "#.*" contains=@Spell,awkTodo
+
+syn match awkLineSkip "\\$"
+
+" Highlight array element's (recursive arrays allowed).
+" Keeps nested array names' separate from normal array elements.
+" Keeps numbers separate from normal array elements (variables).
+syn match awkArrayArray contained "[^][, \t]\+\["me=e-1
+syn match awkArrayElement contained "[^][, \t]\+"
+syn region awkArray transparent start="\[" end="\]" contains=awkArray,awkArrayElement,awkArrayArray,awkNumber,awkFloat
+
+" 10 should be enough.
+" (for the few instances where it would be more than "oneline")
+syn sync ccomment awkArray maxlines=10
+
+" Define the default highlighting.
+hi def link awkConditional Conditional
+hi def link awkFunction Function
+hi def link awkRepeat Repeat
+hi def link awkStatement Statement
+hi def link awkString String
+hi def link awkSpecialPrintf Special
+hi def link awkSpecialCharacter Special
+hi def link awkSearch String
+hi def link awkBrackets awkRegExp
+hi def link awkBrktRegExp awkNestRegExp
+hi def link awkCharClass awkNestRegExp
+hi def link awkNestRegExp Keyword
+hi def link awkRegExp Special
+hi def link awkNumber Number
+hi def link awkFloat Float
+hi def link awkFileIO Special
+hi def link awkOperator Special
+hi def link awkExpression Special
+hi def link awkBoolLogic Special
+hi def link awkPatterns Special
+hi def link awkVariables Special
+hi def link awkFieldVars Special
+hi def link awkLineSkip Special
+hi def link awkSemicolon Special
+hi def link awkComma Special
+hi def link awkIdentifier Identifier
+hi def link awkComment Comment
+hi def link awkTodo Todo
+" Change this if you want nested array names to be highlighted.
+hi def link awkArrayArray awkArray
+hi def link awkArrayElement Special
+hi def link awkParenError awkError
+hi def link awkInParen awkError
+hi def link awkError Error
+
+let b:current_syntax = "awk"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8
diff --git a/runtime/syntax/ayacc.vim b/runtime/syntax/ayacc.vim
new file mode 100644
index 0000000..6fb6aec
--- /dev/null
+++ b/runtime/syntax/ayacc.vim
@@ -0,0 +1,75 @@
+" Vim syntax file
+" Language: AYacc
+" Maintainer: Mathieu Clabaut <mathieu.clabaut@free.fr>
+" LastChange: 2011 Dec 25
+" Original: Yacc, maintained by Dr. Charles E. Campbell, Jr.
+" Comment: Replaced sourcing c.vim file by ada.vim and rename yacc*
+" in ayacc*
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the Ada syntax to start with
+runtime! syntax/ada.vim
+unlet b:current_syntax
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Clusters
+syn cluster ayaccActionGroup contains=ayaccDelim,cInParen,cTodo,cIncluded,ayaccDelim,ayaccCurlyError,ayaccUnionCurly,ayaccUnion,cUserLabel,cOctalZero,cCppOut2,cCppSkip,cErrInBracket,cErrInParen,cOctalError
+syn cluster ayaccUnionGroup contains=ayaccKey,cComment,ayaccCurly,cType,cStructure,cStorageClass,ayaccUnionCurly
+
+" Yacc stuff
+syn match ayaccDelim "^[ \t]*[:|;]"
+syn match ayaccOper "@\d\+"
+
+syn match ayaccKey "^[ \t]*%\(token\|type\|left\|right\|start\|ident\)\>"
+syn match ayaccKey "[ \t]%\(prec\|expect\|nonassoc\)\>"
+syn match ayaccKey "\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"
+syn keyword ayaccKeyActn yyerrok yyclearin
+
+syn match ayaccUnionStart "^%union" skipwhite skipnl nextgroup=ayaccUnion
+syn region ayaccUnion contained matchgroup=ayaccCurly start="{" matchgroup=ayaccCurly end="}" contains=@ayaccUnionGroup
+syn region ayaccUnionCurly contained matchgroup=ayaccCurly start="{" matchgroup=ayaccCurly end="}" contains=@ayaccUnionGroup
+syn match ayaccBrkt contained "[<>]"
+syn match ayaccType "<[a-zA-Z_][a-zA-Z0-9_]*>" contains=ayaccBrkt
+syn match ayaccDefinition "^[A-Za-z][A-Za-z0-9_]*[ \t]*:"
+
+" special Yacc separators
+syn match ayaccSectionSep "^[ \t]*%%"
+syn match ayaccSep "^[ \t]*%{"
+syn match ayaccSep "^[ \t]*%}"
+
+" I'd really like to highlight just the outer {}. Any suggestions???
+syn match ayaccCurlyError "[{}]"
+syn region ayaccAction matchgroup=ayaccCurly start="{" end="}" contains=ALLBUT,@ayaccActionGroup
+
+
+" Internal ayacc highlighting links
+hi def link ayaccBrkt ayaccStmt
+hi def link ayaccKey ayaccStmt
+hi def link ayaccOper ayaccStmt
+hi def link ayaccUnionStart ayaccKey
+
+" External ayacc highlighting links
+hi def link ayaccCurly Delimiter
+hi def link ayaccCurlyError Error
+hi def link ayaccDefinition Function
+hi def link ayaccDelim Function
+hi def link ayaccKeyActn Special
+hi def link ayaccSectionSep Todo
+hi def link ayaccSep Delimiter
+hi def link ayaccStmt Statement
+hi def link ayaccType Type
+
+" since Bram doesn't like my Delimiter :|
+hi def link Delimiter Type
+
+let b:current_syntax = "ayacc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=15
diff --git a/runtime/syntax/b.vim b/runtime/syntax/b.vim
new file mode 100644
index 0000000..01532be
--- /dev/null
+++ b/runtime/syntax/b.vim
@@ -0,0 +1,114 @@
+" Vim syntax file
+" Language: B (A Formal Method with refinement and mathematical proof)
+" Maintainer: Mathieu Clabaut <mathieu.clabaut@gmail.com>
+" Contributor: Csaba Hoch
+" LastChange: 8 Dec 2007
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+" A bunch of useful B keywords
+syn keyword bStatement MACHINE MODEL SEES OPERATIONS INCLUDES DEFINITIONS CONSTRAINTS CONSTANTS VARIABLES CONCRETE_CONSTANTS CONCRETE_VARIABLES ABSTRACT_CONSTANTS ABSTRACT_VARIABLES HIDDEN_CONSTANTS HIDDEN_VARIABLES ASSERT ASSERTIONS EXTENDS IMPLEMENTATION REFINEMENT IMPORTS USES INITIALISATION INVARIANT PROMOTES PROPERTIES REFINES SETS VALUES VARIANT VISIBLE_CONSTANTS VISIBLE_VARIABLES THEORY XLS THEOREMS LOCAL_OPERATIONS
+syn keyword bLabel CASE IN EITHER OR CHOICE DO OF
+syn keyword bConditional IF ELSE SELECT ELSIF THEN WHEN
+syn keyword bRepeat WHILE FOR
+syn keyword bOps bool card conc closure closure1 dom first fnc front not or id inter iseq iseq1 iterate last max min mod perm pred prj1 prj2 ran rel rev seq seq1 size skip succ tail union
+syn keyword bKeywords LET VAR BE IN BEGIN END POW POW1 FIN FIN1 PRE SIGMA STRING UNION IS ANY WHERE
+
+syn keyword bBoolean TRUE FALSE bfalse btrue
+syn keyword bConstant PI MAXINT MININT User_Pass PatchProver PatchProverH0 PatchProverB0 FLAT ARI DED SUB RES
+syn keyword bGuard binhyp band bnot bguard bsearch bflat bfresh bguardi bget bgethyp barith bgetresult bresult bgoal bmatch bmodr bnewv bnum btest bpattern bprintf bwritef bsubfrm bvrb blvar bcall bappend bclose
+
+syn keyword bLogic or not
+syn match bLogic "\(!\|#\|%\|&\|+->>\|+->\|-->>\|->>\|-->\|->\|/:\|/<:\|/<<:\|/=\|/\\\|/|\\\|::\|:\|;:\|<+\|<->\|<--\|<-\|<:\|<<:\|<<|\|<=>\|<|\|==\|=>\|>+>>\|>->\|>+>\|||\||->\)"
+syn match bNothing /:=/
+
+syn keyword cTodo contained TODO FIXME XXX
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match bSpecial contained "\\[0-7][0-7][0-7]\=\|\\."
+syn region bString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=bSpecial
+syn match bCharacter "'[^\\]'"
+syn match bSpecialCharacter "'\\.'"
+syn match bSpecialCharacter "'\\[0-7][0-7]'"
+syn match bSpecialCharacter "'\\[0-7][0-7][0-7]'"
+
+"catch errors caused by wrong parenthesis
+syn region bParen transparent start='(' end=')' contains=ALLBUT,bParenError,bIncluded,bSpecial,bTodo,bUserLabel,bBitField
+syn match bParenError ")"
+syn match bInParen contained "[{}]"
+
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match bNumber "\<[0-9]\+\>"
+"syn match bIdentifier "\<[a-z_][a-z0-9_]*\>"
+syn case match
+
+ syn region bComment start="/\*" end="\*/" contains=bTodo
+ syn match bComment "//.*" contains=bTodo
+syntax match bCommentError "\*/"
+
+syn keyword bType INT INTEGER BOOL NAT NATURAL NAT1 NATURAL1
+
+syn region bPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=bComment,bString,bCharacter,bNumber,bCommentError
+syn region bIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match bIncluded contained "<[^>]*>"
+syn match bInclude "^\s*#\s*include\>\s*["<]" contains=bIncluded
+
+syn region bDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,bPreCondit,bIncluded,bInclude,bDefine,bInParen
+syn region bPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,bPreCondit,bIncluded,bInclude,bDefine,bInParen
+
+syn sync ccomment bComment minlines=10
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+
+" The default methods for highlighting. Can be overridden later
+hi def link bLabel Label
+hi def link bUserLabel Label
+hi def link bConditional Conditional
+hi def link bRepeat Repeat
+hi def link bLogic Special
+hi def link bCharacter Character
+hi def link bSpecialCharacter bSpecial
+hi def link bNumber Number
+hi def link bFloat Float
+hi def link bOctalError bError
+hi def link bParenError bError
+" hi def link bInParen bError
+hi def link bCommentError bError
+hi def link bBoolean Identifier
+hi def link bConstant Identifier
+hi def link bGuard Identifier
+hi def link bOperator Operator
+hi def link bKeywords Operator
+hi def link bOps Identifier
+hi def link bStructure Structure
+hi def link bStorageClass StorageClass
+hi def link bInclude Include
+hi def link bPreProc PreProc
+hi def link bDefine Macro
+hi def link bIncluded bString
+hi def link bError Error
+hi def link bStatement Statement
+hi def link bPreCondit PreCondit
+hi def link bType Type
+hi def link bCommentError bError
+hi def link bCommentString bString
+hi def link bComment2String bString
+hi def link bCommentSkip bComment
+hi def link bString String
+hi def link bComment Comment
+hi def link bSpecial SpecialChar
+hi def link bTodo Todo
+"hi link bIdentifier Identifier
+
+let b:current_syntax = "b"
+
+" vim: ts=8
diff --git a/runtime/syntax/baan.vim b/runtime/syntax/baan.vim
new file mode 100644
index 0000000..9a42a43
--- /dev/null
+++ b/runtime/syntax/baan.vim
@@ -0,0 +1,1917 @@
+" Vim syntax file"
+" Language: Baan
+" Maintainer: Erik Remmelzwaal (erik.remmelzwaal 0x40 ssaglobal.com)
+" Originally owned by: Erwin Smit / Her van de Vliert
+" Last change: v1.17 2006/04/26 10:40:18
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+"********************************** Lexical setting ***************************"
+syn case ignore
+setlocal iskeyword+=.
+"setlocal ignorecase "This is not a local yet ;-(
+" Identifier
+syn match baanIdentifier "\<\k\+\>"
+
+"************************************* 3GL ************************************"
+syn match baan3glpre "#ident\>"
+syn match baan3glpre "#include\>"
+syn region baan3glpre start="#define\>" end="^[^^|]"me=s-1 contains=baanString,baanConstant,baanNumber,baanComment,baansql
+syn match baan3glpre "#undef\>"
+syn match baan3glpre "#pragma\>"
+syn match baan3glpre "#if\>"
+syn match baan3glpre "#ifdef\>"
+syn match baan3glpre "#ifndef\>"
+syn match baan3glpre "#elif\>"
+syn match baan3glpre "#else\>"
+syn match baan3glpre "#endif\>"
+
+" Some keywords are only defined when no foldinat based break bset call continue default
+syn keyword baan3gl empty fixed ge global goto gt le lt mb
+syn keyword baan3gl multibyte ne ofr prompt repeat static step stop
+syn keyword baan3gl until void wherebind ref reference break continue
+syn keyword baan3gl and or to not in
+syn keyword baan3gl eq input end return at print
+syn keyword baanType domain double long string table boolean common
+syn keyword baanType bset void xmlNode
+syn keyword baanStorageClass dim base based extern global fixed MB const
+syn keyword baanConstant pi true false
+
+" Folding settings
+if exists("baan_fold") && baan_fold
+ syn region baanFunctionFold matchgroup=baan3gl start="^\z(\s*\)\<function\>" matchgroup=NONE end="^\z1}" transparent fold keepend
+else
+ syn keyword baan3gl function
+endif
+if exists("baan_fold") && baan_fold && exists("baan_fold_block") && baan_fold_block
+ syn region baanCondFold matchgroup=baanConditional start="^\z(\s*\)\(if\>\|else\>\)" end="^\z1endif\>" end="^\z1else\>"me=s-1 transparent fold keepend extend
+ syn region baanCondFold matchgroup=baanConditional start="^\z(\s*\)for\>" end="^\z1endfor\>" transparent fold keepend extend
+ syn region baanCondFold matchgroup=baanConditional start="^\z(\s*\)while\>" end="^\z1endwhile\>" transparent fold keepend extend
+ syn region baanDLLUsage matchgroup=baan3gl start="^\z(\s*\)dllusage\>" end="^\z1enddllusage\>" fold contains=baanNumber,baanConstant,baanType
+ syn region baanFunUsage matchgroup=baan3gl start="^\z(\s*\)functionusage\>" end="^\z1endfunctionusage\>" fold contains=baanNumber,baanConstant,baanType
+ syn region baanCondFold matchgroup=baanConditional start="^\z(\s*\)\(case\>\|default\>\)\>" end="^\z1endcase\>" end="^\z1\(case\>\|default\>\)"me=s-1 transparent fold keepend extend
+ syn keyword baanConditional then else endif while endwhile endfor case endcase
+ syn match baanConditional "\<on case\>"
+else
+ syn match baanConditional "\<for\>" contains=baansql
+ syn match baanConditional "\<on case\>"
+ syn keyword baanConditional if then else endif while endwhile endfor case endcase default
+ syn region baanDLLUsage matchgroup=baan3gl start="\<dllusage\>" end="\<enddllusage\>" contains=baanNumber,baanConstant,baanType
+ syn region baanFunUsage matchgroup=baan3gl start="\<functionusage\>" end="\<endfunctionusage\>" contains=baanNumber,baanConstant,baanType
+endif
+
+"************************************* SQL ************************************"
+syn keyword baansql from selectbind
+syn keyword baansql where wherebind whereused exsists
+syn keyword baansql between inrange having
+syn keyword baansql hint ordered asc desc
+syn match baansql "\<as set with \d\+ rows\>"
+syn match baansql "\<as prepared set\>"
+syn match baansql "\<as prepared set with \d\+ rows\>"
+syn match baansql "\<with retry\>"
+syn match baansql "\<with retry repeat last row\>"
+syn match baansql "\<for update\>"
+syn match baansql "\<order by\>"
+syn match baansql "\<group by\>"
+syn match baansql "\<union all\>"
+" references
+syn keyword path reference
+syn match baansql "\<refers to\>"
+syn match baansql "\<unref clear\>"
+syn match baansql "\<unref setunref\>"
+syn match baansql "\<unref clearunref\>"
+syn match baansql "\<unref skip\>"
+" hints
+syn keyword baansql hint and ordered asc desc
+syn match baansql "\<use index \d\+ on\>"
+syn match baansql "\<array fetching\>"
+syn match baansql "\<no array fetching\>"
+syn match baansql "\<array size \d\+\>"
+syn match baansql "\<all rows\>"
+syn match baansql "\<first rows\>"
+syn match baansql "\<buffer \d\+ rows\>"
+syn match baansql "\<no hints\>"
+" update
+syn keyword baansql set
+
+if exists("baan_fold") && baan_fold && exists("baan_fold_sql") && baan_fold_sql
+ syn region baanSQLFold matchgroup=baansql start="^\z(\s*\)\(select\>\|selectdo\>\|selectempty\>\|selecterror\>\|selecteos\>\)" end="^\z1endselect\>" end="^\z1\(selectdo\>\|selectempty\>\|selecterror\>\|selecteos\>\)"me=s-1 transparent fold keepend extend
+ "syn region baanSQLFold matchgroup=baansql start="^\z(\s*\)\(update\>\|updateempty\>\|updateerror\>\|selecteos\>\)" end="^\z1endupdate\>" end="^\z1\(updateempty\>\|updateerror\>\|selecteos\>\)"me=s-1 transparent fold keepend extend
+ syn region baanSQLFold matchgroup=baansql start="^\z(\s*\)\(update\>\|updateempty\>\|updateerror\>\)" end="^\z1endupdate\>" end="^\z1\(updateempty\>\|updateerror\>\)"me=s-1 transparent fold keepend extend
+ syn region baanSQLFold matchgroup=baansql start="^\z(\s*\)\(delete\s\+from\>\|deleteempty\>\|deleteerror\>\)" end="^\z1enddelete\>" end="^\z1\(deleteempty\>\|deleteerror\>\)"me=s-1 transparent fold keepend extend
+else
+ syn keyword baansql select selectdo selectempty selecterror selecteos endselect
+ " delete
+ syn match baansql "\<delete from\>"
+ syn keyword baansql deleteempty deleteerror deleteeos enddelete
+ " update
+ syn keyword baansql update updateempty updateerror updateeos endupdate
+endif
+
+setlocal foldmethod=syntax
+"syn sync fromstart
+syn sync minlines=100
+
+
+"These are bshell functions
+if exists("baan_obsolete")
+syn match baansql "commit\.transaction()"
+syn match baansql "abort\.transaction()"
+syn match baansql "db\.columns\.to\.record"
+syn match baansql "db\.record\.to\.columns"
+syn match baansql "db\.bind"
+syn match baansql "db\.change\.order"
+syn match baansql "db\.set\.to\.default"
+syn match baansql "DB\.RETRY"
+syn match baansql "db\.delayed\.lock"
+syn match baansql "db\.retry\.point()"
+syn match baansql "db\.retry\.hit()"
+syn match baansql "db\.return\.dupl"
+syn match baansql "db\.skip\.dupl"
+syn match baansql "db\.row\.length"
+endif
+
+" Constants
+syn keyword baanConstant __function__
+syn keyword baanConstant __object__
+syn keyword baanConstant __file__
+syn keyword baanConstant __line__
+
+syn keyword baanConstant ABORT.PROGRAM
+syn keyword baanConstant ADD.SET
+syn keyword baanConstant ALL_ENUMS_EXCEPT
+syn keyword baanConstant APPL.EXCL
+syn keyword baanConstant APPL.READ
+syn keyword baanConstant APPL.WAIT
+syn keyword baanConstant APPL.WIDE
+syn keyword baanConstant APPL.WRITE
+syn keyword baanConstant ASK.HELPINFO
+syn keyword baanConstant AUTG_PRINT
+syn keyword baanConstant AUTG_DISPLAY
+syn keyword baanConstant AUTG_MODIFY
+syn keyword baanConstant AUTG_INSERT
+syn keyword baanConstant AUTG_DELETE
+syn keyword baanConstant AUTG_ALL
+syn keyword baanConstant BMS
+syn keyword baanConstant CALCULATOR
+syn keyword baanConstant CALENDAR
+syn keyword baanConstant CHANGE.ORDER
+syn keyword baanConstant CMD.OPTIONS
+syn keyword baanConstant CMD.WHATS.THIS
+syn keyword baanConstant CMF.MESSAGE
+syn keyword baanConstant CMF.TASK
+syn keyword baanConstant CMF.APPOINTMENT
+syn match baanConstant "\<COMPANY\$"
+syn keyword baanConstant COMPNR
+syn keyword baanConstant CONT.PROCESS
+syn keyword baanConstant CREATE.JOB
+syn keyword baanConstant DALNOOBJSET
+syn keyword baanConstant DALNOMETHOD
+syn keyword baanConstant DALNOOBJSETID
+syn keyword baanConstant DALNOOBJECTID
+syn keyword baanConstant DALNOPROP
+syn keyword baanConstant DALNOLOCMODE
+syn keyword baanConstant DALNOGETPOS
+syn keyword baanConstant DALNOSETPERM
+syn keyword baanConstant DALNOOBJPERM
+syn keyword baanConstant DALDBERROR
+syn keyword baanConstant DALHOOKERROR
+syn keyword baanConstant DALNOQUERYID
+syn keyword baanConstant DAL_DESTROY
+syn keyword baanConstant DAL_FIND
+syn keyword baanConstant DAL_GET_CURR
+syn keyword baanConstant DAL_GET_FIRST
+syn keyword baanConstant DAL_GET_LAST
+syn keyword baanConstant DAL_GET_NEXT
+syn keyword baanConstant DAL_GET_PREV
+syn keyword baanConstant DAL_GET_SPECIFIED
+syn keyword baanConstant DAL_NEW
+syn keyword baanConstant DAL_UPDATE
+syn keyword baanConstant DB.ARRAY
+syn keyword baanConstant DB.BASED
+syn keyword baanConstant DB.BITSET
+syn keyword baanConstant DB.BYTE
+syn keyword baanConstant DB.CHECK.IGNORED.REF
+syn keyword baanConstant DB.CHILD
+syn keyword baanConstant DB.CLEAR.NO.ROLLBACK
+syn keyword baanConstant DB.CLEAR.WITH.ROLLBACK
+syn keyword baanConstant DB.COMBINED
+syn keyword baanConstant DB.DATE
+syn keyword baanConstant DB.DELAYED.LOCK
+syn keyword baanConstant DB.DOUBLE
+syn keyword baanConstant DB.ENUM
+syn keyword baanConstant DB.EXIT.ON.DUPL
+syn keyword baanConstant DB.EXIT.ON.NOREC
+syn keyword baanConstant DB.EXIT.ON.ROWCHANGED
+syn keyword baanConstant DB.FILLED
+syn keyword baanConstant DB.FIXED
+syn keyword baanConstant DB.FL.LOCK
+syn keyword baanConstant DB.FLOAT
+syn keyword baanConstant DB.IGNORE.ALL.REFS
+syn keyword baanConstant DB.INTEGER
+syn keyword baanConstant DB.IS.REF.TO
+syn keyword baanConstant DB.LOCK
+syn keyword baanConstant DB.LONG
+syn keyword baanConstant DB.MAIL
+syn keyword baanConstant DB.MULTIBYTE
+syn keyword baanConstant DB.NOT.ACTIV
+syn keyword baanConstant DB.PAR.IS.REF.TO
+syn keyword baanConstant DB.REF.CASCADE
+syn keyword baanConstant DB.REF.CHK.RUNTIME
+syn keyword baanConstant DB.REF.DELETE
+syn keyword baanConstant DB.REF.NOP
+syn keyword baanConstant DB.REF.NULLIFY
+syn keyword baanConstant DB.REF.RESTRICTED
+syn keyword baanConstant DB.REF.UPDATE
+syn keyword baanConstant DB.RETRY
+syn keyword baanConstant DB.RETURN.DUPL
+syn keyword baanConstant DB.RETURN.ERROR
+syn keyword baanConstant DB.RETURN.NOREC
+syn keyword baanConstant DB.RETURN.REF.EXISTS
+syn keyword baanConstant DB.RETURN.REF.NOT.EXISTS
+syn keyword baanConstant DB.RETURN.ROWCHANGED
+syn keyword baanConstant DB.RPOINT
+syn keyword baanConstant DB.SKIP.DUPL
+syn keyword baanConstant DB.SKIP.NOREC
+syn keyword baanConstant DB.SKIP.ROWCHANGED
+syn keyword baanConstant DB.STRING
+syn keyword baanConstant DB.TEXT
+syn keyword baanConstant DB.TIME
+syn keyword baanConstant DBG_BDB_ACTIONS
+syn keyword baanConstant DBG_BDB_DELAY_LOCK
+syn keyword baanConstant DBG_BDB_REFER
+syn keyword baanConstant DBG_BDB_SERVER_TYPE
+syn keyword baanConstant DBG_DATA_SIZE
+syn keyword baanConstant DBG_DEBUG_MESG
+syn keyword baanConstant DBG_DEBUG_TSS
+syn keyword baanConstant DBG_FILE
+syn keyword baanConstant DBG_FILEDEV
+syn keyword baanConstant DBG_FUN_DEBUG
+syn keyword baanConstant DBG_GET_PUT_VAR
+syn keyword baanConstant DBG_INSTR_DEBUG
+syn keyword baanConstant DBG_MUL_ACTION
+syn keyword baanConstant DBG_OBJ_SIZE
+syn keyword baanConstant DBG_PRINT_ENUMS
+syn keyword baanConstant DBG_REF_PATH
+syn keyword baanConstant DBG_RESOURCE_DBG
+syn keyword baanConstant DBG_SCHED_DEBUG
+syn keyword baanConstant DBG_SHOW_FLOW
+syn keyword baanConstant DBG_SHOW_TRACE
+syn keyword baanConstant DBG_SRDD_USAGE
+syn keyword baanConstant DEBUG
+syn keyword baanConstant DEF.FIND
+syn keyword baanConstant DISPLAY.SET
+syn keyword baanConstant DIS.RESTARTED
+syn keyword baanConstant DLL_OVERLOAD
+syn keyword baanConstant DLL_OVERLOAD_ALL
+syn keyword baanConstant DLL_SILENT_ERR
+syn keyword baanConstant DSTerminationCreateProcess
+syn keyword baanConstant DSTerminationCreateThread
+syn keyword baanConstant DSTerminationNormalExit
+syn keyword baanConstant DSTerminationOpenStderr
+syn keyword baanConstant DSTerminationOpenStdin
+syn keyword baanConstant DSTerminationOpenStdout
+syn keyword baanConstant DSTerminationSetDir
+syn keyword baanConstant DUPL.OCCUR
+syn keyword baanConstant E2BIG
+syn keyword baanConstant EABORT
+syn keyword baanConstant EACCES
+syn keyword baanConstant EAGAIN
+syn keyword baanConstant EAUDIT
+syn keyword baanConstant EBADADRS
+syn keyword baanConstant EBADARG
+syn keyword baanConstant EBADCOLL
+syn keyword baanConstant EBADCURSOR
+syn keyword baanConstant EBADF
+syn keyword baanConstant EBADFILE
+syn keyword baanConstant EBADFLD
+syn keyword baanConstant EBADKEY
+syn keyword baanConstant EBADLOG
+syn keyword baanConstant EBADMEM
+syn keyword baanConstant EBDBNOTON
+syn keyword baanConstant EBDBON
+syn keyword baanConstant EBUSY
+syn keyword baanConstant ECHILD
+syn keyword baanConstant EDDCORRUPT
+syn keyword baanConstant EDOM
+syn keyword baanConstant EDUPL
+syn keyword baanConstant EENDFILE
+syn keyword baanConstant EEXIST
+syn keyword baanConstant EFAULT
+syn keyword baanConstant EFBIG
+syn keyword baanConstant EFLOCKED
+syn keyword baanConstant EFNAME
+syn keyword baanConstant EINTR
+syn keyword baanConstant EINVAL
+syn keyword baanConstant EIO
+syn keyword baanConstant EISDIR
+syn keyword baanConstant EISREADONLY
+syn keyword baanConstant EKEXISTS
+syn keyword baanConstant ELOCKED
+syn keyword baanConstant ELOGOPEN
+syn keyword baanConstant ELOGREAD
+syn keyword baanConstant ELOGWRIT
+syn keyword baanConstant EMEMORY
+syn keyword baanConstant EMFILE
+syn keyword baanConstant EMLINK
+syn keyword baanConstant EMLOCKED
+syn keyword baanConstant END.PROGRAM
+syn keyword baanConstant ENFILE
+syn keyword baanConstant ENOBEGIN
+syn keyword baanConstant ENOCURR
+syn keyword baanConstant ENODD
+syn keyword baanConstant ENODELAYEDLOCK
+syn keyword baanConstant ENODEV
+syn keyword baanConstant ENOENT
+syn keyword baanConstant ENOEXEC
+syn keyword baanConstant ENOLOK
+syn keyword baanConstant ENOMEM
+syn keyword baanConstant ENONFS
+syn keyword baanConstant ENOREC
+syn keyword baanConstant ENOSERVER
+syn keyword baanConstant ENOSHMEM
+syn keyword baanConstant ENOSPC
+syn keyword baanConstant ENOTABLE
+syn keyword baanConstant ENOTBLK
+syn keyword baanConstant ENOTDIR
+syn keyword baanConstant ENOTEXCL
+syn keyword baanConstant ENOTINRANGE
+syn keyword baanConstant ENOTLOCKED
+syn keyword baanConstant ENOTOPEN
+syn keyword baanConstant ENOTRANS
+syn keyword baanConstant ENOTTY
+syn keyword baanConstant ENXIO
+syn keyword baanConstant ENUMMASK.INITIAL
+syn keyword baanConstant ENUMMASK.GENERAL
+syn keyword baanConstant EPERM
+syn keyword baanConstant EPIPE
+syn keyword baanConstant EPRIMKEY
+syn keyword baanConstant ERANGE
+syn keyword baanConstant EREFERENCE
+syn keyword baanConstant EREFEXISTS
+syn keyword baanConstant EREFLOCKED
+syn keyword baanConstant EREFNOTEXISTS
+syn keyword baanConstant EREFUNDEFINED
+syn keyword baanConstant EREFUPDATE
+syn keyword baanConstant EROFS
+syn keyword baanConstant EROWCHANGED
+syn keyword baanConstant ESPIPE
+syn keyword baanConstant ESQLCARDINALITYVIOLATION
+syn keyword baanConstant ESQLDIVBYZERO
+syn keyword baanConstant ESQLFILEIO
+syn keyword baanConstant ESQLINDEXOUTOFDIMS
+syn keyword baanConstant ESQLINVALIDPARAMETERTYPE
+syn keyword baanConstant ESQLQUERY
+syn keyword baanConstant ESQLREFER
+syn keyword baanConstant ESQLSTRINGTRUNCATION
+syn keyword baanConstant ESQLSUBSTRINGERROR
+syn keyword baanConstant ESQLSYNTAX
+syn keyword baanConstant ESRCH
+syn keyword baanConstant ETABLEEXIST
+syn keyword baanConstant ETOOMANY
+syn keyword baanConstant ETRANSACTIONON
+syn keyword baanConstant ETXTBSY
+syn keyword baanConstant EUNALLOWEDCOMPNR
+syn keyword baanConstant EVTALLEVENTMASK
+syn keyword baanConstant EVTARMBUTTON
+syn keyword baanConstant EVTARMBUTTONMASK
+syn keyword baanConstant EVTBUCKETMESSAGE
+syn keyword baanConstant EVTBUTTON1
+syn keyword baanConstant EVTBUTTON1MASK
+syn keyword baanConstant EVTBUTTON2
+syn keyword baanConstant EVTBUTTON2MASK
+syn keyword baanConstant EVTBUTTON3
+syn keyword baanConstant EVTBUTTON3MASK
+syn keyword baanConstant EVTBUTTON4
+syn keyword baanConstant EVTBUTTON4MASK
+syn keyword baanConstant EVTBUTTON5
+syn keyword baanConstant EVTBUTTON5MASK
+syn keyword baanConstant EVTBUTTONCHECKED
+syn keyword baanConstant EVTBUTTONDPRESS
+syn keyword baanConstant EVTBUTTONDPRESSMASK
+syn keyword baanConstant EVTBUTTONMOTION
+syn keyword baanConstant EVTBUTTONMOTIONMASK
+syn keyword baanConstant EVTBUTTONPRESS
+syn keyword baanConstant EVTBUTTONPRESSMASK
+syn keyword baanConstant EVTBUTTONRELEASE
+syn keyword baanConstant EVTBUTTONRELEASEMASK
+syn keyword baanConstant EVTBUTTONSELECT
+syn keyword baanConstant EVTBUTTONSELECTMASK
+syn keyword baanConstant EVTBUTTONUNCHECKED
+syn keyword baanConstant EVTBUTTONUNDEFINED
+syn keyword baanConstant EVTCHANGEFOCUS
+syn keyword baanConstant EVTCHANGEFOCUSMASK
+syn keyword baanConstant EVTCHANNELEVENT
+syn keyword baanConstant EVTCHECKBOXMASK
+syn keyword baanConstant EVTCHECKBOXSELECT
+syn keyword baanConstant EVTCLIENTMESSAGE
+syn keyword baanConstant EVTCONNECTREQUEST
+syn keyword baanConstant EVTCONTROLMASK
+syn keyword baanConstant EVTDEATHCHILD
+syn keyword baanConstant EVTDEATHCHILDMASK
+syn keyword baanConstant EVTDISARMBUTTON
+syn keyword baanConstant EVTDISARMBUTTONMASK
+syn keyword baanConstant EVTDLLEVENT
+syn keyword baanConstant EVTDLLEVENTMASK
+syn keyword baanConstant EVTENTERNOTIFY
+syn keyword baanConstant EVTENTERNOTIFYMASK
+syn keyword baanConstant EVTFIELDSELECT
+syn keyword baanConstant EVTFIELDSELECTMASK
+syn keyword baanConstant EVTGRIDACTIVATE
+syn keyword baanConstant EVTGRIDBUTTONPRESS
+syn keyword baanConstant EVTGRIDCHANGEDATA
+syn keyword baanConstant EVTGRIDCHANGEFOCUS
+syn keyword baanConstant EVTGRIDEVENT
+syn keyword baanConstant EVTGRIDEVENTMASK
+syn keyword baanConstant EVTGRIDFOCUSCHANGEDBYMOUSE
+syn keyword baanConstant EVTGRIDLISTBOXCHANGE
+syn keyword baanConstant EVTGRIDMARKCELL
+syn keyword baanConstant EVTGRIDMARKCOLUMN
+syn keyword baanConstant EVTGRIDMARKRANGE
+syn keyword baanConstant EVTGRIDMARKROW
+syn keyword baanConstant EVTGRIDMOVECOLUMN
+syn keyword baanConstant EVTGRIDMOVEROW
+syn keyword baanConstant EVTGRIDRESETSELECTION
+syn keyword baanConstant EVTGRIDRESIZECOLUMN
+syn keyword baanConstant EVTGRIDRESIZEROW
+syn keyword baanConstant EVTHELPCOMMAND
+syn keyword baanConstant EVTHELPCONTEXT
+syn keyword baanConstant EVTHELPEVENT
+syn keyword baanConstant EVTHELPEVENTMASK
+syn keyword baanConstant EVTIOEVENT
+syn keyword baanConstant EVTIOEVENTMASK
+syn keyword baanConstant EVTKEYPRESS
+syn keyword baanConstant EVTKEYPRESSMASK
+syn keyword baanConstant EVTKILLEVENT
+syn keyword baanConstant EVTLEAVENOTIFY
+syn keyword baanConstant EVTLEAVENOTIFYMASK
+syn keyword baanConstant EVTLISTBOXREASONACTIVATE
+syn keyword baanConstant EVTLISTBOXREASONSELECTION
+syn keyword baanConstant EVTLISTBOXREASONTEXT
+syn keyword baanConstant EVTLISTBOXSELECT
+syn keyword baanConstant EVTLISTBOXSELECTMASK
+syn keyword baanConstant EVTLOCKMASK
+syn keyword baanConstant EVTMAXSIZE
+syn keyword baanConstant EVTMENUSELECT
+syn keyword baanConstant EVTMENUSELECTMASK
+syn keyword baanConstant EVTMOD1MASK
+syn keyword baanConstant EVTMOVEWINDOW
+syn keyword baanConstant EVTMOVEWINDOWMASK
+syn keyword baanConstant EVTNAVIGATOREVENT
+syn keyword baanConstant EVTNAVIGATOREVENTMASK
+syn keyword baanConstant EVTNOEVENTMASK
+syn keyword baanConstant EVTOLEAUTOMATION
+syn keyword baanConstant EVTOLECLOSE
+syn keyword baanConstant EVTOLECREATEINSTANCE
+syn keyword baanConstant EVTOLEDATACHANGED
+syn keyword baanConstant EVTOLEEVENT
+syn keyword baanConstant EVTOLEEVENTMASK
+syn keyword baanConstant EVTOLEHIDEWINDOW
+syn keyword baanConstant EVTOLELOADDATA
+syn keyword baanConstant EVTOLELOCKSERVER
+syn keyword baanConstant EVTOLEOBJECTWINDOWINVISIBLE
+syn keyword baanConstant EVTOLEOBJECTWINDOWVISIBLE
+syn keyword baanConstant EVTOLERELEASED
+syn keyword baanConstant EVTOLESAVEDATA
+syn keyword baanConstant EVTOLESETHOSTNAMES
+syn keyword baanConstant EVTOLESHOWOBJECT
+syn keyword baanConstant EVTOLESHOWWINDOW
+syn keyword baanConstant EVTOLEUNLOCKSERVER
+syn keyword baanConstant EVTOPTIONSELECT
+syn keyword baanConstant EVTPROCESSEVENT
+syn keyword baanConstant EVTPUSHBUTTON
+syn keyword baanConstant EVTRADIOBOXMASK
+syn keyword baanConstant EVTRADIOBOXSELECT
+syn keyword baanConstant EVTRESIZEWINDOW
+syn keyword baanConstant EVTRESIZEWINDOWMASK
+syn keyword baanConstant EVTRUNPROGEXIT
+syn keyword baanConstant EVTSCROLLBARSELECT
+syn keyword baanConstant EVTSCROLLBARSELECTMASK
+syn keyword baanConstant EVTSETFOCUS
+syn keyword baanConstant EVTSETFOCUSMASK
+syn keyword baanConstant EVTSHIFTMASK
+syn keyword baanConstant EVTSLIDERSELECT
+syn keyword baanConstant EVTSLIDERSELECTMASK
+syn keyword baanConstant EVTSOCKHASDATA
+syn keyword baanConstant EVTSOCKIOERROR
+syn keyword baanConstant EVTTABSELECT
+syn keyword baanConstant EVTTABSELECTMASK
+syn keyword baanConstant EVTTERMINATION
+syn keyword baanConstant EVTTERMINATIONMASK
+syn keyword baanConstant EVTTIMEREVENT
+syn keyword baanConstant EVTTIMEREVENTMASK
+syn keyword baanConstant EVTTREEREASONACTIVATE
+syn keyword baanConstant EVTTREEREASONACTIVATEMASK
+syn keyword baanConstant EVTTREEREASONCOLLAPSE
+syn keyword baanConstant EVTTREEREASONCOLLAPSEMASK
+syn keyword baanConstant EVTTREEREASONEXPAND
+syn keyword baanConstant EVTTREEREASONEXPANDMASK
+syn keyword baanConstant EVTTREEREASONSELECT
+syn keyword baanConstant EVTTREEREASONSELECTMASK
+syn keyword baanConstant EVTTREESELECT
+syn keyword baanConstant EVTTREESELECTMASK
+syn keyword baanConstant EXDEV
+syn keyword baanConstant EXPLICIT.MODELESS
+syn keyword baanConstant EXTEND_APPEND
+syn keyword baanConstant EXTEND_OVERWRITE
+syn keyword baanConstant F.ASK.HELPINFO
+syn keyword baanConstant F.BACKTAB
+syn keyword baanConstant F.BMS
+syn keyword baanConstant F.HELP.INDEX
+syn keyword baanConstant F.NEXT.FLD
+syn keyword baanConstant F.NEXT.OBJ
+syn keyword baanConstant F.NEXT.OCC
+syn keyword baanConstant F.PREV.FLD
+syn keyword baanConstant F.PREV.OBJ
+syn keyword baanConstant F.PREV.OCC
+syn keyword baanConstant F.RESIZE
+syn keyword baanConstant F.RETURN
+syn keyword baanConstant F.SCROLL
+syn keyword baanConstant F.SELECT.FIELD
+syn keyword baanConstant F.SELECT.OPTION
+syn keyword baanConstant F.TAB
+syn keyword baanConstant F.TO.CHOICE
+syn keyword baanConstant F.TO.FIELD
+syn keyword baanConstant F.TO.FORM
+syn keyword baanConstant F.ZOOM
+syn keyword baanConstant FALSE
+syn keyword baanConstant FC.CURR.FIELD
+syn keyword baanConstant FC.FIRST.FIELD
+syn keyword baanConstant FC.FIRST.FORM
+syn keyword baanConstant FC.FRM.WINDOW
+syn keyword baanConstant FC.GET.HEIGHT.FORM
+syn keyword baanConstant FC.GET.SELECTED.FIELD
+syn keyword baanConstant FC.GET.SELECTED.OCC
+syn keyword baanConstant FC.GET.WIDTH.FORM
+syn keyword baanConstant FC.GOTO.FIELD
+syn keyword baanConstant FC.GOTO.FIRST.FLD
+syn keyword baanConstant FC.GOTO.FIRST.FORM
+syn keyword baanConstant FC.GOTO.FORM
+syn keyword baanConstant FC.GOTO.NEXT.FLD
+syn keyword baanConstant FC.GOTO.NEXT.FORM
+syn keyword baanConstant FC.GRA.WINDOW
+syn keyword baanConstant FC.KYS.WINDOW
+syn keyword baanConstant FC.LAST.FIELD
+syn keyword baanConstant FC.LAST.FORM
+syn keyword baanConstant FC.MAKE.FLD.CURR
+syn keyword baanConstant FC.MOVE.FORM
+syn keyword baanConstant FC.NEXT.FIELD
+syn keyword baanConstant FC.NEXT.FORM
+syn keyword baanConstant FC.OPT.WINDOW
+syn keyword baanConstant FC.PREV.FIELD
+syn keyword baanConstant FC.PREV.FORM
+syn keyword baanConstant FC.RESIZE.FORM
+syn keyword baanConstant FC.REST.FRM.ST
+syn keyword baanConstant FC.RPT.WINDOW
+syn keyword baanConstant FC.SAVE.FRM.ST
+syn keyword baanConstant FC.SAVE.SELECT
+syn keyword baanConstant FC.SEL.FIELD
+syn keyword baanConstant FC.SEL.FORM
+syn keyword baanConstant FC.SWITCH.ORDER.OFF
+syn keyword baanConstant FC.SWITCH.ORDER.ON
+syn keyword baanConstant FC.TEXT.MAIL.WINDOW
+syn keyword baanConstant FIND.DATA
+syn keyword baanConstant FIRST.FRM
+syn keyword baanConstant FIRST.SET
+syn keyword baanConstant FIRST.VIEW
+syn keyword baanConstant FLDCHANGED
+syn keyword baanConstant FLDKEYPRESS
+syn keyword baanConstant FORM.TAB.CHANGE
+syn keyword baanConstant GET.DEFAULTS
+syn keyword baanConstant GETS_ALL_CHARS
+syn keyword baanConstant GETS_NORMAL
+syn keyword baanConstant GETS_SKIP_ALL
+syn keyword baanConstant GLOBAL.COPY
+syn keyword baanConstant GLOBAL.DELETE
+syn keyword baanConstant HELP_ABOUT
+syn keyword baanConstant HELP_ARG_LEN
+syn keyword baanConstant HELP_BITMAP
+syn keyword baanConstant HELP_BLOCK
+syn keyword baanConstant HELP_CHOICE
+syn keyword baanConstant HELP_CLIENT_IMAGE_NOTLOADED
+syn keyword baanConstant HELP_CLIENT_IMAGE_READY
+syn keyword baanConstant HELP_CLIENT_NEW_ARGS
+syn keyword baanConstant HELP_CLIENT_NEW_INFO
+syn keyword baanConstant HELP_COMMANDS
+syn keyword baanConstant HELP_DOMAIN
+syn keyword baanConstant HELP_ENUM
+syn keyword baanConstant HELP_EXTERNAL
+syn keyword baanConstant HELP_FORM
+syn keyword baanConstant HELP_FORMFIELD
+syn keyword baanConstant HELP_FROM_INDEX
+syn keyword baanConstant HELP_GEM
+syn keyword baanConstant HELP_GIF
+syn keyword baanConstant HELP_GLOSSARY
+syn keyword baanConstant HELP_GOTO
+syn keyword baanConstant HELP_GOTOBLOCK
+syn keyword baanConstant HELP_GO_SYS_DEPENDANT
+syn keyword baanConstant HELP_HPGL
+syn keyword baanConstant HELP_IFUNCTION
+syn keyword baanConstant HELP_IFUNCTION2
+syn keyword baanConstant HELP_IFUNCTION3
+syn keyword baanConstant HELP_INDEX
+syn keyword baanConstant HELP_LABEL
+syn keyword baanConstant HELP_LABELHELP
+syn keyword baanConstant HELP_MARK
+syn keyword baanConstant HELP_MAXTYPE
+syn keyword baanConstant HELP_MAX_ARGS
+syn keyword baanConstant HELP_MAX_HIST
+syn keyword baanConstant HELP_MAX_IMAGE
+syn keyword baanConstant HELP_MENU
+syn keyword baanConstant HELP_MESSAGE
+syn keyword baanConstant HELP_ORGANIZER
+syn keyword baanConstant HELP_POPUP_TYPE
+syn keyword baanConstant HELP_POSTSCRIPT
+syn keyword baanConstant HELP_QUESTION
+syn keyword baanConstant HELP_REFERENCE
+syn keyword baanConstant HELP_RELATION
+syn keyword baanConstant HELP_RELATION2
+syn keyword baanConstant HELP_RELATION_DIAGRAM
+syn keyword baanConstant HELP_REPORT
+syn keyword baanConstant HELP_SESSION
+syn keyword baanConstant HELP_STARTSESSION
+syn keyword baanConstant HELP_STARTSHELL
+syn keyword baanConstant HELP_SUBFUNCTION
+syn keyword baanConstant HELP_SYSTEM_DEPENDANT
+syn keyword baanConstant HELP_TABLE
+syn keyword baanConstant HELP_TABLEFIELD
+syn keyword baanConstant HELP_USING
+syn keyword baanConstant HOOK_IS_APPLICABLE
+syn keyword baanConstant HOOK_IS_DERIVED
+syn keyword baanConstant HOOK_IS_MANDATORY
+syn keyword baanConstant HOOK_IS_READONLY
+syn keyword baanConstant HOOK_IS_VALID
+syn keyword baanConstant HOOK_UPDATE
+syn keyword baanConstant INCLUDE_ENUMS
+syn keyword baanConstant INTERRUPT
+syn keyword baanConstant LAST.FRM
+syn keyword baanConstant LAST.SET
+syn keyword baanConstant LAST.VIEW
+syn keyword baanConstant MARK.ABORT
+syn keyword baanConstant MARK.DELETE
+syn keyword baanConstant MARK.GOTO.NEXT
+syn keyword baanConstant MARK.GOTO.PREV
+syn keyword baanConstant MARK.OCCUR
+syn keyword baanConstant MARK.SHOW.OPT
+syn keyword baanConstant MARK.TAG
+syn keyword baanConstant MARK.TAG.ALL
+syn keyword baanConstant MARK.TO.CHOICE
+syn keyword baanConstant MARK.UNTAG
+syn keyword baanConstant MARK.UNTAG.ALL
+syn keyword baanConstant MARKONE.ACCEPT
+syn keyword baanConstant MSG.ALL
+syn keyword baanConstant MSG.ERROR
+syn keyword baanConstant MSG.INFO
+syn keyword baanConstant MSG.WARNING
+syn keyword baanConstant MSG.SUCCESS
+syn keyword baanConstant MODAL
+syn keyword baanConstant MODAL_OVERVIEW
+syn keyword baanConstant MODELESS
+syn keyword baanConstant MODELESS_ALWAYS
+syn keyword baanConstant MODIFY.SET
+syn keyword baanConstant MULTI_OCC
+syn keyword baanConstant NEXT.FRM
+syn keyword baanConstant NEXT.SET
+syn keyword baanConstant NEXT.VIEW
+syn keyword baanConstant NO.PERM.DEFINED
+syn keyword baanConstant NO.PERMISSION
+syn keyword baanConstant NO.RESTRICTION
+syn keyword baanConstant NO.ROLLBACK
+syn keyword baanConstant OLESVR.INIT
+syn keyword baanConstant OLESVR.OBJECT.CREATED
+syn keyword baanConstant OLESVR.OBJECT.DESTROYED
+syn keyword baanConstant OS_OS400
+syn keyword baanConstant OS_UNIX
+syn keyword baanConstant OS_WINDOWS_95
+syn keyword baanConstant OS_WINDOWS_NT
+syn keyword baanConstant PERM.DELETE
+syn keyword baanConstant PERM.MODIFY
+syn keyword baanConstant PERM.READ
+syn keyword baanConstant PERM.UNKNOWN
+syn keyword baanConstant PERM.WRITE
+syn keyword baanConstant PI
+syn keyword baanConstant PREV.FRM
+syn keyword baanConstant PREV.SET
+syn keyword baanConstant PREV.VIEW
+syn keyword baanConstant PRINT.DATA
+syn keyword baanConstant PROGRESS.BAR
+syn keyword baanConstant PROGRESS.CANCEL
+syn keyword baanConstant PROGRESS.NOAUTODESTROY
+syn keyword baanConstant PROGRESS.RESIZEABLE
+syn keyword baanConstant PROGRESS.STOP
+syn keyword baanConstant PROGRESS.TIMER
+syn keyword baanConstant PRTCL
+syn keyword baanConstant PRTCL.END.TRACE
+syn keyword baanConstant PRTCL.EXECUTE
+syn keyword baanConstant PRTCL.FIELD.OPTION
+syn keyword baanConstant PRTCL.GET.DATA
+syn keyword baanConstant PRTCL.GET.DATA.ANSWER
+syn keyword baanConstant PRTCL.MASK
+syn keyword baanConstant PRTCL.PUT.DATA
+syn keyword baanConstant PRTCL.START.TRACE
+syn keyword baanConstant PRTCL.UNKNOWN
+syn keyword baanConstant PSMAXSIZE
+syn keyword baanConstant QSS.EQLE
+syn keyword baanConstant QSS.EQUAL
+syn keyword baanConstant QSS.FIRST
+syn keyword baanConstant QSS.GT
+syn keyword baanConstant QSS.GTEQ
+syn keyword baanConstant QSS.LAST
+syn keyword baanConstant QSS.LESS
+syn keyword baanConstant QSS.LOOKUP.FOR.STRUCT
+syn keyword baanConstant QSS.NE
+syn keyword baanConstant QSS.SRC.DUPL.ALLOWED
+syn keyword baanConstant QSS.SRC.IS.SORTED
+syn keyword baanConstant RDI.CENTER
+syn keyword baanConstant RDI.LEFT
+syn keyword baanConstant RDI.LOWER
+syn keyword baanConstant RDI.NONE
+syn keyword baanConstant RDI.RIGHT
+syn keyword baanConstant RDI.UPPER
+syn keyword baanConstant RECOVER.SET
+syn keyword baanConstant RESIZE.FRM
+syn keyword baanConstant RESTART.INPUT
+syn keyword baanConstant ROTATE.CURR
+syn keyword baanConstant RP_IPCINFO_FLAG
+syn keyword baanConstant RP_INPROC
+syn keyword baanConstant RP_NOWAIT
+syn keyword baanConstant RP_NOWAIT_WITH_EVENT
+syn keyword baanConstant RP_WAIT
+syn keyword baanConstant RUN.JOB
+syn keyword baanConstant SAVE.DEFAULTS
+syn keyword baanConstant SBADJUST
+syn keyword baanConstant SBCONFIRM
+syn keyword baanConstant SBDOWN
+syn keyword baanConstant SBEND
+syn keyword baanConstant SBHOME
+syn keyword baanConstant SBMOVE
+syn keyword baanConstant SBPGDOWN
+syn keyword baanConstant SBPGUP
+syn keyword baanConstant SBPRESS
+syn keyword baanConstant SBRELEASE
+syn keyword baanConstant SBUP
+syn keyword baanConstant SEQ_F_R_LCK
+syn keyword baanConstant SEQ_F_W_LCK
+syn keyword baanConstant SEQ_R_LCK
+syn keyword baanConstant SEQ_W_LCK
+syn keyword baanConstant SESSION_NO_PERMISSION
+syn keyword baanConstant SESSION_DELETE_PERMISSION
+syn keyword baanConstant SESSION_INSERT_PERMISSION
+syn keyword baanConstant SESSION_MODIFY_PERMISSION
+syn keyword baanConstant SESSION_DISPLAY_PERMISSION
+syn keyword baanConstant SESSION_PRINT_PERMISSION
+syn keyword baanConstant SINGLE_OCC
+syn keyword baanConstant ST.ADD.SET
+syn keyword baanConstant ST.BITSET
+syn keyword baanConstant ST.BITSET.ZOOM
+syn keyword baanConstant ST.BRP.RUN
+syn keyword baanConstant ST.BRP.SEND
+syn keyword baanConstant ST.DEF.FIND
+syn keyword baanConstant ST.DOUBLE
+syn keyword baanConstant ST.DOUBLE.ZOOM
+syn keyword baanConstant ST.DUPL.OCCUR
+syn keyword baanConstant ST.ENUM
+syn keyword baanConstant ST.ENUM.ZOOM
+syn keyword baanConstant ST.FIND.DATA
+syn keyword baanConstant ST.FIRST.SET
+syn keyword baanConstant ST.LAST.SET
+syn keyword baanConstant ST.MARK.DELETE
+syn keyword baanConstant ST.MARK.OCCUR
+syn keyword baanConstant ST.MB
+syn keyword baanConstant ST.MB.ZOOM
+syn keyword baanConstant ST.MODIFY.SET
+syn keyword baanConstant ST.MULTI.2
+syn keyword baanConstant ST.MULTI.3
+syn keyword baanConstant ST.NUM.ZOOM
+syn keyword baanConstant ST.NUMERIC
+syn keyword baanConstant ST.PROG.BUSY
+syn keyword baanConstant ST.SINGLE.1
+syn keyword baanConstant ST.SINGLE.3
+syn keyword baanConstant ST.SINGLE.4
+syn keyword baanConstant ST.SORT
+syn keyword baanConstant ST.STRING
+syn keyword baanConstant ST.STRING.ZOOM
+syn keyword baanConstant ST.TEXT
+syn keyword baanConstant ST.TEXT.ZOOM
+syn keyword baanConstant ST.TIME
+syn keyword baanConstant ST.TIME.ZOOM
+syn keyword baanConstant ST.UPDATE.DB
+syn keyword baanConstant ST.ZOOM
+syn keyword baanConstant START.CHART
+syn keyword baanConstant START.QUERY
+syn keyword baanConstant START.SET
+syn keyword baanConstant STAT_EXECUTABLE
+syn keyword baanConstant STAT_READABLE
+syn keyword baanConstant STAT_WRITEABLE
+syn keyword baanConstant SUBDAL
+syn keyword baanConstant TDIR
+syn keyword baanConstant TEXT.MANAGER
+syn keyword baanConstant TFILE
+syn keyword baanConstant TRUE
+syn keyword baanConstant UPDATE.DB
+syn keyword baanConstant USER.0
+syn keyword baanConstant USER.1
+syn keyword baanConstant USER.2
+syn keyword baanConstant USER.3
+syn keyword baanConstant USER.4
+syn keyword baanConstant USER.5
+syn keyword baanConstant USER.6
+syn keyword baanConstant USER.7
+syn keyword baanConstant USER.8
+syn keyword baanConstant USER.9
+syn keyword baanConstant WINDOW.DIALOG
+syn keyword baanConstant WINDOW.LIST
+syn keyword baanConstant WINDOW.MMTCONTROLLER
+syn keyword baanConstant WINDOW.MMTSATELLITE
+syn keyword baanConstant WINDOW.MODAL.MENU
+syn keyword baanConstant WINDOW.MODELESS.MENU
+syn keyword baanConstant WINDOW.NONE
+syn keyword baanConstant WINDOW.PARAMETER
+syn keyword baanConstant WINDOW.SYNCHRONIZED
+syn keyword baanConstant WINDOW.WIZARD
+syn keyword baanConstant WITH.ROLLBACK
+syn keyword baanConstant WU.DLL
+syn keyword baanConstant WU.DOMA
+syn keyword baanConstant WU.FLDN
+syn keyword baanConstant WU.LANGOPT
+syn keyword baanConstant WU.MESS
+syn keyword baanConstant WU.QUES
+syn keyword baanConstant WU.SESS
+syn keyword baanConstant WU.TABL
+syn keyword baanConstant XML_DATA
+syn keyword baanConstant XML_DTD
+syn keyword baanConstant XML_ELEMENT
+syn keyword baanConstant XML_PI
+syn keyword baanConstant Z.AUTOACCEPT
+syn keyword baanConstant Z.AUTOZOOM
+syn keyword baanConstant Z.MENU
+syn keyword baanConstant Z.SESSION
+syn keyword baanConstant ZOOM
+
+
+"************************************* 4GL ************************************"
+" Program section
+syn match baan4glh "declaration:"
+syn match baan4glh "functions:"
+syn match baan4glh "before\.program:"
+syn match baan4glh "on\.error:"
+syn match baan4glh "after\.program:"
+syn match baan4glh "after\.update.db.commit:"
+syn match baan4glh "before\.display\.object:"
+
+" Form section
+syn match baan4glh "form\.\d\+:"
+syn match baan4glh "form\.all:"
+syn match baan4glh "form\.other:"
+syn match baan4gl "init\.form:"
+syn match baan4gl "before\.form:"
+syn match baan4gl "after\.form:"
+
+" Choice section
+syn match baan4glh "choice\.start\.set:"
+syn match baan4glh "choice\.first\.view:"
+syn match baan4glh "choice\.next\.view:"
+syn match baan4glh "choice\.prev\.view:"
+syn match baan4glh "choice\.last\.view:"
+syn match baan4glh "choice\.def\.find:"
+syn match baan4glh "choice\.find\.data:"
+syn match baan4glh "choice\.first\.set:"
+syn match baan4glh "choice\.next\.set:"
+syn match baan4glh "choice\.display\.set:"
+syn match baan4glh "choice\.prev\.set:"
+syn match baan4glh "choice\.rotate\.curr:"
+syn match baan4glh "choice\.last\.set:"
+syn match baan4glh "choice\.add\.set:"
+syn match baan4glh "choice\.update\.db:"
+syn match baan4glh "choice\.dupl\.occur:"
+syn match baan4glh "choice\.recover\.set:"
+syn match baan4glh "choice\.mark\.delete:"
+syn match baan4glh "choice\.mark\.occur:"
+syn match baan4glh "choice\.change\.order:"
+syn match baan4glh "choice\.modify\.set:"
+syn match baan4glh "choice\.restart\.input:"
+syn match baan4glh "choice\.print\.data:"
+syn match baan4glh "choice\.create\.job:"
+syn match baan4glh "choice\.form\.tab\.change:"
+syn match baan4glh "choice\.first\.frm:"
+syn match baan4glh "choice\.next\.frm:"
+syn match baan4glh "choice\.prev\.frm:"
+syn match baan4glh "choice\.last\.frm:"
+syn match baan4glh "choice\.resize\.frm:"
+syn match baan4glh "choice\.cmd\.options:"
+syn match baan4glh "choice\.zoom:"
+syn match baan4glh "choice\.interrupt:"
+syn match baan4glh "choice\.end\.program:"
+syn match baan4glh "choice\.abort\.program:"
+syn match baan4glh "choice\.cont\.process:"
+syn match baan4glh "choice\.text\.manager:"
+syn match baan4glh "choice\.run\.job:"
+syn match baan4glh "choice\.global\.delete:"
+syn match baan4glh "choice\.global\.copy:"
+syn match baan4glh "choice\.save\.defaults"
+syn match baan4glh "choice\.get\.defaults:"
+syn match baan4glh "choice\.start\.chart:"
+syn match baan4glh "choice\.start\.query:"
+syn match baan4glh "choice\.user\.\d:"
+syn match baan4glh "choice\.ask\.helpinfo:"
+syn match baan4glh "choice\.calculator:"
+syn match baan4glh "choice\.calendar:"
+syn match baan4glh "choice\.bms:"
+syn match baan4glh "choice\.cmd\.whats\.this:"
+syn match baan4glh "choice\.help\.index:"
+syn match baan4gl "before\.choice:"
+syn match baan4gl "on\.choice:"
+syn match baan4gl "after\.choice:"
+
+" Field section
+syn match baan4glh "field\.\l\{5}\d\{3}\.\l\{4,8}\.\=c\=:"
+syn match baan4glh "field\.e\..\+:"
+syn match baan4glh "field\.all:"
+syn match baan4glh "field\.other:"
+syn match baan4gl "init\.field:"
+syn match baan4gl "before\.field:"
+syn match baan4gl "before\.input:"
+syn match baan4gl "before\.display:"
+syn match baan4gl "selection\.filter:"
+syn match baan4gl "before\.zoom:"
+syn match baan4gl "before\.checks:"
+syn match baan4gl "domain\.error:"
+syn match baan4gl "ref\.input:"
+syn match baan4gl "ref\.display:"
+syn match baan4gl "check\.input:"
+syn match baan4gl "on\.input:"
+syn match baan4gl "when\.field\.changes:"
+syn match baan4gl "after\.zoom:"
+syn match baan4gl "after\.input:"
+syn match baan4gl "after\.display:"
+syn match baan4gl "after\.field:"
+
+" Group section
+syn match baan4glh "group\.\d\+:"
+syn match baan4gl "init\.group:"
+syn match baan4gl "before\.group:"
+syn match baan4gl "after\.group:"
+
+" Zoom section
+syn match baan4glh "zoom\.from\..\+:"
+syn match baan4gl "on\.entry:"
+syn match baan4gl "on\.exit:"
+
+" Main table section
+syn match baan4glh "main\.table\.io:"
+syn match baan4gl "before\.read:"
+syn match baan4gl "after\.read:"
+syn match baan4gl "before\.write:"
+syn match baan4gl "after\.write:"
+syn match baan4gl "after\.skip\.write:"
+syn match baan4gl "before\.rewrite:"
+syn match baan4gl "after\.rewrite:"
+syn match baan4gl "after\.skip\.rewrite:"
+syn match baan4gl "before\.delete:"
+syn match baan4gl "after\.delete:"
+syn match baan4gl "after\.skip\.delete:"
+syn match baan4gl "read\.view:"
+
+"**************************** Dal Hooks ********************************
+syn keyword baanDalHook after.abort.transaction after.commit.transaction after.destroy.object
+syn keyword baanDalHook after.change.object after.get.object after.new.object after.save.object before.change.object
+syn keyword baanDalHook before.destroy.object before.get.object before.new.object before.open.object.set before.save.object
+syn keyword baanDalHook method.is.allowed set.object.defaults
+
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.check"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.is.valid"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.is.applicable"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.is.never.applicable"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.is.derived"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.is.readonly"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.is.mandatory"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.make.valid"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.update"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\..*\.is.applicable"
+
+
+"number without a dot."
+syn match baanNumber "\<\-\=\d\+\>"
+"number with dot"
+syn match baanNumber "\<\-\=\d\+\.\d*\>"
+"number starting with a dot"
+syn match baanNumber "\<\-\=\.\d\+\>"
+
+" String Error does not work correct with vim 6.0
+syn match baanOpenStringError +^[^^"]+ display contained excludenl
+syn region baanString start=+"+ skip=+""+ end=+"+ end=+^[^^]+ contains=baanOpenStringError keepend
+
+" Comment"
+syn match baanComment "|$"
+syn match baanComment "|.$"
+syn match baanComment "|[^ ]"
+syn match baanComment "|[^#].*[^ ]"
+syn match baanCommenth "^|#lra.*$"
+syn match baanCommenth "^|#mdm.*$"
+syn match baanCommenth "^|#[0-9][0-9][0-9][0-9][0-9].*$"
+syn match baanCommenth "^|#N\=o\=Include.*$"
+" Oldcode"
+syn match baanUncommented "^|[^*#].*[^ ]"
+" DLL section
+" SpaceError"
+syn match baanSpaces " "
+syn match baanSpaceError "\s*$"
+syn match baanSpaceError " "
+
+" Baan error"
+
+if exists("baan_code_stds") && baan_code_stds
+syn match BaanError "^\s*i\..*=\s*\(\k\|\"\)*\s*$" "assignment of an input var"
+syn match BaanError "^\s*ref.*\s[ilse]\..*$" " ref variable defined with i, l, e and s"
+syn match BaanError "^\s*const.*\s[olse]\..*$" " const variable defined with o, l, e and s"
+syn match BaanError "^\s*static.*\s\(i\|g\|l\|o\|io\)\..*$" " static defined without s."
+syn match BaanError "^\s*\(domain\s\|long\s\|string\s\).*\so\.\k*[,)]" " ref variable without ref"
+syn match BaanError "^\s*\(domain\s\|long\s\|string\s\).*\se\.\k*[,)]" " 'e.' variable without extern"
+syn match BaanError "^\s*i\..*,\s*|\s*ref.*$" "
+endif
+
+"**************************** bshell functions ********************************
+syn match baanBshell "\<shiftl\$"
+syn match baanBshell "\<shiftr\$"
+syn match baanBshell "\<shiftc\$"
+syn match baanBshell "\<strip\$"
+syn match baanBshell "\<tolower\$"
+syn match baanBshell "\<toupper\$"
+syn keyword baanBshell isdigit
+syn keyword baanBshell isspace
+syn match baanBshell "\<chr\$"
+syn keyword baanBshell len.in.bytes
+syn keyword baanBshell rpos
+syn match baanBshell "\<sprintf\$"
+syn match baanBshell "\<vsprintf\$"
+syn match baanBshell "\<concat\$"
+syn keyword baanBshell gregdate
+syn match baanBshell "\<w.to.dat\$"
+syn keyword baanBshell ttyname
+syn match baanBshell "\<ttyname\$"
+syn match baanBshell "\<creat.tmp.file\$"
+syn match baanBshell "\<string.set\$"
+syn keyword baanBshell string.scan
+syn keyword baanBshell not.fixed
+syn keyword baanBshell dummy
+syn keyword baanBshell alloc.mem
+syn keyword baanBshell free.mem
+syn keyword baanBshell copy.mem
+syn keyword baanBshell cmp.mem
+syn keyword baanBshell set.mem
+syn keyword baanBshell num.to.date
+syn keyword baanBshell date.to.num
+syn keyword baanBshell num.to.week
+syn keyword baanBshell week.to.num
+syn match baanBshell "\<num.to.date\$"
+syn keyword baanBshell expr.compile
+syn keyword baanBshell l.expr
+syn keyword baanBshell d.expr
+syn match baanBshell "\<s.expr\$"
+syn keyword baanBshell expr.free
+syn keyword baanBshell compnr.check
+syn match baanBshell "\<bse.dir\$"
+syn match baanBshell "\<bse.tmp.dir\$"
+syn match baanBshell "\<bse.release\$"
+syn match baanBshell "\<bse.portset\$"
+syn match baanBshell "\<getenv\$"
+syn keyword baanBshell base.extern
+syn keyword baanBshell at.base
+syn keyword baanBshell get.compnr
+syn keyword baanBshell base.next
+syn keyword baanBshell get.argc
+syn keyword baanBshell get.long.arg
+syn keyword baanBshell get.double.arg
+syn keyword baanBshell get.string.arg
+syn keyword baanBshell get.arg.type
+syn keyword baanBshell put.long.arg
+syn keyword baanBshell put.double.arg
+syn keyword baanBshell put.string.arg
+syn keyword baanBshell setenv
+syn keyword baanBshell cmp.password
+syn match baanBshell "\<crypt.password\$"
+syn keyword baanBshell is.password.ok
+syn keyword baanBshell block.cipher.encrypt
+syn keyword baanBshell block.cipher.decrypt
+syn keyword baanBshell encrypt.user.password
+syn keyword baanBshell verify.user.password
+syn keyword baanBshell asm.put.instance.id
+syn match baanBshell "\<date.to.inputstr\$"
+syn keyword baanBshell inputstr.to.date
+syn match baanBshell "\<hostname\$"
+syn keyword baanBshell base64.encode
+syn keyword baanBshell base64.decode
+syn keyword baanBshell sha.create
+syn keyword baanBshell sha.initialize
+syn keyword baanBshell sha.add.data
+syn keyword baanBshell sha.compute.output
+syn keyword baanBshell sha.destroy
+syn match baanBshell "\<uuid.generate\$"
+syn match baanBshell "\<uuid.format\$"
+syn keyword baanBshell resolve.labels.by.lookupkey
+syn keyword baanBshell resolve.labels.by.codepair
+syn keyword baanBshell lookupkey.hash
+syn keyword baanBshell lookupkey.unhash
+syn match baanBshell "\<mb.long.to.str\$"
+syn keyword baanBshell mb.width
+syn match baanBshell "\<mb.localename\$"
+syn match baanBshell "\<mb.tss.clean\$"
+syn match baanBshell "\<mb.ext.clean\$"
+syn match baanBshell "\<mb.import\$"
+syn match baanBshell "\<mb.export\$"
+syn keyword baanBshell mb.import.raw
+syn keyword baanBshell mb.export.raw
+syn keyword baanBshell uni.import
+syn keyword baanBshell uni.export
+syn keyword baanBshell utf8.import
+syn keyword baanBshell utf8.export
+syn keyword baanBshell mb.strpos
+syn keyword baanBshell mb.scrpos
+syn keyword baanBshell mb.char
+syn keyword baanBshell mb.type
+syn match baanBshell "\<mb.cast\$"
+syn match baanBshell "\<mb.cast.to.str\$"
+syn keyword baanBshell mb.display
+syn keyword baanBshell mb.isbidi
+syn keyword baanBshell mb.isbidi.language
+syn match baanBshell "\<mb.rev\$"
+syn keyword baanBshell mb.hasbidi
+syn keyword baanBshell mb.kb.lang
+syn keyword baanBshell mb.locale.info
+syn keyword baanBshell mb.locale.enumerate
+syn keyword baanBshell mb.nsets
+syn keyword baanBshell mb.set.info
+syn keyword baanBshell mb.char.info
+syn keyword baanBshell key.compare
+syn keyword baanBshell set.fields.default
+syn keyword baanBshell table.round
+syn keyword baanBshell halfadj
+syn keyword baanBshell round
+syn keyword baanBshell format.round
+syn match baanBshell "\<edit\$"
+syn match baanBshell "\<str\$"
+syn keyword baanBshell lval
+syn keyword baanBshell acos
+syn keyword baanBshell asin
+syn keyword baanBshell atan
+syn keyword baanBshell atan2
+syn keyword baanBshell cosh
+syn keyword baanBshell sinh
+syn keyword baanBshell tanh
+syn keyword baanBshell log10
+syn keyword baanBshell sqrt
+syn keyword baanBshell lpow
+syn keyword baanBshell random
+syn keyword baanBshell srand
+syn keyword baanBshell rnd.init
+syn keyword baanBshell rnd.i
+syn keyword baanBshell rnd.d
+syn keyword baanBshell double.cmp
+syn match baanBshell "\<tab\$"
+syn keyword baanBshell aux.open
+syn keyword baanBshell aux.print
+syn keyword baanBshell aux.close
+syn keyword baanBshell refresh
+syn keyword baanBshell cl.screen
+syn match baanBshell "\<delch\$"
+syn match baanBshell "\<deleteln\$"
+syn match baanBshell "\<insch\$"
+syn match baanBshell "\<insertln\$"
+syn keyword baanBshell change.window
+syn keyword baanBshell data.input
+syn keyword baanBshell del.window
+syn keyword baanBshell frame.window
+syn keyword baanBshell new.window
+syn keyword baanBshell window.size
+syn keyword baanBshell move.window
+syn keyword baanBshell resize.window
+syn keyword baanBshell get.row
+syn keyword baanBshell get.col
+syn keyword baanBshell get.cp
+syn keyword baanBshell map.window
+syn keyword baanBshell unmap.window
+syn keyword baanBshell set.bg.color
+syn keyword baanBshell set.fg.color
+syn keyword baanBshell no.scroll
+syn keyword baanBshell scroll
+syn keyword baanBshell cursor.on
+syn keyword baanBshell cursor.off
+syn keyword baanBshell sub.window
+syn keyword baanBshell current.window
+syn match baanBshell "\<keyin\$"
+syn keyword baanBshell dump.screen
+syn keyword baanBshell first.window
+syn keyword baanBshell last.window
+syn keyword baanBshell free.window
+syn keyword baanBshell #input
+syn keyword baanBshell #output
+syn keyword baanBshell wrebuild
+syn keyword baanBshell select.event.input
+syn keyword baanBshell next.event
+syn keyword baanBshell peek.event
+syn keyword baanBshell pending.events
+syn keyword baanBshell send.event
+syn keyword baanBshell send.signal
+syn keyword baanBshell get.display.data
+syn keyword baanBshell open.display
+syn keyword baanBshell link.display
+syn keyword baanBshell link.keyboard
+syn keyword baanBshell unlink.keyboard
+syn keyword baanBshell close.display
+syn keyword baanBshell current.display
+syn keyword baanBshell change.display
+syn keyword baanBshell sync.display.server
+syn match baanBshell "\<get.class.name\$"
+syn keyword baanBshell create.mwindow
+syn keyword baanBshell current.mwindow
+syn keyword baanBshell change.mwindow
+syn keyword baanBshell set.mwindow.title
+syn keyword baanBshell set.mwindow.size
+syn keyword baanBshell set.mwindow.mode
+syn keyword baanBshell get.mwindow.mode
+syn keyword baanBshell destroy.mwindow
+syn keyword baanBshell dialog
+syn keyword baanBshell get.mwindow.size
+syn keyword baanBshell create.bar
+syn keyword baanBshell current.bar
+syn keyword baanBshell change.bar
+syn keyword baanBshell change.bar.attr
+syn keyword baanBshell destroy.bar
+syn keyword baanBshell create.bar.button
+syn keyword baanBshell change.bar.item.attr
+syn keyword baanBshell destroy.bar.item
+syn keyword baanBshell create.object
+syn keyword baanBshell change.object
+syn keyword baanBshell get.object
+syn keyword baanBshell query.object
+syn keyword baanBshell destroy.object
+syn keyword baanBshell get.event.attribute
+syn keyword baanBshell create.sub.object
+syn keyword baanBshell create.sub.object.by.id
+syn keyword baanBshell change.sub.object
+syn keyword baanBshell get.sub.object
+syn keyword baanBshell query.sub.object
+syn keyword baanBshell destroy.sub.object
+syn keyword baanBshell create.arglist
+syn keyword baanBshell add.arg
+syn keyword baanBshell add.ref.arg
+syn keyword baanBshell delete.arg
+syn keyword baanBshell print.arglist
+syn keyword baanBshell destroy.arglist
+syn keyword baanBshell get.object.class.list
+syn keyword baanBshell get.object.class
+syn keyword baanBshell get.sub.object.class
+syn keyword baanBshell get.resource.class
+syn keyword baanBshell get.event.class
+syn keyword baanBshell get.pixmap.info
+syn keyword baanBshell compress.pixmap
+syn keyword baanBshell decompress.pixmap
+syn keyword baanBshell get.window.attrs
+syn keyword baanBshell get.mwindow.attrs
+syn keyword baanBshell create.gc
+syn keyword baanBshell change.gc
+syn keyword baanBshell get.gc
+syn keyword baanBshell destroy.gc
+syn keyword baanBshell load.font
+syn keyword baanBshell query.font
+syn keyword baanBshell free.font
+syn keyword baanBshell get.typeface
+syn keyword baanBshell list.fonts
+syn keyword baanBshell text.extends
+syn keyword baanBshell inherit.object
+syn keyword baanBshell create.gtext
+syn keyword baanBshell create.line
+syn keyword baanBshell create.polyline
+syn keyword baanBshell create.polygon
+syn keyword baanBshell create.rectangle
+syn keyword baanBshell create.arc
+syn keyword baanBshell create.pie
+syn keyword baanBshell create.composite
+syn keyword baanBshell create.image
+syn keyword baanBshell change.gtext
+syn keyword baanBshell change.gtext.label
+syn keyword baanBshell change.line
+syn keyword baanBshell change.polyline
+syn keyword baanBshell change.polygon
+syn keyword baanBshell change.rectangle
+syn keyword baanBshell change.arc
+syn keyword baanBshell change.pie
+syn keyword baanBshell get.gtext
+syn keyword baanBshell get.gtext.label
+syn keyword baanBshell get.line
+syn keyword baanBshell get.polyline
+syn keyword baanBshell get.polygon
+syn keyword baanBshell get.rectangle
+syn keyword baanBshell get.arc
+syn keyword baanBshell get.pie
+syn keyword baanBshell get.composite
+syn keyword baanBshell get.image
+syn keyword baanBshell move.gpart
+syn keyword baanBshell shift.gpart
+syn keyword baanBshell which.gpart
+syn keyword baanBshell which.gparts
+syn keyword baanBshell change.gpart.gc
+syn keyword baanBshell get.gpart.gc
+syn keyword baanBshell destroy.gpart
+syn keyword baanBshell destroy.composite
+syn keyword baanBshell first.gpart
+syn keyword baanBshell last.gpart
+syn keyword baanBshell next.gpart
+syn keyword baanBshell prev.gpart
+syn keyword baanBshell change.gpart.attr
+syn keyword baanBshell get.gpart.attr
+syn keyword baanBshell get.gpart
+syn keyword baanBshell get.gpart.box
+syn keyword baanBshell resize.gpart.box
+syn keyword baanBshell move.gpart.box
+syn keyword baanBshell activate
+syn keyword baanBshell reactivate
+syn keyword baanBshell act.and.sleep
+syn keyword baanBshell sleep
+syn match baanBshell "\<receive.bucket\$"
+syn keyword baanBshell send.bucket
+syn keyword baanBshell send.wait
+syn keyword baanBshell bms.send
+syn match baanBshell "\<bms.receive\$"
+syn keyword baanBshell bms.receive.buffer
+syn keyword baanBshell bms.add.mask
+syn keyword baanBshell bms.delete.mask
+syn keyword baanBshell bms.init
+syn keyword baanBshell wait.and.activate
+syn keyword baanBshell abort
+syn keyword baanBshell kill
+syn keyword baanBshell shell
+syn match baanBshell "\<argv\$"
+syn keyword baanBshell argc
+syn keyword baanBshell get.var
+syn keyword baanBshell put.var
+syn keyword baanBshell get.ref.var
+syn keyword baanBshell put.ref.var
+syn keyword baanBshell get.indexed.var
+syn keyword baanBshell put.indexed.var
+syn keyword baanBshell on.change.check
+syn keyword baanBshell off.change.check
+syn keyword baanBshell changed
+syn keyword baanBshell not.curr
+syn keyword baanBshell handle.report.pool
+syn keyword baanBshell get.symbol
+syn keyword baanBshell suspend
+syn keyword baanBshell set.timer
+syn keyword baanBshell set.alarm
+syn keyword baanBshell kill.timer
+syn keyword baanBshell pstat
+syn keyword baanBshell oipstat
+syn keyword baanBshell obj_in_core
+syn keyword baanBshell renice
+syn keyword baanBshell kill.pgrp
+syn keyword baanBshell set.pgrp
+syn keyword baanBshell get.pgrp
+syn keyword baanBshell grab.mwindow
+syn keyword baanBshell signal
+syn keyword baanBshell ptrace
+syn keyword baanBshell link.on.stack
+syn match baanBshell "\<zoom.to\$"
+syn keyword baanBshell retry.point
+syn keyword baanBshell jump.retry.point
+syn keyword baanBshell retry.level
+syn keyword baanBshell get.bw.hostname
+syn keyword baanBshell exit
+syn match baanBshell "\<dte\$"
+syn keyword baanBshell times.on
+syn keyword baanBshell times.off
+syn keyword baanBshell times.close
+syn keyword baanBshell times.total
+syn keyword baanBshell times.lines
+syn keyword baanBshell date.num
+syn keyword baanBshell time.num
+syn keyword baanBshell date.time.utc
+syn keyword baanBshell utc.to.local
+syn keyword baanBshell local.to.utc
+syn keyword baanBshell input.field
+syn keyword baanBshell output.field
+syn keyword baanBshell key.to.option
+syn keyword baanBshell option.to.key
+syn keyword baanBshell get.choice.data
+syn keyword baanBshell reset.zoom.info
+syn keyword baanBshell next.field
+syn keyword baanBshell print.form
+syn keyword baanBshell set.field.blank
+syn keyword baanBshell read.form
+syn keyword baanBshell read.fast.form
+syn keyword baanBshell change.form.field
+syn keyword baanBshell copy.form.field
+syn keyword baanBshell delete.form.field
+syn keyword baanBshell iget.field.attr
+syn keyword baanBshell sget.field.attr
+syn keyword baanBshell menu.control
+syn keyword baanBshell wait
+syn match baanBshell "\<bms.peek\$"
+syn keyword baanBshell create.menu
+syn keyword baanBshell refresh.bar.menu
+syn keyword baanBshell load.menu
+syn keyword baanBshell current.menu
+syn keyword baanBshell change.menu
+syn keyword baanBshell popup.menu
+syn keyword baanBshell set.menu
+syn keyword baanBshell change.menu.attr
+syn keyword baanBshell destroy.menu
+syn keyword baanBshell create.menu.button
+syn keyword baanBshell create.cascade.button
+syn keyword baanBshell change.menu.item.name
+syn keyword baanBshell change.cascade.menu
+syn keyword baanBshell change.menu.item.attr
+syn keyword baanBshell get.cascade.menu
+syn keyword baanBshell destroy.menu.item
+syn keyword baanBshell form.control
+syn match baanBshell "\<form.text\$"
+syn keyword baanBshell status.on
+syn keyword baanBshell status.off
+syn keyword baanBshell status.mess
+syn keyword baanBshell status.field
+syn match baanBshell "\<enum.descr\$"
+syn keyword baanBshell mark.occurrence
+syn keyword baanBshell start.mark
+syn keyword baanBshell end.mark
+syn keyword baanBshell get.attrs
+syn keyword baanBshell put.attrs
+syn keyword baanBshell act.zoom
+syn keyword baanBshell init.first
+syn keyword baanBshell init.last
+syn keyword baanBshell init.next
+syn keyword baanBshell init.prev
+syn keyword baanBshell set.max
+syn keyword baanBshell set.min
+syn keyword baanBshell set.fmax
+syn keyword baanBshell set.fmin
+syn keyword baanBshell print.const
+syn keyword baanBshell is.option.on
+syn keyword baanBshell brp.build
+syn keyword baanBshell brp.field
+syn keyword baanBshell pathname
+syn keyword baanBshell file.stat
+syn keyword baanBshell file.cp
+syn keyword baanBshell file.mv
+syn keyword baanBshell file.rm
+syn keyword baanBshell file.chown
+syn keyword baanBshell file.chmod
+syn keyword baanBshell stat.info
+syn keyword baanBshell disk.info
+syn keyword baanBshell mkdir
+syn keyword baanBshell rmdir
+syn keyword baanBshell open.message
+syn keyword baanBshell send.message
+syn keyword baanBshell recv.message
+syn keyword baanBshell close.message
+syn keyword baanBshell store.byte
+syn keyword baanBshell store.short
+syn keyword baanBshell store.long
+syn keyword baanBshell store.float
+syn keyword baanBshell store.double
+syn keyword baanBshell load.byte
+syn keyword baanBshell load.short
+syn keyword baanBshell load.long
+syn keyword baanBshell load.float
+syn keyword baanBshell load.double
+syn keyword baanBshell bit.and
+syn keyword baanBshell bit.or
+syn keyword baanBshell bit.exor
+syn keyword baanBshell bit.inv
+syn keyword baanBshell bit.in
+syn keyword baanBshell bit.shiftl
+syn keyword baanBshell bit.shiftr
+syn keyword baanBshell check.domain
+syn keyword baanBshell check.all.domain
+syn keyword baanBshell seq.clearerr
+syn keyword baanBshell seq.eof
+syn keyword baanBshell seq.error
+syn keyword baanBshell seq.open
+syn keyword baanBshell seq.close
+syn keyword baanBshell seq.flush
+syn keyword baanBshell seq.rewind
+syn keyword baanBshell seq.tell
+syn keyword baanBshell seq.read
+syn keyword baanBshell seq.write
+syn match baanBshell "\<seq.getc\$"
+syn match baanBshell "\<seq.putc\$"
+syn match baanBshell "\<seq.ungetc\$"
+syn keyword baanBshell seq.skip
+syn keyword baanBshell seq.seek
+syn keyword baanBshell seq.gets
+syn keyword baanBshell seq.puts
+syn keyword baanBshell seq.unlink
+syn keyword baanBshell seq.spool.line
+syn keyword baanBshell seq.r.long
+syn keyword baanBshell seq.w.long
+syn keyword baanBshell seq.r.short
+syn keyword baanBshell seq.w.short
+syn keyword baanBshell seq.lock
+syn keyword baanBshell seq.unlock
+syn keyword baanBshell seq.islocked
+syn keyword baanBshell pipe.open
+syn keyword baanBshell pipe.close
+syn keyword baanBshell pipe.flush
+syn keyword baanBshell pipe.gets
+syn keyword baanBshell pipe.puts
+syn keyword baanBshell pipe.read
+syn keyword baanBshell pipe.write
+syn keyword baanBshell pipe.clearerr
+syn keyword baanBshell pipe.eof
+syn keyword baanBshell pipe.error
+syn keyword baanBshell sock.connect
+syn keyword baanBshell sock.listen
+syn keyword baanBshell sock.accept
+syn keyword baanBshell sock.recv
+syn keyword baanBshell sock.send
+syn keyword baanBshell sock.flush
+syn keyword baanBshell sock.close
+syn keyword baanBshell sock.inherit
+syn keyword baanBshell sock.clearerr
+syn keyword baanBshell sock.eof
+syn keyword baanBshell sock.error
+syn keyword baanBshell get.system.info
+syn keyword baanBshell get.db.count
+syn keyword baanBshell get.db.system.info
+syn keyword baanBshell path.is.absolute
+syn keyword baanBshell make.path.absolute
+syn keyword baanBshell fstat.info
+syn keyword baanBshell dir.open
+syn keyword baanBshell dir.open.tree
+syn keyword baanBshell dir.close
+syn keyword baanBshell dir.entry
+syn keyword baanBshell dir.rewind
+syn keyword baanBshell ims.clearerr
+syn keyword baanBshell ims.eof
+syn keyword baanBshell ims.error
+syn keyword baanBshell ims.close
+syn keyword baanBshell ims.flush
+syn keyword baanBshell ims.rewind
+syn keyword baanBshell ims.tell
+syn keyword baanBshell ims.read
+syn keyword baanBshell ims.write
+syn match baanBshell "\<ims.getc\$"
+syn match baanBshell "\<ims.putc\$"
+syn keyword baanBshell ims.skip
+syn keyword baanBshell ims.seek
+syn keyword baanBshell ims.gets
+syn keyword baanBshell ims.puts
+syn keyword baanBshell ims.spool.line
+syn keyword baanBshell ims.r.long
+syn keyword baanBshell ims.w.long
+syn keyword baanBshell ims.r.short
+syn keyword baanBshell ims.w.short
+syn keyword baanBshell ims.openfba
+syn keyword baanBshell ims.openvba
+syn keyword baanBshell ims.getproperties
+syn keyword baanBshell ims.setvbaproperties
+syn keyword baanBshell db.get.physical.compnr
+syn keyword baanBshell db.bind
+syn keyword baanBshell db.unbind
+syn keyword baanBshell db.error
+syn keyword baanBshell db.error.message
+syn keyword baanBshell db.detail.error
+syn keyword baanBshell db.first
+syn keyword baanBshell db.last
+syn keyword baanBshell db.next
+syn keyword baanBshell db.prev
+syn keyword baanBshell db.gt
+syn keyword baanBshell db.ge
+syn keyword baanBshell db.eq
+syn keyword baanBshell db.curr
+syn keyword baanBshell db.lt
+syn keyword baanBshell db.le
+syn keyword baanBshell db.delete
+syn keyword baanBshell db.insert
+syn keyword baanBshell db.update
+syn keyword baanBshell db.check.row.changed
+syn keyword baanBshell db.check.row.domains
+syn keyword baanBshell db.check.restricted
+syn keyword baanBshell db.ref.handle.mode
+syn keyword baanBshell db.set.to.default
+syn keyword baanBshell db.create.index
+syn keyword baanBshell db.drop.index
+syn keyword baanBshell db.change.order
+syn keyword baanBshell db.create.table
+syn keyword baanBshell db.clear.table
+syn keyword baanBshell db.drop.table
+syn keyword baanBshell db.lock.table
+syn keyword baanBshell db.table.begin.import
+syn keyword baanBshell db.table.end.import
+syn keyword baanBshell db.table.update.statistics
+syn keyword baanBshell db.indexinfo
+syn keyword baanBshell db.nr.indices
+syn keyword baanBshell db.nr.rows
+syn keyword baanBshell db.row.length
+syn keyword baanBshell db.transaction.is.on
+syn keyword baanBshell commit.transaction
+syn keyword baanBshell set.transaction.readonly
+syn keyword baanBshell abort.transaction
+syn keyword baanBshell db.record.to.columns
+syn keyword baanBshell db.columns.to.record
+syn keyword baanBshell db.schedule
+syn keyword baanBshell db.permission
+syn keyword baanBshell db.set.notransaction
+syn keyword baanBshell db.set.transaction
+syn keyword baanBshell db.set.child.transaction
+syn keyword baanBshell get.db.permission
+syn keyword baanBshell get.session.permission
+syn keyword baanBshell ams.control
+syn keyword baanBshell db.get.old.row
+syn keyword baanBshell db.max.retry
+syn keyword baanBshell sql.parse
+syn keyword baanBshell sql.select.bind
+syn keyword baanBshell sql.where.bind
+syn keyword baanBshell sql.bind.input
+syn keyword baanBshell sql.exec
+syn keyword baanBshell sql.fetch
+syn keyword baanBshell sql.break
+syn keyword baanBshell sql.close
+syn keyword baanBshell sql.error
+syn keyword baanBshell sql.set.rds.full
+syn keyword baanBshell rdi.table
+syn keyword baanBshell rdi.index
+syn keyword baanBshell rdi.column
+syn keyword baanBshell rdi.table.column
+syn keyword baanBshell rdi.reference
+syn keyword baanBshell rdi.column.combined
+syn keyword baanBshell rdi.domain
+syn keyword baanBshell rdi.domain.long
+syn keyword baanBshell rdi.domain.double
+syn keyword baanBshell rdi.domain.string
+syn keyword baanBshell rdi.domain.raw
+syn keyword baanBshell rdi.domain.enum
+syn keyword baanBshell rdi.domain.enum.value
+syn keyword baanBshell rdi.domain.combined
+syn keyword baanBshell rdi.session.info
+syn keyword baanBshell rdi.session.dlls
+syn keyword baanBshell rdi.ref.route
+syn keyword baanBshell rdi.session.subject.info
+syn keyword baanBshell rdi.session.subject
+syn keyword baanBshell rdi.session.key
+syn keyword baanBshell rdi.session.form
+syn keyword baanBshell rdi.session.textfield
+syn keyword baanBshell rdi.first.day.of.week
+syn match baanBshell "\<rdi.date.input.format\$"
+syn keyword baanBshell rdi.format.digits
+syn keyword baanBshell rdi.permission
+syn keyword baanBshell rdi.option.info
+syn keyword baanBshell rdi.option.short
+syn keyword baanBshell rdi.vrc.path
+syn keyword baanBshell rdi.audit.hosts
+syn keyword baanBshell rdi.table.sequence
+syn keyword baanBshell iget.fld.attr
+syn keyword baanBshell sget.fld.attr
+syn keyword baanBshell iget.frm.attr
+syn keyword baanBshell sget.frm.attr
+syn keyword baanBshell iput.fld.attr
+syn keyword baanBshell sput.fld.attr
+syn keyword baanBshell iput.frm.attr
+syn keyword baanBshell put.var.to.field
+syn keyword baanBshell get.var.from.field
+syn match baanBshell "\<rdi.etoc\$"
+syn keyword baanBshell rdi.ctoe
+syn keyword baanBshell get.cust.code
+syn keyword baanBshell get.lic.no
+syn keyword baanBshell get.cust.name
+syn keyword baanBshell get.mach.id
+syn keyword baanBshell fsum
+syn match baanBshell "\<get.resource\$"
+syn keyword baanBshell qss.sort
+syn keyword baanBshell qss.search
+syn keyword baanBshell load_dll
+syn keyword baanBshell exec_dll_function
+syn keyword baanBshell get_function
+syn keyword baanBshell exec_function
+syn keyword baanBshell parse_and_exec_function
+syn keyword baanBshell pty.open
+syn keyword baanBshell pty.close
+syn keyword baanBshell pty.read
+syn keyword baanBshell pty.write
+syn keyword baanBshell pty.winsize
+syn keyword baanBshell pty.winsize.ok
+syn keyword baanBshell pty.ok
+syn keyword baanBshell user.exists
+syn keyword baanBshell group.exists
+syn keyword baanBshell is.administrator
+syn keyword baanBshell mtime
+syn keyword baanBshell getcwd
+syn keyword baanBshell set.strip.mode
+syn keyword baanBshell set.symbol.strip.mode
+syn keyword baanBshell nullify.symbol
+syn keyword baanBshell bshell.pid
+syn keyword baanBshell create.new.symbol
+syn keyword baanBshell push.by.name
+syn keyword baanBshell array.info
+syn keyword baanBshell array.to.string
+syn keyword baanBshell many.to.string
+syn keyword baanBshell ostype
+syn keyword baanBshell utc.num
+syn keyword baanBshell set.time.zone
+syn keyword baanBshell get.time.zone
+syn keyword baanBshell run.prog
+syn keyword baanBshell run.baan.prog
+syn keyword baanBshell get.status.text
+syn keyword baanBshell dir.is.available
+syn keyword baanBshell dir.set.server
+syn keyword baanBshell dir.get.last.error
+syn keyword baanBshell dir.init.object
+syn keyword baanBshell dir.free.object
+syn keyword baanBshell dir.clear.object
+syn keyword baanBshell dir.create.object
+syn keyword baanBshell dir.get.object
+syn keyword baanBshell dir.remove.object
+syn keyword baanBshell dir.update.object
+syn keyword baanBshell dir.init.search
+syn keyword baanBshell dir.free.search
+syn keyword baanBshell dir.execute.search
+syn keyword baanBshell dir.abandon.search
+syn keyword baanBshell dir.get.first.row
+syn keyword baanBshell dir.get.next.row
+syn keyword baanBshell dir.get.prev.row
+syn keyword baanBshell dir.get.element.count
+syn keyword baanBshell dir.get.element.name
+syn keyword baanBshell dir.get.element.type
+syn keyword baanBshell dir.get.value.count
+syn keyword baanBshell dir.add.element
+syn keyword baanBshell dir.add.element.int
+syn keyword baanBshell dir.add.element.str
+syn keyword baanBshell dir.add.element.time
+syn keyword baanBshell dir.get.value.int
+syn keyword baanBshell dir.get.value.str
+syn keyword baanBshell dir.get.value.time
+syn keyword baanBshell dir.get.value.named.str
+syn keyword baanBshell dir.set.value.int
+syn keyword baanBshell dir.set.value.str
+syn keyword baanBshell dir.set.value.time
+syn keyword baanBshell dir.set.value.named.str
+syn keyword baanBshell dir.remove.element
+syn keyword baanBshell dir.find.element
+syn keyword baanBshell utc.add
+syn keyword baanBshell type.define
+syn keyword baanBshell type.free
+syn keyword baanBshell type.get.fieldnumber
+syn keyword baanBshell container.create
+syn keyword baanBshell container.clear
+syn keyword baanBshell container.resize
+syn keyword baanBshell container.set.nfields
+syn keyword baanBshell container.set.ifields
+syn keyword baanBshell container.set.fields
+syn keyword baanBshell container.get.nfields
+syn keyword baanBshell container.get.ifields
+syn keyword baanBshell container.get.fields
+syn keyword baanBshell container.actual.size
+syn keyword baanBshell container.get.actual.size
+syn keyword baanBshell container.set.actual.size
+syn keyword baanBshell container.size
+syn keyword baanBshell container.free
+syn keyword baanBshell xma.process_next_event
+syn keyword baanBshell xma.init_instance
+syn keyword baanBshell fini.service
+syn keyword baanBshell corba.boa.process_next_event
+syn keyword baanBshell corba.boa.set_impl
+syn keyword baanBshell corba.available
+syn keyword baanBshell corba.orb.string_to_object
+syn keyword baanBshell corba.orb.release
+syn keyword baanBshell corba.request.invoke
+syn keyword baanBshell corba.request.send
+syn keyword baanBshell corba.request.get_response
+syn keyword baanBshell corba.request.object
+syn keyword baanBshell corba.request.delete
+syn keyword baanBshell set.debug.cpu.opts
+syn keyword baanBshell get.debug.cpu.opts
+syn match baanBshell "\<bsh.mesg\$"
+syn keyword baanBshell toggle.cpu
+syn keyword baanBshell cpu.is.debug
+syn keyword baanBshell set.profprint
+syn keyword baanBshell art.init
+syn keyword baanBshell art.define.transaction.class
+syn keyword baanBshell art.begin.transaction
+syn keyword baanBshell art.update.transaction
+syn keyword baanBshell art.end.transaction
+syn keyword baanBshell java.new.queue
+syn keyword baanBshell java.destroy.queue
+syn keyword baanBshell java.install.listener
+syn keyword baanBshell java.uninstall.listener
+syn keyword baanBshell java.put.bucket
+syn keyword baanBshell java.get.bucket
+syn keyword baanBshell java.lookup.queue
+syn keyword baanBshell java.execute.static.method
+syn keyword baanBshell java.execute.static.method.sync
+syn keyword baanBshell java.execute.static.method.async
+syn keyword baanBshell xml.write
+syn keyword baanBshell xml.read
+syn keyword baanBshell xml.newnode
+syn keyword baanBshell xml.unlinknode
+syn keyword baanBshell xml.deletenode
+syn keyword baanBshell xml.appendchildnode
+syn keyword baanBshell xml.addnode
+syn keyword baanBshell xml.insertnode
+syn keyword baanBshell xml.duplicatenode
+syn keyword baanBshell xml.setnodeproperties
+syn keyword baanBshell xml.getnodeproperties
+syn keyword baanBshell xml.deletenodeproperties
+syn keyword baanBshell xml.findfirstnode
+syn keyword baanBshell xml.findnodes
+syn keyword baanBshell xml.findsetofsiblingnodes
+syn keyword baanBshell xmlcontainsvalidcharactersonly
+syn keyword baanBshell xmlwrite
+syn keyword baanBshell xmlwritepretty
+syn keyword baanBshell xmlwritetostring
+syn keyword baanBshell xmlwriteprettytostring
+syn keyword baanBshell xmlread
+syn keyword baanBshell xmlreadfromstring
+syn keyword baanBshell xmlnewnode
+syn keyword baanBshell xmlnewdataelement
+syn keyword baanBshell xmlrewritedataelement
+syn keyword baanBshell xmlgetdataelement
+syn keyword baanBshell xmlsetname
+syn keyword baanBshell xmlsetdata
+syn keyword baanBshell xmlsetattribute
+syn keyword baanBshell xmldeleteattribute
+syn keyword baanBshell xmlgetname
+syn keyword baanBshell xmlgetdata
+syn keyword baanBshell xmlgettype
+syn keyword baanBshell xmlgetparent
+syn keyword baanBshell xmlgetfirstchild
+syn keyword baanBshell xmlgetlastchild
+syn keyword baanBshell xmlgetrightsibling
+syn keyword baanBshell xmlgetleftsibling
+syn keyword baanBshell xmlgetnumattributes
+syn keyword baanBshell xmlgetnumsiblings
+syn keyword baanBshell xmlgetnumleftsiblings
+syn keyword baanBshell xmlgetnumrightsiblings
+syn keyword baanBshell xmlgetnumchilds
+syn keyword baanBshell xmlgetattribute
+syn keyword baanBshell xmlgetattributename
+syn keyword baanBshell xmldelete
+syn keyword baanBshell xmlunlink
+syn keyword baanBshell xmlinsert
+syn keyword baanBshell xmladd
+syn keyword baanBshell xmlappend
+syn keyword baanBshell xmlinsertinchilds
+syn keyword baanBshell xmlappendtochilds
+syn keyword baanBshell xmlduplicate
+syn keyword baanBshell xmlduplicateandinsert
+syn keyword baanBshell xmlduplicateandadd
+syn keyword baanBshell xmlduplicateandappend
+syn keyword baanBshell xmlduplicateandinsertinchilds
+syn keyword baanBshell xmlduplicateandappendtochilds
+syn keyword baanBshell xmlduplicatetoprocess
+syn keyword baanBshell xmlfindfirst
+syn keyword baanBshell xmlfindfirstmatch
+syn keyword baanBshell xmlfindmatch
+syn keyword baanBshell xmlfindnodes
+syn keyword baanBshell xmlfindsetofsiblingnodes
+syn keyword baanBshell xmlexecutesql
+syn keyword baanBshell xmlexecutedllmethod
+syn keyword baanBshell xmldllsignature
+syn keyword baanBshell xmlnodetosymbol
+syn keyword baanBshell xmlputstringtolog
+syn keyword baanBshell xmlgetlog
+syn keyword baanBshell xmlcleanuplog
+syn keyword baanBshell xmlinstallloglistener
+syn keyword baanBshell xmldeinstallloglistener
+syn keyword baanBshell xmlinitsql
+syn keyword baanBshell xmlrefreshsqlcache
+syn keyword baanBshell xmlstatisticssqlcache
+syn keyword baanBshell bclm.dump
+syn keyword baanBshell bclm.init
+syn keyword baanBshell bclm.requestlicense
+syn keyword baanBshell bclm.confirmlicense
+syn keyword baanBshell bclm.releaselicense
+syn keyword baanBshell bclm.customerdata
+syn keyword baanBshell bclm.enabledemoperiod
+syn keyword baanBshell bclm.productidlicensed
+syn keyword baanBshell bclm.set.desktop
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link baanConditional Conditional
+hi def link baan3gl Statement
+hi def link baan3glpre PreProc
+hi def link baan4gl Statement
+hi def link baan4glh Statement
+hi def link baansql Statement
+hi def link baansqlh Statement
+hi def link baanDalHook Statement
+hi def link baanNumber Number
+hi def link baanString String
+hi def link baanOpenStringError Error
+hi def link baanConstant Constant
+hi def link baanComment Comment
+hi def link baanCommenth Comment
+hi def link baanUncommented Comment
+hi def link baanDLLUsage Comment
+hi def link baanFunUsage Comment
+hi def link baanIdentifier Normal
+hi def link baanBshell Function
+hi def link baanType Type
+hi def link baanStorageClass StorageClass
+
+
+let b:current_syntax = "baan"
+
+" vim: ts=8
diff --git a/runtime/syntax/bash.vim b/runtime/syntax/bash.vim
new file mode 100644
index 0000000..75ab999
--- /dev/null
+++ b/runtime/syntax/bash.vim
@@ -0,0 +1,20 @@
+" Vim syntax file
+" Language: bash
+" Maintainer: Bram
+" Last Change: 2019 Sep 27
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" The actual syntax is in sh.vim and controlled by buffer-local variables.
+unlet! b:is_sh
+unlet! b:is_kornshell
+let b:is_bash = 1
+
+runtime! syntax/sh.vim
+
+let b:current_syntax = 'bash'
+
+" vim: ts=8
diff --git a/runtime/syntax/basic.vim b/runtime/syntax/basic.vim
new file mode 100644
index 0000000..b6bf23a
--- /dev/null
+++ b/runtime/syntax/basic.vim
@@ -0,0 +1,380 @@
+" Vim syntax file
+" Language: BASIC (QuickBASIC 4.5)
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Allan Kelly <allan@fruitloaf.co.uk>
+" Contributors: Thilo Six
+" Last Change: 2022 Jun 22
+
+" First version based on Micro$soft QBASIC circa 1989, as documented in
+" 'Learn BASIC Now' by Halvorson&Rygmyr. Microsoft Press 1989.
+"
+" Second version attempts to match Microsoft QuickBASIC 4.5 while keeping FreeBASIC
+" (-lang qb) and QB64 (excluding extensions) in mind. -- DJK
+
+" Prelude {{{1
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn iskeyword @,48-57,.,!,#,%,&,$
+syn case ignore
+
+" Whitespace Errors {{{1
+if exists("basic_space_errors")
+ if !exists("basic_no_trail_space_error")
+ syn match basicSpaceError display excludenl "\s\+$"
+ endif
+ if !exists("basic_no_tab_space_error")
+ syn match basicSpaceError display " \+\t"me=e-1
+ endif
+endif
+
+" Comment Errors {{{1
+if !exists("basic_no_comment_errors")
+ syn match basicCommentError "\<REM\>.*"
+endif
+
+" Not Top Cluster {{{1
+syn cluster basicNotTop contains=@basicLineIdentifier,basicDataString,basicDataSeparator,basicTodo
+
+" Statements {{{1
+
+syn cluster basicStatements contains=basicStatement,basicDataStatement,basicMetaRemStatement,basicPutStatement,basicRemStatement
+
+let s:statements =<< trim EOL " {{{2
+ beep
+ bload
+ bsave
+ call
+ calls
+ case
+ chain
+ chdir
+ circle
+ clear
+ close
+ cls
+ color
+ com
+ common
+ const
+ declare
+ def
+ def\s\+seg
+ defdbl
+ defint
+ deflng
+ defsng
+ defstr
+ dim
+ do
+ draw
+ elseif
+ end
+ end\s\+\%(def\|function\|if\|select\|sub\|type\)
+ environ
+ erase
+ error
+ exit\s\+\%(def\|do\|for\|function\|sub\)
+ field
+ files
+ for
+ function
+ get
+ gosub
+ goto
+ if
+ input
+ ioctl
+ key
+ kill
+ let
+ line
+ line\s\+input
+ locate
+ lock
+ loop
+ lprint
+ lset
+ mkdir
+ name
+ next
+ on
+ on\s\+error
+ on\s\+uevent
+ open
+ open\s\+com
+ option
+ out
+ paint
+ palette
+ palette\s\+using
+ pcopy
+ pen
+ pmap
+ poke
+ preset
+ print
+ pset
+ randomize
+ read
+ redim
+ reset
+ restore
+ resume
+ return
+ rmdir
+ rset
+ run
+ select\s\+case
+ shared
+ shell
+ sleep
+ sound
+ static
+ stop
+ strig
+ sub
+ swap
+ system
+ troff
+ tron
+ type
+ uevent
+ unlock
+ using
+ view
+ view\s\+print
+ wait
+ wend
+ while
+ width
+ window
+ write
+EOL
+" }}}
+
+for s in s:statements
+ exe 'syn match basicStatement "\<' .. s .. '\>" contained'
+endfor
+
+syn match basicStatement "\<\%(then\|else\)\>" nextgroup=@basicStatements skipwhite
+
+" DATA Statement
+syn match basicDataSeparator "," contained
+syn region basicDataStatement matchgroup=basicStatement start="\<data\>" matchgroup=basicStatementSeparator end=":\|$" contained contains=basicDataSeparator,basicDataString,basicNumber,basicFloat,basicString
+
+if !exists("basic_no_data_fold")
+ syn region basicMultilineData start="^\s*\<data\>.*\n\%(^\s*\<data\>\)\@=" end="^\s*\<data\>.*\n\%(^\s*\<data\>\)\@!" contains=basicDataStatement transparent fold keepend
+endif
+
+" PUT File I/O and Graphics statements - needs special handling for graphics
+" action verbs
+syn match basicPutAction "\<\%(pset\|preset\|and\|or\|xor\)\>" contained
+syn region basicPutStatement matchgroup=basicStatement start="\<put\>" matchgroup=basicStatementSeparator end=":\|$" contained contains=basicKeyword,basicPutAction,basicFilenumber
+
+" Keywords {{{1
+let s:keywords =<< trim EOL " {{{2
+ absolute
+ access
+ alias
+ append
+ as
+ base
+ binary
+ byval
+ cdecl
+ com
+ def
+ do
+ for
+ function
+ gosub
+ goto
+ input
+ int86old
+ int86xold
+ interrupt
+ interruptx
+ is
+ key
+ len
+ list
+ local
+ lock
+ lprint
+ next
+ off
+ on
+ output
+ pen
+ play
+ random
+ read
+ resume
+ screen
+ seg
+ shared
+ signal
+ static
+ step
+ stop
+ strig
+ sub
+ timer
+ to
+ until
+ using
+ while
+ write
+EOL
+" }}}
+
+for k in s:keywords
+ exe 'syn match basicKeyword "\<' .. k .. '\>"'
+endfor
+
+" Functions {{{1
+syn keyword basicFunction abs asc atn cdbl chr$ cint clng command$ cos csng
+syn keyword basicFunction csrlin cvd cvdmbf cvi cvl cvs cvsmbf environ$ eof
+syn keyword basicFunction erdev erdev$ erl err exp fileattr fix fre freefile
+syn keyword basicFunction hex$ inkey$ inp input$ instr int ioctl$ left$ lbound
+syn keyword basicFunction lcase$ len loc lof log lpos ltrim$ mkd$ mkdmbf$ mki$
+syn keyword basicFunction mkl$ mks$ mksmbf$ oct$ peek pen point pos right$ rnd
+syn keyword basicFunction rtrim$ sadd setmem sgn sin space$ spc sqr stick str$
+syn keyword basicFunction strig string$ tab tan ubound ucase$ val valptr
+syn keyword basicFunction valseg varptr varptr$ varseg
+
+" Functions and statements (same name) {{{1
+syn match basicStatement "\<\%(date\$\|mid\$\|play\|screen\|seek\|time\$\|timer\)\>" contained
+syn match basicFunction "\<\%(date\$\|mid\$\|play\|screen\|seek\|time\$\|timer\)\>"
+
+" Types {{{1
+syn keyword basicType integer long single double string any
+
+" Strings {{{1
+
+" Unquoted DATA strings - anything except [:,] and leading or trailing whitespace
+" Needs lower priority than numbers
+syn match basicDataString "[^[:space:],:]\+\%(\s\+[^[:space:],:]\+\)*" contained
+
+syn region basicString start=+"+ end=+"+ oneline
+
+" Booleans {{{1
+if exists("basic_booleans")
+ syn keyword basicBoolean true false
+endif
+
+" Numbers {{{1
+
+" Integers
+syn match basicNumber "-\=&o\=\o\+[%&]\=\>"
+syn match basicNumber "-\=&h\x\+[%&]\=\>"
+syn match basicNumber "-\=\<\d\+[%&]\=\>"
+
+" Floats
+syn match basicFloat "-\=\<\d\+\.\=\d*\%(\%([ed][+-]\=\d*\)\|[!#]\)\=\>"
+syn match basicFloat "-\=\<\.\d\+\%(\%([ed][+-]\=\d*\)\|[!#]\)\=\>"
+
+" Statement anchors {{{1
+syn match basicLineStart "^" nextgroup=@basicStatements,@basicLineIdentifier skipwhite
+syn match basicStatementSeparator ":" nextgroup=@basicStatements skipwhite
+
+" Line numbers and labels {{{1
+
+" QuickBASIC limits these to 65,529 and 40 chars respectively
+syn match basicLineNumber "\d\+" nextgroup=@basicStatements skipwhite contained
+syn match basicLineLabel "\a[[:alnum:]]*\ze\s*:" nextgroup=@basicStatements skipwhite contained
+
+syn cluster basicLineIdentifier contains=basicLineNumber,basicLineLabel
+
+" Line Continuation {{{1
+syn match basicLineContinuation "\s*\zs_\ze\s*$"
+
+" Type suffixes {{{1
+if exists("basic_type_suffixes")
+ syn match basicTypeSuffix "\a[[:alnum:].]*\zs[$%&!#]"
+endif
+
+" File numbers {{{1
+syn match basicFilenumber "#\d\+"
+syn match basicFilenumber "#\a[[:alnum:].]*[%&!#]\="
+
+" Operators {{{1
+if exists("basic_operators")
+ syn match basicArithmeticOperator "[-+*/\\^]"
+ syn match basicRelationalOperator "<>\|<=\|>=\|[><=]"
+endif
+syn match basicLogicalOperator "\<\%(not\|and\|or\|xor\|eqv\|imp\)\>"
+syn match basicArithmeticOperator "\<mod\>"
+
+" Metacommands {{{1
+" Note: No trailing word boundaries. Text may be freely mixed however there
+" must be only leading whitespace prior to the first metacommand
+syn match basicMetacommand "$INCLUDE\s*:\s*'[^']\+'" contained containedin=@basicMetaComments
+syn match basicMetacommand "$\%(DYNAMIC\|STATIC\)" contained containedin=@basicMetaComments
+
+" Comments {{{1
+syn keyword basicTodo TODO FIXME XXX NOTE contained
+
+syn region basicRemStatement matchgroup=basicStatement start="REM\>" end="$" contains=basicTodo,@Spell contained
+syn region basicComment start="'" end="$" contains=basicTodo,@Spell
+
+if !exists("basic_no_comment_fold")
+ syn region basicMultilineComment start="^\s*'.*\n\%(\s*'\)\@=" end="^\s*'.*\n\%(\s*'\)\@!" contains=@basicComments transparent fold keepend
+endif
+
+" Metacommands
+syn region basicMetaRemStatement matchgroup=basicStatement start="REM\>\s*\$\@=" end="$" contains=basicTodo contained
+syn region basicMetaComment start="'\s*\$\@=" end="$" contains=basicTodo
+
+syn cluster basicMetaComments contains=basicMetaComment,basicMetaRemStatement
+syn cluster basicComments contains=basicComment,basicMetaComment
+
+"syn sync ccomment basicComment
+
+" Default Highlighting {{{1
+hi def link basicArithmeticOperator basicOperator
+hi def link basicBoolean Boolean
+hi def link basicComment Comment
+hi def link basicCommentError Error
+hi def link basicDataString basicString
+hi def link basicFilenumber basicTypeSuffix " TODO: better group
+hi def link basicFloat Float
+hi def link basicFunction Function
+hi def link basicKeyword Keyword
+hi def link basicLineIdentifier LineNr
+hi def link basicLineContinuation Special
+hi def link basicLineLabel basicLineIdentifier
+hi def link basicLineNumber basicLineIdentifier
+hi def link basicLogicalOperator basicOperator
+hi def link basicMetacommand SpecialComment
+hi def link basicMetaComment Comment
+hi def link basicMetaRemStatement Comment
+hi def link basicNumber Number
+hi def link basicOperator Operator
+hi def link basicPutAction Keyword
+hi def link basicRelationalOperator basicOperator
+hi def link basicRemStatement Comment
+hi def link basicSpaceError Error
+hi def link basicStatementSeparator Special
+hi def link basicStatement Statement
+hi def link basicString String
+hi def link basicTodo Todo
+hi def link basicType Type
+hi def link basicTypeSuffix Special
+if exists("basic_legacy_syntax_groups")
+ hi def link basicTypeSpecifier Type
+ hi def link basicTypeSuffix basicTypeSpecifier
+endif
+
+" Postscript {{{1
+let b:current_syntax = "basic"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
diff --git a/runtime/syntax/bc.vim b/runtime/syntax/bc.vim
new file mode 100644
index 0000000..4cd9d63
--- /dev/null
+++ b/runtime/syntax/bc.vim
@@ -0,0 +1,66 @@
+" Vim syntax file
+" Language: bc - An arbitrary precision calculator language
+" Maintainer: Vladimir Scholtz <vlado@gjh.sk>
+" Last change: 2012 Jun 01
+" (Dominique Pelle added @Spell)
+" Available on: www.gjh.sk/~vlado/bc.vim
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" Keywords
+syn keyword bcKeyword if else while for break continue return limits halt quit
+syn keyword bcKeyword define
+syn keyword bcKeyword length read sqrt print
+
+" Variable
+syn keyword bcType auto
+
+" Constant
+syn keyword bcConstant scale ibase obase last
+syn keyword bcConstant BC_BASE_MAX BC_DIM_MAX BC_SCALE_MAX BC_STRING_MAX
+syn keyword bcConstant BC_ENV_ARGS BC_LINE_LENGTH
+
+" Any other stuff
+syn match bcIdentifier "[a-z_][a-z0-9_]*"
+
+" String
+ syn match bcString "\"[^"]*\"" contains=@Spell
+
+" Number
+syn match bcNumber "[0-9]\+"
+
+" Comment
+syn match bcComment "\#.*" contains=@Spell
+syn region bcComment start="/\*" end="\*/" contains=@Spell
+
+" Parent ()
+syn cluster bcAll contains=bcList,bcIdentifier,bcNumber,bcKeyword,bcType,bcConstant,bcString,bcParentError
+syn region bcList matchgroup=Delimiter start="(" skip="|.\{-}|" matchgroup=Delimiter end=")" contains=@bcAll
+syn region bcList matchgroup=Delimiter start="\[" skip="|.\{-}|" matchgroup=Delimiter end="\]" contains=@bcAll
+syn match bcParenError "]"
+syn match bcParenError ")"
+
+
+
+syn case match
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link bcKeyword Statement
+hi def link bcType Type
+hi def link bcConstant Constant
+hi def link bcNumber Number
+hi def link bcComment Comment
+hi def link bcString String
+hi def link bcSpecialChar SpecialChar
+hi def link bcParenError Error
+
+
+let b:current_syntax = "bc"
+" vim: ts=8
diff --git a/runtime/syntax/bdf.vim b/runtime/syntax/bdf.vim
new file mode 100644
index 0000000..cc1a337
--- /dev/null
+++ b/runtime/syntax/bdf.vim
@@ -0,0 +1,97 @@
+" Vim syntax file
+" Language: BDF font definition
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn region bdfFontDefinition transparent matchgroup=bdfKeyword
+ \ start='^STARTFONT\>' end='^ENDFONT\>'
+ \ contains=bdfComment,bdfFont,bdfSize,
+ \ bdfBoundingBox,bdfProperties,bdfChars,bdfChar
+
+syn match bdfNumber contained display
+ \ '\<\%(\x\+\|[+-]\=\d\+\%(\.\d\+\)*\)'
+
+syn keyword bdfTodo contained FIXME TODO XXX NOTE
+
+syn region bdfComment contained start='^COMMENT\>' end='$'
+ \ contains=bdfTodo,@Spell
+
+syn region bdfFont contained matchgroup=bdfKeyword
+ \ start='^FONT\>' end='$'
+
+syn region bdfSize contained transparent matchgroup=bdfKeyword
+ \ start='^SIZE\>' end='$' contains=bdfNumber
+
+syn region bdfBoundingBox contained transparent matchgroup=bdfKeyword
+ \ start='^FONTBOUNDINGBOX' end='$'
+ \ contains=bdfNumber
+
+syn region bdfProperties contained transparent matchgroup=bdfKeyword
+ \ start='^STARTPROPERTIES' end='^ENDPROPERTIES'
+ \ contains=bdfNumber,bdfString,bdfProperty,
+ \ bdfXProperty
+
+syn keyword bdfProperty contained FONT_ASCENT FONT_DESCENT DEFAULT_CHAR
+syn match bdfProperty contained '^\S\+'
+
+syn keyword bdfXProperty contained FONT_ASCENT FONT_DESCENT DEFAULT_CHAR
+ \ FONTNAME_REGISTRY FOUNDRY FAMILY_NAME
+ \ WEIGHT_NAME SLANT SETWIDTH_NAME PIXEL_SIZE
+ \ POINT_SIZE RESOLUTION_X RESOLUTION_Y SPACING
+ \ CHARSET_REGISTRY CHARSET_ENCODING COPYRIGHT
+ \ ADD_STYLE_NAME WEIGHT RESOLUTION X_HEIGHT
+ \ QUAD_WIDTH FONT AVERAGE_WIDTH
+
+syn region bdfString contained start=+"+ skip=+""+ end=+"+
+
+syn region bdfChars contained display transparent
+ \ matchgroup=bdfKeyword start='^CHARS' end='$'
+ \ contains=bdfNumber
+
+syn region bdfChar transparent matchgroup=bdfKeyword
+ \ start='^STARTCHAR' end='^ENDCHAR'
+ \ contains=bdfEncoding,bdfWidth,bdfAttributes,
+ \ bdfBitmap
+
+syn region bdfEncoding contained transparent matchgroup=bdfKeyword
+ \ start='^ENCODING' end='$' contains=bdfNumber
+
+syn region bdfWidth contained transparent matchgroup=bdfKeyword
+ \ start='^SWIDTH\|DWIDTH\|BBX' end='$'
+ \ contains=bdfNumber
+
+syn region bdfAttributes contained transparent matchgroup=bdfKeyword
+ \ start='^ATTRIBUTES' end='$'
+
+syn keyword bdfBitmap contained BITMAP
+
+if exists("bdf_minlines")
+ let b:bdf_minlines = bdf_minlines
+else
+ let b:bdf_minlines = 30
+endif
+exec "syn sync ccomment bdfChar minlines=" . b:bdf_minlines
+
+
+hi def link bdfKeyword Keyword
+hi def link bdfNumber Number
+hi def link bdfTodo Todo
+hi def link bdfComment Comment
+hi def link bdfFont String
+hi def link bdfProperty Identifier
+hi def link bdfXProperty Identifier
+hi def link bdfString String
+hi def link bdfChars Keyword
+hi def link bdfBitmap Keyword
+
+let b:current_syntax = "bdf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/bib.vim b/runtime/syntax/bib.vim
new file mode 100644
index 0000000..ac8dcda
--- /dev/null
+++ b/runtime/syntax/bib.vim
@@ -0,0 +1,121 @@
+" Vim syntax file
+" Language: BibTeX (bibliographic database format for (La)TeX)
+" Maintainer: Bernd Feige <Bernd.Feige@gmx.net>
+" Filenames: *.bib
+" Last Change: 2017 Sep 29
+
+" Thanks to those who pointed out problems with this file or supplied fixes!
+
+" Initialization
+" ==============
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Ignore case
+syn case ignore
+
+" Keywords
+" ========
+syn keyword bibType contained article book booklet conference inbook
+syn keyword bibType contained incollection inproceedings manual
+syn keyword bibType contained mastersthesis misc phdthesis
+syn keyword bibType contained proceedings techreport unpublished
+syn keyword bibType contained string preamble
+
+syn keyword bibEntryKw contained address annote author booktitle chapter
+syn keyword bibEntryKw contained crossref edition editor howpublished
+syn keyword bibEntryKw contained institution journal key month note
+syn keyword bibEntryKw contained number organization pages publisher
+syn keyword bibEntryKw contained school series title type volume year
+
+" biblatex keywords, cf. http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/biblatex.pdf
+syn keyword bibType contained mvbook bookinbook suppbook collection mvcollection suppcollection
+syn keyword bibType contained online patent periodical suppperiodical mvproceedings reference
+syn keyword bibType contained mvreference inreference report set thesis xdata customa customb
+syn keyword bibType contained customc customd custome customf electronic www artwork audio bibnote
+syn keyword bibType contained commentary image jurisdiction legislation legal letter movie music
+syn keyword bibType contained performance review software standard video
+
+syn keyword bibEntryKw contained abstract isbn issn keywords url
+syn keyword bibEntryKw contained addendum afterwordannotation annotation annotator authortype
+syn keyword bibEntryKw contained bookauthor bookpagination booksubtitle booktitleaddon
+syn keyword bibEntryKw contained commentator date doi editora editorb editorc editortype
+syn keyword bibEntryKw contained editoratype editorbtype editorctype eid entrysubtype
+syn keyword bibEntryKw contained eprint eprintclass eprinttype eventdate eventtitle
+syn keyword bibEntryKw contained eventtitleaddon file foreword holder indextitle
+syn keyword bibEntryKw contained introduction isan ismn isrn issue issuesubtitle
+syn keyword bibEntryKw contained issuetitle iswc journalsubtitle journaltitle label
+syn keyword bibEntryKw contained language library location mainsubtitle maintitle
+syn keyword bibEntryKw contained maintitleaddon nameaddon origdate origlanguage
+syn keyword bibEntryKw contained origlocation origpublisher origtitle pagetotal
+syn keyword bibEntryKw contained pagination part pubstate reprinttitle shortauthor
+syn keyword bibEntryKw contained shorteditor shorthand shorthandintro shortjournal
+syn keyword bibEntryKw contained shortseries shorttitle subtitle titleaddon translator
+syn keyword bibEntryKw contained urldate venue version volumes entryset execute gender
+syn keyword bibEntryKw contained langid langidopts ids indexsorttitle options presort
+syn keyword bibEntryKw contained related relatedoptions relatedtype relatedstring
+syn keyword bibEntryKw contained sortkey sortname sortshorthand sorttitle sortyear xdata
+syn keyword bibEntryKw contained xref namea nameb namec nameatype namebtype namectype
+syn keyword bibEntryKw contained lista listb listc listd liste listf usera userb userc
+syn keyword bibEntryKw contained userd usere userf verba verbb verbc archiveprefix pdf
+syn keyword bibEntryKw contained primaryclass
+
+" Non-standard:
+" AMS mref http://www.ams.org/mref
+syn keyword bibNSEntryKw contained mrclass mrnumber mrreviewer fjournal coden
+
+" Clusters
+" ========
+syn cluster bibVarContents contains=bibUnescapedSpecial,bibBrace,bibParen,bibMath
+" This cluster is empty but things can be added externally:
+"syn cluster bibCommentContents
+
+" Matches
+" =======
+syn match bibUnescapedSpecial contained /[^\\][%&]/hs=s+1
+syn match bibKey contained /\s*[^ \t}="]\+,/hs=s,he=e-1 nextgroup=bibField
+syn match bibVariable contained /[^{}," \t=]/
+syn region bibComment start=/./ end=/^\s*@/me=e-1 contains=@bibCommentContents nextgroup=bibEntry
+syn region bibMath contained start=/\(\\\)\@<!\$/ end=/\$/ skip=/\(\\\$\)/
+syn region bibQuote contained start=/"/ end=/"/ skip=/\(\\"\)/ contains=@bibVarContents
+syn region bibBrace contained start=/{/ end=/}/ skip=/\(\\[{}]\)/ contains=@bibVarContents
+syn region bibParen contained start=/(/ end=/)/ skip=/\(\\[()]\)/ contains=@bibVarContents
+syn region bibField contained start="\S\+\s*=\s*" end=/[}),]/me=e-1 contains=bibEntryKw,bibNSEntryKw,bibBrace,bibParen,bibQuote,bibVariable
+syn region bibEntryData contained start=/[{(]/ms=e+1 end=/[})]/me=e-1 contains=bibKey,bibField,bibComment3
+" Actually, 5.8 <= Vim < 6.0 would ignore the `fold' keyword anyway, but Vim<5.8 would produce
+" an error, so we explicitly distinguish versions with and without folding functionality:
+syn region bibEntry start=/@\S\+\s*[{(]/ end=/^\s*[})]/ transparent fold contains=bibType,bibEntryData nextgroup=bibComment
+syn region bibComment2 start=/@Comment\s*[{(]/ end=/^\s*[})]/me=e-1 contains=@bibCommentContents nextgroup=bibEntry
+" biblatex style comments inside a bibEntry
+syn match bibComment3 "%.*"
+
+" Synchronization
+" ===============
+syn sync match All grouphere bibEntry /^\s*@/
+syn sync maxlines=200
+syn sync minlines=50
+
+" Highlighting defaults
+" =====================
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link bibType Identifier
+hi def link bibEntryKw Statement
+hi def link bibNSEntryKw PreProc
+hi def link bibKey Special
+hi def link bibVariable Constant
+hi def link bibUnescapedSpecial Error
+hi def link bibComment Comment
+hi def link bibComment2 Comment
+hi def link bibComment3 Comment
+
+let b:current_syntax = "bib"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/bindzone.vim b/runtime/syntax/bindzone.vim
new file mode 100644
index 0000000..bb790bb
--- /dev/null
+++ b/runtime/syntax/bindzone.vim
@@ -0,0 +1,97 @@
+" Vim syntax file
+" Language: BIND zone files (RFC 1035)
+" Maintainer: Julian Mehnle <julian@mehnle.net>
+" URL: http://www.mehnle.net/source/odds+ends/vim/syntax/
+" Last Change: Thu 2011-07-16 20:42:00 UTC
+"
+" Based on an earlier version by Ð’ÑчеÑлав Горбанев (Slava Gorbanev), with
+" heavy modifications.
+"
+" $Id: bindzone.vim 12 2011-07-16 21:09:57Z julian $
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+" Directives
+syn region zoneRRecord start=/^/ end=/$/ contains=zoneOwnerName,zoneSpecial,zoneTTL,zoneClass,zoneRRType,zoneComment,zoneUnknown
+
+syn match zoneDirective /^\$ORIGIN\s\+/ nextgroup=zoneOrigin,zoneUnknown
+syn match zoneDirective /^\$TTL\s\+/ nextgroup=zoneTTL,zoneUnknown
+syn match zoneDirective /^\$INCLUDE\s\+/ nextgroup=zoneText,zoneUnknown
+syn match zoneDirective /^\$GENERATE\s/
+
+syn match zoneUnknown contained /\S\+/
+
+syn match zoneOwnerName contained /^[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\)\@=/ nextgroup=zoneTTL,zoneClass,zoneRRType skipwhite
+syn match zoneOrigin contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/
+syn match zoneDomain contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/
+
+syn match zoneSpecial contained /^[@*.]\s/
+syn match zoneTTL contained /\s\@<=\d[0-9WwDdHhMmSs]*\(\s\|$\)\@=/ nextgroup=zoneClass,zoneRRType skipwhite
+syn keyword zoneClass contained IN CHAOS CH HS HESIOD nextgroup=zoneRRType,zoneTTL skipwhite
+syn keyword zoneRRType contained A AAAA CERT CNAME DNAME DNSKEY DS HINFO LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RP RRSIG SSHFP SOA SPF SRV TLSA TXT nextgroup=zoneRData skipwhite
+syn match zoneRData contained /[^;]*/ contains=zoneDomain,zoneIPAddr,zoneIP6Addr,zoneText,zoneNumber,zoneParen,zoneUnknown
+
+syn match zoneIPAddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/
+
+" Plain IPv6 address IPv6-embedded-IPv4 address
+" 1111:2:3:4:5:6:7:8 1111:2:3:4:5:6:127.0.0.1
+syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{6}\(\x\{1,4}:\x\{1,4}\|\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
+" ::[...:]8 ::[...:]127.0.0.1
+syn match zoneIP6Addr contained /\s\@<=::\(\(\x\{1,4}:\)\{,6}\x\{1,4}\|\(\x\{1,4}:\)\{,5}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
+" 1111::[...:]8 1111::[...:]127.0.0.1
+syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{1}:\(\(\x\{1,4}:\)\{,5}\x\{1,4}\|\(\x\{1,4}:\)\{,4}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
+" 1111:2::[...:]8 1111:2::[...:]127.0.0.1
+syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{2}:\(\(\x\{1,4}:\)\{,4}\x\{1,4}\|\(\x\{1,4}:\)\{,3}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
+" 1111:2:3::[...:]8 1111:2:3::[...:]127.0.0.1
+syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{3}:\(\(\x\{1,4}:\)\{,3}\x\{1,4}\|\(\x\{1,4}:\)\{,2}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
+" 1111:2:3:4::[...:]8 1111:2:3:4::[...:]127.0.0.1
+syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{4}:\(\(\x\{1,4}:\)\{,2}\x\{1,4}\|\(\x\{1,4}:\)\{,1}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
+" 1111:2:3:4:5::[...:]8 1111:2:3:4:5::127.0.0.1
+syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{5}:\(\(\x\{1,4}:\)\{,1}\x\{1,4}\|\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
+" 1111:2:3:4:5:6::8 -
+syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{6}:\x\{1,4}\>/
+" 1111[:...]:: -
+syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{1,7}:\(\s\|;\|$\)\@=/
+
+syn match zoneText contained /"\([^"\\]\|\\.\)*"\(\s\|;\|$\)\@=/
+syn match zoneNumber contained /\<[0-9]\+\(\s\|;\|$\)\@=/
+syn match zoneSerial contained /\<[0-9]\{9,10}\(\s\|;\|$\)\@=/
+
+syn match zoneErrParen /)/
+syn region zoneParen contained start="(" end=")" contains=zoneSerial,zoneTTL,zoneNumber,zoneComment
+syn match zoneComment /;.*/
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link zoneDirective Macro
+
+hi def link zoneUnknown Error
+
+hi def link zoneOrigin Statement
+hi def link zoneOwnerName Statement
+hi def link zoneDomain Identifier
+
+hi def link zoneSpecial Special
+hi def link zoneTTL Constant
+hi def link zoneClass Include
+hi def link zoneRRType Type
+
+hi def link zoneIPAddr Number
+hi def link zoneIP6Addr Number
+hi def link zoneText String
+hi def link zoneNumber Number
+hi def link zoneSerial Special
+
+hi def link zoneErrParen Error
+hi def link zoneComment Comment
+
+
+let b:current_syntax = "bindzone"
+
+" vim:sts=2 sw=2
diff --git a/runtime/syntax/bitbake.vim b/runtime/syntax/bitbake.vim
new file mode 100644
index 0000000..30f3447
--- /dev/null
+++ b/runtime/syntax/bitbake.vim
@@ -0,0 +1,126 @@
+" Vim syntax file
+" Language: BitBake bb/bbclasses/inc
+" Author: Chris Larson <kergoth@handhelds.org>
+" Ricardo Salveti <rsalveti@rsalveti.net>
+" Copyright: Copyright (C) 2004 Chris Larson <kergoth@handhelds.org>
+" Copyright (C) 2008 Ricardo Salveti <rsalveti@rsalveti.net>
+"
+" This file is licensed under the MIT license, see COPYING.MIT in
+" this source distribution for the terms.
+"
+" Syntax highlighting for bb, bbclasses and inc files.
+"
+" It's an entirely new type, just has specific syntax in shell and python code
+
+if v:version < 600
+ finish
+endif
+if exists("b:current_syntax")
+ finish
+endif
+
+syn include @python syntax/python.vim
+unlet! b:current_syntax
+
+" BitBake syntax
+
+" Matching case
+syn case match
+
+" Indicates the error when nothing is matched
+syn match bbUnmatched "."
+
+" Comments
+syn cluster bbCommentGroup contains=bbTodo,@Spell
+syn keyword bbTodo COMBAK FIXME TODO XXX contained
+syn match bbComment "#.*$" contains=@bbCommentGroup
+
+" String helpers
+syn match bbQuote +['"]+ contained
+syn match bbDelimiter "[(){}=]" contained
+syn match bbArrayBrackets "[\[\]]" contained
+
+" BitBake strings
+syn match bbContinue "\\$"
+syn region bbString matchgroup=bbQuote start=+"+ skip=+\\$+ end=+"+ contained contains=bbTodo,bbContinue,bbVarDeref,bbVarPyValue,@Spell
+syn region bbString matchgroup=bbQuote start=+'+ skip=+\\$+ end=+'+ contained contains=bbTodo,bbContinue,bbVarDeref,bbVarPyValue,@Spell
+
+" Vars definition
+syn match bbExport "^export" nextgroup=bbIdentifier skipwhite
+syn keyword bbExportFlag export contained nextgroup=bbIdentifier skipwhite
+syn match bbIdentifier "[a-zA-Z0-9\-_\.\/\+]\+" display contained
+syn match bbVarDeref "${[a-zA-Z0-9\-_:\.\/\+]\+}" contained
+syn match bbVarEq "\(:=\|+=\|=+\|\.=\|=\.\|?=\|??=\|=\)" contained nextgroup=bbVarValue
+syn match bbVarDef "^\(export\s*\)\?\([a-zA-Z0-9\-_\.\/\+][${}a-zA-Z0-9\-_:\.\/\+]*\)\s*\(:=\|+=\|=+\|\.=\|=\.\|?=\|??=\|=\)\@=" contains=bbExportFlag,bbIdentifier,bbOverrideOperator,bbVarDeref nextgroup=bbVarEq
+syn match bbVarValue ".*$" contained contains=bbString,bbVarDeref,bbVarPyValue
+syn region bbVarPyValue start=+${@+ skip=+\\$+ end=+}+ contained contains=@python
+
+" Vars metadata flags
+syn match bbVarFlagDef "^\([a-zA-Z0-9\-_\.]\+\)\(\[[a-zA-Z0-9\-_\.+]\+\]\)\@=" contains=bbIdentifier nextgroup=bbVarFlagFlag
+syn region bbVarFlagFlag matchgroup=bbArrayBrackets start="\[" end="\]\s*\(:=\|=\|.=\|=.|+=\|=+\|?=\)\@=" contained contains=bbIdentifier nextgroup=bbVarEq
+
+" Includes and requires
+syn keyword bbInclude inherit include require contained
+syn match bbIncludeRest ".*$" contained contains=bbString,bbVarDeref
+syn match bbIncludeLine "^\(inherit\|include\|require\)\s\+" contains=bbInclude nextgroup=bbIncludeRest
+
+" Add taks and similar
+syn keyword bbStatement addtask deltask addhandler after before EXPORT_FUNCTIONS contained
+syn match bbStatementRest ".*$" skipwhite contained contains=bbStatement
+syn match bbStatementLine "^\(addtask\|deltask\|addhandler\|after\|before\|EXPORT_FUNCTIONS\)\s\+" contains=bbStatement nextgroup=bbStatementRest
+
+" OE Important Functions
+syn keyword bbOEFunctions do_fetch do_unpack do_patch do_configure do_compile do_stage do_install do_package contained
+
+" Generic Functions
+syn match bbFunction "\h[0-9A-Za-z_\-\.]*" display contained contains=bbOEFunctions
+
+syn keyword bbOverrideOperator append prepend remove contained
+
+" BitBake shell metadata
+syn include @shell syntax/sh.vim
+unlet! b:current_syntax
+
+syn keyword bbShFakeRootFlag fakeroot contained
+syn match bbShFuncDef "^\(fakeroot\s*\)\?\([\.0-9A-Za-z_:${}\-\.]\+\)\(python\)\@<!\(\s*()\s*\)\({\)\@=" contains=bbShFakeRootFlag,bbFunction,bbOverrideOperator,bbVarDeref,bbDelimiter nextgroup=bbShFuncRegion skipwhite
+syn region bbShFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" contained contains=@shell
+
+" Python value inside shell functions
+syn region shDeref start=+${@+ skip=+\\$+ excludenl end=+}+ contained contains=@python
+
+" BitBake python metadata
+syn keyword bbPyFlag python contained
+syn match bbPyFuncDef "^\(fakeroot\s*\)\?\(python\)\(\s\+[0-9A-Za-z_:${}\-\.]\+\)\?\(\s*()\s*\)\({\)\@=" contains=bbShFakeRootFlag,bbPyFlag,bbFunction,bbOverrideOperator,bbVarDeref,bbDelimiter nextgroup=bbPyFuncRegion skipwhite
+syn region bbPyFuncRegion matchgroup=bbDelimiter start="{\s*$" end="^}\s*$" contained contains=@python
+
+" BitBake 'def'd python functions
+syn keyword bbPyDef def contained
+syn region bbPyDefRegion start='^\(def\s\+\)\([0-9A-Za-z_-]\+\)\(\s*(.*)\s*\):\s*$' end='^\(\s\|$\)\@!' contains=@python
+
+" Highlighting Definitions
+hi def link bbUnmatched Error
+hi def link bbInclude Include
+hi def link bbTodo Todo
+hi def link bbComment Comment
+hi def link bbQuote String
+hi def link bbString String
+hi def link bbDelimiter Keyword
+hi def link bbArrayBrackets Statement
+hi def link bbContinue Special
+hi def link bbExport Type
+hi def link bbExportFlag Type
+hi def link bbIdentifier Identifier
+hi def link bbVarDeref PreProc
+hi def link bbVarDef Identifier
+hi def link bbVarValue String
+hi def link bbShFakeRootFlag Type
+hi def link bbFunction Function
+hi def link bbPyFlag Type
+hi def link bbPyDef Statement
+hi def link bbStatement Statement
+hi def link bbStatementRest Identifier
+hi def link bbOEFunctions Special
+hi def link bbVarPyValue PreProc
+hi def link bbOverrideOperator Operator
+
+let b:current_syntax = "bitbake"
diff --git a/runtime/syntax/blank.vim b/runtime/syntax/blank.vim
new file mode 100644
index 0000000..6d2e3fd
--- /dev/null
+++ b/runtime/syntax/blank.vim
@@ -0,0 +1,39 @@
+" Vim syntax file
+" Language: Blank 1.4.1
+" Maintainer: Rafal M. Sulejman <unefunge@friko2.onet.pl>
+" Last change: 2011 Dec 28 by Thilo Six
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case ignore
+
+" Blank instructions
+syn match blankInstruction "{[:;,\.+\-*$#@/\\`'"!\|><{}\[\]()?xspo\^&\~=_%]}"
+
+" Common strings
+syn match blankString "\~[^}]"
+
+" Numbers
+syn match blankNumber "\[[0-9]\+\]"
+
+syn case match
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link blankInstruction Statement
+hi def link blankNumber Number
+hi def link blankString String
+
+
+let b:current_syntax = "blank"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/bsdl.vim b/runtime/syntax/bsdl.vim
new file mode 100644
index 0000000..75c6955
--- /dev/null
+++ b/runtime/syntax/bsdl.vim
@@ -0,0 +1,17 @@
+" Vim syntax file
+" Language: Boundary Scan Description Language (BSDL)
+" Maintainer: Daniel Kho <daniel.kho@logik.haus>
+" Last Changed: 2020 Mar 19 by Daniel Kho
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read in VHDL syntax files
+runtime! syntax/vhdl.vim
+unlet b:current_syntax
+
+let b:current_syntax = "bsdl"
+
+" vim: ts=8
diff --git a/runtime/syntax/bst.vim b/runtime/syntax/bst.vim
new file mode 100644
index 0000000..5ebef16
--- /dev/null
+++ b/runtime/syntax/bst.vim
@@ -0,0 +1,70 @@
+" Vim syntax file
+" Language: BibTeX Bibliography Style
+" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
+" Filenames: *.bst
+" $Id: bst.vim,v 1.2 2007/05/05 18:24:42 vimboss Exp $
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=48-57,#,$,',.,A-Z,a-z
+
+syn case ignore
+
+syn match bstString +"[^"]*\%("\|$\)+ contains=bstField,bstType,bstError
+" Highlight the last character of an unclosed string, but only when the cursor
+" is not beyond it (i.e., it is still being edited). Imperfect.
+syn match bstError '[^"]\%#\@!$' contained
+
+syn match bstNumber "#-\=\d\+\>"
+syn keyword bstNumber entry.max$ global.max$
+syn match bstComment "%.*"
+
+syn keyword bstCommand ENTRY FUNCTION INTEGERS MACRO STRINGS
+syn keyword bstCommand READ EXECUTE ITERATE REVERSE SORT
+syn match bstBuiltIn "\s[-<>=+*]\|\s:="
+syn keyword bstBuiltIn add.period$
+syn keyword bstBuiltIn call.type$ change.case$ chr.to.int$ cite$
+syn keyword bstBuiltIn duplicate$ empty$ format.name$
+syn keyword bstBuiltIn if$ int.to.chr$ int.to.str$
+syn keyword bstBuiltIn missing$
+syn keyword bstBuiltIn newline$ num.names$
+syn keyword bstBuiltIn pop$ preamble$ purify$ quote$
+syn keyword bstBuiltIn skip$ stack$ substring$ swap$
+syn keyword bstBuiltIn text.length$ text.prefix$ top$ type$
+syn keyword bstBuiltIn warning$ while$ width$ write$
+syn match bstIdentifier "'\k*"
+syn keyword bstType article book booklet conference
+syn keyword bstType inbook incollection inproceedings
+syn keyword bstType manual mastersthesis misc
+syn keyword bstType phdthesis proceedings
+syn keyword bstType techreport unpublished
+syn keyword bstField abbr address annote author
+syn keyword bstField booktitle chapter crossref comment
+syn keyword bstField edition editor
+syn keyword bstField howpublished institution journal key month
+syn keyword bstField note number
+syn keyword bstField organization
+syn keyword bstField pages publisher
+syn keyword bstField school series
+syn keyword bstField title type
+syn keyword bstField volume year
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link bstComment Comment
+hi def link bstString String
+hi def link bstCommand PreProc
+hi def link bstBuiltIn Statement
+hi def link bstField Special
+hi def link bstNumber Number
+hi def link bstType Type
+hi def link bstIdentifier Identifier
+hi def link bstError Error
+
+let b:current_syntax = "bst"
+
+" vim:set ft=vim sts=4 sw=4:
diff --git a/runtime/syntax/btm.vim b/runtime/syntax/btm.vim
new file mode 100644
index 0000000..4f9253f
--- /dev/null
+++ b/runtime/syntax/btm.vim
@@ -0,0 +1,216 @@
+" Vim syntax file
+" Language: 4Dos batch file
+" Maintainer: John Leo Spetz <jls11@po.cwru.edu>
+" Last Change: 2001 May 09
+
+"//Issues to resolve:
+"//- Boolean operators surrounded by period are recognized but the
+"// periods are not highlighted. The only way to do that would
+"// be separate synmatches for each possibility otherwise a more
+"// general \.\i\+\. will highlight anything delimited by dots.
+"//- After unary operators like "defined" can assume token type.
+"// Should there be more of these?
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+syn keyword btmStatement call off
+syn keyword btmConditional if iff endiff then else elseiff not errorlevel
+syn keyword btmConditional gt lt eq ne ge le
+syn match btmConditional transparent "\.\i\+\." contains=btmDotBoolOp
+syn keyword btmDotBoolOp contained and or xor
+syn match btmConditional "=="
+syn match btmConditional "!="
+syn keyword btmConditional defined errorlevel exist isalias
+syn keyword btmConditional isdir direxist isinternal islabel
+syn keyword btmRepeat for in do enddo
+
+syn keyword btmTodo contained TODO
+
+" String
+syn cluster btmVars contains=btmVariable,btmArgument,btmBIFMatch
+syn region btmString start=+"+ end=+"+ contains=@btmVars
+syn match btmNumber "\<\d\+\>"
+
+"syn match btmIdentifier "\<\h\w*\>"
+
+" If you don't like tabs
+"syn match btmShowTab "\t"
+"syn match btmShowTabc "\t"
+"syn match btmComment "^\ *rem.*$" contains=btmTodo,btmShowTabc
+
+" Some people use this as a comment line
+" In fact this is a Label
+"syn match btmComment "^\ *:\ \+.*$" contains=btmTodo
+
+syn match btmComment "^\ *rem.*$" contains=btmTodo
+syn match btmComment "^\ *::.*$" contains=btmTodo
+
+syn match btmLabelMark "^\ *:[0-9a-zA-Z_\-]\+\>"
+syn match btmLabelMark "goto [0-9a-zA-Z_\-]\+\>"lc=5
+syn match btmLabelMark "gosub [0-9a-zA-Z_\-]\+\>"lc=6
+
+" syn match btmCmdDivider ">[>&][>&]\="
+syn match btmCmdDivider ">[>&]*"
+syn match btmCmdDivider ">>&>"
+syn match btmCmdDivider "|&\="
+syn match btmCmdDivider "%+"
+syn match btmCmdDivider "\^"
+
+syn region btmEcho start="echo" skip="echo" matchgroup=btmCmdDivider end="%+" end="$" end="|&\=" end="\^" end=">[>&]*" contains=@btmEchos oneline
+syn cluster btmEchos contains=@btmVars,btmEchoCommand,btmEchoParam
+syn keyword btmEchoCommand contained echo echoerr echos echoserr
+syn keyword btmEchoParam contained on off
+
+" this is also a valid Label. I don't use it.
+"syn match btmLabelMark "^\ *:\ \+[0-9a-zA-Z_\-]\+\>"
+
+" //Environment variable can be expanded using notation %var in 4DOS
+syn match btmVariable "%[0-9a-z_\-]\+" contains=@btmSpecialVars
+" //Environment variable can be expanded using notation %var%
+syn match btmVariable "%[0-9a-z_\-]*%" contains=@btmSpecialVars
+" //The following are special variable in 4DOS
+syn match btmVariable "%[=#]" contains=@btmSpecialVars
+syn match btmVariable "%??\=" contains=@btmSpecialVars
+" //Environment variable can be expanded using notation %[var] in 4DOS
+syn match btmVariable "%\[[0-9a-z_\-]*\]"
+" //After some keywords next word should be an environment variable
+syn match btmVariable "defined\s\i\+"lc=8
+syn match btmVariable "set\s\i\+"lc=4
+" //Parameters to batchfiles take the format %<digit>
+syn match btmArgument "%\d\>"
+" //4DOS allows format %<digit>& meaning batchfile parameters digit and up
+syn match btmArgument "%\d\>&"
+" //Variable used by FOR loops sometimes use %%<letter> in batchfiles
+syn match btmArgument "%%\a\>"
+
+" //Show 4DOS built-in functions specially
+syn match btmBIFMatch "%@\w\+\["he=e-1 contains=btmBuiltInFunc
+syn keyword btmBuiltInFunc contained alias ascii attrib cdrom
+syn keyword btmBuiltInFunc contained char clip comma convert
+syn keyword btmBuiltInFunc contained date day dec descript
+syn keyword btmBuiltInFunc contained device diskfree disktotal
+syn keyword btmBuiltInFunc contained diskused dosmem dow dowi
+syn keyword btmBuiltInFunc contained doy ems eval exec execstr
+syn keyword btmBuiltInFunc contained expand ext extended
+syn keyword btmBuiltInFunc contained fileage fileclose filedate
+syn keyword btmBuiltInFunc contained filename fileopen fileread
+syn keyword btmBuiltInFunc contained files fileseek fileseekl
+syn keyword btmBuiltInFunc contained filesize filetime filewrite
+syn keyword btmBuiltInFunc contained filewriteb findclose
+syn keyword btmBuiltInFunc contained findfirst findnext format
+syn keyword btmBuiltInFunc contained full if inc index insert
+syn keyword btmBuiltInFunc contained instr int label left len
+syn keyword btmBuiltInFunc contained lfn line lines lower lpt
+syn keyword btmBuiltInFunc contained makeage makedate maketime
+syn keyword btmBuiltInFunc contained master month name numeric
+syn keyword btmBuiltInFunc contained path random readscr ready
+syn keyword btmBuiltInFunc contained remote removable repeat
+syn keyword btmBuiltInFunc contained replace right search
+syn keyword btmBuiltInFunc contained select sfn strip substr
+syn keyword btmBuiltInFunc contained time timer trim truename
+syn keyword btmBuiltInFunc contained unique upper wild word
+syn keyword btmBuiltInFunc contained words xms year
+
+syn cluster btmSpecialVars contains=btmBuiltInVar,btmSpecialVar
+
+" //Show specialized variables specially
+" syn match btmSpecialVar contained "+"
+syn match btmSpecialVar contained "="
+syn match btmSpecialVar contained "#"
+syn match btmSpecialVar contained "??\="
+syn keyword btmSpecialVar contained cmdline colordir comspec
+syn keyword btmSpecialVar contained copycmd dircmd temp temp4dos
+syn keyword btmSpecialVar contained filecompletion path prompt
+
+" //Show 4DOS built-in variables specially specially
+syn keyword btmBuiltInVar contained _4ver _alias _ansi
+syn keyword btmBuiltInVar contained _apbatt _aplife _apmac _batch
+syn keyword btmBuiltInVar contained _batchline _batchname _bg
+syn keyword btmBuiltInVar contained _boot _ci _cmdproc _co
+syn keyword btmBuiltInVar contained _codepage _column _columns
+syn keyword btmBuiltInVar contained _country _cpu _cwd _cwds _cwp
+syn keyword btmBuiltInVar contained _cwps _date _day _disk _dname
+syn keyword btmBuiltInVar contained _dos _dosver _dow _dowi _doy
+syn keyword btmBuiltInVar contained _dpmi _dv _env _fg _hlogfile
+syn keyword btmBuiltInVar contained _hour _kbhit _kstack _lastdisk
+syn keyword btmBuiltInVar contained _logfile _minute _monitor
+syn keyword btmBuiltInVar contained _month _mouse _ndp _row _rows
+syn keyword btmBuiltInVar contained _second _shell _swapping
+syn keyword btmBuiltInVar contained _syserr _time _transient
+syn keyword btmBuiltInVar contained _video _win _wintitle _year
+
+" //Commands in 4DOS and/or DOS
+syn match btmCommand "\s?"
+syn match btmCommand "^?"
+syn keyword btmCommand alias append assign attrib
+syn keyword btmCommand backup beep break cancel case
+syn keyword btmCommand cd cdd cdpath chcp chdir
+syn keyword btmCommand chkdsk cls color comp copy
+syn keyword btmCommand ctty date debug default defrag
+syn keyword btmCommand del delay describe dir
+syn keyword btmCommand dirhistory dirs diskcomp
+syn keyword btmCommand diskcopy doskey dosshell
+syn keyword btmCommand drawbox drawhline drawvline
+"syn keyword btmCommand echo echoerr echos echoserr
+syn keyword btmCommand edit edlin emm386 endlocal
+syn keyword btmCommand endswitch erase eset except
+syn keyword btmCommand exe2bin exit expand fastopen
+syn keyword btmCommand fc fdisk ffind find format
+syn keyword btmCommand free global gosub goto
+syn keyword btmCommand graftabl graphics help history
+syn keyword btmCommand inkey input join keyb keybd
+syn keyword btmCommand keystack label lh list loadbtm
+syn keyword btmCommand loadhigh lock log md mem
+syn keyword btmCommand memory mirror mkdir mode more
+syn keyword btmCommand move nlsfunc on option path
+syn keyword btmCommand pause popd print prompt pushd
+syn keyword btmCommand quit rd reboot recover ren
+syn keyword btmCommand rename replace restore return
+syn keyword btmCommand rmdir scandisk screen scrput
+syn keyword btmCommand select set setdos setlocal
+syn keyword btmCommand setver share shift sort subst
+syn keyword btmCommand swapping switch sys tee text
+syn keyword btmCommand time timer touch tree truename
+syn keyword btmCommand type unalias undelete unformat
+syn keyword btmCommand unlock unset ver verify vol
+syn keyword btmCommand vscrput y
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link btmLabel Special
+hi def link btmLabelMark Special
+hi def link btmCmdDivider Special
+hi def link btmConditional btmStatement
+hi def link btmDotBoolOp btmStatement
+hi def link btmRepeat btmStatement
+hi def link btmEchoCommand btmStatement
+hi def link btmEchoParam btmStatement
+hi def link btmStatement Statement
+hi def link btmTodo Todo
+hi def link btmString String
+hi def link btmNumber Number
+hi def link btmComment Comment
+hi def link btmArgument Identifier
+hi def link btmVariable Identifier
+hi def link btmEcho String
+hi def link btmBIFMatch btmStatement
+hi def link btmBuiltInFunc btmStatement
+hi def link btmBuiltInVar btmStatement
+hi def link btmSpecialVar btmStatement
+hi def link btmCommand btmStatement
+
+"optional highlighting
+"hi def link btmShowTab Error
+"hi def link btmShowTabc Error
+"hi def link btmIdentifier Identifier
+
+
+let b:current_syntax = "btm"
+
+" vim: ts=8
diff --git a/runtime/syntax/bzl.vim b/runtime/syntax/bzl.vim
new file mode 100644
index 0000000..b0ee945
--- /dev/null
+++ b/runtime/syntax/bzl.vim
@@ -0,0 +1,16 @@
+" Vim syntax file
+" Language: Bazel (http://bazel.io)
+" Maintainer: David Barnett (https://github.com/google/vim-ft-bzl)
+" Last Change: 2015 Aug 11
+
+if exists('b:current_syntax')
+ finish
+endif
+
+
+runtime! syntax/python.vim
+
+let b:current_syntax = 'bzl'
+
+syn region bzlRule start='^\w\+($' end='^)\n*' transparent fold
+syn region bzlList start='\[' end='\]' transparent fold
diff --git a/runtime/syntax/bzr.vim b/runtime/syntax/bzr.vim
new file mode 100644
index 0000000..43178b8
--- /dev/null
+++ b/runtime/syntax/bzr.vim
@@ -0,0 +1,50 @@
+" Vim syntax file
+" Language: Bazaar (bzr) commit file
+" Maintainer: Dmitry Vasiliev <dima at hlabs dot org>
+" URL: https://github.com/hdima/vim-scripts/blob/master/syntax/bzr.vim
+" Last Change: 2012-02-11
+" Filenames: bzr_log.*
+" Version: 1.2.2
+"
+" Thanks:
+"
+" Gioele Barabucci
+" for idea of diff highlighting
+
+" quit when a syntax file was already loaded.
+if exists("b:current_syntax")
+ finish
+endif
+
+if exists("bzr_highlight_diff")
+ syn include @Diff syntax/diff.vim
+endif
+
+syn match bzrRemoved "^removed:$" contained
+syn match bzrAdded "^added:$" contained
+syn match bzrRenamed "^renamed:$" contained
+syn match bzrModified "^modified:$" contained
+syn match bzrUnchanged "^unchanged:$" contained
+syn match bzrUnknown "^unknown:$" contained
+syn cluster Statuses contains=bzrRemoved,bzrAdded,bzrRenamed,bzrModified,bzrUnchanged,bzrUnknown
+if exists("bzr_highlight_diff")
+ syn cluster Statuses add=@Diff
+endif
+syn region bzrRegion start="^-\{14} This line and the following will be ignored -\{14}$" end="\%$" contains=@NoSpell,@Statuses
+
+" Synchronization.
+syn sync clear
+syn sync match bzrSync grouphere bzrRegion "^-\{14} This line and the following will be ignored -\{14}$"me=s-1
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet.
+
+hi def link bzrRemoved Constant
+hi def link bzrAdded Identifier
+hi def link bzrModified Special
+hi def link bzrRenamed Special
+hi def link bzrUnchanged Special
+hi def link bzrUnknown Special
+
+
+let b:current_syntax = "bzr"
diff --git a/runtime/syntax/c.vim b/runtime/syntax/c.vim
new file mode 100644
index 0000000..50878a7
--- /dev/null
+++ b/runtime/syntax/c.vim
@@ -0,0 +1,519 @@
+" Vim syntax file
+" Language: C
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last Change: 2022 Oct 05
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+let s:ft = matchstr(&ft, '^\%([^.]\)\+')
+
+" check if this was included from cpp.vim
+let s:in_cpp_family = exists("b:filetype_in_cpp_family")
+
+" Optional embedded Autodoc parsing
+" To enable it add: let g:c_autodoc = 1
+" to your .vimrc
+if exists("c_autodoc")
+ syn include @cAutodoc <sfile>:p:h/autodoc.vim
+ unlet b:current_syntax
+endif
+
+" A bunch of useful C keywords
+syn keyword cStatement goto break return continue asm
+syn keyword cLabel case default
+syn keyword cConditional if else switch
+syn keyword cRepeat while for do
+
+syn keyword cTodo contained TODO FIXME XXX
+
+" It's easy to accidentally add a space after a backslash that was intended
+" for line continuation. Some compilers allow it, which makes it
+" unpredictable and should be avoided.
+syn match cBadContinuation contained "\\\s\+$"
+
+" cCommentGroup allows adding matches for special things in comments
+syn cluster cCommentGroup contains=cTodo,cBadContinuation
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match cSpecial display contained "\\\%(x\x\+\|\o\{1,3}\|.\|$\)"
+if !exists("c_no_utf")
+ syn match cSpecial display contained "\\\%(u\x\{4}\|U\x\{8}\)"
+endif
+
+if !exists("c_no_cformat")
+ " Highlight % items in strings.
+ if !exists("c_no_c99") " ISO C99
+ syn match cFormat display "%\%(\d\+\$\)\=[-+' #0*]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlLjzt]\|ll\|hh\)\=\%([aAbdiuoxXDOUfFeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
+ else
+ syn match cFormat display "%\%(\d\+\$\)\=[-+' #0*]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlL]\|ll\)\=\%([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
+ endif
+ syn match cFormat display "%%" contained
+endif
+
+" cCppString: same as cString, but ends at end of line
+if s:in_cpp_family && !exists("cpp_no_cpp11") && !exists("c_no_cformat")
+ " ISO C++11
+ syn region cString start=+\%(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend
+ syn region cCppString start=+\%(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell
+elseif s:ft ==# "c" && !exists("c_no_c11") && !exists("c_no_cformat")
+ " ISO C99
+ syn region cString start=+\%(L\|U\|u8\)\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend
+ syn region cCppString start=+\%(L\|U\|u8\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell
+else
+ " older C or C++
+ syn match cFormat display "%%" contained
+ syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend
+ syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell
+endif
+
+syn region cCppSkip contained start="^\s*\%(%:\|#\)\s*\%(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\%(%:\|#\)\s*endif\>" contains=cSpaceError,cCppSkip
+
+syn cluster cStringGroup contains=cCppString,cCppSkip
+
+syn match cCharacter "L\='[^\\]'"
+syn match cCharacter "L'[^']*'" contains=cSpecial
+if exists("c_gnu")
+ syn match cSpecialError "L\='\\[^'\"?\\abefnrtv]'"
+ syn match cSpecialCharacter "L\='\\['\"?\\abefnrtv]'"
+else
+ syn match cSpecialError "L\='\\[^'\"?\\abfnrtv]'"
+ syn match cSpecialCharacter "L\='\\['\"?\\abfnrtv]'"
+endif
+syn match cSpecialCharacter display "L\='\\\o\{1,3}'"
+syn match cSpecialCharacter display "'\\x\x\{1,2}'"
+syn match cSpecialCharacter display "L'\\x\x\+'"
+
+if (s:ft ==# "c" && !exists("c_no_c11")) || (s:in_cpp_family && !exists("cpp_no_cpp11"))
+ " ISO C11 or ISO C++ 11
+ if exists("c_no_cformat")
+ syn region cString start=+\%(U\|u8\=\)"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,@Spell extend
+ else
+ syn region cString start=+\%(U\|u8\=\)"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend
+ endif
+ syn match cCharacter "[Uu]'[^\\]'"
+ syn match cCharacter "[Uu]'[^']*'" contains=cSpecial
+ if exists("c_gnu")
+ syn match cSpecialError "[Uu]'\\[^'\"?\\abefnrtv]'"
+ syn match cSpecialCharacter "[Uu]'\\['\"?\\abefnrtv]'"
+ else
+ syn match cSpecialError "[Uu]'\\[^'\"?\\abfnrtv]'"
+ syn match cSpecialCharacter "[Uu]'\\['\"?\\abfnrtv]'"
+ endif
+ syn match cSpecialCharacter display "[Uu]'\\\o\{1,3}'"
+ syn match cSpecialCharacter display "[Uu]'\\x\x\+'"
+endif
+
+"when wanted, highlight trailing white space
+if exists("c_space_errors")
+ if !exists("c_no_trail_space_error")
+ syn match cSpaceError display excludenl "\s\+$"
+ endif
+ if !exists("c_no_tab_space_error")
+ syn match cSpaceError display " \+\t"me=e-1
+ endif
+endif
+
+" This should be before cErrInParen to avoid problems with #define ({ xxx })
+if exists("c_curly_error")
+ syn match cCurlyError "}"
+ syn region cBlock start="{" end="}" contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cCppParen,cErrInBracket,cCppBracket,@cStringGroup,@Spell fold
+else
+ syn region cBlock start="{" end="}" transparent fold
+endif
+
+" Catch errors caused by wrong parenthesis and brackets.
+" Also accept <% for {, %> for }, <: for [ and :> for ] (C99)
+" But avoid matching <::.
+syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserLabel,cBitField,cOctalZero,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
+if exists("c_no_curly_error")
+ if s:in_cpp_family && !exists("cpp_no_cpp11")
+ syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,@cStringGroup,@Spell
+ " cCppParen: same as cParen but ends at end-of-line; used in cDefine
+ syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
+ syn match cParenError display ")"
+ syn match cErrInParen display contained "^^<%\|^%>"
+ else
+ syn region cParen transparent start='(' end=')' contains=ALLBUT,cBlock,@cParenGroup,cCppParen,@cStringGroup,@Spell
+ " cCppParen: same as cParen but ends at end-of-line; used in cDefine
+ syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
+ syn match cParenError display ")"
+ syn match cErrInParen display contained "^[{}]\|^<%\|^%>"
+ endif
+elseif exists("c_no_bracket_error")
+ if s:in_cpp_family && !exists("cpp_no_cpp11")
+ syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,@cStringGroup,@Spell
+ " cCppParen: same as cParen but ends at end-of-line; used in cDefine
+ syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
+ syn match cParenError display ")"
+ syn match cErrInParen display contained "<%\|%>"
+ else
+ syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,@cStringGroup,@Spell
+ " cCppParen: same as cParen but ends at end-of-line; used in cDefine
+ syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
+ syn match cParenError display ")"
+ syn match cErrInParen display contained "[{}]\|<%\|%>"
+ endif
+else
+ if s:in_cpp_family && !exists("cpp_no_cpp11")
+ syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,@cStringGroup,@Spell
+ " cCppParen: same as cParen but ends at end-of-line; used in cDefine
+ syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell
+ syn match cParenError display "[\])]"
+ syn match cErrInParen display contained "<%\|%>"
+ syn region cBracket transparent start='\[\|<::\@!' end=']\|:>' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,@cStringGroup,@Spell
+ else
+ syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,@cStringGroup,@Spell
+ " cCppParen: same as cParen but ends at end-of-line; used in cDefine
+ syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell
+ syn match cParenError display "[\])]"
+ syn match cErrInParen display contained "[\]{}]\|<%\|%>"
+ syn region cBracket transparent start='\[\|<::\@!' end=']\|:>' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cErrInParen,cCppParen,cCppBracket,@cStringGroup,@Spell
+ endif
+ " cCppBracket: same as cParen but ends at end-of-line; used in cDefine
+ syn region cCppBracket transparent start='\[\|<::\@!' skip='\\$' excludenl end=']\|:>' end='$' contained contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString,@Spell
+ syn match cErrInBracket display contained "[);{}]\|<%\|%>"
+endif
+
+if s:ft ==# 'c' || exists("cpp_no_cpp11")
+ syn region cBadBlock keepend start="{" end="}" contained containedin=cParen,cBracket,cBadBlock transparent fold
+endif
+
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match cNumbers display transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctalError,cOctal
+" Same, but without octal error (for comments)
+syn match cNumbersCom display contained transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctal
+syn match cNumber display contained "\d\+\%(u\=l\{0,2}\|ll\=u\)\>"
+"hex number
+syn match cNumber display contained "0x\x\+\%(u\=l\{0,2}\|ll\=u\)\>"
+" Flag the first zero of an octal number as something special
+syn match cOctal display contained "0\o\+\%(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero
+syn match cOctalZero display contained "\<0"
+"floating point number, with dot, optional exponent
+syn match cFloat display contained "\d\+\.\d*\%(e[-+]\=\d\+\)\=[fl]\="
+"floating point number, starting with a dot, optional exponent
+syn match cFloat display contained "\.\d\+\%(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match cFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>"
+if !exists("c_no_c99")
+ "hexadecimal floating point number, optional leading digits, with dot, with exponent
+ syn match cFloat display contained "0x\x*\.\x\+p[-+]\=\d\+[fl]\=\>"
+ "hexadecimal floating point number, with leading digits, optional dot, with exponent
+ syn match cFloat display contained "0x\x\+\.\=p[-+]\=\d\+[fl]\=\>"
+endif
+
+" flag an octal number with wrong digits
+syn match cOctalError display contained "0\o*[89]\d*"
+syn case match
+
+if exists("c_comment_strings")
+ " A comment can contain cString, cCharacter and cNumber.
+ " But a "*/" inside a cString in a cComment DOES end the comment! So we
+ " need to use a special type of cString: cCommentString, which also ends on
+ " "*/", and sees a "*" at the start of the line as comment again.
+ " Unfortunately this doesn't very well work for // type of comments :-(
+ syn match cCommentSkip contained "^\s*\*\%($\|\s\+\)"
+ syn region cCommentString contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=cSpecial,cCommentSkip
+ syn region cComment2String contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=cSpecial
+ syn region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError,cWrongComTail,@Spell
+ if exists("c_no_comment_fold")
+ " Use "extend" here to have preprocessor lines not terminate halfway a
+ " comment.
+ syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell extend
+ else
+ syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell fold extend
+ endif
+else
+ syn region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cSpaceError,@Spell
+ if exists("c_no_comment_fold")
+ syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell extend
+ else
+ syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell fold extend
+ endif
+endif
+" keep a // comment separately, it terminates a preproc. conditional
+syn match cCommentError display "\*/"
+syn match cCommentStartError display "/\*"me=e-1 contained
+syn match cWrongComTail display "\*/"
+
+syn keyword cOperator sizeof
+if exists("c_gnu")
+ syn keyword cType __label__ __complex__
+ syn keyword cStatement __asm__
+ syn keyword cOperator __alignof__
+ syn keyword cOperator typeof __typeof__
+ syn keyword cOperator __real__ __imag__
+ syn keyword cStorageClass __attribute__ __const__ __extension__
+ syn keyword cStorageClass inline __inline__
+ syn keyword cStorageClass __restrict__ __volatile__ __noreturn__
+endif
+syn keyword cType int long short char void
+syn keyword cType signed unsigned float double
+if !exists("c_no_ansi") || exists("c_ansi_typedefs")
+ syn keyword cType size_t ssize_t off_t wchar_t ptrdiff_t sig_atomic_t fpos_t
+ syn keyword cType clock_t time_t va_list jmp_buf FILE DIR div_t ldiv_t
+ syn keyword cType mbstate_t wctrans_t wint_t wctype_t
+endif
+if !exists("c_no_c99") " ISO C99
+ syn keyword cType _Bool bool _Complex complex _Imaginary imaginary
+ syn keyword cType int8_t int16_t int32_t int64_t
+ syn keyword cType uint8_t uint16_t uint32_t uint64_t
+ if !exists("c_no_bsd")
+ " These are BSD specific.
+ syn keyword cType u_int8_t u_int16_t u_int32_t u_int64_t
+ endif
+ syn keyword cType int_least8_t int_least16_t int_least32_t int_least64_t
+ syn keyword cType uint_least8_t uint_least16_t uint_least32_t uint_least64_t
+ syn keyword cType int_fast8_t int_fast16_t int_fast32_t int_fast64_t
+ syn keyword cType uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t
+ syn keyword cType intptr_t uintptr_t
+ syn keyword cType intmax_t uintmax_t
+endif
+
+syn keyword cTypedef typedef
+syn keyword cStructure struct union enum
+syn keyword cStorageClass static register auto volatile extern const
+if !exists("c_no_c99") && !s:in_cpp_family
+ syn keyword cStorageClass inline restrict
+endif
+if !exists("c_no_c11")
+ syn keyword cStorageClass _Alignas alignas
+ syn keyword cOperator _Alignof alignof
+ syn keyword cStorageClass _Atomic
+ syn keyword cOperator _Generic
+ syn keyword cStorageClass _Noreturn noreturn
+ syn keyword cOperator _Static_assert static_assert
+ syn keyword cStorageClass _Thread_local thread_local
+ syn keyword cType char16_t char32_t
+ syn keyword cType max_align_t
+ " C11 atomics (take down the shield wall!)
+ syn keyword cType atomic_bool atomic_char atomic_schar atomic_uchar
+ syn keyword Ctype atomic_short atomic_ushort atomic_int atomic_uint
+ syn keyword cType atomic_long atomic_ulong atomic_llong atomic_ullong
+ syn keyword cType atomic_char16_t atomic_char32_t atomic_wchar_t
+ syn keyword cType atomic_int_least8_t atomic_uint_least8_t
+ syn keyword cType atomic_int_least16_t atomic_uint_least16_t
+ syn keyword cType atomic_int_least32_t atomic_uint_least32_t
+ syn keyword cType atomic_int_least64_t atomic_uint_least64_t
+ syn keyword cType atomic_int_fast8_t atomic_uint_fast8_t
+ syn keyword cType atomic_int_fast16_t atomic_uint_fast16_t
+ syn keyword cType atomic_int_fast32_t atomic_uint_fast32_t
+ syn keyword cType atomic_int_fast64_t atomic_uint_fast64_t
+ syn keyword cType atomic_intptr_t atomic_uintptr_t
+ syn keyword cType atomic_size_t atomic_ptrdiff_t
+ syn keyword cType atomic_intmax_t atomic_uintmax_t
+endif
+
+if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
+ if exists("c_gnu")
+ syn keyword cConstant __GNUC__ __FUNCTION__ __PRETTY_FUNCTION__ __func__
+ endif
+ syn keyword cConstant __LINE__ __FILE__ __DATE__ __TIME__ __STDC__ __STDC_VERSION__ __STDC_HOSTED__
+ syn keyword cConstant CHAR_BIT MB_LEN_MAX MB_CUR_MAX
+ syn keyword cConstant UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX
+ syn keyword cConstant CHAR_MIN INT_MIN LONG_MIN SHRT_MIN
+ syn keyword cConstant CHAR_MAX INT_MAX LONG_MAX SHRT_MAX
+ syn keyword cConstant SCHAR_MIN SINT_MIN SLONG_MIN SSHRT_MIN
+ syn keyword cConstant SCHAR_MAX SINT_MAX SLONG_MAX SSHRT_MAX
+ if !exists("c_no_c99")
+ syn keyword cConstant __func__ __VA_ARGS__
+ syn keyword cConstant LLONG_MIN LLONG_MAX ULLONG_MAX
+ syn keyword cConstant INT8_MIN INT16_MIN INT32_MIN INT64_MIN
+ syn keyword cConstant INT8_MAX INT16_MAX INT32_MAX INT64_MAX
+ syn keyword cConstant UINT8_MAX UINT16_MAX UINT32_MAX UINT64_MAX
+ syn keyword cConstant INT_LEAST8_MIN INT_LEAST16_MIN INT_LEAST32_MIN INT_LEAST64_MIN
+ syn keyword cConstant INT_LEAST8_MAX INT_LEAST16_MAX INT_LEAST32_MAX INT_LEAST64_MAX
+ syn keyword cConstant UINT_LEAST8_MAX UINT_LEAST16_MAX UINT_LEAST32_MAX UINT_LEAST64_MAX
+ syn keyword cConstant INT_FAST8_MIN INT_FAST16_MIN INT_FAST32_MIN INT_FAST64_MIN
+ syn keyword cConstant INT_FAST8_MAX INT_FAST16_MAX INT_FAST32_MAX INT_FAST64_MAX
+ syn keyword cConstant UINT_FAST8_MAX UINT_FAST16_MAX UINT_FAST32_MAX UINT_FAST64_MAX
+ syn keyword cConstant INTPTR_MIN INTPTR_MAX UINTPTR_MAX
+ syn keyword cConstant INTMAX_MIN INTMAX_MAX UINTMAX_MAX
+ syn keyword cConstant PTRDIFF_MIN PTRDIFF_MAX SIG_ATOMIC_MIN SIG_ATOMIC_MAX
+ syn keyword cConstant SIZE_MAX WCHAR_MIN WCHAR_MAX WINT_MIN WINT_MAX
+ endif
+ syn keyword cConstant FLT_RADIX FLT_ROUNDS FLT_DIG FLT_MANT_DIG FLT_EPSILON DBL_DIG DBL_MANT_DIG DBL_EPSILON
+ syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP FLT_MIN_10_EXP FLT_MAX_10_EXP
+ syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP DBL_MIN_10_EXP DBL_MAX_10_EXP LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP
+ syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP HUGE_VAL CLOCKS_PER_SEC NULL LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY
+ syn keyword cConstant LC_NUMERIC LC_TIME SIG_DFL SIG_ERR SIG_IGN SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM
+ " Add POSIX signals as well...
+ syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV
+ syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2
+ syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF FOPEN_MAX FILENAME_MAX L_tmpnam
+ syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET TMP_MAX stderr stdin stdout EXIT_FAILURE EXIT_SUCCESS RAND_MAX
+ " used in assert.h
+ syn keyword cConstant NDEBUG
+ " POSIX 2001
+ syn keyword cConstant SIGBUS SIGPOLL SIGPROF SIGSYS SIGURG SIGVTALRM SIGXCPU SIGXFSZ
+ " non-POSIX signals
+ syn keyword cConstant SIGWINCH SIGINFO
+ " Add POSIX errors as well. List comes from:
+ " http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html
+ syn keyword cConstant E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY EBADF
+ syn keyword cConstant EBADMSG EBUSY ECANCELED ECHILD ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK
+ syn keyword cConstant EDESTADDRREQ EDOM EDQUOT EEXIST EFAULT EFBIG EHOSTUNREACH EIDRM EILSEQ
+ syn keyword cConstant EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE
+ syn keyword cConstant EMULTIHOP ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS ENODATA
+ syn keyword cConstant ENODEV ENOENT ENOEXEC ENOLCK ENOLINK ENOMEM ENOMSG ENOPROTOOPT ENOSPC ENOSR
+ syn keyword cConstant ENOSTR ENOSYS ENOTBLK ENOTCONN ENOTDIR ENOTEMPTY ENOTRECOVERABLE ENOTSOCK ENOTSUP
+ syn keyword cConstant ENOTTY ENXIO EOPNOTSUPP EOVERFLOW EOWNERDEAD EPERM EPIPE EPROTO
+ syn keyword cConstant EPROTONOSUPPORT EPROTOTYPE ERANGE EROFS ESPIPE ESRCH ESTALE ETIME ETIMEDOUT
+ syn keyword cConstant ETXTBSY EWOULDBLOCK EXDEV
+ " math.h
+ syn keyword cConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4
+ syn keyword cConstant M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2
+endif
+if !exists("c_no_c99") " ISO C99
+ syn keyword cConstant true false
+endif
+
+" Accept %: for # (C99)
+syn region cPreCondit start="^\s*\zs\%(%:\|#\)\s*\%(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" keepend contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
+syn match cPreConditMatch display "^\s*\zs\%(%:\|#\)\s*\%(else\|endif\)\>"
+if !exists("c_no_if0")
+ syn cluster cCppOutInGroup contains=cCppInIf,cCppInElse,cCppInElse2,cCppOutIf,cCppOutIf2,cCppOutElse,cCppInSkip,cCppOutSkip
+ syn region cCppOutWrapper start="^\s*\zs\%(%:\|#\)\s*if\s\+0\+\s*\%($\|//\|/\*\|&\)" end=".\@=\|$" contains=cCppOutIf,cCppOutElse,@NoSpell fold
+ syn region cCppOutIf contained start="0\+" matchgroup=cCppOutWrapper end="^\s*\%(%:\|#\)\s*endif\>" contains=cCppOutIf2,cCppOutElse
+ if !exists("c_no_if0_fold")
+ syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\%(%:\|#\)\s*\%(else\>\|elif\s\+\%(0\+\s*\%($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell fold
+ else
+ syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\%(%:\|#\)\s*\%(else\>\|elif\s\+\%(0\+\s*\%($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell
+ endif
+ syn region cCppOutElse contained matchgroup=cCppOutWrapper start="^\s*\%(%:\|#\)\s*\%(else\|elif\)" end="^\s*\%(%:\|#\)\s*endif\>"me=s-1 contains=TOP,cPreCondit
+ syn region cCppInWrapper start="^\s*\zs\%(%:\|#\)\s*if\s\+0*[1-9]\d*\s*\%($\|//\|/\*\||\)" end=".\@=\|$" contains=cCppInIf,cCppInElse fold
+ syn region cCppInIf contained matchgroup=cCppInWrapper start="\d\+" end="^\s*\%(%:\|#\)\s*endif\>" contains=TOP,cPreCondit
+ if !exists("c_no_if0_fold")
+ syn region cCppInElse contained start="^\s*\%(%:\|#\)\s*\%(else\>\|elif\s\+\%(0*[1-9]\d*\s*\%($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 fold
+ else
+ syn region cCppInElse contained start="^\s*\%(%:\|#\)\s*\%(else\>\|elif\s\+\%(0*[1-9]\d*\s*\%($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2
+ endif
+ syn region cCppInElse2 contained matchgroup=cCppInWrapper start="^\s*\%(%:\|#\)\s*\%(else\|elif\)\%([^/]\|/[^/*]\)*" end="^\s*\%(%:\|#\)\s*endif\>"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell
+ syn region cCppOutSkip contained start="^\s*\%(%:\|#\)\s*\%(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\%(%:\|#\)\s*endif\>" contains=cSpaceError,cCppOutSkip
+ syn region cCppInSkip contained matchgroup=cCppInWrapper start="^\s*\%(%:\|#\)\s*\%(if\s\+\%(\d\+\s*\%($\|//\|/\*\||\|&\)\)\@!\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\%(%:\|#\)\s*endif\>" containedin=cCppOutElse,cCppInIf,cCppInSkip contains=TOP,cPreProc
+endif
+syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match cIncluded display contained "<[^>]*>"
+syn match cInclude display "^\s*\zs\%(%:\|#\)\s*include\>\s*["<]" contains=cIncluded
+"syn match cLineSkip "\\$"
+syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti,cBadBlock
+syn region cDefine start="^\s*\zs\%(%:\|#\)\s*\%(define\|undef\)\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
+syn region cPreProc start="^\s*\zs\%(%:\|#\)\s*\%(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
+
+" Optional embedded Autodoc parsing
+if exists("c_autodoc")
+ syn match cAutodocReal display contained "\%(//\|[/ \t\v]\*\|^\*\)\@2<=!.*" contains=@cAutodoc containedin=cComment,cCommentL
+ syn cluster cCommentGroup add=cAutodocReal
+ syn cluster cPreProcGroup add=cAutodocReal
+endif
+
+" be able to fold #pragma regions
+syn region cPragma start="^\s*#pragma\s\+region\>" end="^\s*#pragma\s\+endregion\>" transparent keepend extend fold
+
+" Highlight User Labels
+syn cluster cMultiGroup contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString
+if s:ft ==# 'c' || exists("cpp_no_cpp11")
+ syn region cMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell,@cStringGroup
+endif
+" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
+syn cluster cLabelGroup contains=cUserLabel
+syn match cUserCont display "^\s*\zs\I\i*\s*:$" contains=@cLabelGroup
+syn match cUserCont display ";\s*\zs\I\i*\s*:$" contains=@cLabelGroup
+if s:in_cpp_family
+ syn match cUserCont display "^\s*\zs\%(class\|struct\|enum\)\@!\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
+ syn match cUserCont display ";\s*\zs\%(class\|struct\|enum\)\@!\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
+else
+ syn match cUserCont display "^\s*\zs\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
+ syn match cUserCont display ";\s*\zs\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
+endif
+
+syn match cUserLabel display "\I\i*" contained
+
+" Avoid recognizing most bitfields as labels
+syn match cBitField display "^\s*\zs\I\i*\s*:\s*[1-9]"me=e-1 contains=cType
+syn match cBitField display ";\s*\zs\I\i*\s*:\s*[1-9]"me=e-1 contains=cType
+
+if exists("c_minlines")
+ let b:c_minlines = c_minlines
+else
+ if !exists("c_no_if0")
+ let b:c_minlines = 50 " #if 0 constructs can be long
+ else
+ let b:c_minlines = 15 " mostly for () constructs
+ endif
+endif
+if exists("c_curly_error")
+ syn sync fromstart
+else
+ exec "syn sync ccomment cComment minlines=" . b:c_minlines
+endif
+
+" Define the default highlighting.
+" Only used when an item doesn't have highlighting yet
+hi def link cFormat cSpecial
+hi def link cCppString cString
+hi def link cCommentL cComment
+hi def link cCommentStart cComment
+hi def link cLabel Label
+hi def link cUserLabel Label
+hi def link cConditional Conditional
+hi def link cRepeat Repeat
+hi def link cCharacter Character
+hi def link cSpecialCharacter cSpecial
+hi def link cNumber Number
+hi def link cOctal Number
+hi def link cOctalZero PreProc " link this to Error if you want
+hi def link cFloat Float
+hi def link cOctalError cError
+hi def link cParenError cError
+hi def link cErrInParen cError
+hi def link cErrInBracket cError
+hi def link cCommentError cError
+hi def link cCommentStartError cError
+hi def link cSpaceError cError
+hi def link cWrongComTail cError
+hi def link cSpecialError cError
+hi def link cCurlyError cError
+hi def link cOperator Operator
+hi def link cStructure Structure
+hi def link cTypedef Structure
+hi def link cStorageClass StorageClass
+hi def link cInclude Include
+hi def link cPreProc PreProc
+hi def link cDefine Macro
+hi def link cIncluded cString
+hi def link cError Error
+hi def link cStatement Statement
+hi def link cCppInWrapper cCppOutWrapper
+hi def link cCppOutWrapper cPreCondit
+hi def link cPreConditMatch cPreCondit
+hi def link cPreCondit PreCondit
+hi def link cType Type
+hi def link cConstant Constant
+hi def link cCommentString cString
+hi def link cComment2String cString
+hi def link cCommentSkip cComment
+hi def link cString String
+hi def link cComment Comment
+hi def link cSpecial SpecialChar
+hi def link cTodo Todo
+hi def link cBadContinuation Error
+hi def link cCppOutSkip cCppOutIf2
+hi def link cCppInElse2 cCppOutIf2
+hi def link cCppOutIf2 cCppOut
+hi def link cCppOut Comment
+
+let b:current_syntax = "c"
+
+unlet s:ft
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/cabal.vim b/runtime/syntax/cabal.vim
new file mode 100644
index 0000000..74cda51
--- /dev/null
+++ b/runtime/syntax/cabal.vim
@@ -0,0 +1,278 @@
+" Vim syntax file
+" Language: Haskell Cabal Build file
+" Author: Vincent Berthoux <twinside@gmail.com>
+" Maintainer: Marcin Szamotulski <profunctor@pm.me>
+" Previous Maintainer: Vincent Berthoux <twinside@gmail.com>
+" File Types: .cabal
+" Last Change: 22 Oct 2022
+" v1.6: Added support for foreign-libraries
+" Added highlighting for various fields
+" v1.5: Incorporated changes from
+" https://github.com/sdiehl/haskell-vim-proto/blob/master/vim/syntax/cabal.vim
+" Use `syn keyword` instead of `syn match`.
+" Added cabalStatementRegion to limit matches of keywords, which fixes
+" the highlighting of description's value.
+" Added cabalVersionRegion to limit the scope of cabalVersionOperator
+" and cabalVersion matches.
+" Added cabalLanguage keyword.
+" Added calbalTitle, cabalAuthor and cabalMaintainer syntax groups.
+" Added ! and ^>= operators (calbal 2.0)
+" Added build-type keywords
+" v1.4: Add benchmark support, thanks to Simon Meier
+" v1.3: Updated to the last version of cabal
+" Added more highlighting for cabal function, true/false
+" and version number. Also added missing comment highlighting.
+" Cabal known compiler are highlighted too.
+"
+" V1.2: Added cpp-options which was missing. Feature implemented
+" by GHC, found with a GHC warning, but undocumented.
+" Whatever...
+"
+" v1.1: Fixed operator problems and added ftdetect file
+" (thanks to Sebastian Schwarz)
+"
+" v1.0: Cabal syntax in vimball format
+" (thanks to Magnus Therning)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" this file uses line continuation
+let s:cpo_save = &cpo
+set cpo&vim
+
+" set iskeyword for this syntax script
+syn iskeyword @,48-57,192-255,-
+
+" Case sensitive matches
+syn case match
+
+syn keyword cabalConditional if else
+syn keyword cabalFunction os arche impl flag
+syn match cabalComment /--.*$/
+
+" Case insensitive matches
+syn case ignore
+
+syn keyword cabalCategory contained
+ \ executable
+ \ library
+ \ benchmark
+ \ test-suite
+ \ source-repository
+ \ flag
+ \ foreign-library
+ \ custom-setup
+ \ common
+syn match cabalCategoryTitle contained /[^{]*\ze{\?/
+syn match cabalCategoryRegion
+ \ contains=cabalCategory,cabalCategoryTitle
+ \ nextgroup=cabalCategory skipwhite
+ \ /^\c\s*\(contained\|executable\|library\|benchmark\|test-suite\|source-repository\|flag\|foreign-library\|custom-setup\|common\)\+\s*\%(.*$\|$\)/
+syn keyword cabalTruth true false
+
+" cabalStatementRegion which limits the scope of cabalStatement keywords, this
+" way they are not highlighted in description.
+syn region cabalStatementRegion start=+^\s*\(--\)\@<!\k\+\s*:+ end=+:+
+syn keyword cabalStatement contained containedin=cabalStatementRegion
+ \ default-language
+ \ default-extensions
+ \ author
+ \ autogen-includes
+ \ autogen-modules
+ \ asm-sources
+ \ asm-options
+ \ branch
+ \ bug-reports
+ \ build-depends
+ \ build-tools
+ \ build-tool-depends
+ \ build-type
+ \ buildable
+ \ c-sources
+ \ cabal-version
+ \ category
+ \ cc-options
+ \ copyright
+ \ cmm-sources
+ \ cmm-options
+ \ cpp-options
+ \ cxx-options
+ \ cxx-sources
+ \ data-dir
+ \ data-files
+ \ default
+ \ default-extensions
+ \ description
+ \ executable
+ \ exposed-modules
+ \ exposed
+ \ extensions
+ \ extra-bundled-libraries
+ \ extra-doc-files
+ \ extra-dynamic-library-flavours
+ \ extra-framework-dirs
+ \ extra-ghci-libraries
+ \ extra-lib-dirs
+ \ extra-lib-dirs-static
+ \ extra-libraries
+ \ extra-libraries-static
+ \ extra-library-flavours
+ \ extra-source-files
+ \ extra-tmp-files
+ \ for example
+ \ frameworks
+ \ ghc-options
+ \ ghc-prof-options
+ \ ghc-shared-options
+ \ ghcjs-options
+ \ ghcjs-prof-options
+ \ ghcjs-shared-options
+ \ homepage
+ \ hs-source-dir
+ \ hs-source-dirs
+ \ hugs-options
+ \ import
+ \ include-dirs
+ \ includes
+ \ install-includes
+ \ js-sources
+ \ ld-options
+ \ lib-version-info
+ \ lib-version-linux
+ \ license
+ \ license-file
+ \ location
+ \ main-is
+ \ maintainer
+ \ manual
+ \ mixins
+ \ module
+ \ mod-def-file
+ \ name
+ \ nhc98-options
+ \ options
+ \ other-extensions
+ \ other-language
+ \ other-languages
+ \ other-modules
+ \ package-url
+ \ pkgconfig-depends
+ \ scope
+ \ setup-depends
+ \ signatures
+ \ stability
+ \ subdir
+ \ synopsis
+ \ reexported-modules
+ \ tag
+ \ tested-with
+ \ test-module
+ \ type
+ \ version
+ \ virtual-modules
+
+" operators and version operators
+syn match cabalOperator /&&\|||\|!/
+syn match cabalVersionOperator contained
+ \ /!\|==\|\^\?>=\|<=\|<\|>/
+" match version: `[%]\@<!` is to exclude `%20` in http addresses.
+syn match cabalVersion contained
+ \ /[%$_-]\@<!\<\d\+\%(\.\d\+\)*\%(\.\*\)\?\>/
+" cabalVersionRegion which limits the scope of cabalVersion pattern.
+syn match cabalVersionRegionA
+ \ contains=cabalVersionOperator,cabalVersion
+ \ keepend
+ \ /\%(==\|\^\?>=\|<=\|<\|>\)\s*\d\+\%(\.\d\+\)*\%(\.\*\)\?\>/
+" version inside `version: ...`
+syn match cabalVersionRegionB
+ \ contains=cabalStatementRegion,cabalVersionOperator,cabalVersion
+ \ /^\s*\%(cabal-\)\?version\s*:.*$/
+
+syn keyword cabalLanguage Haskell98 Haskell2010
+
+" title region
+syn match cabalName contained /:\@<=.*/
+syn match cabalNameRegion
+ \ contains=cabalStatementRegion,cabalName
+ \ nextgroup=cabalStatementRegion
+ \ oneline
+ \ /^\c\s*name\s*:.*$/
+
+" author region
+syn match cabalAuthor contained /:\@<=.*/
+syn match cabalAuthorRegion
+ \ contains=cabalStatementRegion,cabalStatement,cabalAuthor
+ \ nextgroup=cabalStatementRegion
+ \ oneline
+ \ /^\c\s*author\s*:.*$/
+
+" maintainer region
+syn match cabalMaintainer contained /:\@<=.*/
+syn match cabalMaintainerRegion
+ \ contains=cabalStatementRegion,cabalStatement,cabalMaintainer
+ \ nextgroup=cabalStatementRegion
+ \ oneline
+ \ /^\c\s*maintainer\s*:.*$/
+
+" license region
+syn match cabalLicense contained /:\@<=.*/
+syn match cabalLicenseRegion
+ \ contains=cabalStatementRegion,cabalStatement,cabalLicense
+ \ nextgroup=cabalStatementRegion
+ \ oneline
+ \ /^\c\s*license\s*:.*$/
+
+" license-file region
+syn match cabalLicenseFile contained /:\@<=.*/
+syn match cabalLicenseFileRegion
+ \ contains=cabalStatementRegion,cabalStatement,cabalLicenseFile
+ \ nextgroup=cabalStatementRegion
+ \ oneline
+ \ /^\c\s*license-file\s*:.*$/
+
+" tested-with region with compilers and versions
+syn keyword cabalCompiler contained ghc nhc yhc hugs hbc helium jhc lhc
+syn match cabalTestedWithRegion
+ \ contains=cabalStatementRegion,cabalStatement,cabalCompiler,cabalVersionRegionA
+ \ nextgroup=cabalStatementRegion
+ \ oneline
+ \ /^\c\s*tested-with\s*:.*$/
+
+" build type keywords
+syn keyword cabalBuildType contained
+ \ simple custom configure
+syn match cabalBuildTypeRegion
+ \ contains=cabalStatementRegion,cabalStatement,cabalBuildType
+ \ nextgroup=cabalStatementRegion
+ \ /^\c\s*build-type\s*:.*$/
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link cabalName Title
+hi def link cabalAuthor Normal
+hi def link cabalMaintainer Normal
+hi def link cabalCategoryTitle Title
+hi def link cabalLicense Normal
+hi def link cabalLicenseFile Normal
+hi def link cabalBuildType Keyword
+hi def link cabalVersion Number
+hi def link cabalTruth Boolean
+hi def link cabalComment Comment
+hi def link cabalStatement Statement
+hi def link cabalLanguage Type
+hi def link cabalCategory Type
+hi def link cabalFunction Function
+hi def link cabalConditional Conditional
+hi def link cabalOperator Operator
+hi def link cabalVersionOperator Operator
+hi def link cabalCompiler Constant
+
+let b:current_syntax = "cabal"
+
+let &cpo = s:cpo_save
+unlet! s:cpo_save
+
+" vim: ts=8
diff --git a/runtime/syntax/cabalconfig.vim b/runtime/syntax/cabalconfig.vim
new file mode 100644
index 0000000..0165725
--- /dev/null
+++ b/runtime/syntax/cabalconfig.vim
@@ -0,0 +1,30 @@
+" Vim syntax file
+" Language: Cabal Config
+" Maintainer: profunctor@pm.me
+" Last Change: Marcin Szamotulski
+" Original Author: Marcin Szamotulski
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match CabalConfigSection /^\S[[:alpha:]]\+\%(-[[:alpha:]]\+\)*[^:]*$/
+syn region CabalConfigRegion matchgroup=CabalConfigKey start=/^\s*[[:alpha:]]\+\%(-[[:alpha:]]\+\)*:/ matchgroup=NONE end=/$/ contains=CabalConfigSeparator,CabalConfigKeyword,CabalConfigPath keepend
+syn match CabalConfigComment /^\s*--.*$/
+syn match CabalConfigValue /.*$/ contained
+syn match CabalConfigKey /[[:alpha:]]\+\%(-[[:alpha:]]\+\)*\ze:/
+syn keyword CabalConfigSeparator : contained
+syn match CabalConfigVariable /\$[[:alpha:]]\+/
+syn keyword CabalConfigKeyword True False ghc
+syn match CabalConfigPath /\%([[:alpha:]]\+:\)\?\%(\/[[:print:]]\+\)\+/
+
+hi def link CabalConfigComment Comment
+hi def link CabalConfigSection Title
+hi def link CabalConfigKey Statement
+hi def link CabalConfigSeparator NonText
+hi def link CabalConfigValue Normal
+hi def link CabalConfigVariable Identifier
+hi def link CabalConfigKeyword Keyword
+hi def link CabalConfigPath Directory
+
+let b:current_syntax = "cabal.config"
diff --git a/runtime/syntax/cabalproject.vim b/runtime/syntax/cabalproject.vim
new file mode 100644
index 0000000..12143b9
--- /dev/null
+++ b/runtime/syntax/cabalproject.vim
@@ -0,0 +1,28 @@
+" Vim syntax file
+" Language: Cabal Project
+" Maintainer: profunctor@pm.me
+" Last Change: Marcin Szamotulski
+" Original Author: Marcin Szamotulski
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match CabalProjectComment /^\s*--.*/ contains=@Spell
+syn match CabalProjectField /^\w\%(\w\|-\)\+/ contains=@NoSpell
+
+syn keyword CabalProjectBoolean true false True False
+syn keyword CabalProjectCompiler ghc ghcjs jhc lhc uhc haskell-suite
+syn match CabalProjectNat /\<\d\+\>/
+syn keyword CabalProjectJobs $ncpus
+syn keyword CabalProjectProfilingLevel default none exported-functions toplevel-functions all-functions
+
+hi def link CabalProjectComment Comment
+hi def link CabalProjectField Statement
+hi def link CabalProjectBoolean Boolean
+hi def link CabalProjectCompiler Identifier
+hi def link CabalProjectNat Number
+hi def link CabalProjectJobs Number
+hi def link CabalProjectProfilingLevel Statement
+
+let b:current_syntax = "cabal.project"
diff --git a/runtime/syntax/calendar.vim b/runtime/syntax/calendar.vim
new file mode 100644
index 0000000..4250109
--- /dev/null
+++ b/runtime/syntax/calendar.vim
@@ -0,0 +1,110 @@
+" Vim syntax file
+" Language: calendar(1) input file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword calendarTodo contained TODO FIXME XXX NOTE
+
+syn region calendarComment start='/\*' end='\*/'
+ \ contains=calendarTodo,@Spell
+
+syn region calendarCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl
+ \ end=+"+ end='$' contains=calendarSpecial
+syn match calendarSpecial display contained '\\\%(x\x\+\|\o\{1,3}\|.\|$\)'
+syn match calendarSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)"
+
+syn region calendarPreCondit start='^\s*#\s*\%(if\|ifdef\|ifndef\|elif\)\>'
+ \ skip='\\$' end='$'
+ \ contains=calendarComment,calendarCppString
+syn match calendarPreCondit display '^\s*#\s*\%(else\|endif\)\>'
+syn region calendarCppOut start='^\s*#\s*if\s\+0\+' end='.\@=\|$'
+ \ contains=calendarCppOut2
+syn region calendarCppOut2 contained start='0'
+ \ end='^\s*#\s*\%(endif\|else\|elif\)\>'
+ \ contains=calendarSpaceError,calendarCppSkip
+syn region calendarCppSkip contained
+ \ start='^\s*#\s*\%(if\|ifdef\|ifndef\)\>'
+ \ skip='\\$' end='^\s*#\s*endif\>'
+ \ contains=calendarSpaceError,calendarCppSkip
+syn region calendarIncluded display contained start=+"+ skip=+\\\\\|\\"+
+ \ end=+"+
+syn match calendarIncluded display contained '<[^>]*>'
+syn match calendarInclude display '^\s*#\s*include\>\s*["<]'
+ \ contains=calendarIncluded
+syn cluster calendarPreProcGroup contains=calendarPreCondit,calendarIncluded,
+ \ calendarInclude,calendarDefine,
+ \ calendarCppOut,calendarCppOut2,
+ \ calendarCppSkip,calendarString,
+ \ calendarSpecial,calendarTodo
+syn region calendarDefine start='^\s*#\s*\%(define\|undef\)\>'
+ \ skip='\\$' end='$'
+ \ contains=ALLBUT,@calendarPreProcGroup
+syn region calendarPreProc start='^\s*#\s*\%(pragma\|line\|warning\|warn\|error\)\>'
+ \ skip='\\$' end='$' keepend
+ \ contains=ALLBUT,@calendarPreProcGroup
+
+syn keyword calendarKeyword CHARSET BODUN LANG
+syn case ignore
+syn keyword calendarKeyword Easter Pashka
+syn case match
+
+syn case ignore
+syn match calendarNumber display '\<\d\+\>'
+syn keyword calendarMonth Jan[uary] Feb[ruary] Mar[ch] Apr[il] May
+ \ Jun[e] Jul[y] Aug[ust] Sep[tember]
+ \ Oct[ober] Nov[ember] Dec[ember]
+syn match calendarMonth display '\<\%(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\)\.'
+syn keyword calendarWeekday Mon[day] Tue[sday] Wed[nesday] Thu[rsday]
+syn keyword calendarWeekday Fri[day] Sat[urday] Sun[day]
+syn match calendarWeekday display '\<\%(Mon\|Tue\|Wed\|Thu\|Fri\|Sat\|Sun\)\.'
+ \ nextgroup=calendarWeekdayMod
+syn match calendarWeekdayMod display '[+-]\d\+\>'
+syn case match
+
+syn match calendarTime display '\<\%([01]\=\d\|2[0-3]\):[0-5]\d\%(:[0-5]\d\)\='
+syn match calendarTime display '\<\%(0\=[1-9]\|1[0-2]\):[0-5]\d\%(:[0-5]\d\)\=\s*[AaPp][Mm]'
+
+syn match calendarVariable '\*'
+
+if exists("c_minlines")
+ let b:c_minlines = c_minlines
+else
+ if !exists("c_no_if0")
+ let b:c_minlines = 50 " #if 0 constructs can be long
+ else
+ let b:c_minlines = 15 " mostly for () constructs
+ endif
+endif
+exec "syn sync ccomment calendarComment minlines=" . b:c_minlines
+
+hi def link calendarTodo Todo
+hi def link calendarComment Comment
+hi def link calendarCppString String
+hi def link calendarSpecial SpecialChar
+hi def link calendarPreCondit PreCondit
+hi def link calendarCppOut Comment
+hi def link calendarCppOut2 calendarCppOut
+hi def link calendarCppSkip calendarCppOut
+hi def link calendarIncluded String
+hi def link calendarInclude Include
+hi def link calendarDefine Macro
+hi def link calendarPreProc PreProc
+hi def link calendarKeyword Keyword
+hi def link calendarNumber Number
+hi def link calendarMonth String
+hi def link calendarWeekday String
+hi def link calendarWeekdayMod Special
+hi def link calendarTime Number
+hi def link calendarVariable Identifier
+
+let b:current_syntax = "calendar"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/catalog.vim b/runtime/syntax/catalog.vim
new file mode 100644
index 0000000..0a1d511
--- /dev/null
+++ b/runtime/syntax/catalog.vim
@@ -0,0 +1,30 @@
+" Vim syntax file
+" Language: sgml catalog file
+" Maintainer: Johannes Zellner <johannes@zellner.org>
+" Last Change: Fr, 04 Nov 2005 12:46:45 CET
+" Filenames: /etc/sgml.catalog
+" $Id: catalog.vim,v 1.2 2005/11/23 21:11:10 vimboss Exp $
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" strings
+syn region catalogString start=+"+ skip=+\\\\\|\\"+ end=+"+ keepend
+syn region catalogString start=+'+ skip=+\\\\\|\\'+ end=+'+ keepend
+
+syn region catalogComment start=+--+ end=+--+ contains=catalogTodo
+syn keyword catalogTodo TODO FIXME XXX NOTE contained
+syn keyword catalogKeyword DOCTYPE OVERRIDE PUBLIC DTDDECL ENTITY CATALOG
+
+
+" The default highlighting.
+hi def link catalogString String
+hi def link catalogComment Comment
+hi def link catalogTodo Todo
+hi def link catalogKeyword Statement
+
+let b:current_syntax = "catalog"
diff --git a/runtime/syntax/cdl.vim b/runtime/syntax/cdl.vim
new file mode 100644
index 0000000..2a458d4
--- /dev/null
+++ b/runtime/syntax/cdl.vim
@@ -0,0 +1,78 @@
+" Vim syntax file
+" Language: Comshare Dimension Definition Language
+" Maintainer: Raul Segura Acevedo <raulseguraaceved@netscape.net>
+" Last change: 2016 Sep 20
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+sy case ignore
+sy sync fromstart
+sy keyword cdlStatement dimension hierarchy group grouphierarchy schedule class
+sy keyword cdlType add update file category main altername removeall required notrequired
+sy keyword cdlConditional if then elseif else endif and or not cons rpt xlt
+sy keyword cdlFunction ChildOf IChildOf LeafChildOf DescendantOf IDescendantOf LeafDescendantOf MemberIs CountOf
+
+sy keyword cdlIdentifier contained id name desc description xlttype precision symbol curr_ name group_name rate_name
+sy keyword cdlIdentifier contained xcheck endbal accounttype natsign consolidate formula pctown usage periodicity
+sy match cdlIdentifier contained 'child\s*name'
+sy match cdlIdentifier contained 'parent\s*name'
+sy match cdlIdentifier contained 'grp\s*description'
+sy match cdlIdentifier contained 'grpchild\s*name'
+sy match cdlIdentifier contained 'grpparent\s*name'
+sy match cdlIdentifier contained 'preceding\s*member'
+sy match cdlIdentifier contained 'unit\s*name'
+sy match cdlIdentifier contained 'unit\s*id'
+sy match cdlIdentifier contained 'schedule\s*name'
+sy match cdlIdentifier contained 'schedule\s*id'
+
+sy match cdlString /\[[^]]*]/ contains=cdlRestricted,cdlNotSupported
+sy match cdlRestricted contained /[&*,_]/
+" not supported
+sy match cdlNotSupported contained /[:"!']/
+
+sy keyword cdlTodo contained TODO FIXME XXX
+sy cluster cdlCommentGroup contains=cdlTodo
+sy match cdlComment '//.*' contains=@cdlCommentGroup
+sy region cdlComment start="/\*" end="\*/" contains=@cdlCommentGroup fold
+sy match cdlCommentE "\*/"
+
+sy region cdlParen transparent start='(' end=')' contains=ALLBUT,cdlParenE,cdlRestricted,cdlNotSupported
+"sy region cdlParen transparent start='(' end=')' contains=cdlIdentifier,cdlComment,cdlParenWordE
+sy match cdlParenE ")"
+"sy match cdlParenWordE contained "\k\+"
+
+sy keyword cdlFxType allocation downfoot expr xltgain
+"sy keyword cdlFxType contained allocation downfoot expr xltgain
+"sy region cdlFx transparent start='\k\+(' end=')' contains=cdlConditional,cdlFunction,cdlString,cdlComment,cdlFxType
+
+set foldmethod=expr
+set foldexpr=(getline(v:lnum+1)=~'{'\|\|getline(v:lnum)=~'//\\s\\*\\{5}.*table')?'>1':1
+%foldo!
+set foldmethod=manual
+let b:match_words='\<if\>:\<then\>:\<elseif\>:\<else\>:\<endif\>'
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link cdlStatement Statement
+hi def link cdlType Type
+hi def link cdlFxType Type
+hi def link cdlIdentifier Identifier
+hi def link cdlString String
+hi def link cdlRestricted WarningMsg
+hi def link cdlNotSupported ErrorMsg
+hi def link cdlTodo Todo
+hi def link cdlComment Comment
+hi def link cdlCommentE ErrorMsg
+hi def link cdlParenE ErrorMsg
+hi def link cdlParenWordE ErrorMsg
+hi def link cdlFunction Function
+hi def link cdlConditional Conditional
+
+
+let b:current_syntax = "cdl"
+
+" vim: ts=8
diff --git a/runtime/syntax/cdrdaoconf.vim b/runtime/syntax/cdrdaoconf.vim
new file mode 100644
index 0000000..0fa6510
--- /dev/null
+++ b/runtime/syntax/cdrdaoconf.vim
@@ -0,0 +1,139 @@
+" Vim syntax file
+" Language: cdrdao(1) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-09-02
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword cdrdaoconfTodo
+ \ TODO FIXME XXX NOTE
+
+syn match cdrdaoconfBegin
+ \ display
+ \ nextgroup=@cdrdaoconfKeyword,cdrdaoconfComment
+ \ '^'
+
+syn cluster cdrdaoconfKeyword
+ \ contains=cdrdaoconfIntegerKeyword,
+ \ cdrdaoconfDriverKeyword,
+ \ cdrdaoconfDeviceKeyword,
+ \ cdrdaoconfPathKeyword
+
+syn keyword cdrdaoconfIntegerKeyword
+ \ contained
+ \ nextgroup=cdrdaoconfIntegerDelimiter
+ \ write_speed
+ \ write_buffers
+ \ user_capacity
+ \ full_burn
+ \ read_speed
+ \ cddb_timeout
+
+syn keyword cdrdaoconfIntegerKeyword
+ \ contained
+ \ nextgroup=cdrdaoconfParanoiaModeDelimiter
+ \ read_paranoia_mode
+
+syn keyword cdrdaoconfDriverKeyword
+ \ contained
+ \ nextgroup=cdrdaoconfDriverDelimiter
+ \ write_driver
+ \ read_driver
+
+syn keyword cdrdaoconfDeviceKeyword
+ \ contained
+ \ nextgroup=cdrdaoconfDeviceDelimiter
+ \ write_device
+ \ read_device
+
+syn keyword cdrdaoconfPathKeyword
+ \ contained
+ \ nextgroup=cdrdaoconfPathDelimiter
+ \ cddb_directory
+ \ tmp_file_dir
+
+syn match cdrdaoconfIntegerDelimiter
+ \ contained
+ \ nextgroup=cdrdaoconfInteger
+ \ skipwhite
+ \ ':'
+
+syn match cdrdaoconfParanoiaModeDelimiter
+ \ contained
+ \ nextgroup=cdrdaoconfParanoiaMode
+ \ skipwhite
+ \ ':'
+
+syn match cdrdaoconfDriverDelimiter
+ \ contained
+ \ nextgroup=cdrdaoconfDriver
+ \ skipwhite
+ \ ':'
+
+syn match cdrdaoconfDeviceDelimiter
+ \ contained
+ \ nextgroup=cdrdaoconfDevice
+ \ skipwhite
+ \ ':'
+
+syn match cdrdaoconfPathDelimiter
+ \ contained
+ \ nextgroup=cdrdaoconfPath
+ \ skipwhite
+ \ ':'
+
+syn match cdrdaoconfInteger
+ \ contained
+ \ '\<\d\+\>'
+
+syn match cdrdaoParanoiaMode
+ \ contained
+ \ '[0123]'
+
+syn match cdrdaoconfDriver
+ \ contained
+ \ '\<\(cdd2600\|generic-mmc\%(-raw\)\=\|plextor\%(-scan\)\|ricoh-mp6200\|sony-cdu9\%(20\|48\)\|taiyo-yuden\|teac-cdr55\|toshiba\|yamaha-cdr10x\)\>'
+
+syn region cdrdaoconfDevice
+ \ contained
+ \ matchgroup=cdrdaoconfDevice
+ \ start=+"+
+ \ end=+"+
+
+syn region cdrdaoconfPath
+ \ contained
+ \ matchgroup=cdrdaoconfPath
+ \ start=+"+
+ \ end=+"+
+
+syn match cdrdaoconfComment
+ \ contains=cdrdaoconfTodo,@Spell
+ \ '^.*#.*$'
+
+hi def link cdrdaoconfTodo Todo
+hi def link cdrdaoconfComment Comment
+hi def link cdrdaoconfKeyword Keyword
+hi def link cdrdaoconfIntegerKeyword cdrdaoconfKeyword
+hi def link cdrdaoconfDriverKeyword cdrdaoconfKeyword
+hi def link cdrdaoconfDeviceKeyword cdrdaoconfKeyword
+hi def link cdrdaoconfPathKeyword cdrdaoconfKeyword
+hi def link cdrdaoconfDelimiter Delimiter
+hi def link cdrdaoconfIntegerDelimiter cdrdaoconfDelimiter
+hi def link cdrdaoconfDriverDelimiter cdrdaoconfDelimiter
+hi def link cdrdaoconfDeviceDelimiter cdrdaoconfDelimiter
+hi def link cdrdaoconfPathDelimiter cdrdaoconfDelimiter
+hi def link cdrdaoconfInteger Number
+hi def link cdrdaoconfParanoiaMode Number
+hi def link cdrdaoconfDriver Identifier
+hi def link cdrdaoconfDevice cdrdaoconfPath
+hi def link cdrdaoconfPath String
+
+let b:current_syntax = "cdrdaoconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/cdrtoc.vim b/runtime/syntax/cdrtoc.vim
new file mode 100644
index 0000000..866784d
--- /dev/null
+++ b/runtime/syntax/cdrtoc.vim
@@ -0,0 +1,537 @@
+" Vim syntax file
+" Language: cdrdao(1) TOC file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-05-10
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword cdrtocTodo
+ \ contained
+ \ TODO
+ \ FIXME
+ \ XXX
+ \ NOTE
+
+syn cluster cdrtocCommentContents
+ \ contains=
+ \ cdrtocTodo,
+ \ @Spell
+
+syn cluster cdrtocHeaderFollowsInitial
+ \ contains=
+ \ cdrtocHeaderCommentInitial,
+ \ cdrtocHeaderCatalog,
+ \ cdrtocHeaderTOCType,
+ \ cdrtocHeaderCDText,
+ \ cdrtocTrack
+
+syn match cdrtocHeaderBegin
+ \ nextgroup=@cdrtocHeaderFollowsInitial
+ \ skipwhite skipempty
+ \ '\%^'
+
+let s:mmssff_pattern = '\%([0-5]\d\|\d\):\%([0-5]\d\|\d\):\%([0-6]\d\|7[0-5]\|\d\)\>'
+let s:byte_pattern = '\<\%([01]\=\d\{1,2}\|2\%([0-4]\d\|5[0-5]\)\)\>'
+let s:length_pattern = '\%(\%([0-5]\d\|\d\):\%([0-5]\d\|\d\):\%([0-6]\d\|7[0-5]\|\d\)\|\d\+\)\>'
+
+function s:def_comment(name, nextgroup)
+ execute 'syn match' a:name
+ \ 'nextgroup=' . a:nextgroup . ',' . a:name
+ \ 'skipwhite skipempty'
+ \ 'contains=@cdrtocCommentContents'
+ \ 'contained'
+ \ "'//.*$'"
+ execute 'hi def link' a:name 'cdrtocComment'
+endfunction
+
+function s:def_keywords(name, nextgroup, keywords)
+ let comment_group = a:name . 'FollowComment'
+ execute 'syn keyword' a:name
+ \ 'nextgroup=' . a:nextgroup . ',' . comment_group
+ \ 'skipwhite skipempty'
+ \ 'contained'
+ \ join(a:keywords)
+
+ call s:def_comment(comment_group, a:nextgroup)
+endfunction
+
+function s:def_keyword(name, nextgroup, keyword)
+ call s:def_keywords(a:name, a:nextgroup, [a:keyword])
+endfunction
+
+" NOTE: Pattern needs to escape any “@â€s.
+function s:def_match(name, nextgroup, pattern)
+ let comment_group = a:name . 'FollowComment'
+ execute 'syn match' a:name
+ \ 'nextgroup=' . a:nextgroup . ',' . comment_group
+ \ 'skipwhite skipempty'
+ \ 'contained'
+ \ '@' . a:pattern . '@'
+
+ call s:def_comment(comment_group, a:nextgroup)
+endfunction
+
+function s:def_region(name, nextgroup, start, skip, end, matchgroup, contains)
+ let comment_group = a:name . 'FollowComment'
+ execute 'syn region' a:name
+ \ 'nextgroup=' . a:nextgroup . ',' . comment_group
+ \ 'skipwhite skipempty'
+ \ 'contained'
+ \ 'matchgroup=' . a:matchgroup
+ \ 'contains=' . a:contains
+ \ 'start=@' . a:start . '@'
+ \ (a:skip != "" ? ('skip=@' . a:skip . '@') : "")
+ \ 'end=@' . a:end . '@'
+
+ call s:def_comment(comment_group, a:nextgroup)
+endfunction
+
+call s:def_comment('cdrtocHeaderCommentInitial', '@cdrtocHeaderFollowsInitial')
+
+call s:def_keyword('cdrtocHeaderCatalog', 'cdrtocHeaderCatalogNumber', 'CATALOG')
+
+call s:def_match('cdrtocHeaderCatalogNumber', '@cdrtocHeaderFollowsInitial', '"\d\{13\}"')
+
+call s:def_keywords('cdrtocHeaderTOCType', '@cdrtocHeaderFollowsInitial', ['CD_DA', 'CD_ROM', 'CD_ROM_XA'])
+
+call s:def_keyword('cdrtocHeaderCDText', 'cdrtocHeaderCDTextStart', 'CD_TEXT')
+
+" TODO: Actually, language maps aren’t required by TocParser.g, but let’s keep
+" things simple (and in agreement with what the manual page says).
+call s:def_match('cdrtocHeaderCDTextStart', 'cdrtocHeaderCDTextLanguageMap', '{')
+
+call s:def_keyword('cdrtocHeaderCDTextLanguageMap', 'cdrtocHeaderLanguageMapStart', 'LANGUAGE_MAP')
+
+call s:def_match('cdrtocHeaderLanguageMapStart', 'cdrtocHeaderLanguageMapLanguageNumber', '{')
+
+call s:def_match('cdrtocHeaderLanguageMapLanguageNumber', 'cdrtocHeaderLanguageMapColon', '\<[0-7]\>')
+
+call s:def_match('cdrtocHeaderLanguageMapColon', 'cdrtocHeaderLanguageMapCountryCode,cdrtocHeaderLanguageMapCountryCodeName', ':')
+
+syn cluster cdrtocHeaderLanguageMapCountryCodeFollow
+ \ contains=
+ \ cdrtocHeaderLanguageMapLanguageNumber,
+ \ cdrtocHeaderLanguageMapEnd
+
+call s:def_match('cdrtocHeaderLanguageMapCountryCode',
+ \ '@cdrtocHeaderLanguageMapCountryCodeFollow',
+ \ s:byte_pattern)
+
+call s:def_keyword('cdrtocHeaderLanguageMapCountryCodeName',
+ \ '@cdrtocHeaderLanguageMapCountryCodeFollow',
+ \ 'EN')
+
+call s:def_match('cdrtocHeaderLanguageMapEnd',
+ \ 'cdrtocHeaderLanguage,cdrtocHeaderCDTextEnd',
+ \ '}')
+
+call s:def_keyword('cdrtocHeaderLanguage', 'cdrtocHeaderLanguageNumber', 'LANGUAGE')
+
+call s:def_match('cdrtocHeaderLanguageNumber', 'cdrtocHeaderLanguageStart', '\<[0-7]\>')
+
+call s:def_match('cdrtocHeaderLanguageStart',
+ \ 'cdrtocHeaderCDTextItem,cdrtocHeaderLanguageEnd',
+ \ '{')
+
+syn cluster cdrtocHeaderCDTextData
+ \ contains=
+ \ cdrtocHeaderCDTextDataString,
+ \ cdrtocHeaderCDTextDataBinaryStart
+
+call s:def_keywords('cdrtocHeaderCDTextItem',
+ \ '@cdrtocHeaderCDTextData',
+ \ ['TITLE', 'PERFORMER', 'SONGWRITER', 'COMPOSER',
+ \ 'ARRANGER', 'MESSAGE', 'DISC_ID', 'GENRE', 'TOC_INFO1',
+ \ 'TOC_INFO2', 'UPC_EAN', 'ISRC', 'SIZE_INFO'])
+
+call s:def_region('cdrtocHeaderCDTextDataString',
+ \ 'cdrtocHeaderCDTextItem,cdrtocHeaderLanguageEnd',
+ \ '"',
+ \ '\\\\\|\\"',
+ \ '"',
+ \ 'cdrtocHeaderCDTextDataStringDelimiters',
+ \ 'cdrtocHeaderCDTextDataStringSpecialChar')
+
+syn match cdrtocHeaderCDTextDataStringSpecialChar
+ \ contained
+ \ display
+ \ '\\\%(\o\o\o\|["\\]\)'
+
+call s:def_match('cdrtocHeaderCDTextDataBinaryStart',
+ \ 'cdrtocHeaderCDTextDataBinaryInteger',
+ \ '{')
+
+call s:def_match('cdrtocHeaderCDTextDataBinaryInteger',
+ \ 'cdrtocHeaderCDTextDataBinarySeparator,cdrtocHeaderCDTextDataBinaryEnd',
+ \ s:byte_pattern)
+
+call s:def_match('cdrtocHeaderCDTextDataBinarySeparator',
+ \ 'cdrtocHeaderCDTextDataBinaryInteger',
+ \ ',')
+
+call s:def_match('cdrtocHeaderCDTextDataBinaryEnd',
+ \ 'cdrtocHeaderCDTextItem,cdrtocHeaderLanguageEnd',
+ \ '}')
+
+call s:def_match('cdrtocHeaderLanguageEnd',
+ \ 'cdrtocHeaderLanguage,cdrtocHeaderCDTextEnd',
+ \ '}')
+
+call s:def_match('cdrtocHeaderCDTextEnd',
+ \ 'cdrtocTrack',
+ \ '}')
+
+syn cluster cdrtocTrackFollow
+ \ contains=
+ \ @cdrtocTrackFlags,
+ \ cdrtocTrackCDText,
+ \ cdrtocTrackPregap,
+ \ @cdrtocTrackContents
+
+call s:def_keyword('cdrtocTrack', 'cdrtocTrackMode', 'TRACK')
+
+call s:def_keywords('cdrtocTrackMode',
+ \ 'cdrtocTrackSubChannelMode,@cdrtocTrackFollow',
+ \ ['AUDIO', 'MODE1', 'MODE1_RAW', 'MODE2', 'MODE2_FORM1',
+ \ 'MODE2_FORM2', 'MODE2_FORM_MIX', 'MODE2_RAW'])
+
+call s:def_keywords('cdrtocTrackSubChannelMode',
+ \ '@cdrtocTrackFollow',
+ \ ['RW', 'RW_RAW'])
+
+syn cluster cdrtocTrackFlags
+ \ contains=
+ \ cdrtocTrackFlagNo,
+ \ cdrtocTrackFlagCopy,
+ \ cdrtocTrackFlagPreEmphasis,
+ \ cdrtocTrackFlag
+
+call s:def_keyword('cdrtocTrackFlagNo',
+ \ 'cdrtocTrackFlagCopy,cdrtocTrackFlagPreEmphasis',
+ \ 'NO')
+
+call s:def_keyword('cdrtocTrackFlagCopy', '@cdrtocTrackFollow', 'COPY')
+
+call s:def_keyword('cdrtocTrackFlagPreEmphasis', '@cdrtocTrackFollow', 'PRE_EMPHASIS')
+
+call s:def_keywords('cdrtocTrackFlag',
+ \ '@cdrtocTrackFollow',
+ \ ['TWO_CHANNEL_AUDIO', 'FOUR_CHANNEL_AUDIO'])
+
+call s:def_keyword('cdrtocTrackFlag', 'cdrtocTrackISRC', 'ISRC')
+
+call s:def_match('cdrtocTrackISRC',
+ \ '@cdrtocTrackFollow',
+ \ '"[[:upper:][:digit:]]\{5}\d\{7}"')
+
+call s:def_keyword('cdrtocTrackCDText', 'cdrtocTrackCDTextStart', 'CD_TEXT')
+
+call s:def_match('cdrtocTrackCDTextStart', 'cdrtocTrackCDTextLanguage', '{')
+
+call s:def_keyword('cdrtocTrackCDTextLanguage', 'cdrtocTrackCDTextLanguageNumber', 'LANGUAGE')
+
+call s:def_match('cdrtocTrackCDTextLanguageNumber', 'cdrtocTrackCDTextLanguageStart', '\<[0-7]\>')
+
+call s:def_match('cdrtocTrackCDTextLanguageStart',
+ \ 'cdrtocTrackCDTextItem,cdrtocTrackCDTextLanguageEnd',
+ \ '{')
+
+syn cluster cdrtocTrackCDTextData
+ \ contains=
+ \ cdrtocTrackCDTextDataString,
+ \ cdrtocTrackCDTextDataBinaryStart
+
+call s:def_keywords('cdrtocTrackCDTextItem',
+ \ '@cdrtocTrackCDTextData',
+ \ ['TITLE', 'PERFORMER', 'SONGWRITER', 'COMPOSER', 'ARRANGER',
+ \ 'MESSAGE', 'ISRC'])
+
+call s:def_region('cdrtocTrackCDTextDataString',
+ \ 'cdrtocTrackCDTextItem,cdrtocTrackCDTextLanguageEnd',
+ \ '"',
+ \ '\\\\\|\\"',
+ \ '"',
+ \ 'cdrtocTrackCDTextDataStringDelimiters',
+ \ 'cdrtocTrackCDTextDataStringSpecialChar')
+
+syn match cdrtocTrackCDTextDataStringSpecialChar
+ \ contained
+ \ display
+ \ '\\\%(\o\o\o\|["\\]\)'
+
+call s:def_match('cdrtocTrackCDTextDataBinaryStart',
+ \ 'cdrtocTrackCDTextDataBinaryInteger',
+ \ '{')
+
+call s:def_match('cdrtocTrackCDTextDataBinaryInteger',
+ \ 'cdrtocTrackCDTextDataBinarySeparator,cdrtocTrackCDTextDataBinaryEnd',
+ \ s:byte_pattern)
+
+call s:def_match('cdrtocTrackCDTextDataBinarySeparator',
+ \ 'cdrtocTrackCDTextDataBinaryInteger',
+ \ ',')
+
+call s:def_match('cdrtocTrackCDTextDataBinaryEnd',
+ \ 'cdrtocTrackCDTextItem,cdrtocTrackCDTextLanguageEnd',
+ \ '}')
+
+call s:def_match('cdrtocTrackCDTextLanguageEnd',
+ \ 'cdrtocTrackCDTextLanguage,cdrtocTrackCDTextEnd',
+ \ '}')
+
+call s:def_match('cdrtocTrackCDTextEnd',
+ \ 'cdrtocTrackPregap,@cdrtocTrackContents',
+ \ '}')
+
+call s:def_keyword('cdrtocTrackPregap', 'cdrtocTrackPregapMMSSFF', 'PREGAP')
+
+call s:def_match('cdrtocTrackPregapMMSSFF',
+ \ '@cdrtocTrackContents',
+ \ s:mmssff_pattern)
+
+syn cluster cdrtocTrackContents
+ \ contains=
+ \ cdrtocTrackSubTrack,
+ \ cdrtocTrackMarker
+
+syn cluster cdrtocTrackContentsFollow
+ \ contains=
+ \ @cdrtocTrackContents,
+ \ cdrtocTrackIndex,
+ \ cdrtocTrack
+
+call s:def_keywords('cdrtocTrackSubTrack',
+ \ 'cdrtocTrackSubTrackFileFilename',
+ \ ['FILE', 'AUDIOFILE'])
+
+call s:def_region('cdrtocTrackSubTrackFileFilename',
+ \ 'cdrtocTrackSubTrackFileStart',
+ \ '"',
+ \ '\\\\\|\\"',
+ \ '"',
+ \ 'cdrtocTrackSubTrackFileFilenameDelimiters',
+ \ 'cdrtocTrackSubTrackFileFilenameSpecialChar')
+
+syn match cdrtocTrackSubTrackFileFilenameSpecialChar
+ \ contained
+ \ display
+ \ '\\\%(\o\o\o\|["\\]\)'
+
+call s:def_match('cdrtocTrackSubTrackFileStart',
+ \ 'cdrtocTrackSubTrackFileLength,@cdrtocTrackContentsFollow',
+ \ s:length_pattern)
+
+call s:def_match('cdrtocTrackSubTrackFileLength',
+ \ '@cdrtocTrackContentsFollow',
+ \ s:length_pattern)
+
+call s:def_keyword('cdrtocTrackSubTrack', 'cdrtocTrackContentDatafileFilename', 'DATAFILE')
+
+call s:def_region('cdrtocTrackSubTrackDatafileFilename',
+ \ 'cdrtocTrackSubTrackDatafileLength',
+ \ '"',
+ \ '\\\\\|\\"',
+ \ '"',
+ \ 'cdrtocTrackSubTrackDatafileFilenameDelimiters',
+ \ 'cdrtocTrackSubTrackDatafileFilenameSpecialChar')
+
+syn match cdrtocTrackSubTrackdatafileFilenameSpecialChar
+ \ contained
+ \ display
+ \ '\\\%(\o\o\o\|["\\]\)'
+
+call s:def_match('cdrtocTrackDatafileLength',
+ \ '@cdrtocTrackContentsFollow',
+ \ s:length_pattern)
+
+call s:def_keyword('cdrtocTrackSubTrack', 'cdrtocTrackContentFifoFilename', 'DATAFILE')
+
+call s:def_region('cdrtocTrackSubTrackFifoFilename',
+ \ 'cdrtocTrackSubTrackFifoLength',
+ \ '"',
+ \ '\\\\\|\\"',
+ \ '"',
+ \ 'cdrtocTrackSubTrackFifoFilenameDelimiters',
+ \ 'cdrtocTrackSubTrackFifoFilenameSpecialChar')
+
+syn match cdrtocTrackSubTrackdatafileFilenameSpecialChar
+ \ contained
+ \ display
+ \ '\\\%(\o\o\o\|["\\]\)'
+
+call s:def_match('cdrtocTrackFifoLength',
+ \ '@cdrtocTrackContentsFollow',
+ \ s:length_pattern)
+
+call s:def_keyword('cdrtocTrackSubTrack', 'cdrtocTrackSilenceLength', 'SILENCE')
+
+call s:def_match('cdrtocTrackSilenceLength',
+ \ '@cdrtocTrackContentsFollow',
+ \ s:length_pattern)
+
+call s:def_keyword('cdrtocTrackSubTrack',
+ \ 'cdrtocTrackSubTrackZeroDataMode,' .
+ \ 'cdrtocTrackSubTrackZeroDataSubChannelMode,' .
+ \ 'cdrtocTrackSubTrackZeroDataLength',
+ \ 'ZERO')
+
+call s:def_keywords('cdrtocTrackSubTrackZeroDataMode',
+ \ 'cdrtocTrackSubTrackZeroSubChannelMode,cdrtocTrackSubTrackZeroDataLength',
+ \ ['AUDIO', 'MODE1', 'MODE1_RAW', 'MODE2', 'MODE2_FORM1',
+ \ 'MODE2_FORM2', 'MODE2_FORM_MIX', 'MODE2_RAW'])
+
+call s:def_keywords('cdrtocTrackSubTrackZeroDataSubChannelMode',
+ \ 'cdrtocTrackSubTrackZeroDataLength',
+ \ ['RW', 'RW_RAW'])
+
+call s:def_match('cdrtocTrackSubTrackZeroDataLength',
+ \ '@cdrtocTrackContentsFollow',
+ \ s:length_pattern)
+
+call s:def_keyword('cdrtocTrackMarker',
+ \ '@cdrtocTrackContentsFollow,cdrtocTrackMarkerStartMMSSFF',
+ \ 'START')
+
+call s:def_match('cdrtocTrackMarkerStartMMSSFF',
+ \ '@cdrtocTrackContentsFollow',
+ \ s:mmssff_pattern)
+
+call s:def_keyword('cdrtocTrackMarker',
+ \ '@cdrtocTrackContentsFollow,cdrtocTrackMarkerEndMMSSFF',
+ \ 'END')
+
+call s:def_match('cdrtocTrackMarkerEndMMSSFF',
+ \ '@cdrtocTrackContentsFollow',
+ \ s:mmssff_pattern)
+
+call s:def_keyword('cdrtocTrackIndex', 'cdrtocTrackIndexMMSSFF', 'INDEX')
+
+call s:def_match('cdrtocTrackIndexMMSSFF',
+ \ 'cdrtocTrackIndex,cdrtocTrack',
+ \ s:mmssff_pattern)
+
+delfunction s:def_region
+delfunction s:def_match
+delfunction s:def_keyword
+delfunction s:def_keywords
+delfunction s:def_comment
+
+syn sync fromstart
+
+hi def link cdrtocKeyword Keyword
+hi def link cdrtocHeaderKeyword cdrtocKeyword
+hi def link cdrtocHeaderCDText cdrtocHeaderKeyword
+hi def link cdrtocDelimiter Delimiter
+hi def link cdrtocCDTextDataBinaryEnd cdrtocDelimiter
+hi def link cdrtocHeaderCDTextDataBinaryEnd cdrtocHeaderCDTextDataBinaryEnd
+hi def link cdrtocNumber Number
+hi def link cdrtocCDTextDataBinaryInteger cdrtocNumber
+hi def link cdrtocHeaderCDTextDataBinaryInteger cdrtocCDTextDataBinaryInteger
+hi def link cdrtocCDTextDataBinarySeparator cdrtocDelimiter
+hi def link cdrtocHeaderCDTextDataBinarySeparator cdrtocCDTextDataBinarySeparator
+hi def link cdrtocCDTextDataBinaryStart cdrtocDelimiter
+hi def link cdrtocHeaderCDTextDataBinaryStart cdrtocCDTextDataBinaryStart
+hi def link cdrtocString String
+hi def link cdrtocCDTextDataString cdrtocString
+hi def link cdrtocHeaderCDTextDataString cdrtocCDTextDataString
+hi def link cdrtocCDTextDataStringDelimiters cdrtocDelimiter
+hi def link cdrtocHeaderCDTextDataStringDelimiters cdrtocCDTextDataStringDelimiters
+hi def link cdrtocCDTextDataStringSpecialChar SpecialChar
+hi def link cdrtocHeaderCDTextDataStringSpecialChar cdrtocCDTextDataStringSpecialChar
+hi def link cdrtocCDTextEnd cdrtocDelimiter
+hi def link cdrtocHeaderCDTextEnd cdrtocCDTextEnd
+hi def link cdrtocType Type
+hi def link cdrtocCDTextItem cdrtocType
+hi def link cdrtocHeaderCDTextItem cdrtocCDTextItem
+hi def link cdrtocHeaderCDTextLanguageMap cdrtocHeaderKeyword
+hi def link cdrtocCDTextStart cdrtocDelimiter
+hi def link cdrtocHeaderCDTextStart cdrtocCDTextStart
+hi def link cdrtocHeaderCatalog cdrtocHeaderKeyword
+hi def link cdrtocHeaderCatalogNumber cdrtocString
+hi def link cdrtocComment Comment
+hi def link cdrtocHeaderCommentInitial cdrtocComment
+hi def link cdrtocHeaderLanguage cdrtocKeyword
+hi def link cdrtocLanguageEnd cdrtocDelimiter
+hi def link cdrtocHeaderLanguageEnd cdrtocLanguageEnd
+hi def link cdrtocHeaderLanguageMapColon cdrtocDelimiter
+hi def link cdrtocIdentifier Identifier
+hi def link cdrtocHeaderLanguageMapCountryCode cdrtocNumber
+hi def link cdrtocHeaderLanguageMapCountryCodeName cdrtocIdentifier
+hi def link cdrtocHeaderLanguageMapEnd cdrtocDelimiter
+hi def link cdrtocHeaderLanguageMapLanguageNumber cdrtocNumber
+hi def link cdrtocHeaderLanguageMapStart cdrtocDelimiter
+hi def link cdrtocLanguageNumber cdrtocNumber
+hi def link cdrtocHeaderLanguageNumber cdrtocLanguageNumber
+hi def link cdrtocLanguageStart cdrtocDelimiter
+hi def link cdrtocHeaderLanguageStart cdrtocLanguageStart
+hi def link cdrtocHeaderTOCType cdrtocType
+hi def link cdrtocTodo Todo
+hi def link cdrtocTrackKeyword cdrtocKeyword
+hi def link cdrtocTrack cdrtocTrackKeyword
+hi def link cdrtocTrackCDText cdrtocTrackKeyword
+hi def link cdrtocTrackCDTextDataBinaryEnd cdrtocHeaderCDTextDataBinaryEnd
+hi def link cdrtocTrackCDTextDataBinaryInteger cdrtocHeaderCDTextDataBinaryInteger
+hi def link cdrtocTrackCDTextDataBinarySeparator cdrtocHeaderCDTextDataBinarySeparator
+hi def link cdrtocTrackCDTextDataBinaryStart cdrtocHeaderCDTextDataBinaryStart
+hi def link cdrtocTrackCDTextDataString cdrtocHeaderCDTextDataString
+hi def link cdrtocTrackCDTextDataStringDelimiters cdrtocCDTextDataStringDelimiters
+hi def link cdrtocTrackCDTextDataStringSpecialChar cdrtocCDTextDataStringSpecialChar
+hi def link cdrtocTrackCDTextEnd cdrtocCDTextEnd
+hi def link cdrtocTrackCDTextItem cdrtocCDTextItem
+hi def link cdrtocTrackCDTextStart cdrtocCDTextStart
+hi def link cdrtocLength cdrtocNumber
+hi def link cdrtocTrackDatafileLength cdrtocLength
+hi def link cdrtocTrackFifoLength cdrtocLength
+hi def link cdrtocPreProc PreProc
+hi def link cdrtocTrackFlag cdrtocPreProc
+hi def link cdrtocTrackFlagCopy cdrtocTrackFlag
+hi def link cdrtocSpecial Special
+hi def link cdrtocTrackFlagNo cdrtocSpecial
+hi def link cdrtocTrackFlagPreEmphasis cdrtocTrackFlag
+hi def link cdrtocTrackISRC cdrtocTrackFlag
+hi def link cdrtocTrackIndex cdrtocTrackKeyword
+hi def link cdrtocMMSSFF cdrtocLength
+hi def link cdrtocTrackIndexMMSSFF cdrtocMMSSFF
+hi def link cdrtocTrackCDTextLanguage cdrtocTrackKeyword
+hi def link cdrtocTrackCDTextLanguageEnd cdrtocLanguageEnd
+hi def link cdrtocTrackCDTextLanguageNumber cdrtocLanguageNumber
+hi def link cdrtocTrackCDTextLanguageStart cdrtocLanguageStart
+hi def link cdrtocTrackContents StorageClass
+hi def link cdrtocTrackMarker cdrtocTrackContents
+hi def link cdrtocTrackMarkerEndMMSSFF cdrtocMMSSFF
+hi def link cdrtocTrackMarkerStartMMSSFF cdrtocMMSSFF
+hi def link cdrtocTrackMode Type
+hi def link cdrtocTrackPregap cdrtocTrackContents
+hi def link cdrtocTrackPregapMMSSFF cdrtocMMSSFF
+hi def link cdrtocTrackSilenceLength cdrtocLength
+hi def link cdrtocTrackSubChannelMode cdrtocPreProc
+hi def link cdrtocTrackSubTrack cdrtocTrackContents
+hi def link cdrtocFilename cdrtocString
+hi def link cdrtocTrackSubTrackDatafileFilename cdrtocFilename
+hi def link cdrtocTrackSubTrackDatafileFilenameDelimiters cdrtocTrackSubTrackDatafileFilename
+hi def link cdrtocSpecialChar SpecialChar
+hi def link cdrtocTrackSubTrackDatafileFilenameSpecialChar cdrtocSpecialChar
+hi def link cdrtocTrackSubTrackDatafileLength cdrtocLength
+hi def link cdrtocTrackSubTrackFifoFilename cdrtocFilename
+hi def link cdrtocTrackSubTrackFifoFilenameDelimiters cdrtocTrackSubTrackFifoFilename
+hi def link cdrtocTrackSubTrackFifoFilenameSpecialChar cdrtocSpecialChar
+hi def link cdrtocTrackSubTrackFifoLength cdrtocLength
+hi def link cdrtocTrackSubTrackFileFilename cdrtocFilename
+hi def link cdrtocTrackSubTrackFileFilenameDelimiters cdrtocTrackSubTrackFileFilename
+hi def link cdrtocTrackSubTrackFileFilenameSpecialChar cdrtocSpecialChar
+hi def link cdrtocTrackSubTrackFileLength cdrtocLength
+hi def link cdrtocTrackSubTrackFileStart cdrtocLength
+hi def link cdrtocTrackSubTrackZeroDataLength cdrtocLength
+hi def link cdrtocTrackSubTrackZeroDataMode Type
+hi def link cdrtocTrackSubTrackZeroDataSubChannelMode cdrtocPreProc
+hi def link cdrtocTrackSubTrackdatafileFilenameSpecialChar cdrtocSpecialChar
+
+let b:current_syntax = "cdrtoc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/cf.vim b/runtime/syntax/cf.vim
new file mode 100644
index 0000000..04f9f59
--- /dev/null
+++ b/runtime/syntax/cf.vim
@@ -0,0 +1,1018 @@
+" Vim syntax file
+"
+" Language: CFML (ColdFusion)
+" Author: Ernst M. van der Linden <ernst.vanderlinden@ernestoz.com>
+" License: The MIT License (MIT)
+"
+" Maintainer: Ernst M. van der Linden <ernst.vanderlinden@ernestoz.com>
+" URL: https://github.com/ernstvanderlinden/vim-coldfusion
+" Last Change: 2017 Nov 28
+"
+" Filenames: *.cfc *.cfm
+
+" Quit when a syntax file was already loaded.
+if exists("b:current_syntax")
+ finish
+endif
+
+" Using line continuation here.
+let s:cpo_save=&cpo
+set cpo-=C
+
+sy sync fromstart
+" 20171126: disabled as we have fast computers now.
+"sy sync maxlines=2000
+sy case ignore
+
+" INCLUDES {{{
+sy include @sqlSyntax $VIMRUNTIME/syntax/sql.vim
+" 20161010: Disabled include html highlighting as it contains huge keywords
+" regex, so it will have impact on performance. Use own simple SGML tag
+" coloring instead.
+"runtime! syntax/html.vim
+" / INCLUDES }}}
+
+" NUMBER {{{
+sy match cfmlNumber
+ \ "\v<\d+>"
+" / NUMBER }}}
+
+" EQUAL SIGN {{{
+sy match cfmlEqualSign
+ \ "\v\="
+" / EQUAL SIGN }}}
+
+" BOOLEAN {{{
+sy match cfmlBoolean
+ \ "\v<(true|false)>"
+" / BOOLEAN }}}
+
+" HASH SURROUNDED {{{
+sy region cfmlHashSurround
+ \ keepend
+ \ oneline
+ \ start="#"
+ \ end="#"
+ \ skip="##"
+ \ contains=
+ \@cfmlOperator,
+ \@cfmlPunctuation,
+ \cfmlBoolean,
+ \cfmlCoreKeyword,
+ \cfmlCoreScope,
+ \cfmlCustomKeyword,
+ \cfmlCustomScope,
+ \cfmlEqualSign,
+ \cfmlFunctionName,
+ \cfmlNumber
+" / HASH SURROUNDED }}}
+
+" OPERATOR {{{
+
+" OPERATOR - ARITHMETIC {{{
+" +7 -7
+" ++i --i
+" i++ i--
+" + - * / %
+" += -= *= /= %=
+" ^ mod
+sy match cfmlArithmeticOperator
+ \ "\v
+ \(\+|-)\ze\d
+ \|(\+\+|--)\ze\w
+ \|\w\zs(\+\+|--)
+ \|(\s(
+ \(\+|-|\*|\/|\%){1}\={,1}
+ \|\^
+ \|mod
+ \)\s)
+ \"
+" / OPERATOR - ARITHMETIC }}}
+
+" OPERATOR - BOOLEAN {{{
+" not and or xor eqv imp
+" ! && ||
+sy match cfmlBooleanOperator
+ \ "\v\s
+ \(not|and|or|xor|eqv|imp
+ \|\!|\&\&|\|\|
+ \)(\s|\))
+ \|\s\!\ze\w
+ \"
+" / OPERATOR - BOOLEAN }}}
+
+" OPERATOR - DECISION {{{
+"is|equal|eq
+"is not|not equal|neq
+"contains|does not contain
+"greater than|gt
+"less than|lt
+"greater than or equal to|gte|ge
+"less than or equal to|lte|le
+"==|!=|>|<|>=|<=
+sy match cfmlDecisionOperator
+ \ "\v\s
+ \(is|equal|eq
+ \|is not|not equal|neq
+ \|contains|does not contain
+ \|greater than|gt
+ \|less than|lt
+ \|greater than or equal to|gte|ge
+ \|less than or equal to|lte|le
+ \|(!|\<|\>|\=){1}\=
+ \|\<
+ \|\>
+ \)\s"
+" / OPERATOR - DECISION }}}
+
+" OPERATOR - STRING {{{
+" &
+" &=
+sy match cfmlStringOperator
+ \ "\v\s\&\={,1}\s"
+" / OPERATOR - STRING }}}
+
+" OPERATOR - TERNARY {{{
+" ? :
+sy match cfmlTernaryOperator
+ \ "\v\s
+ \\?|\:
+ \\s"
+" / OPERATOR - TERNARY }}}
+
+sy cluster cfmlOperator
+ \ contains=
+ \cfmlArithmeticOperator,
+ \cfmlBooleanOperator,
+ \cfmlDecisionOperator,
+ \cfmlStringOperator,
+ \cfmlTernaryOperator
+" / OPERATOR }}}
+
+" PARENTHESIS {{{
+sy cluster cfmlParenthesisRegionContains
+ \ contains=
+ \@cfmlAttribute,
+ \@cfmlComment,
+ \@cfmlFlowStatement,
+ \@cfmlOperator,
+ \@cfmlPunctuation,
+ \cfmlBoolean,
+ \cfmlBrace,
+ \cfmlCoreKeyword,
+ \cfmlCoreScope,
+ \cfmlCustomKeyword,
+ \cfmlCustomScope,
+ \cfmlEqualSign,
+ \cfmlFunctionName,
+ \cfmlNumber,
+ \cfmlStorageKeyword,
+ \cfmlStorageType
+
+sy region cfmlParenthesisRegion1
+ \ extend
+ \ matchgroup=cfmlParenthesis1
+ \ transparent
+ \ start=/(/
+ \ end=/)/
+ \ contains=
+ \cfmlParenthesisRegion2,
+ \@cfmlParenthesisRegionContains
+sy region cfmlParenthesisRegion2
+ \ matchgroup=cfmlParenthesis2
+ \ transparent
+ \ start=/(/
+ \ end=/)/
+ \ contains=
+ \cfmlParenthesisRegion3,
+ \@cfmlParenthesisRegionContains
+sy region cfmlParenthesisRegion3
+ \ matchgroup=cfmlParenthesis3
+ \ transparent
+ \ start=/(/
+ \ end=/)/
+ \ contains=
+ \cfmlParenthesisRegion1,
+ \@cfmlParenthesisRegionContains
+sy cluster cfmlParenthesisRegion
+ \ contains=
+ \cfmlParenthesisRegion1,
+ \cfmlParenthesisRegion2,
+ \cfmlParenthesisRegion3
+" / PARENTHESIS }}}
+
+" BRACE {{{
+sy match cfmlBrace
+ \ "{\|}"
+
+sy region cfmlBraceRegion
+ \ extend
+ \ fold
+ \ keepend
+ \ transparent
+ \ start="{"
+ \ end="}"
+" / BRACE }}}
+
+" PUNCTUATION {{{
+
+" PUNCTUATION - BRACKET {{{
+sy match cfmlBracket
+ \ "\(\[\|\]\)"
+ \ contained
+" / PUNCTUATION - BRACKET }}}
+
+" PUNCTUATION - CHAR {{{
+sy match cfmlComma ","
+sy match cfmlDot "\."
+sy match cfmlSemiColon ";"
+
+" / PUNCTUATION - CHAR }}}
+
+" PUNCTUATION - QUOTE {{{
+sy region cfmlSingleQuotedValue
+ \ matchgroup=cfmlSingleQuote
+ \ start=/'/
+ \ skip=/''/
+ \ end=/'/
+ \ contains=
+ \cfmlHashSurround
+
+sy region cfmlDoubleQuotedValue
+ \ matchgroup=cfmlDoubleQuote
+ \ start=/"/
+ \ skip=/""/
+ \ end=/"/
+ \ contains=
+ \cfmlHashSurround
+
+sy cluster cfmlQuotedValue
+ \ contains=
+ \cfmlDoubleQuotedValue,
+ \cfmlSingleQuotedValue
+
+sy cluster cfmlQuote
+ \ contains=
+ \cfmlDoubleQuote,
+ \cfmlSingleQuote
+" / PUNCTUATION - QUOTE }}}
+
+sy cluster cfmlPunctuation
+ \ contains=
+ \@cfmlQuote,
+ \@cfmlQuotedValue,
+ \cfmlBracket,
+ \cfmlComma,
+ \cfmlDot,
+ \cfmlSemiColon
+
+" / PUNCTUATION }}}
+
+" TAG START AND END {{{
+" tag start
+" <cf...>
+" s^^ e
+sy region cfmlTagStart
+ \ keepend
+ \ transparent
+ \ start="\c<cf_*"
+ \ end=">"
+\ contains=
+ \@cfmlAttribute,
+ \@cfmlComment,
+ \@cfmlOperator,
+ \@cfmlParenthesisRegion,
+ \@cfmlPunctuation,
+ \@cfmlQuote,
+ \@cfmlQuotedValue,
+ \cfmlAttrEqualSign,
+ \cfmlBoolean,
+ \cfmlBrace,
+ \cfmlCoreKeyword,
+ \cfmlCoreScope,
+ \cfmlCustomKeyword,
+ \cfmlCustomScope,
+ \cfmlEqualSign,
+ \cfmlFunctionName,
+ \cfmlNumber,
+ \cfmlStorageKeyword,
+ \cfmlStorageType,
+ \cfmlTagBracket,
+ \cfmlTagName
+
+" tag end
+" </cf...>
+" s^^^ e
+sy match cfmlTagEnd
+ \ transparent
+ \ "\c</cf_*[^>]*>"
+ \ contains=
+ \cfmlTagBracket,
+ \cfmlTagName
+
+" tag bracket
+" </...>
+" ^^ ^
+sy match cfmlTagBracket
+ \ contained
+ \ "\(<\|>\|\/\)"
+
+" tag name
+" <cf...>
+" s^^^e
+sy match cfmlTagName
+ \ contained
+ \ "\v<\/*\zs\ccf\w*"
+" / TAG START AND END }}}
+
+" ATTRIBUTE NAME AND VALUE {{{
+sy match cfmlAttrName
+ \ contained
+ \ "\v(var\s)@<!\w+\ze\s*\=([^\=])+"
+
+sy match cfmlAttrValue
+ \ contained
+ \ "\v(\=\"*)\zs\s*\w*"
+
+sy match cfmlAttrEqualSign
+ \ contained
+ \ "\v\="
+
+sy cluster cfmlAttribute
+\ contains=
+ \@cfmlQuotedValue,
+ \cfmlAttrEqualSign,
+ \cfmlAttrName,
+ \cfmlAttrValue,
+ \cfmlCoreKeyword,
+ \cfmlCoreScope
+" / ATTRIBUTE NAME AND VALUE }}}
+
+" TAG REGION AND FOLDING {{{
+
+" CFCOMPONENT REGION AND FOLD {{{
+" <cfcomponent
+" s^^^^^^^^^^^
+" </cfcomponent>
+" ^^^^^^^^^^^^^e
+sy region cfmlComponentTagRegion
+ \ fold
+ \ keepend
+ \ transparent
+ \ start="\c<cfcomponent"
+ \ end="\c</cfcomponent>"
+
+" / CFCOMPONENT REGION AND FOLD }}}
+
+" CFFUNCTION REGION AND FOLD {{{
+" <cffunction
+" s^^^^^^^^^^
+" </cffunction>
+" ^^^^^^^^^^^^e
+sy region cfmlFunctionTagRegion
+ \ fold
+ \ keepend
+ \ transparent
+ \ start="\c<cffunction"
+ \ end="\c</cffunction>"
+" / CFFUNCTION REGION AND FOLD }}}
+
+" CFIF REGION AND FOLD {{{
+" <cfif
+" s^^^^
+" </cfif>
+" ^^^^^^e
+sy region cfmlIfTagRegion
+ \ fold
+ \ keepend
+ \ transparent
+ \ start="\c<cfif"
+ \ end="\c</cfif>"
+" / CFIF REGION AND FOLD }}}
+
+" CFLOOP REGION AND FOLD {{{
+" <cfloop
+" s^^^^^^
+" </cfloop>
+" ^^^^^^^^e
+sy region cfmlLoopTagRegion
+ \ fold
+ \ keepend
+ \ transparent
+ \ start="\c<cfloop"
+ \ end="\c</cfloop>"
+" / CFLOOP REGION AND FOLD }}}
+
+" CFOUTPUT REGION AND FOLD {{{
+" <cfoutput
+" s^^^^^^^^
+" </cfoutput>
+" ^^^^^^^^^^e
+sy region cfmlOutputTagRegion
+ \ fold
+ \ keepend
+ \ transparent
+ \ start="\c<cfoutput"
+ \ end="\c</cfoutput>"
+" / CFOUTPUT REGION AND FOLD }}}
+
+" CFQUERY REGION AND FOLD {{{
+" <cfquery
+" s^^^^^^^
+" </cfquery>
+" ^^^^^^^^^e
+ "\@cfmlSqlStatement,
+sy region cfmlQueryTagRegion
+ \ fold
+ \ keepend
+ \ transparent
+ \ start="\c<cfquery"
+ \ end="\c</cfquery>"
+ \ contains=
+ \@cfmlSqlStatement,
+ \cfmlTagStart,
+ \cfmlTagEnd,
+ \cfmlTagComment
+" / CFQUERY REGION AND FOLD }}}
+
+" SAVECONTENT REGION AND FOLD {{{
+" <savecontent
+" s^^^^^^^^^^^
+" </savecontent>
+" ^^^^^^^^^^^^^e
+sy region cfmlSavecontentTagRegion
+ \ fold
+ \ keepend
+ \ transparent
+ \ start="\c<cfsavecontent"
+ \ end="\c</cfsavecontent>"
+" / SAVECONTENT REGION AND FOLD }}}
+
+" CFSCRIPT REGION AND FOLD {{{
+" <cfscript>
+" s^^^^^^^^^
+" </cfscript>
+" ^^^^^^^^^^e
+"\cfmlCustomScope,
+sy region cfmlScriptTagRegion
+ \ fold
+ \ keepend
+ \ transparent
+ \ start="\c<cfscript>"
+ \ end="\c</cfscript>"
+ \ contains=
+ \@cfmlComment,
+ \@cfmlFlowStatement,
+ \cfmlHashSurround,
+ \@cfmlOperator,
+ \@cfmlParenthesisRegion,
+ \@cfmlPunctuation,
+ \cfmlBoolean,
+ \cfmlBrace,
+ \cfmlCoreKeyword,
+ \cfmlCoreScope,
+ \cfmlCustomKeyword,
+ \cfmlCustomScope,
+ \cfmlEqualSign,
+ \cfmlFunctionDefinition,
+ \cfmlFunctionName,
+ \cfmlNumber,
+ \cfmlOddFunction,
+ \cfmlStorageKeyword,
+ \cfmlTagEnd,
+ \cfmlTagStart
+" / CFSCRIPT REGION AND FOLD }}}
+
+" CFSWITCH REGION AND FOLD {{{
+" <cfswitch
+" s^^^^^^^^
+" </cfswitch>
+" ^^^^^^^^^^e
+sy region cfmlSwitchTagRegion
+ \ fold
+ \ keepend
+ \ transparent
+ \ start="\c<cfswitch"
+ \ end="\c</cfswitch>"
+" / CFSWITCH REGION AND FOLD }}}
+
+" CFTRANSACTION REGION AND FOLD {{{
+" <cftransaction
+" s^^^^^^^^^^^^^
+" </cftransaction>
+" ^^^^^^^^^^^^^^^e
+sy region cfmlTransactionTagRegion
+ \ fold
+ \ keepend
+ \ transparent
+ \ start="\c<cftransaction"
+ \ end="\c</cftransaction>"
+" / CFTRANSACTION REGION AND FOLD }}}
+
+" CUSTOM TAG REGION AND FOLD {{{
+" <cf_...>
+" s^^^ ^
+" </cf_...>
+" ^^^^^ e
+sy region cfmlCustomTagRegion
+ \ fold
+ \ keepend
+ \ transparent
+ \ start="\c<cf_[^>]*>"
+ \ end="\c</cf_[^>]*>"
+" / CUSTOM TAG REGION AND FOLD }}}
+
+" / TAG REGION AND FOLDING }}}
+
+" COMMENT {{{
+
+" COMMENT BLOCK {{{
+" /*...*/
+" s^ ^e
+sy region cfmlCommentBlock
+ \ keepend
+ \ start="/\*"
+ \ end="\*/"
+ \ contains=
+ \cfmlMetaData
+" / COMMENT BLOCK }}}
+
+" COMMENT LINE {{{
+" //...
+" s^
+sy match cfmlCommentLine
+ \ "\/\/.*"
+" / COMMENT LINE }}}
+
+sy cluster cfmlComment
+ \ contains=
+ \cfmlCommentBlock,
+ \cfmlCommentLine
+" / COMMENT }}}
+
+" TAG COMMENT {{{
+" <!---...--->
+" s^^^^ ^^^e
+sy region cfmlTagComment
+ \ keepend
+ \ start="<!---"
+ \ end="--->"
+ \ contains=
+ \cfmlTagComment
+" / TAG COMMENT }}}
+
+" FLOW STATEMENT {{{
+" BRANCH FLOW KEYWORD {{{
+sy keyword cfmlBranchFlowKeyword
+ \ break
+ \ continue
+ \ return
+
+" / BRANCH KEYWORD }}}
+
+" DECISION FLOW KEYWORD {{{
+sy keyword cfmlDecisionFlowKeyword
+ \ case
+ \ defaultcase
+ \ else
+ \ if
+ \ switch
+
+" / DECISION FLOW KEYWORD }}}
+
+" LOOP FLOW KEYWORD {{{
+sy keyword cfmlLoopFlowKeyword
+ \ do
+ \ for
+ \ in
+ \ while
+
+" / LOOP FLOW KEYWORD }}}
+
+" TRY FLOW KEYWORD {{{
+sy keyword cfmlTryFlowKeyword
+ \ catch
+ \ finally
+ \ rethrow
+ \ throw
+ \ try
+
+" / TRY FLOW KEYWORD }}}
+
+sy cluster cfmlFlowStatement
+ \ contains=
+ \cfmlBranchFlowKeyword,
+ \cfmlDecisionFlowKeyword,
+ \cfmlLoopFlowKeyword,
+ \cfmlTryFlowKeyword
+
+" / FLOW STATEMENT }}}
+
+" STORAGE KEYWORD {{{
+sy keyword cfmlStorageKeyword
+ \ var
+" / STORAGE KEYWORD }}}
+
+" STORAGE TYPE {{{
+sy match cfmlStorageType
+ \ contained
+ \ "\v<
+ \(any
+ \|array
+ \|binary
+ \|boolean
+ \|date
+ \|numeric
+ \|query
+ \|string
+ \|struct
+ \|uuid
+ \|void
+ \|xml
+ \){1}\ze(\s*\=)@!"
+" / STORAGE TYPE }}}
+
+" CORE KEYWORD {{{
+sy match cfmlCoreKeyword
+ \ "\v<
+ \(new
+ \|required
+ \)\ze\s"
+" / CORE KEYWORD }}}
+
+" CORE SCOPE {{{
+sy match cfmlCoreScope
+ \ "\v<
+ \(application
+ \|arguments
+ \|attributes
+ \|caller
+ \|cfcatch
+ \|cffile
+ \|cfhttp
+ \|cgi
+ \|client
+ \|cookie
+ \|form
+ \|local
+ \|request
+ \|server
+ \|session
+ \|super
+ \|this
+ \|thisTag
+ \|thread
+ \|variables
+ \|url
+ \){1}\ze(,|\.|\[|\)|\s)"
+" / CORE SCOPE }}}
+
+" SQL STATEMENT {{{
+sy cluster cfmlSqlStatement
+ \ contains=
+ \@cfmlParenthesisRegion,
+ \@cfmlQuote,
+ \@cfmlQuotedValue,
+ \@sqlSyntax,
+ \cfmlBoolean,
+ \cfmlDot,
+ \cfmlEqualSign,
+ \cfmlFunctionName,
+ \cfmlHashSurround,
+ \cfmlNumber
+" / SQL STATEMENT }}}
+
+" TAG IN SCRIPT {{{
+sy match cfmlTagNameInScript
+ \ "\vcf_*\w+\s*\ze\("
+" / TAG IN SCRIPT }}}
+
+" METADATA {{{
+sy region cfmlMetaData
+ \ contained
+ \ keepend
+ \ start="@\w\+"
+ \ end="$"
+ \ contains=
+ \cfmlMetaDataName
+
+sy match cfmlMetaDataName
+ \ contained
+ \ "@\w\+"
+" / METADATA }}}
+
+" COMPONENT DEFINITION {{{
+sy region cfmlComponentDefinition
+ \ start="component"
+ \ end="{"me=e-1
+ \ contains=
+ \@cfmlAttribute,
+ \cfmlComponentKeyword
+
+sy match cfmlComponentKeyword
+ \ contained
+ \ "\v<component>"
+" / COMPONENT DEFINITION }}}
+
+" INTERFACE DEFINITION {{{
+sy match cfmlInterfaceDefinition
+ \ "interface\s.*{"me=e-1
+ \ contains=
+ \cfmlInterfaceKeyword
+
+sy match cfmlInterfaceKeyword
+ \ contained
+ \ "\v<interface>"
+" / INTERFACE DEFINITION }}}
+
+" PROPERTY {{{
+sy region cfmlProperty
+ \ transparent
+ \ start="\v<property>"
+ \ end=";"me=e-1
+ \ contains=
+ \@cfmlQuotedValue,
+ \cfmlAttrEqualSign,
+ \cfmlAttrName,
+ \cfmlAttrValue,
+ \cfmlPropertyKeyword
+
+sy match cfmlPropertyKeyword
+ \ contained
+ \ "\v<property>"
+" / PROPERTY }}}
+
+" FUNCTION DEFINITION {{{
+sy match cfmlFunctionDefinition
+ \ "\v
+ \(<(public|private|package)\s){,1}
+ \(<
+ \(any
+ \|array
+ \|binary
+ \|boolean
+ \|date
+ \|numeric
+ \|query
+ \|string
+ \|struct
+ \|uuid
+ \|void
+ \|xml
+ \)\s){,1}
+ \<function\s\w+\s*\("me=e-1
+ \ contains=
+ \cfmlFunctionKeyword,
+ \cfmlFunctionModifier,
+ \cfmlFunctionName,
+ \cfmlFunctionReturnType
+
+" FUNCTION KEYWORD {{{
+sy match cfmlFunctionKeyword
+ \ contained
+ \ "\v<function>"
+" / FUNCTION KEYWORD }}}
+
+" FUNCTION MODIFIER {{{
+sy match cfmlFunctionModifier
+ \ contained
+ \ "\v<
+ \(public
+ \|private
+ \|package
+ \)>"
+" / FUNCTION MODIFIER }}}
+
+" FUNCTION RETURN TYPE {{{
+sy match cfmlFunctionReturnType
+ \ contained
+ \ "\v
+ \(any
+ \|array
+ \|binary
+ \|boolean
+ \|date
+ \|numeric
+ \|query
+ \|string
+ \|struct
+ \|uuid
+ \|void
+ \|xml
+ \)"
+" / FUNCTION RETURN TYPE }}}
+
+" FUNCTION NAME {{{
+" specific regex for core functions decreases performance
+" so use the same highlighting for both function types
+sy match cfmlFunctionName
+ \ "\v<(cf|if|elseif|throw)@!\w+\s*\ze\("
+" / FUNCTION NAME }}}
+
+" / FUNCTION DEFINITION }}}
+
+" ODD FUNCTION {{{
+sy region cfmlOddFunction
+ \ transparent
+ \ start="\v<
+ \(abort
+ \|exit
+ \|import
+ \|include
+ \|lock
+ \|pageencoding
+ \|param
+ \|savecontent
+ \|thread
+ \|transaction
+ \){1}"
+ \ end="\v(\{|;)"me=e-1
+ \ contains=
+ \@cfmlQuotedValue,
+ \cfmlAttrEqualSign,
+ \cfmlAttrName,
+ \cfmlAttrValue,
+ \cfmlCoreKeyword,
+ \cfmlOddFunctionKeyword,
+ \cfmlCoreScope
+
+" ODD FUNCTION KEYWORD {{{
+sy match cfmlOddFunctionKeyword
+ \ contained
+ \ "\v<
+ \(abort
+ \|exit
+ \|import
+ \|include
+ \|lock
+ \|pageencoding
+ \|param
+ \|savecontent
+ \|thread
+ \|transaction
+ \)\ze(\s|$|;)"
+" / ODD FUNCTION KEYWORD }}}
+
+" / ODD FUNCTION }}}
+
+" CUSTOM {{{
+
+" CUSTOM KEYWORD {{{
+sy match cfmlCustomKeyword
+ \ contained
+ \ "\v<
+ \(customKeyword1
+ \|customKeyword2
+ \|customKeyword3
+ \)>"
+" / CUSTOM KEYWORD }}}
+
+" CUSTOM SCOPE {{{
+sy match cfmlCustomScope
+ \ contained
+ \ "\v<
+ \(prc
+ \|rc
+ \|event
+ \|(\w+Service)
+ \){1}\ze(\.|\[)"
+" / CUSTOM SCOPE }}}
+
+" / CUSTOM }}}
+
+" SGML TAG START AND END {{{
+" SGML tag start
+" <...>
+" s^^^e
+sy region cfmlSGMLTagStart
+ \ keepend
+ \ transparent
+ \ start="\v(\<cf)@!\zs\<\w+"
+ \ end=">"
+ \ contains=
+ \@cfmlAttribute,
+ \@cfmlComment,
+ \@cfmlOperator,
+ \@cfmlParenthesisRegion,
+ \@cfmlPunctuation,
+ \@cfmlQuote,
+ \@cfmlQuotedValue,
+ \cfmlAttrEqualSign,
+ \cfmlBoolean,
+ \cfmlBrace,
+ \cfmlCoreKeyword,
+ \cfmlCoreScope,
+ \cfmlCustomKeyword,
+ \cfmlCustomScope,
+ \cfmlEqualSign,
+ \cfmlFunctionName,
+ \cfmlNumber,
+ \cfmlStorageKeyword,
+ \cfmlStorageType,
+ \cfmlTagBracket,
+ \cfmlSGMLTagName
+
+" SGML tag end
+" </...>
+" s^^^^e
+sy match cfmlSGMLTagEnd
+ \ transparent
+ \ "\v(\<\/cf)@!\zs\<\/\w+\>"
+ \ contains=
+ \cfmlTagBracket,
+ \cfmlSGMLTagName
+
+" SGML tag name
+" <...>
+" s^^^e
+sy match cfmlSGMLTagName
+ \ contained
+ \ "\v(\<\/*)\zs\w+"
+
+" / SGML TAG START AND END }}}
+
+" HIGHLIGHTING {{{
+
+hi link cfmlNumber Number
+hi link cfmlBoolean Boolean
+hi link cfmlEqualSign Keyword
+" HASH SURROUND
+hi link cfmlHash PreProc
+hi link cfmlHashSurround PreProc
+" OPERATOR
+hi link cfmlArithmeticOperator Function
+hi link cfmlBooleanOperator Function
+hi link cfmlDecisionOperator Function
+hi link cfmlStringOperator Function
+hi link cfmlTernaryOperator Function
+" PARENTHESIS
+hi link cfmlParenthesis1 Statement
+hi link cfmlParenthesis2 String
+hi link cfmlParenthesis3 Delimiter
+" BRACE
+hi link cfmlBrace PreProc
+" PUNCTUATION - BRACKET
+hi link cfmlBracket Statement
+" PUNCTUATION - CHAR
+hi link cfmlComma Comment
+hi link cfmlDot Comment
+hi link cfmlSemiColon Comment
+" PUNCTUATION - QUOTE
+hi link cfmlDoubleQuote String
+hi link cfmlDoubleQuotedValue String
+hi link cfmlSingleQuote String
+hi link cfmlSingleQuotedValue String
+" TAG START AND END
+hi link cfmlTagName Function
+hi link cfmlTagBracket Comment
+" ATTRIBUTE NAME AND VALUE
+hi link cfmlAttrName Type
+hi link cfmlAttrValue Special
+" COMMENT
+hi link cfmlCommentBlock Comment
+hi link cfmlCommentLine Comment
+hi link cfmlTagComment Comment
+" FLOW STATEMENT
+hi link cfmlDecisionFlowKeyword Conditional
+hi link cfmlLoopFlowKeyword Repeat
+hi link cfmlTryFlowKeyword Exception
+hi link cfmlBranchFlowKeyword Keyword
+" STORAGE KEYWORD
+hi link cfmlStorageKeyword Keyword
+" STORAGE TYPE
+hi link cfmlStorageType Keyword
+" CORE KEYWORD
+hi link cfmlCoreKeyword PreProc
+" CORE SCOPE
+hi link cfmlCoreScope Keyword
+" TAG IN SCRIPT
+hi link cfmlTagNameInScript Function
+" METADATA
+" meta data value = cfmlMetaData
+hi link cfmlMetaData String
+hi link cfmlMetaDataName Type
+" COMPONENT DEFINITION
+hi link cfmlComponentKeyword Keyword
+" INTERFACE DEFINITION
+hi link cfmlInterfaceKeyword Keyword
+" PROPERTY
+hi link cfmlPropertyKeyword Keyword
+" FUNCTION DEFINITION
+hi link cfmlFunctionKeyword Keyword
+hi link cfmlFunctionModifier Keyword
+hi link cfmlFunctionReturnType Keyword
+hi link cfmlFunctionName Function
+" ODD FUNCTION
+hi link cfmlOddFunctionKeyword Function
+" CUSTOM
+hi link cfmlCustomKeyword Keyword
+hi link cfmlCustomScope Structure
+" SGML TAG
+hi link cfmlSGMLTagName Ignore
+
+" / HIGHLIGHTING }}}
+
+let b:current_syntax = "cfml"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/cfg.vim b/runtime/syntax/cfg.vim
new file mode 100644
index 0000000..f347b13
--- /dev/null
+++ b/runtime/syntax/cfg.vim
@@ -0,0 +1,48 @@
+" Vim syntax file
+" Language: Good old CFG files
+" Maintainer: Igor N. Prischepoff (igor@tyumbit.ru, pri_igor@mail.ru)
+" Last change: 2012 Aug 11
+
+" quit when a syntax file was already loaded
+if exists ("b:current_syntax")
+ finish
+endif
+
+" case off
+syn case ignore
+syn keyword CfgOnOff ON OFF YES NO TRUE FALSE contained
+syn match UncPath "\\\\\p*" contained
+"Dos Drive:\Path
+syn match CfgDirectory "[a-zA-Z]:\\\p*" contained
+"Parameters
+syn match CfgParams ".\{0}="me=e-1 contains=CfgComment
+"... and their values (don't want to highlight '=' sign)
+syn match CfgValues "=.*"hs=s+1 contains=CfgDirectory,UncPath,CfgComment,CfgString,CfgOnOff
+
+" Sections
+syn match CfgSection "\[.*\]"
+syn match CfgSection "{.*}"
+
+" String
+syn match CfgString "\".*\"" contained
+syn match CfgString "'.*'" contained
+
+" Comments (Everything before '#' or '//' or ';')
+syn match CfgComment "#.*"
+syn match CfgComment ";.*"
+syn match CfgComment "\/\/.*"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link CfgOnOff Label
+hi def link CfgComment Comment
+hi def link CfgSection Type
+hi def link CfgString String
+hi def link CfgParams Keyword
+hi def link CfgValues Constant
+hi def link CfgDirectory Directory
+hi def link UncPath Directory
+
+
+let b:current_syntax = "cfg"
+" vim:ts=8
diff --git a/runtime/syntax/ch.vim b/runtime/syntax/ch.vim
new file mode 100644
index 0000000..61f475b
--- /dev/null
+++ b/runtime/syntax/ch.vim
@@ -0,0 +1,38 @@
+" Vim syntax file
+" Language: Ch
+" Maintainer: SoftIntegration, Inc. <info@softintegration.com>
+" URL: http://www.softintegration.com/download/vim/syntax/ch.vim
+" Last change: 2004 Sep 01
+" Created based on cpp.vim
+"
+" Ch is a C/C++ interpreter with many high level extensions
+"
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the C syntax to start with
+runtime! syntax/c.vim
+unlet b:current_syntax
+
+" Ch extentions
+
+syn keyword chStatement new delete this foreach
+syn keyword chAccess public private
+syn keyword chStorageClass __declspec(global) __declspec(local)
+syn keyword chStructure class
+syn keyword chType string_t array
+
+" Default highlighting
+
+hi def link chAccess chStatement
+hi def link chExceptions Exception
+hi def link chStatement Statement
+hi def link chType Type
+hi def link chStructure Structure
+
+let b:current_syntax = "ch"
+
+" vim: ts=8
diff --git a/runtime/syntax/chaiscript.vim b/runtime/syntax/chaiscript.vim
new file mode 100644
index 0000000..5a64bdb
--- /dev/null
+++ b/runtime/syntax/chaiscript.vim
@@ -0,0 +1,94 @@
+" Vim syntax file
+" Language: ChaiScript
+" Maintainer: Jason Turner <lefticus 'at' gmail com>
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+end
+
+syn case match
+
+" syncing method
+syn sync fromstart
+
+" Strings
+syn region chaiscriptString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=chaiscriptSpecial,chaiscriptEval,@Spell
+
+" Escape characters
+syn match chaiscriptSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}"
+
+" String evals
+syn region chaiscriptEval contained start="${" end="}"
+
+" integer number
+syn match chaiscriptNumber "\<\d\+\>"
+
+" floating point number, with dot, optional exponent
+syn match chaiscriptFloat "\<\d\+\.\d*\%(e[-+]\=\d\+\)\=\>"
+
+" floating point number, starting with a dot, optional exponent
+syn match chaiscriptFloat "\.\d\+\%(e[-+]\=\d\+\)\=\>"
+
+" floating point number, without dot, with exponent
+syn match chaiscriptFloat "\<\d\+e[-+]\=\d\+\>"
+
+" Hex strings
+syn match chaiscriptNumber "\<0x\x\+\>"
+
+" Binary strings
+syn match chaiscriptNumber "\<0b[01]\+\>"
+
+" Various language features
+syn keyword chaiscriptCond if else
+syn keyword chaiscriptRepeat while for do
+syn keyword chaiscriptStatement break continue return
+syn keyword chaiscriptExceptions try catch throw
+
+"Keyword
+syn keyword chaiscriptKeyword def true false attr
+
+"Built in types
+syn keyword chaiscriptType fun var
+
+"Built in funcs, keep it simple
+syn keyword chaiscriptFunc eval throw
+
+"Let's treat all backtick operator function lookups as built in too
+syn region chaiscriptFunc matchgroup=chaiscriptFunc start="`" end="`"
+
+" Account for the "[1..10]" syntax, treating it as an operator
+" Intentionally leaving out all of the normal, well known operators
+syn match chaiscriptOperator "\.\."
+
+" Guard seperator as an operator
+syn match chaiscriptOperator ":"
+
+" Comments
+syn match chaiscriptComment "//.*$" contains=@Spell
+syn region chaiscriptComment matchgroup=chaiscriptComment start="/\*" end="\*/" contains=@Spell
+
+
+
+hi def link chaiscriptExceptions Exception
+hi def link chaiscriptKeyword Keyword
+hi def link chaiscriptStatement Statement
+hi def link chaiscriptRepeat Repeat
+hi def link chaiscriptString String
+hi def link chaiscriptNumber Number
+hi def link chaiscriptFloat Float
+hi def link chaiscriptOperator Operator
+hi def link chaiscriptConstant Constant
+hi def link chaiscriptCond Conditional
+hi def link chaiscriptFunction Function
+hi def link chaiscriptComment Comment
+hi def link chaiscriptTodo Todo
+hi def link chaiscriptError Error
+hi def link chaiscriptSpecial SpecialChar
+hi def link chaiscriptFunc Identifier
+hi def link chaiscriptType Type
+hi def link chaiscriptEval Special
+
+let b:current_syntax = "chaiscript"
+
+" vim: nowrap sw=2 sts=2 ts=8 noet
diff --git a/runtime/syntax/change.vim b/runtime/syntax/change.vim
new file mode 100644
index 0000000..a92767e
--- /dev/null
+++ b/runtime/syntax/change.vim
@@ -0,0 +1,29 @@
+" Vim syntax file
+" Language: WEB Changes
+" Maintainer: Andreas Scherer <andreas.scherer@pobox.com>
+" Last Change: April 25, 2001
+
+" Details of the change mechanism of the WEB and CWEB languages can be found
+" in the articles by Donald E. Knuth and Silvio Levy cited in "web.vim" and
+" "cweb.vim" respectively.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" We distinguish two groups of material, (a) stuff between @x..@y, and
+" (b) stuff between @y..@z. WEB/CWEB ignore everything else in a change file.
+syn region changeFromMaterial start="^@x.*$"ms=e+1 end="^@y.*$"me=s-1
+syn region changeToMaterial start="^@y.*$"ms=e+1 end="^@z.*$"me=s-1
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link changeFromMaterial String
+hi def link changeToMaterial Statement
+
+
+let b:current_syntax = "change"
+
+" vim: ts=8
diff --git a/runtime/syntax/changelog.vim b/runtime/syntax/changelog.vim
new file mode 100644
index 0000000..cf9021e
--- /dev/null
+++ b/runtime/syntax/changelog.vim
@@ -0,0 +1,58 @@
+" Vim syntax file
+" Language: generic ChangeLog file
+" Written By: Gediminas Paulauskas <menesis@delfi.lt>
+" Maintainer: Corinna Vinschen <vinschen@redhat.com>
+" Last Change: June 1, 2003
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+if exists('b:changelog_spacing_errors')
+ let s:spacing_errors = b:changelog_spacing_errors
+elseif exists('g:changelog_spacing_errors')
+ let s:spacing_errors = g:changelog_spacing_errors
+else
+ let s:spacing_errors = 1
+endif
+
+if s:spacing_errors
+ syn match changelogError "^ \+"
+endif
+
+syn match changelogText "^\s.*$" contains=changelogMail,changelogNumber,changelogMonth,changelogDay,changelogError
+syn match changelogHeader "^\S.*$" contains=changelogNumber,changelogMonth,changelogDay,changelogMail
+syn region changelogFiles start="^\s\+[+*]\s" end=":" end="^$" contains=changelogBullet,changelogColon,changelogFuncs,changelogError keepend
+syn region changelogFiles start="^\s\+[([]" end=":" end="^$" contains=changelogBullet,changelogColon,changelogFuncs,changelogError keepend
+syn match changelogFuncs contained "(.\{-})" extend
+syn match changelogFuncs contained "\[.\{-}]" extend
+syn match changelogColon contained ":"
+
+syn match changelogBullet contained "^\s\+[+*]\s" contains=changelogError
+syn match changelogMail contained "<[A-Za-z0-9\._:+-]\+@[A-Za-z0-9\._-]\+>"
+syn keyword changelogMonth contained jan feb mar apr may jun jul aug sep oct nov dec
+syn keyword changelogDay contained mon tue wed thu fri sat sun
+syn match changelogNumber contained "[.-]*[0-9]\+"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link changelogText Normal
+hi def link changelogBullet Type
+hi def link changelogColon Type
+hi def link changelogFiles Comment
+hi def link changelogFuncs Comment
+hi def link changelogHeader Statement
+hi def link changelogMail Special
+hi def link changelogNumber Number
+hi def link changelogMonth Number
+hi def link changelogDay Number
+hi def link changelogError Folded
+
+
+let b:current_syntax = "changelog"
+
+" vim: ts=8
diff --git a/runtime/syntax/chaskell.vim b/runtime/syntax/chaskell.vim
new file mode 100644
index 0000000..4b1e8c5
--- /dev/null
+++ b/runtime/syntax/chaskell.vim
@@ -0,0 +1,14 @@
+" Vim syntax file
+" Language: Haskell supporting c2hs binding hooks
+" Maintainer: Armin Sander <armin@mindwalker.org>
+" Last Change: 2001 November 1
+"
+" 2001 November 1: Changed commands for sourcing haskell.vim
+
+" Enable binding hooks
+let b:hs_chs=1
+
+" Include standard Haskell highlighting
+runtime! syntax/haskell.vim
+
+" vim: ts=8
diff --git a/runtime/syntax/chatito.vim b/runtime/syntax/chatito.vim
new file mode 100644
index 0000000..d89307c
--- /dev/null
+++ b/runtime/syntax/chatito.vim
@@ -0,0 +1,62 @@
+" Vim syntax file
+" Language: Chatito
+" Maintainer: ObserverOfTime <chronobserver@disroot.org>
+" Filenames: *.chatito
+" Last Change: 2022 Sep 19
+
+if exists('b:current_syntax')
+ finish
+endif
+
+" Comment
+syn keyword chatitoTodo contained TODO FIXME XXX
+syn match chatitoComment /^#.*/ contains=chatitoTodo,@Spell
+syn match chatitoComment +^//.*+ contains=chatitoTodo,@Spell
+
+" Import
+syn match chatitoImport /^import \+.*$/ transparent contains=chatitoImportKeyword,chatitoImportFile
+syn keyword chatitoImportKeyword import contained nextgroup=chatitoImportFile
+syn match chatitoImportFile /.*$/ contained skipwhite
+
+" Intent
+syn match chatitoIntent /^%\[[^\]?]\+\]\((.\+)\)\=$/ contains=chatitoArgs
+
+" Slot
+syn match chatitoSlot /^@\[[^\]?#]\+\(#[^\]?#]\+\)\=\]\((.\+)\)\=$/ contains=chatitoArgs,chatitoVariation
+syn match chatitoSlot /@\[[^\]?#]\+\(#[^\]?#]\+\)\=?\=\]/ contained contains=chatitoOpt,chatitoVariation
+
+" Alias
+syn match chatitoAlias /^\~\[[^\]?]\+\]\=$/
+syn match chatitoAlias /\~\[[^\]?]\+?\=\]/ contained contains=chatitoOpt
+
+" Probability
+syn match chatitoProbability /\*\[\d\+\(\.\d\+\)\=%\=\]/ contained
+
+" Optional
+syn match chatitoOpt '?' contained
+
+" Arguments
+syn match chatitoArgs /(.\+)/ contained
+
+" Variation
+syn match chatitoVariation /#[^\]?#]\+/ contained
+
+" Value
+syn match chatitoValue /^ \{4\}\zs.\+$/ contains=chatitoProbability,chatitoSlot,chatitoAlias,@Spell
+
+" Errors
+syn match chatitoError /^\t/
+
+hi def link chatitoAlias String
+hi def link chatitoArgs Special
+hi def link chatitoComment Comment
+hi def link chatitoError Error
+hi def link chatitoImportKeyword Include
+hi def link chatitoIntent Statement
+hi def link chatitoOpt SpecialChar
+hi def link chatitoProbability Number
+hi def link chatitoSlot Identifier
+hi def link chatitoTodo Todo
+hi def link chatitoVariation Special
+
+let b:current_syntax = 'chatito'
diff --git a/runtime/syntax/cheetah.vim b/runtime/syntax/cheetah.vim
new file mode 100644
index 0000000..9567ecb
--- /dev/null
+++ b/runtime/syntax/cheetah.vim
@@ -0,0 +1,47 @@
+" Vim syntax file
+" Language: Cheetah template engine
+" Maintainer: Max Ischenko <mfi@ukr.net>
+" Last Change: 2003-05-11
+"
+" Missing features:
+" match invalid syntax, like bad variable ref. or unmatched closing tag
+" PSP-style tags: <% .. %> (obsoleted feature)
+" doc-strings and header comments (rarely used feature)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syntax case match
+
+syn keyword cheetahKeyword contained if else unless elif for in not
+syn keyword cheetahKeyword contained while repeat break continue pass end
+syn keyword cheetahKeyword contained set del attr def global include raw echo
+syn keyword cheetahKeyword contained import from extends implements
+syn keyword cheetahKeyword contained assert raise try catch finally
+syn keyword cheetahKeyword contained errorCatcher breakpoint silent cache filter
+syn match cheetahKeyword contained "\<compiler-settings\>"
+
+" Matches cached placeholders
+syn match cheetahPlaceHolder "$\(\*[0-9.]\+[wdhms]\?\*\|\*\)\?\h\w*\(\.\h\w*\)*" display
+syn match cheetahPlaceHolder "$\(\*[0-9.]\+[wdhms]\?\*\|\*\)\?{\h\w*\(\.\h\w*\)*}" display
+syn match cheetahDirective "^\s*#[^#].*$" contains=cheetahPlaceHolder,cheetahKeyword,cheetahComment display
+
+syn match cheetahContinuation "\\$"
+syn match cheetahComment "##.*$" display
+syn region cheetahMultiLineComment start="#\*" end="\*#"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link cheetahPlaceHolder Identifier
+hi def link cheetahDirective PreCondit
+hi def link cheetahKeyword Define
+hi def link cheetahContinuation Special
+hi def link cheetahComment Comment
+hi def link cheetahMultiLineComment Comment
+
+
+let b:current_syntax = "cheetah"
+
diff --git a/runtime/syntax/chicken.vim b/runtime/syntax/chicken.vim
new file mode 100644
index 0000000..f53d872
--- /dev/null
+++ b/runtime/syntax/chicken.vim
@@ -0,0 +1,94 @@
+" Vim syntax file
+" Language: Scheme (CHICKEN)
+" Last Change: 2021 Oct 01
+" Author: Evan Hanson <evhan@foldling.org>
+" Maintainer: Evan Hanson <evhan@foldling.org>
+" Repository: https://git.foldling.org/vim-scheme.git
+" URL: https://foldling.org/vim/syntax/chicken.vim
+" Notes: This is supplemental syntax, to be loaded after the core Scheme
+" syntax file (syntax/scheme.vim). Enable it by setting b:is_chicken=1
+" and filetype=scheme.
+
+" Only to be used on top of the Scheme syntax.
+if !exists('b:did_scheme_syntax')
+ finish
+endif
+
+" Lighten parentheses.
+hi! def link schemeParentheses Comment
+
+" foo#bar
+syn match schemeExtraSyntax /[^ #'`\t\n()\[\]"|;]\+#[^ '`\t\n()\[\]"|;]\+/
+
+" ##foo#bar
+syn match schemeExtraSyntax /##[^ '`\t\n()\[\]"|;]\+/
+
+" Heredocs.
+syn region schemeString start=/#<[<#]\s*\z(.*\)/ end=/^\z1$/
+
+" Keywords.
+syn match schemeKeyword /#[!:][a-zA-Z0-9!$%&*+-./:<=>?@^_~#]\+/
+syn match schemeKeyword /[a-zA-Z0-9!$%&*+-./:<=>?@^_~#]\+:\>/
+
+" C/C++ syntax.
+let s:c = globpath(&rtp, 'syntax/cpp.vim', 0, 1)
+if len(s:c)
+ exe 'syn include @c ' s:c[0]
+ syn region c matchgroup=schemeComment start=/#>/ end=/<#/ contains=@c
+endif
+
+" SRFI 26
+syn match schemeSyntax /\(([ \t\n]*\)\@<=\(cut\|cute\)\>/
+
+syn keyword schemeSyntax and-let*
+syn keyword schemeSyntax define-record
+syn keyword schemeSyntax set!-values
+syn keyword schemeSyntax fluid-let
+syn keyword schemeSyntax let-optionals
+syn keyword schemeSyntax let-optionals*
+syn keyword schemeSyntax letrec-values
+syn keyword schemeSyntax nth-value
+syn keyword schemeSyntax receive
+
+syn keyword schemeLibrarySyntax declare
+syn keyword schemeLibrarySyntax define-interface
+syn keyword schemeLibrarySyntax functor
+syn keyword schemeLibrarySyntax include-relative
+syn keyword schemeLibrarySyntax module
+syn keyword schemeLibrarySyntax reexport
+syn keyword schemeLibrarySyntax require-library
+
+syn keyword schemeTypeSyntax -->
+syn keyword schemeTypeSyntax ->
+syn keyword schemeTypeSyntax :
+syn keyword schemeTypeSyntax assume
+syn keyword schemeTypeSyntax compiler-typecase
+syn keyword schemeTypeSyntax define-specialization
+syn keyword schemeTypeSyntax define-type
+syn keyword schemeTypeSyntax the
+
+syn keyword schemeExtraSyntax match
+syn keyword schemeExtraSyntax match-lambda
+syn keyword schemeExtraSyntax match-lambda*
+syn keyword schemeExtraSyntax match-let
+syn keyword schemeExtraSyntax match-let*
+syn keyword schemeExtraSyntax match-letrec
+
+syn keyword schemeSpecialSyntax define-compiler-syntax
+syn keyword schemeSpecialSyntax define-constant
+syn keyword schemeSpecialSyntax define-external
+syn keyword schemeSpecialSyntax define-inline
+syn keyword schemeSpecialSyntax foreign-code
+syn keyword schemeSpecialSyntax foreign-declare
+syn keyword schemeSpecialSyntax foreign-lambda
+syn keyword schemeSpecialSyntax foreign-lambda*
+syn keyword schemeSpecialSyntax foreign-primitive
+syn keyword schemeSpecialSyntax foreign-safe-lambda
+syn keyword schemeSpecialSyntax foreign-safe-lambda*
+syn keyword schemeSpecialSyntax foreign-value
+
+syn keyword schemeSyntaxSyntax begin-for-syntax
+syn keyword schemeSyntaxSyntax define-for-syntax
+syn keyword schemeSyntaxSyntax er-macro-transformer
+syn keyword schemeSyntaxSyntax ir-macro-transformer
+syn keyword schemeSyntaxSyntax require-library-for-syntax
diff --git a/runtime/syntax/chill.vim b/runtime/syntax/chill.vim
new file mode 100644
index 0000000..f3c66c2
--- /dev/null
+++ b/runtime/syntax/chill.vim
@@ -0,0 +1,178 @@
+" Vim syntax file
+" Language: CHILL
+" Maintainer: YoungSang Yoon <image@lgic.co.kr>
+" Last change: 2004 Jan 21
+"
+
+" first created by image@lgic.co.kr & modified by paris@lgic.co.kr
+
+" CHILL (CCITT High Level Programming Language) is used for
+" developing software of ATM switch at LGIC (LG Information
+" & Communications LTd.)
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" A bunch of useful CHILL keywords
+syn keyword chillStatement goto GOTO return RETURN returns RETURNS
+syn keyword chillLabel CASE case ESAC esac
+syn keyword chillConditional if IF else ELSE elsif ELSIF switch SWITCH THEN then FI fi
+syn keyword chillLogical NOT not
+syn keyword chillRepeat while WHILE for FOR do DO od OD TO to
+syn keyword chillProcess START start STACKSIZE stacksize PRIORITY priority THIS this STOP stop
+syn keyword chillBlock PROC proc PROCESS process
+syn keyword chillSignal RECEIVE receive SEND send NONPERSISTENT nonpersistent PERSISTENT peristent SET set EVER ever
+
+syn keyword chillTodo contained TODO FIXME XXX
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match chillSpecial contained "\\x\x\+\|\\\o\{1,3\}\|\\.\|\\$"
+syn region chillString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=chillSpecial
+syn match chillCharacter "'[^\\]'"
+syn match chillSpecialCharacter "'\\.'"
+syn match chillSpecialCharacter "'\\\o\{1,3\}'"
+
+"when wanted, highlight trailing white space
+if exists("chill_space_errors")
+ syn match chillSpaceError "\s*$"
+ syn match chillSpaceError " \+\t"me=e-1
+endif
+
+"catch errors caused by wrong parenthesis
+syn cluster chillParenGroup contains=chillParenError,chillIncluded,chillSpecial,chillTodo,chillUserCont,chillUserLabel,chillBitField
+syn region chillParen transparent start='(' end=')' contains=ALLBUT,@chillParenGroup
+syn match chillParenError ")"
+syn match chillInParen contained "[{}]"
+
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match chillNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"
+"floating point number, with dot, optional exponent
+syn match chillFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, starting with a dot, optional exponent
+syn match chillFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match chillFloat "\<\d\+e[-+]\=\d\+[fl]\=\>"
+"hex number
+syn match chillNumber "\<0x\x\+\(u\=l\=\|lu\)\>"
+"syn match chillIdentifier "\<[a-z_][a-z0-9_]*\>"
+syn case match
+" flag an octal number with wrong digits
+syn match chillOctalError "\<0\o*[89]"
+
+if exists("chill_comment_strings")
+ " A comment can contain chillString, chillCharacter and chillNumber.
+ " But a "*/" inside a chillString in a chillComment DOES end the comment! So we
+ " need to use a special type of chillString: chillCommentString, which also ends on
+ " "*/", and sees a "*" at the start of the line as comment again.
+ " Unfortunately this doesn't very well work for // type of comments :-(
+ syntax match chillCommentSkip contained "^\s*\*\($\|\s\+\)"
+ syntax region chillCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=chillSpecial,chillCommentSkip
+ syntax region chillComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=chillSpecial
+ syntax region chillComment start="/\*" end="\*/" contains=chillTodo,chillCommentString,chillCharacter,chillNumber,chillFloat,chillSpaceError
+ syntax match chillComment "//.*" contains=chillTodo,chillComment2String,chillCharacter,chillNumber,chillSpaceError
+else
+ syn region chillComment start="/\*" end="\*/" contains=chillTodo,chillSpaceError
+ syn match chillComment "//.*" contains=chillTodo,chillSpaceError
+endif
+syntax match chillCommentError "\*/"
+
+syn keyword chillOperator SIZE size
+syn keyword chillType dcl DCL int INT char CHAR bool BOOL REF ref LOC loc INSTANCE instance
+syn keyword chillStructure struct STRUCT enum ENUM newmode NEWMODE synmode SYNMODE
+"syn keyword chillStorageClass
+syn keyword chillBlock PROC proc END end
+syn keyword chillScope GRANT grant SEIZE seize
+syn keyword chillEDML select SELECT delete DELETE update UPDATE in IN seq SEQ WHERE where INSERT insert include INCLUDE exclude EXCLUDE
+syn keyword chillBoolConst true TRUE false FALSE
+
+syn region chillPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=chillComment,chillString,chillCharacter,chillNumber,chillCommentError,chillSpaceError
+syn region chillIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match chillIncluded contained "<[^>]*>"
+syn match chillInclude "^\s*#\s*include\>\s*["<]" contains=chillIncluded
+"syn match chillLineSkip "\\$"
+syn cluster chillPreProcGroup contains=chillPreCondit,chillIncluded,chillInclude,chillDefine,chillInParen,chillUserLabel
+syn region chillDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,@chillPreProcGroup
+syn region chillPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,@chillPreProcGroup
+
+" Highlight User Labels
+syn cluster chillMultiGroup contains=chillIncluded,chillSpecial,chillTodo,chillUserCont,chillUserLabel,chillBitField
+syn region chillMulti transparent start='?' end=':' contains=ALLBUT,@chillMultiGroup
+" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
+syn match chillUserCont "^\s*\I\i*\s*:$" contains=chillUserLabel
+syn match chillUserCont ";\s*\I\i*\s*:$" contains=chillUserLabel
+syn match chillUserCont "^\s*\I\i*\s*:[^:]"me=e-1 contains=chillUserLabel
+syn match chillUserCont ";\s*\I\i*\s*:[^:]"me=e-1 contains=chillUserLabel
+
+syn match chillUserLabel "\I\i*" contained
+
+" Avoid recognizing most bitfields as labels
+syn match chillBitField "^\s*\I\i*\s*:\s*[1-9]"me=e-1
+syn match chillBitField ";\s*\I\i*\s*:\s*[1-9]"me=e-1
+
+syn match chillBracket contained "[<>]"
+if !exists("chill_minlines")
+ let chill_minlines = 15
+endif
+exec "syn sync ccomment chillComment minlines=" . chill_minlines
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link chillLabel Label
+hi def link chillUserLabel Label
+hi def link chillConditional Conditional
+" hi def link chillConditional term=bold ctermfg=red guifg=red gui=bold
+
+hi def link chillRepeat Repeat
+hi def link chillProcess Repeat
+hi def link chillSignal Repeat
+hi def link chillCharacter Character
+hi def link chillSpecialCharacter chillSpecial
+hi def link chillNumber Number
+hi def link chillFloat Float
+hi def link chillOctalError chillError
+hi def link chillParenError chillError
+hi def link chillInParen chillError
+hi def link chillCommentError chillError
+hi def link chillSpaceError chillError
+hi def link chillOperator Operator
+hi def link chillStructure Structure
+hi def link chillBlock Operator
+hi def link chillScope Operator
+"hi def link chillEDML term=underline ctermfg=DarkRed guifg=Red
+hi def link chillEDML PreProc
+"hi def link chillBoolConst term=bold ctermfg=brown guifg=brown
+hi def link chillBoolConst Constant
+"hi def link chillLogical term=bold ctermfg=brown guifg=brown
+hi def link chillLogical Constant
+hi def link chillStorageClass StorageClass
+hi def link chillInclude Include
+hi def link chillPreProc PreProc
+hi def link chillDefine Macro
+hi def link chillIncluded chillString
+hi def link chillError Error
+hi def link chillStatement Statement
+hi def link chillPreCondit PreCondit
+hi def link chillType Type
+hi def link chillCommentError chillError
+hi def link chillCommentString chillString
+hi def link chillComment2String chillString
+hi def link chillCommentSkip chillComment
+hi def link chillString String
+hi def link chillComment Comment
+" hi def link chillComment term=None ctermfg=lightblue guifg=lightblue
+hi def link chillSpecial SpecialChar
+hi def link chillTodo Todo
+hi def link chillBlock Statement
+"hi def link chillIdentifier Identifier
+hi def link chillBracket Delimiter
+
+
+let b:current_syntax = "chill"
+
+" vim: ts=8
diff --git a/runtime/syntax/chordpro.vim b/runtime/syntax/chordpro.vim
new file mode 100644
index 0000000..41a0a1e
--- /dev/null
+++ b/runtime/syntax/chordpro.vim
@@ -0,0 +1,173 @@
+" Vim syntax file
+" Language: ChordPro 6 (https://www.chordpro.org)
+" Maintainer: Niels Bo Andersen <niels@niboan.dk>
+" Last Change: 2022-04-15
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case ignore
+
+" Include embedded abc syntax
+syn include @Abc syntax/abc.vim
+
+" Lilypond and Pango syntaxes could be embedded as well, but they are not
+" available in the distribution.
+
+" Directives without arguments
+syn keyword chordproDirective contained nextgroup=chordproConditional
+ \ new_song ns
+ \ start_of_chorus soc
+ \ chorus
+ \ start_of_verse sov
+ \ start_of_bridge sob
+ \ start_of_tab sot
+ \ start_of_grid sog
+ \ start_of_abc
+ \ start_of_ly
+ \ end_of_chorus eoc
+ \ end_of_verse eov
+ \ end_of_bridge eob
+ \ end_of_tab eot
+ \ end_of_grid eog
+ \ end_of_abc
+ \ end_of_ly
+ \ new_page np
+ \ new_physical_page npp
+ \ column_break cb
+ \ grid g
+ \ no_grid ng
+ \ transpose
+ \ chordfont cf chordsize cs chordcolour
+ \ footerfont footersize footercolour
+ \ gridfont gridsize gridcolour
+ \ tabfont tabsize tabcolour
+ \ tocfont tocsize toccolour
+ \ textfont tf textsize ts textcolour
+ \ titlefont titlesize titlecolour
+
+" Directives with arguments. Some directives are in both groups, as they can
+" be used both with and without arguments
+syn keyword chordproDirWithArg contained nextgroup=chordproConditional
+ \ title t
+ \ subtitle st
+ \ sorttitle
+ \ artist
+ \ composer
+ \ lyricist
+ \ arranger
+ \ copyright
+ \ album
+ \ year
+ \ key
+ \ time
+ \ tempo
+ \ duration
+ \ capo
+ \ comment c
+ \ highlight
+ \ comment_italic ci
+ \ comment_box cb
+ \ image
+ \ start_of_chorus soc
+ \ chorus
+ \ start_of_verse sov
+ \ start_of_bridge sob
+ \ start_of_tab sot
+ \ start_of_grid sog
+ \ start_of_abc
+ \ start_of_ly
+ \ define
+ \ chord
+ \ transpose
+ \ chordfont cf chordsize cs chordcolour
+ \ footerfont footersize footercolour
+ \ gridfont gridsize gridcolour
+ \ tabfont tabsize tabcolour
+ \ tocfont tocsize toccolour
+ \ textfont tf textsize ts textcolour
+ \ titlefont titlesize titlecolour
+ \ pagetype
+ \ titles
+ \ columns col
+
+syn keyword chordproMetaKeyword contained meta
+syn keyword chordproMetadata contained title sorttitle subtitle artist composer lyricist arranger copyright album year key time tempo duration capo
+syn keyword chordproStandardMetadata contained songindex page pages pagerange today tuning instrument user
+syn match chordproStandardMetadata /instrument\.type/ contained
+syn match chordproStandardMetadata /instrument\.description/ contained
+syn match chordproStandardMetadata /user\.name/ contained
+syn match chordproStandardMetadata /user\.fullname/ contained
+
+syn keyword chordproDefineKeyword contained frets fingers
+syn match chordproDefineKeyword /base-fret/ contained
+
+syn match chordproArgumentsNumber /\d\+/ contained
+
+syn match chordproCustom /x_\w\+/ contained
+
+syn match chordproDirMatch /{\w\+\(-\w\+\)\?}/ contains=chordproDirective contained transparent
+syn match chordproDirArgMatch /{\w\+\(-\w\+\)\?[: ]/ contains=chordproDirWithArg contained transparent
+syn match chordproMetaMatch /{meta\(-\w\+\)\?[: ]\+\w\+/ contains=chordproMetaKeyword,chordproMetadata contained transparent
+syn match chordproCustomMatch /{x_\w\+\(-\w\+\)\?[: ]/ contains=chordproCustom contained transparent
+
+syn match chordproConditional /-\w\+/ contained
+
+syn match chordproMetaDataOperator /[=|]/ contained
+syn match chordproMetaDataValue /%{\w*/ contains=chordproMetaData,chordproStandardMetadata contained transparent
+" Handles nested metadata tags, but the end of the containing chordproTag is
+" not highlighted correctly, if there are more than two levels of nesting
+syn region chordproMetaDataTag start=/%{\w*/ skip=/%{[^}]*}/ end=/}/ contains=chordproMetaDataValue,chordproMetaDataOperator,chordproMetadataTag contained
+
+syn region chordproArguments start=/{\w\+\(-\w\+\)\?[: ]/hs=e+1 skip=/%{[^}]*}/ end=/}/he=s-1 contains=chordproDirArgMatch,chordproArgumentsNumber,chordproMetaDataTag contained
+syn region chordproArguments start=/{\(define\|chord\)\(-\w\+\)\?[: ]/hs=e+1 end=/}/he=s-1 contains=chordproDirArgMatch,chordproDefineKeyword,chordproArgumentsNumber contained
+syn region chordproArguments start=/{meta\(-\w\+\)\?[: ]/hs=e+1 skip=/%{[^}]*}/ end=/}/he=s-1 contains=chordproMetaMatch,chordproMetaDataTag contained
+syn region chordproArguments start=/{x_\w\+\(-\w\+\)\?[: ]/hs=e+1 end=/}/he=s-1 contains=chordproCustomMatch contained
+
+syn region chordproTag start=/{/ skip=/%{[^}]*}/ end=/}/ contains=chordproDirMatch,chordproArguments oneline
+
+syn region chordproChord matchgroup=chordproBracket start=/\[/ end=/]/ oneline
+
+syn region chordproAnnotation matchgroup=chordproBracket start=/\[\*/ end=/]/ oneline
+
+syn region chordproTab start=/{start_of_tab\(-\w\+\)\?\([: ].\+\)\?}\|{sot\(-\w\+\)\?\([: ].\+\)\?}/hs=e+1 end=/{end_of_tab}\|{eot}/me=s-1 contains=chordproTag,chordproComment keepend
+
+syn region chordproChorus start=/{start_of_chorus\(-\w\+\)\?\([: ].\+\)\?}\|{soc\(-\w\+\)\?\([: ].\+\)\?}/hs=e+1 end=/{end_of_chorus}\|{eoc}/me=s-1 contains=chordproTag,chordproChord,chordproAnnotation,chordproComment keepend
+
+syn region chordproBridge start=/{start_of_bridge\(-\w\+\)\?\([: ].\+\)\?}\|{sob\(-\w\+\)\?\([: ].\+\)\?}/hs=e+1 end=/{end_of_bridge}\|{eob}/me=s-1 contains=chordproTag,chordproChord,chordproAnnotation,chordproComment keepend
+
+syn region chordproAbc start=/{start_of_abc\(-\w\+\)\?\([: ].\+\)\?}/hs=e+1 end=/{end_of_abc}/me=s-1 contains=chordproTag,@Abc keepend
+
+syn match chordproComment /^#.*/
+
+" Define the default highlighting.
+hi def link chordproDirective Statement
+hi def link chordproDirWithArg Statement
+hi def link chordproConditional Statement
+hi def link chordproCustom Statement
+hi def link chordproMetaKeyword Statement
+hi def link chordproMetaDataOperator Operator
+hi def link chordproMetaDataTag Function
+hi def link chordproArguments Special
+hi def link chordproArgumentsNumber Number
+hi def link chordproChord Type
+hi def link chordproAnnotation Identifier
+hi def link chordproTag Constant
+hi def link chordproTab PreProc
+hi def link chordproComment Comment
+hi def link chordproBracket Constant
+hi def link chordproDefineKeyword Identifier
+hi def link chordproMetadata Identifier
+hi def link chordproStandardMetadata Identifier
+hi def chordproChorus term=bold cterm=bold gui=bold
+hi def chordproBridge term=italic cterm=italic gui=italic
+
+let b:current_syntax = "chordpro"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/cl.vim b/runtime/syntax/cl.vim
new file mode 100644
index 0000000..b765682
--- /dev/null
+++ b/runtime/syntax/cl.vim
@@ -0,0 +1,98 @@
+" Vim syntax file
+" Language: CL
+" (pronounced alphabetically: "Cee-El".
+" CL stands for Clever Language,
+" but the language is CL, not "Clever".
+" CL was created by Multibase, http://www.mbase.com.au)
+" Filename extensions: *.ent
+" *.eni
+" Maintainer: Philip Uren <philuSPAX@ieee.org> Remove SPAX spam block
+" Version: 6
+" Last Change: Mar 06 2013
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=@,48-57,_,-
+
+syn case ignore
+
+syn sync lines=300
+
+"If/else/elsif/endif and while/wend mismatch errors
+syn match clifError "\<wend\>"
+syn match clifError "\<elsif\>"
+syn match clifError "\<else\>"
+syn match clifError "\<endif\>"
+
+syn match clSpaceError "\s\+$"
+
+" If and while regions
+syn region clLoop transparent matchgroup=clWhile start="\<while\>" matchgroup=clWhile end="\<wend\>" contains=ALLBUT,clBreak,clProcedure
+syn region clIf transparent matchgroup=clConditional start="\<if\>" matchgroup=clConditional end="\<endif\>" contains=ALLBUT,clBreak,clProcedure
+
+" Make those TODO notes and debugging stand out!
+syn keyword clTodo contained TODO BUG DEBUG FIX
+syn match clNeedsWork contained "NEED[S]*\s\s*WORK"
+syn keyword clDebug contained debug
+
+syn match clComment "#.*$" contains=clTodo,clNeedsWork,@Spell
+syn region clProcedure oneline start="^\s*[{}]" end="$"
+syn match clInclude "^\s*include\s.*"
+
+" We don't put "debug" in the clSetOptions;
+" we contain it in clSet so we can make it stand out.
+syn keyword clSetOptions transparent aauto abort align convert E fill fnum goback hangup justify null_exit output rauto rawprint rawdisplay repeat skip tab trim
+syn match clSet "^\s*set\s.*" contains=clSetOptions,clDebug
+
+syn match clPreProc "^\s*#P.*"
+
+syn keyword clConditional else elsif
+syn keyword clWhile continue endloop
+" 'break' needs to be a region so we can sync on it above.
+syn region clBreak oneline start="^\s*break" end="$"
+
+syn match clOperator "[!;|)(:.><+*=-]"
+
+syn match clNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"
+
+syn region clString matchgroup=clQuote start=+"+ end=+"+ skip=+\\"+ contains=@Spell
+syn region clString matchgroup=clQuote start=+'+ end=+'+ skip=+\\'+ contains=@Spell
+
+syn keyword clReserved ERROR EXIT INTERRUPT LOCKED LREPLY MODE MCOL MLINE MREPLY NULL REPLY V1 V2 V3 V4 V5 V6 V7 V8 V9 ZERO BYPASS GOING_BACK AAUTO ABORT ABORT ALIGN BIGE CONVERT FNUM GOBACK HANGUP JUSTIFY NEXIT OUTPUT RAUTO RAWDISPLAY RAWPRINT REPEAT SKIP TAB TRIM LCOUNT PCOUNT PLINES SLINES SCOLS MATCH LMATCH
+
+syn keyword clFunction asc asize chr name random slen srandom day getarg getcgi getenv lcase scat sconv sdel skey smult srep substr sword trim ucase match
+
+syn keyword clStatement clear clear_eol clear_eos close copy create unique with where empty define define ldefine delay_form delete escape exit_block exit_do exit_process field fork format get getfile getnext getprev goto head join maintain message no_join on_eop on_key on_exit on_delete openin openout openapp pause popenin popenout popenio print put range read redisplay refresh restart_block screen select sleep text unlock write and not or do
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link clifError Error
+hi def link clSpaceError Error
+hi def link clWhile Repeat
+hi def link clConditional Conditional
+hi def link clDebug Debug
+hi def link clNeedsWork Todo
+hi def link clTodo Todo
+hi def link clComment Comment
+hi def link clProcedure Procedure
+hi def link clBreak Procedure
+hi def link clInclude Include
+hi def link clSetOption Statement
+hi def link clSet Identifier
+hi def link clPreProc PreProc
+hi def link clOperator Operator
+hi def link clNumber Number
+hi def link clString String
+hi def link clQuote Delimiter
+hi def link clReserved Identifier
+hi def link clFunction Function
+hi def link clStatement Statement
+
+
+let b:current_syntax = "cl"
+
+" vim: ts=8 sw=8
diff --git a/runtime/syntax/clean.vim b/runtime/syntax/clean.vim
new file mode 100644
index 0000000..70bf654
--- /dev/null
+++ b/runtime/syntax/clean.vim
@@ -0,0 +1,90 @@
+" Vim syntax file
+" Language: Clean
+" Author: Pieter van Engelen <pietere@sci.kun.nl>
+" Co-Author: Arthur van Leeuwen <arthurvl@sci.kun.nl>
+" Last Change: 2013 Oct 15 by Jurriën Stutterheim
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Some Clean-keywords
+syn keyword cleanConditional if case
+syn keyword cleanLabel let! with where in of
+syn keyword cleanSpecial Start
+syn keyword cleanKeyword infixl infixr infix
+syn keyword cleanBasicType Int Real Char Bool String
+syn keyword cleanSpecialType World ProcId Void Files File
+syn keyword cleanModuleSystem module implementation definition system
+syn keyword cleanTypeClass class instance export
+
+" Import highlighting
+syn region cleanIncludeRegion start="^\s*\(from\|import\|\s\+\(as\|qualified\)\)" end="\n" contains=cleanIncludeKeyword keepend
+syn keyword cleanIncludeKeyword contained from import as qualified
+
+" To do some Denotation Highlighting
+syn keyword cleanBoolDenot True False
+syn region cleanStringDenot start=+"+ skip=+\(\(\\\\\)\+\|\\"\)+ end=+"+ display
+syn match cleanCharDenot "'\(\\\\\|\\'\|[^'\\]\)\+'" display
+syn match cleanIntegerDenot "[\~+-]\?\<\(\d\+\|0[0-7]\+\|0x[0-9A-Fa-f]\+\)\>" display
+syn match cleanRealDenot "[\~+-]\?\d\+\.\d\+\(E[\~+-]\?\d\+\)\?" display
+
+" To highlight the use of lists, tuples and arrays
+syn region cleanList start="\[" end="\]" contains=ALL
+syn region cleanRecord start="{" end="}" contains=ALL
+syn region cleanArray start="{:" end=":}" contains=ALL
+syn match cleanTuple "([^=]*,[^=]*)" contains=ALL
+
+" To do some Comment Highlighting
+syn region cleanComment start="/\*" end="\*/" contains=cleanComment,cleanTodo fold
+syn region cleanComment start="//.*" end="$" display contains=cleanTodo
+syn keyword cleanTodo TODO FIXME XXX contained
+
+" Now for some useful type definition recognition
+syn match cleanFuncTypeDef "\([a-zA-Z].*\|(\=[-~@#$%^?!+*<>\/|&=:]\+)\=\)\s*\(infix[lr]\=\)\=\s*\d\=\s*::.*->.*" contains=cleanSpecial,cleanBasicType,cleanSpecialType,cleanKeyword
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+ " Comments
+ hi def link cleanComment Comment
+ " Constants and denotations
+ hi def link cleanStringDenot String
+ hi def link cleanCharDenot Character
+ hi def link cleanIntegerDenot Number
+ hi def link cleanBoolDenot Boolean
+ hi def link cleanRealDenot Float
+ " Identifiers
+ " Statements
+ hi def link cleanTypeClass Keyword
+ hi def link cleanConditional Conditional
+ hi def link cleanLabel Label
+ hi def link cleanKeyword Keyword
+ " Generic Preprocessing
+ hi def link cleanIncludeKeyword Include
+ hi def link cleanModuleSystem PreProc
+ " Type
+ hi def link cleanBasicType Type
+ hi def link cleanSpecialType Type
+ hi def link cleanFuncTypeDef Typedef
+ " Special
+ hi def link cleanSpecial Special
+ hi def link cleanList Special
+ hi def link cleanArray Special
+ hi def link cleanRecord Special
+ hi def link cleanTuple Special
+ " Error
+ " Todo
+ hi def link cleanTodo Todo
+
+
+let b:current_syntax = "clean"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=4
diff --git a/runtime/syntax/clipper.vim b/runtime/syntax/clipper.vim
new file mode 100644
index 0000000..203f9f0
--- /dev/null
+++ b/runtime/syntax/clipper.vim
@@ -0,0 +1,135 @@
+" Vim syntax file:
+" Language: Clipper 5.2 & FlagShip
+" Maintainer: C R Zamana <zamana@zip.net>
+" Some things based on c.vim by Bram Moolenaar and pascal.vim by Mario Eusebio
+" Last Change: 2011 Dec 29 by Thilo Six
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Exceptions for my "Very Own" (TM) user variables naming style.
+" If you don't like this, comment it
+syn match clipperUserVariable "\<[a,b,c,d,l,n,o,u,x][A-Z][A-Za-z0-9_]*\>"
+syn match clipperUserVariable "\<[a-z]\>"
+
+" Clipper is case insensitive ( see "exception" above )
+syn case ignore
+
+" Clipper keywords ( in no particular order )
+syn keyword clipperStatement ACCEPT APPEND BLANK FROM AVERAGE CALL CANCEL
+syn keyword clipperStatement CLEAR ALL GETS MEMORY TYPEAHEAD CLOSE
+syn keyword clipperStatement COMMIT CONTINUE SHARED NEW PICT
+syn keyword clipperStatement COPY FILE STRUCTURE STRU EXTE TO COUNT
+syn keyword clipperStatement CREATE FROM NIL
+syn keyword clipperStatement DELETE FILE DIR DISPLAY EJECT ERASE FIND GO
+syn keyword clipperStatement INDEX INPUT VALID WHEN
+syn keyword clipperStatement JOIN KEYBOARD LABEL FORM LIST LOCATE MENU TO
+syn keyword clipperStatement NOTE PACK QUIT READ
+syn keyword clipperStatement RECALL REINDEX RELEASE RENAME REPLACE REPORT
+syn keyword clipperStatement RETURN FORM RESTORE
+syn keyword clipperStatement RUN SAVE SEEK SELECT
+syn keyword clipperStatement SKIP SORT STORE SUM TEXT TOTAL TYPE UNLOCK
+syn keyword clipperStatement UPDATE USE WAIT ZAP
+syn keyword clipperStatement BEGIN SEQUENCE
+syn keyword clipperStatement SET ALTERNATE BELL CENTURY COLOR CONFIRM CONSOLE
+syn keyword clipperStatement CURSOR DATE DECIMALS DEFAULT DELETED DELIMITERS
+syn keyword clipperStatement DEVICE EPOCH ESCAPE EXACT EXCLUSIVE FILTER FIXED
+syn keyword clipperStatement FORMAT FUNCTION INTENSITY KEY MARGIN MESSAGE
+syn keyword clipperStatement ORDER PATH PRINTER PROCEDURE RELATION SCOREBOARD
+syn keyword clipperStatement SOFTSEEK TYPEAHEAD UNIQUE WRAP
+syn keyword clipperStatement BOX CLEAR GET PROMPT SAY ? ??
+syn keyword clipperStatement DELETE TAG GO RTLINKCMD TMP DBLOCKINFO
+syn keyword clipperStatement DBEVALINFO DBFIELDINFO DBFILTERINFO DBFUNCTABLE
+syn keyword clipperStatement DBOPENINFO DBORDERCONDINFO DBORDERCREATEINF
+syn keyword clipperStatement DBORDERINFO DBRELINFO DBSCOPEINFO DBSORTINFO
+syn keyword clipperStatement DBSORTITEM DBTRANSINFO DBTRANSITEM WORKAREA
+
+" Conditionals
+syn keyword clipperConditional CASE OTHERWISE ENDCASE
+syn keyword clipperConditional IF ELSE ENDIF IIF IFDEF IFNDEF
+
+" Loops
+syn keyword clipperRepeat DO WHILE ENDDO
+syn keyword clipperRepeat FOR TO NEXT STEP
+
+" Visibility
+syn keyword clipperStorageClass ANNOUNCE STATIC
+syn keyword clipperStorageClass DECLARE EXTERNAL LOCAL MEMVAR PARAMETERS
+syn keyword clipperStorageClass PRIVATE PROCEDURE PUBLIC REQUEST STATIC
+syn keyword clipperStorageClass FIELD FUNCTION
+syn keyword clipperStorageClass EXIT PROCEDURE INIT PROCEDURE
+
+" Operators
+syn match clipperOperator "$\|%\|&\|+\|-\|->\|!"
+syn match clipperOperator "\.AND\.\|\.NOT\.\|\.OR\."
+syn match clipperOperator ":=\|<\|<=\|<>\|!=\|#\|=\|==\|>\|>=\|@"
+syn match clipperOperator "*"
+
+" Numbers
+syn match clipperNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"
+
+" Includes
+syn region clipperIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match clipperIncluded contained "<[^>]*>"
+syn match clipperInclude "^\s*#\s*include\>\s*["<]" contains=clipperIncluded
+
+" String and Character constants
+syn region clipperString start=+"+ end=+"+
+syn region clipperString start=+'+ end=+'+
+
+" Delimiters
+syn match ClipperDelimiters "[()]\|[\[\]]\|[{}]\|[||]"
+
+" Special
+syn match clipperLineContinuation ";"
+
+" This is from Bram Moolenaar:
+if exists("c_comment_strings")
+ " A comment can contain cString, cCharacter and cNumber.
+ " But a "*/" inside a cString in a clipperComment DOES end the comment!
+ " So we need to use a special type of cString: clipperCommentString, which
+ " also ends on "*/", and sees a "*" at the start of the line as comment
+ " again. Unfortunately this doesn't very well work for // type of comments :-(
+ syntax match clipperCommentSkip contained "^\s*\*\($\|\s\+\)"
+ syntax region clipperCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=clipperCommentSkip
+ syntax region clipperComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$"
+ syntax region clipperComment start="/\*" end="\*/" contains=clipperCommentString,clipperCharacter,clipperNumber,clipperString
+ syntax match clipperComment "//.*" contains=clipperComment2String,clipperCharacter,clipperNumber
+else
+ syn region clipperComment start="/\*" end="\*/"
+ syn match clipperComment "//.*"
+endif
+syntax match clipperCommentError "\*/"
+
+" Lines beggining with an "*" are comments too
+syntax match clipperComment "^\*.*"
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link clipperConditional Conditional
+hi def link clipperRepeat Repeat
+hi def link clipperNumber Number
+hi def link clipperInclude Include
+hi def link clipperComment Comment
+hi def link clipperOperator Operator
+hi def link clipperStorageClass StorageClass
+hi def link clipperStatement Statement
+hi def link clipperString String
+hi def link clipperFunction Function
+hi def link clipperLineContinuation Special
+hi def link clipperDelimiters Delimiter
+hi def link clipperUserVariable Identifier
+
+
+let b:current_syntax = "clipper"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/clojure.vim b/runtime/syntax/clojure.vim
new file mode 100644
index 0000000..0d63728
--- /dev/null
+++ b/runtime/syntax/clojure.vim
@@ -0,0 +1,218 @@
+" Vim indent file
+" Language: Clojure
+" Maintainer: Alex Vear <alex@vear.uk>
+" Former Maintainers: Sung Pae <self@sungpae.com>
+" Meikel Brandmeyer <mb@kotka.de>
+" Toralf Wittner <toralf.wittner@gmail.com>
+" Contributors: Joel Holdbrooks <cjholdbrooks@gmail.com> (Regexp support, bug fixes)
+" URL: https://github.com/clojure-vim/clojure.vim
+" License: Vim (see :h license)
+" Last Change: 2022-03-24
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_sav = &cpo
+set cpo&vim
+
+if has("folding") && exists("g:clojure_fold") && g:clojure_fold > 0
+ setlocal foldmethod=syntax
+endif
+
+" -*- KEYWORDS -*-
+" Generated from https://github.com/clojure-vim/clojure.vim/blob/fd280e33e84c88e97860930557dba3ff80b1a82d/clj/src/vim_clojure_static/generate.clj
+" Clojure version 1.11.0
+let s:clojure_syntax_keywords = {
+ \ 'clojureBoolean': ["false","true"],
+ \ 'clojureCond': ["case","case*","clojure.core/case","clojure.core/cond","clojure.core/cond->","clojure.core/cond->>","clojure.core/condp","clojure.core/if-let","clojure.core/if-not","clojure.core/if-some","clojure.core/when","clojure.core/when-first","clojure.core/when-let","clojure.core/when-not","clojure.core/when-some","cond","cond->","cond->>","condp","if","if-let","if-not","if-some","when","when-first","when-let","when-not","when-some"],
+ \ 'clojureConstant': ["nil"],
+ \ 'clojureDefine': ["clojure.core/definline","clojure.core/definterface","clojure.core/defmacro","clojure.core/defmethod","clojure.core/defmulti","clojure.core/defn","clojure.core/defn-","clojure.core/defonce","clojure.core/defprotocol","clojure.core/defrecord","clojure.core/defstruct","clojure.core/deftype","def","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype","deftype*"],
+ \ 'clojureException': ["catch","finally","throw","try"],
+ \ 'clojureFunc': ["*","*'","+","+'","-","-'","->ArrayChunk","->Eduction","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods","/","<","<=","=","==",">",">=","NaN?","PrintWriter-on","StackTraceElement->vec","Throwable->map","abs","accessor","aclone","add-classpath","add-tap","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","ancestors","any?","apply","array-map","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assoc","assoc!","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","boolean?","booleans","bound-fn*","bound?","bounded-count","butlast","byte","byte-array","bytes","bytes?","cast","cat","char","char-array","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","clojure.core/*","clojure.core/*'","clojure.core/+","clojure.core/+'","clojure.core/-","clojure.core/-'","clojure.core/->ArrayChunk","clojure.core/->Eduction","clojure.core/->Vec","clojure.core/->VecNode","clojure.core/->VecSeq","clojure.core/-cache-protocol-fn","clojure.core/-reset-methods","clojure.core//","clojure.core/<","clojure.core/<=","clojure.core/=","clojure.core/==","clojure.core/>","clojure.core/>=","clojure.core/NaN?","clojure.core/PrintWriter-on","clojure.core/StackTraceElement->vec","clojure.core/Throwable->map","clojure.core/abs","clojure.core/accessor","clojure.core/aclone","clojure.core/add-classpath","clojure.core/add-tap","clojure.core/add-watch","clojure.core/agent","clojure.core/agent-error","clojure.core/agent-errors","clojure.core/aget","clojure.core/alength","clojure.core/alias","clojure.core/all-ns","clojure.core/alter","clojure.core/alter-meta!","clojure.core/alter-var-root","clojure.core/ancestors","clojure.core/any?","clojure.core/apply","clojure.core/array-map","clojure.core/aset","clojure.core/aset-boolean","clojure.core/aset-byte","clojure.core/aset-char","clojure.core/aset-double","clojure.core/aset-float","clojure.core/aset-int","clojure.core/aset-long","clojure.core/aset-short","clojure.core/assoc","clojure.core/assoc!","clojure.core/assoc-in","clojure.core/associative?","clojure.core/atom","clojure.core/await","clojure.core/await-for","clojure.core/await1","clojure.core/bases","clojure.core/bean","clojure.core/bigdec","clojure.core/bigint","clojure.core/biginteger","clojure.core/bit-and","clojure.core/bit-and-not","clojure.core/bit-clear","clojure.core/bit-flip","clojure.core/bit-not","clojure.core/bit-or","clojure.core/bit-set","clojure.core/bit-shift-left","clojure.core/bit-shift-right","clojure.core/bit-test","clojure.core/bit-xor","clojure.core/boolean","clojure.core/boolean-array","clojure.core/boolean?","clojure.core/booleans","clojure.core/bound-fn*","clojure.core/bound?","clojure.core/bounded-count","clojure.core/butlast","clojure.core/byte","clojure.core/byte-array","clojure.core/bytes","clojure.core/bytes?","clojure.core/cast","clojure.core/cat","clojure.core/char","clojure.core/char-array","clojure.core/char?","clojure.core/chars","clojure.core/chunk","clojure.core/chunk-append","clojure.core/chunk-buffer","clojure.core/chunk-cons","clojure.core/chunk-first","clojure.core/chunk-next","clojure.core/chunk-rest","clojure.core/chunked-seq?","clojure.core/class","clojure.core/class?","clojure.core/clear-agent-errors","clojure.core/clojure-version","clojure.core/coll?","clojure.core/commute","clojure.core/comp","clojure.core/comparator","clojure.core/compare","clojure.core/compare-and-set!","clojure.core/compile","clojure.core/complement","clojure.core/completing","clojure.core/concat","clojure.core/conj","clojure.core/conj!","clojure.core/cons","clojure.core/constantly","clojure.core/construct-proxy","clojure.core/contains?","clojure.core/count","clojure.core/counted?","clojure.core/create-ns","clojure.core/create-struct","clojure.core/cycle","clojure.core/dec","clojure.core/dec'","clojure.core/decimal?","clojure.core/dedupe","clojure.core/delay?","clojure.core/deliver","clojure.core/denominator","clojure.core/deref","clojure.core/derive","clojure.core/descendants","clojure.core/destructure","clojure.core/disj","clojure.core/disj!","clojure.core/dissoc","clojure.core/dissoc!","clojure.core/distinct","clojure.core/distinct?","clojure.core/doall","clojure.core/dorun","clojure.core/double","clojure.core/double-array","clojure.core/double?","clojure.core/doubles","clojure.core/drop","clojure.core/drop-last","clojure.core/drop-while","clojure.core/eduction","clojure.core/empty","clojure.core/empty?","clojure.core/ensure","clojure.core/ensure-reduced","clojure.core/enumeration-seq","clojure.core/error-handler","clojure.core/error-mode","clojure.core/eval","clojure.core/even?","clojure.core/every-pred","clojure.core/every?","clojure.core/ex-cause","clojure.core/ex-data","clojure.core/ex-info","clojure.core/ex-message","clojure.core/extend","clojure.core/extenders","clojure.core/extends?","clojure.core/false?","clojure.core/ffirst","clojure.core/file-seq","clojure.core/filter","clojure.core/filterv","clojure.core/find","clojure.core/find-keyword","clojure.core/find-ns","clojure.core/find-protocol-impl","clojure.core/find-protocol-method","clojure.core/find-var","clojure.core/first","clojure.core/flatten","clojure.core/float","clojure.core/float-array","clojure.core/float?","clojure.core/floats","clojure.core/flush","clojure.core/fn?","clojure.core/fnext","clojure.core/fnil","clojure.core/force","clojure.core/format","clojure.core/frequencies","clojure.core/future-call","clojure.core/future-cancel","clojure.core/future-cancelled?","clojure.core/future-done?","clojure.core/future?","clojure.core/gensym","clojure.core/get","clojure.core/get-in","clojure.core/get-method","clojure.core/get-proxy-class","clojure.core/get-thread-bindings","clojure.core/get-validator","clojure.core/group-by","clojure.core/halt-when","clojure.core/hash","clojure.core/hash-combine","clojure.core/hash-map","clojure.core/hash-ordered-coll","clojure.core/hash-set","clojure.core/hash-unordered-coll","clojure.core/ident?","clojure.core/identical?","clojure.core/identity","clojure.core/ifn?","clojure.core/in-ns","clojure.core/inc","clojure.core/inc'","clojure.core/indexed?","clojure.core/infinite?","clojure.core/init-proxy","clojure.core/inst-ms","clojure.core/inst-ms*","clojure.core/inst?","clojure.core/instance?","clojure.core/int","clojure.core/int-array","clojure.core/int?","clojure.core/integer?","clojure.core/interleave","clojure.core/intern","clojure.core/interpose","clojure.core/into","clojure.core/into-array","clojure.core/ints","clojure.core/isa?","clojure.core/iterate","clojure.core/iteration","clojure.core/iterator-seq","clojure.core/juxt","clojure.core/keep","clojure.core/keep-indexed","clojure.core/key","clojure.core/keys","clojure.core/keyword","clojure.core/keyword?","clojure.core/last","clojure.core/line-seq","clojure.core/list","clojure.core/list*","clojure.core/list?","clojure.core/load","clojure.core/load-file","clojure.core/load-reader","clojure.core/load-string","clojure.core/loaded-libs","clojure.core/long","clojure.core/long-array","clojure.core/longs","clojure.core/macroexpand","clojure.core/macroexpand-1","clojure.core/make-array","clojure.core/make-hierarchy","clojure.core/map","clojure.core/map-entry?","clojure.core/map-indexed","clojure.core/map?","clojure.core/mapcat","clojure.core/mapv","clojure.core/max","clojure.core/max-key","clojure.core/memoize","clojure.core/merge","clojure.core/merge-with","clojure.core/meta","clojure.core/method-sig","clojure.core/methods","clojure.core/min","clojure.core/min-key","clojure.core/mix-collection-hash","clojure.core/mod","clojure.core/munge","clojure.core/name","clojure.core/namespace","clojure.core/namespace-munge","clojure.core/nat-int?","clojure.core/neg-int?","clojure.core/neg?","clojure.core/newline","clojure.core/next","clojure.core/nfirst","clojure.core/nil?","clojure.core/nnext","clojure.core/not","clojure.core/not-any?","clojure.core/not-empty","clojure.core/not-every?","clojure.core/not=","clojure.core/ns-aliases","clojure.core/ns-imports","clojure.core/ns-interns","clojure.core/ns-map","clojure.core/ns-name","clojure.core/ns-publics","clojure.core/ns-refers","clojure.core/ns-resolve","clojure.core/ns-unalias","clojure.core/ns-unmap","clojure.core/nth","clojure.core/nthnext","clojure.core/nthrest","clojure.core/num","clojure.core/number?","clojure.core/numerator","clojure.core/object-array","clojure.core/odd?","clojure.core/parents","clojure.core/parse-boolean","clojure.core/parse-double","clojure.core/parse-long","clojure.core/parse-uuid","clojure.core/partial","clojure.core/partition","clojure.core/partition-all","clojure.core/partition-by","clojure.core/pcalls","clojure.core/peek","clojure.core/persistent!","clojure.core/pmap","clojure.core/pop","clojure.core/pop!","clojure.core/pop-thread-bindings","clojure.core/pos-int?","clojure.core/pos?","clojure.core/pr","clojure.core/pr-str","clojure.core/prefer-method","clojure.core/prefers","clojure.core/print","clojure.core/print-ctor","clojure.core/print-dup","clojure.core/print-method","clojure.core/print-simple","clojure.core/print-str","clojure.core/printf","clojure.core/println","clojure.core/println-str","clojure.core/prn","clojure.core/prn-str","clojure.core/promise","clojure.core/proxy-call-with-super","clojure.core/proxy-mappings","clojure.core/proxy-name","clojure.core/push-thread-bindings","clojure.core/qualified-ident?","clojure.core/qualified-keyword?","clojure.core/qualified-symbol?","clojure.core/quot","clojure.core/rand","clojure.core/rand-int","clojure.core/rand-nth","clojure.core/random-sample","clojure.core/random-uuid","clojure.core/range","clojure.core/ratio?","clojure.core/rational?","clojure.core/rationalize","clojure.core/re-find","clojure.core/re-groups","clojure.core/re-matcher","clojure.core/re-matches","clojure.core/re-pattern","clojure.core/re-seq","clojure.core/read","clojure.core/read+string","clojure.core/read-line","clojure.core/read-string","clojure.core/reader-conditional","clojure.core/reader-conditional?","clojure.core/realized?","clojure.core/record?","clojure.core/reduce","clojure.core/reduce-kv","clojure.core/reduced","clojure.core/reduced?","clojure.core/reductions","clojure.core/ref","clojure.core/ref-history-count","clojure.core/ref-max-history","clojure.core/ref-min-history","clojure.core/ref-set","clojure.core/refer","clojure.core/release-pending-sends","clojure.core/rem","clojure.core/remove","clojure.core/remove-all-methods","clojure.core/remove-method","clojure.core/remove-ns","clojure.core/remove-tap","clojure.core/remove-watch","clojure.core/repeat","clojure.core/repeatedly","clojure.core/replace","clojure.core/replicate","clojure.core/require","clojure.core/requiring-resolve","clojure.core/reset!","clojure.core/reset-meta!","clojure.core/reset-vals!","clojure.core/resolve","clojure.core/rest","clojure.core/restart-agent","clojure.core/resultset-seq","clojure.core/reverse","clojure.core/reversible?","clojure.core/rseq","clojure.core/rsubseq","clojure.core/run!","clojure.core/satisfies?","clojure.core/second","clojure.core/select-keys","clojure.core/send","clojure.core/send-off","clojure.core/send-via","clojure.core/seq","clojure.core/seq-to-map-for-destructuring","clojure.core/seq?","clojure.core/seqable?","clojure.core/seque","clojure.core/sequence","clojure.core/sequential?","clojure.core/set","clojure.core/set-agent-send-executor!","clojure.core/set-agent-send-off-executor!","clojure.core/set-error-handler!","clojure.core/set-error-mode!","clojure.core/set-validator!","clojure.core/set?","clojure.core/short","clojure.core/short-array","clojure.core/shorts","clojure.core/shuffle","clojure.core/shutdown-agents","clojure.core/simple-ident?","clojure.core/simple-keyword?","clojure.core/simple-symbol?","clojure.core/slurp","clojure.core/some","clojure.core/some-fn","clojure.core/some?","clojure.core/sort","clojure.core/sort-by","clojure.core/sorted-map","clojure.core/sorted-map-by","clojure.core/sorted-set","clojure.core/sorted-set-by","clojure.core/sorted?","clojure.core/special-symbol?","clojure.core/spit","clojure.core/split-at","clojure.core/split-with","clojure.core/str","clojure.core/string?","clojure.core/struct","clojure.core/struct-map","clojure.core/subs","clojure.core/subseq","clojure.core/subvec","clojure.core/supers","clojure.core/swap!","clojure.core/swap-vals!","clojure.core/symbol","clojure.core/symbol?","clojure.core/tagged-literal","clojure.core/tagged-literal?","clojure.core/take","clojure.core/take-last","clojure.core/take-nth","clojure.core/take-while","clojure.core/tap>","clojure.core/test","clojure.core/the-ns","clojure.core/thread-bound?","clojure.core/to-array","clojure.core/to-array-2d","clojure.core/trampoline","clojure.core/transduce","clojure.core/transient","clojure.core/tree-seq","clojure.core/true?","clojure.core/type","clojure.core/unchecked-add","clojure.core/unchecked-add-int","clojure.core/unchecked-byte","clojure.core/unchecked-char","clojure.core/unchecked-dec","clojure.core/unchecked-dec-int","clojure.core/unchecked-divide-int","clojure.core/unchecked-double","clojure.core/unchecked-float","clojure.core/unchecked-inc","clojure.core/unchecked-inc-int","clojure.core/unchecked-int","clojure.core/unchecked-long","clojure.core/unchecked-multiply","clojure.core/unchecked-multiply-int","clojure.core/unchecked-negate","clojure.core/unchecked-negate-int","clojure.core/unchecked-remainder-int","clojure.core/unchecked-short","clojure.core/unchecked-subtract","clojure.core/unchecked-subtract-int","clojure.core/underive","clojure.core/unreduced","clojure.core/unsigned-bit-shift-right","clojure.core/update","clojure.core/update-in","clojure.core/update-keys","clojure.core/update-proxy","clojure.core/update-vals","clojure.core/uri?","clojure.core/use","clojure.core/uuid?","clojure.core/val","clojure.core/vals","clojure.core/var-get","clojure.core/var-set","clojure.core/var?","clojure.core/vary-meta","clojure.core/vec","clojure.core/vector","clojure.core/vector-of","clojure.core/vector?","clojure.core/volatile!","clojure.core/volatile?","clojure.core/vreset!","clojure.core/with-bindings*","clojure.core/with-meta","clojure.core/with-redefs-fn","clojure.core/xml-seq","clojure.core/zero?","clojure.core/zipmap","coll?","commute","comp","comparator","compare","compare-and-set!","compile","complement","completing","concat","conj","conj!","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","dedupe","delay?","deliver","denominator","deref","derive","descendants","destructure","disj","disj!","dissoc","dissoc!","distinct","distinct?","doall","dorun","double","double-array","double?","doubles","drop","drop-last","drop-while","eduction","empty","empty?","ensure","ensure-reduced","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-cause","ex-data","ex-info","ex-message","extend","extenders","extends?","false?","ffirst","file-seq","filter","filterv","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn?","fnext","fnil","force","format","frequencies","future-call","future-cancel","future-cancelled?","future-done?","future?","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","halt-when","hash","hash-combine","hash-map","hash-ordered-coll","hash-set","hash-unordered-coll","ident?","identical?","identity","ifn?","in-ns","inc","inc'","indexed?","infinite?","init-proxy","inst-ms","inst-ms*","inst?","instance?","int","int-array","int?","integer?","interleave","intern","interpose","into","into-array","ints","isa?","iterate","iteration","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","long","long-array","longs","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-entry?","map-indexed","map?","mapcat","mapv","max","max-key","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mix-collection-hash","mod","munge","name","namespace","namespace-munge","nat-int?","neg-int?","neg?","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","parents","parse-boolean","parse-double","parse-long","parse-uuid","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop","pop!","pop-thread-bindings","pos-int?","pos?","pr","pr-str","prefer-method","prefers","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy-call-with-super","proxy-mappings","proxy-name","push-thread-bindings","qualified-ident?","qualified-keyword?","qualified-symbol?","quot","rand","rand-int","rand-nth","random-sample","random-uuid","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read+string","read-line","read-string","reader-conditional","reader-conditional?","realized?","record?","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-tap","remove-watch","repeat","repeatedly","replace","replicate","require","requiring-resolve","reset!","reset-meta!","reset-vals!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","run!","satisfies?","second","select-keys","send","send-off","send-via","seq","seq-to-map-for-destructuring","seq?","seqable?","seque","sequence","sequential?","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","simple-ident?","simple-keyword?","simple-symbol?","slurp","some","some-fn","some?","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","swap-vals!","symbol","symbol?","tagged-literal","tagged-literal?","take","take-last","take-nth","take-while","tap>","test","the-ns","thread-bound?","to-array","to-array-2d","trampoline","transduce","transient","tree-seq","true?","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unreduced","unsigned-bit-shift-right","update","update-in","update-keys","update-proxy","update-vals","uri?","use","uuid?","val","vals","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","volatile!","volatile?","vreset!","with-bindings*","with-meta","with-redefs-fn","xml-seq","zero?","zipmap"],
+ \ 'clojureMacro': ["->","->>","..","amap","and","areduce","as->","assert","binding","bound-fn","clojure.core/->","clojure.core/->>","clojure.core/..","clojure.core/amap","clojure.core/and","clojure.core/areduce","clojure.core/as->","clojure.core/assert","clojure.core/binding","clojure.core/bound-fn","clojure.core/comment","clojure.core/declare","clojure.core/delay","clojure.core/dosync","clojure.core/doto","clojure.core/extend-protocol","clojure.core/extend-type","clojure.core/for","clojure.core/future","clojure.core/gen-class","clojure.core/gen-interface","clojure.core/import","clojure.core/io!","clojure.core/lazy-cat","clojure.core/lazy-seq","clojure.core/locking","clojure.core/memfn","clojure.core/ns","clojure.core/or","clojure.core/proxy","clojure.core/proxy-super","clojure.core/pvalues","clojure.core/refer-clojure","clojure.core/reify","clojure.core/some->","clojure.core/some->>","clojure.core/sync","clojure.core/time","clojure.core/vswap!","clojure.core/with-bindings","clojure.core/with-in-str","clojure.core/with-loading-context","clojure.core/with-local-vars","clojure.core/with-open","clojure.core/with-out-str","clojure.core/with-precision","clojure.core/with-redefs","comment","declare","delay","dosync","doto","extend-protocol","extend-type","for","future","gen-class","gen-interface","import","io!","lazy-cat","lazy-seq","locking","memfn","ns","or","proxy","proxy-super","pvalues","refer-clojure","reify","some->","some->>","sync","time","vswap!","with-bindings","with-in-str","with-loading-context","with-local-vars","with-open","with-out-str","with-precision","with-redefs"],
+ \ 'clojureRepeat': ["clojure.core/doseq","clojure.core/dotimes","clojure.core/loop","clojure.core/while","doseq","dotimes","loop","loop*","recur","while"],
+ \ 'clojureSpecial': ["&",".","clojure.core/fn","clojure.core/import*","clojure.core/let","clojure.core/letfn","do","fn","fn*","let","let*","letfn","letfn*","monitor-enter","monitor-exit","new","quote","reify*","set!","var"],
+ \ 'clojureVariable': ["*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-namespace-maps*","*print-readably*","*read-eval*","*reader-resolver*","*source-path*","*suppress-read*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","EMPTY-NODE","Inst","char-escape-string","char-name-string","clojure.core/*1","clojure.core/*2","clojure.core/*3","clojure.core/*agent*","clojure.core/*allow-unresolved-vars*","clojure.core/*assert*","clojure.core/*clojure-version*","clojure.core/*command-line-args*","clojure.core/*compile-files*","clojure.core/*compile-path*","clojure.core/*compiler-options*","clojure.core/*data-readers*","clojure.core/*default-data-reader-fn*","clojure.core/*e","clojure.core/*err*","clojure.core/*file*","clojure.core/*flush-on-newline*","clojure.core/*fn-loader*","clojure.core/*in*","clojure.core/*math-context*","clojure.core/*ns*","clojure.core/*out*","clojure.core/*print-dup*","clojure.core/*print-length*","clojure.core/*print-level*","clojure.core/*print-meta*","clojure.core/*print-namespace-maps*","clojure.core/*print-readably*","clojure.core/*read-eval*","clojure.core/*reader-resolver*","clojure.core/*source-path*","clojure.core/*suppress-read*","clojure.core/*unchecked-math*","clojure.core/*use-context-classloader*","clojure.core/*verbose-defrecords*","clojure.core/*warn-on-reflection*","clojure.core/EMPTY-NODE","clojure.core/Inst","clojure.core/char-escape-string","clojure.core/char-name-string","clojure.core/default-data-readers","clojure.core/primitives-classnames","clojure.core/print-dup","clojure.core/print-method","clojure.core/unquote","clojure.core/unquote-splicing","default-data-readers","primitives-classnames","print-dup","print-method","unquote","unquote-splicing"]
+ \ }
+
+function! s:syntax_keyword(dict)
+ for key in keys(a:dict)
+ execute 'syntax keyword' key join(a:dict[key], ' ')
+ endfor
+endfunction
+
+if exists('b:clojure_syntax_without_core_keywords') && b:clojure_syntax_without_core_keywords
+ " Only match language specials and primitives
+ for s:key in ['clojureBoolean', 'clojureConstant', 'clojureException', 'clojureSpecial']
+ execute 'syntax keyword' s:key join(s:clojure_syntax_keywords[s:key], ' ')
+ endfor
+else
+ call s:syntax_keyword(s:clojure_syntax_keywords)
+endif
+
+if exists('g:clojure_syntax_keywords')
+ call s:syntax_keyword(g:clojure_syntax_keywords)
+endif
+
+if exists('b:clojure_syntax_keywords')
+ call s:syntax_keyword(b:clojure_syntax_keywords)
+endif
+
+unlet! s:key
+delfunction s:syntax_keyword
+
+" Keywords are symbols:
+" static Pattern symbolPat = Pattern.compile("[:]?([\\D&&[^/]].*/)?([\\D&&[^/]][^/]*)");
+" But they:
+" * Must not end in a : or /
+" * Must not have two adjacent colons except at the beginning
+" * Must not contain any reader metacharacters except for ' and #
+syntax match clojureKeyword "\v<:{1,2}([^ \n\r\t()\[\]{}";@^`~\\/]+/)*[^ \n\r\t()\[\]{}";@^`~\\/]+:@1<!>"
+
+syntax match clojureStringEscape "\v\\%([\\btnfr"]|u\x{4}|[0-3]\o{2}|\o{1,2})" contained
+
+syntax region clojureString matchgroup=clojureStringDelimiter start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=clojureStringEscape,@Spell
+
+syntax match clojureCharacter "\v\\%(o%([0-3]\o{2}|\o{1,2})|u\x{4}|newline|tab|space|return|backspace|formfeed|.)"
+
+syntax match clojureSymbol "\v%([a-zA-Z!$&*_+=|<.>?-]|[^\x00-\x7F])+%(:?%([a-zA-Z0-9!#$%&*_+=|'<.>/?-]|[^\x00-\x7F]))*[#:]@1<!"
+
+" NB. Correct matching of radix literals was removed for better performance.
+syntax match clojureNumber "\v<[-+]?%(%([2-9]|[12]\d|3[0-6])[rR][[:alnum:]]+|%(0\o*|0x\x+|[1-9]\d*)N?|%(0|[1-9]\d*|%(0|[1-9]\d*)\.\d*)%(M|[eE][-+]?\d+)?|%(0|[1-9]\d*)/%(0|[1-9]\d*))>"
+
+syntax match clojureQuote "\v['`]"
+syntax match clojureUnquote "\v\~\@?"
+syntax match clojureMeta "\^"
+syntax match clojureDeref "@"
+syntax match clojureDispatch "\v#[\^'=<_]?"
+
+" Clojure permits no more than 20 anonymous params.
+syntax match clojureAnonArg "%\(20\|1\d\|[1-9]\|&\)\?"
+
+syntax match clojureRegexpEscape "\v\\%([\\tnrfae.()\[\]{}^$*?+]|c\u|0[0-3]?\o{1,2}|x%(\x{2}|\{\x{1,6}\})|u\x{4})" contained display
+syntax region clojureRegexpQuoted start=/\\Q/ms=e+1 skip=/\\\\\|\\"/ end=/\\E/me=s-1 end=/"/me=s-1 contained
+syntax region clojureRegexpQuote start=/\\Q/ skip=/\\\\\|\\"/ end=/\\E/ end=/"/me=s-1 contains=clojureRegexpQuoted keepend contained
+
+" -*- CHARACTER PROPERTY CLASSES -*-
+" Generated from https://github.com/clojure-vim/clojure.vim/blob/fd280e33e84c88e97860930557dba3ff80b1a82d/clj/src/vim_clojure_static/generate.clj
+" Java version 17.0.2
+syntax match clojureRegexpPosixCharClass "\v\\[pP]\{%(Cntrl|A%(l%(pha|num)|SCII)|Space|Graph|Upper|P%(rint|unct)|Blank|XDigit|Digit|Lower)\}" contained display
+syntax match clojureRegexpJavaCharClass "\v\\[pP]\{java%(Whitespace|JavaIdentifier%(Part|Start)|SpaceChar|Mirrored|TitleCase|I%(SOControl|de%(ographic|ntifierIgnorable))|D%(efined|igit)|U%(pperCase|nicodeIdentifier%(Part|Start))|L%(etter%(OrDigit)?|owerCase)|Alphabetic)\}" contained display
+syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{\cIs%(l%(owercase|etter)|hex%(digit|_digit)|w%(hite%(_space|space)|ord)|noncharacter%(_code_point|codepoint)|p%(rint|unctuation)|ideographic|graph|a%(l%(num|phabetic)|ssigned)|uppercase|join%(control|_control)|titlecase|blank|digit|control)\}" contained display
+syntax match clojureRegexpUnicodeCharClass "\v\\[pP][NSCMZPL]" contained display
+syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{%(N[dlo]?|P[dcifeos]?|C[ncfos]?|M[nce]?|Z[lsp]?|S[mcko]?|L[muCDlto]?)\}" contained display
+syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{%(Is|gc\=|general_category\=)?%(N[dlo]?|P[dcifeos]?|C[ncfos]?|M[nce]?|Z[lsp]?|S[mcko]?|L[muCDlto]?)\}" contained display
+syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{\c%(Is|sc\=|script\=)%(k%(its|h%(oj%(ki)?|m%(r|er)|itan_small_script|udawadi|ar%(oshthi)?)|a%(li|n%(a|nada)|takana%(_or_hiragana)?|yah_li|ithi)|nda|thi)|r%(ohg|un%(ic|r)|ejang|jng)|l%(epc%(ha)?|i%(mbu?|n%([ab]|ear_[ab])|su)|y%([dc]i%(an)?)|a%(t%(n|in)|na|oo?))|t%(elu%(gu)?|ha%(i|a%(na)?)|i%(finagh|rh%(uta)?|b%(t|etan))|fng|glg|a%(i_%(le|tham|viet)|g%(alog|b%(anwa)?)|vt|kri?|ng%(ut)?|l[ue]|m%(il|l)))|vaii?|y%(i%(ii)?|ezi%(di)?)|e%(thi%(opic)?|l%(ym%(aic)?|ba%(san)?)|gyp%(tian_hieroglyphs)?)|u%(gar%(itic)?|nknown)|h%(ung|ira%(gana)?|rkt|mn[gp]|a%(n%(i%(fi_rohingya)?|unoo|o|g%(ul)?)?|tr%(an)?)|luw|ebr%(ew)?)|g%(r%(e%(k|ek)|an%(tha)?)|lag%(olitic)?|eor%(gian)?|o%(n[mg]|th%(ic)?)|u%(j%(arati|r)|r%(u|mukhi)|njala_gondi))|m%(lym|a%(n%(d%(aic)?|i%(chaean)?)|saram_gondi|h%(ajani|j)|ka%(sar)?|rc%(hen)?|layalam)|o%(di|ng%(olian)?)|e%(r%(c|o%(itic_%(hieroglyphs|cursive))?)|etei_mayek|nd%(e_kikakui)?|d%(f|efaidrin))|roo?|y%(anmar|mr)|tei|iao|ult%(ani)?)|d%(upl%(oyan)?|srt|i%(ak|ves_akuru)|ogra?|e%(seret|va%(nagari)?))|z%(an%(abazar_square|b)|inh|yyy|zzz)|n%(yiakeng_puachue_hmong|bat|koo?|ew%(_tai_lue|a)|ushu|shu|a%(bataean|rb|nd%(inagari)?))|s%(h%(rd|a%(vian|rada|w))|o%(yo%(mbo)?|g%(d%(ian)?|o)|ra%(_sompeng)?)|i%(n%(d|h%(ala)?)|dd%(ham)?|gnwriting)|a%(ur%(ashtra)?|m%(r|aritan)|rb)|y%(r%(c|iac)|lo%(ti_nagri)?)|und%(anese)?|gnw)|w%(cho|a%(ncho|ra%(ng_citi)?))|c%(y%(priot|r%(l|illic))|h%(er%(okee)?|a%(m|kma)|rs|orasmian)|a%(km|ucasian_albanian|n%(adian_aboriginal|s)|ri%(an)?)|prt|uneiform|o%(pt%(ic)?|mmon))|i%(n%(scriptional_pa%(rthian|hlavi)|herited)|mperial_aramaic|tal)|p%(h%(l[ip]|oenician|ag%(s_pa)?|nx)|a%(lm%(yrene)?|u%(_cin_hau|c)|hawh_hmong)|rti|salter_pahlavi|lrd|erm)|x%(peo|sux)|b%(eng%(ali)?|ra%(i%(lle)?|h%(mi)?)|opo%(mofo)?|u%(gi%(nese)?|h%(d|id))|h%(ks|aiksuki)|a%(ss%(a_vah)?|t%(ak|k)|li%(nese)?|mum?))|java%(nese)?|o%(g%(am|ham)|s%(age|ge|ma%(nya)?)|l%(d_%(hungarian|north_arabian|so%(gdian|uth_arabian)|per%(mic|sian)|italic|turkic)|ck|_chiki)|r%(iya|kh|ya))|a%(r%(ab%(ic)?|m%([ni]|enian))|dl%(m|am)|natolian_hieroglyphs|hom|v%(st|estan)|ghb))\}" contained display
+syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{\c%(In|blk\=|block\=)%(zanabazar%([ _]square|square)|javanese|h%(a%(lfwidth%( and fullwidth forms|andfullwidthforms|_and_fullwidth_forms)|tran|n%(unoo|gul%(compatibilityjamo|syllables|jamo%(extended\-[ab])?|_%(syllables|jamo%(_extended_[ab])?|compatibility_jamo)| %(syllables|compatibility jamo|jamo%( extended\-[ab])?))|ifi%([_ ]rohingya|rohingya)))|i%(ragana|gh%( %(private use surrogates|surrogates)|_%(private_use_surrogates|surrogates)|surrogates|privateusesurrogates))|ebrew)|i%(pa%([ _]extensions|extensions)|n%(scriptional%(%([ _]pa%(rthian|hlavi))|pa%(rthian|hlavi))|dic%(siyaqnumbers|_siyaq_numbers| siyaq numbers))|deographic%(symbolsandpunctuation|_%(description_characters|symbols_and_punctuation)| %(description characters|symbols and punctuation)|descriptioncharacters)|mperial%(aramaic|[_ ]aramaic))|c%(o%(ntrol%(pictures|[ _]pictures)|ptic%(epactnumbers|_epact_numbers| epact numbers)?|m%(mon%(_indic_number_forms|indicnumberforms| indic number forms)|bining%(halfmarks|_%(diacritical_marks%(_%(supplement|for_symbols|extended))?|marks_for_symbols|half_marks)| %(half marks|diacritical marks%( %(supplement|for symbols|extended))?|marks for symbols)|diacriticalmarks%(supplement|forsymbols|extended)?|marksforsymbols))|unting%( rod numerals|_rod_numerals|rodnumerals))|a%(rian|ucasian%([ _]albanian|albanian))|jk%(unifiedideographs%(extension[dgacfbe])?|s%(ymbolsandpunctuation|trokes)|_%(s%(trokes|ymbols_and_punctuation)|radicals_supplement|unified_ideographs%(_extension_[dgacfbe])?|compatibility%(_%(forms|ideographs%(_supplement)?))?)|compatibility%(forms|ideographs%(supplement)?)?|radicalssupplement| %(compatibility%( %(ideographs%( supplement)?|forms))?|unified ideographs%( extension [dgacfbe])?|radicals supplement|s%(ymbols and punctuation|trokes)))|y%(rillic%(supplement%(ary)?| %(supplement%(ary)?|extended\-[acb])|extended\-[acb]|_%(extended_[acb]|supplement%(ary)?))?|priot%(syllabary|[ _]syllabary))|u%(rrency%([_ ]symbols|symbols)|neiform%(_numbers_and_punctuation|numbersandpunctuation| numbers and punctuation)?)|h%(e%(ss%([_ ]symbols|symbols)|rokee%(supplement|[ _]supplement)?)|a%(m|kma)|orasmian))|g%(othic|u%(njala%(gondi|[_ ]gondi)|jarati|rmukhi)|lagolitic%(supplement|[ _]supplement)?|e%(o%(rgian%(supplement|%([_ ]%(supplement|extended))|extended)?|metric%( shapes%( extended)?|shapes%(extended)?|_shapes%(_extended)?))|neral%([_ ]punctuation|punctuation))|r%(eek%( %(and coptic|extended)|andcoptic|_%(and_coptic|extended)|extended)?|antha))|s%(h%(orthand%( format controls|_format_controls|formatcontrols)|a%(vian|rada))|u%(ndanese%(supplement|[ _]supplement)?|p%(erscripts%(_and_subscripts|andsubscripts| and subscripts)|plementa%(ry%(_private_use_area_[ab]|privateusearea\-[ab]| private use area\-[ab])|l%( %(mathematical operators|symbols and pictographs|punctuation|arrows\-[acb])|symbolsandpictographs|mathematicaloperators|punctuation|arrows\-[acb]|_%(arrows_[acb]|symbols_and_pictographs|mathematical_operators|punctuation))))|tton%(signwriting|[_ ]signwriting))|i%(nhala%( archaic numbers|archaicnumbers|_archaic_numbers)?|ddham)|y%(loti%([_ ]nagri|nagri)|mbols%( %(for legacy computing|and pictographs extended\-a)|forlegacycomputing|andpictographsextended\-a|_%(and_pictographs_extended_a|for_legacy_computing))|riac%(supplement|[ _]supplement)?)|p%(acing%(_modifier_letters| modifier letters|modifierletters)|ecials)|a%(maritan|urashtra)|o%(yombo|gdian|ra%(sompeng|[ _]sompeng))|mall%(kanaextension| %(kana extension|form variants)|_%(kana_extension|form_variants)|formvariants))|y%(i%(syllables|%([_ ]%(syllables|radicals))|radicals|jing%(hexagramsymbols| hexagram symbols|_hexagram_symbols))|ezidi)|p%(h%(o%(enician|netic%( extensions%( supplement)?|extensions%(supplement)?|_extensions%(_supplement)?))|a%(istos%([ _]disc|disc)|gs[_\-]pa))|laying%(cards|[_ ]cards)|rivate%(usearea| use area|_use_area)|a%(hawh%(hmong|[_ ]hmong)|u%(_cin_hau|cinhau| cin hau)|lmyrene)|salter%(pahlavi|[ _]pahlavi))|e%(l%(basan|ymaic)|arly%(_dynastic_cuneiform|dynasticcuneiform| dynastic cuneiform)|moticons|gyptian%(hieroglyph%(formatcontrols|s)| hieroglyph%( format controls|s)|_hieroglyph%(_format_controls|s))|nclosed%( %(cjk letters and months|ideographic supplement|alphanumeric%( supplement|s))|cjklettersandmonths|_%(ideographic_supplement|alphanumeric%(_supplement|s)|cjk_letters_and_months)|alphanumerics%(upplement)?|ideographicsupplement)|thiopic%(supplement|_%(supplement|extended%(_a)?)| %(supplement|extended%(\-a)?)|extended%(\-a)?)?)|r%(u%(nic|mi%(numeralsymbols| numeral symbols|_numeral_symbols))|ejang)|d%(o%(gra|mino%([ _]tiles|tiles))|e%(seret|vanagari%([ _]extended|extended)?)|uployan|i%(ngbats|ves%([_ ]akuru|akuru)))|m%(e%(defaidrin|nde%([ _]kikakui|kikakui)|etei%(mayek%(extensions)?|_mayek%(_extensions)?| mayek%( extensions)?)|roitic%(hieroglyphs|%([_ ]%(hieroglyphs|cursive))|cursive))|o%(ngolian%(supplement|[ _]supplement)?|di%(fier%(_tone_letters| tone letters|toneletters))?)|ro|u%(ltani|sical%([_ ]symbols|symbols))|i%(ao|scellaneous%(technical|symbols%(and%(pictographs|arrows))?|mathematicalsymbols\-[ab]| %(technical|mathematical symbols\-[ab]|symbols%( and %(pictographs|arrows))?)|_%(technical|symbols%(_and_%(pictographs|arrows))?|mathematical_symbols_[ab])))|yanmar%( extended\-[ab]|extended\-[ab]|_extended_[ab])?|a%(h%(ajani|jong%([ _]tiles|tiles))|rchen|n%(daic|ichaean)|yan%([_ ]numerals|numerals)|saram%(gondi|[_ ]gondi)|layalam|thematical%(alphanumericsymbols| %(alphanumeric symbols|operators)|_%(alphanumeric_symbols|operators)|operators)|kasar))|o%(s%(age|manya)|ttoman%(siyaqnumbers|_siyaq_numbers| siyaq numbers)|r%(namental%([ _]dingbats|dingbats)|iya)|ptical%( character recognition|_character_recognition|characterrecognition)|gham|l%([ _]chiki|d%(hungarian| %(hungarian|so%(uth arabian|gdian)|per%(mic|sian)|north arabian|italic|turkic)|per%(mic|sian)|so%(utharabian|gdian)|italic|turkic|_%(hungarian|north_arabian|so%(gdian|uth_arabian)|per%(mic|sian)|italic|turkic)|northarabian)|chiki))|n%(ew%(_tai_lue|a|tailue| tai lue)|ko|yiakeng%( puachue hmong|puachuehmong|_puachue_hmong)|a%(bataean|ndinagari)|u%(shu|mber%(forms|[ _]forms)))|b%(u%(ginese|hid)|a%(s%(sa%([ _]vah|vah)|ic%([ _]latin|latin))|linese|mum%(supplement|[ _]supplement)?|tak)|ra%(hmi|ille%(patterns|[_ ]patterns))|o%(x%([ _]drawing|drawing)|pomofo%([ _]extended|extended)?)|lock%([ _]elements|elements)|haiksuki|yzantine%( musical symbols|musicalsymbols|_musical_symbols)|engali)|l%(i%(mbu|near%(a| %(a|b %(ideograms|syllabary))|b%(ideograms|syllabary)|_%(a|b_%(ideograms|syllabary)))|su%(supplement|[ _]supplement)?)|a%(tin%(extended%(\-[dacbe]|additional)|_%(extended_%([dcbe]|a%(dditional)?)|1_supplement)|\-1%(supplement| supplement)| extended%(\-[dacbe]| additional))|o)|e%(tterlike%([_ ]symbols|symbols)|pcha)|ow%([_ ]surrogates|surrogates)|y[cd]ian)|k%(h%(aroshthi|ojki|mer%([_ ]symbols|symbols)?|udawadi|itan%( small script|smallscript|_small_script))|a%(takana%(_phonetic_extensions|phoneticextensions| phonetic extensions)?|n%(gxi%([_ ]radicals|radicals)|a%(extended\-a|supplement| %(extended\-a|supplement)|_%(supplement|extended_a))|bun|nada)|ithi|yah%([ _]li|li)))|wa%(ncho|rang%(citi|[ _]citi))|t%(elugu|ransport%( and map symbols|_and_map_symbols|andmapsymbols)|i%(rhuta|betan|finagh)|a%(mil%(supplement|[ _]supplement)?|kri|ngut%(supplement|%([ _]%(supplement|components))|components)?|i%(xuanjingsymbols|_%(le|xuan_jing_symbols|tham|viet)|le| %(xuan jing symbols|le|tham|viet)|tham|viet)|g%(alog|s|banwa))|ha%(i|ana))|a%(l%(chemical%([_ ]symbols|symbols)|phabetic%( presentation forms|_presentation_forms|presentationforms))|n%(cient%(_%(greek_%(musical_notation|numbers)|symbols)|greek%(numbers|musicalnotation)| %(greek %(numbers|musical notation)|symbols)|symbols)|atolian%([ _]hieroglyphs|hieroglyphs))|dlam|r%(menian|abic%(extended\-a|mathematicalalphabeticsymbols|supplement|_%(presentation_forms_[ab]|supplement|extended_a|mathematical_alphabetic_symbols)| %(extended\-a|mathematical alphabetic symbols|supplement|presentation forms\-[ab])|presentationforms\-[ab])?|rows)|egean%(numbers|[ _]numbers)|vestan|hom)|u%(garitic|nified%(canadianaboriginalsyllabics%(extended)?|_canadian_aboriginal_syllabics%(_extended)?| canadian aboriginal syllabics%( extended)?))|v%(a%(i|riation%( selectors%( supplement)?|selectors%(supplement)?|_selectors%(_supplement)?))|e%(rtical%(forms|[ _]forms)|dic%([ _]extensions|extensions))))\}" contained display
+
+syntax match clojureRegexpPredefinedCharClass "\v%(\\[dDsSwW]|\.)" contained display
+syntax cluster clojureRegexpCharPropertyClasses contains=clojureRegexpPosixCharClass,clojureRegexpJavaCharClass,clojureRegexpUnicodeCharClass
+syntax cluster clojureRegexpCharClasses contains=clojureRegexpPredefinedCharClass,clojureRegexpCharClass,@clojureRegexpCharPropertyClasses
+syntax region clojureRegexpCharClass start="\[" skip=/\\\\\|\\]/ end="]" contained contains=clojureRegexpPredefinedCharClass,@clojureRegexpCharPropertyClasses
+syntax match clojureRegexpBoundary "\\[bBAGZz]" contained display
+syntax match clojureRegexpBoundary "[$^]" contained display
+syntax match clojureRegexpQuantifier "[?*+][?+]\=" contained display
+syntax match clojureRegexpQuantifier "\v\{\d+%(,|,\d+)?}\??" contained display
+syntax match clojureRegexpOr "|" contained display
+syntax match clojureRegexpBackRef "\v\\%([1-9]\d*|k\<[[:alpha:]]+\>)" contained display
+
+" Mode modifiers, mode-modified spans, lookaround, regular and atomic
+" grouping, and named-capturing.
+syntax match clojureRegexpMod "\v\(@<=\?:" contained display
+syntax match clojureRegexpMod "\v\(@<=\?[xdsmiuU]*-?[xdsmiuU]+:?" contained display
+syntax match clojureRegexpMod "\v\(@<=\?%(\<?[=!]|\>)" contained display
+syntax match clojureRegexpMod "\v\(@<=\?\<[[:alpha:]]+\>" contained display
+
+syntax region clojureRegexpGroup start="(" skip=/\\\\\|\\)/ end=")" matchgroup=clojureRegexpGroup contained contains=clojureRegexpMod,clojureRegexpQuantifier,clojureRegexpBoundary,clojureRegexpEscape,@clojureRegexpCharClasses
+syntax region clojureRegexp matchgroup=clojureRegexpDelimiter start=/\#"/ skip=/\\\\\|\\"/ end=/"/ contains=@clojureRegexpCharClasses,clojureRegexpEscape,clojureRegexpQuote,clojureRegexpBoundary,clojureRegexpQuantifier,clojureRegexpOr,clojureRegexpBackRef,clojureRegexpGroup keepend
+
+syntax keyword clojureCommentTodo contained FIXME XXX TODO BUG NOTE HACK FIXME: XXX: TODO: BUG: NOTE: HACK:
+
+syntax match clojureComment ";.*$" contains=clojureCommentTodo,@Spell
+syntax match clojureComment "#!.*$"
+syntax match clojureComment ","
+
+" Comment out discarded forms. <https://clojure.org/guides/weird_characters#_discard>
+if exists('g:clojure_discard_macro') && g:clojure_discard_macro
+ syntax region clojureDiscard matchgroup=clojureDiscard start=/#_[ ,\t\n`'~]*/ end=/[, \t\n()\[\]{}";]/me=e-1
+ syntax region clojureDiscard matchgroup=clojureDiscard start=/#_[ ,\t\n`'~]*"/ skip=/\\[\\"]/ end=/"/
+ syntax region clojureDiscard matchgroup=clojureDiscard start=/#_[ ,\t\n`'~]*(/ end=/)/ contains=clojureDiscardForm
+ syntax region clojureDiscard matchgroup=clojureDiscard start=/#_[ ,\t\n`'~]*\[/ end=/\]/ contains=clojureDiscardForm
+ syntax region clojureDiscard matchgroup=clojureDiscard start=/#_[ ,\t\n`'~]*{/ end=/}/ contains=clojureDiscardForm
+
+ syntax region clojureDiscardForm start="(" end=")" contained contains=clojureDiscardForm
+ syntax region clojureDiscardForm start="{" end="}" contained contains=clojureDiscardForm
+ syntax region clojureDiscardForm start="\[" end="\]" contained contains=clojureDiscardForm
+endif
+
+" -*- TOP CLUSTER -*-
+" Generated from https://github.com/clojure-vim/clojure.vim/blob/fd280e33e84c88e97860930557dba3ff80b1a82d/clj/src/vim_clojure_static/generate.clj
+syntax cluster clojureTop contains=@Spell,clojureAnonArg,clojureBoolean,clojureCharacter,clojureComment,clojureCond,clojureConstant,clojureDefine,clojureDeref,clojureDiscard,clojureDispatch,clojureError,clojureException,clojureFunc,clojureKeyword,clojureMacro,clojureMap,clojureMeta,clojureNumber,clojureQuote,clojureRegexp,clojureRepeat,clojureSexp,clojureSpecial,clojureString,clojureSymbol,clojureUnquote,clojureVariable,clojureVector
+
+syntax region clojureSexp matchgroup=clojureParen start="(" end=")" contains=@clojureTop fold
+syntax region clojureVector matchgroup=clojureParen start="\[" end="]" contains=@clojureTop fold
+syntax region clojureMap matchgroup=clojureParen start="{" end="}" contains=@clojureTop fold
+
+" Highlight superfluous closing parens, brackets and braces.
+syntax match clojureError "]\|}\|)"
+
+syntax sync fromstart
+
+highlight default link clojureConstant Constant
+highlight default link clojureBoolean Boolean
+highlight default link clojureCharacter Character
+highlight default link clojureKeyword Keyword
+highlight default link clojureNumber Number
+highlight default link clojureString String
+highlight default link clojureStringDelimiter String
+highlight default link clojureStringEscape Character
+
+highlight default link clojureRegexp Constant
+highlight default link clojureRegexpDelimiter Constant
+highlight default link clojureRegexpEscape Character
+highlight default link clojureRegexpCharClass SpecialChar
+highlight default link clojureRegexpPosixCharClass clojureRegexpCharClass
+highlight default link clojureRegexpJavaCharClass clojureRegexpCharClass
+highlight default link clojureRegexpUnicodeCharClass clojureRegexpCharClass
+highlight default link clojureRegexpPredefinedCharClass clojureRegexpCharClass
+highlight default link clojureRegexpBoundary SpecialChar
+highlight default link clojureRegexpQuantifier SpecialChar
+highlight default link clojureRegexpMod SpecialChar
+highlight default link clojureRegexpOr SpecialChar
+highlight default link clojureRegexpBackRef SpecialChar
+highlight default link clojureRegexpGroup clojureRegexp
+highlight default link clojureRegexpQuoted clojureString
+highlight default link clojureRegexpQuote clojureRegexpBoundary
+
+highlight default link clojureVariable Identifier
+highlight default link clojureCond Conditional
+highlight default link clojureDefine Define
+highlight default link clojureException Exception
+highlight default link clojureFunc Function
+highlight default link clojureMacro Macro
+highlight default link clojureRepeat Repeat
+
+highlight default link clojureSpecial Special
+highlight default link clojureQuote SpecialChar
+highlight default link clojureUnquote SpecialChar
+highlight default link clojureMeta SpecialChar
+highlight default link clojureDeref SpecialChar
+highlight default link clojureAnonArg SpecialChar
+highlight default link clojureDispatch SpecialChar
+
+highlight default link clojureComment Comment
+highlight default link clojureCommentTodo Todo
+highlight default link clojureDiscard clojureComment
+highlight default link clojureDiscardForm clojureDiscard
+
+highlight default link clojureError Error
+
+highlight default link clojureParen Delimiter
+
+let b:current_syntax = "clojure"
+
+let &cpo = s:cpo_sav
+unlet! s:cpo_sav
+
+" vim:sts=8:sw=8:ts=8:noet
diff --git a/runtime/syntax/cmake.vim b/runtime/syntax/cmake.vim
new file mode 100644
index 0000000..f7616e4
--- /dev/null
+++ b/runtime/syntax/cmake.vim
@@ -0,0 +1,477 @@
+" Vim syntax file
+" Program: CMake - Cross-Platform Makefile Generator
+" Version: cmake version 3.9.20170830-ge0713
+" Language: CMake
+" Author: Andy Cedilnik <andy.cedilnik@kitware.com>,
+" Nicholas Hutchinson <nshutchinson@gmail.com>,
+" Patrick Boettcher <patrick.boettcher@posteo.de>
+" Maintainer: Dimitri Merejkowsky <d.merej@gmail.com>
+" Former Maintainer: Karthik Krishnan <karthik.krishnan@kitware.com>
+" Last Change: 2017 Aug 30
+"
+" Licence: The CMake license applies to this file. See
+" https://cmake.org/licensing
+" This implies that distribution with Vim is allowed
+
+if exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+syn region cmakeComment start="#" end="$" contains=cmakeTodo,cmakeLuaComment,@Spell
+syn region cmakeLuaComment start="\[\z(=*\)\[" end="\]\z1\]" contains=cmakeTodo,@Spell
+
+syn match cmakeEscaped /\(\\\\\|\\"\|\\n\|\\t\)/ contained
+syn region cmakeRegistry start="\[" end="]" contained oneline contains=cmakeTodo,cmakeEscaped
+
+syn region cmakeGeneratorExpression start="$<" end=">" contained oneline contains=cmakeVariableValue,cmakeProperty,cmakeGeneratorExpressions,cmakeTodo
+
+syn region cmakeString start='"' end='"' contained contains=cmakeTodo,cmakeVariableValue,cmakeEscaped
+
+syn region cmakeVariableValue start="${" end="}" contained oneline contains=cmakeVariable,cmakeTodo
+
+syn region cmakeEnvironment start="$ENV{" end="}" contained oneline contains=cmakeTodo
+
+syn region cmakeArguments start="(" end=")" contains=ALLBUT,cmakeCommand,cmakeCommandConditional,cmakeCommandRepeat,cmakeCommandDeprecated,cmakeArguments,cmakeTodo
+
+syn case match
+
+syn keyword cmakeProperty contained
+ \ ABSTRACT ADDITIONAL_MAKE_CLEAN_FILES ADVANCED ALIASED_TARGET ALLOW_DUPLICATE_CUSTOM_TARGETS ANDROID_ANT_ADDITIONAL_OPTIONS ANDROID_API ANDROID_API_MIN ANDROID_ARCH ANDROID_ASSETS_DIRECTORIES ANDROID_GUI ANDROID_JAR_DEPENDENCIES ANDROID_JAR_DIRECTORIES ANDROID_JAVA_SOURCE_DIR ANDROID_NATIVE_LIB_DEPENDENCIES ANDROID_NATIVE_LIB_DIRECTORIES ANDROID_PROCESS_MAX ANDROID_PROGUARD ANDROID_PROGUARD_CONFIG_PATH ANDROID_SECURE_PROPS_PATH ANDROID_SKIP_ANT_STEP ANDROID_STL_TYPE ARCHIVE_OUTPUT_DIRECTORY ARCHIVE_OUTPUT_NAME ATTACHED_FILES ATTACHED_FILES_ON_FAIL AUTOGEN_BUILD_DIR AUTOGEN_SOURCE_GROUP AUTOGEN_TARGETS_FOLDER AUTOGEN_TARGET_DEPENDS AUTOMOC AUTOMOC_DEPEND_FILTERS AUTOMOC_MACRO_NAMES AUTOMOC_MOC_OPTIONS AUTOMOC_SOURCE_GROUP AUTOMOC_TARGETS_FOLDER AUTORCC AUTORCC_OPTIONS AUTORCC_SOURCE_GROUP AUTOUIC AUTOUIC_OPTIONS AUTOUIC_SEARCH_PATHS BINARY_DIR BUILDSYSTEM_TARGETS BUILD_RPATH BUILD_WITH_INSTALL_NAME_DIR BUILD_WITH_INSTALL_RPATH BUNDLE BUNDLE_EXTENSION CACHE_VARIABLES CLEAN_NO_CUSTOM CMAKE_CONFIGURE_DEPENDS CMAKE_CXX_KNOWN_FEATURES CMAKE_C_KNOWN_FEATURES COMPATIBLE_INTERFACE_BOOL COMPATIBLE_INTERFACE_NUMBER_MAX COMPATIBLE_INTERFACE_NUMBER_MIN COMPATIBLE_INTERFACE_STRING COMPILE_DEFINITIONS COMPILE_FEATURES COMPILE_FLAGS COMPILE_OPTIONS COMPILE_PDB_NAME COMPILE_PDB_OUTPUT_DIRECTORY COST CPACK_DESKTOP_SHORTCUTS CPACK_NEVER_OVERWRITE CPACK_PERMANENT CPACK_STARTUP_SHORTCUTS CPACK_START_MENU_SHORTCUTS CPACK_WIX_ACL CROSSCOMPILING_EMULATOR CUDA_EXTENSIONS CUDA_PTX_COMPILATION CUDA_RESOLVE_DEVICE_SYMBOLS CUDA_SEPARABLE_COMPILATION CUDA_STANDARD CUDA_STANDARD_REQUIRED CXX_EXTENSIONS CXX_STANDARD CXX_STANDARD_REQUIRED C_EXTENSIONS C_STANDARD C_STANDARD_REQUIRED DEBUG_CONFIGURATIONS DEBUG_POSTFIX DEFINE_SYMBOL DEFINITIONS DEPENDS DEPLOYMENT_REMOTE_DIRECTORY DISABLED DISABLED_FEATURES ECLIPSE_EXTRA_NATURES ENABLED_FEATURES ENABLED_LANGUAGES ENABLE_EXPORTS ENVIRONMENT EXCLUDE_FROM_ALL EXCLUDE_FROM_DEFAULT_BUILD EXPORT_NAME EXTERNAL_OBJECT EchoString FAIL_REGULAR_EXPRESSION FIND_LIBRARY_USE_LIB32_PATHS FIND_LIBRARY_USE_LIB64_PATHS FIND_LIBRARY_USE_LIBX32_PATHS FIND_LIBRARY_USE_OPENBSD_VERSIONING FIXTURES_CLEANUP FIXTURES_REQUIRED FIXTURES_SETUP FOLDER FRAMEWORK FRAMEWORK_VERSION Fortran_FORMAT Fortran_MODULE_DIRECTORY GENERATED GENERATOR_FILE_NAME GENERATOR_IS_MULTI_CONFIG GLOBAL_DEPENDS_DEBUG_MODE GLOBAL_DEPENDS_NO_CYCLES GNUtoMS HAS_CXX HEADER_FILE_ONLY HELPSTRING IMPLICIT_DEPENDS_INCLUDE_TRANSFORM IMPORTED IMPORTED_CONFIGURATIONS IMPORTED_IMPLIB IMPORTED_LIBNAME IMPORTED_LINK_DEPENDENT_LIBRARIES IMPORTED_LINK_INTERFACE_LANGUAGES IMPORTED_LINK_INTERFACE_LIBRARIES IMPORTED_LINK_INTERFACE_MULTIPLICITY IMPORTED_LOCATION IMPORTED_NO_SONAME IMPORTED_OBJECTS IMPORTED_SONAME IMPORT_PREFIX IMPORT_SUFFIX INCLUDE_DIRECTORIES INCLUDE_REGULAR_EXPRESSION INSTALL_NAME_DIR INSTALL_RPATH INSTALL_RPATH_USE_LINK_PATH INTERFACE_AUTOUIC_OPTIONS INTERFACE_COMPILE_DEFINITIONS INTERFACE_COMPILE_FEATURES INTERFACE_COMPILE_OPTIONS INTERFACE_INCLUDE_DIRECTORIES INTERFACE_LINK_LIBRARIES INTERFACE_POSITION_INDEPENDENT_CODE INTERFACE_SOURCES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES INTERPROCEDURAL_OPTIMIZATION IN_TRY_COMPILE IOS_INSTALL_COMBINED JOB_POOLS JOB_POOL_COMPILE JOB_POOL_LINK KEEP_EXTENSION LABELS LANGUAGE LIBRARY_OUTPUT_DIRECTORY LIBRARY_OUTPUT_NAME LINKER_LANGUAGE LINK_DEPENDS LINK_DEPENDS_NO_SHARED LINK_DIRECTORIES LINK_FLAGS LINK_INTERFACE_LIBRARIES LINK_INTERFACE_MULTIPLICITY LINK_LIBRARIES LINK_SEARCH_END_STATIC LINK_SEARCH_START_STATIC LINK_WHAT_YOU_USE LISTFILE_STACK LOCATION MACOSX_BUNDLE MACOSX_BUNDLE_INFO_PLIST MACOSX_FRAMEWORK_INFO_PLIST MACOSX_PACKAGE_LOCATION MACOSX_RPATH MACROS MANUALLY_ADDED_DEPENDENCIES MEASUREMENT MODIFIED NAME NO_SONAME NO_SYSTEM_FROM_IMPORTED OBJECT_DEPENDS OBJECT_OUTPUTS OSX_ARCHITECTURES OUTPUT_NAME PACKAGES_FOUND PACKAGES_NOT_FOUND PARENT_DIRECTORY PASS_REGULAR_EXPRESSION PDB_NAME PDB_OUTPUT_DIRECTORY POSITION_INDEPENDENT_CODE POST_INSTALL_SCRIPT PREDEFINED_TARGETS_FOLDER PREFIX PRE_INSTALL_SCRIPT PRIVATE_HEADER PROCESSORS PROJECT_LABEL PUBLIC_HEADER REPORT_UNDEFINED_PROPERTIES REQUIRED_FILES RESOURCE RESOURCE_LOCK RULE_LAUNCH_COMPILE RULE_LAUNCH_CUSTOM RULE_LAUNCH_LINK RULE_MESSAGES RUNTIME_OUTPUT_DIRECTORY RUNTIME_OUTPUT_NAME RUN_SERIAL SKIP_AUTOGEN SKIP_AUTOMOC SKIP_AUTORCC SKIP_AUTOUIC SKIP_BUILD_RPATH SKIP_RETURN_CODE SOURCES SOURCE_DIR SOVERSION STATIC_LIBRARY_FLAGS STRINGS SUBDIRECTORIES SUFFIX SYMBOLIC TARGET_ARCHIVES_MAY_BE_SHARED_LIBS TARGET_MESSAGES TARGET_SUPPORTS_SHARED_LIBS TEST_INCLUDE_FILE TEST_INCLUDE_FILES TIMEOUT TIMEOUT_AFTER_MATCH TYPE USE_FOLDERS VALUE VARIABLES VERSION VISIBILITY_INLINES_HIDDEN VS_CONFIGURATION_TYPE VS_COPY_TO_OUT_DIR VS_DEBUGGER_WORKING_DIRECTORY VS_DEPLOYMENT_CONTENT VS_DEPLOYMENT_LOCATION VS_DESKTOP_EXTENSIONS_VERSION VS_DOTNET_REFERENCES VS_DOTNET_REFERENCES_COPY_LOCAL VS_DOTNET_TARGET_FRAMEWORK_VERSION VS_GLOBAL_KEYWORD VS_GLOBAL_PROJECT_TYPES VS_GLOBAL_ROOTNAMESPACE VS_INCLUDE_IN_VSIX VS_IOT_EXTENSIONS_VERSION VS_IOT_STARTUP_TASK VS_KEYWORD VS_MOBILE_EXTENSIONS_VERSION VS_RESOURCE_GENERATOR VS_SCC_AUXPATH VS_SCC_LOCALPATH VS_SCC_PROJECTNAME VS_SCC_PROVIDER VS_SDK_REFERENCES VS_SHADER_ENTRYPOINT VS_SHADER_FLAGS VS_SHADER_MODEL VS_SHADER_TYPE VS_STARTUP_PROJECT VS_TOOL_OVERRIDE VS_USER_PROPS VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION VS_WINRT_COMPONENT VS_WINRT_EXTENSIONS VS_WINRT_REFERENCES VS_XAML_TYPE WILL_FAIL WIN32_EXECUTABLE WINDOWS_EXPORT_ALL_SYMBOLS WORKING_DIRECTORY WRAP_EXCLUDE XCODE_EMIT_EFFECTIVE_PLATFORM_NAME XCODE_EXPLICIT_FILE_TYPE XCODE_FILE_ATTRIBUTES XCODE_LAST_KNOWN_FILE_TYPE XCODE_PRODUCT_TYPE XCTEST
+
+syn keyword cmakeVariable contained
+ \ ANDROID APPLE BORLAND BUILD_SHARED_LIBS CMAKE_ABSOLUTE_DESTINATION_FILES CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS CMAKE_ANDROID_API CMAKE_ANDROID_API_MIN CMAKE_ANDROID_ARCH CMAKE_ANDROID_ARCH_ABI CMAKE_ANDROID_ARM_MODE CMAKE_ANDROID_ARM_NEON CMAKE_ANDROID_ASSETS_DIRECTORIES CMAKE_ANDROID_GUI CMAKE_ANDROID_JAR_DEPENDENCIES CMAKE_ANDROID_JAR_DIRECTORIES CMAKE_ANDROID_JAVA_SOURCE_DIR CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES CMAKE_ANDROID_NDK CMAKE_ANDROID_NDK_DEPRECATED_HEADERS CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION CMAKE_ANDROID_PROCESS_MAX CMAKE_ANDROID_PROGUARD CMAKE_ANDROID_PROGUARD_CONFIG_PATH CMAKE_ANDROID_SECURE_PROPS_PATH CMAKE_ANDROID_SKIP_ANT_STEP CMAKE_ANDROID_STANDALONE_TOOLCHAIN CMAKE_ANDROID_STL_TYPE CMAKE_APPBUNDLE_PATH CMAKE_AR CMAKE_ARCHIVE_OUTPUT_DIRECTORY CMAKE_ARGC CMAKE_ARGV0 CMAKE_AUTOMOC CMAKE_AUTOMOC_DEPEND_FILTERS CMAKE_AUTOMOC_MACRO_NAMES CMAKE_AUTOMOC_MOC_OPTIONS CMAKE_AUTOMOC_RELAXED_MODE CMAKE_AUTORCC CMAKE_AUTORCC_OPTIONS CMAKE_AUTOUIC CMAKE_AUTOUIC_OPTIONS CMAKE_AUTOUIC_SEARCH_PATHS CMAKE_BACKWARDS_COMPATIBILITY CMAKE_BINARY_DIR CMAKE_BUILD_RPATH CMAKE_BUILD_TOOL CMAKE_BUILD_TYPE CMAKE_BUILD_WITH_INSTALL_NAME_DIR CMAKE_BUILD_WITH_INSTALL_RPATH CMAKE_CACHEFILE_DIR CMAKE_CACHE_MAJOR_VERSION CMAKE_CACHE_MINOR_VERSION CMAKE_CACHE_PATCH_VERSION CMAKE_CFG_INTDIR CMAKE_CL_64 CMAKE_CODELITE_USE_TARGETS CMAKE_COLOR_MAKEFILE CMAKE_COMMAND CMAKE_COMPILER_2005 CMAKE_COMPILER_IS_GNUCC CMAKE_COMPILER_IS_GNUCXX CMAKE_COMPILER_IS_GNUG77 CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY CMAKE_CONFIGURATION_TYPES CMAKE_CROSSCOMPILING CMAKE_CROSSCOMPILING_EMULATOR CMAKE_CTEST_COMMAND CMAKE_CUDA_EXTENSIONS CMAKE_CUDA_STANDARD CMAKE_CUDA_STANDARD_REQUIRED CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES CMAKE_CURRENT_BINARY_DIR CMAKE_CURRENT_LIST_DIR CMAKE_CURRENT_LIST_FILE CMAKE_CURRENT_LIST_LINE CMAKE_CURRENT_SOURCE_DIR CMAKE_CXX_COMPILE_FEATURES CMAKE_CXX_EXTENSIONS CMAKE_CXX_STANDARD CMAKE_CXX_STANDARD_REQUIRED CMAKE_C_COMPILE_FEATURES CMAKE_C_EXTENSIONS CMAKE_C_STANDARD CMAKE_C_STANDARD_REQUIRED CMAKE_DEBUG_POSTFIX CMAKE_DEBUG_TARGET_PROPERTIES CMAKE_DEPENDS_IN_PROJECT_ONLY CMAKE_DIRECTORY_LABELS CMAKE_DL_LIBS CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT CMAKE_ECLIPSE_MAKE_ARGUMENTS CMAKE_ECLIPSE_VERSION CMAKE_EDIT_COMMAND CMAKE_ENABLE_EXPORTS CMAKE_ERROR_DEPRECATED CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION CMAKE_EXECUTABLE_SUFFIX CMAKE_EXE_LINKER_FLAGS CMAKE_EXE_LINKER_FLAGS_INIT CMAKE_EXPORT_COMPILE_COMMANDS CMAKE_EXPORT_NO_PACKAGE_REGISTRY CMAKE_EXTRA_GENERATOR CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES CMAKE_FIND_APPBUNDLE CMAKE_FIND_FRAMEWORK CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX CMAKE_FIND_LIBRARY_PREFIXES CMAKE_FIND_LIBRARY_SUFFIXES CMAKE_FIND_NO_INSTALL_PREFIX CMAKE_FIND_PACKAGE_NAME CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY CMAKE_FIND_PACKAGE_SORT_DIRECTION CMAKE_FIND_PACKAGE_SORT_ORDER CMAKE_FIND_PACKAGE_WARN_NO_MODULE CMAKE_FIND_ROOT_PATH CMAKE_FIND_ROOT_PATH_MODE_INCLUDE CMAKE_FIND_ROOT_PATH_MODE_LIBRARY CMAKE_FIND_ROOT_PATH_MODE_PACKAGE CMAKE_FIND_ROOT_PATH_MODE_PROGRAM CMAKE_FRAMEWORK_PATH CMAKE_Fortran_FORMAT CMAKE_Fortran_MODDIR_DEFAULT CMAKE_Fortran_MODDIR_FLAG CMAKE_Fortran_MODOUT_FLAG CMAKE_Fortran_MODULE_DIRECTORY CMAKE_GENERATOR CMAKE_GENERATOR_PLATFORM CMAKE_GENERATOR_TOOLSET CMAKE_GNUtoMS CMAKE_HOME_DIRECTORY CMAKE_HOST_APPLE CMAKE_HOST_SOLARIS CMAKE_HOST_SYSTEM CMAKE_HOST_SYSTEM_NAME CMAKE_HOST_SYSTEM_PROCESSOR CMAKE_HOST_SYSTEM_VERSION CMAKE_HOST_UNIX CMAKE_HOST_WIN32 CMAKE_IGNORE_PATH CMAKE_IMPORT_LIBRARY_PREFIX CMAKE_IMPORT_LIBRARY_SUFFIX CMAKE_INCLUDE_CURRENT_DIR CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE CMAKE_INCLUDE_DIRECTORIES_BEFORE CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE CMAKE_INCLUDE_PATH CMAKE_INSTALL_DEFAULT_COMPONENT_NAME CMAKE_INSTALL_MESSAGE CMAKE_INSTALL_NAME_DIR CMAKE_INSTALL_PREFIX CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT CMAKE_INSTALL_RPATH CMAKE_INSTALL_RPATH_USE_LINK_PATH CMAKE_INTERNAL_PLATFORM_ABI CMAKE_INTERPROCEDURAL_OPTIMIZATION CMAKE_IOS_INSTALL_COMBINED CMAKE_JOB_POOL_COMPILE CMAKE_JOB_POOL_LINK CMAKE_LIBRARY_ARCHITECTURE CMAKE_LIBRARY_ARCHITECTURE_REGEX CMAKE_LIBRARY_OUTPUT_DIRECTORY CMAKE_LIBRARY_PATH CMAKE_LIBRARY_PATH_FLAG CMAKE_LINK_DEF_FILE_FLAG CMAKE_LINK_DEPENDS_NO_SHARED CMAKE_LINK_INTERFACE_LIBRARIES CMAKE_LINK_LIBRARY_FILE_FLAG CMAKE_LINK_LIBRARY_FLAG CMAKE_LINK_LIBRARY_SUFFIX CMAKE_LINK_SEARCH_END_STATIC CMAKE_LINK_SEARCH_START_STATIC CMAKE_LINK_WHAT_YOU_USE CMAKE_MACOSX_BUNDLE CMAKE_MACOSX_RPATH CMAKE_MAJOR_VERSION CMAKE_MAKE_PROGRAM CMAKE_MATCH_COUNT CMAKE_MFC_FLAG CMAKE_MINIMUM_REQUIRED_VERSION CMAKE_MINOR_VERSION CMAKE_MODULE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS_INIT CMAKE_MODULE_PATH CMAKE_MSVCIDE_RUN_PATH CMAKE_NINJA_OUTPUT_PATH_PREFIX CMAKE_NOT_USING_CONFIG_FLAGS CMAKE_NO_BUILTIN_CHRPATH CMAKE_NO_SYSTEM_FROM_IMPORTED CMAKE_OBJECT_PATH_MAX CMAKE_OSX_ARCHITECTURES CMAKE_OSX_DEPLOYMENT_TARGET CMAKE_OSX_SYSROOT CMAKE_PARENT_LIST_FILE CMAKE_PATCH_VERSION CMAKE_PDB_OUTPUT_DIRECTORY CMAKE_POSITION_INDEPENDENT_CODE CMAKE_PREFIX_PATH CMAKE_PROGRAM_PATH CMAKE_PROJECT_DESCRIPTION CMAKE_PROJECT_NAME CMAKE_RANLIB CMAKE_ROOT CMAKE_RUNTIME_OUTPUT_DIRECTORY CMAKE_SCRIPT_MODE_FILE CMAKE_SHARED_LIBRARY_PREFIX CMAKE_SHARED_LIBRARY_SUFFIX CMAKE_SHARED_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS_INIT CMAKE_SHARED_MODULE_PREFIX CMAKE_SHARED_MODULE_SUFFIX CMAKE_SIZEOF_VOID_P CMAKE_SKIP_BUILD_RPATH CMAKE_SKIP_INSTALL_ALL_DEPENDENCY CMAKE_SKIP_INSTALL_RPATH CMAKE_SKIP_INSTALL_RULES CMAKE_SKIP_RPATH CMAKE_SOURCE_DIR CMAKE_STAGING_PREFIX CMAKE_STATIC_LIBRARY_PREFIX CMAKE_STATIC_LIBRARY_SUFFIX CMAKE_STATIC_LINKER_FLAGS CMAKE_STATIC_LINKER_FLAGS_INIT CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE CMAKE_SYSROOT CMAKE_SYSROOT_COMPILE CMAKE_SYSROOT_LINK CMAKE_SYSTEM CMAKE_SYSTEM_APPBUNDLE_PATH CMAKE_SYSTEM_FRAMEWORK_PATH CMAKE_SYSTEM_IGNORE_PATH CMAKE_SYSTEM_INCLUDE_PATH CMAKE_SYSTEM_LIBRARY_PATH CMAKE_SYSTEM_NAME CMAKE_SYSTEM_PREFIX_PATH CMAKE_SYSTEM_PROCESSOR CMAKE_SYSTEM_PROGRAM_PATH CMAKE_SYSTEM_VERSION CMAKE_Swift_LANGUAGE_VERSION CMAKE_TOOLCHAIN_FILE CMAKE_TRY_COMPILE_CONFIGURATION CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CMAKE_TRY_COMPILE_TARGET_TYPE CMAKE_TWEAK_VERSION CMAKE_USER_MAKE_RULES_OVERRIDE CMAKE_USE_RELATIVE_PATHS CMAKE_VERBOSE_MAKEFILE CMAKE_VERSION CMAKE_VISIBILITY_INLINES_HIDDEN CMAKE_VS_DEVENV_COMMAND CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD CMAKE_VS_INTEL_Fortran_PROJECT_VERSION CMAKE_VS_MSBUILD_COMMAND CMAKE_VS_NsightTegra_VERSION CMAKE_VS_PLATFORM_NAME CMAKE_VS_PLATFORM_TOOLSET CMAKE_VS_PLATFORM_TOOLSET_CUDA CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION CMAKE_WARN_DEPRECATED CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION CMAKE_WIN32_EXECUTABLE CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS CMAKE_XCODE_GENERATE_SCHEME CMAKE_XCODE_PLATFORM_TOOLSET CPACK_ABSOLUTE_DESTINATION_FILES CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION CPACK_INCLUDE_TOPLEVEL_DIRECTORY CPACK_INSTALL_SCRIPT CPACK_PACKAGING_INSTALL_PREFIX CPACK_SET_DESTDIR CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION CTEST_BINARY_DIRECTORY CTEST_BUILD_COMMAND CTEST_BUILD_NAME CTEST_BZR_COMMAND CTEST_BZR_UPDATE_OPTIONS CTEST_CHANGE_ID CTEST_CHECKOUT_COMMAND CTEST_CONFIGURATION_TYPE CTEST_CONFIGURE_COMMAND CTEST_COVERAGE_COMMAND CTEST_COVERAGE_EXTRA_FLAGS CTEST_CURL_OPTIONS CTEST_CUSTOM_COVERAGE_EXCLUDE CTEST_CUSTOM_ERROR_EXCEPTION CTEST_CUSTOM_ERROR_MATCH CTEST_CUSTOM_ERROR_POST_CONTEXT CTEST_CUSTOM_ERROR_PRE_CONTEXT CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE CTEST_CUSTOM_MEMCHECK_IGNORE CTEST_CUSTOM_POST_MEMCHECK CTEST_CUSTOM_POST_TEST CTEST_CUSTOM_PRE_MEMCHECK CTEST_CUSTOM_PRE_TEST CTEST_CUSTOM_TEST_IGNORE CTEST_CUSTOM_WARNING_EXCEPTION CTEST_CUSTOM_WARNING_MATCH CTEST_CVS_CHECKOUT CTEST_CVS_COMMAND CTEST_CVS_UPDATE_OPTIONS CTEST_DROP_LOCATION CTEST_DROP_METHOD CTEST_DROP_SITE CTEST_DROP_SITE_CDASH CTEST_DROP_SITE_PASSWORD CTEST_DROP_SITE_USER CTEST_EXTRA_COVERAGE_GLOB CTEST_GIT_COMMAND CTEST_GIT_INIT_SUBMODULES CTEST_GIT_UPDATE_CUSTOM CTEST_GIT_UPDATE_OPTIONS CTEST_HG_COMMAND CTEST_HG_UPDATE_OPTIONS CTEST_LABELS_FOR_SUBPROJECTS CTEST_MEMORYCHECK_COMMAND CTEST_MEMORYCHECK_COMMAND_OPTIONS CTEST_MEMORYCHECK_SANITIZER_OPTIONS CTEST_MEMORYCHECK_SUPPRESSIONS_FILE CTEST_MEMORYCHECK_TYPE CTEST_NIGHTLY_START_TIME CTEST_P4_CLIENT CTEST_P4_COMMAND CTEST_P4_OPTIONS CTEST_P4_UPDATE_OPTIONS CTEST_SCP_COMMAND CTEST_SITE CTEST_SOURCE_DIRECTORY CTEST_SVN_COMMAND CTEST_SVN_OPTIONS CTEST_SVN_UPDATE_OPTIONS CTEST_TEST_LOAD CTEST_TEST_TIMEOUT CTEST_TRIGGER_SITE CTEST_UPDATE_COMMAND CTEST_UPDATE_OPTIONS CTEST_UPDATE_VERSION_ONLY CTEST_USE_LAUNCHERS CYGWIN ENV EXECUTABLE_OUTPUT_PATH GHS-MULTI LIBRARY_OUTPUT_PATH MINGW MSVC MSVC10 MSVC11 MSVC12 MSVC14 MSVC60 MSVC70 MSVC71 MSVC80 MSVC90 MSVC_IDE MSVC_VERSION PROJECT_BINARY_DIR PROJECT_DESCRIPTION PROJECT_NAME PROJECT_SOURCE_DIR PROJECT_VERSION PROJECT_VERSION_MAJOR PROJECT_VERSION_MINOR PROJECT_VERSION_PATCH PROJECT_VERSION_TWEAK UNIX WIN32 WINCE WINDOWS_PHONE WINDOWS_STORE XCODE XCODE_VERSION
+
+syn keyword cmakeModule contained
+ \ ExternalProject
+
+syn keyword cmakeKWExternalProject contained
+ \ ALGO AWS BINARY_DIR BUILD_ALWAYS BUILD_BYPRODUCTS BUILD_COMMAND BUILD_IN_SOURCE CMAKE_ARGS CMAKE_CACHE_ARGS CMAKE_CACHE_DEFAULT_ARGS CMAKE_TLS_CAINFO CMAKE_TLS_VERIFY COMMENT CONFIGURE_COMMAND CVS CVSROOT CVS_MODULE CVS_REPOSITORY CVS_TAG DEPENDEES DEPENDERS DEPENDS DOWNLOADED_FILE DOWNLOAD_COMMAND DOWNLOAD_DIR DOWNLOAD_NAME DOWNLOAD_NO_EXTRACT DOWNLOAD_NO_PROGRESS EP_BASE EP_INDEPENDENT_STEP_TARGETS EP_PREFIX EP_STEP_TARGETS EP_UPDATE_DISCONNECTED EXCLUDE_FROM_ALL FORCE GIT_CONFIG GIT_PROGRESS GIT_REMOTE_NAME GIT_REPOSITORY GIT_SHALLOW GIT_SUBMODULES GIT_TAG HG_REPOSITORY HG_TAG HTTP_HEADER HTTP_PASSWORD HTTP_USERNAME INDEPENDENT_STEP_TARGETS INSTALL_COMMAND INSTALL_DIR JOB_POOLS LIST_SEPARATOR LOG_ LOG_BUILD LOG_CONFIGURE LOG_DOWNLOAD LOG_INSTALL LOG_TEST LOG_UPDATE MAKE_EXE NAMES NOTE NO_DEPENDS PATCH_COMMAND PREFIX PROPERTY SOURCE_DIR SOURCE_SUBDIR STAMP_DIR STEP_TARGETS STRING SVN_PASSWORD SVN_REPOSITORY SVN_REVISION SVN_TRUST_CERT SVN_USERNAME TEST_AFTER_INSTALL TEST_BEFORE_INSTALL TEST_COMMAND TEST_EXCLUDE_FROM_MAIN TIMEOUT TLS_CAINFO TLS_VERIFY TMP_DIR TRUE UPDATE_COMMAND UPDATE_DISCONNECTED URL URL_HASH USES_TERMINAL_BUILD USES_TERMINAL_CONFIGURE USES_TERMINAL_DOWNLOAD USES_TERMINAL_INSTALL USES_TERMINAL_TEST USES_TERMINAL_UPDATE WORKING_DIRECTORY
+
+syn keyword cmakeKWadd_compile_options contained
+ \ COMPILE_OPTIONS
+
+syn keyword cmakeKWadd_custom_command contained
+ \ APPEND ARGS BYPRODUCTS CC COMMAND COMMAND_EXPAND_LISTS COMMENT CROSSCOMPILING_EMULATOR DEPENDS DEPFILE GENERATED IMPLICIT_DEPENDS INCLUDE_DIRECTORIES JOIN MAIN_DEPENDENCY NOT OUTPUT POST_BUILD PRE_BUILD PRE_LINK SYMBOLIC TARGET_FILE TARGET_PROPERTY USES_TERMINAL VERBATIM WORKING_DIRECTORY
+
+syn keyword cmakeKWadd_custom_target contained
+ \ ALL BYPRODUCTS CC COMMAND COMMAND_EXPAND_LISTS COMMENT CROSSCOMPILING_EMULATOR DEPENDS GENERATED INCLUDE_DIRECTORIES JOIN SOURCES TARGET_PROPERTY USES_TERMINAL VERBATIM WORKING_DIRECTORY
+
+syn keyword cmakeKWadd_definitions contained
+ \ COMPILE_DEFINITIONS
+
+syn keyword cmakeKWadd_dependencies contained
+ \ DEPENDS OBJECT_DEPENDS
+
+syn keyword cmakeKWadd_executable contained
+ \ ALIAS CONFIG EXCLUDE_FROM_ALL GLOBAL HEADER_FILE_ONLY IMPORTED IMPORTED_ IMPORTED_LOCATION IMPORTED_LOCATION_ MACOSX_BUNDLE OUTPUT_NAME RUNTIME_OUTPUT_DIRECTORY TARGET
+
+syn keyword cmakeKWadd_library contained
+ \ ALIAS ARCHIVE_OUTPUT_DIRECTORY CLI CONFIG DLL EXCLUDE_FROM_ALL FRAMEWORK GLOBAL HEADER_FILE_ONLY IMPORTED IMPORTED_ IMPORTED_LOCATION IMPORTED_LOCATION_ INTERFACE_ LIBRARY_OUTPUT_DIRECTORY MODULE OBJECT ON OUTPUT_NAME POSITION_INDEPENDENT_CODE POST_BUILD PRE_BUILD PRE_LINK RUNTIME_OUTPUT_DIRECTORY SHARED STATIC TARGET_OBJECTS UNKNOWN
+
+syn keyword cmakeKWadd_subdirectory contained
+ \ EXCLUDE_FROM_ALL
+
+syn keyword cmakeKWadd_test contained
+ \ BUILD_TESTING COMMAND CONFIGURATIONS FAIL_REGULAR_EXPRESSION NAME PASS_REGULAR_EXPRESSION TARGET_FILE WILL_FAIL WORKING_DIRECTORY
+
+syn keyword cmakeKWbuild_command contained
+ \ CONFIGURATION TARGET
+
+syn keyword cmakeKWbuild_name contained
+ \ CMAKE_CXX_COMPILER
+
+syn keyword cmakeKWcmake_host_system_information contained
+ \ AVAILABLE_PHYSICAL_MEMORY AVAILABLE_VIRTUAL_MEMORY FQDN HAS_FPU HAS_MMX HAS_MMX_PLUS HAS_SERIAL_NUMBER HAS_SSE HAS_SSE_FP HAS_SSE_MMX HOSTNAME ID NUMBER_OF_LOGICAL_CORES NUMBER_OF_PHYSICAL_CORES OS_NAME OS_PLATFORM OS_RELEASE OS_VERSION PROCESSOR_DESCRIPTION PROCESSOR_NAME PROCESSOR_SERIAL_NUMBER QUERY RESULT TOTAL_PHYSICAL_MEMORY TOTAL_VIRTUAL_MEMORY
+
+syn keyword cmakeKWcmake_minimum_required contained
+ \ FATAL_ERROR VERSION
+
+syn keyword cmakeKWcmake_parse_arguments contained
+ \ ARGN CONFIGURATIONS DESTINATION FALSE FAST FILES MY_INSTALL MY_INSTALL_CONFIGURATIONS MY_INSTALL_DESTINATION MY_INSTALL_FAST MY_INSTALL_OPTIONAL MY_INSTALL_RENAME MY_INSTALL_TARGETS MY_INSTALL_UNPARSED_ARGUMENTS OPTIONAL PARSE_ARGV RENAME TARGETS TRUE _UNPARSED_ARGUMENTS
+
+syn keyword cmakeKWcmake_policy contained
+ \ CMAKE_POLICY_DEFAULT_CMP CMP GET NNNN NO_POLICY_SCOPE OLD POP PUSH SET VERSION
+
+syn keyword cmakeKWconfigure_file contained
+ \ COPYONLY CRLF DOS ESCAPE_QUOTES FOO_ENABLE FOO_STRING LF NEWLINE_STYLE VAR
+
+syn keyword cmakeKWcreate_test_sourcelist contained
+ \ CMAKE_TESTDRIVER_AFTER_TESTMAIN CMAKE_TESTDRIVER_BEFORE_TESTMAIN EXTRA_INCLUDE FUNCTION
+
+syn keyword cmakeKWctest_build contained
+ \ ALL_BUILD APPEND BUILD CAPTURE_CMAKE_ERROR CONFIGURATION CTEST_BUILD_CONFIGURATION CTEST_BUILD_FLAGS CTEST_BUILD_TARGET CTEST_PROJECT_NAME FLAGS NUMBER_ERRORS NUMBER_WARNINGS QUIET RETURN_VALUE TARGET
+
+syn keyword cmakeKWctest_configure contained
+ \ APPEND BUILD CAPTURE_CMAKE_ERROR OPTIONS QUIET RETURN_VALUE SOURCE
+
+syn keyword cmakeKWctest_coverage contained
+ \ APPEND BUILD CAPTURE_CMAKE_ERROR LABELS QUIET RETURN_VALUE
+
+syn keyword cmakeKWctest_memcheck contained
+ \ APPEND BUILD DEFECT_COUNT EXCLUDE EXCLUDE_FIXTURE EXCLUDE_FIXTURE_CLEANUP EXCLUDE_FIXTURE_SETUP EXCLUDE_LABEL INCLUDE INCLUDE_LABEL OFF ON PARALLEL_LEVEL QUIET RETURN_VALUE SCHEDULE_RANDOM START STOP_TIME STRIDE TEST_LOAD
+
+syn keyword cmakeKWctest_run_script contained
+ \ NEW_PROCESS RETURN_VALUE
+
+syn keyword cmakeKWctest_start contained
+ \ APPEND QUIET TAG TRACK
+
+syn keyword cmakeKWctest_submit contained
+ \ API CDASH_UPLOAD CDASH_UPLOAD_TYPE CTEST_EXTRA_SUBMIT_FILES CTEST_NOTES_FILES FILES HTTPHEADER PARTS QUIET RETRY_COUNT RETRY_DELAY RETURN_VALUE
+
+syn keyword cmakeKWctest_test contained
+ \ APPEND BUILD CAPTURE_CMAKE_ERROR CPU EXCLUDE EXCLUDE_FIXTURE EXCLUDE_FIXTURE_CLEANUP EXCLUDE_FIXTURE_SETUP EXCLUDE_LABEL INCLUDE INCLUDE_LABEL OFF ON PARALLEL_LEVEL QUIET RETURN_VALUE SCHEDULE_RANDOM START STOP_TIME STRIDE TEST_LOAD
+
+syn keyword cmakeKWctest_update contained
+ \ QUIET RETURN_VALUE SOURCE
+
+syn keyword cmakeKWctest_upload contained
+ \ CAPTURE_CMAKE_ERROR FILES QUIET
+
+syn keyword cmakeKWdefine_property contained
+ \ BRIEF_DOCS CACHED_VARIABLE DIRECTORY FULL_DOCS GLOBAL INHERITED PROPERTY SOURCE TARGET TEST VARIABLE
+
+syn keyword cmakeKWenable_language contained
+ \ OPTIONAL
+
+syn keyword cmakeKWexec_program contained
+ \ ARGS OUTPUT_VARIABLE RETURN_VALUE
+
+syn keyword cmakeKWexecute_process contained
+ \ ANSI AUTO COMMAND ENCODING ERROR_FILE ERROR_QUIET ERROR_STRIP_TRAILING_WHITESPACE ERROR_VARIABLE INPUT_FILE NONE OEM OUTPUT_FILE OUTPUT_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE RESULTS_VARIABLE RESULT_VARIABLE TIMEOUT UTF VERBATIM WORKING_DIRECTORY
+
+syn keyword cmakeKWexport contained
+ \ ANDROID_MK APPEND CONFIG EXPORT EXPORT_LINK_INTERFACE_LIBRARIES FILE IMPORTED IMPORTED_ NAMESPACE NDK OLD PACKAGE TARGETS
+
+syn keyword cmakeKWexport_library_dependencies contained
+ \ APPEND EXPORT INCLUDE LINK_INTERFACE_LIBRARIES SET
+
+syn keyword cmakeKWfile contained
+ \ ALGO APPEND ASCII CMAKE_TLS_CAINFO CMAKE_TLS_VERIFY CONDITION CONFIG CONTENT COPY CR DESTINATION DIRECTORY_PERMISSIONS DOWNLOAD ENCODING EXCLUDE EXPECTED_HASH FILES_MATCHING FILE_PERMISSIONS FOLLOW_SYMLINKS FUNCTION GENERATE GLOB GLOB_RECURSE GUARD HASH HEX HTTPHEADER INACTIVITY_TIMEOUT INSTALL LENGTH_MAXIMUM LENGTH_MINIMUM LF LIMIT LIMIT_COUNT LIMIT_INPUT LIMIT_OUTPUT LIST_DIRECTORIES LOCK LOG MAKE_DIRECTORY NEWLINE_CONSUME NO_HEX_CONVERSION NO_SOURCE_PERMISSIONS OFFSET OLD PATTERN PROCESS READ REGEX RELATIVE RELATIVE_PATH RELEASE REMOVE REMOVE_RECURSE RENAME RESULT_VARIABLE SHOW_PROGRESS SSL STATUS STRINGS TIMESTAMP TLS_CAINFO TLS_VERIFY TO_CMAKE_PATH TO_NATIVE_PATH UPLOAD USERPWD USE_SOURCE_PERMISSIONS UTC UTF WRITE
+
+syn keyword cmakeKWfind_file contained
+ \ CMAKE_FIND_ROOT_PATH_BOTH DOC DVAR HINTS INCLUDE NAMES NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_FIND_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH NO_DEFAULT_PATH NO_SYSTEM_ENVIRONMENT_PATH ONLY_CMAKE_FIND_ROOT_PATH OS PATHS PATH_SUFFIXES VAR
+
+syn keyword cmakeKWfind_library contained
+ \ CMAKE_FIND_ROOT_PATH_BOTH DOC DVAR HINTS LIB NAMES NAMES_PER_DIR NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_FIND_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH NO_DEFAULT_PATH NO_SYSTEM_ENVIRONMENT_PATH ONLY_CMAKE_FIND_ROOT_PATH OS PATHS PATH_SUFFIXES VAR
+
+syn keyword cmakeKWfind_package contained
+ \ CMAKE_DISABLE_FIND_PACKAGE_ CMAKE_FIND_ROOT_PATH_BOTH COMPONENTS CONFIG CONFIGS DEC DVAR EXACT HINTS MODULE NAMES NATURAL NO_CMAKE_BUILDS_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_FIND_ROOT_PATH NO_CMAKE_PACKAGE_REGISTRY NO_CMAKE_PATH NO_CMAKE_SYSTEM_PACKAGE_REGISTRY NO_CMAKE_SYSTEM_PATH NO_DEFAULT_PATH NO_MODULE NO_POLICY_SCOPE NO_SYSTEM_ENVIRONMENT_PATH ONLY_CMAKE_FIND_ROOT_PATH OPTIONAL_COMPONENTS OS PACKAGE_FIND_NAME PACKAGE_FIND_VERSION PACKAGE_FIND_VERSION_COUNT PACKAGE_FIND_VERSION_MAJOR PACKAGE_FIND_VERSION_MINOR PACKAGE_FIND_VERSION_PATCH PACKAGE_FIND_VERSION_TWEAK PACKAGE_VERSION PACKAGE_VERSION_COMPATIBLE PACKAGE_VERSION_EXACT PACKAGE_VERSION_UNSUITABLE PATHS PATH_SUFFIXES QUIET REQUIRED SET TRUE _CONFIG _CONSIDERED_CONFIGS _CONSIDERED_VERSIONS _DIR _FIND_COMPONENTS _FIND_QUIETLY _FIND_REQUIRED _FIND_REQUIRED_ _FIND_VERSION_EXACT _FOUND
+
+syn keyword cmakeKWfind_path contained
+ \ CMAKE_FIND_ROOT_PATH_BOTH DOC DVAR HINTS INCLUDE NAMES NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_FIND_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH NO_DEFAULT_PATH NO_SYSTEM_ENVIRONMENT_PATH ONLY_CMAKE_FIND_ROOT_PATH OS PATHS PATH_SUFFIXES VAR
+
+syn keyword cmakeKWfind_program contained
+ \ CMAKE_FIND_ROOT_PATH_BOTH DOC DVAR HINTS NAMES NAMES_PER_DIR NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_FIND_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH NO_DEFAULT_PATH NO_SYSTEM_ENVIRONMENT_PATH ONLY_CMAKE_FIND_ROOT_PATH OS PATHS PATH_SUFFIXES VAR
+
+syn keyword cmakeKWfltk_wrap_ui contained
+ \ FLTK
+
+syn keyword cmakeKWforeach contained
+ \ ARGS IN ITEMS LISTS RANGE
+
+syn keyword cmakeKWfunction contained
+ \ ARGC ARGN ARGS ARGV PARENT_SCOPE
+
+syn keyword cmakeKWget_cmake_property contained
+ \ COMPONENTS GLOBAL MACROS VAR VARIABLES
+
+syn keyword cmakeKWget_directory_property contained
+ \ DEFINITION DIRECTORY
+
+syn keyword cmakeKWget_filename_component contained
+ \ ABSOLUTE ARG_VAR BASE_DIR CACHE COMP DIRECTORY EXT NAME NAME_WE PATH PROGRAM PROGRAM_ARGS REALPATH VAR
+
+syn keyword cmakeKWget_property contained
+ \ BRIEF_DOCS CACHE DEFINED DIRECTORY FULL_DOCS GLOBAL INSTALL PROPERTY SET SOURCE TARGET TEST VARIABLE
+
+syn keyword cmakeKWget_source_file_property contained
+ \ LOCATION VAR
+
+syn keyword cmakeKWget_target_property contained
+ \ VAR
+
+syn keyword cmakeKWget_test_property contained
+ \ VAR
+
+syn keyword cmakeKWif contained
+ \ ARGS CMAKE_MATCH_ CMP COMMAND DEFINED EQUAL EXISTS FALSE GREATER GREATER_EQUAL IGNORE IN_LIST IS_ABSOLUTE IS_DIRECTORY IS_NEWER_THAN IS_SYMLINK LESS LESS_EQUAL MATCHES NNNN NOT OFF OR POLICY STREQUAL STRGREATER STRGREATER_EQUAL STRLESS STRLESS_EQUAL TARGET TEST THEN TRUE VERSION_EQUAL VERSION_GREATER VERSION_GREATER_EQUAL VERSION_LESS VERSION_LESS_EQUAL YES
+
+syn keyword cmakeKWinclude contained
+ \ NO_POLICY_SCOPE OPTIONAL RESULT_VARIABLE
+
+syn keyword cmakeKWinclude_directories contained
+ \ AFTER BEFORE INCLUDE_DIRECTORIES ON SYSTEM
+
+syn keyword cmakeKWinclude_external_msproject contained
+ \ GUID MAP_IMPORTED_CONFIG_ PLATFORM TYPE WIX
+
+syn keyword cmakeKWinclude_guard contained
+ \ DIRECTORY GLOBAL TRUE __CURRENT_FILE_VAR__
+
+syn keyword cmakeKWinstall contained
+ \ ARCHIVE BUNDLE CODE COMPONENT CONFIGURATIONS CVS DESTDIR DESTINATION DIRECTORY DIRECTORY_PERMISSIONS DLL EXCLUDE_FROM_ALL EXPORT EXPORT_ANDROID_MK EXPORT_LINK_INTERFACE_LIBRARIES FILES FILES_MATCHING FILE_PERMISSIONS FRAMEWORK GROUP_EXECUTE GROUP_READ GROUP_WRITE IMPORTED_ INCLUDES INSTALL_PREFIX INTERFACE_INCLUDE_DIRECTORIES LIBRARY MACOSX_BUNDLE MESSAGE_NEVER NAMELINK_ONLY NAMELINK_SKIP NAMESPACE NDK OBJECTS OPTIONAL OWNER_EXECUTE OWNER_READ OWNER_WRITE PATTERN PERMISSIONS POST_INSTALL_SCRIPT PRE_INSTALL_SCRIPT PRIVATE_HEADER PROGRAMS PUBLIC_HEADER REGEX RENAME RESOURCE RUNTIME SCRIPT SETGID SETUID SOVERSION TARGETS TRUE USE_SOURCE_PERMISSIONS VERSION WORLD_EXECUTE WORLD_READ WORLD_WRITE
+
+syn keyword cmakeKWinstall_files contained
+ \ FILES GLOB
+
+syn keyword cmakeKWinstall_programs contained
+ \ FILES GLOB PROGRAMS TARGETS
+
+syn keyword cmakeKWinstall_targets contained
+ \ DLL RUNTIME_DIRECTORY TARGETS
+
+syn keyword cmakeKWlist contained
+ \ APPEND CACHE EXCLUDE FILTER FIND GET INCLUDE INSERT INTERNAL LENGTH LIST NOTES PARENT_SCOPE REGEX REMOVE_AT REMOVE_DUPLICATES REMOVE_ITEM REVERSE SORT
+
+syn keyword cmakeKWload_cache contained
+ \ EXCLUDE INCLUDE_INTERNALS READ_WITH_PREFIX
+
+syn keyword cmakeKWload_command contained
+ \ CMAKE_LOADED_COMMAND_ COMMAND_NAME
+
+syn keyword cmakeKWmacro contained
+ \ ARGC ARGN ARGS ARGV DEFINED GREATER LISTS NOT _BAR _FOO
+
+syn keyword cmakeKWmake_directory contained
+ \ MAKE_DIRECTORY
+
+syn keyword cmakeKWmark_as_advanced contained
+ \ CLEAR FORCE VAR
+
+syn keyword cmakeKWmath contained
+ \ EXPR
+
+syn keyword cmakeKWmessage contained
+ \ AUTHOR_WARNING DEPRECATION FATAL_ERROR GUI SEND_ERROR STATUS WARNING
+
+syn keyword cmakeKWoption contained
+ \ OFF ON
+
+syn keyword cmakeKWproject contained
+ \ CMAKE_PROJECT_ DESCRIPTION LANGUAGES NAME NONE PROJECT VERSION _BINARY_DIR _INCLUDE _SOURCE_DIR _VERSION _VERSION_MAJOR _VERSION_MINOR _VERSION_PATCH _VERSION_TWEAK
+
+syn keyword cmakeKWremove contained
+ \ REMOVE_ITEM VALUE VAR
+
+syn keyword cmakeKWseparate_arguments contained
+ \ MSDN NATIVE NATIVE_COMMAND UNIX_COMMAND WINDOWS WINDOWS_COMMAND _COMMAND
+
+syn keyword cmakeKWset contained
+ \ BOOL CACHE FILEPATH FORCE INTERNAL OFF ON PARENT_SCOPE STRING STRINGS
+
+syn keyword cmakeKWset_directory_properties contained
+ \ PROPERTIES
+
+syn keyword cmakeKWset_property contained
+ \ APPEND APPEND_STRING CACHE DIRECTORY GLOBAL INSTALL PROPERTY SOURCE TARGET TEST WIX
+
+syn keyword cmakeKWset_source_files_properties contained
+ \ PROPERTIES
+
+syn keyword cmakeKWset_target_properties contained
+ \ PROPERTIES
+
+syn keyword cmakeKWset_tests_properties contained
+ \ PROPERTIES
+
+syn keyword cmakeKWsource_group contained
+ \ FILES PREFIX REGULAR_EXPRESSION TREE
+
+syn keyword cmakeKWstring contained
+ \ ALPHABET APPEND ASCII CMAKE_MATCH_ COMPARE CONCAT CONFIGURE EQUAL ESCAPE_QUOTES FIND GENEX_STRIP GREATER GREATER_EQUAL GUID HASH LENGTH LESS LESS_EQUAL MAKE_C_IDENTIFIER MATCH MATCHALL MATCHES NAMESPACE NOTEQUAL ONLY PREPEND RANDOM RANDOM_SEED REGEX REPLACE REVERSE RFC SHA SOURCE_DATE_EPOCH STRIP SUBSTRING SZ TIMESTAMP TOLOWER TOUPPER TYPE US UTC UUID
+
+syn keyword cmakeKWsubdirs contained
+ \ EXCLUDE_FROM_ALL PREORDER
+
+syn keyword cmakeKWtarget_compile_definitions contained
+ \ COMPILE_DEFINITIONS INTERFACE INTERFACE_COMPILE_DEFINITIONS PRIVATE PUBLIC
+
+syn keyword cmakeKWtarget_compile_features contained
+ \ COMPILE_FEATURES IMPORTED INTERFACE INTERFACE_COMPILE_FEATURES PRIVATE PUBLIC
+
+syn keyword cmakeKWtarget_compile_options contained
+ \ BEFORE COMPILE_OPTIONS IMPORTED INTERFACE INTERFACE_COMPILE_OPTIONS PRIVATE PUBLIC
+
+syn keyword cmakeKWtarget_include_directories contained
+ \ BEFORE BUILD_INTERFACE IMPORTED INCLUDE_DIRECTORIES INSTALL_INTERFACE INTERFACE INTERFACE_INCLUDE_DIRECTORIES INTERFACE_LINK_LIBRARIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES PRIVATE PUBLIC SYSTEM
+
+syn keyword cmakeKWtarget_link_libraries contained
+ \ ALIAS DAG DEBUG_CONFIGURATIONS IMPORTED IMPORTED_NO_SONAME INTERFACE INTERFACE_LINK_LIBRARIES LINK_FLAGS LINK_INTERFACE_LIBRARIES LINK_INTERFACE_LIBRARIES_DEBUG LINK_INTERFACE_MULTIPLICITY LINK_PRIVATE LINK_PUBLIC OLD OSX PRIVATE PUBLIC STATIC
+
+syn keyword cmakeKWtarget_sources contained
+ \ IMPORTED INTERFACE INTERFACE_SOURCES PRIVATE PUBLIC SOURCES
+
+syn keyword cmakeKWtry_compile contained
+ \ ALL_BUILD CMAKE_FLAGS COMPILE_DEFINITIONS COPY_FILE COPY_FILE_ERROR CUDA_EXTENSIONS CUDA_STANDARD CUDA_STANDARD_REQUIRED CXX_EXTENSIONS CXX_STANDARD CXX_STANDARD_REQUIRED C_EXTENSIONS C_STANDARD C_STANDARD_REQUIRED DEFINED DLINK_LIBRARIES DVAR FALSE INCLUDE_DIRECTORIES LANG LINK_DIRECTORIES LINK_LIBRARIES NOT OUTPUT_VARIABLE RESULT_VAR SOURCES TRUE TYPE VALUE _EXTENSIONS _STANDARD _STANDARD_REQUIRED
+
+syn keyword cmakeKWtry_run contained
+ \ ARGS CMAKE_FLAGS COMPILE_DEFINITIONS COMPILE_OUTPUT_VARIABLE COMPILE_RESULT_VAR DLINK_LIBRARIES DVAR FAILED_TO_RUN FALSE INCLUDE_DIRECTORIES LINK_DIRECTORIES LINK_LIBRARIES RUN_OUTPUT_VARIABLE RUN_RESULT_VAR TRUE TYPE VALUE __TRYRUN_OUTPUT
+
+syn keyword cmakeKWunset contained
+ \ CACHE LD_LIBRARY_PATH PARENT_SCOPE
+
+syn keyword cmakeKWuse_mangled_mesa contained
+ \ GL OUTPUT_DIRECTORY PATH_TO_MESA
+
+syn keyword cmakeKWvariable_requires contained
+ \ RESULT_VARIABLE TEST_VARIABLE
+
+syn keyword cmakeKWvariable_watch contained
+ \ COMMAND
+
+syn keyword cmakeKWwhile contained
+ \ ARGS
+
+syn keyword cmakeKWwrite_file contained
+ \ APPEND CONFIGURE_FILE NOTE WRITE
+
+
+syn keyword cmakeGeneratorExpressions contained
+ \ LINK_LIBRARIES INCLUDE_DIRECTORIES COMPILE_DEFINITIONS CONFIG DEBUG_MODE BOOL AND NOT IF STREQUAL MAP_IMPORTED_CONFIG_ PLATFORM_ID C_COMPILER_ID CXX_COMPILER_ID VERSION_LESS VERSION_GREATER VERSION_EQUAL VERSION_LESS_EQUAL VERSION_GREATER_EQUAL C_COMPILER_VERSION CXX_COMPILER_VERSION TARGET_POLICY COMPILE_FEATURES C_STANDARD CXX_STANDARD COMPILE_LANGUAGE PRIVATE PUBLIC COMPILING_CXX GNU OLD_COMPILER CMAKE_CXX_COMPILER_VERSION CONFIGURATION TARGET_FILE TARGET_FILE_NAME TARGET_FILE_DIR TARGET_LINKER_FILE TARGET_LINKER_FILE_NAME TARGET_LINKER_FILE_DIR TARGET_SONAME_FILE TARGET_SONAME_FILE_NAME TARGET_SONAME_FILE_DIR TARGET_PDB_FILE PDB_NAME PDB_OUTPUT_DIRECTORY PDB_NAME_ PDB_OUTPUT_DIRECTORY_ TARGET_PDB_FILE_NAME TARGET_PDB_FILE_DIR TARGET_BUNDLE_DIR TARGET_BUNDLE_CONTENT_DIR SDK TARGET_PROPERTY INSTALL_PREFIX EXPORT JOIN ANGLE COMMA SEMICOLON TARGET_NAME LINK_ONLY INTERFACE_LINK_LIBRARIES INSTALL_INTERFACE BUILD_INTERFACE LOWER_CASE UPPER_CASE MAKE_C_IDENTIFIER TARGET_OBJECTS OBJECT_LIBRARY SHELL_PATH MSYS
+
+syn case ignore
+
+syn keyword cmakeCommand
+ \ add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_subdirectory add_test aux_source_directory break build_command cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue create_test_sourcelist ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload define_property enable_language enable_testing endfunction endmacro execute_process export file find_file find_library find_package find_path find_program fltk_wrap_ui function get_cmake_property get_directory_property get_filename_component get_property get_source_file_property get_target_property get_test_property include include_directories include_external_msproject include_guard include_regular_expression install link_directories list load_cache load_command macro mark_as_advanced math message option project qt_wrap_cpp qt_wrap_ui remove_definitions return separate_arguments set set_directory_properties set_property set_source_files_properties set_target_properties set_tests_properties site_name source_group string target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_libraries target_sources try_compile try_run unset variable_watch
+ \ nextgroup=cmakeArguments
+
+syn keyword cmakeCommandConditional
+ \ else elseif endif if
+ \ nextgroup=cmakeArguments
+
+syn keyword cmakeCommandRepeat
+ \ endforeach endwhile foreach while
+ \ nextgroup=cmakeArguments
+
+syn keyword cmakeCommandDeprecated
+ \ build_name exec_program export_library_dependencies install_files install_programs install_targets link_libraries make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file
+ \ nextgroup=cmakeArguments
+
+syn case match
+
+syn keyword cmakeTodo
+ \ TODO FIXME XXX
+ \ contained
+
+hi def link cmakeCommand Function
+hi def link cmakeCommandConditional Conditional
+hi def link cmakeCommandDeprecated WarningMsg
+hi def link cmakeCommandRepeat Repeat
+hi def link cmakeComment Comment
+hi def link cmakeEnvironment Special
+hi def link cmakeEscaped Special
+hi def link cmakeGeneratorExpression WarningMsg
+hi def link cmakeGeneratorExpressions Constant
+hi def link cmakeLuaComment Comment
+hi def link cmakeModule Include
+hi def link cmakeProperty Constant
+hi def link cmakeRegistry Underlined
+hi def link cmakeString String
+hi def link cmakeTodo TODO
+hi def link cmakeVariableValue Type
+hi def link cmakeVariable Identifier
+
+hi def link cmakeKWExternalProject ModeMsg
+hi def link cmakeKWadd_compile_options ModeMsg
+hi def link cmakeKWadd_custom_command ModeMsg
+hi def link cmakeKWadd_custom_target ModeMsg
+hi def link cmakeKWadd_definitions ModeMsg
+hi def link cmakeKWadd_dependencies ModeMsg
+hi def link cmakeKWadd_executable ModeMsg
+hi def link cmakeKWadd_library ModeMsg
+hi def link cmakeKWadd_subdirectory ModeMsg
+hi def link cmakeKWadd_test ModeMsg
+hi def link cmakeKWbuild_command ModeMsg
+hi def link cmakeKWbuild_name ModeMsg
+hi def link cmakeKWcmake_host_system_information ModeMsg
+hi def link cmakeKWcmake_minimum_required ModeMsg
+hi def link cmakeKWcmake_parse_arguments ModeMsg
+hi def link cmakeKWcmake_policy ModeMsg
+hi def link cmakeKWconfigure_file ModeMsg
+hi def link cmakeKWcreate_test_sourcelist ModeMsg
+hi def link cmakeKWctest_build ModeMsg
+hi def link cmakeKWctest_configure ModeMsg
+hi def link cmakeKWctest_coverage ModeMsg
+hi def link cmakeKWctest_memcheck ModeMsg
+hi def link cmakeKWctest_run_script ModeMsg
+hi def link cmakeKWctest_start ModeMsg
+hi def link cmakeKWctest_submit ModeMsg
+hi def link cmakeKWctest_test ModeMsg
+hi def link cmakeKWctest_update ModeMsg
+hi def link cmakeKWctest_upload ModeMsg
+hi def link cmakeKWdefine_property ModeMsg
+hi def link cmakeKWenable_language ModeMsg
+hi def link cmakeKWexec_program ModeMsg
+hi def link cmakeKWexecute_process ModeMsg
+hi def link cmakeKWexport ModeMsg
+hi def link cmakeKWexport_library_dependencies ModeMsg
+hi def link cmakeKWfile ModeMsg
+hi def link cmakeKWfind_file ModeMsg
+hi def link cmakeKWfind_library ModeMsg
+hi def link cmakeKWfind_package ModeMsg
+hi def link cmakeKWfind_path ModeMsg
+hi def link cmakeKWfind_program ModeMsg
+hi def link cmakeKWfltk_wrap_ui ModeMsg
+hi def link cmakeKWforeach ModeMsg
+hi def link cmakeKWfunction ModeMsg
+hi def link cmakeKWget_cmake_property ModeMsg
+hi def link cmakeKWget_directory_property ModeMsg
+hi def link cmakeKWget_filename_component ModeMsg
+hi def link cmakeKWget_property ModeMsg
+hi def link cmakeKWget_source_file_property ModeMsg
+hi def link cmakeKWget_target_property ModeMsg
+hi def link cmakeKWget_test_property ModeMsg
+hi def link cmakeKWif ModeMsg
+hi def link cmakeKWinclude ModeMsg
+hi def link cmakeKWinclude_directories ModeMsg
+hi def link cmakeKWinclude_external_msproject ModeMsg
+hi def link cmakeKWinclude_guard ModeMsg
+hi def link cmakeKWinstall ModeMsg
+hi def link cmakeKWinstall_files ModeMsg
+hi def link cmakeKWinstall_programs ModeMsg
+hi def link cmakeKWinstall_targets ModeMsg
+hi def link cmakeKWlist ModeMsg
+hi def link cmakeKWload_cache ModeMsg
+hi def link cmakeKWload_command ModeMsg
+hi def link cmakeKWmacro ModeMsg
+hi def link cmakeKWmake_directory ModeMsg
+hi def link cmakeKWmark_as_advanced ModeMsg
+hi def link cmakeKWmath ModeMsg
+hi def link cmakeKWmessage ModeMsg
+hi def link cmakeKWoption ModeMsg
+hi def link cmakeKWproject ModeMsg
+hi def link cmakeKWremove ModeMsg
+hi def link cmakeKWseparate_arguments ModeMsg
+hi def link cmakeKWset ModeMsg
+hi def link cmakeKWset_directory_properties ModeMsg
+hi def link cmakeKWset_property ModeMsg
+hi def link cmakeKWset_source_files_properties ModeMsg
+hi def link cmakeKWset_target_properties ModeMsg
+hi def link cmakeKWset_tests_properties ModeMsg
+hi def link cmakeKWsource_group ModeMsg
+hi def link cmakeKWstring ModeMsg
+hi def link cmakeKWsubdirs ModeMsg
+hi def link cmakeKWtarget_compile_definitions ModeMsg
+hi def link cmakeKWtarget_compile_features ModeMsg
+hi def link cmakeKWtarget_compile_options ModeMsg
+hi def link cmakeKWtarget_include_directories ModeMsg
+hi def link cmakeKWtarget_link_libraries ModeMsg
+hi def link cmakeKWtarget_sources ModeMsg
+hi def link cmakeKWtry_compile ModeMsg
+hi def link cmakeKWtry_run ModeMsg
+hi def link cmakeKWunset ModeMsg
+hi def link cmakeKWuse_mangled_mesa ModeMsg
+hi def link cmakeKWvariable_requires ModeMsg
+hi def link cmakeKWvariable_watch ModeMsg
+hi def link cmakeKWwhile ModeMsg
+hi def link cmakeKWwrite_file ModeMsg
+
+let b:current_syntax = "cmake"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim: set nowrap:
diff --git a/runtime/syntax/cmod.vim b/runtime/syntax/cmod.vim
new file mode 100644
index 0000000..ea37682
--- /dev/null
+++ b/runtime/syntax/cmod.vim
@@ -0,0 +1,144 @@
+" Vim syntax file
+" Language: Cmod
+" Current Maintainer: Stephen R. van den Berg <srb@cuci.nl>
+" Last Change: 2018 Jan 23
+" Version: 2.9
+" Remark: Is used to edit Cmod files for Pike development.
+" Remark: Includes a highlighter for any embedded Autodoc format.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Read the C syntax to start with
+runtime! syntax/c.vim
+unlet b:current_syntax
+
+if !exists("c_autodoc")
+ " For embedded Autodoc documentation
+ syn include @cmodAutodoc <sfile>:p:h/autodoc.vim
+ unlet b:current_syntax
+endif
+
+" Supports rotating amongst several same-level preprocessor conditionals
+packadd! matchit
+let b:match_words = "({:}\\@1<=),^\s*#\s*\%(if\%(n\?def\)\|else\|el\%(se\)\?if\|endif\)\>"
+
+" Cmod extensions
+syn keyword cmodStatement __INIT INIT EXIT GC_RECURSE GC_CHECK
+syn keyword cmodStatement EXTRA OPTIMIZE RETURN
+syn keyword cmodStatement ADD_EFUN ADD_EFUN2 ADD_FUNCTION
+syn keyword cmodStatement MK_STRING MK_STRING_SVALUE CONSTANT_STRLEN
+
+syn keyword cmodStatement SET_SVAL pop_n_elems pop_stack
+syn keyword cmodStatement SIMPLE_ARG_TYPE_ERROR Pike_sp Pike_fp MKPCHARP
+syn keyword cmodStatement SET_SVAL_TYPE REF_MAKE_CONST_STRING INC_PCHARP
+syn keyword cmodStatement PTR_FROM_INT INHERIT_FROM_PTR
+syn keyword cmodStatement DECLARE_CYCLIC BEGIN_CYCLIC END_CYCLIC
+syn keyword cmodStatement UPDATE_LOCATION UNSAFE_IS_ZERO SAFE_IS_ZERO
+syn keyword cmodStatement MKPCHARP_STR APPLY_MASTER current_storage
+syn keyword cmodStatement PIKE_MAP_VARIABLE size_shift
+syn keyword cmodStatement THREADS_ALLOW THREADS_DISALLOW
+
+syn keyword cmodStatement add_integer_constant ref_push_object
+syn keyword cmodStatement push_string apply_svalue free_svalue
+syn keyword cmodStatement get_inherit_storage get_storage
+syn keyword cmodStatement make_shared_binary_string push_int64
+syn keyword cmodStatement begin_shared_string end_shared_string
+syn keyword cmodStatement add_ref fast_clone_object clone_object
+syn keyword cmodStatement push_undefined push_int ref_push_string
+syn keyword cmodStatement free_string push_ulongest free_object
+syn keyword cmodStatement convert_stack_top_to_bignum push_array
+syn keyword cmodStatement push_object reduce_stack_top_bignum
+syn keyword cmodStatement push_static_text apply_current
+syn keyword cmodStatement assign_svalue free_program destruct_object
+syn keyword cmodStatement start_new_program low_inherit stack_swap
+syn keyword cmodStatement generic_error_program end_program
+syn keyword cmodStatement free_array apply_external copy_mapping
+syn keyword cmodStatement push_constant_text ref_push_mapping
+syn keyword cmodStatement mapping_insert mapping_string_insert_string
+syn keyword cmodStatement f_aggregate_mapping f_aggregate apply
+syn keyword cmodStatement push_mapping push_svalue low_mapping_lookup
+syn keyword cmodStatement assign_svalues_no_free f_add
+syn keyword cmodStatement push_empty_string stack_dup assign_lvalue
+syn keyword cmodStatement low_mapping_string_lookup allocate_mapping
+syn keyword cmodStatement copy_shared_string make_shared_binary_string0
+syn keyword cmodStatement f_call_function f_index f_utf8_to_string
+syn keyword cmodStatement finish_string_builder init_string_builder
+syn keyword cmodStatement reset_string_builder free_string_builder
+syn keyword cmodStatement string_builder_putchar get_all_args
+syn keyword cmodStatement add_shared_strings check_all_args
+syn keyword cmodStatement do_inherit add_string_constant
+syn keyword cmodStatement add_program_constant set_init_callback
+syn keyword cmodStatement simple_mapping_string_lookup
+syn keyword cmodStatement f_sprintf push_text string_has_null
+syn keyword cmodStatement end_and_resize_shared_string
+
+syn keyword cmodStatement args sp
+
+syn keyword cmodStatement free
+
+syn keyword cmodConstant ID_PROTECTED ID_FINAL PIKE_DEBUG
+syn keyword cmodConstant NUMBER_NUMBER
+syn keyword cmodConstant PIKE_T_INT PIKE_T_STRING PIKE_T_ARRAY
+syn keyword cmodConstant PIKE_T_MULTISET PIKE_T_OBJECT PIKE_T_MAPPING
+syn keyword cmodConstant NUMBER_UNDEFINED PIKE_T_PROGRAM PIKE_T_FUNCTION
+syn keyword cmodConstant T_OBJECT T_STRING T_ARRAY T_MAPPING
+
+syn keyword cmodException SET_ONERROR UNSET_ONERROR ONERROR
+syn keyword cmodException CALL_AND_UNSET_ONERROR
+
+syn keyword cmodDebug Pike_fatal Pike_error check_stack
+
+syn keyword cmodAccess public protected private INHERIT
+syn keyword cmodAccess CTYPE CVAR PIKEVAR PIKEFUN
+
+syn keyword cmodModifier efun export flags optflags optfunc
+syn keyword cmodModifier type rawtype errname name c_name prototype
+syn keyword cmodModifier program_flags gc_trivial PMOD_EXPORT
+syn keyword cmodModifier ATTRIBUTE noclone noinline
+syn keyword cmodModifier tOr tFuncV tInt tMix tVoid tStr tMap tPrg
+syn keyword cmodModifier tSetvar tArr tMult tMultiset
+syn keyword cmodModifier tArray tMapping tString tSetvar tVar
+
+syn keyword cmodType bool mapping string multiset array mixed
+syn keyword cmodType object function program auto svalue
+syn keyword cmodType bignum longest zero pike_string
+syn keyword cmodType this this_program THIS INT_TYPE INT64 INT32
+syn keyword cmodType p_wchar2 PCHARP p_wchar1 p_wchar0 MP_INT
+
+syn keyword cmodOperator _destruct create __hash _sizeof _indices _values
+syn keyword cmodOperator _is_type _sprintf _equal _m_delete _get_iterator
+syn keyword cmodOperator _search _types _serialize _deserialize
+syn keyword cmodOperator _size_object _random _sqrt TYPEOF SUBTYPEOF
+syn keyword cmodOperator LIKELY UNLIKELY
+
+syn keyword cmodStructure DECLARATIONS PIKECLASS DECLARE_STORAGE
+
+if !exists("c_autodoc")
+ syn match cmodAutodocReal display contained "\%(//\|[/ \t\v]\*\|^\*\)\@2<=!.*" contains=@cmodAutodoc containedin=cComment,cCommentL
+ syn cluster cCommentGroup add=cmodAutodocReal
+ syn cluster cPreProcGroup add=cmodAutodocReal
+endif
+
+" Default highlighting
+hi def link cmodAccess Statement
+hi def link cmodOperator Operator
+hi def link cmodStatement Statement
+hi def link cmodConstant Constant
+hi def link cmodModifier Type
+hi def link cmodType Type
+hi def link cmodStorageClass StorageClass
+hi def link cmodStructure Structure
+hi def link cmodException Exception
+hi def link cmodDebug Debug
+
+let b:current_syntax = "cmod"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/cmusrc.vim b/runtime/syntax/cmusrc.vim
new file mode 100644
index 0000000..b821aff
--- /dev/null
+++ b/runtime/syntax/cmusrc.vim
@@ -0,0 +1,309 @@
+" Vim syntax file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-06-17
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword+=-
+
+syn keyword cmusrcTodo contained TODO FIXME XXX NOTE
+
+syn match cmusrcComment contained display '^\s*#.*$'
+
+syn match cmusrcBegin display '^'
+ \ nextgroup=cmusrcKeyword,cmusrcComment
+ \ skipwhite
+
+syn keyword cmusrcKeyword contained add
+ \ nextgroup=cmusrcAddSwitches,cmusrcURI
+ \ skipwhite
+
+syn match cmusrcAddSwitches contained display '-[lpqQ]'
+ \ nextgroup=cmusrcURI
+ \ skipwhite
+
+syn match cmusrcURI contained display '.\+'
+
+syn keyword cmusrcKeyword contained bind
+ \ nextgroup=cmusrcBindSwitches,
+ \ cmusrcBindContext
+ \ skipwhite
+
+syn match cmusrcBindSwitches contained display '-[f]'
+ \ nextgroup=cmusrcBindContext
+ \ skipwhite
+
+syn keyword cmusrcBindContext contained common library playlist queue
+ \ browser filters
+ \ nextgroup=cmusrcBindKey
+ \ skipwhite
+
+syn match cmusrcBindKey contained display '\S\+'
+ \ nextgroup=cmusrcKeyword
+ \ skipwhite
+
+syn keyword cmusrcKeyword contained browser-up colorscheme echo factivate
+ \ filter invert player-next player-pause
+ \ player-play player-prev player-stop quit
+ \ refresh run search-next search-prev shuffle
+ \ unmark win-activate win-add-l win-add-p
+ \ win-add-Q win-add-q win-bottom win-down
+ \ win-mv-after win-mv-before win-next
+ \ win-page-down win-page-up win-remove
+ \ win-sel-cur win-toggle win-top win-up
+ \ win-update
+
+syn keyword cmusrcKeyword contained cd
+ \ nextgroup=cmusrcDirectory
+ \ skipwhite
+
+syn match cmusrcDirectory contained display '.\+'
+
+syn keyword cmusrcKeyword contained clear
+ \ nextgroup=cmusrcClearSwitches
+
+syn match cmusrcClearSwitches contained display '-[lpq]'
+
+syn keyword cmusrcKeyword contained fset
+ \ nextgroup=cmusrcFSetName
+ \ skipwhite
+
+syn match cmusrcFSetName contained display '[^=]\+'
+ \ nextgroup=cmusrcFSetEq
+
+syn match cmusrcFSetEq contained display '='
+ \ nextgroup=cmusrcFilterExpr
+
+syn match cmusrcFilterExpr contained display '.\+'
+
+syn keyword cmusrcKeyword contained load
+ \ nextgroup=cmusrcLoadSwitches,cmusrcURI
+ \ skipwhite
+
+syn match cmusrcLoadSwitches contained display '-[lp]'
+ \ nextgroup=cmusrcURI
+ \ skipwhite
+
+syn keyword cmusrcKeyword contained mark
+ \ nextgroup=cmusrcFilterExpr
+
+syn keyword cmusrcKeyword contained save
+ \ nextgroup=cmusrcSaveSwitches,cmusrcFile
+ \ skipwhite
+
+syn match cmusrcSaveSwitches contained display '-[lp]'
+ \ nextgroup=cmusrcFile
+ \ skipwhite
+
+syn match cmusrcFile contained display '.\+'
+
+syn keyword cmusrcKeyword contained seek
+ \ nextgroup=cmusrcSeekOffset
+ \ skipwhite
+
+syn match cmusrcSeekOffset contained display
+ \ '[+-]\=\%(\d\+[mh]\=\|\%(\%(0\=\d\|[1-5]\d\):\)\=\%(0\=\d\|[1-5]\d\):\%(0\=\d\|[1-5]\d\)\)'
+
+syn keyword cmusrcKeyword contained set
+ \ nextgroup=cmusrcOption
+ \ skipwhite
+
+syn keyword cmusrcOption contained auto_reshuffle confirm_run
+ \ continue play_library play_sorted repeat
+ \ show_hidden show_remaining_time shuffle
+ \ nextgroup=cmusrcSetTest,cmusrcOptEqBoolean
+
+syn match cmusrcSetTest contained display '?'
+
+syn match cmusrcOptEqBoolean contained display '='
+ \ nextgroup=cmusrcOptBoolean
+
+syn keyword cmusrcOptBoolean contained true false
+
+syn keyword cmusrcOption contained aaa_mode
+ \ nextgroup=cmusrcOptEqAAA
+
+syn match cmusrcOptEqAAA contained display '='
+ \ nextgroup=cmusrcOptAAA
+
+syn keyword cmusrcOptAAA contained all artist album
+
+syn keyword cmusrcOption contained buffer_seconds
+ \ nextgroup=cmusrcOptEqNumber
+
+syn match cmusrcOptEqNumber contained display '='
+ \ nextgroup=cmusrcOptNumber
+
+syn match cmusrcOptNumber contained display '\d\+'
+
+syn keyword cmusrcOption contained altformat_current altformat_playlist
+ \ altformat_title altformat_trackwin
+ \ format_current format_playlist format_title
+ \ format_trackwin
+ \ nextgroup=cmusrcOptEqFormat
+
+syn match cmusrcOptEqFormat contained display '='
+ \ nextgroup=cmusrcOptFormat
+
+syn match cmusrcOptFormat contained display '.\+'
+ \ contains=cmusrcFormatSpecial
+
+syn match cmusrcFormatSpecial contained display '%[0-]*\d*[alDntgydfF=%]'
+
+syn keyword cmusrcOption contained color_cmdline_bg color_cmdline_fg
+ \ color_error color_info color_separator
+ \ color_statusline_bg color_statusline_fg
+ \ color_titleline_bg color_titleline_fg
+ \ color_win_bg color_win_cur
+ \ color_win_cur_sel_bg color_win_cur_sel_fg
+ \ color_win_dir color_win_fg
+ \ color_win_inactive_cur_sel_bg
+ \ color_win_inactive_cur_sel_fg
+ \ color_win_inactive_sel_bg
+ \ color_win_inactive_sel_fg
+ \ color_win_sel_bg color_win_sel_fg
+ \ color_win_title_bg color_win_title_fg
+ \ nextgroup=cmusrcOptEqColor
+
+syn match cmusrcOptEqColor contained display '='
+ \ nextgroup=@cmusrcOptColor
+
+syn cluster cmusrcOptColor contains=cmusrcOptColorName,cmusrcOptColorValue
+
+syn keyword cmusrcOptColorName contained default black red green yellow blue
+ \ magenta cyan gray darkgray lightred lightred
+ \ lightgreen lightyellow lightblue lightmagenta
+ \ lightcyan white
+
+syn match cmusrcOptColorValue contained display
+ \ '-1\|0*\%(\d\|[1-9]\d\|1\d\d\|2\%([0-4]\d\|5[0-5]\)\)'
+
+syn keyword cmusrcOption contained id3_default_charset output_plugin
+ \ status_display_program
+ \ nextgroup=cmusrcOptEqString
+
+syn match cmusrcOption contained
+ \ '\%(dsp\|mixer\)\.\%(alsa\|oss\|sun\)\.\%(channel\|device\)'
+ \ nextgroup=cmusrcOptEqString
+
+syn match cmusrcOption contained
+ \ 'dsp\.ao\.\%(buffer_size\|driver\|wav_counter\|wav_dir\)'
+ \ nextgroup=cmusrcOptEqString
+
+syn match cmusrcOptEqString contained display '='
+ \ nextgroup=cmusrcOptString
+
+syn match cmusrcOptString contained display '.\+'
+
+syn keyword cmusrcOption contained lib_sort pl_sort
+ \ nextgroup=cmusrcOptEqSortKeys
+
+syn match cmusrcOptEqSortKeys contained display '='
+ \ nextgroup=cmusrcOptSortKeys
+
+syn keyword cmusrcOptSortKeys contained artist album title tracknumber
+ \ discnumber date genre filename
+ \ nextgroup=cmusrcOptSortKeys
+ \ skipwhite
+
+syn keyword cmusrcKeyword contained showbind
+ \ nextgroup=cmusrcSBindContext
+ \ skipwhite
+
+syn keyword cmusrcSBindContext contained common library playlist queue
+ \ browser filters
+ \ nextgroup=cmusrcSBindKey
+ \ skipwhite
+
+syn match cmusrcSBindKey contained display '\S\+'
+
+syn keyword cmusrcKeyword contained toggle
+ \ nextgroup=cmusrcTogglableOpt
+ \ skipwhite
+
+syn keyword cmusrcTogglableOpt contained auto_reshuffle aaa_mode
+ \ confirm_run continue play_library play_sorted
+ \ repeat show_hidden show_remaining_time shuffle
+
+syn keyword cmusrcKeyword contained unbind
+ \ nextgroup=cmusrcUnbindSwitches,
+ \ cmusrcSBindContext
+ \ skipwhite
+
+syn match cmusrcUnbindSwitches contained display '-[f]'
+ \ nextgroup=cmusrcSBindContext
+ \ skipwhite
+
+syn keyword cmusrcKeyword contained view
+ \ nextgroup=cmusrcView
+ \ skipwhite
+
+syn keyword cmusrcView contained library playlist queue browser filters
+syn match cmusrcView contained display '[1-6]'
+
+syn keyword cmusrcKeyword contained vol
+ \ nextgroup=cmusrcVolume1
+ \ skipwhite
+
+syn match cmusrcVolume1 contained display '[+-]\=\d\+%'
+ \ nextgroup=cmusrcVolume2
+ \ skipwhite
+
+syn match cmusrcVolume2 contained display '[+-]\=\d\+%'
+
+hi def link cmusrcTodo Todo
+hi def link cmusrcComment Comment
+hi def link cmusrcKeyword Keyword
+hi def link cmusrcSwitches Special
+hi def link cmusrcAddSwitches cmusrcSwitches
+hi def link cmusrcURI Normal
+hi def link cmusrcBindSwitches cmusrcSwitches
+hi def link cmusrcContext Type
+hi def link cmusrcBindContext cmusrcContext
+hi def link cmusrcKey String
+hi def link cmusrcBindKey cmusrcKey
+hi def link cmusrcDirectory Normal
+hi def link cmusrcClearSwitches cmusrcSwitches
+hi def link cmusrcFSetName PreProc
+hi def link cmusrcEq Normal
+hi def link cmusrcFSetEq cmusrcEq
+hi def link cmusrcFilterExpr Normal
+hi def link cmusrcLoadSwitches cmusrcSwitches
+hi def link cmusrcSaveSwitches cmusrcSwitches
+hi def link cmusrcFile Normal
+hi def link cmusrcSeekOffset Number
+hi def link cmusrcOption PreProc
+hi def link cmusrcSetTest Normal
+hi def link cmusrcOptBoolean Boolean
+hi def link cmusrcOptEqAAA cmusrcEq
+hi def link cmusrcOptAAA Identifier
+hi def link cmusrcOptEqNumber cmusrcEq
+hi def link cmusrcOptNumber Number
+hi def link cmusrcOptEqFormat cmusrcEq
+hi def link cmusrcOptFormat String
+hi def link cmusrcFormatSpecial SpecialChar
+hi def link cmusrcOptEqColor cmusrcEq
+hi def link cmusrcOptColor Normal
+hi def link cmusrcOptColorName cmusrcOptColor
+hi def link cmusrcOptColorValue cmusrcOptColor
+hi def link cmusrcOptEqString cmusrcEq
+hi def link cmusrcOptString Normal
+hi def link cmusrcOptEqSortKeys cmusrcEq
+hi def link cmusrcOptSortKeys Identifier
+hi def link cmusrcSBindContext cmusrcContext
+hi def link cmusrcSBindKey cmusrcKey
+hi def link cmusrcTogglableOpt cmusrcOption
+hi def link cmusrcUnbindSwitches cmusrcSwitches
+hi def link cmusrcView Normal
+hi def link cmusrcVolume1 Number
+hi def link cmusrcVolume2 Number
+
+let b:current_syntax = "cmusrc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/cobol.vim b/runtime/syntax/cobol.vim
new file mode 100644
index 0000000..5d64944
--- /dev/null
+++ b/runtime/syntax/cobol.vim
@@ -0,0 +1,260 @@
+" Vim syntax file
+" Language: COBOL
+" Maintainer: Ankit Jain <ajatkj@yahoo.co.in>
+" (formerly Tim Pope <vimNOSPAM@tpope.info>)
+" (formerly Davyd Ondrejko <vondraco@columbus.rr.com>)
+" (formerly Sitaram Chamarty <sitaram@diac.com> and
+" James Mitchell <james_mitchell@acm.org>)
+" Last Change: 2019 Mar 22
+" Ankit Jain 22.03.2019 Changes & fixes:
+" 1. Include inline comments
+" 2. Use comment highlight for bad lines
+" 3. Change certain 'keywords' to 'matches'
+" for additional highlighting
+" 4. Different highlighting for COPY, GO TO &
+" CALL lines
+" 5. Fix for COMP keyword
+" 6. Fix for PROCEDURE DIVISION highlighting
+" 7. Highlight EXIT PROGRAM like STOP RUN
+" 8. Highlight X & A in PIC clause
+" Tag: #C22032019
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" MOST important - else most of the keywords wont work!
+setlocal isk=@,48-57,-,_
+
+if !exists('g:cobol_inline_comment')
+ let g:cobol_inline_comment=0
+endif
+
+syn case ignore
+
+syn cluster cobolStart contains=cobolAreaA,cobolAreaB,cobolComment,cobolCompiler
+syn cluster cobolAreaA contains=cobolParagraph,cobolSection,cobolDivision
+"syn cluster cobolAreaB contains=
+syn cluster cobolAreaAB contains=cobolLine
+syn cluster cobolLine contains=cobolReserved
+syn match cobolMarker "^\%( \{,5\}[^ ]\)\@=.\{,6}" nextgroup=@cobolStart
+syn match cobolSpace "^ \{6\}" nextgroup=@cobolStart
+syn match cobolAreaA " \{1,4\}" contained nextgroup=@cobolAreaA,@cobolAreaAB
+syn match cobolAreaB " \{5,\}\|- *" contained nextgroup=@cobolAreaB,@cobolAreaAB
+syn match cobolComment "[/*C].*$" contained
+syn match cobolCompiler "$.*$" contained
+syn match cobolLine ".*$" contained contains=cobolReserved,@cobolLine
+
+"#C22032019: Fix for PROCEDURE DIVISION USING highlighting, removed . from the
+"end of the regex
+"syn match cobolDivision \"[A-Z][A-Z0-9-]*[A-Z0-9]\s\+DIVISION\."he=e-1 contained contains=cobolDivisionName
+syn match cobolDivision "[A-Z][A-Z0-9-]*[A-Z0-9]\s\+DIVISION" contained contains=cobolDivisionName
+syn keyword cobolDivisionName contained IDENTIFICATION ENVIRONMENT DATA PROCEDURE
+syn match cobolSection "[A-Z][A-Z0-9-]*[A-Z0-9]\s\+SECTION\."he=e-1 contained contains=cobolSectionName
+syn keyword cobolSectionName contained CONFIGURATION INPUT-OUTPUT FILE WORKING-STORAGE LOCAL-STORAGE LINKAGE
+syn match cobolParagraph "\a[A-Z0-9-]*[A-Z0-9]\.\|\d[A-Z0-9-]*[A-Z]\."he=e-1 contained contains=cobolParagraphName
+syn keyword cobolParagraphName contained PROGRAM-ID SOURCE-COMPUTER OBJECT-COMPUTER SPECIAL-NAMES FILE-CONTROL I-O-CONTROL
+
+
+"syn match cobolKeys "^\a\{1,6\}" contains=cobolReserved
+"#C22032019: Remove BY, REPLACING, PROGRAM, TO, IN from 'keyword' group and add
+"to 'match' group or other 'keyword' group
+syn keyword cobolReserved contained ACCEPT ACCESS ADD ADDRESS ADVANCING AFTER ALPHABET ALPHABETIC
+syn keyword cobolReserved contained ALPHABETIC-LOWER ALPHABETIC-UPPER ALPHANUMERIC ALPHANUMERIC-EDITED ALS
+syn keyword cobolReserved contained ALTERNATE AND ANY ARE AREA AREAS ASCENDING ASSIGN AT AUTHOR BEFORE BINARY
+syn keyword cobolReserved contained BLANK BLOCK BOTTOM CANCEL CBLL CD CF CH CHARACTER CHARACTERS CLASS
+syn keyword cobolReserved contained CLOCK-UNITS CLOSE COBOL CODE CODE-SET COLLATING COLUMN COMMA COMMON
+syn keyword cobolReserved contained COMMUNICATIONS COMPUTATIONAL COMPUTE CONTENT CONTINUE
+syn keyword cobolReserved contained CONTROL CONVERTING CORR CORRESPONDING COUNT CURRENCY DATE DATE-COMPILED
+syn keyword cobolReserved contained DATE-WRITTEN DAY DAY-OF-WEEK DE DEBUG-CONTENTS DEBUG-ITEM DEBUG-LINE
+syn keyword cobolReserved contained DEBUG-NAME DEBUG-SUB-1 DEBUG-SUB-2 DEBUG-SUB-3 DEBUGGING DECIMAL-POINT
+syn keyword cobolReserved contained DELARATIVES DELETE DELIMITED DELIMITER DEPENDING DESCENDING DESTINATION
+syn keyword cobolReserved contained DETAIL DISABLE DISPLAY DIVIDE DIVISION DOWN DUPLICATES DYNAMIC EGI ELSE EMI
+syn keyword cobolReserved contained ENABLE END-ADD END-COMPUTE END-DELETE END-DIVIDE END-EVALUATE END-IF
+syn keyword cobolReserved contained END-MULTIPLY END-OF-PAGE END-READ END-RECEIVE END-RETURN
+syn keyword cobolReserved contained END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT END-UNSTRING
+syn keyword cobolReserved contained END-WRITE EQUAL ERROR ESI EVALUATE EVERY EXCEPTION EXIT
+syn keyword cobolReserved contained EXTEND EXTERNAL FALSE FD FILLER FINAL FIRST FOOTING FOR FROM
+syn keyword cobolReserved contained GENERATE GIVING GLOBAL GREATER GROUP HEADING HIGH-VALUE HIGH-VALUES I-O
+syn keyword cobolReserved contained INDEX INDEXED INDICATE INITIAL INITIALIZE
+syn keyword cobolReserved contained INITIATE INPUT INSPECT INSTALLATION INTO IS JUST
+syn keyword cobolReserved contained JUSTIFIED KEY LABEL LAST LEADING LEFT LENGTH LOCK MEMORY
+syn keyword cobolReserved contained MERGE MESSAGE MODE MODULES MOVE MULTIPLE MULTIPLY NATIVE NEGATIVE NEXT NO NOT
+syn keyword cobolReserved contained NUMBER NUMERIC NUMERIC-EDITED OCCURS OF OFF OMITTED ON OPEN
+syn keyword cobolReserved contained OPTIONAL OR ORDER ORGANIZATION OTHER OUTPUT OVERFLOW PACKED-DECIMAL PADDING
+syn keyword cobolReserved contained PAGE PAGE-COUNTER PERFORM PF PH PIC PICTURE PLUS POINTER POSITION POSITIVE
+syn keyword cobolReserved contained PRINTING PROCEDURES PROCEDD PURGE QUEUE QUOTES
+syn keyword cobolReserved contained RANDOM RD READ RECEIVE RECORD RECORDS REDEFINES REEL REFERENCE REFERENCES
+syn keyword cobolReserved contained RELATIVE RELEASE REMAINDER REMOVAL REPLACE REPORT REPORTING
+syn keyword cobolReserved contained REPORTS RERUN RESERVE RESET RETURN RETURNING REVERSED REWIND REWRITE RF RH
+syn keyword cobolReserved contained RIGHT ROUNDED RUN SAME SD SEARCH SECTION SECURITY SEGMENT SEGMENT-LIMITED
+syn keyword cobolReserved contained SELECT SEND SENTENCE SEPARATE SEQUENCE SEQUENTIAL SET SIGN SIZE SORT
+syn keyword cobolReserved contained SORT-MERGE SOURCE STANDARD
+syn keyword cobolReserved contained STANDARD-1 STANDARD-2 START STATUS STOP STRING SUB-QUEUE-1 SUB-QUEUE-2
+syn keyword cobolReserved contained SUB-QUEUE-3 SUBTRACT SUM SUPPRESS SYMBOLIC SYNC SYNCHRONIZED TABLE TALLYING
+syn keyword cobolReserved contained TAPE TERMINAL TERMINATE TEST TEXT THAN THEN THROUGH THRU TIME TIMES TOP
+syn keyword cobolReserved contained TRAILING TRUE TYPE UNIT UNSTRING UNTIL UP UPON USAGE USE USING VALUE VALUES
+syn keyword cobolReserved contained VARYING WHEN WITH WORDS WRITE
+syn match cobolReserved contained "\<CONTAINS\>"
+syn match cobolReserved contained "\<\(IF\|INVALID\|END\|EOP\)\>"
+syn match cobolReserved contained "\<ALL\>"
+" #C22032019: Add BY as match instead of keyword: BY not followed by ==
+syn match cobolReserved contained "\<BY\>\s\+\(==\)\@!"
+syn match cobolReserved contained "\<TO\>"
+
+syn cluster cobolLine add=cobolConstant,cobolNumber,cobolPic
+syn keyword cobolConstant SPACE SPACES NULL ZERO ZEROES ZEROS LOW-VALUE LOW-VALUES
+
+" #C22032019: Fix for many pic clauses
+syn match cobolNumber "\<-\=\d*\.\=\d\+\>" contained
+" syn match cobolPic \"\<S*9\+\>" contained
+syn match cobolPic "\<S*9\+V*9*\>" contained
+syn match cobolPic "\<$*\.\=9\+\>" contained
+syn match cobolPic "\<Z*\.\=9\+\>" contained
+syn match cobolPic "\<V9\+\>" contained
+syn match cobolPic "\<9\+V\>" contained
+" syn match cobolPic \"\<-\+[Z9]\+\>" contained
+syn match cobolPic "\<-*[Z9]\+-*\>" contained
+" #C22032019: Add Z,X and A to cobolPic
+syn match cobolPic "\<[ZXA]\+\>" contained
+syn match cobolTodo "todo" contained containedin=cobolInlineComment,cobolComment
+
+" For MicroFocus or other inline comments, include this line.
+if g:cobol_inline_comment == 1
+ syn region cobolInlineComment start="*>" end="$" contains=cobolTodo,cobolMarker
+ syn cluster cobolLine add=cobolInlineComment
+endif
+
+syn match cobolBadLine "[^ D\*$/-].*" contained
+
+" If comment mark somehow gets into column past Column 7.
+if g:cobol_inline_comment == 1
+ " #C22032019: It is a bad line only if * is not followed by > when inline
+ " comments enabled
+ syn match cobolBadLine "\s\+\*\(>\)\@!.*" contained
+else
+ syn match cobolBadLine "\s\+\*.*" contained
+endif
+syn cluster cobolStart add=cobolBadLine
+
+" #C22032019: Different highlighting for GO TO statements
+" syn keyword cobolGoTo GO GOTO
+syn keyword cobolGoTo GOTO
+syn match cobolGoTo /\<GO\>\s\+\<TO\>/
+syn match cobolGoToPara /\<GO\>\s\+\<TO\>\s\+[A-Z0-9-]\+/ contains=cobolGoTo
+" #C22032019: Highlight copybook name and location in using different group
+" syn keyword cobolCopy COPY
+syn match cobolCopy "\<COPY\>\|\<IN\>"
+syn match cobolCopy "\<REPLACING\>\s\+\(==\)\@="
+syn match cobolCopy "\<BY\>\s\+\(==\)\@="
+syn match cobolCopyName "\<COPY\>\s\+[A-Z0-9]\+\(\s\+\<IN\>\s\+[A-Z0-9]\+\)\?" contains=cobolCopy
+syn cluster cobolLine add=cobolGoToPara,cobolCopyName
+
+" cobolBAD: things that are BAD NEWS!
+syn keyword cobolBAD ALTER ENTER RENAMES
+
+syn cluster cobolLine add=cobolGoTo,cobolCopy,cobolBAD,cobolWatch,cobolEXECs
+
+" cobolWatch: things that are important when trying to understand a program
+syn keyword cobolWatch OCCURS DEPENDING VARYING BINARY COMP REDEFINES
+" #C22032019: Remove REPLACING from cobolWatch 'keyword' group and add to cobolCopy &
+" cobolWatch 'match' group
+" syn keyword cobolWatch REPLACING RUN
+syn keyword cobolWatch RUN PROGRAM
+syn match cobolWatch contained "\<REPLACING\>\s\+\(==\)\@!"
+" #C22032019: Look for word starting with COMP
+" syn match cobolWatch \"COMP-[123456XN]"
+syn match cobolWatch "\<COMP-[123456XN]"
+
+syn keyword cobolEXECs EXEC END-EXEC
+
+
+syn cluster cobolAreaA add=cobolDeclA
+syn cluster cobolAreaAB add=cobolDecl
+syn match cobolDeclA "\(0\=1\|77\|78\) " contained nextgroup=cobolLine
+syn match cobolDecl "[1-4]\d " contained nextgroup=cobolLine
+syn match cobolDecl "0\=[2-9] " contained nextgroup=cobolLine
+syn match cobolDecl "66 " contained nextgroup=cobolLine
+
+syn match cobolWatch "88 " contained nextgroup=cobolLine
+
+"syn match cobolBadID "\k\+-\($\|[^-A-Z0-9]\)" contained
+
+syn cluster cobolLine add=cobolCALLs,cobolString,cobolCondFlow
+" #C22032019: Changes for cobolCALLs group to include thru
+" syn keyword cobolCALLs CALL END-CALL CANCEL GOBACK PERFORM END-PERFORM INVOKE
+syn keyword cobolCALLs END-CALL CANCEL GOBACK PERFORM END-PERFORM INVOKE THRU
+" #C22032019: Highlight called program
+" syn match cobolCALLs \"EXIT \+PROGRAM"
+syn match cobolCALLs "\<CALL\>"
+syn match cobolCALLProg /\<CALL\>\s\+"\{0,1\}[A-Z0-9]\+"\{0,1\}/ contains=cobolCALLs
+syn match cobolExtras /\<VALUE \+\d\+\./hs=s+6,he=e-1
+syn cluster cobolLine add=cobolCALLProg
+
+syn match cobolString /"[^"]*\("\|$\)/
+syn match cobolString /'[^']*\('\|$\)/
+
+"syn region cobolLine start="^.\{6}[ D-]" end="$" contains=ALL
+syn match cobolIndicator "\%7c[D-]" contained
+
+if exists("cobol_legacy_code")
+ syn region cobolCondFlow contains=ALLBUT,cobolLine start="\<\(IF\|INVALID\|END\|EOP\)\>" skip=/\('\|"\)[^"]\{-}\("\|'\|$\)/ end="\." keepend
+endif
+
+" many legacy sources have junk in columns 1-6: must be before others
+" Stuff after column 72 is in error - must be after all other "match" entries
+if exists("cobol_legacy_code")
+ syn match cobolBadLine "\%73c.*" containedin=ALLBUT,cobolComment
+else
+ " #C22032019: Use comment highlighting for bad lines
+ " syn match cobolBadLine \"\%73c.*" containedin=ALL
+ syn match cobolBadLine "\%73c.*" containedin=ALL,cobolInlineComment,cobolComment
+endif
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link cobolBAD Error
+hi def link cobolBadID Error
+hi def link cobolBadLine Error
+if exists("g:cobol_legacy_code")
+ hi def link cobolMarker Comment
+else
+ hi def link cobolMarker Error
+endif
+hi def link cobolCALLs Function
+hi def link cobolCALLProg Special
+hi def link cobolComment Comment
+hi def link cobolInlineComment Comment
+hi def link cobolKeys Comment
+hi def link cobolAreaB Special
+hi def link cobolCompiler PreProc
+hi def link cobolCondFlow Special
+hi def link cobolCopy PreProc
+hi def link cobolCopyName Special
+hi def link cobolDeclA cobolDecl
+hi def link cobolDecl Type
+hi def link cobolExtras Special
+hi def link cobolGoTo Special
+hi def link cobolGoToPara Function
+hi def link cobolConstant Constant
+hi def link cobolNumber Constant
+hi def link cobolPic Constant
+hi def link cobolReserved Statement
+hi def link cobolDivision Label
+hi def link cobolSection Label
+hi def link cobolParagraph Label
+hi def link cobolDivisionName Keyword
+hi def link cobolSectionName Keyword
+hi def link cobolParagraphName Keyword
+hi def link cobolString Constant
+hi def link cobolTodo Todo
+hi def link cobolWatch Special
+hi def link cobolIndicator Special
+hi def link cobolStart Comment
+
+
+let b:current_syntax = "cobol"
+
+" vim: ts=6 nowrap
diff --git a/runtime/syntax/coco.vim b/runtime/syntax/coco.vim
new file mode 100644
index 0000000..dc21314
--- /dev/null
+++ b/runtime/syntax/coco.vim
@@ -0,0 +1,33 @@
+" Vim syntax file
+" Language: Coco/R
+" Maintainer: Ashish Shukla <wahjava@gmail.com>
+" Last Change: 2022 Jun 14
+" Remark: Coco/R syntax partially implemented.
+" License: Vim license
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn keyword cocoKeywords ANY CHARACTERS COMMENTS COMPILER CONTEXT END FROM IF IGNORE IGNORECASE NESTED PRAGMAS PRODUCTIONS SYNC TO TOKENS WEAK
+syn match cocoUnilineComment #//.*$#
+syn match cocoIdentifier /[[:alpha:]][[:alnum:]]*/
+syn region cocoMultilineComment start=#/[*]# end=#[*]/#
+syn region cocoString start=/"/ skip=/\\"\|\\\\/ end=/"/
+syn region cocoCharacter start=/'/ skip=/\\'\|\\\\/ end=/'/
+syn match cocoOperator /+\||\|\.\.\|-\|(\|)\|{\|}\|\[\|\]\|=\|<\|>/
+syn region cocoProductionCode start=/([.]/ end=/[.])/
+syn match cocoPragma /[$][[:alnum:]]*/
+
+hi def link cocoKeywords Keyword
+hi def link cocoUnilineComment Comment
+hi def link cocoMultilineComment Comment
+hi def link cocoIdentifier Identifier
+hi def link cocoString String
+hi def link cocoCharacter Character
+hi def link cocoOperator Operator
+hi def link cocoProductionCode Statement
+hi def link cocoPragma Special
+
+let b:current_syntax = 'coco'
diff --git a/runtime/syntax/colortest.vim b/runtime/syntax/colortest.vim
new file mode 100644
index 0000000..58de7aa
--- /dev/null
+++ b/runtime/syntax/colortest.vim
@@ -0,0 +1,81 @@
+" Vim script for testing colors
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Contributors: Rafael Garcia-Suarez, Charles Campbell
+" Last Change: 2008 Jun 04
+
+" edit this file, then do ":source %", and check if the colors match
+
+" black black_on_white white_on_black
+" black_on_black black_on_black
+" darkred darkred_on_white white_on_darkred
+" darkred_on_black black_on_darkred
+" darkgreen darkgreen_on_white white_on_darkgreen
+" darkgreen_on_black black_on_darkgreen
+" brown brown_on_white white_on_brown
+" brown_on_black black_on_brown
+" darkblue darkblue_on_white white_on_darkblue
+" darkblue_on_black black_on_darkblue
+" darkmagenta darkmagenta_on_white white_on_darkmagenta
+" darkmagenta_on_black black_on_darkmagenta
+" darkcyan darkcyan_on_white white_on_darkcyan
+" darkcyan_on_black black_on_darkcyan
+" lightgray lightgray_on_white white_on_lightgray
+" lightgray_on_black black_on_lightgray
+" darkgray darkgray_on_white white_on_darkgray
+" darkgray_on_black black_on_darkgray
+" red red_on_white white_on_red
+" red_on_black black_on_red
+" green green_on_white white_on_green
+" green_on_black black_on_green
+" yellow yellow_on_white white_on_yellow
+" yellow_on_black black_on_yellow
+" blue blue_on_white white_on_blue
+" blue_on_black black_on_blue
+" magenta magenta_on_white white_on_magenta
+" magenta_on_black black_on_magenta
+" cyan cyan_on_white white_on_cyan
+" cyan_on_black black_on_cyan
+" white white_on_white white_on_white
+" white_on_black black_on_white
+" grey grey_on_white white_on_grey
+" grey_on_black black_on_grey
+" lightred lightred_on_white white_on_lightred
+" lightred_on_black black_on_lightred
+" lightgreen lightgreen_on_white white_on_lightgreen
+" lightgreen_on_black black_on_lightgreen
+" lightyellow lightyellow_on_white white_on_lightyellow
+" lightyellow_on_black black_on_lightyellow
+" lightblue lightblue_on_white white_on_lightblue
+" lightblue_on_black black_on_lightblue
+" lightmagenta lightmagenta_on_white white_on_lightmagenta
+" lightmagenta_on_black black_on_lightmagenta
+" lightcyan lightcyan_on_white white_on_lightcyan
+" lightcyan_on_black black_on_lightcyan
+
+" Open this file in a window if it isn't edited yet.
+" Use the current window if it's empty.
+if expand('%:p') != expand('<sfile>:p')
+ let s:fname = expand('<sfile>')
+ if exists('*fnameescape')
+ let s:fname = fnameescape(s:fname)
+ else
+ let s:fname = escape(s:fname, ' \|')
+ endif
+ if &mod || line('$') != 1 || getline(1) != ''
+ exe "new " . s:fname
+ else
+ exe "edit " . s:fname
+ endif
+ unlet s:fname
+endif
+
+syn clear
+8
+while search("_on_", "W") < 55
+ let col1 = substitute(expand("<cword>"), '\(\a\+\)_on_\a\+', '\1', "")
+ let col2 = substitute(expand("<cword>"), '\a\+_on_\(\a\+\)', '\1', "")
+ exec 'hi col_'.col1.'_'.col2.' ctermfg='.col1.' guifg='.col1.' ctermbg='.col2.' guibg='.col2
+ exec 'syn keyword col_'.col1.'_'.col2.' '.col1.'_on_'.col2
+endwhile
+8,54g/^" \a/exec 'hi col_'.expand("<cword>").' ctermfg='.expand("<cword>").' guifg='.expand("<cword>")| exec 'syn keyword col_'.expand("<cword>")." ".expand("<cword>")
+nohlsearch
diff --git a/runtime/syntax/conaryrecipe.vim b/runtime/syntax/conaryrecipe.vim
new file mode 100644
index 0000000..f94fdd4
--- /dev/null
+++ b/runtime/syntax/conaryrecipe.vim
@@ -0,0 +1,137 @@
+" Vim syntax file
+" Language: Conary Recipe
+" Maintainer: rPath Inc <http://www.rpath.com>
+" Updated: 2007-12-08
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/python.vim
+
+syn keyword conarySFunction mainDir addAction addSource addArchive addPatch
+syn keyword conarySFunction addRedirect addSvnSnapshot addMercurialSnapshot
+syn keyword conarySFunction addCvsSnapshot addGitSnapshot addBzrSnapshot
+
+syn keyword conaryGFunction add addAll addNewGroup addReference createGroup
+syn keyword conaryGFunction addNewGroup startGroup remove removeComponents
+syn keyword conaryGFunction replace setByDefault setDefaultGroup
+syn keyword conaryGFunction setLabelPath addCopy setSearchPath AddAllFlags
+syn keyword conaryGFunction GroupRecipe GroupReference TroveCacheWrapper
+syn keyword conaryGFunction TroveCache buildGroups findTrovesForGroups
+syn keyword conaryGFunction followRedirect processAddAllDirectives
+syn keyword conaryGFunction processOneAddAllDirective removeDifferences
+syn keyword conaryGFunction addTrovesToGroup addCopiedComponents
+syn keyword conaryGFunction findAllWeakTrovesToRemove checkForRedirects
+syn keyword conaryGFunction addPackagesForComponents getResolveSource
+syn keyword conaryGFunction resolveGroupDependencies checkGroupDependencies
+syn keyword conaryGFunction calcSizeAndCheckHashes findSourcesForGroup
+syn keyword conaryGFunction addPostInstallScript addPostRollbackScript
+syn keyword conaryGFunction addPostUpdateScript addPreUpdateScript
+syn keyword conaryGFunction addTrove moveComponents copyComponents
+syn keyword conaryGFunction removeItemsAlsoInNewGroup removeItemsAlsoInGroup
+syn keyword conaryGFunction addResolveSource iterReplaceSpecs
+syn keyword conaryGFunction setCompatibilityClass getLabelPath
+syn keyword conaryGFunction getResolveTroveSpecs getSearchFlavor
+syn keyword conaryGFunction getChildGroups getGroupMap
+
+syn keyword conaryBFunction Run Automake Configure ManualConfigure
+syn keyword conaryBFunction Make MakeParallelSubdir MakeInstall
+syn keyword conaryBFunction MakePathsInstall CompilePython
+syn keyword conaryBFunction Ldconfig Desktopfile Environment SetModes
+syn keyword conaryBFunction Install Copy Move Symlink Link Remove Doc
+syn keyword conaryBFunction Create MakeDirs disableParallelMake
+syn keyword conaryBFunction ConsoleHelper Replace SGMLCatalogEntry
+syn keyword conaryBFunction XInetdService XMLCatalogEntry TestSuite
+syn keyword conaryBFunction PythonSetup CMake Ant JavaCompile ClassPath
+syn keyword conaryBFunction JavaDoc IncludeLicense MakeFIFO
+
+syn keyword conaryPFunction NonBinariesInBindirs FilesInMandir
+syn keyword conaryPFunction ImproperlyShared CheckSonames CheckDestDir
+syn keyword conaryPFunction ComponentSpec PackageSpec
+syn keyword conaryPFunction Config InitScript GconfSchema SharedLibrary
+syn keyword conaryPFunction ParseManifest MakeDevices DanglingSymlinks
+syn keyword conaryPFunction AddModes WarnWriteable IgnoredSetuid
+syn keyword conaryPFunction Ownership ExcludeDirectories
+syn keyword conaryPFunction BadFilenames BadInterpreterPaths ByDefault
+syn keyword conaryPFunction ComponentProvides ComponentRequires Flavor
+syn keyword conaryPFunction EnforceConfigLogBuildRequirements Group
+syn keyword conaryPFunction EnforceSonameBuildRequirements InitialContents
+syn keyword conaryPFunction FilesForDirectories LinkCount
+syn keyword conaryPFunction MakdeDevices NonMultilibComponent ObsoletePaths
+syn keyword conaryPFunction NonMultilibDirectories NonUTF8Filenames TagSpec
+syn keyword conaryPFunction Provides RequireChkconfig Requires TagHandler
+syn keyword conaryPFunction TagDescription Transient User UtilizeGroup
+syn keyword conaryPFunction WorldWritableExecutables UtilizeUser
+syn keyword conaryPFunction WarnWritable Strip CheckDesktopFiles
+syn keyword conaryPFunction FixDirModes LinkType reportMissingBuildRequires
+syn keyword conaryPFunction reportErrors FixupManpagePaths FixObsoletePaths
+syn keyword conaryPFunction NonLSBPaths PythonEggs
+syn keyword conaryPFunction EnforcePythonBuildRequirements
+syn keyword conaryPFunction EnforceJavaBuildRequirements
+syn keyword conaryPFunction EnforceCILBuildRequirements
+syn keyword conaryPFunction EnforcePerlBuildRequirements
+syn keyword conaryPFunction EnforceFlagBuildRequirements
+syn keyword conaryPFunction FixupMultilibPaths ExecutableLibraries
+syn keyword conaryPFunction NormalizeLibrarySymlinks NormalizeCompression
+syn keyword conaryPFunction NormalizeManPages NormalizeInfoPages
+syn keyword conaryPFunction NormalizeInitscriptLocation
+syn keyword conaryPFunction NormalizeInitscriptContents
+syn keyword conaryPFunction NormalizeAppDefaults NormalizeInterpreterPaths
+syn keyword conaryPFunction NormalizePamConfig ReadableDocs
+syn keyword conaryPFunction WorldWriteableExecutables NormalizePkgConfig
+syn keyword conaryPFunction EtcConfig InstallBucket SupplementalGroup
+syn keyword conaryPFunction FixBuilddirSymlink RelativeSymlinks
+
+" Most destdirPolicy aren't called from recipes, except for these
+syn keyword conaryPFunction AutoDoc RemoveNonPackageFiles TestSuiteFiles
+syn keyword conaryPFunction TestSuiteLinks
+
+syn match conaryMacro "%(\w\+)[sd]" contained
+syn match conaryBadMacro "%(\w*)[^sd]" contained " no final marker
+syn keyword conaryArches contained x86 x86_64 alpha ia64 ppc ppc64 s390
+syn keyword conaryArches contained sparc sparc64
+syn keyword conarySubArches contained sse2 3dnow 3dnowext cmov i486 i586
+syn keyword conarySubArches contained i686 mmx mmxext nx sse sse2
+syn keyword conaryBad RPM_BUILD_ROOT EtcConfig InstallBucket subDir
+syn keyword conaryBad RPM_OPT_FLAGS subdir
+syn cluster conaryArchFlags contains=conaryArches,conarySubArches
+syn match conaryArch "Arch\.[a-z0-9A-Z]\+" contains=conaryArches,conarySubArches
+syn match conaryArch "Arch\.[a-z0-9A-Z]\+" contains=conaryArches,conarySubArches
+syn keyword conaryKeywords name buildRequires version clearBuildReqs
+syn keyword conaryUseFlag contained pcre tcpwrappers gcj gnat selinux pam
+syn keyword conaryUseFlag contained bootstrap python perl
+syn keyword conaryUseFlag contained readline gdbm emacs krb builddocs
+syn keyword conaryUseFlag contained alternatives tcl tk X gtk gnome qt
+syn keyword conaryUseFlag contained xfce gd ldap sasl pie desktop ssl kde
+syn keyword conaryUseFlag contained slang netpbm nptl ipv6 buildtests
+syn keyword conaryUseFlag contained ntpl xen dom0 domU
+syn match conaryUse "Use\.[a-z0-9A-Z]\+" contains=conaryUseFlag
+
+" strings
+syn region pythonString matchgroup=Normal start=+[uU]\='+ end=+'+ skip=+\\\\\|\\'+ contains=pythonEscape,conaryMacro,conaryBadMacro
+syn region pythonString matchgroup=Normal start=+[uU]\="+ end=+"+ skip=+\\\\\|\\"+ contains=pythonEscape,conaryMacro,conaryBadMacro
+syn region pythonString matchgroup=Normal start=+[uU]\="""+ end=+"""+ contains=pythonEscape,conaryMacro,conaryBadMacro
+syn region pythonString matchgroup=Normal start=+[uU]\='''+ end=+'''+ contains=pythonEscape,conaryMacro,conaryBadMacro
+syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]'+ end=+'+ skip=+\\\\\|\\'+ contains=conaryMacro,conaryBadMacro
+syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]"+ end=+"+ skip=+\\\\\|\\"+ contains=conaryMacro,conaryBadMacro
+syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]"""+ end=+"""+ contains=conaryMacro,conaryBadMacro
+syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]'''+ end=+'''+ contains=conaryMacro,conaryBadMacro
+
+hi def link conaryMacro Special
+hi def link conaryrecipeFunction Function
+hi def link conaryError Error
+hi def link conaryBFunction conaryrecipeFunction
+hi def link conaryGFunction conaryrecipeFunction
+hi def link conarySFunction Operator
+hi def link conaryPFunction Typedef
+hi def link conaryFlags PreCondit
+hi def link conaryArches Special
+hi def link conarySubArches Special
+hi def link conaryBad conaryError
+hi def link conaryBadMacro conaryError
+hi def link conaryKeywords Special
+hi def link conaryUseFlag Typedef
+
+let b:current_syntax = "conaryrecipe"
+
diff --git a/runtime/syntax/conf.vim b/runtime/syntax/conf.vim
new file mode 100644
index 0000000..6a78ef8
--- /dev/null
+++ b/runtime/syntax/conf.vim
@@ -0,0 +1,26 @@
+" Vim syntax file
+" Language: generic configure file
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last Change: 2021 May 01
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn keyword confTodo contained TODO FIXME XXX
+" Avoid matching "text#text", used in /etc/disktab and /etc/gettytab
+syn match confComment "^#.*" contains=confTodo,@Spell
+syn match confComment "\s#.*"ms=s+1 contains=confTodo,@Spell
+syn region confString start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline
+syn region confString start=+'+ skip=+\\\\\|\\'+ end=+'+ oneline
+
+" Define the default highlighting.
+" Only used when an item doesn't have highlighting yet
+hi def link confComment Comment
+hi def link confTodo Todo
+hi def link confString String
+
+let b:current_syntax = "conf"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/config.vim b/runtime/syntax/config.vim
new file mode 100644
index 0000000..3636ed4
--- /dev/null
+++ b/runtime/syntax/config.vim
@@ -0,0 +1,54 @@
+" Vim syntax file
+" Language: configure.in script: M4 with sh
+" Former Maintainer: Christian Hammesr <ch@lathspell.westend.com>
+" Last Change: 2018 Feb 03
+" (patch from Yngve Inntjore Levinsen to detect AC_MSG)
+" (patch from Khym Chanur to add @Spell)
+" (patch from James McCoy to fix paren matching)
+
+" Well, I actually even do not know much about m4. This explains why there
+" is probably very much missing here, yet !
+" But I missed good highlighting when editing my GNU autoconf/automake
+" script, so I wrote this quick and dirty patch.
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" define the config syntax
+syn match configdelimiter "[()\[\];,]"
+syn match configoperator "[=|&\*\+\<\>]"
+syn match configcomment "\(dnl.*\)\|\(#.*\)" contains=configDnl,@Spell
+syn match configfunction "\<[A-Z_][A-Z0-9_]*\>"
+syn match confignumber "[-+]\=\<\d\+\(\.\d*\)\=\>"
+syn keyword configDnl dnl contained
+syn keyword configkeyword if then else fi test for in do done
+syn keyword configspecial cat rm eval
+
+" This shortens the script, see syn-ext-match..
+syn region configstring start=+\z(["'`]\)+ skip=+\\\z1+ end=+\z1+ contains=@Spell
+
+" Anything inside AC_MSG_TYPE([...]) and AC_MSG_TYPE(...) is a string.
+syn region configmsg matchgroup=configfunction start="AC_MSG_[A-Z]*\ze(\[" matchgroup=configdelimiter end="\])" contains=configdelimiter,@Spell
+syn region configmsg matchgroup=configfunction start="AC_MSG_[A-Z]*\ze([^[]" matchgroup=configdelimiter end=")" contains=configdelimiter,@Spell
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link configdelimiter Delimiter
+hi def link configoperator Operator
+hi def link configcomment Comment
+hi def link configDnl Comment
+hi def link configfunction Function
+hi def link confignumber Number
+hi def link configkeyword Keyword
+hi def link configspecial Special
+hi def link configstring String
+hi def link configmsg String
+
+
+let b:current_syntax = "config"
+
+" vim: ts=4
diff --git a/runtime/syntax/confini.vim b/runtime/syntax/confini.vim
new file mode 100644
index 0000000..823d417
--- /dev/null
+++ b/runtime/syntax/confini.vim
@@ -0,0 +1,12 @@
+" Vim syntax file
+" Language: confini
+
+" Quit if a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Use the cfg syntax for now, it's similar.
+runtime! syntax/cfg.vim
+
+let b:current_syntax = 'confini'
diff --git a/runtime/syntax/context.vim b/runtime/syntax/context.vim
new file mode 100644
index 0000000..08ab1f6
--- /dev/null
+++ b/runtime/syntax/context.vim
@@ -0,0 +1,144 @@
+vim9script
+
+# Vim syntax file
+# Language: ConTeXt typesetting engine
+# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
+# Former Maintainers: Nikolai Weibull <now@bitwi.se>
+# Latest Revision: 2022 Aug 12
+
+if exists("b:current_syntax")
+ finish
+endif
+
+# Dictionary of (filetype, group) pairs to highlight between \startGROUP \stopGROUP.
+var context_include = get(b:, 'context_include', get(g:, 'context_include', {'xml': 'XML'}))
+
+# Deprecation warning
+if type(context_include) ==# type([])
+ echomsg "[ConTeXt] b:context_include/g:context_include must be Dictionaries."
+ context_include = {'xml': 'XML'}
+endif
+
+syn iskeyword @,48-57,_,!,?,a-z,A-Z,192-255
+
+syn spell toplevel
+
+runtime! syntax/shared/context-data-context.vim
+runtime! syntax/shared/context-data-interfaces.vim
+runtime! syntax/shared/context-data-tex.vim
+
+syn match contextCommand '\\\k\+\>' display contains=@NoSpell
+
+# ConTeXt options, i.e., [...] blocks
+syn region contextOptions matchgroup=contextDelimiter start='\[' end=']\|\ze\\stop' skip='\\\[\|\\\]' contains=TOP,@Spell
+
+# Highlight braces
+syn match contextDelimiter '[{}]'
+
+# Comments
+syn match contextComment '\%(\_^\|[^\\]\)\%(\\\\\)*\zs%.*$' display contains=contextTodo,contextMagicLine
+syn match contextComment '^\s*%[CDM].*$' display contains=contextTodo,contextMagicLine
+syn keyword contextTodo TODO FIXME XXX NOTE contained
+syn match contextMagicLine '^\s*%\s*!TEX.*$' contained
+
+syn match contextBlockDelim '\\\%(start\|stop\)\k\+' contains=@NoSpell
+
+syn region contextEscaped matchgroup=contextPreProc start='\\type\%(\s*\|\n\)*\z([^A-Za-z%]\)' end='\z1'
+syn region contextEscaped matchgroup=contextPreProc start='\\type\=\%(\s\|\n\)*{' end='}'
+syn region contextEscaped matchgroup=contextPreProc start='\\type\=\%(\s*\|\n\)*<<' end='>>'
+syn region contextEscaped matchgroup=contextPreProc
+ \ start='\\start\z(\a*\%(typing\|typen\)\)'
+ \ end='\\stop\z1' contains=contextComment keepend
+syn region contextEscaped matchgroup=contextPreProc start='\\\h\+Type\%(\s\|\n\)*{' end='}'
+syn region contextEscaped matchgroup=contextPreProc start='\\Typed\h\+\%(\s\|\n\)*{' end='}'
+
+syn match contextBuiltin '\\unexpanded\>' display contains=@NoSpell
+
+# \unprotect... \protect regions
+syn region contextUnprotect matchgroup=contextBuiltin start='\\unprotect' end='\\protect' contains=TOP
+syn match contextSequence '\\[a-zA-Z]*[@_!?]\+[a-zA-Z@_!?]*' contains=@NoSpell contained containedin=contextUnprotect
+
+# Math
+syn match contextMathCmd '\\m\%(ath\%(ematics\)\=\)\=\>'
+syn region contextInlineMath matchgroup=contextMathDelim start='\$' skip='\\\\\|\\\$' end='\$'
+syn region contextDisplayMath matchgroup=contextMathDelim start='\$\$' skip='\\\\\|\\\$' end='\$\$' keepend
+syn region contextDisplayMath matchgroup=contextBlockDelim start='\\startformula' end='\\stopformula' contains=TOP
+
+# MetaFun
+b:mp_metafun = 1
+syn include @mpTop syntax/mp.vim
+unlet b:current_syntax
+
+syn region contextMPGraphic matchgroup=contextBlockDelim
+ \ start='\\start\z(MP\%(clip\|code\|definitions\|drawing\|environment\|extensions\|inclusions\|initializations\|page\|\)\)\>.*$'
+ \ end='\\stop\z1'
+ \ contains=@mpTop,@NoSpell
+syn region contextMPGraphic matchgroup=contextBlockDelim
+ \ start='\\start\z(\%(\%[re]usable\|use\|unique\|static\)MPgraphic\|staticMPfigure\|uniqueMPpagegraphic\)\>.*$'
+ \ end='\\stop\z1'
+ \ contains=@mpTop,@NoSpell
+
+# Lua
+syn include @luaTop syntax/lua.vim
+unlet b:current_syntax
+
+syn region contextLuaCode matchgroup=contextBlockDelim
+ \ start='\\startluacode\>'
+ \ end='\\stopluacode\>' keepend
+ \ contains=@luaTop,@NoSpell
+syn match contextDirectLua "\\\%(directlua\|ctxlua\)\>\%(\s*%.*$\)\="
+ \ nextgroup=contextBeginEndLua skipwhite skipempty
+ \ contains=contextComment
+syn region contextBeginEndLua matchgroup=contextSpecial
+ \ start="{" end="}" skip="\\[{}]"
+ \ contained contains=@luaTop,@NoSpell
+
+for synname in keys(context_include)
+ execute 'syn include @' .. synname .. 'Top' 'syntax/' .. synname .. '.vim'
+ unlet b:current_syntax
+ execute 'syn region context' .. context_include[synname] .. 'Code'
+ \ 'matchgroup=contextBlockDelim'
+ \ 'start=+\\start' .. context_include[synname] .. '\w*+'
+ \ 'end=+\\stop' .. context_include[synname] .. '\w*+'
+ \ 'contains=@' .. synname .. 'Top,@NoSpell'
+endfor
+
+syn match contextSectioning '\\\%(start\|stop\)\=\%(\%(sub\)*section\|\%(sub\)*subject\|chapter\|part\|component\|product\|title\)\>' contains=@NoSpell
+
+syn match contextSpecial '\\par\>\|-\{2,3}\||[<>/]\=|' contains=@NoSpell
+syn match contextSpecial /\\[`'"]/
+syn match contextSpecial +\\char\%(\d\{1,3}\|'\o\{1,3}\|"\x\{1,2}\)\>+ contains=@NoSpell
+syn match contextSpecial '\^\^.'
+syn match contextSpecial '`\%(\\.\|\^\^.\|.\)'
+
+syn match contextStyle '\\\%(em\|ss\|hw\|cg\|mf\)\>' contains=@NoSpell
+syn match contextFont '\\\%(CAP\|Cap\|cap\|Caps\|kap\|nocap\)\>' contains=@NoSpell
+syn match contextFont '\\\%(Word\|WORD\|Words\|WORDS\)\>' contains=@NoSpell
+syn match contextFont '\\\%(vi\{1,3}\|ix\|xi\{0,2}\)\>' contains=@NoSpell
+syn match contextFont '\\\%(tf\|b[si]\|s[cl]\|os\)\%(xx\|[xabcd]\)\=\>' contains=@NoSpell
+
+hi def link contextBlockDelim Keyword
+hi def link contextBuiltin Keyword
+hi def link contextCommand Keyword
+hi def link contextComment Comment
+hi def link contextDelimiter Delimiter
+hi def link contextDirectLua Keyword
+hi def link contextEscaped String
+hi def link contextFont contextType
+hi def link contextKeyword Keyword
+hi def link contextInlineMath String
+hi def link contextMagicLine PreProc
+hi def link contextMathCmd Identifier
+hi def link contextMathDelim Delimiter
+hi def link contextOptions Typedef
+hi def link contextPreProc PreProc
+hi def link contextSectioning PreProc
+hi def link contextSequence Identifier
+hi def link contextSpecial Special
+hi def link contextStyle contextType
+hi def link contextTodo Todo
+hi def link contextType Type
+
+b:current_syntax = 'context'
+
+# vim: sw=2 fdm=marker
diff --git a/runtime/syntax/cpp.vim b/runtime/syntax/cpp.vim
new file mode 100644
index 0000000..5437580
--- /dev/null
+++ b/runtime/syntax/cpp.vim
@@ -0,0 +1,129 @@
+" Vim syntax file
+" Language: C++
+" Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp)
+" Previous Maintainer: Ken Shan <ccshan@post.harvard.edu>
+" Last Change: 2021 Aug 23
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" inform C syntax that the file was included from cpp.vim
+let b:filetype_in_cpp_family = 1
+
+" Read the C syntax to start with
+runtime! syntax/c.vim
+unlet b:current_syntax
+
+" C++ extensions
+syn keyword cppStatement new delete this friend using
+syn keyword cppAccess public protected private
+syn keyword cppModifier inline virtual explicit export
+syn keyword cppType bool wchar_t
+syn keyword cppExceptions throw try catch
+syn keyword cppOperator operator typeid
+syn keyword cppOperator and bitor or xor compl bitand and_eq or_eq xor_eq not not_eq
+syn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1
+syn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*$"
+syn keyword cppStorageClass mutable
+syn keyword cppStructure class typename template namespace
+syn keyword cppBoolean true false
+syn keyword cppConstant __cplusplus
+
+" C++ 11 extensions
+if !exists("cpp_no_cpp11")
+ syn keyword cppModifier override final
+ syn keyword cppType nullptr_t auto
+ syn keyword cppExceptions noexcept
+ syn keyword cppStorageClass constexpr decltype thread_local
+ syn keyword cppConstant nullptr
+ syn keyword cppConstant ATOMIC_FLAG_INIT ATOMIC_VAR_INIT
+ syn keyword cppConstant ATOMIC_BOOL_LOCK_FREE ATOMIC_CHAR_LOCK_FREE
+ syn keyword cppConstant ATOMIC_CHAR16_T_LOCK_FREE ATOMIC_CHAR32_T_LOCK_FREE
+ syn keyword cppConstant ATOMIC_WCHAR_T_LOCK_FREE ATOMIC_SHORT_LOCK_FREE
+ syn keyword cppConstant ATOMIC_INT_LOCK_FREE ATOMIC_LONG_LOCK_FREE
+ syn keyword cppConstant ATOMIC_LLONG_LOCK_FREE ATOMIC_POINTER_LOCK_FREE
+ syn region cppRawString matchgroup=cppRawStringDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"\(sv\|s\|_[_a-zA-Z][_a-zA-Z0-9]*\)\=+ contains=@Spell
+ syn match cppCast "\<\(const\|static\|dynamic\)_pointer_cast\s*<"me=e-1
+ syn match cppCast "\<\(const\|static\|dynamic\)_pointer_cast\s*$"
+endif
+
+" C++ 14 extensions
+if !exists("cpp_no_cpp14")
+ syn match cppNumbers display transparent "\<\d\|\.\d" contains=cppNumber,cppFloat
+ syn match cppNumber display contained "\<0\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>"
+ syn match cppNumber display contained "\<[1-9]\('\=\d\+\)*\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>"
+ syn match cppNumber display contained "\<0\o\+\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>"
+ syn match cppNumber display contained "\<0b[01]\('\=[01]\+\)*\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>"
+ syn match cppNumber display contained "\<0x\x\('\=\x\+\)*\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>"
+ syn match cppFloat display contained "\<\d\+\.\d*\(e[-+]\=\d\+\)\=\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>"
+ syn match cppFloat display contained "\<\.\d\+\(e[-+]\=\d\+\)\=\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>"
+ syn match cppFloat display contained "\<\d\+e[-+]\=\d\+\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>"
+ syn region cppString start=+\(L\|u\|u8\|U\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"\(sv\|s\|_\i*\)\=+ end='$' contains=cSpecial,cFormat,@Spell
+endif
+
+" C++ 17 extensions
+if !exists("cpp_no_cpp17")
+ syn match cppCast "\<reinterpret_pointer_cast\s*<"me=e-1
+ syn match cppCast "\<reinterpret_pointer_cast\s*$"
+ syn match cppFloat display contained "\<0x\x*\.\x\+p[-+]\=\d\+\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>"
+ syn match cppFloat display contained "\<0x\x\+\.\=p[-+]\=\d\+\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>"
+
+ " TODO: push this up to c.vim if/when supported in C23
+ syn match cppCharacter "u8'[^\\]'"
+ syn match cppCharacter "u8'[^']*'" contains=cSpecial
+ if exists("c_gnu")
+ syn match cppSpecialError "u8'\\[^'\"?\\abefnrtv]'"
+ syn match cppSpecialCharacter "u8'\\['\"?\\abefnrtv]'"
+ else
+ syn match cppSpecialError "u8'\\[^'\"?\\abfnrtv]'"
+ syn match cppSpecialCharacter "u8'\\['\"?\\abfnrtv]'"
+ endif
+ syn match cppSpecialCharacter display "u8'\\\o\{1,3}'"
+ syn match cppSpecialCharacter display "u8'\\x\x\+'"
+
+endif
+
+" C++ 20 extensions
+if !exists("cpp_no_cpp20")
+ syn match cppNumber display contained "\<0\(y\|d\)\>"
+ syn match cppNumber display contained "\<[1-9]\('\=\d\+\)*\(y\|d\)\>"
+ syn match cppNumber display contained "\<0\o\+\(y\|d\)\>"
+ syn match cppNumber display contained "\<0b[01]\('\=[01]\+\)*\(y\|d\)\>"
+ syn match cppNumber display contained "\<0x\x\('\=\x\+\)*\(y\|d\)\>"
+ syn keyword cppStatement co_await co_return co_yield requires
+ syn keyword cppStorageClass consteval constinit
+ syn keyword cppStructure concept
+ syn keyword cppType char8_t
+ syn keyword cppModule import module export
+endif
+
+" The minimum and maximum operators in GNU C++
+syn match cppMinMax "[<>]?"
+
+" Default highlighting
+hi def link cppAccess cppStatement
+hi def link cppCast cppStatement
+hi def link cppExceptions Exception
+hi def link cppOperator Operator
+hi def link cppStatement Statement
+hi def link cppModifier Type
+hi def link cppType Type
+hi def link cppStorageClass StorageClass
+hi def link cppStructure Structure
+hi def link cppBoolean Boolean
+hi def link cppCharacter cCharacter
+hi def link cppSpecialCharacter cSpecialCharacter
+hi def link cppSpecialError cSpecialError
+hi def link cppConstant Constant
+hi def link cppRawStringDelimiter Delimiter
+hi def link cppRawString String
+hi def link cppString String
+hi def link cppNumber Number
+hi def link cppFloat Number
+hi def link cppModule Include
+
+let b:current_syntax = "cpp"
+
+" vim: ts=8
diff --git a/runtime/syntax/crm.vim b/runtime/syntax/crm.vim
new file mode 100644
index 0000000..5285de3
--- /dev/null
+++ b/runtime/syntax/crm.vim
@@ -0,0 +1,41 @@
+" Vim syntax file
+" Language: CRM114
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword crmTodo contained TODO FIXME XXX NOTE
+
+syn region crmComment display oneline start='#' end='\\#'
+ \ contains=crmTodo,@Spell
+
+syn match crmVariable display ':[*#@]:[^:]\{-1,}:'
+
+syn match crmSpecial display '\\\%(x\x\x\|o\o\o\o\|[]nrtabvf0>)};/\\]\)'
+
+syn keyword crmStatement insert noop accept alius alter classify eval exit
+syn keyword crmStatement fail fault goto hash intersect isolate input learn
+syn keyword crmStatement liaf match output syscall trap union window
+
+syn region crmRegex start='/' skip='\\/' end='/' contains=crmVariable
+
+syn match crmLabel display '^\s*:[[:graph:]]\+:'
+
+hi def link crmTodo Todo
+hi def link crmComment Comment
+hi def link crmVariable Identifier
+hi def link crmSpecial SpecialChar
+hi def link crmStatement Statement
+hi def link crmRegex String
+hi def link crmLabel Label
+
+let b:current_syntax = "crm"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/crontab.vim b/runtime/syntax/crontab.vim
new file mode 100644
index 0000000..5e38ffa
--- /dev/null
+++ b/runtime/syntax/crontab.vim
@@ -0,0 +1,67 @@
+" Vim syntax file
+" Language: crontab
+" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
+" Original Maintainer: John Hoelzel johnh51@users.sourceforge.net
+" License: This file can be redistribued and/or modified under the same terms
+" as Vim itself.
+" Filenames: /tmp/crontab.* used by "crontab -e"
+" Last Change: 2015-01-20
+"
+" crontab line format:
+" Minutes Hours Days Months Days_of_Week Commands # comments
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syntax match crontabNick "^\s*@\(reboot\|yearly\|annually\|monthly\|weekly\|daily\|midnight\|hourly\)\>" nextgroup=crontabCmd skipwhite
+
+syntax match crontabVar "^\s*\k\w*\s*="me=e-1
+
+syntax case ignore
+
+syntax match crontabMin "^\s*[-0-9/,.*]\+" nextgroup=crontabHr skipwhite
+syntax match crontabHr "\s[-0-9/,.*]\+" nextgroup=crontabDay skipwhite contained
+syntax match crontabDay "\s[-0-9/,.*]\+" nextgroup=crontabMnth skipwhite contained
+
+syntax match crontabMnth "\s[-a-z0-9/,.*]\+" nextgroup=crontabDow skipwhite contained
+syntax keyword crontabMnth12 contained jan feb mar apr may jun jul aug sep oct nov dec
+
+syntax match crontabDow "\s[-a-z0-9/,.*]\+" nextgroup=crontabCmd skipwhite contained
+syntax keyword crontabDow7 contained sun mon tue wed thu fri sat
+
+syntax region crontabCmd start="\S" end="$" skipwhite contained keepend contains=crontabPercent
+syntax match crontabCmnt "^\s*#.*" contains=@Spell
+syntax match crontabPercent "[^\\]%.*"lc=1 contained
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link crontabMin Number
+hi def link crontabHr PreProc
+hi def link crontabDay Type
+
+hi def link crontabMnth Number
+hi def link crontabMnth12 Number
+hi def link crontabMnthS Number
+hi def link crontabMnthN Number
+
+hi def link crontabDow PreProc
+hi def link crontabDow7 PreProc
+hi def link crontabDowS PreProc
+hi def link crontabDowN PreProc
+
+hi def link crontabNick Special
+hi def link crontabVar Identifier
+hi def link crontabPercent Special
+
+" comment out next line for to suppress unix commands coloring.
+hi def link crontabCmd Statement
+
+hi def link crontabCmnt Comment
+
+
+let b:current_syntax = "crontab"
+
+" vim: ts=8
diff --git a/runtime/syntax/cs.vim b/runtime/syntax/cs.vim
new file mode 100644
index 0000000..104470a
--- /dev/null
+++ b/runtime/syntax/cs.vim
@@ -0,0 +1,331 @@
+" Vim syntax file
+" Language: C#
+" Maintainer: Nick Jensen <nickspoon@gmail.com>
+" Former Maintainers: Anduin Withers <awithers@anduin.com>
+" Johannes Zellner <johannes@zellner.org>
+" Last Change: 2022-11-16
+" Filenames: *.cs
+" License: Vim (see :h license)
+" Repository: https://github.com/nickspoons/vim-cs
+"
+" References:
+" - ECMA-334 5th Edition: C# Language Specification
+" https://www.ecma-international.org/publications-and-standards/standards/ecma-334/
+" - C# Language Design: Draft 6th Edition and later proposals
+" https://github.com/dotnet/csharplang
+
+if exists('b:current_syntax')
+ finish
+endif
+
+let s:save_cpo = &cpoptions
+set cpoptions&vim
+
+syn keyword csType bool byte char decimal double float int long object sbyte short string T uint ulong ushort var void dynamic
+syn keyword csType nint nuint " contextual
+
+syn keyword csStorage enum interface namespace struct
+syn match csStorage "\<record\ze\_s\+@\=\h\w*\_s*[<(:{;]"
+syn match csStorage "\%(\<\%(partial\|new\|public\|protected\|internal\|private\|abstract\|sealed\|static\|unsafe\|readonly\)\)\@9<=\_s\+record\>"
+syn match csStorage "\<record\ze\_s\+\%(class\|struct\)"
+syn match csStorage "\<delegate\>"
+syn keyword csRepeat break continue do for foreach goto return while
+syn keyword csConditional else if switch
+syn keyword csLabel case default
+
+syn match csNamespaceAlias "@\=\h\w*\ze\_s*::" display
+syn match csGlobalNamespaceAlias "global\ze\_s*::" display
+syn cluster csNamespaceAlias contains=csGlobalNamespaceAlias,csNamespaceAlias,csNamespaceAliasQualifier
+
+" user labels
+syn match csLabel display +^\s*\I\i*\s*:\%([^:]\)\@=+
+
+" Function pointers
+syn match csType "\<delegate\s*\*" contains=csOpSymbols nextgroup=csManagedModifier skipwhite skipempty
+syn keyword csManagedModifier managed unmanaged contained
+
+" Modifiers
+syn match csUsingModifier "\<global\ze\_s\+using\>"
+syn keyword csAccessModifier internal private protected public
+syn keyword csModifier operator nextgroup=csCheckedModifier skipwhite skipempty
+syn keyword csCheckedModifier checked contained
+
+" TODO: in new out
+syn keyword csModifier abstract const event override readonly sealed static virtual volatile
+syn match csModifier "\<\%(extern\|fixed\|unsafe\)\>"
+syn match csModifier "\<partial\ze\_s\+\%(class\|struct\|interface\|record\|void\)\>"
+
+syn keyword csException try catch finally throw when
+syn keyword csLinq ascending by descending equals from group in into join let on orderby select
+syn match csLinq "\<where\>"
+
+" Type parameter constraint clause
+syn match csStorage "\<where\>\ze\_s\+@\=\h\w*\_s*:"
+
+" Async
+syn keyword csAsyncModifier async
+syn keyword csAsyncOperator await
+
+syn match csStorage "\<extern\ze\s\+alias\>"
+syn match csStorage "\%(\<extern\s\+\)\@16<=alias\>"
+
+syn match csStatement "\<\%(checked\|unchecked\|unsafe\)\ze\_s*{"
+syn match csStatement "\<fixed\ze\_s*("
+syn keyword csStatement lock
+syn match csStatement "\<yield\ze\_s\+\%(return\|break\)\>"
+
+syn match csAccessor "\<\%(get\|set\|init\|add\|remove\)\ze\_s*\%([;{]\|=>\)"
+
+syn keyword csAccess base
+syn match csAccess "\<this\>"
+
+" Extension method parameter modifier
+syn match csModifier "\<this\ze\_s\+@\=\h"
+
+syn keyword csUnspecifiedStatement as in is nameof out params ref sizeof stackalloc using
+syn keyword csUnsupportedStatement value
+syn keyword csUnspecifiedKeyword explicit implicit
+
+" Operators
+syn keyword csTypeOf typeof nextgroup=csTypeOfOperand,csTypeOfError skipwhite skipempty
+syn region csTypeOfOperand matchgroup=csParens start="(" end=")" contained contains=csType
+syn match csTypeOfError "[^([:space:]]" contained
+syn match csKeywordOperator "\<\%(checked\|unchecked\)\ze\_s*("
+
+" Punctuation
+syn match csBraces "[{}[\]]" display
+syn match csParens "[()]" display
+syn match csOpSymbols "+\{1,2}" display
+syn match csOpSymbols "-\{1,2}" display
+syn match csOpSymbols "=\{1,2}" display
+syn match csOpSymbols ">\{1,2}" display
+syn match csOpSymbols "<\{1,2}" display
+syn match csOpSymbols "[!><+\-*/]=" display
+syn match csOpSymbols "[!*/^]" display
+syn match csOpSymbols "=>" display
+syn match csEndColon ";" display
+syn match csLogicSymbols "&&" display
+syn match csLogicSymbols "||" display
+syn match csLogicSymbols "?" display
+syn match csLogicSymbols ":" display
+syn match csNamespaceAliasQualifier "::" display
+
+" Generics
+syn region csGeneric matchgroup=csGenericBraces start="<" end=">" oneline contains=csType,csGeneric,@csNamespaceAlias,csUserType,csUserIdentifier,csUserInterface,csUserMethod
+
+" Comments
+"
+" PROVIDES: @csCommentHook
+syn keyword csTodo contained TODO FIXME XXX NOTE HACK TBD
+syn region csBlockComment start="/\*" end="\*/" contains=@csCommentHook,csTodo,@Spell
+syn match csLineComment "//.*$" contains=@csCommentHook,csTodo,@Spell
+syn cluster csComment contains=csLineComment,csBlockComment
+
+syn region csSummary start="^\s*/// <summary" end="^\%\(\s*///\)\@!" transparent fold keepend
+
+" xml markup inside '///' and /**...*/ comments
+syn cluster xmlRegionHook add=csXmlLineCommentLeader,csXmlBlockCommentMiddle
+syn cluster xmlCdataHook add=csXmlLineCommentLeader,csXmlBlockCommentMiddle
+syn cluster xmlStartTagHook add=csXmlLineCommentLeader,csXmlBlockCommentMiddle
+syn cluster xmlTagHook add=csXmlTag
+syn cluster xmlAttribHook add=csXmlAttrib
+
+" https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/xmldoc/recommended-tags
+syn keyword csXmlTag contained summary remarks
+syn keyword csXmlTag contained returns param paramref exception value
+syn keyword csXmlTag contained para list c code example
+syn keyword csXmlTag contained inheritdoc include
+syn keyword csXmlTag contained see seealso
+syn keyword csXmlTag contained typeparam typeparamref
+syn keyword csXmlTag contained b i u br a
+syn keyword csXmlAttrib contained cref href
+
+syn match csXmlLineCommentLeader "///" contained
+syn match csXmlLineComment "///.*$" contains=csXmlLineCommentLeader,@csXml,@Spell keepend
+syn match csXmlBlockCommentMiddle "^\s*\zs\*" contained
+syn region csXmlBlockComment start="/\*\*" end="\*/" contains=@csXml,@Spell,csXmlBlockCommentMiddle keepend
+syn include @csXml syntax/xml.vim
+hi def link xmlRegion Comment
+
+" Since syntax/xml.vim contains `syn spell toplevel`, we need to set it back to `default` here.
+syn spell default
+
+" Pre-processing directives
+syn region csPreProcDeclaration start="^\s*\zs#\s*\%(define\|undef\)\>" end="$" contains=csLineComment keepend
+syn region csPreProcConditional start="^\s*\zs#\s*\%(if\|elif\)\>" end="$" contains=csLineComment keepend
+syn region csPreProcConditional start="^\s*\zs#\s*\%(else\|endif\)\>" end="$" contains=csLineComment keepend
+syn region csPreProcLine start="^\s*\zs#\s*line\>" end="$" contains=csLineComment keepend
+syn region csPreProcDiagnostic start="^\s*\zs#\s*\%(error\|warning\)\>" end="$"
+syn region csPreProcConditionalSection matchgroup=csPreProcRegion start="^\s*#\s*region\>.*" end="^\s*#\s*endregion\>.*" transparent fold contains=TOP
+syn region csPreProcPragma start="^\s*\zs#\s*pragma\>" end="$" contains=csLineComment keepend
+syn region csPreProcNullable start="^\s*\zs#\s*nullable\>" end="$" contains=csLineComment keepend
+
+if expand('%:e') == 'csx' || getline('1') =~ '^#!.*\<dotnet-script\>'
+ syn region csPreProcInclude start="^\s*\zs#\s*\%(load\|r\)\>" end="$" contains=csLineComment keepend
+ syn match csShebang "\%^#!.*" display
+endif
+
+syn cluster csPreProcessor contains=csPreProc.*
+
+syn region csClassType start="\<class\>"hs=s+6 end=">" end="[:{]"me=e-1 contains=csClass
+" csUserType may be defined by user scripts/plugins - it should be contained in csNewType
+syn region csNewType start="\<new\>"hs=s+4 end="[;\n{(<\[]"me=e-1 contains=csNew,@csNamespaceAlias,csUserType
+syn region csIsType start=" is "hs=s+4 end="[A-Za-z0-9]\+" oneline contains=csIsAs
+syn region csIsType start=" as "hs=s+4 end="[A-Za-z0-9]\+" oneline contains=csIsAs
+syn keyword csNew new contained
+syn keyword csClass class contained
+syn keyword csIsAs is as
+
+syn keyword csBoolean false true
+syn keyword csNull null
+
+" Strings and constants
+syn match csSpecialError "\\." contained
+syn match csSpecialCharError "[^']" contained
+" Character literals
+syn match csSpecialChar +\\["\\'0abfnrtv]+ contained display
+syn match csUnicodeNumber +\\x\x\{1,4}+ contained contains=csUnicodeSpecifier display
+syn match csUnicodeNumber +\\u\x\{4}+ contained contains=csUnicodeSpecifier display
+syn match csUnicodeNumber +\\U00\x\{6}+ contained contains=csUnicodeSpecifier display
+syn match csUnicodeSpecifier +\\[uUx]+ contained display
+
+syn region csString matchgroup=csQuote start=+"+ end=+"\%(u8\)\=+ end=+$+ extend contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
+syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError,csUnicodeNumber display
+syn match csCharacter "'\\''" contains=csSpecialChar display
+syn match csCharacter "'[^\\]'" display
+
+" Numbers
+syn case ignore
+syn match csInteger "\<0b[01_]*[01]\%([lu]\|lu\|ul\)\=\>" display
+syn match csInteger "\<\d\+\%(_\+\d\+\)*\%([lu]\|lu\|ul\)\=\>" display
+syn match csInteger "\<0x[[:xdigit:]_]*\x\%([lu]\|lu\|ul\)\=\>" display
+syn match csReal "\<\d\+\%(_\+\d\+\)*\.\d\+\%(_\+\d\+\)*\%\(e[-+]\=\d\+\%(_\+\d\+\)*\)\=[fdm]\=" display
+syn match csReal "\.\d\+\%(_\+\d\+\)*\%(e[-+]\=\d\+\%(_\+\d\+\)*\)\=[fdm]\=\>" display
+syn match csReal "\<\d\+\%(_\+\d\+\)*e[-+]\=\d\+\%(_\+\d\+\)*[fdm]\=\>" display
+syn match csReal "\<\d\+\%(_\+\d\+\)*[fdm]\>" display
+syn case match
+syn cluster csNumber contains=csInteger,csReal
+
+syn region csInterpolatedString matchgroup=csQuote start=+\$"+ end=+"\%(u8\)\=+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
+
+syn region csInterpolation matchgroup=csInterpolationDelimiter start=+{+ end=+}+ keepend contained contains=@csAll,csBraced,csBracketed,csInterpolationAlign,csInterpolationFormat
+syn match csEscapedInterpolation "{{" transparent contains=NONE display
+syn match csEscapedInterpolation "}}" transparent contains=NONE display
+syn region csInterpolationAlign matchgroup=csInterpolationAlignDel start=+,+ end=+}+ end=+:+me=e-1 contained contains=@csNumber,csBoolean,csConstant,csCharacter,csParens,csOpSymbols,csString,csBracketed display
+syn match csInterpolationFormat +:[^}]\+}+ contained contains=csInterpolationFormatDel display
+syn match csInterpolationAlignDel +,+ contained display
+syn match csInterpolationFormatDel +:+ contained display
+
+syn region csVerbatimString matchgroup=csQuote start=+@"+ end=+"\%(u8\)\=+ skip=+""+ extend contains=csVerbatimQuote,@Spell
+syn match csVerbatimQuote +""+ contained
+
+syn region csInterVerbString matchgroup=csQuote start=+$@"+ start=+@$"+ end=+"\%(u8\)\=+ skip=+""+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,csVerbatimQuote,@Spell
+
+syn cluster csString contains=csString,csInterpolatedString,csVerbatimString,csInterVerbString
+
+syn cluster csLiteral contains=csBoolean,@csNumber,csCharacter,@csString,csNull
+
+syn region csBracketed matchgroup=csParens start=+(+ end=+)+ extend contained transparent contains=@csAll,csBraced,csBracketed
+syn region csBraced matchgroup=csParens start=+{+ end=+}+ extend contained transparent contains=@csAll,csBraced,csBracketed
+
+syn cluster csAll contains=@csLiteral,csClassType,@csComment,csEndColon,csIsType,csLabel,csLogicSymbols,csNewType,csOpSymbols,csParens,@csPreProcessor,csSummary,@csNamespaceAlias,csType,csUnicodeNumber,csUserType,csUserIdentifier,csUserInterface,csUserMethod
+
+" Keyword identifiers
+syn match csIdentifier "@\h\w*"
+
+" The default highlighting.
+hi def link csUnspecifiedStatement Statement
+hi def link csUnsupportedStatement Statement
+hi def link csUnspecifiedKeyword Keyword
+
+hi def link csGlobalNamespaceAlias Include
+
+hi def link csType Type
+hi def link csClassType Type
+hi def link csIsType Type
+
+hi def link csStorage Structure
+hi def link csClass Structure
+hi def link csNew Statement
+hi def link csIsAs Keyword
+hi def link csAccessor Keyword
+hi def link csAccess Keyword
+
+hi def link csLinq Statement
+
+hi def link csStatement Statement
+hi def link csRepeat Repeat
+hi def link csConditional Conditional
+hi def link csLabel Label
+hi def link csException Exception
+
+hi def link csModifier StorageClass
+hi def link csAccessModifier csModifier
+hi def link csAsyncModifier csModifier
+hi def link csCheckedModifier csModifier
+hi def link csManagedModifier csModifier
+hi def link csUsingModifier csModifier
+
+hi def link csTodo Todo
+hi def link csComment Comment
+hi def link csLineComment csComment
+hi def link csBlockComment csComment
+
+hi def link csKeywordOperator Keyword
+hi def link csAsyncOperator csKeywordOperator
+hi def link csTypeOf csKeywordOperator
+hi def link csTypeOfOperand Typedef
+hi def link csTypeOfError Error
+hi def link csOpSymbols Operator
+hi def link csLogicSymbols Operator
+
+hi def link csSpecialError Error
+hi def link csSpecialCharError Error
+hi def link csString String
+hi def link csQuote String
+hi def link csInterpolatedString String
+hi def link csVerbatimString String
+hi def link csInterVerbString String
+hi def link csVerbatimQuote SpecialChar
+
+hi def link csPreProc PreProc
+hi def link csPreProcDeclaration Define
+hi def link csPreProcConditional PreCondit
+hi def link csPreProcLine csPreProc
+hi def link csPreProcDiagnostic csPreProc
+hi def link csPreProcRegion csPreProc
+hi def link csPreProcPragma csPreProc
+hi def link csPreProcNullable csPreProc
+hi def link csPreProcInclude csPreProc
+hi def link csShebang csPreProc
+
+hi def link csConstant Constant
+hi def link csNull Constant
+hi def link csBoolean Boolean
+hi def link csCharacter Character
+hi def link csSpecialChar SpecialChar
+hi def link csInteger Number
+hi def link csReal Float
+hi def link csUnicodeNumber SpecialChar
+hi def link csUnicodeSpecifier SpecialChar
+hi def link csInterpolationDelimiter Delimiter
+hi def link csInterpolationAlignDel csInterpolationDelimiter
+hi def link csInterpolationFormat csInterpolationDelimiter
+hi def link csInterpolationFormatDel csInterpolationDelimiter
+
+hi def link csGenericBraces csBraces
+
+" xml markup
+hi def link csXmlLineCommentLeader Comment
+hi def link csXmlLineComment Comment
+hi def link csXmlBlockComment Comment
+hi def link csXmlBlockCommentMiddle csXmlBlockComment
+hi def link csXmlTag Statement
+hi def link csXmlAttrib Statement
+
+let b:current_syntax = 'cs'
+
+let &cpoptions = s:save_cpo
+unlet s:save_cpo
+
+" vim: vts=16,28
diff --git a/runtime/syntax/csc.vim b/runtime/syntax/csc.vim
new file mode 100644
index 0000000..b1bc4d6
--- /dev/null
+++ b/runtime/syntax/csc.vim
@@ -0,0 +1,191 @@
+" Vim syntax file
+" Language: Essbase script
+" Maintainer: Raul Segura Acevedo <raulseguraaceved@netscape.net>
+" Last change: 2011 Dec 25 by Thilo Six
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" folds: fix/endfix and comments
+sy region EssFold start="\<Fix" end="EndFix" transparent fold
+
+sy keyword cscTodo contained TODO FIXME XXX
+
+" cscCommentGroup allows adding matches for special things in comments
+sy cluster cscCommentGroup contains=cscTodo
+
+" Strings in quotes
+sy match cscError '"'
+sy match cscString '"[^"]*"'
+
+"when wanted, highlight trailing white space
+if exists("csc_space_errors")
+ if !exists("csc_no_trail_space_error")
+ sy match cscSpaceE "\s\+$"
+ endif
+ if !exists("csc_no_tab_space_error")
+ sy match cscSpaceE " \+\t"me=e-1
+ endif
+endif
+
+"catch errors caused by wrong parenthesis and brackets
+sy cluster cscParenGroup contains=cscParenE,@cscCommentGroup,cscUserCont,cscBitField,cscFormat,cscNumber,cscFloat,cscOctal,cscNumbers,cscIfError,cscComW,cscCom,cscFormula,cscBPMacro
+sy region cscParen transparent start='(' end=')' contains=ALLBUT,@cscParenGroup
+sy match cscParenE ")"
+
+"integer number, or floating point number without a dot and with "f".
+sy case ignore
+sy match cscNumbers transparent "\<\d\|\.\d" contains=cscNumber,cscFloat,cscOctal
+sy match cscNumber contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
+"hex number
+sy match cscNumber contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+" Flag the first zero of an octal number as something special
+sy match cscOctal contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>"
+sy match cscFloat contained "\d\+f"
+"floating point number, with dot, optional exponent
+sy match cscFloat contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+"floating point number, starting with a dot, optional exponent
+sy match cscFloat contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+sy match cscFloat contained "\d\+e[-+]\=\d\+[fl]\=\>"
+
+sy region cscComment start="/\*" end="\*/" contains=@cscCommentGroup,cscSpaceE fold
+sy match cscCommentE "\*/"
+
+sy keyword cscIfError IF ELSE ENDIF ELSEIF
+sy keyword cscCondition contained IF ELSE ENDIF ELSEIF
+sy keyword cscFunction contained VARPER VAR UDA TRUNCATE SYD SUMRANGE SUM
+sy keyword cscFunction contained STDDEVRANGE STDDEV SPARENTVAL SLN SIBLINGS SHIFT
+sy keyword cscFunction contained SANCESTVAL RSIBLINGS ROUND REMAINDER RELATIVE PTD
+sy keyword cscFunction contained PRIOR POWER PARENTVAL NPV NEXT MOD MINRANGE MIN
+sy keyword cscFunction contained MDSHIFT MDPARENTVAL MDANCESTVAL MAXRANGE MAX MATCH
+sy keyword cscFunction contained LSIBLINGS LEVMBRS LEV
+sy keyword cscFunction contained ISUDA ISSIBLING ISSAMELEV ISSAMEGEN ISPARENT ISMBR
+sy keyword cscFunction contained ISLEV ISISIBLING ISIPARENT ISIDESC ISICHILD ISIBLINGS
+sy keyword cscFunction contained ISIANCEST ISGEN ISDESC ISCHILD ISANCEST ISACCTYPE
+sy keyword cscFunction contained IRSIBLINGS IRR INTEREST INT ILSIBLINGS IDESCENDANTS
+sy keyword cscFunction contained ICHILDREN IANCESTORS IALLANCESTORS
+sy keyword cscFunction contained GROWTH GENMBRS GEN FACTORIAL DISCOUNT DESCENDANTS
+sy keyword cscFunction contained DECLINE CHILDREN CURRMBRRANGE CURLEV CURGEN
+sy keyword cscFunction contained COMPOUNDGROWTH COMPOUND AVGRANGE AVG ANCESTVAL
+sy keyword cscFunction contained ANCESTORS ALLANCESTORS ACCUM ABS
+sy keyword cscFunction contained @VARPER @VAR @UDA @TRUNCATE @SYD @SUMRANGE @SUM
+sy keyword cscFunction contained @STDDEVRANGE @STDDEV @SPARENTVAL @SLN @SIBLINGS @SHIFT
+sy keyword cscFunction contained @SANCESTVAL @RSIBLINGS @ROUND @REMAINDER @RELATIVE @PTD
+sy keyword cscFunction contained @PRIOR @POWER @PARENTVAL @NPV @NEXT @MOD @MINRANGE @MIN
+sy keyword cscFunction contained @MDSHIFT @MDPARENTVAL @MDANCESTVAL @MAXRANGE @MAX @MATCH
+sy keyword cscFunction contained @LSIBLINGS @LEVMBRS @LEV
+sy keyword cscFunction contained @ISUDA @ISSIBLING @ISSAMELEV @ISSAMEGEN @ISPARENT @ISMBR
+sy keyword cscFunction contained @ISLEV @ISISIBLING @ISIPARENT @ISIDESC @ISICHILD @ISIBLINGS
+sy keyword cscFunction contained @ISIANCEST @ISGEN @ISDESC @ISCHILD @ISANCEST @ISACCTYPE
+sy keyword cscFunction contained @IRSIBLINGS @IRR @INTEREST @INT @ILSIBLINGS @IDESCENDANTS
+sy keyword cscFunction contained @ICHILDREN @IANCESTORS @IALLANCESTORS
+sy keyword cscFunction contained @GROWTH @GENMBRS @GEN @FACTORIAL @DISCOUNT @DESCENDANTS
+sy keyword cscFunction contained @DECLINE @CHILDREN @CURRMBRRANGE @CURLEV @CURGEN
+sy keyword cscFunction contained @COMPOUNDGROWTH @COMPOUND @AVGRANGE @AVG @ANCESTVAL
+sy keyword cscFunction contained @ANCESTORS @ALLANCESTORS @ACCUM @ABS
+sy match cscFunction contained "@"
+sy match cscError "@\s*\a*" contains=cscFunction
+
+sy match cscStatement "&"
+sy keyword cscStatement AGG ARRAY VAR CCONV CLEARDATA DATACOPY
+
+sy match cscComE contained "^\s*CALC.*"
+sy match cscComE contained "^\s*CLEARBLOCK.*"
+sy match cscComE contained "^\s*SET.*"
+sy match cscComE contained "^\s*FIX"
+sy match cscComE contained "^\s*ENDFIX"
+sy match cscComE contained "^\s*ENDLOOP"
+sy match cscComE contained "^\s*LOOP"
+" sy keyword cscCom FIX ENDFIX LOOP ENDLOOP
+
+sy match cscComW "^\s*CALC.*"
+sy match cscCom "^\s*CALC\s*ALL"
+sy match cscCom "^\s*CALC\s*AVERAGE"
+sy match cscCom "^\s*CALC\s*DIM"
+sy match cscCom "^\s*CALC\s*FIRST"
+sy match cscCom "^\s*CALC\s*LAST"
+sy match cscCom "^\s*CALC\s*TWOPASS"
+
+sy match cscComW "^\s*CLEARBLOCK.*"
+sy match cscCom "^\s*CLEARBLOCK\s\+ALL"
+sy match cscCom "^\s*CLEARBLOCK\s\+UPPER"
+sy match cscCom "^\s*CLEARBLOCK\s\+NONINPUT"
+
+sy match cscComW "^\s*\<SET.*"
+sy match cscCom "^\s*\<SET\s\+Commands"
+sy match cscCom "^\s*\<SET\s\+AGGMISSG"
+sy match cscCom "^\s*\<SET\s\+CACHE"
+sy match cscCom "^\s*\<SET\s\+CALCHASHTBL"
+sy match cscCom "^\s*\<SET\s\+CLEARUPDATESTATUS"
+sy match cscCom "^\s*\<SET\s\+FRMLBOTTOMUP"
+sy match cscCom "^\s*\<SET\s\+LOCKBLOCK"
+sy match cscCom "^\s*\<SET\s\+MSG"
+sy match cscCom "^\s*\<SET\s\+NOTICE"
+sy match cscCom "^\s*\<SET\s\+UPDATECALC"
+sy match cscCom "^\s*\<SET\s\+UPTOLOCAL"
+
+sy keyword cscBPMacro contained !LoopOnAll !LoopOnLevel !LoopOnSelected
+sy keyword cscBPMacro contained !CurrentMember !LoopOnDimensions !CurrentDimension
+sy keyword cscBPMacro contained !CurrentOtherLoopDimension !LoopOnOtherLoopDimensions
+sy keyword cscBPMacro contained !EndLoop !AllMembers !SelectedMembers !If !Else !EndIf
+sy keyword cscBPMacro contained LoopOnAll LoopOnLevel LoopOnSelected
+sy keyword cscBPMacro contained CurrentMember LoopOnDimensions CurrentDimension
+sy keyword cscBPMacro contained CurrentOtherLoopDimension LoopOnOtherLoopDimensions
+sy keyword cscBPMacro contained EndLoop AllMembers SelectedMembers If Else EndIf
+sy match cscBPMacro contained "!"
+sy match cscBPW "!\s*\a*" contains=cscBPmacro
+
+" when wanted, highlighting lhs members or errors in assignments (may lag the editing)
+if exists("csc_asignment")
+ sy match cscEqError '\("[^"]*"\s*\|[^][\t !%()*+,--/:;<=>{}~]\+\s*\|->\s*\)*=\([^=]\@=\|$\)'
+ sy region cscFormula transparent matchgroup=cscVarName start='\("[^"]*"\|[^][\t !%()*+,--/:;<=>{}~]\+\)\s*=\([^=]\@=\|\n\)' skip='"[^"]*"' end=';' contains=ALLBUT,cscFormula,cscFormulaIn,cscBPMacro,cscCondition
+ sy region cscFormulaIn matchgroup=cscVarName transparent start='\("[^"]*"\|[^][\t !%()*+,--/:;<=>{}~]\+\)\(->\("[^"]*"\|[^][\t !%()*+,--/:;<=>{}~]\+\)\)*\s*=\([^=]\@=\|$\)' skip='"[^"]*"' end=';' contains=ALLBUT,cscFormula,cscFormulaIn,cscBPMacro,cscCondition contained
+ sy match cscEq "=="
+endif
+
+if !exists("csc_minlines")
+ let csc_minlines = 50 " mostly for () constructs
+endif
+exec "sy sync ccomment cscComment minlines=" . csc_minlines
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi cscVarName term=bold ctermfg=9 gui=bold guifg=blue
+
+hi def link cscNumber Number
+hi def link cscOctal Number
+hi def link cscFloat Float
+hi def link cscParenE Error
+hi def link cscCommentE Error
+hi def link cscSpaceE Error
+hi def link cscError Error
+hi def link cscString String
+hi def link cscComment Comment
+hi def link cscTodo Todo
+hi def link cscStatement Statement
+hi def link cscIfError Error
+hi def link cscEqError Error
+hi def link cscFunction Statement
+hi def link cscCondition Statement
+hi def link cscWarn WarningMsg
+
+hi def link cscComE Error
+hi def link cscCom Statement
+hi def link cscComW WarningMsg
+
+hi def link cscBPMacro Identifier
+hi def link cscBPW WarningMsg
+
+
+let b:current_syntax = "csc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/csdl.vim b/runtime/syntax/csdl.vim
new file mode 100644
index 0000000..f7d30f1
--- /dev/null
+++ b/runtime/syntax/csdl.vim
@@ -0,0 +1,536 @@
+" Vim syntax file
+" Language: Curated Stream Definition Language (CSDL)
+" Maintainer: Jacek Artymiak
+" Latest Revision: 25 February 2013
+
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=.,@,48-57,_,192-255
+syn case ignore
+
+syn match csdlKeyword "tag "
+syn match csdlKeyword "stream "
+syn match csdlKeyword "return "
+
+syn keyword csdlOperator contains
+syn match csdlOperator "cs contains"
+syn keyword csdlOperator substr
+syn match csdlOperator "cs substr"
+syn keyword csdlOperator contains_any
+syn match csdlOperator "cs contains_any"
+syn keyword csdlOperator any
+syn match csdlOperator "cs any"
+syn keyword csdlOperator contains_near
+syn match csdlOperator "cs contains_near"
+syn keyword csdlOperator exists
+syn keyword csdlOperator in
+syn keyword csdlOperator url_in
+syn match csdlOperator "=="
+syn match csdlOperator "!="
+syn match csdlOperator "cs =="
+syn match csdlOperator "cs !="
+syn match csdlOperator ">"
+syn match csdlOperator ">="
+syn match csdlOperator "<"
+syn match csdlOperator "<="
+syn keyword csdlOperator regex_partial
+syn keyword csdlOperator regex_exact
+syn keyword csdlOperator geo_box
+syn keyword csdlOperator geo_radius
+syn keyword csdlOperator geo_polygon
+
+syn keyword csdlLogicalOperator and
+syn keyword csdlLogicalOperator or
+syn keyword csdlLogicalOperator not
+
+syn match csdlTarget 'reddit\.title'
+syn match csdlTarget 'reddit\.content'
+syn match csdlTarget 'reddit\.contenttype'
+syn match csdlTarget 'reddit\.link'
+syn match csdlTarget 'reddit\.author\.name'
+syn match csdlTarget 'reddit\.author\.link'
+syn match csdlTarget 'reddit\.type'
+syn match csdlTarget 'reddit\.thread'
+syn match csdlTarget 'interaction\.type'
+syn match csdlTarget 'interaction\.title'
+syn match csdlTarget 'interaction\.content'
+syn match csdlTarget 'interaction\.source'
+syn match csdlTarget 'interaction\.geo'
+syn match csdlTarget 'interaction\.link'
+syn match csdlTarget 'interaction\.author\.username'
+syn match csdlTarget 'interaction\.author\.name'
+syn match csdlTarget 'interaction\.author\.id'
+syn match csdlTarget 'interaction\.author\.avatar'
+syn match csdlTarget 'interaction\.author\.link'
+syn match csdlTarget 'interaction\.sample'
+syn match csdlTarget 'links\.title'
+syn match csdlTarget 'links\.url'
+syn keyword csdlTarget links.normalized_url
+syn match csdlTarget 'links\.hops'
+syn match csdlTarget 'links\.code'
+syn match csdlTarget 'links\.domain'
+syn keyword csdlTarget links.retweet_count
+syn match csdlTarget 'links\.age'
+syn keyword csdlTarget links.meta.content_type
+syn match csdlTarget 'links\.meta\.charset'
+syn match csdlTarget 'links\.meta\.lang'
+syn match csdlTarget 'links\.meta\.keywords'
+syn match csdlTarget 'links\.meta\.description'
+syn match csdlTarget 'links\.meta\.newskeywords'
+syn match csdlTarget 'links\.meta\.standout'
+syn match csdlTarget 'links\.meta\.opengraph\.type'
+syn match csdlTarget 'links\.meta\.opengraph\.title'
+syn match csdlTarget 'links\.meta\.opengraph\.image'
+syn match csdlTarget 'links\.meta\.opengraph\.url'
+syn match csdlTarget 'links\.meta\.opengraph\.description'
+syn keyword csdlTarget links.meta.opengraph.site_name
+syn match csdlTarget 'links\.meta\.opengraph\.email'
+syn keyword csdlTarget links.meta.opengraph.phone_number
+syn keyword csdlTarget links.meta.opengraph.fax_number
+syn match csdlTarget 'links\.meta\.opengraph\.geo'
+syn keyword csdlTarget links.meta.opengraph.street_address
+syn match csdlTarget 'links\.meta\.opengraph\.locality'
+syn match csdlTarget 'links\.meta\.opengraph\.region'
+syn keyword csdlTarget links.meta.opengraph.postal_code
+syn match csdlTarget 'links\.meta\.opengraph\.activity'
+syn match csdlTarget 'links\.meta\.opengraph\.sport'
+syn match csdlTarget 'links\.meta\.opengraph\.bar'
+syn match csdlTarget 'links\.meta\.opengraph\.company'
+syn match csdlTarget 'links\.meta\.opengraph\.cafe'
+syn match csdlTarget 'links\.meta\.opengraph\.hotel'
+syn match csdlTarget 'links\.meta\.opengraph\.restaurant'
+syn match csdlTarget 'links\.meta\.opengraph\.cause'
+syn keyword csdlTarget links.meta.opengraph.sports_league
+syn keyword csdlTarget links.meta.opengraph.sports_team
+syn match csdlTarget 'links\.meta\.opengraph\.band'
+syn match csdlTarget 'links\.meta\.opengraph\.government'
+syn keyword csdlTarget links.meta.opengraph.non_profit
+syn match csdlTarget 'links\.meta\.opengraph\.school'
+syn match csdlTarget 'links\.meta\.opengraph\.university'
+syn match csdlTarget 'links\.meta\.opengraph\.actor'
+syn match csdlTarget 'links\.meta\.opengraph\.athlete'
+syn match csdlTarget 'links\.meta\.opengraph\.author'
+syn match csdlTarget 'links\.meta\.opengraph\.director'
+syn match csdlTarget 'links\.meta\.opengraph\.musician'
+syn match csdlTarget 'links\.meta\.opengraph\.politician'
+syn keyword csdlTarget links.meta.opengraph.public_figure
+syn match csdlTarget 'links\.meta\.opengraph\.city'
+syn match csdlTarget 'links\.meta\.opengraph\.country'
+syn match csdlTarget 'links\.meta\.opengraph\.landmark'
+syn keyword csdlTarget links.meta.opengraph.state_province
+syn match csdlTarget 'links\.meta\.opengraph\.album'
+syn match csdlTarget 'links\.meta\.opengraph\.book'
+syn match csdlTarget 'links\.meta\.opengraph\.drink'
+syn match csdlTarget 'links\.meta\.opengraph\.food'
+syn match csdlTarget 'links\.meta\.opengraph\.game'
+syn match csdlTarget 'links\.meta\.opengraph\.movie'
+syn match csdlTarget 'links\.meta\.opengraph\.product'
+syn match csdlTarget 'links\.meta\.opengraph\.song'
+syn keyword csdlTarget links.meta.opengraph.tv_show
+syn match csdlTarget 'links\.meta\.opengraph\.blog'
+syn match csdlTarget 'links\.meta\.opengraph\.website'
+syn match csdlTarget 'links\.meta\.opengraph\.article'
+syn match csdlTarget 'links\.meta\.twitter\.card'
+syn match csdlTarget 'links\.meta\.twitter\.site'
+syn keyword csdlTarget links.meta.twitter.site_id
+syn match csdlTarget 'links\.meta\.twitter\.creator'
+syn keyword csdlTarget links.meta.twitter.creator_id
+syn match csdlTarget 'links\.meta\.twitter\.url'
+syn match csdlTarget 'links\.meta\.twitter\.description'
+syn match csdlTarget 'links\.meta\.twitter\.title'
+syn match csdlTarget 'links\.meta\.twitter\.image'
+syn keyword csdlTarget links.meta.twitter.image_width
+syn keyword csdlTarget links.meta.twitter.image_height
+syn match csdlTarget 'links\.meta\.twitter\.player'
+syn keyword csdlTarget links.meta.twitter.player_width
+syn keyword csdlTarget links.meta.twitter.player_height
+syn keyword csdlTarget links.meta.twitter.player_stream
+syn keyword csdlTarget links.meta.twitter.player_stream_content_type
+syn match csdlTarget 'myspace\.link'
+syn match csdlTarget 'myspace\.content'
+syn match csdlTarget 'myspace\.contenttype'
+syn match csdlTarget 'myspace\.category'
+syn match csdlTarget 'myspace\.author\.username'
+syn match csdlTarget 'myspace\.author\.name'
+syn match csdlTarget 'myspace\.author\.id'
+syn match csdlTarget 'myspace\.author\.link'
+syn match csdlTarget 'myspace\.author\.avatar'
+syn match csdlTarget 'myspace\.geo'
+syn match csdlTarget 'myspace\.verb'
+syn match csdlTarget 'newscred\.type'
+syn match csdlTarget 'newscred\.article\.domain'
+syn match csdlTarget 'newscred\.video\.domain'
+syn match csdlTarget 'newscred\.article\.topics'
+syn match csdlTarget 'newscred\.video\.topics'
+syn match csdlTarget 'newscred\.article\.category'
+syn match csdlTarget 'newscred\.video\.category'
+syn match csdlTarget 'newscred\.article\.title'
+syn match csdlTarget 'newscred\.video\.title'
+syn match csdlTarget 'newscred\.article\.content'
+syn match csdlTarget 'newscred\.article\.fulltext'
+syn match csdlTarget 'newscred\.article\.authors'
+syn match csdlTarget 'newscred\.image\.caption'
+syn match csdlTarget 'newscred\.video\.caption'
+syn match csdlTarget 'newscred\.image\.attribution\.text'
+syn match csdlTarget 'newscred\.image\.attribution\.link'
+syn match csdlTarget 'newscred\.source\.name'
+syn match csdlTarget 'newscred\.source\.link'
+syn match csdlTarget 'newscred\.source\.domain'
+syn keyword csdlTarget newscred.source.media_type
+syn keyword csdlTarget newscred.source.company_type
+syn match csdlTarget 'newscred\.source\.country'
+syn match csdlTarget 'newscred\.source\.circulation'
+syn match csdlTarget 'newscred\.source\.founded'
+syn match csdlTarget 'imdb\.title'
+syn match csdlTarget 'imdb\.content'
+syn match csdlTarget 'imdb\.contenttype'
+syn match csdlTarget 'imdb\.link'
+syn match csdlTarget 'imdb\.author\.name'
+syn match csdlTarget 'imdb\.author\.link'
+syn match csdlTarget 'imdb\.type'
+syn match csdlTarget 'imdb\.thread'
+syn match csdlTarget 'amazon\.title'
+syn match csdlTarget 'amazon\.content'
+syn match csdlTarget 'amazon\.contenttype'
+syn match csdlTarget 'amazon\.link'
+syn match csdlTarget 'amazon\.author\.name'
+syn match csdlTarget 'amazon\.author\.link'
+syn match csdlTarget 'amazon\.type'
+syn match csdlTarget 'amazon\.thread'
+syn match csdlTarget 'salience\.content\.sentiment'
+syn match csdlTarget 'salience\.content\.topics'
+syn match csdlTarget 'salience\.title\.sentiment'
+syn match csdlTarget 'salience\.title\.topics'
+syn match csdlTarget 'salience\.content\.entities\.name'
+syn match csdlTarget 'salience\.content\.entities\.type'
+syn match csdlTarget 'salience\.title\.entities\.name'
+syn match csdlTarget 'salience\.title\.entities\.type'
+syn match csdlTarget 'klout\.score'
+syn match csdlTarget 'klout\.network'
+syn match csdlTarget 'klout\.amplification'
+syn keyword csdlTarget klout.true_reach
+syn match csdlTarget 'klout\.topics'
+syn match csdlTarget 'wikipedia\.author\.talk'
+syn match csdlTarget 'wikipedia\.author\.contributions'
+syn match csdlTarget 'wikipedia\.author\.username'
+syn match csdlTarget 'wikipedia\.body'
+syn match csdlTarget 'wikipedia\.title'
+syn match csdlTarget 'wikipedia\.images'
+syn match csdlTarget 'wikipedia\.categories'
+syn match csdlTarget 'wikipedia\.externallinks'
+syn match csdlTarget 'wikipedia\.ns'
+syn match csdlTarget 'wikipedia\.namespace'
+syn match csdlTarget 'wikipedia\.pageid'
+syn match csdlTarget 'wikipedia\.parentid'
+syn match csdlTarget 'wikipedia\.oldlen'
+syn match csdlTarget 'wikipedia\.newlen'
+syn match csdlTarget 'wikipedia\.changetype'
+syn match csdlTarget 'wikipedia\.diff\.from'
+syn match csdlTarget 'wikipedia\.diff\.to'
+syn match csdlTarget 'wikipedia\.diff\.changes\.added'
+syn match csdlTarget 'wikipedia\.diff\.changes\.removed'
+syn keyword csdlTarget demographic.twitter_activity
+syn match csdlTarget 'demographic\.location\.country'
+syn keyword csdlTarget demographic.location.us_state
+syn match csdlTarget 'demographic\.location\.city'
+syn match csdlTarget 'demographic\.type'
+syn match csdlTarget 'demographic\.sex'
+syn match csdlTarget 'demographic\.status\.relationship'
+syn match csdlTarget 'demographic\.status\.work'
+syn keyword csdlTarget demographic.likes_and_interests
+syn keyword csdlTarget demographic.first_language
+syn match csdlTarget 'demographic\.professions'
+syn match csdlTarget 'demographic\.services'
+syn keyword csdlTarget demographic.large_accounts_followed
+syn keyword csdlTarget demographic.age_range.start
+syn keyword csdlTarget demographic.age_range.end
+syn match csdlTarget 'demographic\.income\.start'
+syn match csdlTarget 'demographic\.income\.end'
+syn keyword csdlTarget demographic.main_street.dressed_by
+syn keyword csdlTarget demographic.main_street.shop_at
+syn keyword csdlTarget demographic.main_street.eat_and_drink_at
+syn match csdlTarget 'demographic\.accounts\.categories'
+syn match csdlTarget 'tumblr\.activity'
+syn match csdlTarget 'tumblr\.source\.blogid'
+syn match csdlTarget 'tumblr\.dest\.blogid'
+syn match csdlTarget 'tumblr\.dest\.postid'
+syn match csdlTarget 'tumblr\.root\.blogid'
+syn match csdlTarget 'tumblr\.root\.postid'
+syn match csdlTarget 'tumblr\.blogid'
+syn keyword csdlTarget tumblr.blog_name
+syn match csdlTarget 'tumblr\.type'
+syn match csdlTarget 'tumblr\.title'
+syn match csdlTarget 'tumblr\.body'
+syn match csdlTarget 'tumblr\.text'
+syn match csdlTarget 'tumblr\.tags'
+syn keyword csdlTarget tumblr.track_name
+syn match csdlTarget 'tumblr\.album'
+syn match csdlTarget 'tumblr\.link'
+syn match csdlTarget 'tumblr\.meta\.url'
+syn match csdlTarget 'tumblr\.meta\.type'
+syn match csdlTarget 'tumblr\.meta\.description'
+syn keyword csdlTarget tumblr.meta.likes_local
+syn keyword csdlTarget tumblr.meta.likes_global
+syn keyword csdlTarget tumblr.meta.reblogged_global
+syn match csdlTarget 'demographic\.gender'
+syn match csdlTarget 'flickr\.title'
+syn match csdlTarget 'flickr\.content'
+syn match csdlTarget 'flickr\.contenttype'
+syn match csdlTarget 'flickr\.link'
+syn match csdlTarget 'flickr\.author\.name'
+syn match csdlTarget 'flickr\.author\.link'
+syn match csdlTarget 'flickr\.author\.username'
+syn match csdlTarget 'flickr\.type'
+syn match csdlTarget 'flickr\.thread'
+syn match csdlTarget 'twitter\.text'
+syn match csdlTarget 'twitter\.source'
+syn match csdlTarget 'twitter\.mentions'
+syn keyword csdlTarget twitter.mention_ids
+syn match csdlTarget 'twitter\.links'
+syn match csdlTarget 'twitter\.domains'
+syn keyword csdlTarget twitter.in_reply_to_screen_name
+syn keyword csdlTarget twitter.in_reply_to_user_id
+syn keyword csdlTarget twitter.in_reply_to_status_id
+syn keyword csdlTarget twitter.filter_level
+syn match csdlTarget 'twitter\.lang'
+syn match csdlTarget 'twitter\.geo'
+syn match csdlTarget 'twitter\.user\.description'
+syn match csdlTarget 'twitter\.user\.location'
+syn keyword csdlTarget twitter.user.statuses_count
+syn keyword csdlTarget twitter.user.followers_count
+syn keyword csdlTarget twitter.user.follower_ratio
+syn keyword csdlTarget twitter.user.profile_age
+syn keyword csdlTarget twitter.user.friends_count
+syn keyword csdlTarget twitter.user.screen_name
+syn match csdlTarget 'twitter\.user\.lang'
+syn keyword csdlTarget twitter.user.time_zone
+syn match csdlTarget 'twitter\.user\.name'
+syn match csdlTarget 'twitter\.user\.id'
+syn keyword csdlTarget twitter.user.listed_count
+syn match csdlTarget 'twitter\.user\.url'
+syn match csdlTarget 'twitter\.user\.verified'
+syn keyword csdlTarget twitter.place.place_type
+syn match csdlTarget 'twitter\.place\.country'
+syn keyword csdlTarget twitter.place.country_code
+syn keyword csdlTarget twitter.place.full_name
+syn match csdlTarget 'twitter\.place\.name'
+syn match csdlTarget 'twitter\.place\.url'
+syn match csdlTarget 'twitter\.place\.attributes\.locality'
+syn match csdlTarget 'twitter\.place\.attributes\.region'
+syn keyword csdlTarget twitter.place.attributes.street_address
+syn match csdlTarget 'twitter\.status'
+syn match csdlTarget 'twitter\.retweet\.text'
+syn match csdlTarget 'twitter\.retweet\.elapsed'
+syn match csdlTarget 'twitter\.retweet\.source'
+syn keyword csdlTarget twitter.retweet.filter_level
+syn match csdlTarget 'twitter\.retweet\.lang'
+syn match csdlTarget 'twitter\.retweet\.user\.description'
+syn match csdlTarget 'twitter\.retweet\.user\.location'
+syn keyword csdlTarget twitter.retweet.user.statuses_count
+syn keyword csdlTarget twitter.retweet.user.followers_count
+syn keyword csdlTarget twitter.retweet.user.follower_ratio
+syn keyword csdlTarget twitter.retweet.user.profile_age
+syn keyword csdlTarget twitter.retweet.user.friends_count
+syn keyword csdlTarget twitter.retweet.user.screen_name
+syn match csdlTarget 'twitter\.retweet\.user\.lang'
+syn keyword csdlTarget twitter.retweet.user.time_zone
+syn match csdlTarget 'twitter\.retweet\.user\.name'
+syn match csdlTarget 'twitter\.retweet\.user\.id'
+syn keyword csdlTarget twitter.retweet.user.listed_count
+syn match csdlTarget 'twitter\.retweet\.user\.url'
+syn match csdlTarget 'twitter\.retweet\.user\.verified'
+syn match csdlTarget 'twitter\.retweeted\.id'
+syn match csdlTarget 'twitter\.retweeted\.source'
+syn keyword csdlTarget twitter.retweeted.in_reply_to_screen_name
+syn keyword csdlTarget twitter.retweeted.in_reply_to_user_id_str
+syn keyword csdlTarget twitter.retweeted.in_reply_to_status_id
+syn match csdlTarget 'twitter\.retweet\.count'
+syn match csdlTarget 'twitter\.retweet\.mentions'
+syn keyword csdlTarget twitter.retweet.mention_ids
+syn match csdlTarget 'twitter\.retweet\.links'
+syn match csdlTarget 'twitter\.retweet\.domains'
+syn match csdlTarget 'twitter\.retweeted\.user\.description'
+syn match csdlTarget 'twitter\.retweeted\.user\.location'
+syn keyword csdlTarget twitter.retweeted.user.statuses_count
+syn keyword csdlTarget twitter.retweeted.user.followers_count
+syn keyword csdlTarget twitter.retweeted.user.follower_ratio
+syn keyword csdlTarget twitter.retweeted.user.profile_age
+syn keyword csdlTarget twitter.retweeted.user.friends_count
+syn keyword csdlTarget twitter.retweeted.user.screen_name
+syn match csdlTarget 'twitter\.retweeted\.user\.lang'
+syn keyword csdlTarget twitter.retweeted.user.time_zone
+syn match csdlTarget 'twitter\.retweeted\.user\.name'
+syn match csdlTarget 'twitter\.retweeted\.user\.id'
+syn keyword csdlTarget twitter.retweeted.user.listed_count
+syn match csdlTarget 'twitter\.retweeted\.user\.url'
+syn match csdlTarget 'twitter\.retweeted\.user\.verified'
+syn match csdlTarget 'twitter\.retweeted\.geo'
+syn keyword csdlTarget twitter.retweeted.place.place_type
+syn match csdlTarget 'twitter\.retweeted\.place\.country'
+syn keyword csdlTarget twitter.retweeted.place.country_code
+syn keyword csdlTarget twitter.retweeted.place.full_name
+syn match csdlTarget 'twitter\.retweeted\.place\.name'
+syn match csdlTarget 'twitter\.retweeted\.place\.url'
+syn match csdlTarget 'twitter\.retweeted\.place\.attributes'
+syn match csdlTarget 'twitter\.hashtags'
+syn match csdlTarget 'twitter\.retweet\.hashtags'
+syn match csdlTarget 'twitter\.media\.type'
+syn keyword csdlTarget twitter.media.media_url
+syn keyword csdlTarget twitter.media.display_url
+syn match csdlTarget 'twitter\.retweet\.media\.type'
+syn keyword csdlTarget twitter.retweet.media.media_url
+syn keyword csdlTarget twitter.retweet.media.display_url
+syn match csdlTarget 'blog\.title'
+syn match csdlTarget 'blog\.content'
+syn match csdlTarget 'blog\.contenttype'
+syn match csdlTarget 'blog\.link'
+syn match csdlTarget 'blog\.domain'
+syn match csdlTarget 'blog\.author\.name'
+syn match csdlTarget 'blog\.author\.link'
+syn match csdlTarget 'blog\.author\.avatar'
+syn match csdlTarget 'blog\.author\.username'
+syn match csdlTarget 'blog\.type'
+syn match csdlTarget 'blog\.post\.link'
+syn match csdlTarget 'blog\.post\.title'
+syn match csdlTarget 'facebook\.author\.name'
+syn match csdlTarget 'facebook\.author\.link'
+syn match csdlTarget 'facebook\.author\.id'
+syn match csdlTarget 'facebook\.author\.avatar'
+syn match csdlTarget 'facebook\.message'
+syn match csdlTarget 'facebook\.description'
+syn match csdlTarget 'facebook\.caption'
+syn match csdlTarget 'facebook\.type'
+syn match csdlTarget 'facebook\.application'
+syn match csdlTarget 'facebook\.source'
+syn match csdlTarget 'facebook\.link'
+syn match csdlTarget 'facebook\.name'
+syn match csdlTarget 'facebook\.to\.names'
+syn match csdlTarget 'facebook\.to\.ids'
+syn match csdlTarget 'facebook\.og\.title'
+syn match csdlTarget 'facebook\.og\.location'
+syn match csdlTarget 'facebook\.og\.photos'
+syn match csdlTarget 'facebook\.og\.by'
+syn match csdlTarget 'facebook\.og\.description'
+syn match csdlTarget 'facebook\.og\.type'
+syn match csdlTarget 'facebook\.og\.length'
+syn match csdlTarget 'facebook\.likes\.count'
+syn match csdlTarget 'facebook\.likes\.names'
+syn match csdlTarget 'facebook\.likes\.ids'
+syn match csdlTarget 'topix\.title'
+syn match csdlTarget 'topix\.content'
+syn match csdlTarget 'topix\.contenttype'
+syn match csdlTarget 'topix\.link'
+syn match csdlTarget 'topix\.author\.name'
+syn match csdlTarget 'topix\.type'
+syn match csdlTarget 'topix\.thread'
+syn match csdlTarget 'topix\.author\.location'
+syn match csdlTarget 'bitly\.user\.agent'
+syn keyword csdlTarget bitly.url_hash
+syn match csdlTarget 'bitly\.share\.hash'
+syn match csdlTarget 'bitly\.cname'
+syn keyword csdlTarget bitly.referring_url
+syn keyword csdlTarget bitly.referring_domain
+syn match csdlTarget 'bitly\.url'
+syn match csdlTarget 'bitly\.domain'
+syn keyword csdlTarget bitly.country_code
+syn keyword csdlTarget bitly.geo_region_code
+syn match csdlTarget 'bitly\.country'
+syn keyword csdlTarget bitly.geo_region
+syn keyword csdlTarget bitly.geo_city
+syn match csdlTarget 'bitly\.geo'
+syn match csdlTarget 'bitly\.timezone'
+syn match csdlTarget 'trends\.type'
+syn match csdlTarget 'trends\.content'
+syn match csdlTarget 'trends\.source'
+syn match csdlTarget 'board\.title'
+syn match csdlTarget 'board\.content'
+syn match csdlTarget 'board\.contenttype'
+syn match csdlTarget 'board\.link'
+syn match csdlTarget 'board\.domain'
+syn match csdlTarget 'board\.author\.name'
+syn match csdlTarget 'board\.author\.link'
+syn match csdlTarget 'board\.author\.avatar'
+syn match csdlTarget 'board\.author\.username'
+syn match csdlTarget 'board\.type'
+syn match csdlTarget 'board\.thread'
+syn match csdlTarget 'board\.author\.location'
+syn match csdlTarget 'board\.author\.signature'
+syn match csdlTarget 'board\.author\.registered'
+syn match csdlTarget 'board\.author\.age'
+syn match csdlTarget 'board\.author\.gender'
+syn match csdlTarget 'video\.title'
+syn match csdlTarget 'video\.content'
+syn match csdlTarget 'video\.contenttype'
+syn match csdlTarget 'video\.domain'
+syn match csdlTarget 'video\.author\.name'
+syn match csdlTarget 'video\.author\.link'
+syn match csdlTarget 'video\.author\.avatar'
+syn match csdlTarget 'video\.author\.username'
+syn match csdlTarget 'video\.type'
+syn match csdlTarget 'video\.videolink'
+syn match csdlTarget 'video\.commentslink'
+syn match csdlTarget 'video\.duration'
+syn match csdlTarget 'video\.thumbnail'
+syn match csdlTarget 'video\.category'
+syn match csdlTarget 'video\.tags'
+syn match csdlTarget '2ch\.title'
+syn match csdlTarget '2ch\.content'
+syn match csdlTarget '2ch\.contenttype'
+syn match csdlTarget '2ch\.link'
+syn match csdlTarget '2ch\.author\.name'
+syn match csdlTarget '2ch\.type'
+syn match csdlTarget '2ch\.thread'
+syn match csdlTarget 'dailymotion\.title'
+syn match csdlTarget 'dailymotion\.content'
+syn match csdlTarget 'dailymotion\.contenttype'
+syn match csdlTarget 'dailymotion\.author\.link'
+syn match csdlTarget 'dailymotion\.author\.username'
+syn match csdlTarget 'dailymotion\.videolink'
+syn match csdlTarget 'dailymotion\.duration'
+syn match csdlTarget 'dailymotion\.thumbnail'
+syn match csdlTarget 'dailymotion\.category'
+syn match csdlTarget 'dailymotion\.tags'
+syn match csdlTarget 'language\.tag'
+syn match csdlTarget 'language\.confidence'
+syn match csdlTarget 'digg\.type'
+syn match csdlTarget 'digg\.user\.name'
+syn match csdlTarget 'digg\.user\.fullname'
+syn match csdlTarget 'digg\.user\.registered'
+syn match csdlTarget 'digg\.user\.profileviews'
+syn match csdlTarget 'digg\.user\.icon'
+syn match csdlTarget 'digg\.user\.links'
+syn match csdlTarget 'digg\.item\.status'
+syn match csdlTarget 'digg\.item\.description'
+syn match csdlTarget 'digg\.item\.title'
+syn match csdlTarget 'digg\.item\.diggs'
+syn match csdlTarget 'digg\.item\.comments'
+syn match csdlTarget 'digg\.item\.topic'
+syn match csdlTarget 'digg\.comment\.buries'
+syn match csdlTarget 'digg\.comment\.diggs'
+syn match csdlTarget 'digg\.comment\.text'
+syn match csdlTarget 'youtube\.title'
+syn match csdlTarget 'youtube\.content'
+syn match csdlTarget 'youtube\.contenttype'
+syn match csdlTarget 'youtube\.author\.name'
+syn match csdlTarget 'youtube\.author\.link'
+syn match csdlTarget 'youtube\.type'
+syn match csdlTarget 'youtube\.videolink'
+syn match csdlTarget 'youtube\.commentslink'
+syn match csdlTarget 'youtube\.duration'
+syn match csdlTarget 'youtube\.thumbnail'
+syn match csdlTarget 'youtube\.category'
+syn match csdlTarget 'youtube\.tags'
+
+syn match csdlComment "^\/\/.*$"
+syn match csdlComment "^\/\*.*$"
+syn match csdlComment "^.*\*\/$"
+
+highlight link csdlKeyword Statement
+highlight link csdlOperator Operator
+highlight link csdlLogicalOperator Operator
+highlight link csdlTarget Constant
+highlight link csdlComment Comment
+"
+let b:current_syntax = "csdl"
diff --git a/runtime/syntax/csh.vim b/runtime/syntax/csh.vim
new file mode 100644
index 0000000..6a056c7
--- /dev/null
+++ b/runtime/syntax/csh.vim
@@ -0,0 +1,143 @@
+" Vim syntax file
+" Language: C-shell (csh)
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Last Change: Aug 31, 2016
+" Version: 14
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_CSH
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" clusters:
+syn cluster cshQuoteList contains=cshDblQuote,cshSnglQuote,cshBckQuote
+syn cluster cshVarList contains=cshExtVar,cshSelector,cshQtyWord,cshArgv,cshSubst
+
+" Variables which affect the csh itself
+syn match cshSetVariables contained "argv\|histchars\|ignoreeof\|noglob\|prompt\|status"
+syn match cshSetVariables contained "cdpath\|history\|mail\|nonomatch\|savehist\|time"
+syn match cshSetVariables contained "cwd\|home\|noclobber\|path\|shell\|verbose"
+syn match cshSetVariables contained "echo"
+
+syn case ignore
+syn keyword cshTodo contained todo
+syn case match
+
+" Variable Name Expansion Modifiers
+syn match cshModifier contained ":\(h\|t\|r\|q\|x\|gh\|gt\|gr\)"
+
+" Strings and Comments
+syn match cshNoEndlineDQ contained "[^\"]\(\\\\\)*$"
+syn match cshNoEndlineSQ contained "[^\']\(\\\\\)*$"
+syn match cshNoEndlineBQ contained "[^\`]\(\\\\\)*$"
+
+syn region cshDblQuote start=+[^\\]"+lc=1 skip=+\\\\\|\\"+ end=+"+ contains=cshSpecial,cshShellVariables,cshExtVar,cshSelector,cshQtyWord,cshArgv,cshSubst,cshNoEndlineDQ,cshBckQuote,@Spell
+syn region cshSnglQuote start=+[^\\]'+lc=1 skip=+\\\\\|\\'+ end=+'+ contains=cshNoEndlineSQ,@Spell
+syn region cshBckQuote start=+[^\\]`+lc=1 skip=+\\\\\|\\`+ end=+`+ contains=cshNoEndlineBQ,@Spell
+syn region cshDblQuote start=+^"+ skip=+\\\\\|\\"+ end=+"+ contains=cshSpecial,cshExtVar,cshSelector,cshQtyWord,cshArgv,cshSubst,cshNoEndlineDQ,@Spell
+syn region cshSnglQuote start=+^'+ skip=+\\\\\|\\'+ end=+'+ contains=cshNoEndlineSQ,@Spell
+syn region cshBckQuote start=+^`+ skip=+\\\\\|\\`+ end=+`+ contains=cshNoEndlineBQ,@Spell
+syn cluster cshCommentGroup contains=cshTodo,@Spell
+syn match cshComment "#.*$" contains=@cshCommentGroup
+
+" A bunch of useful csh keywords
+syn keyword cshStatement alias end history onintr setenv unalias
+syn keyword cshStatement cd eval kill popd shift unhash
+syn keyword cshStatement chdir exec login pushd source
+syn keyword cshStatement continue exit logout rehash time unsetenv
+syn keyword cshStatement dirs glob nice repeat umask wait
+syn keyword cshStatement echo goto nohup
+
+syn keyword cshConditional break case else endsw switch
+syn keyword cshConditional breaksw default endif
+syn keyword cshRepeat foreach
+
+" Special environment variables
+syn keyword cshShellVariables HOME LOGNAME PATH TERM USER
+
+" Modifiable Variables without {}
+syn match cshExtVar "\$[a-zA-Z_][a-zA-Z0-9_]*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=" contains=cshModifier
+syn match cshSelector "\$[a-zA-Z_][a-zA-Z0-9_]*\[[a-zA-Z_]\+\]\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=" contains=cshModifier
+syn match cshQtyWord "\$#[a-zA-Z_][a-zA-Z0-9_]*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=" contains=cshModifier
+syn match cshArgv "\$\d\+\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=" contains=cshModifier
+syn match cshArgv "\$\*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=" contains=cshModifier
+
+" Modifiable Variables with {}
+syn match cshExtVar "\${[a-zA-Z_][a-zA-Z0-9_]*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=}" contains=cshModifier
+syn match cshSelector "\${[a-zA-Z_][a-zA-Z0-9_]*\[[a-zA-Z_]\+\]\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=}" contains=cshModifier
+syn match cshQtyWord "\${#[a-zA-Z_][a-zA-Z0-9_]*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=}" contains=cshModifier
+syn match cshArgv "\${\d\+\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=}" contains=cshModifier
+
+" UnModifiable Substitutions
+syn match cshSubstError "\$?[a-zA-Z_][a-zA-Z0-9_]*:\(h\|t\|r\|q\|x\|gh\|gt\|gr\)"
+syn match cshSubstError "\${?[a-zA-Z_][a-zA-Z0-9_]*:\(h\|t\|r\|q\|x\|gh\|gt\|gr\)}"
+syn match cshSubstError "\$?[0$<]:\(h\|t\|r\|q\|x\|gh\|gt\|gr\)"
+syn match cshSubst "\$?[a-zA-Z_][a-zA-Z0-9_]*"
+syn match cshSubst "\${?[a-zA-Z_][a-zA-Z0-9_]*}"
+syn match cshSubst "\$?[0$<]"
+
+" I/O redirection
+syn match cshRedir ">>&!\|>&!\|>>&\|>>!\|>&\|>!\|>>\|<<\|>\|<"
+
+" Handle set expressions
+syn region cshSetExpr matchgroup=cshSetStmt start="\<set\>\|\<unset\>" end="$\|;" contains=cshComment,cshSetStmt,cshSetVariables,@cshQuoteList
+
+" Operators and Expression-Using constructs
+"syn match cshOperator contained "&&\|!\~\|!=\|<<\|<=\|==\|=\~\|>=\|>>\|\*\|\^\|\~\|||\|!\|\|%\|&\|+\|-\|/\|<\|>\||"
+syn match cshOperator contained "&&\|!\~\|!=\|<<\|<=\|==\|=\~\|>=\|>>\|\*\|\^\|\~\|||\|!\|%\|&\|+\|-\|/\|<\|>\||"
+syn match cshOperator contained "[(){}]"
+syn region cshTest matchgroup=cshStatement start="\<if\>\|\<while\>" skip="\\$" matchgroup=cshStatement end="\<then\>\|$" contains=cshComment,cshOperator,@cshQuoteList,@cshVarLIst
+
+" Highlight special characters (those which have a backslash) differently
+syn match cshSpecial contained "\\\d\d\d\|\\[abcfnrtv\\]"
+syn match cshNumber "-\=\<\d\+\>"
+
+" All other identifiers
+"syn match cshIdentifier "\<[a-zA-Z._][a-zA-Z0-9._]*\>"
+
+" Shell Input Redirection (Here Documents)
+syn region cshHereDoc matchgroup=cshRedir start="<<-\=\s*\**\z(\h\w*\)\**" matchgroup=cshRedir end="^\z1$"
+
+" Define the default highlighting.
+if !exists("skip_csh_syntax_inits")
+
+ hi def link cshArgv cshVariables
+ hi def link cshBckQuote cshCommand
+ hi def link cshDblQuote cshString
+ hi def link cshExtVar cshVariables
+ hi def link cshHereDoc cshString
+ hi def link cshNoEndlineBQ cshNoEndline
+ hi def link cshNoEndlineDQ cshNoEndline
+ hi def link cshNoEndlineSQ cshNoEndline
+ hi def link cshQtyWord cshVariables
+ hi def link cshRedir cshOperator
+ hi def link cshSelector cshVariables
+ hi def link cshSetStmt cshStatement
+ hi def link cshSetVariables cshVariables
+ hi def link cshSnglQuote cshString
+ hi def link cshSubst cshVariables
+
+ hi def link cshCommand Statement
+ hi def link cshComment Comment
+ hi def link cshConditional Conditional
+ hi def link cshIdentifier Error
+ hi def link cshModifier Special
+ hi def link cshNoEndline Error
+ hi def link cshNumber Number
+ hi def link cshOperator Operator
+ hi def link cshRedir Statement
+ hi def link cshRepeat Repeat
+ hi def link cshShellVariables Special
+ hi def link cshSpecial Special
+ hi def link cshStatement Statement
+ hi def link cshString String
+ hi def link cshSubstError Error
+ hi def link cshTodo Todo
+ hi def link cshVariables Type
+
+endif
+
+let b:current_syntax = "csh"
+
+" vim: ts=18
diff --git a/runtime/syntax/csp.vim b/runtime/syntax/csp.vim
new file mode 100644
index 0000000..8001b1f
--- /dev/null
+++ b/runtime/syntax/csp.vim
@@ -0,0 +1,182 @@
+" Vim syntax file
+" Language: CSP (Communication Sequential Processes, using FDR input syntax)
+" Maintainer: Jan Bredereke <brederek@tzi.de>
+" Version: 0.6.0
+" Last change: Mon Mar 25, 2002
+" URL: http://www.tzi.de/~brederek/vim/
+" Copying: You may distribute and use this file freely, in the same
+" way as the vim editor itself.
+"
+" To Do: - Probably I missed some keywords or operators, please
+" fix them and notify me, the maintainer.
+" - Currently, we do lexical highlighting only. It would be
+" nice to have more actual syntax checks, including
+" highlighting of wrong syntax.
+" - The additional syntax for the RT-Tester (pseudo-comments)
+" should be optional.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" case is significant to FDR:
+syn case match
+
+" Block comments in CSP are between {- and -}
+syn region cspComment start="{-" end="-}" contains=cspTodo
+" Single-line comments start with --
+syn region cspComment start="--" end="$" contains=cspTodo,cspOldRttComment,cspSdlRttComment keepend
+
+" Numbers:
+syn match cspNumber "\<\d\+\>"
+
+" Conditionals:
+syn keyword cspConditional if then else
+
+" Operators on processes:
+" -> ? : ! ' ; /\ \ [] |~| [> & [[..<-..]] ||| [|..|] || [..<->..] ; : @ |||
+syn match cspOperator "->"
+syn match cspOperator "/\\"
+syn match cspOperator "[^/]\\"lc=1
+syn match cspOperator "\[\]"
+syn match cspOperator "|\~|"
+syn match cspOperator "\[>"
+syn match cspOperator "\[\["
+syn match cspOperator "\]\]"
+syn match cspOperator "<-"
+syn match cspOperator "|||"
+syn match cspOperator "[^|]||[^|]"lc=1,me=e-1
+syn match cspOperator "[^|{\~]|[^|}\~]"lc=1,me=e-1
+syn match cspOperator "\[|"
+syn match cspOperator "|\]"
+syn match cspOperator "\[[^>]"me=e-1
+syn match cspOperator "\]"
+syn match cspOperator "<->"
+syn match cspOperator "[?:!';@]"
+syn match cspOperator "&"
+syn match cspOperator "\."
+
+" (not on processes:)
+" syn match cspDelimiter "{|"
+" syn match cspDelimiter "|}"
+" syn match cspDelimiter "{[^-|]"me=e-1
+" syn match cspDelimiter "[^-|]}"lc=1
+
+" Keywords:
+syn keyword cspKeyword length null head tail concat elem
+syn keyword cspKeyword union inter diff Union Inter member card
+syn keyword cspKeyword empty set Set Seq
+syn keyword cspKeyword true false and or not within let
+syn keyword cspKeyword nametype datatype diamond normal
+syn keyword cspKeyword sbisim tau_loop_factor model_compress
+syn keyword cspKeyword explicate
+syn match cspKeyword "transparent"
+syn keyword cspKeyword external chase prioritize
+syn keyword cspKeyword channel Events
+syn keyword cspKeyword extensions productions
+syn keyword cspKeyword Bool Int
+
+" Reserved keywords:
+syn keyword cspReserved attribute embed module subtype
+
+" Include:
+syn region cspInclude matchgroup=cspIncludeKeyword start="^include" end="$" keepend contains=cspIncludeArg
+syn region cspIncludeArg start='\s\+\"' end= '\"\s*' contained
+
+" Assertions:
+syn keyword cspAssert assert deterministic divergence free deadlock
+syn keyword cspAssert livelock
+syn match cspAssert "\[T="
+syn match cspAssert "\[F="
+syn match cspAssert "\[FD="
+syn match cspAssert "\[FD\]"
+syn match cspAssert "\[F\]"
+
+" Types and Sets
+" (first char a capital, later at least one lower case, no trailing underscore):
+syn match cspType "\<_*[A-Z][A-Z_0-9]*[a-z]\(\|[A-Za-z_0-9]*[A-Za-z0-9]\)\>"
+
+" Processes (all upper case, no trailing underscore):
+" (For identifiers that could be types or sets, too, this second rule set
+" wins.)
+syn match cspProcess "\<[A-Z_][A-Z_0-9]*[A-Z0-9]\>"
+syn match cspProcess "\<[A-Z_]\>"
+
+" reserved identifiers for tool output (ending in underscore):
+syn match cspReservedIdentifier "\<[A-Za-z_][A-Za-z_0-9]*_\>"
+
+" ToDo markers:
+syn match cspTodo "FIXME" contained
+syn match cspTodo "TODO" contained
+syn match cspTodo "!!!" contained
+
+" RT-Tester pseudo comments:
+" (The now obsolete syntax:)
+syn match cspOldRttComment "^--\$\$AM_UNDEF"lc=2 contained
+syn match cspOldRttComment "^--\$\$AM_ERROR"lc=2 contained
+syn match cspOldRttComment "^--\$\$AM_WARNING"lc=2 contained
+syn match cspOldRttComment "^--\$\$AM_SET_TIMER"lc=2 contained
+syn match cspOldRttComment "^--\$\$AM_RESET_TIMER"lc=2 contained
+syn match cspOldRttComment "^--\$\$AM_ELAPSED_TIMER"lc=2 contained
+syn match cspOldRttComment "^--\$\$AM_OUTPUT"lc=2 contained
+syn match cspOldRttComment "^--\$\$AM_INPUT"lc=2 contained
+" (The current syntax:)
+syn region cspRttPragma matchgroup=cspRttPragmaKeyword start="^pragma\s\+" end="\s*$" oneline keepend contains=cspRttPragmaArg,cspRttPragmaSdl
+syn keyword cspRttPragmaArg AM_ERROR AM_WARNING AM_SET_TIMER contained
+syn keyword cspRttPragmaArg AM_RESET_TIMER AM_ELAPSED_TIMER contained
+syn keyword cspRttPragmaArg AM_OUTPUT AM_INPUT AM_INTERNAL contained
+" the "SDL_MATCH" extension:
+syn region cspRttPragmaSdl matchgroup=cspRttPragmaKeyword start="SDL_MATCH\s\+" end="\s*$" contains=cspRttPragmaSdlArg contained
+syn keyword cspRttPragmaSdlArg TRANSLATE nextgroup=cspRttPragmaSdlTransName contained
+syn keyword cspRttPragmaSdlArg PARAM SKIP OPTIONAL CHOICE ARRAY nextgroup=cspRttPragmaSdlName contained
+syn match cspRttPragmaSdlName "\s*\S\+\s*" nextgroup=cspRttPragmaSdlTail contained
+syn region cspRttPragmaSdlTail start="" end="\s*$" contains=cspRttPragmaSdlTailArg contained
+syn keyword cspRttPragmaSdlTailArg SUBSET_USED DEFAULT_VALUE Present contained
+syn match cspRttPragmaSdlTransName "\s*\w\+\s*" nextgroup=cspRttPragmaSdlTransTail contained
+syn region cspRttPragmaSdlTransTail start="" end="\s*$" contains=cspRttPragmaSdlTransTailArg contained
+syn keyword cspRttPragmaSdlTransTailArg sizeof contained
+syn match cspRttPragmaSdlTransTailArg "\*" contained
+syn match cspRttPragmaSdlTransTailArg "(" contained
+syn match cspRttPragmaSdlTransTailArg ")" contained
+
+" temporary syntax extension for commented-out "pragma SDL_MATCH":
+syn match cspSdlRttComment "pragma\s\+SDL_MATCH\s\+" nextgroup=cspRttPragmaSdlArg contained
+
+syn sync lines=250
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later
+" (For vim version <=5.7, the command groups are defined in
+" $VIMRUNTIME/syntax/synload.vim )
+hi def link cspComment Comment
+hi def link cspNumber Number
+hi def link cspConditional Conditional
+hi def link cspOperator Delimiter
+hi def link cspKeyword Keyword
+hi def link cspReserved SpecialChar
+hi def link cspInclude Error
+hi def link cspIncludeKeyword Include
+hi def link cspIncludeArg Include
+hi def link cspAssert PreCondit
+hi def link cspType Type
+hi def link cspProcess Function
+hi def link cspTodo Todo
+hi def link cspOldRttComment Define
+hi def link cspRttPragmaKeyword Define
+hi def link cspSdlRttComment Define
+hi def link cspRttPragmaArg Define
+hi def link cspRttPragmaSdlArg Define
+hi def link cspRttPragmaSdlName Default
+hi def link cspRttPragmaSdlTailArg Define
+hi def link cspRttPragmaSdlTransName Default
+hi def link cspRttPragmaSdlTransTailArg Define
+hi def link cspReservedIdentifier Error
+" (Currently unused vim method: Debug)
+
+
+let b:current_syntax = "csp"
+
+" vim: ts=8
diff --git a/runtime/syntax/css.vim b/runtime/syntax/css.vim
new file mode 100644
index 0000000..564dc15
--- /dev/null
+++ b/runtime/syntax/css.vim
@@ -0,0 +1,665 @@
+" Vim syntax file
+" Language: Cascading Style Sheets
+" Previous Contributor List:
+" Jules Wang <w.jq0722@gmail.com>
+" Claudio Fleiner <claudio@fleiner.com>
+" Yeti (Add full CSS2, HTML4 support)
+" Nikolai Weibull (Add CSS2 support)
+" URL: https://github.com/vim-language-dept/css-syntax.vim
+" Maintainer: Jay Sitter <jay@jaysitter.com>
+" Last Change: 2021 Oct 20
+
+" quit when a syntax file was already loaded
+if !exists("main_syntax")
+ if exists("b:current_syntax")
+ finish
+ endif
+ let main_syntax = 'css'
+elseif exists("b:current_syntax") && b:current_syntax == "css"
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case ignore
+" Add dash to allowed keyword characters.
+syn iskeyword @,48-57,_,192-255,-
+
+" HTML4 tags
+syn keyword cssTagName abbr address area a b base
+syn keyword cssTagName bdo blockquote body br button
+syn keyword cssTagName caption cite code col colgroup dd del
+syn keyword cssTagName dfn div dl dt em fieldset form
+syn keyword cssTagName h1 h2 h3 h4 h5 h6 head hr html img i
+syn keyword cssTagName iframe input ins isindex kbd label legend li
+syn keyword cssTagName link map menu meta noscript ol optgroup
+syn keyword cssTagName option p param picture pre q s samp script small
+syn keyword cssTagName span strong sub sup tbody td
+syn keyword cssTagName textarea tfoot th thead title tr ul u var
+syn keyword cssTagName object svg
+syn match cssTagName /\<select\>\|\<style\>\|\<table\>/
+
+" 34 HTML5 tags
+syn keyword cssTagName article aside audio bdi canvas command data
+syn keyword cssTagName datalist details dialog embed figcaption figure footer
+syn keyword cssTagName header hgroup keygen main mark menuitem meter nav
+syn keyword cssTagName output progress rt rp ruby section
+syn keyword cssTagName source summary time track video wbr
+
+" Tags not supported in HTML5
+" acronym applet basefont big center dir
+" font frame frameset noframes strike tt
+
+syn match cssTagName "\*"
+
+" selectors
+syn match cssSelectorOp "[,>+~]"
+syn match cssSelectorOp2 "[~|^$*]\?=" contained
+syn region cssAttributeSelector matchgroup=cssSelectorOp start="\[" end="]" contains=cssUnicodeEscape,cssSelectorOp2,cssStringQ,cssStringQQ
+
+" .class and #id
+syn match cssClassName "\.-\=[A-Za-z_][A-Za-z0-9_-]*" contains=cssClassNameDot
+syn match cssClassNameDot contained '\.'
+
+try
+syn match cssIdentifier "#[A-Za-zÀ-ÿ_@][A-Za-zÀ-ÿ0-9_@-]*"
+catch /^.*/
+syn match cssIdentifier "#[A-Za-z_@][A-Za-z0-9_@-]*"
+endtry
+
+" digits
+syn match cssValueInteger contained "[-+]\=\d\+" contains=cssUnitDecorators
+syn match cssValueNumber contained "[-+]\=\d\+\(\.\d*\)\=" contains=cssUnitDecorators
+syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\|dpi\|dppx\|dpcm\|fr\|vw\|vh\|vmin\|vmax\|ch\)\>" contains=cssUnitDecorators
+syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=%" contains=cssUnitDecorators
+syn match cssValueAngle contained "[-+]\=\d\+\(\.\d*\)\=\(deg\|grad\|rad\)\>" contains=cssUnitDecorators
+syn match cssValueTime contained "+\=\d\+\(\.\d*\)\=\(ms\|s\)\>" contains=cssUnitDecorators
+syn match cssValueFrequency contained "+\=\d\+\(\.\d*\)\=\(Hz\|kHz\)\>" contains=cssUnitDecorators
+
+" The 16 basic color names
+syn keyword cssColor contained aqua black blue fuchsia gray green lime maroon navy olive purple red silver teal yellow
+
+" 130 more color names
+syn keyword cssColor contained aliceblue antiquewhite aquamarine azure
+syn keyword cssColor contained beige bisque blanchedalmond blueviolet brown burlywood
+syn keyword cssColor contained cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan
+syn match cssColor contained /\<dark\(blue\|cyan\|goldenrod\|gray\|green\|grey\|khaki\)\>/
+syn match cssColor contained /\<dark\(magenta\|olivegreen\|orange\|orchid\|red\|salmon\|seagreen\)\>/
+syn match cssColor contained /\<darkslate\(blue\|gray\|grey\)\>/
+syn match cssColor contained /\<dark\(turquoise\|violet\)\>/
+syn keyword cssColor contained deeppink deepskyblue dimgray dimgrey dodgerblue firebrick
+syn keyword cssColor contained floralwhite forestgreen gainsboro ghostwhite gold
+syn keyword cssColor contained goldenrod greenyellow grey honeydew hotpink
+syn keyword cssColor contained indianred indigo ivory khaki lavender lavenderblush lawngreen
+syn keyword cssColor contained lemonchiffon limegreen linen magenta
+syn match cssColor contained /\<light\(blue\|coral\|cyan\|goldenrodyellow\|gray\|green\)\>/
+syn match cssColor contained /\<light\(grey\|pink\|salmon\|seagreen\|skyblue\|yellow\)\>/
+syn match cssColor contained /\<light\(slategray\|slategrey\|steelblue\)\>/
+syn match cssColor contained /\<medium\(aquamarine\|blue\|orchid\|purple\|seagreen\)\>/
+syn match cssColor contained /\<medium\(slateblue\|springgreen\|turquoise\|violetred\)\>/
+syn keyword cssColor contained midnightblue mintcream mistyrose moccasin navajowhite
+syn keyword cssColor contained oldlace olivedrab orange orangered orchid
+syn match cssColor contained /\<pale\(goldenrod\|green\|turquoise\|violetred\)\>/
+syn keyword cssColor contained papayawhip peachpuff peru pink plum powderblue
+syn keyword cssColor contained rosybrown royalblue rebeccapurple saddlebrown salmon
+syn keyword cssColor contained sandybrown seagreen seashell sienna skyblue slateblue
+syn keyword cssColor contained slategray slategrey snow springgreen steelblue tan
+syn keyword cssColor contained thistle tomato turquoise violet wheat
+syn keyword cssColor contained whitesmoke yellowgreen
+
+" FIXME: These are actually case-insensitive too, but (a) specs recommend using
+" mixed-case (b) it's hard to highlight the word `Background' correctly in
+" all situations
+syn case match
+syn keyword cssColor contained ActiveBorder ActiveCaption AppWorkspace ButtonFace ButtonHighlight ButtonShadow ButtonText CaptionText GrayText Highlight HighlightText InactiveBorder InactiveCaption InactiveCaptionText InfoBackground InfoText Menu MenuText Scrollbar ThreeDDarkShadow ThreeDFace ThreeDHighlight ThreeDLightShadow ThreeDShadow Window WindowFrame WindowText Background
+syn case ignore
+
+syn match cssImportant contained "!\s*important\>"
+syn match cssCustomProp contained "\<--[a-zA-Z0-9-_]*\>"
+
+syn match cssColor contained "\<transparent\>"
+syn match cssColor contained "\<currentColor\>"
+syn match cssColor contained "\<white\>"
+syn match cssColor contained "#\x\{3,4\}\>" contains=cssUnitDecorators
+syn match cssColor contained "#\x\{6\}\>" contains=cssUnitDecorators
+syn match cssColor contained "#\x\{8\}\>" contains=cssUnitDecorators
+
+syn region cssURL contained matchgroup=cssFunctionName start="\<\(uri\|url\|local\|format\)\s*(" end=")" contains=cssStringQ,cssStringQQ oneline
+syn region cssMathGroup contained matchgroup=cssMathParens start="(" end=")" containedin=cssFunction,cssMathGroup contains=cssCustomProp,cssValue.*,cssFunction,cssColor,cssStringQ,cssStringQQ oneline
+syn region cssFunction contained matchgroup=cssFunctionName start="\<\(var\|calc\)\s*(" end=")" contains=cssCustomProp,cssValue.*,cssFunction,cssColor,cssStringQ,cssStringQQ oneline
+syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgb\|clip\|attr\|counter\|rect\|cubic-bezier\|steps\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma
+syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgba\|hsl\|hsla\|color-stop\|from\|to\)\s*(" end=")" oneline contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma,cssFunction
+syn region cssFunction contained matchgroup=cssFunctionName start="\<\(linear-\|radial-\|conic-\)\=\gradient\s*(" end=")" oneline contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunction,cssGradientAttr,cssFunctionComma
+syn region cssFunction contained matchgroup=cssFunctionName start="\<\(matrix\(3d\)\=\|scale\(3d\|X\|Y\|Z\)\=\|translate\(3d\|X\|Y\|Z\)\=\|skew\(X\|Y\)\=\|rotate\(3d\|X\|Y\|Z\)\=\|perspective\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssValueAngle,cssFunctionComma
+syn region cssFunction contained matchgroup=cssFunctionName start="\<\(blur\|brightness\|contrast\|drop-shadow\|grayscale\|hue-rotate\|invert\|opacity\|saturate\|sepia\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssValueAngle,cssFunctionComma
+syn keyword cssGradientAttr contained top bottom left right cover center middle ellipse at
+syn match cssFunctionComma contained ","
+
+" Common Prop and Attr
+syn keyword cssCommonAttr contained auto none inherit all default normal
+syn keyword cssCommonAttr contained top bottom center stretch hidden visible
+syn match cssCommonAttr contained "\<\(max-\|min-\|fit-\)content\>"
+"------------------------------------------------
+" CSS Animations
+" http://www.w3.org/TR/css3-animations/
+syn match cssAnimationProp contained "\<animation\(-\(delay\|direction\|duration\|fill-mode\|name\|play-state\|timing-function\|iteration-count\)\)\=\>"
+
+" animation-direction attributes
+syn keyword cssAnimationAttr contained alternate reverse
+syn match cssAnimationAttr contained "\<alternate-reverse\>"
+
+" animation-fill-mode attributes
+syn keyword cssAnimationAttr contained forwards backwards both
+
+" animation-play-state attributes
+syn keyword cssAnimationAttr contained running paused
+
+" animation-iteration-count attributes
+syn keyword cssAnimationAttr contained infinite
+"------------------------------------------------
+" CSS Backgrounds and Borders Module Level 3
+" http://www.w3.org/TR/css3-background/
+syn match cssBackgroundProp contained "\<background\(-\(attachment\|clip\|color\|image\|origin\|position\|repeat\|size\)\)\=\>"
+" background-attachment attributes
+syn keyword cssBackgroundAttr contained scroll fixed local
+
+" background-position attributes
+syn keyword cssBackgroundAttr contained left center right top bottom
+
+" background-repeat attributes
+syn match cssBackgroundAttr contained "\<no-repeat\>"
+syn match cssBackgroundAttr contained "\<repeat\(-[xy]\)\=\>"
+
+" background-size attributes
+syn keyword cssBackgroundAttr contained cover contain
+
+syn match cssBorderProp contained "\<border\(-\(top\|right\|bottom\|left\)\)\=\(-\(width\|color\|style\)\)\=\>"
+syn match cssBorderProp contained "\<border\(-\(top\|bottom\)-\(left\|right\)\)\=-radius\>"
+syn match cssBorderProp contained "\<border-image\(-\(outset\|repeat\|slice\|source\|width\)\)\=\>"
+syn match cssBorderProp contained "\<box-decoration-break\>"
+syn match cssBorderProp contained "\<box-shadow\>"
+
+" border-image attributes
+syn keyword cssBorderAttr contained stretch round fill
+
+" border-style attributes
+syn keyword cssBorderAttr contained dotted dashed solid double groove ridge inset outset
+
+" border-width attributes
+syn keyword cssBorderAttr contained thin thick medium
+
+" box-decoration-break attributes
+syn keyword cssBorderAttr contained clone slice
+"------------------------------------------------
+
+syn match cssBoxProp contained "\<padding\(-\(top\|right\|bottom\|left\)\)\=\>"
+syn match cssBoxProp contained "\<margin\(-\(top\|right\|bottom\|left\)\)\=\>"
+syn match cssBoxProp contained "\<overflow\(-\(x\|y\|style\)\)\=\>"
+syn match cssBoxProp contained "\<rotation\(-point\)\=\>"
+syn keyword cssBoxAttr contained visible hidden scroll auto
+syn match cssBoxAttr contained "\<no-\(display\|content\)\>"
+
+syn keyword cssCascadeProp contained all
+syn keyword cssCascadeAttr contained initial unset revert
+
+syn keyword cssColorProp contained opacity
+syn match cssColorProp contained "\<color-profile\>"
+syn match cssColorProp contained "\<rendering-intent\>"
+
+
+syn match cssDimensionProp contained "\<\(min\|max\)-\(width\|height\)\>"
+syn keyword cssDimensionProp contained height
+syn keyword cssDimensionProp contained width
+
+" CSS Flexible Box Layout Module Level 1
+" http://www.w3.org/TR/css3-flexbox/
+" CSS Box Alignment Module Level 3
+" http://www.w3.org/TR/css-align-3/
+syn match cssFlexibleBoxProp contained "\<flex\(-\(direction\|wrap\|flow\|grow\|shrink\|basis\)\)\=\>"
+syn match cssFlexibleBoxProp contained "\<\(align\|justify\)\(-\(items\|self\|content\)\)\=\>"
+syn keyword cssFlexibleBoxProp contained order
+
+syn match cssFlexibleBoxAttr contained "\<\(row\|column\|wrap\)\(-reverse\)\=\>"
+syn keyword cssFlexibleBoxAttr contained nowrap stretch baseline center
+syn match cssFlexibleBoxAttr contained "\<flex\(-\(start\|end\)\)\=\>"
+syn match cssFlexibleBoxAttr contained "\<space\(-\(between\|around\|evenly\)\)\=\>"
+
+" CSS Fonts Module Level 3
+" http://www.w3.org/TR/css-fonts-3/
+syn match cssFontProp contained "\<font\(-\(family\|\|feature-settings\|kerning\|language-override\|size\(-adjust\)\=\|stretch\|style\|synthesis\|variant\(-\(alternates\|caps\|east-asian\|ligatures\|numeric\|position\)\)\=\|weight\)\)\=\>"
+
+" font attributes
+syn keyword cssFontAttr contained icon menu caption
+syn match cssFontAttr contained "\<message-box\>"
+syn match cssFontAttr contained "\<status-bar\>"
+syn keyword cssFontAttr contained larger smaller
+syn match cssFontAttr contained "\<\(x\{1,2\}-\)\=\(large\|small\)\>"
+syn match cssFontAttr contained "\<small-\(caps\|caption\)\>"
+" font-family attributes
+syn keyword cssFontAttr contained sans-serif serif cursive fantasy monospace
+" font-feature-settings attributes
+syn keyword cssFontAttr contained on off
+" font-stretch attributes
+syn match cssFontAttr contained "\<\(\(ultra\|extra\|semi\)-\)\=\(condensed\|expanded\)\>"
+" font-style attributes
+syn keyword cssFontAttr contained italic oblique
+" font-synthesis attributes
+syn keyword cssFontAttr contained weight style
+" font-weight attributes
+syn keyword cssFontAttr contained bold bolder lighter
+" TODO: font-variant-* attributes
+"------------------------------------------------
+
+" Webkit specific property/attributes
+syn match cssFontProp contained "\<font-smooth\>"
+syn match cssFontAttr contained "\<\(subpixel-\)\=\antialiased\>"
+
+
+" CSS Multi-column Layout Module
+" http://www.w3.org/TR/css3-multicol/
+syn match cssMultiColumnProp contained "\<break-\(after\|before\|inside\)\>"
+syn match cssMultiColumnProp contained "\<column-\(count\|fill\|gap\|rule\(-\(color\|style\|width\)\)\=\|span\|width\)\>"
+syn keyword cssMultiColumnProp contained columns
+syn keyword cssMultiColumnAttr contained balance medium
+syn keyword cssMultiColumnAttr contained always left right page column
+syn match cssMultiColumnAttr contained "\<avoid\(-\(page\|column\)\)\=\>"
+
+" http://www.w3.org/TR/css3-break/#page-break
+syn match cssMultiColumnProp contained "\<page\(-break-\(before\|after\|inside\)\)\=\>"
+
+" http://www.w3.org/TR/SVG11/interact.html
+syn match cssInteractProp contained "\<pointer-events\>"
+syn match cssInteractAttr contained "\<\(visible\)\=\(Painted\|Fill\|Stroke\)\=\>"
+
+" TODO find following items in w3c docs.
+syn keyword cssGeneratedContentProp contained quotes crop
+syn match cssGeneratedContentProp contained "\<counter-\(reset\|increment\)\>"
+syn match cssGeneratedContentProp contained "\<move-to\>"
+syn match cssGeneratedContentProp contained "\<page-policy\>"
+syn match cssGeneratedContentAttr contained "\<\(no-\)\=\(open\|close\)-quote\>"
+
+" https://www.w3.org/TR/css-grid-1/
+syn match cssGridProp contained "\<grid\>"
+syn match cssGridProp contained "\<grid-template\(-\(columns\|rows\|areas\)\)\=\>"
+syn match cssGridProp contained "\<grid-\(column\|row\)\(-\(start\|end\|gap\)\)\=\>"
+syn match cssGridProp contained "\<grid-\(area\|gap\)\>"
+syn match cssGridProp contained "\<gap\>"
+syn match cssGridProp contained "\<grid-auto-\(flow\|rows\|columns\)\>"
+
+syn match cssHyerlinkProp contained "\<target\(-\(name\|new\|position\)\)\=\>"
+
+syn match cssListProp contained "\<list-style\(-\(type\|position\|image\)\)\=\>"
+syn match cssListAttr contained "\<\(lower\|upper\)-\(roman\|alpha\|greek\|latin\)\>"
+syn match cssListAttr contained "\<\(hiragana\|katakana\)\(-iroha\)\=\>"
+syn match cssListAttr contained "\<\(decimal\(-leading-zero\)\=\|cjk-ideographic\)\>"
+syn keyword cssListAttr contained disc circle square hebrew armenian georgian
+syn keyword cssListAttr contained inside outside
+
+" object-fit https://www.w3.org/TR/css-images-3/#the-object-fit
+syn match cssObjectProp contained "\<object-\(fit\|position\)\>"
+syn keyword cssObjectAttr contained fill contain cover scale-down
+
+syn keyword cssPositioningProp contained bottom clear clip display float left
+syn keyword cssPositioningProp contained position right top visibility
+syn match cssPositioningProp contained "\<z-index\>"
+syn keyword cssPositioningAttr contained block compact grid
+syn match cssPositioningAttr contained "\<table\(-\(row-group\|\(header\|footer\)-group\|row\|column\(-group\)\=\|cell\|caption\)\)\=\>"
+syn keyword cssPositioningAttr contained left right both
+syn match cssPositioningAttr contained "\<list-item\>"
+syn match cssPositioningAttr contained "\<inline\(-\(block\|box\|table\|grid\|flex\)\)\=\>"
+syn match cssPositioningAttr contained "\<flow\(-root\)\=\>"
+syn keyword cssPositioningAttr contained static relative absolute fixed subgrid sticky
+
+syn keyword cssPrintAttr contained landscape portrait crop cross always
+
+syn match cssTableProp contained "\<\(caption-side\|table-layout\|border-collapse\|border-spacing\|empty-cells\)\>"
+syn keyword cssTableAttr contained fixed collapse separate show hide once always
+
+
+syn keyword cssTextProp contained color direction hyphens
+syn match cssTextProp "\<\(\(word\|letter\)-spacing\|text\(-\(decoration\|transform\|align\|index\|shadow\)\)\=\|vertical-align\|unicode-bidi\|line-height\)\>"
+syn match cssTextProp contained "\<text-\(justify\|outline\|warp\|align-last\|size-adjust\|rendering\|stroke\|indent\)\>"
+syn match cssTextProp contained "\<\(word\|line\)-break\|\(overflow\|word\)-wrap\>"
+syn match cssTextProp contained "\<white-space\>"
+syn match cssTextProp contained "\<hanging-punctuation\>"
+syn match cssTextProp contained "\<tab-size\>"
+syn match cssTextProp contained "\<punctuation-trim\>"
+syn match cssTextAttr contained "\<line-through\>"
+syn match cssTextAttr contained "\<\(text-\)\=\(top\|bottom\)\>"
+syn keyword cssTextAttr contained ltr rtl embed nowrap
+syn keyword cssTextAttr contained underline overline blink sub super middle
+syn keyword cssTextAttr contained capitalize uppercase lowercase
+syn keyword cssTextAttr contained justify baseline sub super
+syn keyword cssTextAttr contained optimizeLegibility optimizeSpeed geometricPrecision
+syn match cssTextAttr contained "\<pre\(-\(line\|wrap\)\)\=\>"
+syn match cssTextAttr contained "\<\(allow\|force\)-end\>"
+syn keyword cssTextAttr contained start end adjacent
+syn match cssTextAttr contained "\<inter-\(word\|ideographic\|cluster\)\>"
+syn keyword cssTextAttr contained distribute kashida first last
+syn keyword cssTextAttr contained clip ellipsis unrestricted suppress
+syn match cssTextAttr contained "\<break-all\>"
+syn match cssTextAttr contained "\<break-word\>"
+syn keyword cssTextAttr contained manual
+syn match cssTextAttr contained "\<bidi-override\>"
+
+syn match cssTransformProp contained "\<transform\(-\(origin\|style\)\)\=\>"
+syn match cssTransformProp contained "\<perspective\(-origin\)\=\>"
+syn match cssTransformProp contained "\<backface-visibility\>"
+
+" CSS Transitions
+" http://www.w3.org/TR/css3-transitions/
+syn match cssTransitionProp contained "\<transition\(-\(delay\|duration\|property\|timing-function\)\)\=\>"
+
+" transition-time-function attributes
+syn match cssTransitionAttr contained "\<linear\(-gradient\)\@!\>"
+syn match cssTransitionAttr contained "\<ease\(-\(in-out\|out\|in\)\)\=\>"
+syn match cssTransitionAttr contained "\<step\(-start\|-end\)\=\>"
+"------------------------------------------------
+" CSS Basic User Interface Module Level 3 (CSS3 UI)
+" http://www.w3.org/TR/css3-ui/
+syn match cssUIProp contained "\<box-sizing\>"
+syn match cssUIAttr contained "\<\(content\|padding\|border\)\(-box\)\=\>"
+
+syn keyword cssUIProp contained cursor
+syn match cssUIAttr contained "\<\(\([ns]\=[ew]\=\)\|col\|row\|nesw\|nwse\)-resize\>"
+syn keyword cssUIAttr contained crosshair help move pointer alias copy
+syn keyword cssUIAttr contained progress wait text cell move
+syn match cssUIAttr contained "\<context-menu\>"
+syn match cssUIAttr contained "\<no-drop\>"
+syn match cssUIAttr contained "\<not-allowed\>"
+syn match cssUIAttr contained "\<all-scroll\>"
+syn match cssUIAttr contained "\<\(vertical-\)\=text\>"
+syn match cssUIAttr contained "\<zoom\(-in\|-out\)\=\>"
+
+syn match cssUIProp contained "\<ime-mode\>"
+syn keyword cssUIAttr contained active inactive disabled
+
+syn match cssUIProp contained "\<nav-\(down\|index\|left\|right\|up\)\=\>"
+syn match cssUIProp contained "\<outline\(-\(width\|style\|color\|offset\)\)\=\>"
+syn keyword cssUIAttr contained invert
+
+syn keyword cssUIProp contained icon resize
+syn keyword cssUIAttr contained both horizontal vertical
+
+syn match cssUIProp contained "\<text-overflow\>"
+syn keyword cssUIAttr contained clip ellipsis
+
+syn match cssUIProp contained "\<image-rendering\>"
+syn keyword cssUIAttr contained pixellated
+syn match cssUIAttr contained "\<crisp-edges\>"
+
+"------------------------------------------------
+" Webkit/iOS specific attributes
+syn match cssUIAttr contained '\<preserve-3d\>'
+" IE specific attributes
+syn match cssIEUIAttr contained '\<bicubic\>'
+
+" Webkit/iOS specific properties
+syn match cssUIProp contained '\<\(tap-highlight-color\|user-select\|touch-callout\)\>'
+" IE specific properties
+syn match cssIEUIProp contained '\<\(interpolation-mode\|zoom\|filter\)\>'
+
+" Webkit/Firebox specific properties/attributes
+syn keyword cssUIProp contained appearance
+syn keyword cssUIAttr contained window button field icon document menu
+
+
+syn match cssAuralProp contained "\<\(pause\|cue\)\(-\(before\|after\)\)\=\>"
+syn match cssAuralProp contained "\<\(play-during\|speech-rate\|voice-family\|pitch\(-range\)\=\|speak\(-\(punctuation\|numeral\|header\)\)\=\)\>"
+syn keyword cssAuralProp contained volume during azimuth elevation stress richness
+syn match cssAuralAttr contained "\<\(x-\)\=\(soft\|loud\)\>"
+syn keyword cssAuralAttr contained silent
+syn match cssAuralAttr contained "\<spell-out\>"
+syn keyword cssAuralAttr contained non mix
+syn match cssAuralAttr contained "\<\(left\|right\)-side\>"
+syn match cssAuralAttr contained "\<\(far\|center\)-\(left\|center\|right\)\>"
+syn keyword cssAuralAttr contained leftwards rightwards behind
+syn keyword cssAuralAttr contained below level above lower higher
+syn match cssAuralAttr contained "\<\(x-\)\=\(slow\|fast\|low\|high\)\>"
+syn keyword cssAuralAttr contained faster slower
+syn keyword cssAuralAttr contained male female child code digits continuous
+
+" mobile text
+syn match cssMobileTextProp contained "\<text-size-adjust\>"
+
+syn keyword cssMediaProp contained width height orientation scan
+syn keyword cssMediaProp contained any-hover any-pointer color-gamut grid hover
+syn keyword cssMediaProp contained overflow-block overflow-inline pointer update
+syn match cssMediaProp contained /\<\(\(max\|min\)-\)\=\(\(device\)-\)\=aspect-ratio\>/
+syn match cssMediaProp contained /\<\(\(max\|min\)-\)\=device-pixel-ratio\>/
+syn match cssMediaProp contained /\<\(\(max\|min\)-\)\=device-\(height\|width\)\>/
+syn match cssMediaProp contained /\<\(\(max\|min\)-\)\=\(height\|width\|resolution\|monochrome\|color\(-index\)\=\)\>/
+syn keyword cssMediaAttr contained portrait landscape progressive interlace
+syn keyword cssMediaAttr contained coarse fast fine hover infinite p3 paged
+syn keyword cssMediaAttr contained rec2020 scroll slow srgb
+syn match cssKeyFrameProp contained /\(\d\+\(\.\d\+\)\?%\|\(\<from\|to\>\)\)/ nextgroup=cssDefinition
+syn match cssPageMarginProp /@\(\(top\|left\|right\|bottom\)-\(left\|center\|right\|middle\|bottom\)\)\(-corner\)\=/ contained nextgroup=cssDefinition
+syn keyword cssPageProp contained content size
+syn keyword cssPageProp contained orphans widows
+syn keyword cssFontDescriptorProp contained src
+syn match cssFontDescriptorProp contained "\<unicode-range\>"
+" unicode-range attributes
+syn match cssFontDescriptorAttr contained "U+[0-9A-Fa-f?]\+"
+syn match cssFontDescriptorAttr contained "U+\x\+-\x\+"
+
+syn match cssBraces contained "[{}]"
+syn match cssError contained "{@<>"
+syn region cssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=cssTagName,cssAttributeSelector,cssClassName,cssIdentifier,cssAtRule,cssAttrRegion,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssCustomProp,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition,cssHacks,cssNoise fold
+syn match cssBraceError "}"
+syn match cssAttrComma ","
+
+" Pseudo class
+" https://www.w3.org/TR/selectors-4/
+syn match cssPseudoClass ":[A-Za-z0-9_-]*" contains=cssNoise,cssPseudoClassId,cssUnicodeEscape,cssVendor,cssPseudoClassFn
+syn keyword cssPseudoClassId contained link visited active hover before after left right
+syn keyword cssPseudoClassId contained root empty target enabled disabled checked invalid
+syn match cssPseudoClassId contained "\<first-\(line\|letter\)\>"
+syn match cssPseudoClassId contained "\<\(first\|last\|only\)-\(of-type\|child\)\>"
+syn match cssPseudoClassId contained "\<focus\(-within\|-visible\)\=\>"
+syn region cssPseudoClassFn contained matchgroup=cssFunctionName start="\<\(not\|is\|lang\|\(nth\|nth-last\)-\(of-type\|child\)\)(" end=")" contains=cssStringQ,cssStringQQ,cssTagName,cssAttributeSelector,cssClassName,cssIdentifier
+" ------------------------------------
+" Vendor specific properties
+syn match cssPseudoClassId contained "\<selection\>"
+syn match cssPseudoClassId contained "\<\(input-\)\=placeholder\>"
+
+" Misc highlight groups
+syntax match cssUnitDecorators /\(#\|-\|+\|%\|mm\|cm\|in\|pt\|pc\|em\|ex\|px\|ch\|rem\|vh\|vw\|vmin\|vmax\|dpi\|dppx\|dpcm\|Hz\|kHz\|s\|ms\|deg\|grad\|rad\)/ contained
+syntax match cssNoise contained /\(:\|;\|\/\)/
+
+" Comment
+syn region cssComment start="/\*" end="\*/" contains=@Spell fold
+
+syn match cssUnicodeEscape "\\\x\{1,6}\s\?"
+syn match cssSpecialCharQQ +\\\\\|\\"+ contained
+syn match cssSpecialCharQ +\\\\\|\\'+ contained
+syn region cssStringQQ start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cssUnicodeEscape,cssSpecialCharQQ
+syn region cssStringQ start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=cssUnicodeEscape,cssSpecialCharQ
+
+" Vendor Prefix
+syn match cssVendor contained "-\(webkit\|moz\|o\|ms\)-"
+
+" Various CSS Hack characters
+" In earlier versions of IE (6 and 7), one can prefix property names
+" with a _ or * to isolate those definitions to particular versions of IE
+" This is purely decorative and therefore we assign to the same highlight
+" group to cssVendor, for more information:
+" http://www.paulirish.com/2009/browser-specific-css-hacks/
+syn match cssHacks contained /\(_\|*\)/
+
+" Attr Enhance
+" Some keywords are both Prop and Attr, so we have to handle them
+" cssPseudoClassId is hidden by cssAttrRegion, so we add it here. see #69
+syn region cssAttrRegion start=/:/ end=/\ze\(;\|)\|}\|{\)/ contained contains=cssPseudoClassId,css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssAttrComma,cssNoise
+
+" Hack for transition
+" 'transition' has Props after ':'.
+syn region cssAttrRegion start=/transition\s*:/ end=/\ze\(;\|)\|}\)/ contained contains=css.*Prop,css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssAttrComma,cssNoise
+
+syn match cssAtKeyword /@\(font-face\|media\|keyframes\|import\|charset\|namespace\|page\|supports\)/
+
+syn keyword cssAtRuleLogical only not and contained
+
+" @media
+" Reference: http://www.w3.org/TR/css3-mediaqueries/
+syn region cssAtRule start=/@media\>/ end=/\ze{/ skipwhite skipnl matchgroup=cssAtKeyword contains=cssMediaProp,cssValueLength,cssAtRuleLogical,cssValueInteger,cssMediaAttr,cssVendor,cssMediaType,cssComment,cssCustomProp,cssFunctionName nextgroup=cssDefinition
+syn keyword cssMediaType contained screen print aural braille embossed handheld projection tty tv speech all contained
+
+" @page
+" http://www.w3.org/TR/css3-page/
+syn region cssAtRule start=/@page\>/ end=/\ze{/ skipwhite skipnl matchgroup=cssAtKeyword contains=cssPagePseudo,cssComment nextgroup=cssDefinition
+syn match cssPagePseudo /:\(left\|right\|first\|blank\)/ contained skipwhite skipnl
+" @keyframe
+" http://www.w3.org/TR/css3-animations/#keyframes
+syn region cssAtRule start=/@\(-[a-z]\+-\)\=keyframes\>/ end=/\ze{/ skipwhite skipnl matchgroup=cssAtKeyword contains=cssVendor,cssComment nextgroup=cssDefinition
+
+syn region cssAtRule start=/@import\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssAtKeyword,cssURL,cssMediaProp,cssValueLength,cssAtRuleLogical,cssValueInteger,cssMediaAttr,cssMediaType
+syn region cssAtRule start=/@charset\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssAtKeyword
+syn region cssAtRule start=/@namespace\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssAtKeyword
+
+" @supports
+" https://www.w3.org/TR/css3-conditional/#at-supports
+syn region cssAtRule start=/@supports\>/ end=/\ze{/ skipwhite skipnl contains=cssAtRuleLogical,cssAttrRegion,css.*Prop,cssValue.*,cssVendor,cssAtKeyword,cssComment nextgroup=cssDefinition
+
+
+if main_syntax == "css"
+ syn sync minlines=10
+endif
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link cssComment Comment
+hi def link cssVendor Comment
+hi def link cssHacks Comment
+hi def link cssTagName Statement
+hi def link cssDeprecated Error
+hi def link cssSelectorOp Special
+hi def link cssSelectorOp2 Special
+hi def link cssAttrComma Special
+
+hi def link cssAnimationProp cssProp
+hi def link cssBackgroundProp cssProp
+hi def link cssBorderProp cssProp
+hi def link cssBoxProp cssProp
+hi def link cssCascadeProp cssProp
+hi def link cssColorProp cssProp
+hi def link cssContentForPagedMediaProp cssProp
+hi def link cssDimensionProp cssProp
+hi def link cssFlexibleBoxProp cssProp
+hi def link cssFontProp cssProp
+hi def link cssGeneratedContentProp cssProp
+hi def link cssGridProp cssProp
+hi def link cssHyerlinkProp cssProp
+hi def link cssInteractProp cssProp
+hi def link cssLineboxProp cssProp
+hi def link cssListProp cssProp
+hi def link cssMarqueeProp cssProp
+hi def link cssMultiColumnProp cssProp
+hi def link cssPagedMediaProp cssProp
+hi def link cssPositioningProp cssProp
+hi def link cssObjectProp cssProp
+hi def link cssPrintProp cssProp
+hi def link cssRubyProp cssProp
+hi def link cssSpeechProp cssProp
+hi def link cssTableProp cssProp
+hi def link cssTextProp cssProp
+hi def link cssTransformProp cssProp
+hi def link cssTransitionProp cssProp
+hi def link cssUIProp cssProp
+hi def link cssIEUIProp cssProp
+hi def link cssAuralProp cssProp
+hi def link cssRenderProp cssProp
+hi def link cssMobileTextProp cssProp
+
+hi def link cssAnimationAttr cssAttr
+hi def link cssBackgroundAttr cssAttr
+hi def link cssBorderAttr cssAttr
+hi def link cssBoxAttr cssAttr
+hi def link cssContentForPagedMediaAttr cssAttr
+hi def link cssDimensionAttr cssAttr
+hi def link cssFlexibleBoxAttr cssAttr
+hi def link cssFontAttr cssAttr
+hi def link cssGeneratedContentAttr cssAttr
+hi def link cssGridAttr cssAttr
+hi def link cssHyerlinkAttr cssAttr
+hi def link cssInteractAttr cssAttr
+hi def link cssLineboxAttr cssAttr
+hi def link cssListAttr cssAttr
+hi def link cssMarginAttr cssAttr
+hi def link cssMarqueeAttr cssAttr
+hi def link cssMultiColumnAttr cssAttr
+hi def link cssPaddingAttr cssAttr
+hi def link cssPagedMediaAttr cssAttr
+hi def link cssPositioningAttr cssAttr
+hi def link cssObjectAttr cssAttr
+hi def link cssGradientAttr cssAttr
+hi def link cssPrintAttr cssAttr
+hi def link cssRubyAttr cssAttr
+hi def link cssSpeechAttr cssAttr
+hi def link cssTableAttr cssAttr
+hi def link cssTextAttr cssAttr
+hi def link cssTransformAttr cssAttr
+hi def link cssTransitionAttr cssAttr
+hi def link cssUIAttr cssAttr
+hi def link cssIEUIAttr cssAttr
+hi def link cssAuralAttr cssAttr
+hi def link cssRenderAttr cssAttr
+hi def link cssCascadeAttr cssAttr
+hi def link cssCommonAttr cssAttr
+
+hi def link cssPseudoClassId PreProc
+hi def link cssPseudoClassLang Constant
+hi def link cssValueLength Number
+hi def link cssValueInteger Number
+hi def link cssValueNumber Number
+hi def link cssValueAngle Number
+hi def link cssValueTime Number
+hi def link cssValueFrequency Number
+hi def link cssFunction Constant
+hi def link cssURL String
+hi def link cssFunctionName Function
+hi def link cssFunctionComma Function
+hi def link cssColor Constant
+hi def link cssIdentifier Function
+hi def link cssAtRule Include
+hi def link cssAtKeyword PreProc
+hi def link cssImportant Special
+hi def link cssCustomProp Special
+hi def link cssBraces Function
+hi def link cssBraceError Error
+hi def link cssError Error
+hi def link cssUnicodeEscape Special
+hi def link cssStringQQ String
+hi def link cssStringQ String
+hi def link cssAttributeSelector String
+hi def link cssMediaType Special
+hi def link cssMediaComma Normal
+hi def link cssAtRuleLogical Statement
+hi def link cssMediaProp cssProp
+hi def link cssMediaAttr cssAttr
+hi def link cssPagePseudo PreProc
+hi def link cssPageMarginProp cssAtKeyword
+hi def link cssPageProp cssProp
+hi def link cssKeyFrameProp Constant
+hi def link cssFontDescriptor Special
+hi def link cssFontDescriptorProp cssProp
+hi def link cssFontDescriptorAttr cssAttr
+hi def link cssUnicodeRange Constant
+hi def link cssClassName Function
+hi def link cssClassNameDot Function
+hi def link cssProp StorageClass
+hi def link cssAttr Constant
+hi def link cssUnitDecorators Number
+hi def link cssNoise Noise
+
+let b:current_syntax = "css"
+
+if main_syntax == 'css'
+ unlet main_syntax
+endif
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8
diff --git a/runtime/syntax/cterm.vim b/runtime/syntax/cterm.vim
new file mode 100644
index 0000000..1b6cb28
--- /dev/null
+++ b/runtime/syntax/cterm.vim
@@ -0,0 +1,177 @@
+" Vim syntax file
+" Language: Century Term Command Script
+" Maintainer: Sean M. McKee <mckee@misslink.net>
+" Last Change: 2002 Apr 13
+" Version Info: @(#)cterm.vim 1.7 97/12/15 09:23:14
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+"FUNCTIONS
+syn keyword ctermFunction abort addcr addlf answer at attr batch baud
+syn keyword ctermFunction break call capture cd cdelay charset cls color
+syn keyword ctermFunction combase config commect copy cread
+syn keyword ctermFunction creadint devprefix dialer dialog dimint
+syn keyword ctermFunction dimlog dimstr display dtimeout dwait edit
+syn keyword ctermFunction editor emulate erase escloop fcreate
+syn keyword ctermFunction fflush fillchar flags flush fopen fread
+syn keyword ctermFunction freadln fseek fwrite fwriteln get hangup
+syn keyword ctermFunction help hiwait htime ignore init itime
+syn keyword ctermFunction keyboard lchar ldelay learn lockfile
+syn keyword ctermFunction locktime log login logout lowait
+syn keyword ctermFunction lsend ltime memlist menu mkdir mode
+syn keyword ctermFunction modem netdialog netport noerror pages parity
+syn keyword ctermFunction pause portlist printer protocol quit rcv
+syn keyword ctermFunction read readint readn redial release
+syn keyword ctermFunction remote rename restart retries return
+syn keyword ctermFunction rmdir rtime run runx scrollback send
+syn keyword ctermFunction session set setcap setcolor setkey
+syn keyword ctermFunction setsym setvar startserver status
+syn keyword ctermFunction stime stopbits stopserver tdelay
+syn keyword ctermFunction terminal time trans type usend version
+syn keyword ctermFunction vi vidblink vidcard vidout vidunder wait
+syn keyword ctermFunction wildsize wclose wopen wordlen wru wruchar
+syn keyword ctermFunction xfer xmit xprot
+syn match ctermFunction "?"
+"syn keyword ctermFunction comment remark
+
+"END FUNCTIONS
+"INTEGER FUNCTIONS
+syn keyword ctermIntFunction asc atod eval filedate filemode filesize ftell
+syn keyword ctermIntFunction len termbits opsys pos sum time val mdmstat
+"END INTEGER FUNCTIONS
+
+"STRING FUNCTIONS
+syn keyword ctermStrFunction cdate ctime chr chrdy chrin comin getenv
+syn keyword ctermStrFunction gethomedir left midstr right str tolower
+syn keyword ctermStrFunction toupper uniq comst exists feof hascolor
+
+"END STRING FUNCTIONS
+
+"PREDEFINED TERM VARIABLES R/W
+syn keyword ctermPreVarRW f _escloop _filename _kermiteol _obufsiz
+syn keyword ctermPreVarRW _port _rcvsync _cbaud _reval _turnchar
+syn keyword ctermPreVarRW _txblksiz _txwindow _vmin _vtime _cparity
+syn keyword ctermPreVarRW _cnumber false t true _cwordlen _cstopbits
+syn keyword ctermPreVarRW _cmode _cemulate _cxprot _clogin _clogout
+syn keyword ctermPreVarRW _cstartsrv _cstopsrv _ccmdfile _cwru
+syn keyword ctermPreVarRW _cprotocol _captfile _cremark _combufsiz
+syn keyword ctermPreVarRW logfile
+"END PREDEFINED TERM VARIABLES R/W
+
+"PREDEFINED TERM VARIABLES R/O
+syn keyword ctermPreVarRO _1 _2 _3 _4 _5 _6 _7 _8 _9 _cursess
+syn keyword ctermPreVarRO _lockfile _baud _errno _retval _sernum
+syn keyword ctermPreVarRO _timeout _row _col _version
+"END PREDEFINED TERM VARIABLES R/O
+
+syn keyword ctermOperator not mod eq ne gt le lt ge xor and or shr not shl
+
+"SYMBOLS
+syn match CtermSymbols "|"
+"syn keyword ctermOperators + - * / % = != > < >= <= & | ^ ! << >>
+"END SYMBOLS
+
+"STATEMENT
+syn keyword ctermStatement off
+syn keyword ctermStatement disk overwrite append spool none
+syn keyword ctermStatement echo view wrap
+"END STATEMENT
+
+"TYPE
+"syn keyword ctermType
+"END TYPE
+
+"USERLIB FUNCTIONS
+"syn keyword ctermLibFunc
+"END USERLIB FUNCTIONS
+
+"LABEL
+syn keyword ctermLabel case default
+"END LABEL
+
+"CONDITIONAL
+syn keyword ctermConditional on endon
+syn keyword ctermConditional proc endproc
+syn keyword ctermConditional for in do endfor
+syn keyword ctermConditional if else elseif endif iferror
+syn keyword ctermConditional switch endswitch
+syn keyword ctermConditional repeat until
+"END CONDITIONAL
+
+"REPEAT
+syn keyword ctermRepeat while
+"END REPEAT
+
+" Function arguments (eg $1 $2 $3)
+syn match ctermFuncArg "\$[1-9]"
+
+syn keyword ctermTodo contained TODO
+
+syn match ctermNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"
+"floating point number, with dot, optional exponent
+syn match ctermNumber "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, starting with a dot, optional exponent
+syn match ctermNumber "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match ctermNumber "\<\d\+e[-+]\=\d\+[fl]\=\>"
+"hex number
+syn match ctermNumber "0x[0-9a-f]\+\(u\=l\=\|lu\)\>"
+
+syn match ctermComment "![^=].*$" contains=ctermTodo
+syn match ctermComment "!$"
+syn match ctermComment "\*.*$" contains=ctermTodo
+syn region ctermComment start="comment" end="$" contains=ctermTodo
+syn region ctermComment start="remark" end="$" contains=ctermTodo
+
+syn region ctermVar start="\$(" end=")"
+
+" String and Character contstants
+" Highlight special characters (those which have a backslash) differently
+syn match ctermSpecial contained "\\\d\d\d\|\\."
+syn match ctermSpecial contained "\^."
+syn region ctermString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=ctermSpecial,ctermVar,ctermSymbols
+syn match ctermCharacter "'[^\\]'"
+syn match ctermSpecialCharacter "'\\.'"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link ctermStatement Statement
+hi def link ctermFunction Statement
+hi def link ctermStrFunction Statement
+hi def link ctermIntFunction Statement
+hi def link ctermLabel Statement
+hi def link ctermConditional Statement
+hi def link ctermRepeat Statement
+hi def link ctermLibFunc UserDefFunc
+hi def link ctermType Type
+hi def link ctermFuncArg PreCondit
+
+hi def link ctermPreVarRO PreCondit
+hi def link ctermPreVarRW PreConditBold
+hi def link ctermVar Type
+
+hi def link ctermComment Comment
+
+hi def link ctermCharacter SpecialChar
+hi def link ctermSpecial Special
+hi def link ctermSpecialCharacter SpecialChar
+hi def link ctermSymbols Special
+hi def link ctermString String
+hi def link ctermTodo Todo
+hi def link ctermOperator Statement
+hi def link ctermNumber Number
+
+" redefine the colors
+"hi PreConditBold term=bold ctermfg=1 cterm=bold guifg=Purple gui=bold
+"hi Special term=bold ctermfg=6 guifg=SlateBlue gui=underline
+
+
+let b:current_syntax = "cterm"
+
+" vim: ts=8
diff --git a/runtime/syntax/ctrlh.vim b/runtime/syntax/ctrlh.vim
new file mode 100644
index 0000000..b4bf347
--- /dev/null
+++ b/runtime/syntax/ctrlh.vim
@@ -0,0 +1,23 @@
+" Vim syntax file
+" Language: CTRL-H (e.g., ASCII manpages)
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last Change: 2005 Jun 20
+
+" Existing syntax is kept, this file can be used as an addition
+
+" Recognize underlined text: _^Hx
+syntax match CtrlHUnderline /_\b./ contains=CtrlHHide
+
+" Recognize bold text: x^Hx
+syntax match CtrlHBold /\(.\)\b\1/ contains=CtrlHHide
+
+" Hide the CTRL-H (backspace)
+syntax match CtrlHHide /.\b/ contained
+
+" Define the default highlighting.
+" Only used when an item doesn't have highlighting yet
+hi def link CtrlHHide Ignore
+hi def CtrlHUnderline term=underline cterm=underline gui=underline
+hi def CtrlHBold term=bold cterm=bold gui=bold
+
+" vim: ts=8
diff --git a/runtime/syntax/cucumber.vim b/runtime/syntax/cucumber.vim
new file mode 100644
index 0000000..f1ef299
--- /dev/null
+++ b/runtime/syntax/cucumber.vim
@@ -0,0 +1,142 @@
+" Vim syntax file
+" Language: Cucumber
+" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
+" Filenames: *.feature
+" Last Change: 2013 May 30
+
+if exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+syn case match
+syn sync minlines=20
+
+let g:cucumber_languages = {
+ \"en": {"and": "And\\>", "background": "Background\\>", "but": "But\\>", "examples": "Scenarios\\>\\|Examples\\>", "feature": "Business Need\\>\\|Feature\\>\\|Ability\\>", "given": "Given\\>", "scenario": "Scenario\\>", "scenario_outline": "Scenario Template\\>\\|Scenario Outline\\>", "then": "Then\\>", "when": "When\\>"},
+ \"ar": {"and": "\\%u0648\\>", "background": "\\%u0627\\%u0644\\%u062e\\%u0644\\%u0641\\%u064a\\%u0629\\>", "but": "\\%u0644\\%u0643\\%u0646\\>", "examples": "\\%u0627\\%u0645\\%u062b\\%u0644\\%u0629\\>", "feature": "\\%u062e\\%u0627\\%u0635\\%u064a\\%u0629\\>", "given": "\\%u0628\\%u0641\\%u0631\\%u0636\\>", "scenario": "\\%u0633\\%u064a\\%u0646\\%u0627\\%u0631\\%u064a\\%u0648\\>", "scenario_outline": "\\%u0633\\%u064a\\%u0646\\%u0627\\%u0631\\%u064a\\%u0648 \\%u0645\\%u062e\\%u0637\\%u0637\\>", "then": "\\%u0627\\%u0630\\%u0627\\%u064b\\>\\|\\%u062b\\%u0645\\>", "when": "\\%u0639\\%u0646\\%u062f\\%u0645\\%u0627\\>\\|\\%u0645\\%u062a\\%u0649\\>"},
+ \"bg": {"and": "\\%u0418\\>", "background": "\\%u041f\\%u0440\\%u0435\\%u0434\\%u0438\\%u0441\\%u0442\\%u043e\\%u0440\\%u0438\\%u044f\\>", "but": "\\%u041d\\%u043e\\>", "examples": "\\%u041f\\%u0440\\%u0438\\%u043c\\%u0435\\%u0440\\%u0438\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u043e\\%u043d\\%u0430\\%u043b\\%u043d\\%u043e\\%u0441\\%u0442\\>", "given": "\\%u0414\\%u0430\\%u0434\\%u0435\\%u043d\\%u043e\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "scenario_outline": "\\%u0420\\%u0430\\%u043c\\%u043a\\%u0430 \\%u043d\\%u0430 \\%u0441\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "then": "\\%u0422\\%u043e\\>", "when": "\\%u041a\\%u043e\\%u0433\\%u0430\\%u0442\\%u043e\\>"},
+ \"bm": {"and": "Dan\\>", "background": "Latar Belakang\\>", "but": "Tetapi\\>", "examples": "Contoh \\>", "feature": "Fungsi\\>", "given": "Bagi\\>", "scenario": "Senario\\>", "scenario_outline": "Menggariskan Senario \\>", "then": "Kemudian\\>", "when": "Apabila\\>"},
+ \"ca": {"and": "I\\>", "background": "Antecedents\\>\\|Rerefons\\>", "but": "Per\\%u00f2\\>", "examples": "Exemples\\>", "feature": "Caracter\\%u00edstica\\>\\|Funcionalitat\\>", "given": "At\\%u00e8s\\>\\|Donada\\>\\|Donat\\>\\|Atesa\\>", "scenario": "Escenari\\>", "scenario_outline": "Esquema de l'escenari\\>", "then": "Aleshores\\>\\|Cal\\>", "when": "Quan\\>"},
+ \"cs": {"and": "A tak\\%u00e9\\>\\|A\\>", "background": "Pozad\\%u00ed\\>\\|Kontext\\>", "but": "Ale\\>", "examples": "P\\%u0159\\%u00edklady\\>", "feature": "Po\\%u017eadavek\\>", "given": "Za p\\%u0159edpokladu\\>\\|Pokud\\>", "scenario": "Sc\\%u00e9n\\%u00e1\\%u0159\\>", "scenario_outline": "N\\%u00e1\\%u010drt Sc\\%u00e9n\\%u00e1\\%u0159e\\>\\|Osnova sc\\%u00e9n\\%u00e1\\%u0159e\\>", "then": "Pak\\>", "when": "Kdy\\%u017e\\>"},
+ \"cy-GB": {"and": "A\\>", "background": "Cefndir\\>", "but": "Ond\\>", "examples": "Enghreifftiau\\>", "feature": "Arwedd\\>", "given": "Anrhegedig a\\>", "scenario": "Scenario\\>", "scenario_outline": "Scenario Amlinellol\\>", "then": "Yna\\>", "when": "Pryd\\>"},
+ \"da": {"and": "Og\\>", "background": "Baggrund\\>", "but": "Men\\>", "examples": "Eksempler\\>", "feature": "Egenskab\\>", "given": "Givet\\>", "scenario": "Scenarie\\>", "scenario_outline": "Abstrakt Scenario\\>", "then": "S\\%u00e5\\>", "when": "N\\%u00e5r\\>"},
+ \"de": {"and": "Und\\>", "background": "Grundlage\\>", "but": "Aber\\>", "examples": "Beispiele\\>", "feature": "Funktionalit\\%u00e4t\\>", "given": "Gegeben sei\\>\\|Angenommen\\>", "scenario": "Szenario\\>", "scenario_outline": "Szenariogrundriss\\>", "then": "Dann\\>", "when": "Wenn\\>"},
+ \"el": {"and": "\\%u039a\\%u03b1\\%u03b9\\>", "background": "\\%u03a5\\%u03c0\\%u03cc\\%u03b2\\%u03b1\\%u03b8\\%u03c1\\%u03bf\\>", "but": "\\%u0391\\%u03bb\\%u03bb\\%u03ac\\>", "examples": "\\%u03a0\\%u03b1\\%u03c1\\%u03b1\\%u03b4\\%u03b5\\%u03af\\%u03b3\\%u03bc\\%u03b1\\%u03c4\\%u03b1\\>\\|\\%u03a3\\%u03b5\\%u03bd\\%u03ac\\%u03c1\\%u03b9\\%u03b1\\>", "feature": "\\%u0394\\%u03c5\\%u03bd\\%u03b1\\%u03c4\\%u03cc\\%u03c4\\%u03b7\\%u03c4\\%u03b1\\>\\|\\%u039b\\%u03b5\\%u03b9\\%u03c4\\%u03bf\\%u03c5\\%u03c1\\%u03b3\\%u03af\\%u03b1\\>", "given": "\\%u0394\\%u03b5\\%u03b4\\%u03bf\\%u03bc\\%u03ad\\%u03bd\\%u03bf\\%u03c5 \\%u03cc\\%u03c4\\%u03b9\\>\\|\\%u0394\\%u03b5\\%u03b4\\%u03bf\\%u03bc\\%u03ad\\%u03bd\\%u03bf\\%u03c5\\>", "scenario": "\\%u03a3\\%u03b5\\%u03bd\\%u03ac\\%u03c1\\%u03b9\\%u03bf\\>", "scenario_outline": "\\%u03a0\\%u03b5\\%u03c1\\%u03b9\\%u03b3\\%u03c1\\%u03b1\\%u03c6\\%u03ae \\%u03a3\\%u03b5\\%u03bd\\%u03b1\\%u03c1\\%u03af\\%u03bf\\%u03c5\\>", "then": "\\%u03a4\\%u03cc\\%u03c4\\%u03b5\\>", "when": "\\%u038c\\%u03c4\\%u03b1\\%u03bd\\>"},
+ \"en-Scouse": {"and": "An\\>", "background": "Dis is what went down\\>", "but": "Buh\\>", "examples": "Examples\\>", "feature": "Feature\\>", "given": "Youse know when youse got\\>\\|Givun\\>", "scenario": "The thing of it is\\>", "scenario_outline": "Wharrimean is\\>", "then": "Den youse gotta\\>\\|Dun\\>", "when": "Youse know like when\\>\\|Wun\\>"},
+ \"en-au": {"and": "Too right\\>", "background": "First off\\>", "but": "Yeah nah\\>", "examples": "You'll wanna\\>", "feature": "Pretty much\\>", "given": "Y'know\\>", "scenario": "Awww, look mate\\>", "scenario_outline": "Reckon it's like\\>", "then": "But at the end of the day I reckon\\>", "when": "It's just unbelievable\\>"},
+ \"en-lol": {"and": "AN\\>", "background": "B4\\>", "but": "BUT\\>", "examples": "EXAMPLZ\\>", "feature": "OH HAI\\>", "given": "I CAN HAZ\\>", "scenario": "MISHUN\\>", "scenario_outline": "MISHUN SRSLY\\>", "then": "DEN\\>", "when": "WEN\\>"},
+ \"en-old": {"and": "Ond\\>\\|7\\>", "background": "\\%u00c6r\\>\\|Aer\\>", "but": "Ac\\>", "examples": "Se \\%u00f0e\\>\\|Se \\%u00fee\\>\\|Se the\\>", "feature": "Hw\\%u00e6t\\>\\|Hwaet\\>", "given": "\\%u00d0urh\\>\\|\\%u00deurh\\>\\|Thurh\\>", "scenario": "Swa\\>", "scenario_outline": "Swa hw\\%u00e6r swa\\>\\|Swa hwaer swa\\>", "then": "\\%u00d0a \\%u00f0e\\>\\|\\%u00dea \\%u00fee\\>\\|\\%u00dea\\>\\|\\%u00d0a\\>\\|Tha the\\>\\|Tha\\>", "when": "\\%u00d0a\\>\\|\\%u00dea\\>\\|Tha\\>"},
+ \"en-pirate": {"and": "Aye\\>", "background": "Yo-ho-ho\\>", "but": "Avast!\\>", "examples": "Dead men tell no tales\\>", "feature": "Ahoy matey!\\>", "given": "Gangway!\\>", "scenario": "Heave to\\>", "scenario_outline": "Shiver me timbers\\>", "then": "Let go and haul\\>", "when": "Blimey!\\>"},
+ \"en-tx": {"and": "And y'all\\>", "background": "Background\\>", "but": "But y'all\\>", "examples": "Examples\\>", "feature": "Feature\\>", "given": "Given y'all\\>", "scenario": "Scenario\\>", "scenario_outline": "All y'all\\>", "then": "Then y'all\\>", "when": "When y'all\\>"},
+ \"eo": {"and": "Kaj\\>", "background": "Fono\\>", "but": "Sed\\>", "examples": "Ekzemploj\\>", "feature": "Trajto\\>", "given": "Donita\\%u0135o\\>", "scenario": "Scenaro\\>", "scenario_outline": "Konturo de la scenaro\\>", "then": "Do\\>", "when": "Se\\>"},
+ \"es": {"and": "Y\\>", "background": "Antecedentes\\>", "but": "Pero\\>", "examples": "Ejemplos\\>", "feature": "Caracter\\%u00edstica\\>", "given": "Dadas\\>\\|Dados\\>\\|Dada\\>\\|Dado\\>", "scenario": "Escenario\\>", "scenario_outline": "Esquema del escenario\\>", "then": "Entonces\\>", "when": "Cuando\\>"},
+ \"et": {"and": "Ja\\>", "background": "Taust\\>", "but": "Kuid\\>", "examples": "Juhtumid\\>", "feature": "Omadus\\>", "given": "Eeldades\\>", "scenario": "Stsenaarium\\>", "scenario_outline": "Raamstsenaarium\\>", "then": "Siis\\>", "when": "Kui\\>"},
+ \"fa": {"and": "\\%u0648\\>", "background": "\\%u0632\\%u0645\\%u06cc\\%u0646\\%u0647\\>", "but": "\\%u0627\\%u0645\\%u0627\\>", "examples": "\\%u0646\\%u0645\\%u0648\\%u0646\\%u0647 \\%u0647\\%u0627\\>", "feature": "\\%u0648\\%u0650\\%u06cc\\%u0698\\%u06af\\%u06cc\\>", "given": "\\%u0628\\%u0627 \\%u0641\\%u0631\\%u0636\\>", "scenario": "\\%u0633\\%u0646\\%u0627\\%u0631\\%u06cc\\%u0648\\>", "scenario_outline": "\\%u0627\\%u0644\\%u06af\\%u0648\\%u06cc \\%u0633\\%u0646\\%u0627\\%u0631\\%u06cc\\%u0648\\>", "then": "\\%u0622\\%u0646\\%u06af\\%u0627\\%u0647\\>", "when": "\\%u0647\\%u0646\\%u06af\\%u0627\\%u0645\\%u06cc\\>"},
+ \"fi": {"and": "Ja\\>", "background": "Tausta\\>", "but": "Mutta\\>", "examples": "Tapaukset\\>", "feature": "Ominaisuus\\>", "given": "Oletetaan\\>", "scenario": "Tapaus\\>", "scenario_outline": "Tapausaihio\\>", "then": "Niin\\>", "when": "Kun\\>"},
+ \"fr": {"and": "Et\\>", "background": "Contexte\\>", "but": "Mais\\>", "examples": "Exemples\\>", "feature": "Fonctionnalit\\%u00e9\\>", "given": "\\%u00c9tant donn\\%u00e9es\\>\\|\\%u00c9tant donn\\%u00e9s\\>\\|\\%u00c9tant donn\\%u00e9e\\>\\|\\%u00c9tant donn\\%u00e9\\>\\|Etant donn\\%u00e9es\\>\\|Etant donn\\%u00e9s\\>\\|Etant donn\\%u00e9e\\>\\|Etant donn\\%u00e9\\>\\|Soit\\>", "scenario": "Sc\\%u00e9nario\\>", "scenario_outline": "Plan du sc\\%u00e9nario\\>\\|Plan du Sc\\%u00e9nario\\>", "then": "Alors\\>", "when": "Lorsqu'\\|Lorsque\\>\\|Quand\\>"},
+ \"gl": {"and": "E\\>", "background": "Contexto\\>", "but": "Mais\\>\\|Pero\\>", "examples": "Exemplos\\>", "feature": "Caracter\\%u00edstica\\>", "given": "Dadas\\>\\|Dados\\>\\|Dada\\>\\|Dado\\>", "scenario": "Escenario\\>", "scenario_outline": "Esbozo do escenario\\>", "then": "Ent\\%u00f3n\\>\\|Logo\\>", "when": "Cando\\>"},
+ \"he": {"and": "\\%u05d5\\%u05d2\\%u05dd\\>", "background": "\\%u05e8\\%u05e7\\%u05e2\\>", "but": "\\%u05d0\\%u05d1\\%u05dc\\>", "examples": "\\%u05d3\\%u05d5\\%u05d2\\%u05de\\%u05d0\\%u05d5\\%u05ea\\>", "feature": "\\%u05ea\\%u05db\\%u05d5\\%u05e0\\%u05d4\\>", "given": "\\%u05d1\\%u05d4\\%u05d9\\%u05e0\\%u05ea\\%u05df\\>", "scenario": "\\%u05ea\\%u05e8\\%u05d7\\%u05d9\\%u05e9\\>", "scenario_outline": "\\%u05ea\\%u05d1\\%u05e0\\%u05d9\\%u05ea \\%u05ea\\%u05e8\\%u05d7\\%u05d9\\%u05e9\\>", "then": "\\%u05d0\\%u05d6\\%u05d9\\>\\|\\%u05d0\\%u05d6\\>", "when": "\\%u05db\\%u05d0\\%u05e9\\%u05e8\\>"},
+ \"hi": {"and": "\\%u0924\\%u0925\\%u093e\\>\\|\\%u0914\\%u0930\\>", "background": "\\%u092a\\%u0943\\%u0937\\%u094d\\%u0920\\%u092d\\%u0942\\%u092e\\%u093f\\>", "but": "\\%u092a\\%u0930\\>", "examples": "\\%u0909\\%u0926\\%u093e\\%u0939\\%u0930\\%u0923\\>", "feature": "\\%u0930\\%u0942\\%u092a \\%u0932\\%u0947\\%u0916\\>", "given": "\\%u091a\\%u0942\\%u0902\\%u0915\\%u093f\\>\\|\\%u092f\\%u0926\\%u093f\\>\\|\\%u0905\\%u0917\\%u0930\\>", "scenario": "\\%u092a\\%u0930\\%u093f\\%u0926\\%u0943\\%u0936\\%u094d\\%u092f\\>", "scenario_outline": "\\%u092a\\%u0930\\%u093f\\%u0926\\%u0943\\%u0936\\%u094d\\%u092f \\%u0930\\%u0942\\%u092a\\%u0930\\%u0947\\%u0916\\%u093e\\>", "then": "\\%u0924\\%u092c\\>", "when": "\\%u091c\\%u092c\\>"},
+ \"hr": {"and": "I\\>", "background": "Pozadina\\>", "but": "Ali\\>", "examples": "Scenariji\\>\\|Primjeri\\>", "feature": "Mogu\\%u0107nost\\>\\|Mogucnost\\>\\|Osobina\\>", "given": "Zadano\\>\\|Zadani\\>\\|Zadan\\>", "scenario": "Scenarij\\>", "scenario_outline": "Koncept\\>\\|Skica\\>", "then": "Onda\\>", "when": "Kada\\>\\|Kad\\>"},
+ \"hu": {"and": "\\%u00c9s\\>", "background": "H\\%u00e1tt\\%u00e9r\\>", "but": "De\\>", "examples": "P\\%u00e9ld\\%u00e1k\\>", "feature": "Jellemz\\%u0151\\>", "given": "Amennyiben\\>\\|Adott\\>", "scenario": "Forgat\\%u00f3k\\%u00f6nyv\\>", "scenario_outline": "Forgat\\%u00f3k\\%u00f6nyv v\\%u00e1zlat\\>", "then": "Akkor\\>", "when": "Amikor\\>\\|Majd\\>\\|Ha\\>"},
+ \"id": {"and": "Dan\\>", "background": "Dasar\\>", "but": "Tapi\\>", "examples": "Contoh\\>", "feature": "Fitur\\>", "given": "Dengan\\>", "scenario": "Skenario\\>", "scenario_outline": "Skenario konsep\\>", "then": "Maka\\>", "when": "Ketika\\>"},
+ \"is": {"and": "Og\\>", "background": "Bakgrunnur\\>", "but": "En\\>", "examples": "Atbur\\%u00f0ar\\%u00e1sir\\>\\|D\\%u00e6mi\\>", "feature": "Eiginleiki\\>", "given": "Ef\\>", "scenario": "Atbur\\%u00f0ar\\%u00e1s\\>", "scenario_outline": "L\\%u00fdsing Atbur\\%u00f0ar\\%u00e1sar\\>\\|L\\%u00fdsing D\\%u00e6ma\\>", "then": "\\%u00de\\%u00e1\\>", "when": "\\%u00deegar\\>"},
+ \"it": {"and": "E\\>", "background": "Contesto\\>", "but": "Ma\\>", "examples": "Esempi\\>", "feature": "Funzionalit\\%u00e0\\>", "given": "Dato\\>\\|Data\\>\\|Dati\\>\\|Date\\>", "scenario": "Scenario\\>", "scenario_outline": "Schema dello scenario\\>", "then": "Allora\\>", "when": "Quando\\>"},
+ \"ja": {"and": "\\%u304b\\%u3064", "background": "\\%u80cc\\%u666f\\>", "but": "\\%u3057\\%u304b\\%u3057\\|\\%u305f\\%u3060\\%u3057\\|\\%u4f46\\%u3057", "examples": "\\%u30b5\\%u30f3\\%u30d7\\%u30eb\\>\\|\\%u4f8b\\>", "feature": "\\%u30d5\\%u30a3\\%u30fc\\%u30c1\\%u30e3\\>\\|\\%u6a5f\\%u80fd\\>", "given": "\\%u524d\\%u63d0", "scenario": "\\%u30b7\\%u30ca\\%u30ea\\%u30aa\\>", "scenario_outline": "\\%u30b7\\%u30ca\\%u30ea\\%u30aa\\%u30a2\\%u30a6\\%u30c8\\%u30e9\\%u30a4\\%u30f3\\>\\|\\%u30b7\\%u30ca\\%u30ea\\%u30aa\\%u30c6\\%u30f3\\%u30d7\\%u30ec\\%u30fc\\%u30c8\\>\\|\\%u30b7\\%u30ca\\%u30ea\\%u30aa\\%u30c6\\%u30f3\\%u30d7\\%u30ec\\>\\|\\%u30c6\\%u30f3\\%u30d7\\%u30ec\\>", "then": "\\%u306a\\%u3089\\%u3070", "when": "\\%u3082\\%u3057"},
+ \"ko": {"and": "\\%uadf8\\%ub9ac\\%uace0", "background": "\\%ubc30\\%uacbd\\>", "but": "\\%ud558\\%uc9c0\\%ub9cc\\|\\%ub2e8", "examples": "\\%uc608\\>", "feature": "\\%uae30\\%ub2a5\\>", "given": "\\%uc870\\%uac74\\|\\%uba3c\\%uc800", "scenario": "\\%uc2dc\\%ub098\\%ub9ac\\%uc624\\>", "scenario_outline": "\\%uc2dc\\%ub098\\%ub9ac\\%uc624 \\%uac1c\\%uc694\\>", "then": "\\%uadf8\\%ub7ec\\%uba74", "when": "\\%ub9cc\\%uc77c\\|\\%ub9cc\\%uc57d"},
+ \"lt": {"and": "Ir\\>", "background": "Kontekstas\\>", "but": "Bet\\>", "examples": "Pavyzd\\%u017eiai\\>\\|Scenarijai\\>\\|Variantai\\>", "feature": "Savyb\\%u0117\\>", "given": "Duota\\>", "scenario": "Scenarijus\\>", "scenario_outline": "Scenarijaus \\%u0161ablonas\\>", "then": "Tada\\>", "when": "Kai\\>"},
+ \"lu": {"and": "an\\>\\|a\\>", "background": "Hannergrond\\>", "but": "m\\%u00e4\\>\\|awer\\>", "examples": "Beispiller\\>", "feature": "Funktionalit\\%u00e9it\\>", "given": "ugeholl\\>", "scenario": "Szenario\\>", "scenario_outline": "Plang vum Szenario\\>", "then": "dann\\>", "when": "wann\\>"},
+ \"lv": {"and": "Un\\>", "background": "Situ\\%u0101cija\\>\\|Konteksts\\>", "but": "Bet\\>", "examples": "Piem\\%u0113ri\\>\\|Paraugs\\>", "feature": "Funkcionalit\\%u0101te\\>\\|F\\%u012b\\%u010da\\>", "given": "Kad\\>", "scenario": "Scen\\%u0101rijs\\>", "scenario_outline": "Scen\\%u0101rijs p\\%u0113c parauga\\>", "then": "Tad\\>", "when": "Ja\\>"},
+ \"nl": {"and": "En\\>", "background": "Achtergrond\\>", "but": "Maar\\>", "examples": "Voorbeelden\\>", "feature": "Functionaliteit\\>", "given": "Gegeven\\>\\|Stel\\>", "scenario": "Scenario\\>", "scenario_outline": "Abstract Scenario\\>", "then": "Dan\\>", "when": "Als\\>"},
+ \"no": {"and": "Og\\>", "background": "Bakgrunn\\>", "but": "Men\\>", "examples": "Eksempler\\>", "feature": "Egenskap\\>", "given": "Gitt\\>", "scenario": "Scenario\\>", "scenario_outline": "Abstrakt Scenario\\>\\|Scenariomal\\>", "then": "S\\%u00e5\\>", "when": "N\\%u00e5r\\>"},
+ \"pl": {"and": "Oraz\\>\\|I\\>", "background": "Za\\%u0142o\\%u017cenia\\>", "but": "Ale\\>", "examples": "Przyk\\%u0142ady\\>", "feature": "W\\%u0142a\\%u015bciwo\\%u015b\\%u0107\\>\\|Potrzeba biznesowa\\>\\|Funkcja\\>\\|Aspekt\\>", "given": "Zak\\%u0142adaj\\%u0105c\\>\\|Maj\\%u0105c\\>", "scenario": "Scenariusz\\>", "scenario_outline": "Szablon scenariusza\\>", "then": "Wtedy\\>", "when": "Je\\%u017celi\\>\\|Je\\%u015bli\\>\\|Kiedy\\>\\|Gdy\\>"},
+ \"pt": {"and": "E\\>", "background": "Cen\\%u00e1rio de Fundo\\>\\|Cenario de Fundo\\>\\|Contexto\\>\\|Fundo\\>", "but": "Mas\\>", "examples": "Cen\\%u00e1rios\\>\\|Exemplos\\>\\|Cenarios\\>", "feature": "Caracter\\%u00edstica\\>\\|Funcionalidade\\>\\|Caracteristica\\>", "given": "Dadas\\>\\|Dados\\>\\|Dada\\>\\|Dado\\>", "scenario": "Cen\\%u00e1rio\\>\\|Cenario\\>", "scenario_outline": "Delinea\\%u00e7\\%u00e3o do Cen\\%u00e1rio\\>\\|Esquema do Cen\\%u00e1rio\\>\\|Delineacao do Cenario\\>\\|Esquema do Cenario\\>", "then": "Ent\\%u00e3o\\>\\|Entao\\>", "when": "Quando\\>"},
+ \"ro": {"and": "\\%u015ei\\>\\|\\%u0218i\\>\\|Si\\>", "background": "Context\\>", "but": "Dar\\>", "examples": "Exemple\\>", "feature": "Func\\%u0163ionalitate\\>\\|Func\\%u021bionalitate\\>\\|Functionalitate\\>", "given": "Da\\%u0163i fiind\\>\\|Da\\%u021bi fiind\\>\\|Dati fiind\\>\\|Date fiind\\>\\|Dat fiind\\>", "scenario": "Scenariu\\>", "scenario_outline": "Structur\\%u0103 scenariu\\>\\|Structura scenariu\\>", "then": "Atunci\\>", "when": "C\\%u00e2nd\\>\\|Cand\\>"},
+ \"ru": {"and": "\\%u041a \\%u0442\\%u043e\\%u043c\\%u0443 \\%u0436\\%u0435\\>\\|\\%u0422\\%u0430\\%u043a\\%u0436\\%u0435\\>\\|\\%u0418\\>", "background": "\\%u041f\\%u0440\\%u0435\\%u0434\\%u044b\\%u0441\\%u0442\\%u043e\\%u0440\\%u0438\\%u044f\\>\\|\\%u041a\\%u043e\\%u043d\\%u0442\\%u0435\\%u043a\\%u0441\\%u0442\\>", "but": "\\%u041d\\%u043e\\>\\|\\%u0410\\>", "examples": "\\%u041f\\%u0440\\%u0438\\%u043c\\%u0435\\%u0440\\%u044b\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u043e\\%u043d\\%u0430\\%u043b\\>\\|\\%u0421\\%u0432\\%u043e\\%u0439\\%u0441\\%u0442\\%u0432\\%u043e\\>\\|\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u044f\\>", "given": "\\%u0414\\%u043e\\%u043f\\%u0443\\%u0441\\%u0442\\%u0438\\%u043c\\>\\|\\%u041f\\%u0443\\%u0441\\%u0442\\%u044c\\>\\|\\%u0414\\%u0430\\%u043d\\%u043e\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "scenario_outline": "\\%u0421\\%u0442\\%u0440\\%u0443\\%u043a\\%u0442\\%u0443\\%u0440\\%u0430 \\%u0441\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u044f\\>", "then": "\\%u0422\\%u043e\\%u0433\\%u0434\\%u0430\\>\\|\\%u0422\\%u043e\\>", "when": "\\%u041a\\%u043e\\%u0433\\%u0434\\%u0430\\>\\|\\%u0415\\%u0441\\%u043b\\%u0438\\>"},
+ \"sk": {"and": "A z\\%u00e1rove\\%u0148\\>\\|A taktie\\%u017e\\>\\|A tie\\%u017e\\>\\|A\\>", "background": "Pozadie\\>", "but": "Ale\\>", "examples": "Pr\\%u00edklady\\>", "feature": "Po\\%u017eiadavka\\>\\|Vlastnos\\%u0165\\>\\|Funkcia\\>", "given": "Za predpokladu\\>\\|Pokia\\%u013e\\>", "scenario": "Scen\\%u00e1r\\>", "scenario_outline": "N\\%u00e1\\%u010drt Scen\\%u00e1ru\\>\\|N\\%u00e1\\%u010drt Scen\\%u00e1ra\\>\\|Osnova Scen\\%u00e1ra\\>", "then": "Potom\\>\\|Tak\\>", "when": "Ke\\%u010f\\>\\|Ak\\>"},
+ \"sr-Cyrl": {"and": "\\%u0418\\>", "background": "\\%u041a\\%u043e\\%u043d\\%u0442\\%u0435\\%u043a\\%u0441\\%u0442\\>\\|\\%u041f\\%u043e\\%u0437\\%u0430\\%u0434\\%u0438\\%u043d\\%u0430\\>\\|\\%u041e\\%u0441\\%u043d\\%u043e\\%u0432\\%u0430\\>", "but": "\\%u0410\\%u043b\\%u0438\\>", "examples": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0458\\%u0438\\>\\|\\%u041f\\%u0440\\%u0438\\%u043c\\%u0435\\%u0440\\%u0438\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u043e\\%u043d\\%u0430\\%u043b\\%u043d\\%u043e\\%u0441\\%u0442\\>\\|\\%u041c\\%u043e\\%u0433\\%u0443\\%u045b\\%u043d\\%u043e\\%u0441\\%u0442\\>\\|\\%u041e\\%u0441\\%u043e\\%u0431\\%u0438\\%u043d\\%u0430\\>", "given": "\\%u0417\\%u0430\\%u0434\\%u0430\\%u0442\\%u043e\\>\\|\\%u0417\\%u0430\\%u0434\\%u0430\\%u0442\\%u0435\\>\\|\\%u0417\\%u0430\\%u0434\\%u0430\\%u0442\\%u0438\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u043e\\>\\|\\%u041f\\%u0440\\%u0438\\%u043c\\%u0435\\%u0440\\>", "scenario_outline": "\\%u0421\\%u0442\\%u0440\\%u0443\\%u043a\\%u0442\\%u0443\\%u0440\\%u0430 \\%u0441\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0458\\%u0430\\>\\|\\%u041a\\%u043e\\%u043d\\%u0446\\%u0435\\%u043f\\%u0442\\>\\|\\%u0421\\%u043a\\%u0438\\%u0446\\%u0430\\>", "then": "\\%u041e\\%u043d\\%u0434\\%u0430\\>", "when": "\\%u041a\\%u0430\\%u0434\\%u0430\\>\\|\\%u041a\\%u0430\\%u0434\\>"},
+ \"sr-Latn": {"and": "I\\>", "background": "Kontekst\\>\\|Pozadina\\>\\|Osnova\\>", "but": "Ali\\>", "examples": "Scenariji\\>\\|Primeri\\>", "feature": "Mogu\\%u0107nost\\>\\|Funkcionalnost\\>\\|Mogucnost\\>\\|Osobina\\>", "given": "Zadato\\>\\|Zadate\\>\\|Zatati\\>", "scenario": "Scenario\\>\\|Primer\\>", "scenario_outline": "Struktura scenarija\\>\\|Koncept\\>\\|Skica\\>", "then": "Onda\\>", "when": "Kada\\>\\|Kad\\>"},
+ \"sv": {"and": "Och\\>", "background": "Bakgrund\\>", "but": "Men\\>", "examples": "Exempel\\>", "feature": "Egenskap\\>", "given": "Givet\\>", "scenario": "Scenario\\>", "scenario_outline": "Abstrakt Scenario\\>\\|Scenariomall\\>", "then": "S\\%u00e5\\>", "when": "N\\%u00e4r\\>"},
+ \"th": {"and": "\\%u0e41\\%u0e25\\%u0e30\\>", "background": "\\%u0e41\\%u0e19\\%u0e27\\%u0e04\\%u0e34\\%u0e14\\>", "but": "\\%u0e41\\%u0e15\\%u0e48\\>", "examples": "\\%u0e0a\\%u0e38\\%u0e14\\%u0e02\\%u0e2d\\%u0e07\\%u0e40\\%u0e2b\\%u0e15\\%u0e38\\%u0e01\\%u0e32\\%u0e23\\%u0e13\\%u0e4c\\>\\|\\%u0e0a\\%u0e38\\%u0e14\\%u0e02\\%u0e2d\\%u0e07\\%u0e15\\%u0e31\\%u0e27\\%u0e2d\\%u0e22\\%u0e48\\%u0e32\\%u0e07\\>", "feature": "\\%u0e04\\%u0e27\\%u0e32\\%u0e21\\%u0e15\\%u0e49\\%u0e2d\\%u0e07\\%u0e01\\%u0e32\\%u0e23\\%u0e17\\%u0e32\\%u0e07\\%u0e18\\%u0e38\\%u0e23\\%u0e01\\%u0e34\\%u0e08\\>\\|\\%u0e04\\%u0e27\\%u0e32\\%u0e21\\%u0e2a\\%u0e32\\%u0e21\\%u0e32\\%u0e23\\%u0e16\\>\\|\\%u0e42\\%u0e04\\%u0e23\\%u0e07\\%u0e2b\\%u0e25\\%u0e31\\%u0e01\\>", "given": "\\%u0e01\\%u0e33\\%u0e2b\\%u0e19\\%u0e14\\%u0e43\\%u0e2b\\%u0e49\\>", "scenario": "\\%u0e40\\%u0e2b\\%u0e15\\%u0e38\\%u0e01\\%u0e32\\%u0e23\\%u0e13\\%u0e4c\\>", "scenario_outline": "\\%u0e42\\%u0e04\\%u0e23\\%u0e07\\%u0e2a\\%u0e23\\%u0e49\\%u0e32\\%u0e07\\%u0e02\\%u0e2d\\%u0e07\\%u0e40\\%u0e2b\\%u0e15\\%u0e38\\%u0e01\\%u0e32\\%u0e23\\%u0e13\\%u0e4c\\>\\|\\%u0e2a\\%u0e23\\%u0e38\\%u0e1b\\%u0e40\\%u0e2b\\%u0e15\\%u0e38\\%u0e01\\%u0e32\\%u0e23\\%u0e13\\%u0e4c\\>", "then": "\\%u0e14\\%u0e31\\%u0e07\\%u0e19\\%u0e31\\%u0e49\\%u0e19\\>", "when": "\\%u0e40\\%u0e21\\%u0e37\\%u0e48\\%u0e2d\\>"},
+ \"tl": {"and": "\\%u0c2e\\%u0c30\\%u0c3f\\%u0c2f\\%u0c41\\>", "background": "\\%u0c28\\%u0c47\\%u0c2a\\%u0c25\\%u0c4d\\%u0c2f\\%u0c02\\>", "but": "\\%u0c15\\%u0c3e\\%u0c28\\%u0c3f\\>", "examples": "\\%u0c09\\%u0c26\\%u0c3e\\%u0c39\\%u0c30\\%u0c23\\%u0c32\\%u0c41\\>", "feature": "\\%u0c17\\%u0c41\\%u0c23\\%u0c2e\\%u0c41\\>", "given": "\\%u0c1a\\%u0c46\\%u0c2a\\%u0c4d\\%u0c2a\\%u0c2c\\%u0c21\\%u0c3f\\%u0c28\\%u0c26\\%u0c3f\\>", "scenario": "\\%u0c38\\%u0c28\\%u0c4d\\%u0c28\\%u0c3f\\%u0c35\\%u0c47\\%u0c36\\%u0c02\\>", "scenario_outline": "\\%u0c15\\%u0c25\\%u0c28\\%u0c02\\>", "then": "\\%u0c05\\%u0c2a\\%u0c4d\\%u0c2a\\%u0c41\\%u0c21\\%u0c41\\>", "when": "\\%u0c08 \\%u0c2a\\%u0c30\\%u0c3f\\%u0c38\\%u0c4d\\%u0c25\\%u0c3f\\%u0c24\\%u0c3f\\%u0c32\\%u0c4b\\>"},
+ \"tr": {"and": "Ve\\>", "background": "Ge\\%u00e7mi\\%u015f\\>", "but": "Fakat\\>\\|Ama\\>", "examples": "\\%u00d6rnekler\\>", "feature": "\\%u00d6zellik\\>", "given": "Diyelim ki\\>", "scenario": "Senaryo\\>", "scenario_outline": "Senaryo tasla\\%u011f\\%u0131\\>", "then": "O zaman\\>", "when": "E\\%u011fer ki\\>"},
+ \"tt": {"and": "\\%u04ba\\%u04d9\\%u043c\\>\\|\\%u0412\\%u04d9\\>", "background": "\\%u041a\\%u0435\\%u0440\\%u0435\\%u0448\\>", "but": "\\%u041b\\%u04d9\\%u043a\\%u0438\\%u043d\\>\\|\\%u04d8\\%u043c\\%u043c\\%u0430\\>", "examples": "\\%u04ae\\%u0440\\%u043d\\%u04d9\\%u043a\\%u043b\\%u04d9\\%u0440\\>\\|\\%u041c\\%u0438\\%u0441\\%u0430\\%u043b\\%u043b\\%u0430\\%u0440\\>", "feature": "\\%u04ae\\%u0437\\%u0435\\%u043d\\%u0447\\%u04d9\\%u043b\\%u0435\\%u043a\\%u043b\\%u0435\\%u043b\\%u0435\\%u043a\\>\\|\\%u041c\\%u04e9\\%u043c\\%u043a\\%u0438\\%u043d\\%u043b\\%u0435\\%u043a\\>", "given": "\\%u04d8\\%u0439\\%u0442\\%u0438\\%u043a\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "scenario_outline": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\%u043d\\%u044b\\%u04a3 \\%u0442\\%u04e9\\%u0437\\%u0435\\%u043b\\%u0435\\%u0448\\%u0435\\>", "then": "\\%u041d\\%u04d9\\%u0442\\%u0438\\%u0497\\%u04d9\\%u0434\\%u04d9\\>", "when": "\\%u04d8\\%u0433\\%u04d9\\%u0440\\>"},
+ \"uk": {"and": "\\%u0410 \\%u0442\\%u0430\\%u043a\\%u043e\\%u0436\\>\\|\\%u0422\\%u0430\\>\\|\\%u0406\\>", "background": "\\%u041f\\%u0435\\%u0440\\%u0435\\%u0434\\%u0443\\%u043c\\%u043e\\%u0432\\%u0430\\>", "but": "\\%u0410\\%u043b\\%u0435\\>", "examples": "\\%u041f\\%u0440\\%u0438\\%u043a\\%u043b\\%u0430\\%u0434\\%u0438\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0456\\%u043e\\%u043d\\%u0430\\%u043b\\>", "given": "\\%u041f\\%u0440\\%u0438\\%u043f\\%u0443\\%u0441\\%u0442\\%u0438\\%u043c\\%u043e, \\%u0449\\%u043e\\>\\|\\%u041f\\%u0440\\%u0438\\%u043f\\%u0443\\%u0441\\%u0442\\%u0438\\%u043c\\%u043e\\>\\|\\%u041d\\%u0435\\%u0445\\%u0430\\%u0439\\>\\|\\%u0414\\%u0430\\%u043d\\%u043e\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0456\\%u0439\\>", "scenario_outline": "\\%u0421\\%u0442\\%u0440\\%u0443\\%u043a\\%u0442\\%u0443\\%u0440\\%u0430 \\%u0441\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0456\\%u044e\\>", "then": "\\%u0422\\%u043e\\%u0434\\%u0456\\>\\|\\%u0422\\%u043e\\>", "when": "\\%u042f\\%u043a\\%u0449\\%u043e\\>\\|\\%u041a\\%u043e\\%u043b\\%u0438\\>"},
+ \"uz": {"and": "\\%u0412\\%u0430\\>", "background": "\\%u0422\\%u0430\\%u0440\\%u0438\\%u0445\\>", "but": "\\%u041b\\%u0435\\%u043a\\%u0438\\%u043d\\>\\|\\%u0411\\%u0438\\%u0440\\%u043e\\%u043a\\>\\|\\%u0410\\%u043c\\%u043c\\%u043e\\>", "examples": "\\%u041c\\%u0438\\%u0441\\%u043e\\%u043b\\%u043b\\%u0430\\%u0440\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u043e\\%u043d\\%u0430\\%u043b\\>", "given": "\\%u0410\\%u0433\\%u0430\\%u0440\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "scenario_outline": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439 \\%u0441\\%u0442\\%u0440\\%u0443\\%u043a\\%u0442\\%u0443\\%u0440\\%u0430\\%u0441\\%u0438\\>", "then": "\\%u0423\\%u043d\\%u0434\\%u0430\\>", "when": "\\%u0410\\%u0433\\%u0430\\%u0440\\>"},
+ \"vi": {"and": "V\\%u00e0\\>", "background": "B\\%u1ed1i c\\%u1ea3nh\\>", "but": "Nh\\%u01b0ng\\>", "examples": "D\\%u1eef li\\%u1ec7u\\>", "feature": "T\\%u00ednh n\\%u0103ng\\>", "given": "Bi\\%u1ebft\\>\\|Cho\\>", "scenario": "T\\%u00ecnh hu\\%u1ed1ng\\>\\|K\\%u1ecbch b\\%u1ea3n\\>", "scenario_outline": "Khung t\\%u00ecnh hu\\%u1ed1ng\\>\\|Khung k\\%u1ecbch b\\%u1ea3n\\>", "then": "Th\\%u00ec\\>", "when": "Khi\\>"},
+ \"zh-CN": {"and": "\\%u800c\\%u4e14\\|\\%u5e76\\%u4e14\\|\\%u540c\\%u65f6", "background": "\\%u80cc\\%u666f\\>", "but": "\\%u4f46\\%u662f", "examples": "\\%u4f8b\\%u5b50\\>", "feature": "\\%u529f\\%u80fd\\>", "given": "\\%u5047\\%u5982\\|\\%u5047\\%u8bbe\\|\\%u5047\\%u5b9a", "scenario": "\\%u573a\\%u666f\\>\\|\\%u5267\\%u672c\\>", "scenario_outline": "\\%u573a\\%u666f\\%u5927\\%u7eb2\\>\\|\\%u5267\\%u672c\\%u5927\\%u7eb2\\>", "then": "\\%u90a3\\%u4e48", "when": "\\%u5f53"},
+ \"zh-TW": {"and": "\\%u800c\\%u4e14\\|\\%u4e26\\%u4e14\\|\\%u540c\\%u6642", "background": "\\%u80cc\\%u666f\\>", "but": "\\%u4f46\\%u662f", "examples": "\\%u4f8b\\%u5b50\\>", "feature": "\\%u529f\\%u80fd\\>", "given": "\\%u5047\\%u5982\\|\\%u5047\\%u8a2d\\|\\%u5047\\%u5b9a", "scenario": "\\%u5834\\%u666f\\>\\|\\%u5287\\%u672c\\>", "scenario_outline": "\\%u5834\\%u666f\\%u5927\\%u7db1\\>\\|\\%u5287\\%u672c\\%u5927\\%u7db1\\>", "then": "\\%u90a3\\%u9ebc", "when": "\\%u7576"}}
+
+function! s:pattern(key)
+ let language = matchstr(getline(1),'#\s*language:\s*\zs\S\+')
+ if &fileencoding == 'latin1' && language == ''
+ let language = 'en'
+ endif
+ if has_key(g:cucumber_languages, language)
+ let languages = [g:cucumber_languages[language]]
+ else
+ let languages = values(g:cucumber_languages)
+ end
+ return '\<\%('.join(map(languages,'get(v:val,a:key,"\\%(a\\&b\\)")'),'\|').'\)'
+endfunction
+
+function! s:Add(name)
+ let next = " skipempty skipwhite nextgroup=".join(map(["Region","AndRegion","ButRegion","Comment","String","Table"],'"cucumber".a:name.v:val'),",")
+ exe "syn region cucumber".a:name.'Region matchgroup=cucumber'.a:name.' start="\%(^\s*\)\@<=\%('.s:pattern(tolower(a:name)).'\)" end="$"'.next
+ exe 'syn region cucumber'.a:name.'AndRegion matchgroup=cucumber'.a:name.'And start="\%(^\s*\)\@<='.s:pattern('and').'" end="$" contained'.next
+ exe 'syn region cucumber'.a:name.'ButRegion matchgroup=cucumber'.a:name.'But start="\%(^\s*\)\@<='.s:pattern('but').'" end="$" contained'.next
+ exe 'syn match cucumber'.a:name.'Comment "\%(^\s*\)\@<=#.*" contained'.next
+ exe 'syn region cucumber'.a:name.'String start=+\%(^\s*\)\@<="""+ end=+"""+ contained'.next
+ exe 'syn match cucumber'.a:name.'Table "\%(^\s*\)\@<=|.*" contained contains=cucumberDelimiter'.next
+ exe 'hi def link cucumber'.a:name.'Comment cucumberComment'
+ exe 'hi def link cucumber'.a:name.'String cucumberString'
+ exe 'hi def link cucumber'.a:name.'But cucumber'.a:name.'And'
+ exe 'hi def link cucumber'.a:name.'And cucumber'.a:name
+ exe 'syn cluster cucumberStepRegions add=cucumber'.a:name.'Region,cucumber'.a:name.'AndRegion,cucumber'.a:name.'ButRegion'
+endfunction
+
+syn match cucumberComment "\%(^\s*\)\@<=#.*"
+syn match cucumberComment "\%(\%^\s*\)\@<=#.*" contains=cucumberLanguage
+syn match cucumberLanguage "\%(#\s*\)\@<=language:" contained
+syn match cucumberUnparsed "\S.*" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberTags,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty contained
+syn match cucumberUnparsedComment "#.*" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberTags,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty contained
+
+exe 'syn match cucumberFeature "\%(^\s*\)\@<='.s:pattern('feature').':" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty'
+exe 'syn match cucumberBackground "\%(^\s*\)\@<='.s:pattern('background').':"'
+exe 'syn match cucumberScenario "\%(^\s*\)\@<='.s:pattern('scenario').':"'
+exe 'syn match cucumberScenarioOutline "\%(^\s*\)\@<='.s:pattern('scenario_outline').':"'
+exe 'syn match cucumberExamples "\%(^\s*\)\@<='.s:pattern('examples').':" nextgroup=cucumberExampleTable skipempty skipwhite'
+
+syn match cucumberPlaceholder "<[^<>]*>" contained containedin=@cucumberStepRegions
+syn match cucumberExampleTable "\%(^\s*\)\@<=|.*" contains=cucumberDelimiter
+syn match cucumberDelimiter "\\\@<!\%(\\\\\)*\zs|" contained
+syn match cucumberTags "\%(^\s*\)\@<=\%(@[^@[:space:]]\+\s\+\)*@[^@[:space:]]\+\s*$" contains=@NoSpell
+
+call s:Add('Then')
+call s:Add('When')
+call s:Add('Given')
+
+hi def link cucumberUnparsedComment cucumberComment
+hi def link cucumberComment Comment
+hi def link cucumberLanguage SpecialComment
+hi def link cucumberFeature Macro
+hi def link cucumberBackground Define
+hi def link cucumberScenario Define
+hi def link cucumberScenarioOutline Define
+hi def link cucumberExamples Define
+hi def link cucumberPlaceholder Constant
+hi def link cucumberDelimiter Delimiter
+hi def link cucumberTags Tag
+hi def link cucumberString String
+hi def link cucumberGiven Conditional
+hi def link cucumberWhen Function
+hi def link cucumberThen Type
+
+let b:current_syntax = "cucumber"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim:set sts=2 sw=2:
diff --git a/runtime/syntax/cuda.vim b/runtime/syntax/cuda.vim
new file mode 100644
index 0000000..13d70e3
--- /dev/null
+++ b/runtime/syntax/cuda.vim
@@ -0,0 +1,65 @@
+" Vim syntax file
+" Language: CUDA (NVIDIA Compute Unified Device Architecture)
+" Maintainer: Timothy B. Terriberry <tterribe@users.sourceforge.net>
+" Last Change: 2018 Feb 06
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the C++ syntax to start with
+runtime! syntax/cpp.vim
+
+" CUDA extentions
+syn keyword cudaStorageClass __device__ __global__ __host__
+syn keyword cudaStorageClass __constant__ __shared__
+syn keyword cudaStorageClass __inline__ __align__ __thread__
+"syn keyword cudaStorageClass __import__ __export__ __location__
+syn keyword cudaStructure template
+syn keyword cudaType char1 char2 char3 char4
+syn keyword cudaType uchar1 uchar2 uchar3 uchar4
+syn keyword cudaType short1 short2 short3 short4
+syn keyword cudaType ushort1 ushort2 ushort3 ushort4
+syn keyword cudaType int1 int2 int3 int4
+syn keyword cudaType uint1 uint2 uint3 uint4
+syn keyword cudaType long1 long2 long3 long4
+syn keyword cudaType ulong1 ulong2 ulong3 ulong4
+syn keyword cudaType float1 float2 float3 float4
+syn keyword cudaType ufloat1 ufloat2 ufloat3 ufloat4
+syn keyword cudaType dim3 texture textureReference
+syn keyword cudaType cudaError_t cudaDeviceProp cudaMemcpyKind
+syn keyword cudaType cudaArray cudaChannelFormatKind
+syn keyword cudaType cudaChannelFormatDesc cudaTextureAddressMode
+syn keyword cudaType cudaTextureFilterMode cudaTextureReadMode
+syn keyword cudaVariable gridDim blockIdx blockDim threadIdx
+syn keyword cudaConstant __DEVICE_EMULATION__
+syn keyword cudaConstant cudaSuccess
+" Many more errors are defined, but only these are listed in the maunal
+syn keyword cudaConstant cudaErrorMemoryAllocation
+syn keyword cudaConstant cudaErrorInvalidDevicePointer
+syn keyword cudaConstant cudaErrorInvalidSymbol
+syn keyword cudaConstant cudaErrorMixedDeviceExecution
+syn keyword cudaConstant cudaMemcpyHostToHost
+syn keyword cudaConstant cudaMemcpyHostToDevice
+syn keyword cudaConstant cudaMemcpyDeviceToHost
+syn keyword cudaConstant cudaMemcpyDeviceToDevice
+syn keyword cudaConstant cudaReadModeElementType
+syn keyword cudaConstant cudaReadModeNormalizedFloat
+syn keyword cudaConstant cudaFilterModePoint
+syn keyword cudaConstant cudaFilterModeLinear
+syn keyword cudaConstant cudaAddressModeClamp
+syn keyword cudaConstant cudaAddressModeWrap
+syn keyword cudaConstant cudaChannelFormatKindSigned
+syn keyword cudaConstant cudaChannelFormatKindUnsigned
+syn keyword cudaConstant cudaChannelFormatKindFloat
+
+hi def link cudaStorageClass StorageClass
+hi def link cudaStructure Structure
+hi def link cudaType Type
+hi def link cudaVariable Identifier
+hi def link cudaConstant Constant
+
+let b:current_syntax = "cuda"
+
+" vim: ts=8
diff --git a/runtime/syntax/cupl.vim b/runtime/syntax/cupl.vim
new file mode 100644
index 0000000..54495f8
--- /dev/null
+++ b/runtime/syntax/cupl.vim
@@ -0,0 +1,124 @@
+" Vim syntax file
+" Language: CUPL
+" Maintainer: John Cook <johncook3@gmail.com>
+" Last Change: 2011 Dec 27
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" this language is oblivious to case.
+syn case ignore
+
+" A bunch of keywords
+syn keyword cuplHeader name partno date revision rev designer company nextgroup=cuplHeaderContents
+syn keyword cuplHeader assembly assy location device nextgroup=cuplHeaderContents
+
+syn keyword cuplTodo contained TODO XXX FIXME
+
+" cuplHeaderContents uses default highlighting except for numbers
+syn match cuplHeaderContents ".\+;"me=e-1 contains=cuplNumber contained
+
+" String constants
+syn region cuplString start=+'+ end=+'+
+syn region cuplString start=+"+ end=+"+
+
+syn keyword cuplStatement append condition
+syn keyword cuplStatement default else
+syn keyword cuplStatement field fld format function fuse
+syn keyword cuplStatement group if jump loc
+syn keyword cuplStatement macro min node out
+syn keyword cuplStatement pin pinnode present table
+syn keyword cuplStatement sequence sequenced sequencejk sequencers sequencet
+
+syn keyword cuplFunction log2 log8 log16 log
+
+" Valid integer number formats (decimal, binary, octal, hex)
+syn match cuplNumber "\<[-+]\=[0-9]\+\>"
+syn match cuplNumber "'d'[0-9]\+\>"
+syn match cuplNumber "'b'[01x]\+\>"
+syn match cuplNumber "'o'[0-7x]\+\>"
+syn match cuplNumber "'h'[0-9a-fx]\+\>"
+
+" operators
+syn match cuplLogicalOperator "[!#&$]"
+syn match cuplArithmeticOperator "[-+*/%]"
+syn match cuplArithmeticOperator "\*\*"
+syn match cuplAssignmentOperator ":\=="
+syn match cuplEqualityOperator ":"
+syn match cuplTruthTableOperator "=>"
+
+" Signal extensions
+syn match cuplExtension "\.[as][pr]\>"
+syn match cuplExtension "\.oe\>"
+syn match cuplExtension "\.oemux\>"
+syn match cuplExtension "\.[dlsrjk]\>"
+syn match cuplExtension "\.ck\>"
+syn match cuplExtension "\.dq\>"
+syn match cuplExtension "\.ckmux\>"
+syn match cuplExtension "\.tec\>"
+syn match cuplExtension "\.cnt\>"
+
+syn match cuplRangeOperator "\.\." contained
+
+" match ranges like memadr:[0000..1FFF]
+" and highlight both the numbers and the .. operator
+syn match cuplNumberRange "\<\x\+\.\.\x\+\>" contains=cuplRangeOperator
+
+" match vectors of type [name3..0] (decimal numbers only)
+" but assign them no special highlighting except for the .. operator
+syn match cuplBitVector "\<\a\+\d\+\.\.\d\+\>" contains=cuplRangeOperator
+
+" other special characters
+syn match cuplSpecialChar "[\[\](){},;]"
+
+" directives
+" (define these after cuplOperator so $xxx overrides $)
+syn match cuplDirective "\$msg"
+syn match cuplDirective "\$macro"
+syn match cuplDirective "\$mend"
+syn match cuplDirective "\$repeat"
+syn match cuplDirective "\$repend"
+syn match cuplDirective "\$define"
+syn match cuplDirective "\$include"
+
+" multi-line comments
+syn region cuplComment start=+/\*+ end=+\*/+ contains=cuplNumber,cuplTodo
+
+syn sync minlines=1
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default highlighting.
+hi def link cuplHeader cuplStatement
+hi def link cuplLogicalOperator cuplOperator
+hi def link cuplRangeOperator cuplOperator
+hi def link cuplArithmeticOperator cuplOperator
+hi def link cuplAssignmentOperator cuplOperator
+hi def link cuplEqualityOperator cuplOperator
+hi def link cuplTruthTableOperator cuplOperator
+hi def link cuplOperator cuplStatement
+hi def link cuplFunction cuplStatement
+hi def link cuplStatement Statement
+hi def link cuplNumberRange cuplNumber
+hi def link cuplNumber cuplString
+hi def link cuplString String
+hi def link cuplComment Comment
+hi def link cuplExtension cuplSpecial
+hi def link cuplSpecialChar cuplSpecial
+hi def link cuplSpecial Special
+hi def link cuplDirective PreProc
+hi def link cuplTodo Todo
+
+
+let b:current_syntax = "cupl"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim:ts=8
diff --git a/runtime/syntax/cuplsim.vim b/runtime/syntax/cuplsim.vim
new file mode 100644
index 0000000..36eb4c3
--- /dev/null
+++ b/runtime/syntax/cuplsim.vim
@@ -0,0 +1,63 @@
+" Vim syntax file
+" Language: CUPL simulation
+" Maintainer: John Cook <john.cook@kla-tencor.com>
+" Last Change: 2001 Apr 25
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the CUPL syntax to start with
+runtime! syntax/cupl.vim
+unlet b:current_syntax
+
+" omit definition-specific stuff
+syn clear cuplStatement
+syn clear cuplFunction
+syn clear cuplLogicalOperator
+syn clear cuplArithmeticOperator
+syn clear cuplAssignmentOperator
+syn clear cuplEqualityOperator
+syn clear cuplTruthTableOperator
+syn clear cuplExtension
+
+" simulation order statement
+syn match cuplsimOrder "order:" nextgroup=cuplsimOrderSpec skipempty
+syn region cuplsimOrderSpec start="." end=";"me=e-1 contains=cuplComment,cuplsimOrderFormat,cuplBitVector,cuplSpecialChar,cuplLogicalOperator,cuplCommaOperator contained
+
+" simulation base statement
+syn match cuplsimBase "base:" nextgroup=cuplsimBaseSpec skipempty
+syn region cuplsimBaseSpec start="." end=";"me=e-1 contains=cuplComment,cuplsimBaseType contained
+syn keyword cuplsimBaseType octal decimal hex contained
+
+" simulation vectors statement
+syn match cuplsimVectors "vectors:"
+
+" simulator format control
+syn match cuplsimOrderFormat "%\d\+\>" contained
+
+" simulator control
+syn match cuplsimStimulus "[10ckpx]\+"
+syn match cuplsimStimulus +'\(\x\|x\)\+'+
+syn match cuplsimOutput "[lhznx*]\+"
+syn match cuplsimOutput +"\x\+"+
+
+syn sync minlines=1
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" append to the highlighting links in cupl.vim
+" The default highlighting.
+hi def link cuplsimOrder cuplStatement
+hi def link cuplsimBase cuplStatement
+hi def link cuplsimBaseType cuplStatement
+hi def link cuplsimVectors cuplStatement
+hi def link cuplsimStimulus cuplNumber
+hi def link cuplsimOutput cuplNumber
+hi def link cuplsimOrderFormat cuplNumber
+
+
+let b:current_syntax = "cuplsim"
+" vim:ts=8
diff --git a/runtime/syntax/cvs.vim b/runtime/syntax/cvs.vim
new file mode 100644
index 0000000..e1e413f
--- /dev/null
+++ b/runtime/syntax/cvs.vim
@@ -0,0 +1,29 @@
+" Vim syntax file
+" Language: CVS commit file
+" Maintainer: Matt Dunford (zenmatic@gmail.com)
+" Last Change: Sat Nov 24 23:25:11 CET 2001
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn region cvsLine start="^CVS: " end="$" contains=cvsFile,cvsCom,cvsFiles,cvsTag
+syn match cvsFile contained " \t\(\(\S\+\) \)\+"
+syn match cvsTag contained " Tag:"
+syn match cvsFiles contained "\(Added\|Modified\|Removed\) Files:"
+syn region cvsCom start="Committing in" end="$" contains=cvsDir contained extend keepend
+syn match cvsDir contained "\S\+$"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link cvsLine Comment
+hi def link cvsDir cvsFile
+hi def link cvsFile Constant
+hi def link cvsFiles cvsCom
+hi def link cvsTag cvsCom
+hi def link cvsCom Statement
+
+
+let b:current_syntax = "cvs"
diff --git a/runtime/syntax/cvsrc.vim b/runtime/syntax/cvsrc.vim
new file mode 100644
index 0000000..9522de6
--- /dev/null
+++ b/runtime/syntax/cvsrc.vim
@@ -0,0 +1,39 @@
+" Vim syntax file
+" Language: cvs(1) RC file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn region cvsrcString display oneline start=+"+ skip=+\\\\\|\\\\"+ end=+"+
+syn region cvsrcString display oneline start=+'+ skip=+\\\\\|\\\\'+ end=+'+
+
+syn match cvsrcNumber display '\<\d\+\>'
+
+syn match cvsrcBegin display '^' nextgroup=cvsrcCommand skipwhite
+
+syn region cvsrcCommand contained transparent matchgroup=cvsrcCommand
+ \ start='add\|admin\|checkout\|commit\|cvs\|diff'
+ \ start='export\|history\|import\|init\|log'
+ \ start='rdiff\|release\|remove\|rtag\|status\|tag'
+ \ start='update'
+ \ end='$'
+ \ contains=cvsrcOption,cvsrcString,cvsrcNumber
+ \ keepend
+
+syn match cvsrcOption contained display '-\a\+'
+
+hi def link cvsrcString String
+hi def link cvsrcNumber Number
+hi def link cvsrcCommand Keyword
+hi def link cvsrcOption Identifier
+
+let b:current_syntax = "cvsrc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/cweb.vim b/runtime/syntax/cweb.vim
new file mode 100644
index 0000000..4e06b36
--- /dev/null
+++ b/runtime/syntax/cweb.vim
@@ -0,0 +1,68 @@
+" Vim syntax file
+" Language: CWEB
+" Maintainer: Andreas Scherer <andreas.scherer@pobox.com>
+" Last Change: 2011 Dec 25 by Thilo Six
+
+" Details of the CWEB language can be found in the article by Donald E. Knuth
+" and Silvio Levy, "The CWEB System of Structured Documentation", included as
+" file "cwebman.tex" in the standard CWEB distribution, available for
+" anonymous ftp at ftp://labrea.stanford.edu/pub/cweb/.
+
+" TODO: Section names and C/C++ comments should be treated as TeX material.
+" TODO: The current version switches syntax highlighting off for section
+" TODO: names, and leaves C/C++ comments as such. (On the other hand,
+" TODO: switching to TeX mode in C/C++ comments might be colour overkill.)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" For starters, read the TeX syntax; TeX syntax items are allowed at the top
+" level in the CWEB syntax, e.g., in the preamble. In general, a CWEB source
+" code can be seen as a normal TeX document with some C/C++ material
+" interspersed in certain defined regions.
+runtime! syntax/tex.vim
+unlet b:current_syntax
+
+" Read the C/C++ syntax too; C/C++ syntax items are treated as such in the
+" C/C++ section of a CWEB chunk or in inner C/C++ context in "|...|" groups.
+syntax include @webIncludedC <sfile>:p:h/cpp.vim
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Inner C/C++ context (ICC) should be quite simple as it's comprised of
+" material in "|...|"; however the naive definition for this region would
+" hickup at the innocious "\|" TeX macro. Note: For the time being we expect
+" that an ICC begins either at the start of a line or after some white space.
+syntax region webInnerCcontext start="\(^\|[ \t\~`(]\)|" end="|" contains=@webIncludedC,webSectionName,webRestrictedTeX,webIgnoredStuff
+
+" Genuine C/C++ material. This syntactic region covers both the definition
+" part and the C/C++ part of a CWEB section; it is ended by the TeX part of
+" the next section.
+syntax region webCpart start="@[dfscp<(]" end="@[ \*]" contains=@webIncludedC,webSectionName,webRestrictedTeX,webIgnoredStuff
+
+" Section names contain C/C++ material only in inner context.
+syntax region webSectionName start="@[<(]" end="@>" contains=webInnerCcontext contained
+
+" The contents of "control texts" is not treated as TeX material, because in
+" non-trivial cases this completely clobbers the syntax recognition. Instead,
+" we highlight these elements as "strings".
+syntax region webRestrictedTeX start="@[\^\.:t=q]" end="@>" oneline
+
+" Double-@ means single-@, anywhere in the CWEB source. (This allows e-mail
+" address <someone@@fsf.org> without going into C/C++ mode.)
+syntax match webIgnoredStuff "@@"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link webRestrictedTeX String
+
+
+let b:current_syntax = "cweb"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/cynlib.vim b/runtime/syntax/cynlib.vim
new file mode 100644
index 0000000..24ad2a2
--- /dev/null
+++ b/runtime/syntax/cynlib.vim
@@ -0,0 +1,74 @@
+" Vim syntax file
+" Language: Cynlib(C++)
+" Maintainer: Phil Derrick <phild@forteds.com>
+" Last change: 2001 Sep 02
+" URL http://www.derrickp.freeserve.co.uk/vim/syntax/cynlib.vim
+"
+" Language Information
+"
+" Cynlib is a library of C++ classes to allow hardware
+" modelling in C++. Combined with a simulation kernel,
+" the compiled and linked executable forms a hardware
+" simulation of the described design.
+"
+" Further information can be found from www.forteds.com
+
+
+" Remove any old syntax stuff hanging around
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+
+" Read the C++ syntax to start with - this includes the C syntax
+runtime! syntax/cpp.vim
+unlet b:current_syntax
+
+" Cynlib extensions
+
+syn keyword cynlibMacro Default CYNSCON
+syn keyword cynlibMacro Case CaseX EndCaseX
+syn keyword cynlibType CynData CynSignedData CynTime
+syn keyword cynlibType In Out InST OutST
+syn keyword cynlibType Struct
+syn keyword cynlibType Int Uint Const
+syn keyword cynlibType Long Ulong
+syn keyword cynlibType OneHot
+syn keyword cynlibType CynClock Cynclock0
+syn keyword cynlibFunction time configure my_name
+syn keyword cynlibFunction CynModule epilog execute_on
+syn keyword cynlibFunction my_name
+syn keyword cynlibFunction CynBind bind
+syn keyword cynlibFunction CynWait CynEvent
+syn keyword cynlibFunction CynSetName
+syn keyword cynlibFunction CynTick CynRun
+syn keyword cynlibFunction CynFinish
+syn keyword cynlibFunction Cynprintf CynSimTime
+syn keyword cynlibFunction CynVcdFile
+syn keyword cynlibFunction CynVcdAdd CynVcdRemove
+syn keyword cynlibFunction CynVcdOn CynVcdOff
+syn keyword cynlibFunction CynVcdScale
+syn keyword cynlibFunction CynBgnName CynEndName
+syn keyword cynlibFunction CynClock configure time
+syn keyword cynlibFunction CynRedAnd CynRedNand
+syn keyword cynlibFunction CynRedOr CynRedNor
+syn keyword cynlibFunction CynRedXor CynRedXnor
+syn keyword cynlibFunction CynVerify
+
+
+syn match cynlibOperator "<<="
+syn keyword cynlibType In Out InST OutST Int Uint Const Cynclock
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link cynlibOperator Operator
+hi def link cynlibMacro Statement
+hi def link cynlibFunction Statement
+hi def link cynlibppMacro Statement
+hi def link cynlibType Type
+
+
+let b:current_syntax = "cynlib"
diff --git a/runtime/syntax/cynpp.vim b/runtime/syntax/cynpp.vim
new file mode 100644
index 0000000..3064b11
--- /dev/null
+++ b/runtime/syntax/cynpp.vim
@@ -0,0 +1,50 @@
+" Vim syntax file
+" Language: Cyn++
+" Maintainer: Phil Derrick <phild@forteds.com>
+" Last change: 2001 Sep 02
+"
+" Language Information
+"
+" Cynpp (Cyn++) is a macro language to ease coding in Cynlib.
+" Cynlib is a library of C++ classes to allow hardware
+" modelling in C++. Combined with a simulation kernel,
+" the compiled and linked executable forms a hardware
+" simulation of the described design.
+"
+" Cyn++ is designed to be HDL-like.
+"
+" Further information can be found from www.forteds.com
+
+
+
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the Cynlib syntax to start with - this includes the C++ syntax
+runtime! syntax/cynlib.vim
+unlet b:current_syntax
+
+
+
+" Cyn++ extensions
+
+syn keyword cynppMacro Always EndAlways
+syn keyword cynppMacro Module EndModule
+syn keyword cynppMacro Initial EndInitial
+syn keyword cynppMacro Posedge Negedge Changed
+syn keyword cynppMacro At
+syn keyword cynppMacro Thread EndThread
+syn keyword cynppMacro Instantiate
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link cLabel Label
+hi def link cynppMacro Statement
+
+
+let b:current_syntax = "cynpp"
diff --git a/runtime/syntax/d.vim b/runtime/syntax/d.vim
new file mode 100644
index 0000000..fdac98c
--- /dev/null
+++ b/runtime/syntax/d.vim
@@ -0,0 +1,573 @@
+" Vim syntax file for the D programming language (version 1.076 and 2.069).
+"
+" Language: D
+" Maintainer: Jesse Phillips <Jesse.K.Phillips+D@gmail.com>
+" Last Change: 2016 Feb 2
+" Version: 0.28
+"
+" Contributors:
+" - Jason Mills: original Maintainer
+" - Kirk McDonald
+" - Tim Keating
+" - Frank Benoit
+" - Shougo Matsushita
+" - Ellery Newcomer
+" - Steven N. Oliver
+" - Sohgo Takeuchi
+" - Robert Clipsham
+" - Petar Kirov
+"
+" Please submit bugs/comments/suggestions to the github repo:
+" https://github.com/JesseKPhillips/d.vim
+"
+" Options:
+" d_comment_strings - Set to highlight strings and numbers in comments.
+"
+" d_hl_operator_overload - Set to highlight D's specially named functions
+" that when overloaded implement unary and binary operators (e.g. opCmp).
+"
+" d_hl_object_types - Set to highlight some common types from object.di.
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Support cpoptions
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Set the current syntax to be known as d
+let b:current_syntax = "d"
+
+" Keyword definitions
+"
+syn keyword dExternal contained import module
+syn keyword dAssert assert
+syn keyword dConditional if else switch
+syn keyword dBranch goto break continue
+syn keyword dRepeat while for do foreach foreach_reverse
+syn keyword dBoolean true false
+syn keyword dConstant null
+syn keyword dConstant __FILE__ __LINE__ __EOF__ __VERSION__
+syn keyword dConstant __DATE__ __TIME__ __TIMESTAMP__ __VENDOR__
+syn keyword dConstant __MODULE__ __FUNCTION__ __PRETTY_FUNCTION__
+syn keyword dTypedef alias typedef
+syn keyword dStructure template interface class struct union
+syn keyword dEnum enum
+syn keyword dOperator new delete typeof typeid cast align is
+syn keyword dOperator this super
+if exists("d_hl_operator_overload")
+ syn keyword dOpOverload opNeg opCom opPostInc opPostDec opCast opAdd
+ syn keyword dOpOverload opSub opSub_r opMul opDiv opDiv_r opMod
+ syn keyword dOpOverload opMod_r opAnd opOr opXor opShl opShl_r opShr
+ syn keyword dOpOverload opShr_r opUShr opUShr_r opCat
+ syn keyword dOpOverload opCat_r opEquals opCmp
+ syn keyword dOpOverload opAssign opAddAssign opSubAssign opMulAssign
+ syn keyword dOpOverload opDivAssign opModAssign opAndAssign
+ syn keyword dOpOverload opOrAssign opXorAssign opShlAssign
+ syn keyword dOpOverload opShrAssign opUShrAssign opCatAssign
+ syn keyword dOpOverload opIndex opIndexAssign opIndexOpAssign
+ syn keyword dOpOverload opCall opSlice opSliceAssign opSliceOpAssign
+ syn keyword dOpOverload opPos opAdd_r opMul_r opAnd_r opOr_r opXor_r
+ syn keyword dOpOverload opIn opIn_r opPow opDispatch opStar opDot
+ syn keyword dOpOverload opApply opApplyReverse opDollar
+ syn keyword dOpOverload opUnary opIndexUnary opSliceUnary
+ syn keyword dOpOverload opBinary opBinaryRight
+endif
+
+syn keyword dType byte ubyte short ushort int uint long ulong cent ucent
+syn keyword dType void bool Object
+syn keyword dType float double real
+syn keyword dType ushort int uint long ulong float
+syn keyword dType char wchar dchar string wstring dstring
+syn keyword dType ireal ifloat idouble creal cfloat cdouble
+syn keyword dType size_t ptrdiff_t sizediff_t equals_t hash_t
+if exists("d_hl_object_types")
+ syn keyword dType Object Throwable AssociativeArray Error Exception
+ syn keyword dType Interface OffsetTypeInfo TypeInfo TypeInfo_Typedef
+ syn keyword dType TypeInfo_Enum TypeInfo_Pointer TypeInfo_Array
+ syn keyword dType TypeInfo_StaticArray TypeInfo_AssociativeArray
+ syn keyword dType TypeInfo_Function TypeInfo_Delegate TypeInfo_Class
+ syn keyword dType ClassInfo TypeInfo_Interface TypeInfo_Struct
+ syn keyword dType TypeInfo_Tuple TypeInfo_Const TypeInfo_Invariant
+ syn keyword dType TypeInfo_Shared TypeInfo_Inout MemberInfo
+ syn keyword dType MemberInfo_field MemberInfo_function ModuleInfo
+endif
+syn keyword dDebug deprecated unittest invariant
+syn keyword dExceptions throw try catch finally
+syn keyword dScopeDecl public protected private export package
+syn keyword dStatement debug return with
+syn keyword dStatement function delegate __ctfe mixin macro __simd
+syn keyword dStatement in out body
+syn keyword dStorageClass contained in out scope
+syn keyword dStorageClass inout ref lazy pure nothrow
+syn keyword dStorageClass auto static override final abstract volatile
+syn keyword dStorageClass __gshared __vector
+syn keyword dStorageClass synchronized shared immutable const lazy
+syn keyword dIdentifier _arguments _argptr __vptr __monitor
+syn keyword dIdentifier _ctor _dtor __argTypes __overloadset
+syn keyword dScopeIdentifier contained exit success failure
+syn keyword dTraitsIdentifier contained isAbstractClass isArithmetic
+syn keyword dTraitsIdentifier contained isAssociativeArray isFinalClass
+syn keyword dTraitsIdentifier contained isPOD isNested isFloating
+syn keyword dTraitsIdentifier contained isIntegral isScalar isStaticArray
+syn keyword dTraitsIdentifier contained isUnsigned isVirtualFunction
+syn keyword dTraitsIdentifier contained isVirtualMethod isAbstractFunction
+syn keyword dTraitsIdentifier contained isFinalFunction isStaticFunction
+syn keyword dTraitsIdentifier contained isOverrideFunction isTemplate
+syn keyword dTraitsIdentifier contained isRef isOut isLazy hasMember
+syn keyword dTraitsIdentifier contained identifier getAliasThis
+syn keyword dTraitsIdentifier contained getAttributes getFunctionAttributes getMember
+syn keyword dTraitsIdentifier contained getOverloads getPointerBitmap getProtection
+syn keyword dTraitsIdentifier contained getVirtualFunctions getVirtualIndex
+syn keyword dTraitsIdentifier contained getVirtualMethods getUnitTests
+syn keyword dTraitsIdentifier contained parent classInstanceSize allMembers
+syn keyword dTraitsIdentifier contained derivedMembers isSame compiles
+syn keyword dPragmaIdentifier contained inline lib mangle msg startaddress GNU_asm
+syn keyword dExternIdentifier contained C C++ D Windows Pascal System Objective-C
+syn keyword dAttribute contained safe trusted system
+syn keyword dAttribute contained property disable nogc
+syn keyword dVersionIdentifier contained DigitalMars GNU LDC SDC D_NET
+syn keyword dVersionIdentifier contained X86 X86_64 ARM PPC PPC64 IA64 MIPS MIPS64 Alpha
+syn keyword dVersionIdentifier contained SPARC SPARC64 S390 S390X HPPA HPPA64 SH SH64
+syn keyword dVersionIdentifier contained linux Posix OSX FreeBSD Windows Win32 Win64
+syn keyword dVersionIdentifier contained OpenBSD BSD Solaris AIX SkyOS SysV3 SysV4 Hurd
+syn keyword dVersionIdentifier contained Cygwin MinGW
+syn keyword dVersionIdentifier contained LittleEndian BigEndian
+syn keyword dVersionIdentifier contained D_InlineAsm_X86 D_InlineAsm_X86_64
+syn keyword dVersionIdentifier contained D_Version2 D_Coverage D_Ddoc D_LP64 D_PIC
+syn keyword dVersionIdentifier contained unittest assert none all
+
+syn cluster dComment contains=dNestedComment,dBlockComment,dLineComment
+
+" Highlight the sharpbang
+syn match dSharpBang "\%^#!.*" display
+
+" Attributes/annotations
+syn match dAnnotation "@[_$a-zA-Z][_$a-zA-Z0-9_]*\>" contains=dAttribute
+
+" Version Identifiers
+syn match dVersion "\<version\>"
+syn match dVersion "\<version\s*([_a-zA-Z][_a-zA-Z0-9]*\>"he=s+7 contains=dVersionIdentifier
+
+" Scope Identifiers
+syn match dStatement "\<scope\>"
+syn match dStatement "\<scope\s*([_a-zA-Z][_a-zA-Z0-9]*\>"he=s+5 contains=dScopeIdentifier
+
+" Traits Statement
+syn match dStatement "\<__traits\>"
+syn match dStatement "\<__traits\s*([_a-zA-Z][_a-zA-Z0-9]*\>"he=s+8 contains=dTraitsIdentifier
+
+" Pragma Statement
+syn match dPragma "\<pragma\>"
+syn match dPragma "\<pragma\s*([_a-zA-Z][_a-zA-Z0-9]*\>"he=s+6 contains=dPragmaIdentifier
+
+" Necessary to highlight C++ in extern modifiers.
+syn match dExternIdentifier "C\(++\)\?" contained
+
+" Extern Identifiers
+syn match dExternal "\<extern\>"
+syn match dExtern "\<extern\s*([_a-zA-Z][_a-zA-Z0-9\+]*\>"he=s+6 contains=dExternIdentifier
+
+" Make import a region to prevent highlighting keywords
+syn region dImport start="\<import\_s" end=";" contains=dExternal,@dComment
+
+" Make module a region to prevent highlighting keywords
+syn region dImport start="\<module\_s" end=";" contains=dExternal,@dComment
+
+" dTokens is used by the token string highlighting
+syn cluster dTokens contains=dExternal,dConditional,dBranch,dRepeat,dBoolean
+syn cluster dTokens add=dConstant,dTypedef,dStructure,dOperator,dOpOverload
+syn cluster dTokens add=dType,dDebug,dExceptions,dScopeDecl,dStatement
+syn cluster dTokens add=dStorageClass,dPragma,dAssert,dAnnotation,dEnum
+syn cluster dTokens add=dParenString,dBrackString,dAngleString,dCurlyString
+syn cluster dTokens add=dTokenString,dDelimString,dHereString
+
+" Create a match for parameter lists to identify storage class
+syn region paramlist start="(" end=")" contains=@dTokens
+
+" Labels
+"
+" We contain dScopeDecl so public: private: etc. are not highlighted like labels
+syn match dUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=dLabel,dScopeDecl,dEnum
+syn keyword dLabel case default
+
+syn cluster dTokens add=dUserLabel,dLabel
+
+" Comments
+"
+syn match dCommentError display "\*/"
+syn match dNestedCommentError display "+/"
+
+syn keyword dTodo contained TODO FIXME TEMP REFACTOR REVIEW HACK BUG XXX
+syn match dCommentStar contained "^\s*\*[^/]"me=e-1
+syn match dCommentStar contained "^\s*\*$"
+syn match dCommentPlus contained "^\s*+[^/]"me=e-1
+syn match dCommentPlus contained "^\s*+$"
+if exists("d_comment_strings")
+ syn region dBlockCommentString contained start=+"+ end=+"+ end=+\*/+me=s-1,he=s-1 contains=dCommentStar,dUnicode,dEscSequence,@Spell
+ syn region dNestedCommentString contained start=+"+ end=+"+ end="+"me=s-1,he=s-1 contains=dCommentPlus,dUnicode,dEscSequence,@Spell
+ syn region dLineCommentString contained start=+"+ end=+$\|"+ contains=dUnicode,dEscSequence,@Spell
+endif
+
+syn region dBlockComment start="/\*" end="\*/" contains=dBlockCommentString,dTodo,dCommentStartError,@Spell fold
+syn region dNestedComment start="/+" end="+/" contains=dNestedComment,dNestedCommentString,dTodo,@Spell fold
+syn match dLineComment "//.*" contains=dLineCommentString,dTodo,@Spell
+
+hi link dLineCommentString dBlockCommentString
+hi link dBlockCommentString dString
+hi link dNestedCommentString dString
+hi link dCommentStar dBlockComment
+hi link dCommentPlus dNestedComment
+
+syn cluster dTokens add=dBlockComment,dNestedComment,dLineComment
+
+" /+ +/ style comments and strings that span multiple lines can cause
+" problems. To play it safe, set minlines to a large number.
+syn sync minlines=200
+" Use ccomment for /* */ style comments
+syn sync ccomment dBlockComment
+
+" Characters
+"
+syn match dSpecialCharError contained "[^']"
+
+" Escape sequences (oct,specal char,hex,wchar, character entities \&xxx;)
+" These are not contained because they are considered string literals.
+syn match dEscSequence "\\\(\o\{1,3}\|[\"\\'\\?ntbrfva]\|u\x\{4}\|U\x\{8}\|x\x\x\)"
+syn match dEscSequence "\\&[^;& \t]\+;"
+syn match dCharacter "'[^']*'" contains=dEscSequence,dSpecialCharError
+syn match dCharacter "'\\''" contains=dEscSequence
+syn match dCharacter "'[^\\]'"
+
+syn cluster dTokens add=dEscSequence,dCharacter
+
+" Unicode characters
+"
+syn match dUnicode "\\u\d\{4\}"
+
+" String.
+"
+syn match dFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
+syn match dFormat display "%%" contained
+
+syn region dString start=+"+ end=+"[cwd]\=+ skip=+\\\\\|\\"+ contains=dFormat,dEscSequence,@Spell
+syn region dRawString start=+`+ end=+`[cwd]\=+ contains=@Spell
+syn region dRawString start=+r"+ end=+"[cwd]\=+ contains=@Spell
+syn region dHexString start=+x"+ end=+"[cwd]\=+ contains=@Spell
+syn region dDelimString start=+q"\z(.\)+ end=+\z1"+ contains=@Spell
+syn region dHereString start=+q"\z(\I\i*\)\n+ end=+^\z1"+ contains=@Spell
+
+
+" Nesting delimited string contents
+"
+syn region dNestParenString start=+(+ end=+)+ contained transparent contains=dNestParenString,@Spell
+syn region dNestBrackString start=+\[+ end=+\]+ contained transparent contains=dNestBrackString,@Spell
+syn region dNestAngleString start=+<+ end=+>+ contained transparent contains=dNestAngleString,@Spell
+syn region dNestCurlyString start=+{+ end=+}+ contained transparent contains=dNestCurlyString,@Spell
+
+" Nesting delimited strings
+"
+syn region dParenString matchgroup=dParenString start=+q"(+ end=+)"+ contains=dNestParenString,@Spell
+syn region dBrackString matchgroup=dBrackString start=+q"\[+ end=+\]"+ contains=dNestBrackString,@Spell
+syn region dAngleString matchgroup=dAngleString start=+q"<+ end=+>"+ contains=dNestAngleString,@Spell
+syn region dCurlyString matchgroup=dCurlyString start=+q"{+ end=+}"+ contains=dNestCurlyString,@Spell
+
+hi link dParenString dNestString
+hi link dBrackString dNestString
+hi link dAngleString dNestString
+hi link dCurlyString dNestString
+
+syn cluster dTokens add=dString,dRawString,dHexString,dDelimString,dNestString
+
+" Token strings
+"
+syn region dNestTokenString start=+{+ end=+}+ contained contains=dNestTokenString,@dTokens,dFormat
+syn region dTokenString matchgroup=dTokenStringBrack transparent start=+q{+ end=+}+ contains=dNestTokenString,@dTokens,dFormat
+
+syn cluster dTokens add=dTokenString
+
+" Numbers
+"
+syn case ignore
+
+syn match dDec display "\<\d[0-9_]*\(u\=l\=\|l\=u\=\)\>"
+
+" Hex number
+syn match dHex display "\<0x[0-9a-f_]\+\(u\=l\=\|l\=u\=\)\>"
+
+syn match dOctal display "\<0[0-7_]\+\(u\=l\=\|l\=u\=\)\>"
+" flag an octal number with wrong digits
+syn match dOctalError display "\<0[0-7_]*[89][0-9_]*"
+
+" binary numbers
+syn match dBinary display "\<0b[01_]\+\(u\=l\=\|l\=u\=\)\>"
+
+"floating point without the dot
+syn match dFloat display "\<\d[0-9_]*\(fi\=\|l\=i\)\>"
+"floating point number, with dot, optional exponent
+syn match dFloat display "\<\d[0-9_]*\.[0-9_]*\(e[-+]\=[0-9_]\+\)\=[fl]\=i\="
+"floating point number, starting with a dot, optional exponent
+syn match dFloat display "\(\.[0-9_]\+\)\(e[-+]\=[0-9_]\+\)\=[fl]\=i\=\>"
+"floating point number, without dot, with exponent
+"syn match dFloat display "\<\d\+e[-+]\=\d\+[fl]\=\>"
+syn match dFloat display "\<\d[0-9_]*e[-+]\=[0-9_]\+[fl]\=\>"
+
+"floating point without the dot
+syn match dHexFloat display "\<0x[0-9a-f_]\+\(fi\=\|l\=i\)\>"
+"floating point number, with dot, optional exponent
+syn match dHexFloat display "\<0x[0-9a-f_]\+\.[0-9a-f_]*\(p[-+]\=[0-9_]\+\)\=[fl]\=i\="
+"floating point number, without dot, with exponent
+syn match dHexFloat display "\<0x[0-9a-f_]\+p[-+]\=[0-9_]\+[fl]\=i\=\>"
+
+syn cluster dTokens add=dDec,dHex,dOctal,dOctalError,dBinary,dFloat,dHexFloat
+
+syn case match
+
+" Pragma (preprocessor) support
+" TODO: Highlight following Integer and optional Filespec.
+syn region dPragma start="#\s*\(line\>\)" skip="\\$" end="$"
+
+" Block
+"
+syn region dBlock start="{" end="}" transparent fold
+
+
+" The default highlighting.
+"
+hi def link dBinary Number
+hi def link dDec Number
+hi def link dHex Number
+hi def link dOctal Number
+hi def link dFloat Float
+hi def link dHexFloat Float
+hi def link dDebug Debug
+hi def link dBranch Conditional
+hi def link dConditional Conditional
+hi def link dLabel Label
+hi def link dUserLabel Label
+hi def link dRepeat Repeat
+hi def link dExceptions Exception
+hi def link dAssert Statement
+hi def link dStatement Statement
+hi def link dScopeDecl dStorageClass
+hi def link dStorageClass StorageClass
+hi def link dBoolean Boolean
+hi def link dUnicode Special
+hi def link dTokenStringBrack String
+hi def link dHereString String
+hi def link dNestString String
+hi def link dDelimString String
+hi def link dRawString String
+hi def link dString String
+hi def link dHexString String
+hi def link dCharacter Character
+hi def link dEscSequence SpecialChar
+hi def link dFormat SpecialChar
+hi def link dSpecialCharError Error
+hi def link dOctalError Error
+hi def link dOperator Operator
+hi def link dOpOverload Identifier
+hi def link dConstant Constant
+hi def link dTypedef Typedef
+hi def link dEnum Structure
+hi def link dStructure Structure
+hi def link dTodo Todo
+hi def link dType Type
+hi def link dLineComment Comment
+hi def link dBlockComment Comment
+hi def link dNestedComment Comment
+hi def link dCommentError Error
+hi def link dNestedCommentError Error
+hi def link dCommentStartError Error
+hi def link dExternal Include
+hi def link dAnnotation PreProc
+hi def link dSharpBang PreProc
+hi def link dAttribute StorageClass
+hi def link dIdentifier Identifier
+hi def link dVersion dStatement
+hi def link dVersionIdentifier Identifier
+hi def link dScopeIdentifier Identifier
+hi def link dTraitsIdentifier Identifier
+hi def link dPragma PreProc
+hi def link dPragmaIdentifier Identifier
+hi def link dExtern dExternal
+hi def link dExternIdentifier Identifier
+
+" Marks contents of the asm statment body as special
+
+syn match dAsmStatement "\<asm\>"
+syn region dAsmBody start="asm[\n]*\s*{"hs=e+1 end="}"he=e-1 contains=dAsmStatement,dAsmOpCode,@dComment,DUserLabel
+
+hi def link dAsmBody dUnicode
+hi def link dAsmStatement dStatement
+hi def link dAsmOpCode Identifier
+
+syn keyword dAsmOpCode contained aaa aad aam aas
+syn keyword dAsmOpCode contained add addpd addps addsd
+syn keyword dAsmOpCode contained and andnpd andnps andpd
+syn keyword dAsmOpCode contained arpl bound bsf bsr
+syn keyword dAsmOpCode contained bt btc btr bts
+syn keyword dAsmOpCode contained call bswap andps addss
+syn keyword dAsmOpCode contained cbw cdq clc cld
+syn keyword dAsmOpCode contained cli clts cmc cmova
+syn keyword dAsmOpCode contained cmovb cmovbe cmovc cmove
+syn keyword dAsmOpCode contained cmovge cmovl cmovle cmovna
+syn keyword dAsmOpCode contained cmovnae cmovg cmovae clflush
+syn keyword dAsmOpCode contained cmovnb cmovnbe cmovnc cmovne
+syn keyword dAsmOpCode contained cmovnge cmovnl cmovnle cmovno
+syn keyword dAsmOpCode contained cmovns cmovnz cmovo cmovp
+syn keyword dAsmOpCode contained cmovpo cmovs cmovz cmp
+syn keyword dAsmOpCode contained cmppd cmovpe cmovnp cmovng
+syn keyword dAsmOpCode contained cmpps cmps cmpsb cmpsd
+syn keyword dAsmOpCode contained cmpsw cmpxch8b cmpxchg comisd
+syn keyword dAsmOpCode contained cpuid cvtdq2pd cvtdq2ps cvtpd2dq
+syn keyword dAsmOpCode contained cvtpd2ps cvtpi2pd cvtpi2ps cvtps2dq
+syn keyword dAsmOpCode contained cvtps2pd cvtpd2pi comiss cmpss
+syn keyword dAsmOpCode contained cvtps2pi cvtsd2si cvtsd2ss cvtsi2sd
+syn keyword dAsmOpCode contained cvtss2sd cvtss2si cvttpd2dq cvttpd2pi
+syn keyword dAsmOpCode contained cvttps2pi cvttsd2si cvttss2si cwd
+syn keyword dAsmOpCode contained da daa das db
+syn keyword dAsmOpCode contained dd cwde cvttps2dq cvtsi2ss
+syn keyword dAsmOpCode contained de dec df di
+syn keyword dAsmOpCode contained divpd divps divsd divss
+syn keyword dAsmOpCode contained dq ds dt dw
+syn keyword dAsmOpCode contained enter f2xm1 fabs fadd
+syn keyword dAsmOpCode contained faddp emms dl div
+syn keyword dAsmOpCode contained fbld fbstp fchs fclex
+syn keyword dAsmOpCode contained fcmovbe fcmove fcmovnb fcmovnbe
+syn keyword dAsmOpCode contained fcmovnu fcmovu fcom fcomi
+syn keyword dAsmOpCode contained fcomp fcompp fcos fdecstp
+syn keyword dAsmOpCode contained fdisi fcomip fcmovne fcmovb
+syn keyword dAsmOpCode contained fdiv fdivp fdivr fdivrp
+syn keyword dAsmOpCode contained ffree fiadd ficom ficomp
+syn keyword dAsmOpCode contained fidivr fild fimul fincstp
+syn keyword dAsmOpCode contained fist fistp fisub fisubr
+syn keyword dAsmOpCode contained fld finit fidiv feni
+syn keyword dAsmOpCode contained fld1 fldcw fldenv fldl2e
+syn keyword dAsmOpCode contained fldlg2 fldln2 fldpi fldz
+syn keyword dAsmOpCode contained fmulp fnclex fndisi fneni
+syn keyword dAsmOpCode contained fnop fnsave fnstcw fnstenv
+syn keyword dAsmOpCode contained fnstsw fninit fmul fldl2t
+syn keyword dAsmOpCode contained fpatan fprem fprem1 fptan
+syn keyword dAsmOpCode contained frstor fsave fscale fsetpm
+syn keyword dAsmOpCode contained fsincos fsqrt fst fstcw
+syn keyword dAsmOpCode contained fstp fstsw fsub fsubp
+syn keyword dAsmOpCode contained fsubr fstenv fsin frndint
+syn keyword dAsmOpCode contained fsubrp ftst fucom fucomi
+syn keyword dAsmOpCode contained fucomp fucompp fwait fxam
+syn keyword dAsmOpCode contained fxrstor fxsave fxtract fyl2x
+syn keyword dAsmOpCode contained hlt idiv imul in
+syn keyword dAsmOpCode contained inc fyl2xp1 fxch fucomip
+syn keyword dAsmOpCode contained ins insb insd insw
+syn keyword dAsmOpCode contained into invd invlpg iret
+syn keyword dAsmOpCode contained ja jae jb jbe
+syn keyword dAsmOpCode contained jcxz je jecxz jg
+syn keyword dAsmOpCode contained jge jc iretd int
+syn keyword dAsmOpCode contained jl jle jmp jna
+syn keyword dAsmOpCode contained jnb jnbe jnc jne
+syn keyword dAsmOpCode contained jnge jnl jnle jno
+syn keyword dAsmOpCode contained jns jnz jo jp
+syn keyword dAsmOpCode contained jpe jnp jng jnae
+syn keyword dAsmOpCode contained jpo js jz lahf
+syn keyword dAsmOpCode contained ldmxcsr lds lea leave
+syn keyword dAsmOpCode contained lfence lfs lgdt lgs
+syn keyword dAsmOpCode contained lldt lmsw lock lods
+syn keyword dAsmOpCode contained lodsb lidt les lar
+syn keyword dAsmOpCode contained lodsd lodsw loop loope
+syn keyword dAsmOpCode contained loopnz loopz lsl lss
+syn keyword dAsmOpCode contained maskmovdqu maskmovq maxpd maxps
+syn keyword dAsmOpCode contained maxss mfence minpd minps
+syn keyword dAsmOpCode contained minsd maxsd ltr loopne
+syn keyword dAsmOpCode contained minss mov movapd movaps
+syn keyword dAsmOpCode contained movdq2q movdqa movdqu movhlps
+syn keyword dAsmOpCode contained movhps movlhps movlpd movlps
+syn keyword dAsmOpCode contained movmskps movntdq movnti movntpd
+syn keyword dAsmOpCode contained movntps movmskpd movhpd movd
+syn keyword dAsmOpCode contained movntq movq movq2dq movs
+syn keyword dAsmOpCode contained movsd movss movsw movsx
+syn keyword dAsmOpCode contained movups movzx mul mulpd
+syn keyword dAsmOpCode contained mulsd mulss neg nop
+syn keyword dAsmOpCode contained not mulps movupd movsb
+syn keyword dAsmOpCode contained or orpd orps out
+syn keyword dAsmOpCode contained outsb outsd outsw packssdw
+syn keyword dAsmOpCode contained packuswb paddb paddd paddq
+syn keyword dAsmOpCode contained paddsw paddusb paddusw paddw
+syn keyword dAsmOpCode contained pand paddsb packsswb outs
+syn keyword dAsmOpCode contained pandn pavgb pavgw pcmpeqb
+syn keyword dAsmOpCode contained pcmpeqw pcmpgtb pcmpgtd pcmpgtw
+syn keyword dAsmOpCode contained pinsrw pmaddwd pmaxsw pmaxub
+syn keyword dAsmOpCode contained pminub pmovmskb pmulhuw pmulhw
+syn keyword dAsmOpCode contained pmullw pminsw pextrw pcmpeqd
+syn keyword dAsmOpCode contained pmuludq pop popa popad
+syn keyword dAsmOpCode contained popfd por prefetchnta prefetcht0
+syn keyword dAsmOpCode contained prefetcht2 psadbw pshufd pshufhw
+syn keyword dAsmOpCode contained pshufw pslld pslldq psllq
+syn keyword dAsmOpCode contained psllw pshuflw prefetcht1 popf
+syn keyword dAsmOpCode contained psrad psraw psrld psrldq
+syn keyword dAsmOpCode contained psrlw psubb psubd psubq
+syn keyword dAsmOpCode contained psubsw psubusb psubusw psubw
+syn keyword dAsmOpCode contained punpckhdq punpckhqdq punpckhwd punpcklbw
+syn keyword dAsmOpCode contained punpckldq punpckhbw psubsb psrlq
+syn keyword dAsmOpCode contained punpcklqdq punpcklwd push pusha
+syn keyword dAsmOpCode contained pushf pushfd pxor rcl
+syn keyword dAsmOpCode contained rcpss rcr rdmsr rdpmc
+syn keyword dAsmOpCode contained rep repe repne repnz
+syn keyword dAsmOpCode contained repz rdtsc rcpps pushad
+syn keyword dAsmOpCode contained ret retf rol ror
+syn keyword dAsmOpCode contained rsqrtps rsqrtss sahf sal
+syn keyword dAsmOpCode contained sbb scas scasb scasd
+syn keyword dAsmOpCode contained seta setae setb setbe
+syn keyword dAsmOpCode contained setc scasw sar rsm
+syn keyword dAsmOpCode contained sete setg setge setl
+syn keyword dAsmOpCode contained setna setnae setnb setnbe
+syn keyword dAsmOpCode contained setne setng setnge setnl
+syn keyword dAsmOpCode contained setno setnp setns setnz
+syn keyword dAsmOpCode contained seto setnle setnc setle
+syn keyword dAsmOpCode contained setp setpe setpo sets
+syn keyword dAsmOpCode contained sfence sgdt shl shld
+syn keyword dAsmOpCode contained shrd shufpd shufps sidt
+syn keyword dAsmOpCode contained smsw sqrtpd sqrtps sqrtsd
+syn keyword dAsmOpCode contained sqrtss sldt shr setz
+syn keyword dAsmOpCode contained stc std sti stmxcsr
+syn keyword dAsmOpCode contained stosb stosd stosw str
+syn keyword dAsmOpCode contained subpd subps subsd subss
+syn keyword dAsmOpCode contained sysexit test ucomisd ucomiss
+syn keyword dAsmOpCode contained ud2 sysenter sub stos
+syn keyword dAsmOpCode contained unpckhpd unpckhps unpcklpd unpcklps
+syn keyword dAsmOpCode contained verw wbinvd wrmsr xadd
+syn keyword dAsmOpCode contained xchg xlatb xor xorpd
+syn keyword dAsmOpCode contained xorps pfrcpit1 pfmin movddup
+syn keyword dAsmOpCode contained addsubpd addsubps fisttp haddps
+syn keyword dAsmOpCode contained hsubpd hsubps lddqu monitor
+syn keyword dAsmOpCode contained haddpd xlat wait verr
+syn keyword dAsmOpCode contained movshdup movsldup mwait pfcmpeq
+syn keyword dAsmOpCode contained pavgusb pf2id pfacc pfadd
+syn keyword dAsmOpCode contained pfcmpge pfcmpgt pfmax pfmul
+syn keyword dAsmOpCode contained pfnacc pfpnacc pfrcp pfrcpit1
+syn keyword dAsmOpCode contained pfrsqit1 pfrsqrt pfsub pfsubr
+syn keyword dAsmOpCode contained pmulhrw pswapd syscall sysret
+syn keyword dAsmOpCode contained vpmuldq xgetbv cmpxchg8b cmpxchg16b
+syn keyword dAsmOpCode contained pabsb pabsd pabsw palignr
+syn keyword dAsmOpCode contained phaddd phaddsw phaddw phsubd
+syn keyword dAsmOpCode contained phsubsw phsubw pmaddubsw pmulhrsw
+syn keyword dAsmOpCode contained pshufb psignb psignd psignw
+syn keyword dAsmOpCode contained popfq pushfq blendpd blendps
+syn keyword dAsmOpCode contained blendvpd blendvps extractps insertps
+syn keyword dAsmOpCode contained movntdqa mpsadbw packusdw pblendvb
+syn keyword dAsmOpCode contained pblendw pcmpeqq pextrb pextrd
+syn keyword dAsmOpCode contained pextrq phminposuw pinsrb pinsrd
+syn keyword dAsmOpCode contained pinsrq pmaxsb pmaxsd pmaxud
+syn keyword dAsmOpCode contained pmaxuw pminsb pminsd pminud
+syn keyword dAsmOpCode contained pminuw pmulld ptest roundpd
+syn keyword dAsmOpCode contained roundps roundsd roundss pmuldq
+syn keyword dAsmOpCode contained pmovsxbd pmovsxdq pmovzxbq pmovzxdq
+syn keyword dAsmOpCode contained pmovsxbq pmovsxwd pmovzxbq pmovzxwd
+syn keyword dAsmOpCode contained pmovsxbw pmovsxwq pmovzxbw pmovzxwq
+syn keyword dAsmOpCode contained crc32 pcmpestri pcmpestrm pcmpgtq
+syn keyword dAsmOpCode contained pcmpistri pcmpistrm popcnt pi2fd
+syn keyword dAsmOpCode contained adc
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/dart.vim b/runtime/syntax/dart.vim
new file mode 100644
index 0000000..d1c2bf2
--- /dev/null
+++ b/runtime/syntax/dart.vim
@@ -0,0 +1,90 @@
+" Vim syntax file
+"
+" Language: Dart
+" Maintainer: Eugene 'pr3d4t0r' Ciurana <dart.syntax AT cime.net >
+" Source: https://github.com/pr3d4t0r/dart-vim-syntax
+" Last Update: 2019 Oct 19
+"
+" License: Vim is Charityware. dart.vim syntax is Charityware.
+" (c) Copyright 2019 by Eugene Ciurana / pr3d4t0r. Licensed
+" under the standard VIM LICENSE - Vim command :help uganda.txt
+" for details.
+"
+" Questions, comments: <dart.syntax AT cime.net>
+" https://ciurana.eu/pgp, https://keybase.io/pr3d4t0r
+"
+" vim: set fileencoding=utf-8:
+
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+
+syn keyword dartCommentTodo contained TODO FIXME XXX TBD
+syn match dartLineComment "//.*" contains=dartTodo,@Spell
+syn match dartCommentSkip "^[ \t]*\*\($\|[ \t]\+\)"
+syn region dartComment start="/\*" end="\*/" contains=@Spell,dartTodo
+syn keyword dartReserved assert async await class const export extends external final hide import implements interface library mixin on show super sync yield
+syn match dartNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
+
+
+syn keyword dartBoolean false true
+syn keyword dartBranch break continue
+syn keyword dartConditional if else switch
+syn keyword dartException catch finally rethrow throw try
+syn keyword dartIdentifier abstract covariant deferred dynamic factory Function operator part static this typedef var
+syn keyword dartLabel case default
+syn keyword dartNull null
+syn keyword dartOperator is new
+syn keyword dartRepeat for do in while
+syn keyword dartStatement return with
+syn keyword dartType bool double enum int String StringBuffer void
+syn keyword dartTodo contained TODO FIXME XXX
+
+
+syn match dartEscape contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
+syn match dartSpecialError contained "\\."
+syn match dartStrInterpol contained "\${[\x, _]*\}"
+
+syn region dartDQString start=+"+ end=+"+ end=+$+ contains=dartEscape,dartStrInterpol,dartSpecialError,@Spell
+syn region dartSQString start=+'+ end=+'+ end=+$+ contains=dartEscape,dartStrInterpol,dartSpecialError,@Spell
+
+syn match dartBraces "[{}\[\]]"
+syn match dartParens "[()]"
+
+
+syn sync fromstart
+syn sync maxlines=100
+
+
+hi def link dartBoolean Boolean
+hi def link dartBranch Conditional
+hi def link dartComment Comment
+hi def link dartConditional Conditional
+hi def link dartDQString String
+hi def link dartEscape SpecialChar
+hi def link dartException Exception
+hi def link dartIdentifier Identifier
+hi def link dartLabel Label
+hi def link dartLineComment Comment
+hi def link dartNull Keyword
+hi def link dartOperator Operator
+hi def link dartRepeat Repeat
+hi def link dartReserved Keyword
+hi def link dartSQString String
+hi def link dartSpecialError Error
+hi def link dartStatement Statement
+hi def link dartStrInterpol Special
+hi def link dartTodo Todo
+hi def link dartType Type
+
+
+let b:current_syntax = "dart"
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
diff --git a/runtime/syntax/datascript.vim b/runtime/syntax/datascript.vim
new file mode 100644
index 0000000..7b686a1
--- /dev/null
+++ b/runtime/syntax/datascript.vim
@@ -0,0 +1,102 @@
+" Vim syntax file
+" Language: DataScript
+" Maintainer: Dominique Pelle <dominique.pelle@gmail.com>
+" Last Change: 2015 Jul 30
+"
+" DataScript is a formal language for modelling binary datatypes,
+" bitstreams or file formats. For more information, see:
+"
+" http://dstools.sourceforge.net/DataScriptLanguageOverview.html
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+syn keyword dsPackage import package
+syn keyword dsType bit bool string
+syn keyword dsType int int8 int16 int32 int64
+syn keyword dsType uint8 uint16 uint32 uint64
+syn keyword dsType varint16 varint32 varint64
+syn keyword dsType varuint16 varuint32 varuint64
+syn keyword dsType leint16 leint32 leint64
+syn keyword dsType leuint16 leuint32 leuint64
+syn keyword dsEndian little big
+syn keyword dsAlign align
+syn keyword dsLabel case default
+syn keyword dsConditional if condition
+syn keyword dsBoolean true false
+syn keyword dsCompound union choice on enum bitmask subtype explicit
+syn keyword dsKeyword function return
+syn keyword dsOperator sizeof bitsizeof lengthof is sum forall in
+syn keyword dsStorageClass const
+syn keyword dsTodo contained TODO FIXME XXX
+syn keyword dsSql sql sql_table sql_database sql_pragma sql_index
+syn keyword dsSql sql_integer sql_metadata sql_key sql_virtual
+syn keyword dsSql using reference_key foreign_key to
+
+" dsCommentGroup allows adding matches for special things in comments.
+syn cluster dsCommentGroup contains=dsTodo
+
+syn match dsOffset display "^\s*[a-zA-Z_:\.][a-zA-Z0-9_:\.]*\s*:"
+
+syn match dsNumber display "\<\d\+\>"
+syn match dsNumberHex display "\<0[xX]\x\+\>"
+syn match dsNumberBin display "\<[01]\+[bB]\>" contains=dsBinaryB
+syn match dsBinaryB display contained "[bB]\>"
+syn match dsOctal display "\<0\o\+\>" contains=dsOctalZero
+syn match dsOctalZero display contained "\<0"
+
+syn match dsOctalError display "\<0\o*[89]\d*\>"
+
+syn match dsCommentError display "\*/"
+syn match dsCommentStartError display "/\*"me=e-1 contained
+
+syn region dsCommentL
+ \ start="//" skip="\\$" end="$" keepend
+ \ contains=@dsCommentGroup,@Spell
+syn region dsComment
+ \ matchgroup=dsCommentStart start="/\*" end="\*/"
+ \ contains=@dsCommentGroup,dsCommentStartError,@Spell extend
+
+syn region dsString
+ \ start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
+
+syn sync ccomment dsComment
+
+" Define the default highlighting.
+hi def link dsType Type
+hi def link dsEndian StorageClass
+hi def link dsStorageClass StorageClass
+hi def link dsAlign Label
+hi def link dsLabel Label
+hi def link dsOffset Label
+hi def link dsSql PreProc
+hi def link dsCompound Structure
+hi def link dsConditional Conditional
+hi def link dsBoolean Boolean
+hi def link dsKeyword Statement
+hi def link dsString String
+hi def link dsNumber Number
+hi def link dsNumberBin Number
+hi def link dsBinaryB Special
+hi def link dsOctal Number
+hi def link dsOctalZero Special
+hi def link dsOctalError Error
+hi def link dsNumberHex Number
+hi def link dsTodo Todo
+hi def link dsOperator Operator
+hi def link dsPackage Include
+hi def link dsCommentError Error
+hi def link dsCommentStartError Error
+hi def link dsCommentStart dsComment
+hi def link dsCommentL dsComment
+hi def link cCommentL dsComment
+hi def link dsComment Comment
+
+let b:current_syntax = "datascript"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/runtime/syntax/dcd.vim b/runtime/syntax/dcd.vim
new file mode 100644
index 0000000..058d272
--- /dev/null
+++ b/runtime/syntax/dcd.vim
@@ -0,0 +1,51 @@
+" Vim syntax file
+" Language: WildPackets EtherPeek Decoder (.dcd) file
+" Maintainer: Christopher Shinn <christopher@lucent.com>
+" Last Change: 2003 Apr 25
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Keywords
+syn keyword dcdFunction DCod TRTS TNXT CRLF
+syn match dcdFunction display "\(STR\)\#"
+syn keyword dcdLabel LABL
+syn region dcdLabel start="[A-Z]" end=";"
+syn keyword dcdConditional CEQU CNEQ CGTE CLTE CBIT CLSE
+syn keyword dcdConditional LSTS LSTE LSTZ
+syn keyword dcdConditional TYPE TTST TEQU TNEQ TGTE TLTE TBIT TLSE TSUB SKIP
+syn keyword dcdConditional MARK WHOA
+syn keyword dcdConditional SEQU SNEQ SGTE SLTE SBIT
+syn match dcdConditional display "\(CST\)\#" "\(TST\)\#"
+syn keyword dcdDisplay HBIT DBIT BBIT
+syn keyword dcdDisplay HBYT DBYT BBYT
+syn keyword dcdDisplay HWRD DWRD BWRD
+syn keyword dcdDisplay HLNG DLNG BLNG
+syn keyword dcdDisplay D64B
+syn match dcdDisplay display "\(HEX\)\#" "\(CHR\)\#" "\(EBC\)\#"
+syn keyword dcdDisplay HGLB DGLB BGLB
+syn keyword dcdDisplay DUMP
+syn keyword dcdStatement IPLG IPV6 ATLG AT03 AT01 ETHR TRNG PRTO PORT
+syn keyword dcdStatement TIME OSTP PSTR CSTR NBNM DMPE FTPL CKSM FCSC
+syn keyword dcdStatement GBIT GBYT GWRD GLNG
+syn keyword dcdStatement MOVE ANDG ORRG NOTG ADDG SUBG MULG DIVG MODG INCR DECR
+syn keyword dcdSpecial PRV1 PRV2 PRV3 PRV4 PRV5 PRV6 PRV7 PRV8
+
+" Comment
+syn region dcdComment start="\*" end="\;"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link dcdFunction Identifier
+hi def link dcdLabel Constant
+hi def link dcdConditional Conditional
+hi def link dcdDisplay Type
+hi def link dcdStatement Statement
+hi def link dcdSpecial Special
+hi def link dcdComment Comment
+
+
+let b:current_syntax = "dcd"
diff --git a/runtime/syntax/dcl.vim b/runtime/syntax/dcl.vim
new file mode 100644
index 0000000..530fbdb
--- /dev/null
+++ b/runtime/syntax/dcl.vim
@@ -0,0 +1,152 @@
+" Vim syntax file
+" Language: DCL (Digital Command Language - vms)
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Last Change: Mar 26, 2019
+" Version: 13
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_DCL
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if (v:version == 704 && has("patch-7.4.1142")) || v:version > 704
+ syn iskeyword $,@,48-57,_
+else
+ setlocal iskeyword=$,@,48-57,_
+endif
+
+syn case ignore
+syn keyword dclInstr accounting del[ete] gen[cat] mou[nt] run
+syn keyword dclInstr all[ocate] dep[osit] gen[eral] ncp run[off]
+syn keyword dclInstr ana[lyze] dia[gnose] gos[ub] ncs sca
+syn keyword dclInstr app[end] dif[ferences] got[o] on sea[rch]
+syn keyword dclInstr ass[ign] dir[ectory] hel[p] ope[n] set
+syn keyword dclInstr att[ach] dis[able] ico[nv] pas[cal] sho[w]
+syn keyword dclInstr aut[horize] dis[connect] if pas[sword] sor[t]
+syn keyword dclInstr aut[ogen] dis[mount] ini[tialize] pat[ch] spa[wn]
+syn keyword dclInstr bac[kup] dpm[l] inq[uire] pca sta[rt]
+syn keyword dclInstr cal[l] dqs ins[tall] pho[ne] sto[p]
+syn keyword dclInstr can[cel] dsr job pri[nt] sub[mit]
+syn keyword dclInstr cc dst[graph] lat[cp] pro[duct] sub[routine]
+syn keyword dclInstr clo[se] dtm lib[rary] psw[rap] swx[cr]
+syn keyword dclInstr cms dum[p] lic[ense] pur[ge] syn[chronize]
+syn keyword dclInstr con[nect] edi[t] lin[k] qde[lete] sys[gen]
+syn keyword dclInstr con[tinue] ena[ble] lmc[p] qse[t] sys[man]
+syn keyword dclInstr con[vert] end[subroutine] loc[ale] qsh[ow] tff
+syn keyword dclInstr cop[y] eod log[in] rea[d] then
+syn keyword dclInstr cre[ate] eoj log[out] rec[all] typ[e]
+syn keyword dclInstr cxx exa[mine] lse[dit] rec[over] uil
+syn keyword dclInstr cxx[l_help] exc[hange] mac[ro] ren[ame] unl[ock]
+syn keyword dclInstr dea[llocate] exi[t] mai[l] rep[ly] ves[t]
+syn keyword dclInstr dea[ssign] fdl mer[ge] req[uest] vie[w]
+syn keyword dclInstr deb[ug] flo[wgraph] mes[sage] ret[urn] wai[t]
+syn keyword dclInstr dec[k] fon[t] mms rms wri[te]
+syn keyword dclInstr def[ine] for[tran]
+
+syn keyword dclLexical f$context f$edit f$getjpi f$message f$setprv
+syn keyword dclLexical f$csid f$element f$getqui f$mode f$string
+syn keyword dclLexical f$cvsi f$environment f$getsyi f$parse f$time
+syn keyword dclLexical f$cvtime f$extract f$identifier f$pid f$trnlnm
+syn keyword dclLexical f$cvui f$fao f$integer f$privilege f$type
+syn keyword dclLexical f$device f$file_attributes f$length f$process f$user
+syn keyword dclLexical f$directory f$getdvi f$locate f$search f$verify
+
+syn match dclMdfy "/\I\i*" nextgroup=dclMdfySet,dclMdfySetString
+syn match dclMdfySet "=[^ \t"]*" contained
+syn region dclMdfySet matchgroup=dclMdfyBrkt start="=\[" matchgroup=dclMdfyBrkt end="]" contains=dclMdfySep
+syn region dclMdfySetString start='="' skip='""' end='"' contained
+syn match dclMdfySep "[:,]" contained
+
+" Numbers
+syn match dclNumber "\d\+"
+
+" Varname (mainly to prevent dclNumbers from being recognized when part of a dclVarname)
+syn match dclVarname "\I\i*"
+
+" Filenames (devices, paths)
+syn match dclDevice "\I\i*\(\$\I\i*\)\=:[^=]"me=e-1 nextgroup=dclDirPath,dclFilename
+syn match dclDirPath "\[\(\I\i*\.\)*\I\i*\]" contains=dclDirSep nextgroup=dclFilename
+syn match dclFilename "\I\i*\$\(\I\i*\)\=\.\(\I\i*\)*\(;\d\+\)\=" contains=dclDirSep
+syn match dclFilename "\I\i*\.\(\I\i*\)\=\(;\d\+\)\=" contains=dclDirSep contained
+syn match dclDirSep "[[\].;]"
+
+" Strings
+syn region dclString start='"' skip='""' end='"' contains=@Spell
+
+" $ stuff and comments
+syn cluster dclCommentGroup contains=dclStart,dclTodo,@Spell
+syn match dclStart "^\$" skipwhite nextgroup=dclExe
+syn match dclContinue "-$"
+syn match dclComment "^\$!.*$" contains=@dclCommentGroup
+syn match dclExe "\I\i*" contained
+syn keyword dclTodo contained COMBAK DEBUG FIXME TODO XXX
+
+" Assignments and Operators
+syn match dclAssign ":==\="
+syn match dclAssign "="
+syn match dclOper "--\|+\|\*\|/"
+syn match dclLogOper "\.[a-zA-Z][a-zA-Z][a-zA-Z]\=\." contains=dclLogical,dclLogSep
+syn keyword dclLogical contained and ge gts lt nes
+syn keyword dclLogical contained eq ges le lts not
+syn keyword dclLogical contained eqs gt les ne or
+syn match dclLogSep "\." contained
+
+" @command procedures
+syn match dclCmdProcStart "@" nextgroup=dclCmdProc
+syn match dclCmdProc "\I\i*\(\.\I\i*\)\=" contained
+syn match dclCmdProc "\I\i*:" contained nextgroup=dclCmdDirPath,dclCmdProc
+syn match dclCmdDirPath "\[\(\I\i*\.\)*\I\i*\]" contained nextgroup=delCmdProc
+
+" labels
+syn match dclGotoLabel "^\$\s*\I\i*:\s*$" contains=dclStart
+
+" parameters
+syn match dclParam "'\I[a-zA-Z0-9_$]*'\="
+
+" () matching (the clusters are commented out until a vim/vms comes out for v5.2+)
+"syn cluster dclNextGroups contains=dclCmdDirPath,dclCmdProc,dclCmdProc,dclDirPath,dclFilename,dclFilename,dclMdfySet,dclMdfySetString,delCmdProc,dclExe,dclTodo
+"syn region dclFuncList matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,@dclNextGroups
+syn region dclFuncList matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,dclCmdDirPath,dclCmdProc,dclCmdProc,dclDirPath,dclFilename,dclFilename,dclMdfySet,dclMdfySetString,delCmdProc,dclExe,dclTodo
+syn match dclError ")"
+
+" Define the default highlighting.
+if !exists("skip_dcl_syntax_inits")
+
+ hi def link dclLogOper dclError
+ hi def link dclLogical dclOper
+ hi def link dclLogSep dclSep
+
+ hi def link dclAssign Operator
+ hi def link dclCmdProc Special
+ hi def link dclCmdProcStart Operator
+ hi def link dclComment Comment
+ hi def link dclContinue Statement
+ hi def link dclDevice Identifier
+ hi def link dclDirPath Identifier
+ hi def link dclDirPath Identifier
+ hi def link dclDirSep Delimiter
+ hi def link dclError Error
+ hi def link dclExe Statement
+ hi def link dclFilename NONE
+ hi def link dclGotoLabel Label
+ hi def link dclInstr Statement
+ hi def link dclLexical Function
+ hi def link dclMdfy Type
+ hi def link dclMdfyBrkt Delimiter
+ hi def link dclMdfySep Delimiter
+ hi def link dclMdfySet Type
+ hi def link dclMdfySetString String
+ hi def link dclNumber Number
+ hi def link dclOper Operator
+ hi def link dclParam Special
+ hi def link dclSep Delimiter
+ hi def link dclStart Delimiter
+ hi def link dclString String
+ hi def link dclTodo Todo
+
+endif
+
+let b:current_syntax = "dcl"
+
+" vim: ts=16
diff --git a/runtime/syntax/debchangelog.vim b/runtime/syntax/debchangelog.vim
new file mode 100644
index 0000000..d3c3d39
--- /dev/null
+++ b/runtime/syntax/debchangelog.vim
@@ -0,0 +1,77 @@
+" Vim syntax file
+" Language: Debian changelog files
+" Maintainer: Debian Vim Maintainers
+" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
+" Wichert Akkerman <wakkerma@debian.org>
+" Last Change: 2023 Jan 16
+" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debchangelog.vim
+
+" Standard syntax initialization
+if exists('b:current_syntax')
+ finish
+endif
+
+" Case doesn't matter for us
+syn case ignore
+
+let s:urgency='urgency=\(low\|medium\|high\|emergency\|critical\)\( [^[:space:],][^,]*\)\='
+let s:binNMU='binary-only=yes'
+
+let s:cpo = &cpo
+set cpo-=C
+let s:supported = [
+ \ 'oldstable', 'stable', 'testing', 'unstable', 'experimental', 'sid', 'rc-buggy',
+ \ 'buster', 'bullseye', 'bookworm', 'trixie', 'forky',
+ \
+ \ 'trusty', 'xenial', 'bionic', 'focal', 'jammy', 'kinetic', 'lunar',
+ \ 'devel'
+ \ ]
+let s:unsupported = [
+ \ 'frozen', 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
+ \ 'woody', 'sarge', 'etch', 'lenny', 'squeeze', 'wheezy',
+ \ 'jessie', 'stretch',
+ \
+ \ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty',
+ \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid',
+ \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy',
+ \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic',
+ \ 'disco', 'eoan', 'hirsute', 'impish', 'groovy'
+ \ ]
+let &cpo=s:cpo
+
+" Define some common expressions we can use later on
+syn match debchangelogName contained "^[[:alnum:]][[:alnum:].+-]\+ "
+exe 'syn match debchangelogFirstKV contained "; \('.s:urgency.'\|'.s:binNMU.'\)"'
+exe 'syn match debchangelogOtherKV contained ", \('.s:urgency.'\|'.s:binNMU.'\)"'
+exe 'syn match debchangelogTarget contained "\%( \%('.join(s:supported, '\|').'\)\>[-[:alnum:]]*\)\+"'
+exe 'syn match debchangelogUnsupportedTarget contained "\%( \%('.join(s:unsupported, '\|').'\)\>[-[:alnum:]]*\)\+"'
+syn match debchangelogUnreleased contained / UNRELEASED/
+syn match debchangelogVersion contained "(.\{-})"
+syn match debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*"
+syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"
+syn match debchangelogEmail contained "[_=[:alnum:].+-]\+@[[:alnum:]./\-]\+"
+syn match debchangelogEmail contained "<.\{-}>"
+
+" Define the entries that make up the changelog
+syn region debchangelogHeader start="^[^ ]" end="$" contains=debchangelogName,debchangelogFirstKV,debchangelogOtherKV,debchangelogTarget,debchangelogUnsupportedTarget,debchangelogUnreleased,debchangelogVersion,debchangelogBinNMU oneline
+syn region debchangelogFooter start="^ [^ ]" end="$" contains=debchangelogEmail oneline
+syn region debchangelogEntry start="^ " end="$" contains=debchangelogCloses,debchangelogLP oneline
+
+" Associate our matches and regions with pretty colours
+hi def link debchangelogHeader Error
+hi def link debchangelogFooter Identifier
+hi def link debchangelogEntry Normal
+hi def link debchangelogCloses Statement
+hi def link debchangelogLP Statement
+hi def link debchangelogFirstKV Identifier
+hi def link debchangelogOtherKV Identifier
+hi def link debchangelogName Comment
+hi def link debchangelogVersion Identifier
+hi def link debchangelogTarget Identifier
+hi def link debchangelogUnsupportedTarget Identifier
+hi def link debchangelogUnreleased WarningMsg
+hi def link debchangelogEmail Special
+
+let b:current_syntax = 'debchangelog'
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/debcontrol.vim b/runtime/syntax/debcontrol.vim
new file mode 100644
index 0000000..c79b702
--- /dev/null
+++ b/runtime/syntax/debcontrol.vim
@@ -0,0 +1,145 @@
+" Vim syntax file
+" Language: Debian control files
+" Maintainer: Debian Vim Maintainers
+" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
+" Wichert Akkerman <wakkerma@debian.org>
+" Last Change: 2023 Jan 16
+" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debcontrol.vim
+
+" Standard syntax initialization
+if exists('b:current_syntax')
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Should match case except for the keys of each field
+syn case match
+
+syn iskeyword @,48-57,-
+
+" Everything that is not explicitly matched by the rules below
+syn match debcontrolElse "^.*$"
+
+" Common seperators
+syn match debControlComma ",[ \t]*"
+syn match debControlSpace "[ \t]"
+
+let s:kernels = ['linux', 'hurd', 'kfreebsd', 'knetbsd', 'kopensolaris', 'netbsd']
+let s:archs = [
+ \ 'alpha', 'amd64', 'armeb', 'armel', 'armhf', 'arm64', 'avr32', 'hppa'
+ \, 'i386', 'ia64', 'lpia', 'm32r', 'm68k', 'mipsel', 'mips64el', 'mips'
+ \, 'powerpcspe', 'powerpc', 'ppc64el', 'ppc64', 'riscv64', 's390x', 's390', 'sh3eb'
+ \, 'sh3', 'sh4eb', 'sh4', 'sh', 'sparc64', 'sparc', 'x32'
+ \ ]
+let s:pairs = [
+ \ 'hurd-i386', 'kfreebsd-i386', 'kfreebsd-amd64', 'knetbsd-i386'
+ \, 'kopensolaris-i386', 'netbsd-alpha', 'netbsd-i386'
+ \ ]
+
+" Define some common expressions we can use later on
+syn keyword debcontrolArchitecture contained all any
+exe 'syn keyword debcontrolArchitecture contained '. join(map(copy(s:kernels), {k,v -> v .'-any'}))
+exe 'syn keyword debcontrolArchitecture contained '. join(map(copy(s:archs), {k,v -> 'any-'.v}))
+exe 'syn keyword debcontrolArchitecture contained '. join(s:archs)
+exe 'syn keyword debcontrolArchitecture contained '. join(s:pairs)
+
+unlet s:kernels s:archs s:pairs
+
+" Keep in sync with https://metadata.ftp-master.org/sections.822
+" curl -q https://metadata.ftp-master.debian.org/sections.822 2>/dev/null| grep-dctrl -n --not -FSection -sSection / -
+let s:sections = [
+ \ 'admin', 'cli-mono', 'comm', 'database', 'debian-installer', 'debug'
+ \, 'devel', 'doc', 'editors', 'education', 'electronics', 'embedded'
+ \, 'fonts', 'games', 'gnome', 'gnu-r', 'gnustep', 'golang', 'graphics'
+ \, 'hamradio', 'haskell', 'httpd', 'interpreters', 'introspection'
+ \, 'java', 'javascript', 'kde', 'kernel', 'libdevel', 'libs', 'lisp'
+ \, 'localization', 'mail', 'math', 'metapackages', 'misc', 'net', 'news'
+ \, 'ocaml', 'oldlibs', 'otherosfs', 'perl', 'php', 'python', 'raku'
+ \, 'ruby', 'rust', 'science', 'shells', 'sound', 'tasks', 'tex', 'text'
+ \, 'utils', 'vcs', 'video', 'web', 'x11', 'xfce', 'zope'
+ \ ]
+
+syn keyword debcontrolMultiArch contained no foreign allowed same
+syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+"
+syn keyword debcontrolPriority contained extra important optional required standard
+exe 'syn match debcontrolSection contained "\%(\%(contrib\|non-free\|non-US/main\|non-US/contrib\|non-US/non-free\|restricted\|universe\|multiverse\)/\)\=\<\%('.join(s:sections, '\|').'\)\>"'
+syn keyword debcontrolPackageType contained udeb deb
+syn match debcontrolVariable contained "\${.\{-}}"
+syn keyword debcontrolDmUpload contained yes
+syn keyword debcontrolYesNo contained yes no
+syn match debcontrolR3 contained "\<\%(no\|binary-targets\|[[:graph:]]\+/[[:graph:]]\+\%( \+[[:graph:]]\+/[[:graph:]]\+\)*\)\>"
+
+unlet s:sections
+
+" A URL (using the domain name definitions from RFC 1034 and 1738), right now
+" only enforce protocol and some sanity on the server/path part;
+syn match debcontrolHTTPUrl contained "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
+syn match debcontrolVcsSvn contained "\vsvn%(\+ssh)?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
+syn match debcontrolVcsCvs contained "\v%(\-d *)?:pserver:[^@]+\@[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?:/[^[:space:]]*%( [^[:space:]]+)?$"
+syn match debcontrolVcsGit contained "\v%(git|https?)://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?%(\s+-b\s+[^ ~^:?*[\\]+)?$"
+
+" An email address
+syn match debcontrolEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"
+syn match debcontrolEmail "<.\{-}>"
+
+" #-Comments
+syn match debcontrolComment "^#.*$" contains=@Spell
+
+syn case ignore
+
+" Handle all fields from deb-src-control(5)
+
+" Catch-all for the legal fields
+syn region debcontrolField matchgroup=debcontrolKey start="^\%(\%(XSBC-Original-\)\=Maintainer\|Standards-Version\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\|\%(XS-\)\=Testsuite\%(-Triggers\)\=\|Build-Profiles\|Tag\|Subarchitecture\|Kernel-Version\|Installer-Menu-Item\): " end="$" contains=debcontrolVariable,debcontrolEmail oneline
+syn region debcontrolMultiField matchgroup=debcontrolKey start="^\%(Build-\%(Conflicts\|Depends\)\%(-Arch\|-Indep\)\=\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Breaks\|Enhances\|Replaces\|Conflicts\|Provides\|Built-Using\|Uploaders\|X[SBC]\{0,3\}\%(Private-\)\=-[-a-zA-Z0-9]\+\): *" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolEmail,debcontrolVariable,debcontrolComment
+syn region debcontrolMultiFieldSpell matchgroup=debcontrolKey start="^Description: *" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolEmail,debcontrolVariable,debcontrolComment,@Spell
+
+" Fields for which we do strict syntax checking
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^Architecture: *" end="$" contains=debcontrolArchitecture,debcontrolSpace oneline
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^Multi-Arch: *" end="$" contains=debcontrolMultiArch oneline
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(Package\|Source\): *" end="$" contains=debcontrolName oneline
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^Priority: *" end="$" contains=debcontrolPriority oneline
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^Section: *" end="$" contains=debcontrolSection oneline
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XC-\)\=Package-Type: *" end="$" contains=debcontrolPackageType oneline
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^Homepage: *" end="$" contains=debcontrolHTTPUrl oneline keepend
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XS-[-a-zA-Z0-9]\+-\)\=Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\): *" end="$" contains=debcontrolHTTPUrl oneline keepend
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XS-[-a-zA-Z0-9]\+-\)\=Vcs-Svn: *" end="$" contains=debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XS-[-a-zA-Z0-9]\+-\)\=Vcs-Cvs: *" end="$" contains=debcontrolVcsCvs oneline keepend
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XS-[-a-zA-Z0-9]\+-\)\=Vcs-Git: *" end="$" contains=debcontrolVcsGit oneline keepend
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^Rules-Requires-Root: *" end="$" contains=debcontrolR3 oneline
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(Build-\)\=Essential: *" end="$" contains=debcontrolYesNo oneline
+
+syn region debcontrolStrictField matchgroup=debcontrolDeprecatedKey start="^\%(XS-\)\=DM-Upload-Allowed: *" end="$" contains=debcontrolDmUpload oneline
+
+" Associate our matches and regions with pretty colours
+hi def link debcontrolKey Keyword
+hi def link debcontrolField Normal
+hi def link debcontrolStrictField Error
+hi def link debcontrolDeprecatedKey Error
+hi def link debcontrolMultiField Normal
+hi def link debcontrolArchitecture Normal
+hi def link debcontrolMultiArch Normal
+hi def link debcontrolName Normal
+hi def link debcontrolPriority Normal
+hi def link debcontrolSection Normal
+hi def link debcontrolPackageType Normal
+hi def link debcontrolVariable Identifier
+hi def link debcontrolEmail Identifier
+hi def link debcontrolVcsSvn Identifier
+hi def link debcontrolVcsCvs Identifier
+hi def link debcontrolVcsGit Identifier
+hi def link debcontrolHTTPUrl Identifier
+hi def link debcontrolDmUpload Identifier
+hi def link debcontrolYesNo Identifier
+hi def link debcontrolR3 Identifier
+hi def link debcontrolComment Comment
+hi def link debcontrolElse Special
+
+let b:current_syntax = 'debcontrol'
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/debcopyright.vim b/runtime/syntax/debcopyright.vim
new file mode 100644
index 0000000..6f76b5c
--- /dev/null
+++ b/runtime/syntax/debcopyright.vim
@@ -0,0 +1,33 @@
+" Vim syntax file
+" Language: Debian copyright file
+" Maintainer: Debian Vim Maintainers
+" Last Change: 2023 Jan 16
+" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debcopyright.vim
+
+" Standard syntax initialization
+if exists('b:current_syntax')
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case match
+
+syn match debcopyrightUrl "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
+syn match debcopyrightKey "^\%(Format\|Upstream-Name\|Upstream-Contact\|Disclaimer\|Source\|Comment\|Files\|Copyright\|License\|Files-Excluded\%(-[-a-zA-Z0-9]\+\)\=\): *"
+syn match debcopyrightEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"
+syn match debcopyrightEmail "<.\{-}>"
+syn match debcopyrightComment "^#.*$" contains=@Spell
+
+hi def link debcopyrightUrl Identifier
+hi def link debcopyrightKey Keyword
+hi def link debcopyrightEmail Identifier
+hi def link debcopyrightComment Comment
+
+let b:current_syntax = 'debcopyright'
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/debsources.vim b/runtime/syntax/debsources.vim
new file mode 100644
index 0000000..cbb3b36
--- /dev/null
+++ b/runtime/syntax/debsources.vim
@@ -0,0 +1,61 @@
+" Vim syntax file
+" Language: Debian sources.list
+" Maintainer: Debian Vim Maintainers
+" Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
+" Last Change: 2023 Feb 06
+" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debsources.vim
+
+" Standard syntax initialization
+if exists('b:current_syntax')
+ finish
+endif
+
+" case sensitive
+syn case match
+
+" A bunch of useful keywords
+syn match debsourcesType /\(deb-src\|deb\)/
+syn match debsourcesFreeComponent /\(main\|universe\)/
+syn match debsourcesNonFreeComponent /\(contrib\|non-free-firmware\|non-free\|restricted\|multiverse\)/
+
+" Match comments
+syn match debsourcesComment /#.*/ contains=@Spell
+
+let s:cpo = &cpo
+set cpo-=C
+let s:supported = [
+ \ 'oldstable', 'stable', 'testing', 'unstable', 'experimental', 'sid', 'rc-buggy',
+ \ 'buster', 'bullseye', 'bookworm', 'trixie', 'forky',
+ \
+ \ 'trusty', 'xenial', 'bionic', 'focal', 'jammy', 'kinetic', 'lunar',
+ \ 'devel'
+ \ ]
+let s:unsupported = [
+ \ 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
+ \ 'woody', 'sarge', 'etch', 'lenny', 'squeeze', 'wheezy',
+ \ 'jessie', 'stretch',
+ \
+ \ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty',
+ \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid',
+ \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy',
+ \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic',
+ \ 'disco', 'eoan', 'hirsute', 'impish', 'groovy'
+ \ ]
+let &cpo=s:cpo
+
+" Match uri's
+syn match debsourcesUri '\(https\?://\|ftp://\|[rs]sh://\|debtorrent://\|\(cdrom\|copy\|file\):\)[^' <>"]\+'
+exe 'syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\<\('. join(s:supported, '\|'). '\)\>\([-[:alnum:]_./]*\)+'
+exe 'syn match debsourcesUnsupportedDistrKeyword +\([[:alnum:]_./]*\)\<\('. join(s:unsupported, '\|') .'\)\>\([-[:alnum:]_./]*\)+'
+
+" Associate our matches and regions with pretty colours
+hi def link debsourcesLine Error
+hi def link debsourcesType Statement
+hi def link debsourcesFreeComponent Statement
+hi def link debsourcesNonFreeComponent Statement
+hi def link debsourcesDistrKeyword Type
+hi def link debsourcesUnsupportedDistrKeyword WarningMsg
+hi def link debsourcesComment Comment
+hi def link debsourcesUri Constant
+
+let b:current_syntax = 'debsources'
diff --git a/runtime/syntax/def.vim b/runtime/syntax/def.vim
new file mode 100644
index 0000000..a17714c
--- /dev/null
+++ b/runtime/syntax/def.vim
@@ -0,0 +1,44 @@
+" Vim syntax file
+" Language: Microsoft Module-Definition (.def) File
+" Orig Author: Rob Brady <robb@datatone.com>
+" Maintainer: Wu Yongwei <wuyongwei@gmail.com>
+" Last Change: $Date: 2007/10/02 13:51:24 $
+" $Revision: 1.2 $
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+syn match defComment ";.*"
+
+syn keyword defKeyword LIBRARY STUB EXETYPE DESCRIPTION CODE WINDOWS DOS
+syn keyword defKeyword RESIDENTNAME PRIVATE EXPORTS IMPORTS SEGMENTS
+syn keyword defKeyword HEAPSIZE DATA
+syn keyword defStorage LOADONCALL MOVEABLE DISCARDABLE SINGLE
+syn keyword defStorage FIXED PRELOAD
+
+syn match defOrdinal "\s\+@\d\+"
+
+syn region defString start=+'+ end=+'+
+
+syn match defNumber "\d+"
+syn match defNumber "0x\x\+"
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link defComment Comment
+hi def link defKeyword Keyword
+hi def link defStorage StorageClass
+hi def link defString String
+hi def link defNumber Number
+hi def link defOrdinal Operator
+
+
+let b:current_syntax = "def"
+
+" vim: ts=8
diff --git a/runtime/syntax/denyhosts.vim b/runtime/syntax/denyhosts.vim
new file mode 100644
index 0000000..f32faab
--- /dev/null
+++ b/runtime/syntax/denyhosts.vim
@@ -0,0 +1,289 @@
+" Vim syntax file
+" Language: denyhosts configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-06-25
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword denyhostsTodo
+ \ contained
+ \ TODO
+ \ FIXME
+ \ XXX
+ \ NOTE
+
+syn case ignore
+
+syn match denyhostsComment
+ \ contained
+ \ display
+ \ '#.*'
+ \ contains=denyhostsTodo,
+ \ @Spell
+
+syn match denyhostsBegin
+ \ display
+ \ '^'
+ \ nextgroup=@denyhostsSetting,
+ \ denyhostsComment
+ \ skipwhite
+
+syn cluster denyhostsSetting
+ \ contains=denyhostsStringSetting,
+ \ denyhostsBooleanSetting,
+ \ denyhostsPathSetting,
+ \ denyhostsNumericSetting,
+ \ denyhostsTimespecSetting,
+ \ denyhostsFormatSetting,
+ \ denyhostsRegexSetting
+
+syn keyword denyhostsStringSetting
+ \ contained
+ \ ADMIN_EMAIL
+ \ SMTP_HOST
+ \ SMTP_USERNAME
+ \ SMTP_PASSWORD
+ \ SMTP_FROM
+ \ SMTP_SUBJECT
+ \ BLOCK_SERVICE
+ \ nextgroup=denyhostsStringDelimiter
+ \ skipwhite
+
+syn keyword denyhostsBooleanSetting
+ \ contained
+ \ SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS
+ \ HOSTNAME_LOOKUP
+ \ SYSLOG_REPORT
+ \ RESET_ON_SUCCESS
+ \ SYNC_UPLOAD
+ \ SYNC_DOWNLOAD
+ \ ALLOWED_HOSTS_HOSTNAME_LOOKUP
+ \ nextgroup=denyhostsBooleanDelimiter
+ \ skipwhite
+
+syn keyword denyhostsPathSetting
+ \ contained
+ \ DAEMON_LOG
+ \ PLUGIN_DENY
+ \ PLUGIN_PURGE
+ \ SECURE_LOG
+ \ LOCK_FILE
+ \ HOSTS_DENY
+ \ WORK_DIR
+ \ nextgroup=denyhostsPathDelimiter
+ \ skipwhite
+
+syn keyword denyhostsNumericSetting
+ \ contained
+ \ SYNC_DOWNLOAD_THRESHOLD
+ \ SMTP_PORT
+ \ PURGE_THRESHOLD
+ \ DENY_THRESHOLD_INVALID
+ \ DENY_THRESHOLD_VALID
+ \ DENY_THRESHOLD_ROOT
+ \ DENY_THRESHOLD_RESTRICTED
+ \ nextgroup=denyhostsNumericDelimiter
+ \ skipwhite
+
+syn keyword denyhostsTimespecSetting
+ \ contained
+ \ DAEMON_SLEEP
+ \ DAEMON_PURGE
+ \ AGE_RESET_INVALID
+ \ AGE_RESET_VALID
+ \ AGE_RESET_ROOT
+ \ AGE_RESET_RESTRICTED
+ \ SYNC_INTERVAL
+ \ SYNC_DOWNLOAD_RESILIENCY
+ \ PURGE_DENY
+ \ nextgroup=denyhostsTimespecDelimiter
+ \ skipwhite
+
+syn keyword denyhostsFormatSetting
+ \ contained
+ \ DAEMON_LOG_TIME_FORMAT
+ \ DAEMON_LOG_MESSAGE_FORMAT
+ \ SMTP_DATE_FORMAT
+ \ nextgroup=denyhostsFormatDelimiter
+ \ skipwhite
+
+syn keyword denyhostsRegexSetting
+ \ contained
+ \ SSHD_FORMAT_REGEX
+ \ FAILED_ENTRY_REGEX
+ \ FAILED_ENTRY_REGEX2
+ \ FAILED_ENTRY_REGEX3
+ \ FAILED_ENTRY_REGEX4
+ \ FAILED_ENTRY_REGEX5
+ \ FAILED_ENTRY_REGEX6
+ \ FAILED_ENTRY_REGEX7
+ \ USERDEF_FAILED_ENTRY_REGEX
+ \ SUCCESSFUL_ENTRY_REGEX
+ \ nextgroup=denyhostsRegexDelimiter
+ \ skipwhite
+
+syn keyword denyhostURLSetting
+ \ contained
+ \ SYNC_SERVER
+ \ nextgroup=denyhostsURLDelimiter
+ \ skipwhite
+
+syn match denyhostsStringDelimiter
+ \ contained
+ \ display
+ \ '[:=]'
+ \ nextgroup=denyhostsString
+ \ skipwhite
+
+syn match denyhostsBooleanDelimiter
+ \ contained
+ \ display
+ \ '[:=]'
+ \ nextgroup=@denyhostsBoolean
+ \ skipwhite
+
+syn match denyhostsPathDelimiter
+ \ contained
+ \ display
+ \ '[:=]'
+ \ nextgroup=denyhostsPath
+ \ skipwhite
+
+syn match denyhostsNumericDelimiter
+ \ contained
+ \ display
+ \ '[:=]'
+ \ nextgroup=denyhostsNumber
+ \ skipwhite
+
+syn match denyhostsTimespecDelimiter
+ \ contained
+ \ display
+ \ '[:=]'
+ \ nextgroup=denyhostsTimespec
+ \ skipwhite
+
+syn match denyhostsFormatDelimiter
+ \ contained
+ \ display
+ \ '[:=]'
+ \ nextgroup=denyhostsFormat
+ \ skipwhite
+
+syn match denyhostsRegexDelimiter
+ \ contained
+ \ display
+ \ '[:=]'
+ \ nextgroup=denyhostsRegex
+ \ skipwhite
+
+syn match denyhostsURLDelimiter
+ \ contained
+ \ display
+ \ '[:=]'
+ \ nextgroup=denyhostsURL
+ \ skipwhite
+
+syn match denyhostsString
+ \ contained
+ \ display
+ \ '.\+'
+
+syn cluster denyhostsBoolean
+ \ contains=denyhostsBooleanTrue,
+ \ denyhostsBooleanFalse
+
+syn match denyhostsBooleanFalse
+ \ contained
+ \ display
+ \ '.\+'
+
+syn match denyhostsBooleanTrue
+ \ contained
+ \ display
+ \ '\s*\%(1\|t\%(rue\)\=\|y\%(es\)\=\)\>\s*$'
+
+syn match denyhostsPath
+ \ contained
+ \ display
+ \ '.\+'
+
+syn match denyhostsNumber
+ \ contained
+ \ display
+ \ '\d\+\>'
+
+syn match denyhostsTimespec
+ \ contained
+ \ display
+ \ '\d\+[mhdwy]\>'
+
+syn match denyhostsFormat
+ \ contained
+ \ display
+ \ '.\+'
+ \ contains=denyhostsFormattingExpandos
+
+syn match denyhostsFormattingExpandos
+ \ contained
+ \ display
+ \ '%.'
+
+syn match denyhostsRegex
+ \ contained
+ \ display
+ \ '.\+'
+
+" TODO: Perhaps come up with a better regex here? There should really be a
+" library for these kinds of generic regexes, that is, URLs, mail addresses, …
+syn match denyhostsURL
+ \ contained
+ \ display
+ \ '.\+'
+
+hi def link denyhostsTodo Todo
+hi def link denyhostsComment Comment
+hi def link denyhostsSetting Keyword
+hi def link denyhostsStringSetting denyhostsSetting
+hi def link denyhostsBooleanSetting denyhostsSetting
+hi def link denyhostsPathSetting denyhostsSetting
+hi def link denyhostsNumericSetting denyhostsSetting
+hi def link denyhostsTimespecSetting denyhostsSetting
+hi def link denyhostsFormatSetting denyhostsSetting
+hi def link denyhostsRegexSetting denyhostsSetting
+hi def link denyhostURLSetting denyhostsSetting
+hi def link denyhostsDelimiter Normal
+hi def link denyhostsStringDelimiter denyhostsDelimiter
+hi def link denyhostsBooleanDelimiter denyhostsDelimiter
+hi def link denyhostsPathDelimiter denyhostsDelimiter
+hi def link denyhostsNumericDelimiter denyhostsDelimiter
+hi def link denyhostsTimespecDelimiter denyhostsDelimiter
+hi def link denyhostsFormatDelimiter denyhostsDelimiter
+hi def link denyhostsRegexDelimiter denyhostsDelimiter
+hi def link denyhostsURLDelimiter denyhostsDelimiter
+hi def link denyhostsString String
+if exists('g:syntax_booleans_simple') || exists('b:syntax_booleans_simple')
+ hi def link denyhostsBoolean Boolean
+ hi def link denyhostsBooleanFalse denyhostsBoolean
+ hi def link denyhostsBooleanTrue denyhostsBoolean
+else
+ hi def denyhostsBooleanTrue term=bold ctermfg=Green guifg=Green
+ hi def denyhostsBooleanFalse ctermfg=Red guifg=Red
+endif
+hi def link denyhostsPath String
+hi def link denyhostsNumber Number
+hi def link denyhostsTimespec Number
+hi def link denyhostsFormat String
+hi def link denyhostsFormattingExpandos Special
+hi def link denyhostsRegex String
+hi def link denyhostsURL String
+
+let b:current_syntax = "denyhosts"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/dep3patch.vim b/runtime/syntax/dep3patch.vim
new file mode 100644
index 0000000..c00bddf
--- /dev/null
+++ b/runtime/syntax/dep3patch.vim
@@ -0,0 +1,57 @@
+" Vim syntax file
+" Language: Debian DEP3 Patch headers
+" Maintainer: Gabriel Filion <gabster@lelutin.ca>
+" Last Change: 2023 Jan 16
+" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/dep3patch.vim
+"
+" Specification of the DEP3 patch header format is available at:
+" https://dep-team.pages.debian.net/deps/dep3/
+
+" Standard syntax initialization
+if exists('b:current_syntax')
+ finish
+endif
+
+runtime! syntax/diff.vim
+unlet! b:current_syntax
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn region dep3patchHeaders start="\%^" end="^\%(---\)\@=" contains=dep3patchKey,dep3patchMultiField
+
+syn case ignore
+
+syn region dep3patchMultiField matchgroup=dep3patchKey start="^\%(Description\|Subject\)\ze: *" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contained contains=@Spell
+syn region dep3patchMultiField matchgroup=dep3patchKey start="^Origin\ze: *" end="$" contained contains=dep3patchHTTPUrl,dep3patchCommitID,dep3patchOriginCategory oneline keepend
+syn region dep3patchMultiField matchgroup=dep3patchKey start="^Bug\%(-[[:graph:]]\+\)\?\ze: *" end="$" contained contains=dep3patchHTTPUrl oneline keepend
+syn region dep3patchMultiField matchgroup=dep3patchKey start="^Forwarded\ze: *" end="$" contained contains=dep3patchHTTPUrl,dep3patchForwardedShort oneline keepend
+syn region dep3patchMultiField matchgroup=dep3patchKey start="^\%(Author\|From\)\ze: *" end="$" contained contains=dep3patchEmail oneline keepend
+syn region dep3patchMultiField matchgroup=dep3patchKey start="^\%(Reviewed-by\|Acked-by\)\ze: *" end="$" contained contains=dep3patchEmail oneline keepend
+syn region dep3patchMultiField matchgroup=dep3patchKey start="^Last-Update\ze: *" end="$" contained contains=dep3patchISODate oneline keepend
+syn region dep3patchMultiField matchgroup=dep3patchKey start="^Applied-Upstream\ze: *" end="$" contained contains=dep3patchHTTPUrl,dep3patchCommitID oneline keepend
+
+syn match dep3patchHTTPUrl contained "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
+syn match dep3patchCommitID contained "commit:[[:alnum:]]\+"
+syn match dep3patchOriginCategory contained "\%(upstream\|backport\|vendor\|other\), "
+syn match dep3patchForwardedShort contained "\%(yes\|no\|not-needed\), "
+syn match dep3patchEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"
+syn match dep3patchEmail "<.\{-}>"
+syn match dep3patchISODate "[[:digit:]]\{4}-[[:digit:]]\{2}-[[:digit:]]\{2}"
+
+" Associate our matches and regions with pretty colours
+hi def link dep3patchKey Keyword
+hi def link dep3patchOriginCategory Keyword
+hi def link dep3patchForwardedShort Keyword
+hi def link dep3patchMultiField Normal
+hi def link dep3patchHTTPUrl Identifier
+hi def link dep3patchCommitID Identifier
+hi def link dep3patchEmail Identifier
+hi def link dep3patchISODate Identifier
+
+let b:current_syntax = 'dep3patch'
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/desc.vim b/runtime/syntax/desc.vim
new file mode 100644
index 0000000..84b9cd0
--- /dev/null
+++ b/runtime/syntax/desc.vim
@@ -0,0 +1,88 @@
+" Vim syntax file
+" Language: T2 / ROCK Linux .desc
+" Maintainer: René Rebe <rene@exactcode.de>, Piotr Esden-Tempski <esden@rocklinux.org>
+" Last Change: 2006 Aug 14
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" syntax definitions
+
+setl iskeyword+=-
+syn keyword descFlag DIETLIBC KAFFE JAIL NOPARALLEL FPIC-QUIRK LIBTOOL-WUIRK NO-LIBTOOL-FIX AUTOMAKE-QUIRK NO-AS-NEEDED NO-SSP KERNEL INIT LIBC CC CXX F77 KCC contained
+syn keyword descLicense Unknown GPL LGPL FDL MIT BSD OpenSource Free-to-use Commercial contained
+
+" tags
+syn match descTag /^\[\(COPY\)\]/
+syn match descTag /^\[\(I\|TITLE\)\]/
+syn match descTag /^\[\(T\|TEXT\)\]/ contained
+syn match descTag /^\[\(U\|URL\)\]/
+syn match descTag /^\[\(A\|AUTHOR\)\]/
+syn match descTag /^\[\(M\|MAINTAINER\)\]/
+syn match descTag /^\[\(C\|CATEGORY\)\]/ contained
+syn match descTag /^\[\(F\|FLAG\)\]/ contained
+syn match descTag /^\[\(E\|DEP\|DEPENDENCY\)\]/
+syn match descTag /^\[\(R\|ARCH\|ARCHITECTURE\)\]/
+syn match descTag /^\[\(L\|LICENSE\)\]/ contained
+syn match descTag /^\[\(S\|STATUS\)\]/
+syn match descTag /^\[\(O\|CONF\)\]/
+syn match descTag /^\[\(V\|VER\|VERSION\)\]/
+syn match descTag /^\[\(P\|PRI\|PRIORITY\)\]/ nextgroup=descInstall skipwhite
+syn match descTag /^\[\(D\|DOWN\|DOWNLOAD\)\]/ nextgroup=descSum skipwhite
+
+" misc
+syn match descUrl /\w\+:\/\/\S\+/
+syn match descCategory /\w\+\/\w\+/ contained
+syn match descEmail /<[\.A-Za-z0-9]\+@[\.A-Za-z0-9]\+>/
+
+" priority tag
+syn match descInstallX /X/ contained
+syn match descInstallO /O/ contained
+syn match descInstall /[OX]/ contained contains=descInstallX,descInstallO nextgroup=descStage skipwhite
+syn match descDash /-/ contained
+syn match descDigit /\d/ contained
+syn match descStage /[\-0][\-1][\-2][\-3][\-4][\-5][\-6][\-7][\-8][\-9]/ contained contains=descDash,descDigit nextgroup=descCompilePriority skipwhite
+syn match descCompilePriority /\d\{3}\.\d\{3}/ contained
+
+" download tag
+syn match descSum /\d\+/ contained nextgroup=descTarball skipwhite
+syn match descTarball /\S\+/ contained nextgroup=descUrl skipwhite
+
+
+" tag regions
+syn region descText start=/^\[\(T\|TEXT\)\]/ end=/$/ contains=descTag,descUrl,descEmail
+
+syn region descTagRegion start=/^\[\(C\|CATEGORY\)\]/ end=/$/ contains=descTag,descCategory
+
+syn region descTagRegion start=/^\[\(F\|FLAG\)\]/ end=/$/ contains=descTag,descFlag
+
+syn region descTagRegion start=/^\[\(L\|LICENSE\)\]/ end=/$/ contains=descTag,descLicense
+
+" Only when an item doesn't have highlighting yet
+
+hi def link descFlag Identifier
+hi def link descLicense Identifier
+hi def link descCategory Identifier
+
+hi def link descTag Type
+hi def link descUrl Underlined
+hi def link descEmail Underlined
+
+" priority tag colors
+hi def link descInstallX Boolean
+hi def link descInstallO Type
+hi def link descDash Operator
+hi def link descDigit Number
+hi def link descCompilePriority Number
+
+" download tag colors
+hi def link descSum Number
+hi def link descTarball Underlined
+
+" tag region colors
+hi def link descText Comment
+
+
+let b:current_syntax = "desc"
diff --git a/runtime/syntax/desktop.vim b/runtime/syntax/desktop.vim
new file mode 100644
index 0000000..461ba85
--- /dev/null
+++ b/runtime/syntax/desktop.vim
@@ -0,0 +1,267 @@
+" Vim syntax file
+" Language: XDG desktop entry
+" Filenames: *.desktop, *.directory
+" Maintainer: Eisuke Kawashima ( e.kawaschima+vim AT gmail.com )
+" Previous Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
+" Last Change: 2022 Sep 22
+" Version Info: desktop.vim 1.5
+" References:
+" - https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.5.html (2020-04-27)
+" - https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-0.11.html (2006-02-07)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+syn case match
+
+" Variable {{{1
+" This syntax file can be used to all *nix configuration files similar to dos
+" ini format (eg. .xawtv, .radio, kde rc files) - this is default mode.
+" By default strict following of freedesktop.org standard is enforced.
+" To highlight nonstandard extensions that does not begin with X-, set
+" let g:desktop_enable_nonstd = v:true
+" Note that this may cause wrong highlight.
+" To highlight KDE-reserved features, set
+" let g:desktop_enable_kde = v:true
+" g:desktop_enable_kde follows g:desktop_enable_nonstd if not supplied
+
+if exists("g:desktop_enable_nonstd") && g:desktop_enable_nonstd
+ let s:desktop_enable_nonstd = v:true
+else
+ let s:desktop_enable_nonstd = v:false
+endif
+
+if exists("g:desktop_enable_kde") && g:desktop_enable_kde || s:desktop_enable_nonstd
+ let s:desktop_enable_kde = v:true
+else
+ let s:desktop_enable_kde = v:false
+endif
+
+" Comment {{{1
+syn match dtComment /^#.*$/
+
+" Error {{{1
+syn match dtError /\%(^\s.*\|\s\+$\)/
+
+" Group Header {{{1
+" ASCII printable characters except for brackets [ (0x5B) and ] (0x5D)
+syn match dtGroup /^\[[\x20-\x5A\x5C\x5E-\x7E]\+\]$/
+
+" Entries {{{1
+syn match dtDelim /=/ contained
+" lang_territory.codeset@modifier
+syn match dtLocaleSuffix
+ \ /\[\%(C\|POSIX\|[a-z]\{2,4}\%(_[A-Z0-9]\{2,3}\)\?\)\%(\.[A-Za-z0-9_-]\+\)\?\%(@[A-Za-z]\+\)\?\]\ze\s*=/
+ \ contained
+
+" Boolean Value {{{2
+syn match dtBoolean
+ \ /^\%(DBusActivatable\|Hidden\|NoDisplay\|PrefersNonDefaultGPU\|SingleMainWindow\|StartupNotify\|Terminal\)\s*=\s*\%(true\|false\)/
+ \ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent
+syn keyword dtBooleanKey
+ \ DBusActivatable Hidden NoDisplay PrefersNonDefaultGPU SingleMainWindow StartupNotify Terminal
+ \ contained nextgroup=dtDelim
+
+if s:desktop_enable_kde
+ syn match dtBoolean
+ \ /^ReadOnly\s*=\s*\%(true\|false\)/
+ \ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent
+ syn keyword dtBooleanKey
+ \ ReadOnly
+ \ contained nextgroup=dtDelim
+endif
+syn keyword dtBooleanValue true false contained
+
+" Numeric Value {{{2
+" icon theme
+syn match dtNumeric /^\%(MaxSize\|MinSize\|Size\|Threshold\)\s*=\s*\d\+/ contains=dtNumericKey,dtDelim,dtNumericDecimal
+syn keyword dtNumericKey
+ \ MaxSize MinSize Size Threshold
+ \ contained nextgroup=dtDelim
+
+if s:desktop_enable_kde
+ syn match dtNumeric /^InitialPreference\s*=\s*\d\+/ contains=dtNumericKey,dtDelim,dtNumericDecimal
+ syn keyword dtNumericKey
+ \ InitialPreference
+ \ contained nextgroup=dtDelim
+endif
+
+syn match dtNumericDecimal /\<\d\+$/ contained
+
+" String Value {{{2
+syn match dtString
+ \ /^\%(Actions\|Implements\|MimeType\|NotShowIn\|OnlyShowIn\|Path\|StartupWMClass\|URL\)\s*=.*\S/
+ \ contains=dtStringKey,dtDelim transparent
+syn keyword dtStringKey
+ \ Actions Implements MimeType NotShowIn OnlyShowIn Path StartupWMClass URL Version
+ \ contained nextgroup=dtDelim
+
+" icon theme
+syn match dtString
+ \ /^\%(Context\|Directories\|Example\|Inherits\)\s*=.*\S/
+ \ contains=dtStringKey,dtDelim transparent
+syn keyword dtStringKey
+ \ Context Directories Example Inherits
+ \ contained nextgroup=dtDelim
+
+if s:desktop_enable_kde
+ syn match dtString
+ \ /^\%(Dev\|DocPath\|FSType\|MountPoint\|ServiceTypes\)\s*=.*\S/
+ \ contains=dtStringKey,dtDelim transparent
+ syn keyword dtStringKey
+ \ Dev DocPath FSType MountPoint ServiceTypes
+ \ contained nextgroup=dtDelim
+endif
+
+" Categories {{{3
+" https://specifications.freedesktop.org/menu-spec/menu-spec-1.0.html#category-registry
+syn match dtCategories /^Categories\s*=.\+\S/ contains=dtCategoriesKey,dtDelim,dtCategoriesValue transparent
+syn keyword dtCategoriesKey
+ \ Categories
+ \ contained nextgroup=dtDelim
+
+" Main Categories
+syn keyword dtCategoriesValue
+ \ Audio AudioVideo Development Education Game Graphics Network Office
+ \ Settings System Utility Video
+ \ contained
+
+" Additional Categories
+syn keyword dtCategoriesValue
+ \ BoardGame Chat Clock Geoscience Presentation 2DGraphics 3DGraphics
+ \ Accessibility ActionGame AdventureGame Amusement ArcadeGame Archiving
+ \ Art ArtificialIntelligence Astronomy AudioVideoEditing Biology
+ \ BlocksGame BoardGame Building Calculator Calendar CardGame Chart Chat
+ \ Chemistry Clock Compression ComputerScience ConsoleOnly Construction
+ \ ContactManagement Core DataVisualization Database Debugger
+ \ DesktopSettings Dialup Dictionary DiscBurning Documentation Economy
+ \ Electricity Electronics Email Emulator Engineering FileManager
+ \ FileTools FileTransfer Filesystem Finance FlowChart GNOME GTK
+ \ GUIDesigner Geography Geology Geoscience HamRadio HardwareSettings
+ \ History IDE IRCClient ImageProcessing InstantMessaging Java KDE
+ \ KidsGame Languages Literature LogicGame Math MedicalSoftware Midi
+ \ Mixer Monitor Motif Music News NumericalAnalysis OCR P2P PDA
+ \ PackageManager ParallelComputing Photography Physics Player
+ \ Presentation Printing Profiling ProjectManagement Publishing Qt
+ \ RasterGraphics Recorder RemoteAccess RevisionControl Robotics
+ \ RolePlaying Scanning Science Security Sequencer Simulation Sports
+ \ SportsGame Spreadsheet StrategyGame TV Telephony TelephonyTools
+ \ TerminalEmulator TextEditor TextTools Translation Tuner VectorGraphics
+ \ VideoConference Viewer WebBrowser WebDevelopment WordProcessor
+ \ contained
+
+" Reserved Category
+syn keyword dtCategoriesValue
+ \ Applet Screensaver Shell TrayIcon
+ \ contained
+
+" Exec/TryExec {{{3
+syn match dtExec /^\%(Exec\|TryExec\)\s*=.\+\S/ contains=dtExecKey,dtDelim,dtExecParam transparent
+syn keyword dtExecKey
+ \ Exec TryExec
+ \ contained nextgroup=dtDelim
+" code for file(s), URL(s), etc
+syn match dtExecParam /\s\zs%[fFuUick]\ze\%(\W\|$\)/ contained
+
+" Type {{{3
+syn match dtType /^Type\s*=\s*\S\+/ contains=dtTypeKey,dtDelim,dtTypeValue transparent
+syn keyword dtTypeKey
+ \ Type
+ \ contained nextgroup=dtDelim
+syn keyword dtTypeValue
+ \ Application Directory Link
+ \ contained
+
+if s:desktop_enable_kde
+ syn keyword dtTypeValue
+ \ FSDevice Service ServiceType
+ \ contained
+endif
+
+
+" Version {{{3
+syn match dtVersion /^Version\s*=\s*\S\+/ contains=dtVersionKey,dtDelim,dtVersionValue transparent
+syn keyword dtVersionKey
+ \ Version
+ \ contained nextgroup=dtDelim
+syn match dtVersionValue /[0-9]\+\%(\.[0-9]\+\)\{1,2}$/ contained
+
+" Localestring Value {{{2
+syn match dtLocalestring
+ \ /^\%(Comment\|GenericName\|Keywords\|Name\)\%(\[.\{-}\]\)\?\s*=.*\S/
+ \ contains=dtLocalestringKey,dtLocaleSuffix,dtDelim transparent
+syn keyword dtLocalestringKey
+ \ Comment GenericName Keywords Name
+ \ contained nextgroup=dtLocaleSuffix,dtDelim skipwhite
+
+" Iconstring Value {{{2
+syn match dtIconstring
+ \ /^Icon\s*=.*\S/
+ \ contains=dtIconstringKey,dtDelim transparent
+syn keyword dtIconstringKey
+ \ Icon
+ \ contained nextgroup=dtDelim skipwhite
+
+if s:desktop_enable_kde
+ syn match dtIconstring
+ \ /^UnmountIcon\>\%(\[.\{-}\]\)\?\s*=.*\S/
+ \ contains=dtIconstringKey,dtLocaleSuffix,dtDelim transparent
+ syn keyword dtIconstringKey
+ \ UnmountIcon
+ \ contained nextgroup=dtLocaleSuffix,dtDelim skipwhite
+endif
+
+" X-Extension {{{2
+syn match dtXExtension /^X-[0-9A-Za-z-]*\%(\[.\{-}\]\)\?\s*=.*\S/
+ \ contains=dtXExtensionKey,dtLocaleSuffix,dtDelim transparent
+syn match dtXExtensionKey /^X-[0-9A-Za-z-]*/ contained nextgroup=dtLocaleSuffix,dtDelim
+
+" non standard {{{2
+if s:desktop_enable_nonstd
+ syn match dtNonStdLabel /^[0-9A-Za-z-]\+\%(\[.\{-}\]\)\?\s*=.*\S/
+ \ contains=dtNonStdLabelKey,dtLocaleSuffix,dtDelim transparent
+ syn match dtNonStdLabelKey /^[0-9A-Za-z-]\+/ contained nextgroup=dtLocaleSuffix,dtDelim
+endif
+
+" Highlight {{{1
+hi def link dtComment Comment
+hi def link dtError Error
+
+hi def link dtGroup Special
+
+hi def link dtDelim Delimiter
+hi def link dtLocaleSuffix Identifier
+
+hi def link dtBooleanKey Type
+hi def link dtBooleanValue Boolean
+
+hi def link dtNumericKey Type
+hi def link dtNumericDecimal Number
+
+hi def link dtStringKey Type
+hi def link dtCategoriesKey Type
+hi def link dtCategoriesValue Constant
+hi def link dtExecKey Type
+hi def link dtExecParam Special
+hi def link dtTypeKey Type
+hi def link dtTypeValue Constant
+hi def link dtVersionKey Type
+hi def link dtVersionValue Constant
+
+hi def link dtLocalestringKey Type
+
+hi def link dtIconStringKey Type
+
+hi def link dtXExtensionKey Type
+
+hi def link dtNonStdLabelKey Type
+
+" Clean Up {{{1
+let b:current_syntax = "desktop"
+let &cpo = s:cpo_save
+
+" vim:ts=8:sw=2:fdm=marker
diff --git a/runtime/syntax/dictconf.vim b/runtime/syntax/dictconf.vim
new file mode 100644
index 0000000..c762808
--- /dev/null
+++ b/runtime/syntax/dictconf.vim
@@ -0,0 +1,80 @@
+" Vim syntax file
+" Language: dict(1) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword dictconfTodo contained TODO FIXME XXX NOTE
+
+syn region dictconfComment display oneline start='#' end='$'
+ \ contains=dictconfTodo,@Spell
+
+syn match dictconfBegin display '^'
+ \ nextgroup=dictconfKeyword,dictconfComment
+ \ skipwhite
+
+syn keyword dictconfKeyword contained server
+ \ nextgroup=dictconfServer skipwhite
+
+syn keyword dictconfKeyword contained pager
+ \ nextgroup=dictconfPager
+
+syn match dictconfServer contained display
+ \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+ \ nextgroup=dictconfServerOptG skipwhite
+
+syn region dictconfServer contained display oneline
+ \ start=+"+ skip=+""+ end=+"+
+ \ nextgroup=dictconfServerOptG skipwhite
+
+syn region dictconfServerOptG contained transparent
+ \ matchgroup=dictconfServerOptsD start='{'
+ \ matchgroup=dictconfServerOptsD end='}'
+ \ contains=dictconfServerOpts,dictconfComment
+
+syn keyword dictconfServerOpts contained port
+ \ nextgroup=dictconfNumber skipwhite
+
+syn keyword dictconfServerOpts contained user
+ \ nextgroup=dictconfUsername skipwhite
+
+syn match dictconfUsername contained display
+ \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+ \ nextgroup=dictconfSecret skipwhite
+syn region dictconfUsername contained display oneline
+ \ start=+"+ skip=+""+ end=+"+
+ \ nextgroup=dictconfSecret skipwhite
+
+syn match dictconfSecret contained display
+ \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+syn region dictconfSecret contained display oneline
+ \ start=+"+ skip=+""+ end=+"+
+
+syn match dictconfNumber contained '\<\d\+\>'
+
+syn match dictconfPager contained display
+ \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+syn region dictconfPager contained display oneline
+ \ start=+"+ skip=+""+ end=+"+
+
+hi def link dictconfTodo Todo
+hi def link dictconfComment Comment
+hi def link dictconfKeyword Keyword
+hi def link dictconfServer String
+hi def link dictconfServerOptsD Delimiter
+hi def link dictconfServerOpts Identifier
+hi def link dictconfUsername String
+hi def link dictconfSecret Special
+hi def link dictconfNumber Number
+hi def link dictconfPager String
+
+let b:current_syntax = "dictconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/dictdconf.vim b/runtime/syntax/dictdconf.vim
new file mode 100644
index 0000000..ecf5fd3
--- /dev/null
+++ b/runtime/syntax/dictdconf.vim
@@ -0,0 +1,146 @@
+" Vim syntax file
+" Language: dictd(8) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword dictdconfTodo contained TODO FIXME XXX NOTE
+
+syn region dictdconfComment display oneline start='#' end='$'
+ \ contains=dictdconfTodo,dictdconfSpecialC,
+ \ @Spell
+
+syn keyword dictdconfSpecialC LASTLINE
+
+syn match dictdconfBegin display '^'
+ \ nextgroup=dictdconfKeyword,dictdconfComment
+ \ skipwhite
+
+syn keyword dictdconfKeyword contained access
+ \ nextgroup=dictdconfAccessG skipwhite
+
+syn region dictdconfAccessG contained transparent
+ \ matchgroup=dictdconfDelimiter start='{'
+ \ matchgroup=dictdconfDelimiter end='}'
+ \ contains=dictdconfAccess,dictdconfComment
+
+syn keyword dictdconfAccess contained allow deny authonly user
+ \ nextgroup=dictdconfString skipwhite
+
+syn keyword dictdconfKeyword contained database
+ \ nextgroup=dictdconfDatabase skipwhite
+
+syn match dictdconfDatabase contained display
+ \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+ \ nextgroup=dictdconfSpecG skipwhite
+syn region dictdconfDatabase contained display oneline
+ \ start=+"+ skip=+""\|\\\\\|\\"+ end=+"+
+ \ nextgroup=dictdconfSpecG skipwhite
+
+syn region dictdconfSpecG contained transparent
+ \ matchgroup=dictdconfDelimiter start='{'
+ \ matchgroup=dictdconfDelimiter end='}'
+ \ contains=dictdconfSpec,dictdconfAccess,
+ \ dictdconfComment
+
+syn keyword dictdconfSpec contained data index index_suffix index_word
+ \ filter prefilter postfilter name info
+ \ disable_strat
+ \ nextgroup=dictdconfString skipwhite
+
+syn keyword dictdconfSpec contained invisible
+
+syn keyword dictdconfKeyword contained database_virtual
+ \ nextgroup=dictdconfVDatabase skipwhite
+
+syn match dictdconfVDatabase contained display
+ \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+ \ nextgroup=dictdconfVSpecG skipwhite
+syn region dictdconfVDatabase contained display oneline
+ \ start=+"+ skip=+""\|\\\\\|\\"+ end=+"+
+ \ nextgroup=dictdconfVSpecG skipwhite
+
+syn region dictdconfVSpecG contained transparent
+ \ matchgroup=dictdconfDelimiter start='{'
+ \ matchgroup=dictdconfDelimiter end='}'
+ \ contains=dictdconfVSpec,dictdconfAccess,
+ \ dictdconfComment
+
+syn keyword dictdconfVSpec contained name info database_list disable_strat
+ \ nextgroup=dictdconfString skipwhite
+
+syn keyword dictdconfVSpec contained invisible
+
+syn keyword dictdconfKeyword contained database_plugin
+ \ nextgroup=dictdconfPDatabase skipwhite
+
+syn match dictdconfPDatabase contained display
+ \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+ \ nextgroup=dictdconfPSpecG skipwhite
+syn region dictdconfPDatabase contained display oneline
+ \ start=+"+ skip=+""\|\\\\\|\\"+ end=+"+
+ \ nextgroup=dictdconfPSpecG skipwhite
+
+syn region dictdconfPSpecG contained transparent
+ \ matchgroup=dictdconfDelimiter start='{'
+ \ matchgroup=dictdconfDelimiter end='}'
+ \ contains=dictdconfPSpec,dictdconfAccess,
+ \ dictdconfComment
+
+syn keyword dictdconfPSpec contained name info plugin data disable_strat
+ \ nextgroup=dictdconfString skipwhite
+
+syn keyword dictdconfPSpec contained invisible
+
+syn keyword dictdconfKeyword contained database_exit
+
+syn keyword dictdconfKeyword contained site
+ \ nextgroup=dictdconfString skipwhite
+
+syn keyword dictdconfKeyword contained user
+ \ nextgroup=dictdconfUsername skipwhite
+
+syn match dictdconfUsername contained display
+ \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+ \ nextgroup=dictdconfSecret skipwhite
+syn region dictdconfUsername contained display oneline
+ \ start=+"+ skip=+""+ end=+"+
+ \ nextgroup=dictdconfSecret skipwhite
+
+syn match dictdconfSecret contained display
+ \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+syn region dictdconfSecret contained display oneline
+ \ start=+"+ skip=+""+ end=+"+
+
+syn match dictdconfString contained display
+ \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+syn region dictdconfString contained display oneline
+ \ start=+"+ skip=+""\|\\\\\|\\"+ end=+"+
+
+hi def link dictdconfTodo Todo
+hi def link dictdconfComment Comment
+hi def link dictdconfSpecialC Special
+hi def link dictdconfKeyword Keyword
+hi def link dictdconfIdentifier Identifier
+hi def link dictdconfAccess dictdconfIdentifier
+hi def link dictdconfDatabase dictdconfString
+hi def link dictdconfSpec dictdconfIdentifier
+hi def link dictdconfVDatabase dictdconfDatabase
+hi def link dictdconfVSpec dictdconfSpec
+hi def link dictdconfPDatabase dictdconfDatabase
+hi def link dictdconfPSpec dictdconfSpec
+hi def link dictdconfUsername dictdconfString
+hi def link dictdconfSecret Special
+hi def link dictdconfString String
+hi def link dictdconfDelimiter Delimiter
+
+let b:current_syntax = "dictdconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/diff.vim b/runtime/syntax/diff.vim
new file mode 100644
index 0000000..408556a
--- /dev/null
+++ b/runtime/syntax/diff.vim
@@ -0,0 +1,389 @@
+" Vim syntax file
+" Language: Diff (context or unified)
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Translations by Jakson Alves de Aquino.
+" Last Change: 2020 Dec 30
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+scriptencoding utf-8
+
+syn match diffOnly "^Only in .*"
+syn match diffIdentical "^Files .* and .* are identical$"
+syn match diffDiffer "^Files .* and .* differ$"
+syn match diffBDiffer "^Binary files .* and .* differ$"
+syn match diffIsA "^File .* is a .* while file .* is a .*"
+syn match diffNoEOL "^\\ No newline at end of file .*"
+syn match diffCommon "^Common subdirectories: .*"
+
+" Disable the translations by setting diff_translations to zero.
+if !exists("diff_translations") || diff_translations
+
+" ca
+syn match diffOnly "^Només a .*"
+syn match diffIdentical "^Els fitxers .* i .* són idèntics$"
+syn match diffDiffer "^Els fitxers .* i .* difereixen$"
+syn match diffBDiffer "^Els fitxers .* i .* difereixen$"
+syn match diffIsA "^El fitxer .* és un .* mentre que el fitxer .* és un .*"
+syn match diffNoEOL "^\\ No hi ha cap caràcter de salt de línia al final del fitxer"
+syn match diffCommon "^Subdirectoris comuns: .* i .*"
+
+" cs
+syn match diffOnly "^Pouze v .*"
+syn match diffIdentical "^Soubory .* a .* jsou identické$"
+syn match diffDiffer "^Soubory .* a .* jsou různé$"
+syn match diffBDiffer "^Binární soubory .* a .* jsou rozdílné$"
+syn match diffBDiffer "^Soubory .* a .* jsou různé$"
+syn match diffIsA "^Soubor .* je .* pokud soubor .* je .*"
+syn match diffNoEOL "^\\ Chybí znak konce řádku na konci souboru"
+syn match diffCommon "^SpoleÄné podadresáře: .* a .*"
+
+" da
+syn match diffOnly "^Kun i .*"
+syn match diffIdentical "^Filerne .* og .* er identiske$"
+syn match diffDiffer "^Filerne .* og .* er forskellige$"
+syn match diffBDiffer "^Binære filer .* og .* er forskellige$"
+syn match diffIsA "^Filen .* er en .* mens filen .* er en .*"
+syn match diffNoEOL "^\\ Intet linjeskift ved filafslutning"
+syn match diffCommon "^Identiske underkataloger: .* og .*"
+
+" de
+syn match diffOnly "^Nur in .*"
+syn match diffIdentical "^Dateien .* und .* sind identisch.$"
+syn match diffDiffer "^Dateien .* und .* sind verschieden.$"
+syn match diffBDiffer "^Binärdateien .* and .* sind verschieden.$"
+syn match diffBDiffer "^Binärdateien .* und .* sind verschieden.$"
+syn match diffIsA "^Datei .* ist ein .* während Datei .* ein .* ist.$"
+syn match diffNoEOL "^\\ Kein Zeilenumbruch am Dateiende."
+syn match diffCommon "^Gemeinsame Unterverzeichnisse: .* und .*.$"
+
+" el
+syn match diffOnly "^Μόνο στο .*"
+syn match diffIdentical "^Τα αÏχεία .* καί .* είναι πανομοιότυπα$"
+syn match diffDiffer "^Τα αÏχεία .* και .* διαφέÏουν$"
+syn match diffBDiffer "^Τα αÏχεία .* και .* διαφέÏουν$"
+syn match diffIsA "^Το αÏχείο .* είναι .* ενώ το αÏχείο .* είναι .*"
+syn match diffNoEOL "^\\ Δεν υπάÏχει χαÏακτήÏας νέας γÏαμμής στο τέλος του αÏχείου"
+syn match diffCommon "^Οι υποκατάλογοι .* και .* είναι ταυτόσημοι$"
+
+" eo
+syn match diffOnly "^Nur en .*"
+syn match diffIdentical "^Dosieroj .* kaj .* estas samaj$"
+syn match diffDiffer "^Dosieroj .* kaj .* estas malsamaj$"
+syn match diffBDiffer "^Dosieroj .* kaj .* estas malsamaj$"
+syn match diffIsA "^Dosiero .* estas .*, dum dosiero .* estas .*"
+syn match diffNoEOL "^\\ Mankas linifino ĉe fino de dosiero"
+syn match diffCommon "^Komunaj subdosierujoj: .* kaj .*"
+
+" es
+syn match diffOnly "^Sólo en .*"
+syn match diffIdentical "^Los ficheros .* y .* son idénticos$"
+syn match diffDiffer "^Los ficheros .* y .* son distintos$"
+syn match diffBDiffer "^Los ficheros binarios .* y .* son distintos$"
+syn match diffIsA "^El fichero .* es un .* mientras que el .* es un .*"
+syn match diffNoEOL "^\\ No hay ningún carácter de nueva línea al final del fichero"
+syn match diffCommon "^Subdirectorios comunes: .* y .*"
+
+" fi
+syn match diffOnly "^Vain hakemistossa .*"
+syn match diffIdentical "^Tiedostot .* ja .* ovat identtiset$"
+syn match diffDiffer "^Tiedostot .* ja .* eroavat$"
+syn match diffBDiffer "^Binääritiedostot .* ja .* eroavat$"
+syn match diffIsA "^Tiedosto .* on .*, kun taas tiedosto .* on .*"
+syn match diffNoEOL "^\\ Ei rivinvaihtoa tiedoston lopussa"
+syn match diffCommon "^Yhteiset alihakemistot: .* ja .*"
+
+" fr
+syn match diffOnly "^Seulement dans .*"
+syn match diffIdentical "^Les fichiers .* et .* sont identiques.*"
+syn match diffDiffer "^Les fichiers .* et .* sont différents.*"
+syn match diffBDiffer "^Les fichiers binaires .* et .* sont différents.*"
+syn match diffIsA "^Le fichier .* est un .* alors que le fichier .* est un .*"
+syn match diffNoEOL "^\\ Pas de fin de ligne à la fin du fichier.*"
+syn match diffCommon "^Les sous-répertoires .* et .* sont identiques.*"
+
+" ga
+syn match diffOnly "^I .* amháin: .*"
+syn match diffIdentical "^Is comhionann iad na comhaid .* agus .*"
+syn match diffDiffer "^Tá difríocht idir na comhaid .* agus .*"
+syn match diffBDiffer "^Tá difríocht idir na comhaid .* agus .*"
+syn match diffIsA "^Tá comhad .* ina .* ach tá comhad .* ina .*"
+syn match diffNoEOL "^\\ Gan líne nua ag an chomhadchríoch"
+syn match diffCommon "^Fochomhadlanna i gcoitianta: .* agus .*"
+
+" gl
+syn match diffOnly "^Só en .*"
+syn match diffIdentical "^Os ficheiros .* e .* son idénticos$"
+syn match diffDiffer "^Os ficheiros .* e .* son diferentes$"
+syn match diffBDiffer "^Os ficheiros binarios .* e .* son diferentes$"
+syn match diffIsA "^O ficheiro .* é un .* mentres que o ficheiro .* é un .*"
+syn match diffNoEOL "^\\ Non hai un salto de liña na fin da liña"
+syn match diffCommon "^Subdirectorios comúns: .* e .*"
+
+" he
+" ^.* are expansive patterns for long lines, so disabled unless we can match
+" some specific hebrew chars
+if search('\%u05d5\|\%u05d1', 'nw', '', 100)
+ syn match diffOnly "^.*-ב קר ×צמנ .*"
+ syn match diffIdentical "^××™×”×– ×× ×™×” .*-ו .* ×יצבקה$"
+ syn match diffDiffer "^הזמ ×”×– ×ינוש `.*'-ו `.*' ×יצבקה$"
+ syn match diffBDiffer "^הזמ ×”×– ×ינוש `.*'-ו `.*' ×יירניב ×יצבק$"
+ syn match diffIsA "^.* .*-ל .* .* תוושהל ןתינ ×ל$"
+ syn match diffNoEOL "^\\ ץבוקה ףוסב השד.-הרוש ות רס."
+ syn match diffCommon "^.*-ו .* :תוהז תויקית-תת$"
+endif
+
+" hr
+syn match diffOnly "^Samo u .*"
+syn match diffIdentical "^Datoteke .* i .* su identiÄne$"
+syn match diffDiffer "^Datoteke .* i .* se razlikuju$"
+syn match diffBDiffer "^Binarne datoteke .* i .* se razlikuju$"
+syn match diffIsA "^Datoteka .* je .*, a datoteka .* je .*"
+syn match diffNoEOL "^\\ Nema novog retka na kraju datoteke"
+syn match diffCommon "^UobiÄajeni poddirektoriji: .* i .*"
+
+" hu
+syn match diffOnly "^Csak .* -ben: .*"
+syn match diffIdentical "^.* és .* fájlok azonosak$"
+syn match diffDiffer "^A(z) .* és a(z) .* fájlok különböznek$"
+syn match diffBDiffer "^A(z) .* és a(z) .* fájlok különböznek$"
+syn match diffIsA "^A(z) .* fájl egy .*, viszont a(z) .* fájl egy .*"
+syn match diffNoEOL "^\\ Nincs újsor a fájl végén"
+syn match diffCommon "^Közös alkönyvtárak: .* és .*"
+
+" id
+syn match diffOnly "^Hanya dalam .*"
+syn match diffIdentical "^File .* dan .* identik$"
+syn match diffDiffer "^Berkas .* dan .* berbeda$"
+syn match diffBDiffer "^File biner .* dan .* berbeda$"
+syn match diffIsA "^File .* adalah .* sementara file .* adalah .*"
+syn match diffNoEOL "^\\ Tidak ada baris-baru di akhir dari berkas"
+syn match diffCommon "^Subdirektori sama: .* dan .*"
+
+" it
+syn match diffOnly "^Solo in .*"
+syn match diffIdentical "^I file .* e .* sono identici$"
+syn match diffDiffer "^I file .* e .* sono diversi$"
+syn match diffBDiffer "^I file .* e .* sono diversi$"
+syn match diffBDiffer "^I file binari .* e .* sono diversi$"
+syn match diffIsA "^File .* è un .* mentre file .* è un .*"
+syn match diffNoEOL "^\\ Manca newline alla fine del file"
+syn match diffCommon "^Sottodirectory in comune: .* e .*"
+
+" ja
+syn match diffOnly "^.*ã ã‘ã«ç™ºè¦‹: .*"
+syn match diffIdentical "^ファイル.*ã¨.*ã¯åŒä¸€$"
+syn match diffDiffer "^ファイル.*ã¨.*ã¯é•ã„ã¾ã™$"
+syn match diffBDiffer "^ãƒã‚¤ãƒŠãƒªãƒ¼ãƒ»ãƒ•ã‚¡ã‚¤ãƒ«.*ã¨.*ã¯é•ã„ã¾ã™$"
+syn match diffIsA "^ファイル.*ã¯.*ã€ãƒ•ã‚¡ã‚¤ãƒ«.*ã¯.*"
+syn match diffNoEOL "^\\ ファイル末尾ã«æ”¹è¡ŒãŒã‚ã‚Šã¾ã›ã‚“"
+syn match diffCommon "^共通ã®ä¸‹ä½ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ¼: .*ã¨.*"
+
+" ja DiffUtils 3.3
+syn match diffOnly "^.* ã®ã¿ã«å­˜åœ¨: .*"
+syn match diffIdentical "^ファイル .* 㨠.* ã¯åŒä¸€ã§ã™$"
+syn match diffDiffer "^ファイル .* 㨠.* ã¯ç•°ãªã‚Šã¾ã™$"
+syn match diffBDiffer "^ãƒã‚¤ãƒŠãƒªãƒ¼ãƒ•ã‚¡ã‚¤ãƒ« .* ã¨.* ã¯ç•°ãªã‚Šã¾ã™$"
+syn match diffIsA "^ファイル .* 㯠.* ã§ã™ã€‚一方ã€ãƒ•ã‚¡ã‚¤ãƒ« .* 㯠.* ã§ã™$"
+syn match diffNoEOL "^\\ ファイル末尾ã«æ”¹è¡ŒãŒã‚ã‚Šã¾ã›ã‚“"
+syn match diffCommon "^共通ã®ã‚µãƒ–ディレクトリー: .* 㨠.*"
+
+" lv
+syn match diffOnly "^Tikai iekš .*"
+syn match diffIdentical "^Fails .* un .* ir identiski$"
+syn match diffDiffer "^Faili .* un .* atšķiras$"
+syn match diffBDiffer "^Faili .* un .* atšķiras$"
+syn match diffBDiffer "^BinÄrie faili .* un .* atÅ¡Ä·iras$"
+syn match diffIsA "^Fails .* ir .* kamēr fails .* ir .*"
+syn match diffNoEOL "^\\ Nav jaunu rindu faila beigÄs"
+syn match diffCommon "^KopÄ“jÄs apakÅ¡direktorijas: .* un .*"
+
+" ms
+syn match diffOnly "^Hanya dalam .*"
+syn match diffIdentical "^Fail .* dan .* adalah serupa$"
+syn match diffDiffer "^Fail .* dan .* berbeza$"
+syn match diffBDiffer "^Fail .* dan .* berbeza$"
+syn match diffIsA "^Fail .* adalah .* manakala fail .* adalah .*"
+syn match diffNoEOL "^\\ Tiada baris baru pada penghujung fail"
+syn match diffCommon "^Subdirektori umum: .* dan .*"
+
+" nl
+syn match diffOnly "^Alleen in .*"
+syn match diffIdentical "^Bestanden .* en .* zijn identiek$"
+syn match diffDiffer "^Bestanden .* en .* zijn verschillend$"
+syn match diffBDiffer "^Bestanden .* en .* zijn verschillend$"
+syn match diffBDiffer "^Binaire bestanden .* en .* zijn verschillend$"
+syn match diffIsA "^Bestand .* is een .* terwijl bestand .* een .* is$"
+syn match diffNoEOL "^\\ Geen regeleindeteken (LF) aan einde van bestand"
+syn match diffCommon "^Gemeenschappelijke submappen: .* en .*"
+
+" pl
+syn match diffOnly "^Tylko w .*"
+syn match diffIdentical "^Pliki .* i .* sÄ… identyczne$"
+syn match diffDiffer "^Pliki .* i .* różnią się$"
+syn match diffBDiffer "^Pliki .* i .* różnią się$"
+syn match diffBDiffer "^Binarne pliki .* i .* różnią się$"
+syn match diffIsA "^Plik .* jest .*, podczas gdy plik .* jest .*"
+syn match diffNoEOL "^\\ Brak znaku nowej linii na końcu pliku"
+syn match diffCommon "^Wspólne podkatalogi: .* i .*"
+
+" pt_BR
+syn match diffOnly "^Somente em .*"
+syn match diffOnly "^Apenas em .*"
+syn match diffIdentical "^Os aquivos .* e .* são idênticos$"
+syn match diffDiffer "^Os arquivos .* e .* são diferentes$"
+syn match diffBDiffer "^Os arquivos binários .* e .* são diferentes$"
+syn match diffIsA "^O arquivo .* é .* enquanto o arquivo .* é .*"
+syn match diffNoEOL "^\\ Falta o caracter nova linha no final do arquivo"
+syn match diffCommon "^Subdiretórios idênticos: .* e .*"
+
+" ro
+syn match diffOnly "^Doar în .*"
+syn match diffIdentical "^FiÅŸierele .* ÅŸi .* sunt identice$"
+syn match diffDiffer "^Fişierele .* şi .* diferă$"
+syn match diffBDiffer "^Fişierele binare .* şi .* diferă$"
+syn match diffIsA "^Fişierul .* este un .* pe când fişierul .* este un .*.$"
+syn match diffNoEOL "^\\ Nici un element de linie nouă la sfârşitul fişierului"
+syn match diffCommon "^Subdirectoare comune: .* ÅŸi .*.$"
+
+" ru
+syn match diffOnly "^Только в .*"
+syn match diffIdentical "^Файлы .* и .* идентичны$"
+syn match diffDiffer "^Файлы .* и .* различаютÑÑ$"
+syn match diffBDiffer "^Файлы .* и .* различаютÑÑ$"
+syn match diffIsA "^Файл .* Ñто .*, тогда как файл .* -- .*"
+syn match diffNoEOL "^\\ Ð’ конце файла нет новой Ñтроки"
+syn match diffCommon "^Общие подкаталоги: .* и .*"
+
+" sr
+syn match diffOnly "^Само у .*"
+syn match diffIdentical "^Датотеке „.*“ и „.*“ Ñе подударају$"
+syn match diffDiffer "^Датотеке .* и .* различите$"
+syn match diffBDiffer "^Бинарне датотеке .* и .* различите$"
+syn match diffIsA "^Датотека „.*“ је „.*“ док је датотека „.*“ „.*“$"
+syn match diffNoEOL "^\\ Без новог реда на крају датотеке"
+syn match diffCommon "^Заједнички поддиректоријуми: .* и .*"
+
+" sv
+syn match diffOnly "^Endast i .*"
+syn match diffIdentical "^Filerna .* och .* är lika$"
+syn match diffDiffer "^Filerna .* och .* skiljer$"
+syn match diffBDiffer "^Filerna .* och .* skiljer$"
+syn match diffIsA "^Fil .* är en .* medan fil .* är en .*"
+syn match diffBDiffer "^De binära filerna .* och .* skiljer$"
+syn match diffIsA "^Filen .* är .* medan filen .* är .*"
+syn match diffNoEOL "^\\ Ingen nyrad vid filslut"
+syn match diffCommon "^Lika underkataloger: .* och .*"
+
+" tr
+syn match diffOnly "^Yalnızca .*'da: .*"
+syn match diffIdentical "^.* ve .* dosyaları birbirinin aynı$"
+syn match diffDiffer "^.* ve .* dosyaları birbirinden farklı$"
+syn match diffBDiffer "^.* ve .* dosyaları birbirinden farklı$"
+syn match diffBDiffer "^İkili .* ve .* birbirinden farklı$"
+syn match diffIsA "^.* dosyası, bir .*, halbuki .* dosyası bir .*"
+syn match diffNoEOL "^\\ Dosya sonunda yenisatır yok."
+syn match diffCommon "^Ortak alt dizinler: .* ve .*"
+
+" uk
+syn match diffOnly "^Лише у .*"
+syn match diffIdentical "^Файли .* та .* ідентичні$"
+syn match diffDiffer "^Файли .* та .* відрізнÑÑŽÑ‚ÑŒÑÑ$"
+syn match diffBDiffer "^Файли .* та .* відрізнÑÑŽÑ‚ÑŒÑÑ$"
+syn match diffBDiffer "^Двійкові файли .* та .* відрізнÑÑŽÑ‚ÑŒÑÑ$"
+syn match diffIsA "^Файл .* це .*, тоді Ñк файл .* -- .*"
+syn match diffNoEOL "^\\ Ðаприкінці файлу немає нового Ñ€Ñдка"
+syn match diffCommon "^Спільні підкаталоги: .* та .*"
+
+" vi
+syn match diffOnly "^Chỉ trong .*"
+syn match diffIdentical "^Hai tập tin .* và .* là bằng nhau.$"
+syn match diffIdentical "^Cả .* và .* là cùng một tập tin$"
+syn match diffDiffer "^Hai tập tin .* và .* là khác nhau.$"
+syn match diffBDiffer "^Hai tập tin nhị phân .* và .* khác nhau$"
+syn match diffIsA "^Tập tin .* là một .* trong khi tập tin .* là một .*.$"
+syn match diffBDiffer "^Hai tập tin .* và .* là khác nhau.$"
+syn match diffIsA "^Tập tin .* là một .* còn tập tin .* là một .*.$"
+syn match diffNoEOL "^\\ Không có ký tự dòng mới tại kêt thức tập tin."
+syn match diffCommon "^Thư mục con chung: .* và .*"
+
+" zh_CN
+syn match diffOnly "^åªåœ¨ .* 存在:.*"
+syn match diffIdentical "^檔案 .* å’Œ .* 相åŒ$"
+syn match diffDiffer "^文件 .* å’Œ .* ä¸åŒ$"
+syn match diffBDiffer "^文件 .* å’Œ .* ä¸åŒ$"
+syn match diffIsA "^文件 .* 是.*而文件 .* 是.*"
+syn match diffNoEOL "^\\ 文件尾没有 newline 字符"
+syn match diffCommon "^.* å’Œ .* 有共åŒçš„å­ç›®å½•$"
+
+" zh_TW
+syn match diffOnly "^åªåœ¨ .* 存在:.*"
+syn match diffIdentical "^檔案 .* å’Œ .* 相åŒ$"
+syn match diffDiffer "^檔案 .* 與 .* ä¸åŒ$"
+syn match diffBDiffer "^二元碼檔 .* 與 .* ä¸åŒ$"
+syn match diffIsA "^檔案 .* 是.*而檔案 .* 是.*"
+syn match diffNoEOL "^\\ 檔案末沒有 newline 字元"
+syn match diffCommon "^.* å’Œ .* 有共åŒçš„副目錄$"
+
+endif
+
+
+syn match diffRemoved "^-.*"
+syn match diffRemoved "^<.*"
+syn match diffAdded "^+.*"
+syn match diffAdded "^>.*"
+syn match diffChanged "^! .*"
+
+syn match diffSubname " @@..*"ms=s+3 contained
+syn match diffLine "^@.*" contains=diffSubname
+syn match diffLine "^\<\d\+\>.*"
+syn match diffLine "^\*\*\*\*.*"
+syn match diffLine "^---$"
+
+" Some versions of diff have lines like "#c#" and "#d#" (where # is a number)
+syn match diffLine "^\d\+\(,\d\+\)\=[cda]\d\+\>.*"
+
+syn match diffFile "^diff\>.*"
+syn match diffFile "^Index: .*"
+syn match diffFile "^==== .*"
+
+if search('^@@ -\S\+ +\S\+ @@', 'nw', '', 100)
+ " unified
+ syn match diffOldFile "^--- .*"
+ syn match diffNewFile "^+++ .*"
+else
+ " context / old style
+ syn match diffOldFile "^\*\*\* .*"
+ syn match diffNewFile "^--- .*"
+endif
+
+" Used by git
+syn match diffIndexLine "^index \x\x\x\x.*"
+
+syn match diffComment "^#.*"
+
+" Define the default highlighting.
+" Only used when an item doesn't have highlighting yet
+hi def link diffOldFile diffFile
+hi def link diffNewFile diffFile
+hi def link diffIndexLine PreProc
+hi def link diffFile Type
+hi def link diffOnly Constant
+hi def link diffIdentical Constant
+hi def link diffDiffer Constant
+hi def link diffBDiffer Constant
+hi def link diffIsA Constant
+hi def link diffNoEOL Constant
+hi def link diffCommon Constant
+hi def link diffRemoved Special
+hi def link diffChanged PreProc
+hi def link diffAdded Identifier
+hi def link diffLine Statement
+hi def link diffSubname PreProc
+hi def link diffComment Comment
+
+let b:current_syntax = "diff"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/dircolors.vim b/runtime/syntax/dircolors.vim
new file mode 100644
index 0000000..24bc31f
--- /dev/null
+++ b/runtime/syntax/dircolors.vim
@@ -0,0 +1,222 @@
+" Vim syntax file
+" Language: dircolors(1) input file
+" Maintainer: Jan Larres <jan@majutsushi.net>
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2018-02-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syntax keyword dircolorsTodo FIXME TODO XXX NOTE contained
+
+syntax region dircolorsComment start='#' end='$' contains=dircolorsTodo,@Spell
+
+syntax keyword dircolorsKeyword TERM LEFT LEFTCODE RIGHT RIGHTCODE END ENDCODE
+
+syntax keyword dircolorsKeyword NORMAL NORM FILE RESET DIR LNK LINK SYMLINK
+ \ MULTIHARDLINK FIFO SOCK DOOR BLK CHR ORPHAN
+ \ MISSING PIPE BLOCK CHR EXEC SETUID SETGID
+ \ CAPABILITY STICKY_OTHER_WRITABLE
+ \ OTHER_WRITABLE STICKY
+
+" Slackware only, ignored by GNU dircolors.
+syntax keyword dircolorsKeyword COLOR OPTIONS EIGHTBIT
+
+syntax match dircolorsExtension '^\s*\zs[.*]\S\+'
+
+syntax match dircolorsEscape '\\[abefnrtv?_\\^#]'
+syntax match dircolorsEscape '\\[0-9]\{3}'
+syntax match dircolorsEscape '\\x[0-9a-f]\{3}'
+
+if !has('gui_running') && &t_Co == ''
+ syntax match dircolorsNumber '\<\d\+\>'
+ highlight default link dircolorsNumber Number
+endif
+
+highlight default link dircolorsTodo Todo
+highlight default link dircolorsComment Comment
+highlight default link dircolorsKeyword Keyword
+highlight default link dircolorsExtension Identifier
+highlight default link dircolorsEscape Special
+
+function! s:set_guicolors() abort
+ let s:termguicolors = {}
+
+ let s:termguicolors[0] = "Black"
+ let s:termguicolors[1] = "DarkRed"
+ let s:termguicolors[2] = "DarkGreen"
+ let s:termguicolors[3] = "DarkYellow"
+ let s:termguicolors[4] = "DarkBlue"
+ let s:termguicolors[5] = "DarkMagenta"
+ let s:termguicolors[6] = "DarkCyan"
+ let s:termguicolors[7] = "Gray"
+ let s:termguicolors[8] = "DarkGray"
+ let s:termguicolors[9] = "Red"
+ let s:termguicolors[10] = "Green"
+ let s:termguicolors[11] = "Yellow"
+ let s:termguicolors[12] = "Blue"
+ let s:termguicolors[13] = "Magenta"
+ let s:termguicolors[14] = "Cyan"
+ let s:termguicolors[15] = "White"
+
+ let xterm_palette = ["00", "5f", "87", "af", "d7", "ff"]
+
+ let cur_col = 16
+
+ for r in xterm_palette
+ for g in xterm_palette
+ for b in xterm_palette
+ let s:termguicolors[cur_col] = '#' . r . g . b
+ let cur_col += 1
+ endfor
+ endfor
+ endfor
+
+ for i in range(24)
+ let g = i * 0xa + 8
+ let s:termguicolors[i + 232] = '#' . g . g . g
+ endfor
+endfunction
+
+function! s:get_hi_str(color, place) abort
+ if a:color >= 0 && a:color <= 255
+ if has('gui_running')
+ return ' gui' . a:place . '=' . s:termguicolors[a:color]
+ elseif a:color <= 7 || &t_Co == 256 || &t_Co == 88
+ return ' cterm' . a:place . '=' . a:color
+ endif
+ endif
+ return ''
+endfunction
+
+function! s:get_256color(colors) abort
+ if len(a:colors) >= 2 " May be fewer while editing
+ let [_five, color] = remove(a:colors, 0, 1)
+ if _five != '5' || color == ''
+ return -1
+ else
+ return str2nr(color)
+ endif
+ else
+ return -1
+ endif
+endfunction
+
+function! s:preview_color(linenr) abort
+ let line = getline(a:linenr)
+ let defline = matchlist(line, '^\v([A-Z_]+|[*.]\S+)\s+([0-9;]+)')
+ if empty(defline)
+ return
+ endif
+
+ let colordef = defline[2]
+
+ let colors = split(colordef, ';')
+
+ let hi_str = ''
+ let hi_attrs = []
+ while len(colors) > 0
+ let item = str2nr(remove(colors, 0))
+ if item == 1
+ call add(hi_attrs, 'bold')
+ elseif item == 3
+ call add(hi_attrs, 'italic')
+ elseif item == 4
+ call add(hi_attrs, 'underline')
+ elseif item == 7
+ call add(hi_attrs, 'inverse')
+ elseif item >= 30 && item <= 37
+ " ANSI SGR foreground color
+ let hi_str .= s:get_hi_str(item - 30, 'fg')
+ elseif item >= 40 && item <= 47
+ " ANSI SGR background color
+ let hi_str .= s:get_hi_str(item - 40, 'bg')
+ elseif item >= 90 && item <= 97
+ " ANSI SGR+8 foreground color (xterm 16-color support)
+ let hi_str .= s:get_hi_str(item - 82, 'fg')
+ elseif item >= 100 && item <= 107
+ " ANSI SGR+8 background color (xterm 16-color support)
+ let hi_str .= s:get_hi_str(item - 92, 'bg')
+ elseif item == 38
+ " Foreground for terminals with 88/256 color support
+ let color = s:get_256color(colors)
+ if color == -1
+ break
+ endif
+ let hi_str .= s:get_hi_str(color, 'fg')
+ elseif item == 48
+ " Background for terminals with 88/256 color support
+ let color = s:get_256color(colors)
+ if color == -1
+ break
+ endif
+ let hi_str .= s:get_hi_str(color, 'bg')
+ endif
+ endwhile
+
+ if hi_str == '' && empty(hi_attrs)
+ return
+ endif
+
+ " Check whether we have already defined this color
+ redir => s:currentmatch
+ silent! execute 'syntax list'
+ redir END
+
+ if s:currentmatch !~# '\/\\_s\\zs' . colordef . '\\ze\\_s\/'
+ " Append the buffer number to avoid problems with other dircolors
+ " buffers interfering
+ let bufnr = bufnr('%')
+ execute 'syntax match dircolorsColor' . b:dc_next_index . '_' . bufnr .
+ \ ' "\_s\zs' . colordef . '\ze\_s"'
+ let hi_attrs_str = ''
+ if !empty(hi_attrs)
+ if has('gui_running')
+ let hi_attrs_str = ' gui=' . join(hi_attrs, ',')
+ else
+ let hi_attrs_str = ' cterm=' . join(hi_attrs, ',')
+ endif
+ endif
+ execute 'highlight default dircolorsColor' . b:dc_next_index . '_' .
+ \ bufnr . hi_str . hi_attrs_str
+ let b:dc_next_index += 1
+ endif
+endfunction
+
+" Avoid accumulating too many definitions while editing
+function! s:reset_colors() abort
+ if b:dc_next_index > 0
+ let bufnr = bufnr('%')
+ for i in range(b:dc_next_index)
+ execute 'syntax clear dircolorsColor' . i . '_' . bufnr
+ execute 'highlight clear dircolorsColor' . i . '_' . bufnr
+ endfor
+ let b:dc_next_index = 0
+ endif
+
+ for linenr in range(1, line('$'))
+ call s:preview_color(linenr)
+ endfor
+endfunction
+
+let b:dc_next_index = 0
+
+if has('gui_running')
+ call s:set_guicolors()
+endif
+
+if has('gui_running') || &t_Co != ''
+ call s:reset_colors()
+
+ autocmd CursorMoved,CursorMovedI <buffer> call s:preview_color('.')
+ autocmd CursorHold,CursorHoldI <buffer> call s:reset_colors()
+endif
+
+let b:current_syntax = "dircolors"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/dirpager.vim b/runtime/syntax/dirpager.vim
new file mode 100644
index 0000000..dc8b986
--- /dev/null
+++ b/runtime/syntax/dirpager.vim
@@ -0,0 +1,56 @@
+" Vim syntax file
+" Maintainer: Thilo Six
+" Contact: <vim-dev at vim dot org>
+" http://www.vim.org/maillist.php#vim-dev
+"
+" Description: display directory content inside Vim with syntax
+" highlighting
+" File: runtime/syntax/dirpager.vim
+" Last Change: 2022 Jun 14
+" Modeline: vim: ts=8:sw=2:sts=2:
+"
+" Credits: dirpager.vim is derived from Nikolai Weibulls dircolors.vim
+"
+" License: VIM License
+" Vim is Charityware, see ":help Uganda"
+"
+" Usage: $ ls -la | view -c "set ft=dirpager" -
+"
+"
+",----[ ls(1posix) ]--------------------------------------------------
+"
+" The <entry type> character shall describe the type of file, as
+" follows:
+"
+" d Directory.
+" b Block special file.
+" c Character special file.
+" l (ell) Symbolic link.
+" p FIFO.
+" - Regular file.
+"
+
+if exists("b:current_syntax") || &compatible
+ finish
+endif
+
+setlocal nowrap
+
+syn keyword DirPagerTodo contained FIXME TODO XXX NOTE
+
+syn region DirPagerExe start='^...x\|^......x\|^.........x' end='$' contains=DirPagerTodo,@Spell
+syn region DirPagerDir start='^d' end='$' contains=DirPagerTodo,@Spell
+syn region DirPagerLink start='^l' end='$' contains=DirPagerTodo,@Spell
+syn region DirPagerSpecial start='^b' end='$' contains=DirPagerTodo,@Spell
+syn region DirPagerSpecial start='^c' end='$' contains=DirPagerTodo,@Spell
+syn region DirPagerFifo start='^p' end='$' contains=DirPagerTodo,@Spell
+
+hi def link DirPagerTodo Todo
+hi def DirPagerExe ctermfg=Green guifg=Green
+hi def DirPagerDir ctermfg=Blue guifg=Blue
+hi def DirPagerLink ctermfg=Cyan guifg=Cyan
+hi def DirPagerSpecial ctermfg=Yellow guifg=Yellow
+hi def DirPagerFifo ctermfg=Brown guifg=Brown
+
+let b:current_syntax = "dirpager"
+
diff --git a/runtime/syntax/diva.vim b/runtime/syntax/diva.vim
new file mode 100644
index 0000000..127a0b4
--- /dev/null
+++ b/runtime/syntax/diva.vim
@@ -0,0 +1,96 @@
+" Vim syntax file
+" Language: SKILL for Diva
+" Maintainer: Toby Schaffer <jtschaff@eos.ncsu.edu>
+" Last Change: 2001 May 09
+" Comments: SKILL is a Lisp-like programming language for use in EDA
+" tools from Cadence Design Systems. It allows you to have
+" a programming environment within the Cadence environment
+" that gives you access to the complete tool set and design
+" database. These items are for Diva verification rules decks.
+
+" Don't remove any old syntax stuff hanging around! We need stuff
+" from skill.vim.
+if !exists("did_skill_syntax_inits")
+ runtime! syntax/skill.vim
+endif
+
+syn keyword divaDRCKeywords area enc notch ovlp sep width
+syn keyword divaDRCKeywords app diffNet length lengtha lengthb
+syn keyword divaDRCKeywords notParallel only_perp opposite parallel
+syn keyword divaDRCKeywords sameNet shielded with_perp
+syn keyword divaDRCKeywords edge edgea edgeb fig figa figb
+syn keyword divaDRCKeywords normalGrow squareGrow message raw
+syn keyword divaMeasKeywords perimeter length bends_all bends_full
+syn keyword divaMeasKeywords bends_part corners_all corners_full
+syn keyword divaMeasKeywords corners_part angles_all angles_full
+syn keyword divaMeasKeywords angles_part fig_count butting coincident
+syn keyword divaMeasKeywords over not_over outside inside enclosing
+syn keyword divaMeasKeywords figure one_net two_net three_net grounded
+syn keyword divaMeasKeywords polarized limit keep ignore
+syn match divaCtrlFunctions "(ivIf\>"hs=s+1
+syn match divaCtrlFunctions "\<ivIf("he=e-1
+syn match divaCtrlFunctions "(switch\>"hs=s+1
+syn match divaCtrlFunctions "\<switch("he=e-1
+syn match divaCtrlFunctions "(and\>"hs=s+1
+syn match divaCtrlFunctions "\<and("he=e-1
+syn match divaCtrlFunctions "(or\>"hs=s+1
+syn match divaCtrlFunctions "\<or("he=e-1
+syn match divaCtrlFunctions "(null\>"hs=s+1
+syn match divaCtrlFunctions "\<null("he=e-1
+syn match divaExtFunctions "(save\(Interconnect\|Property\|Parameter\|Recognition\)\>"hs=s+1
+syn match divaExtFunctions "\<save\(Interconnect\|Property\|Parameter\|Recognition\)("he=e-1
+syn match divaExtFunctions "(\(save\|measure\|attach\|multiLevel\|calculate\)Parasitic\>"hs=s+1
+syn match divaExtFunctions "\<\(save\|measure\|attach\|multiLevel\|calculate\)Parasitic("he=e-1
+syn match divaExtFunctions "(\(calculate\|measure\)Parameter\>"hs=s+1
+syn match divaExtFunctions "\<\(calculate\|measure\)Parameter("he=e-1
+syn match divaExtFunctions "(measure\(Resistance\|Fringe\)\>"hs=s+1
+syn match divaExtFunctions "\<measure\(Resistance\|Fringe\)("he=e-1
+syn match divaExtFunctions "(extract\(Device\|MOS\)\>"hs=s+1
+syn match divaExtFunctions "\<extract\(Device\|MOS\)("he=e-1
+syn match divaDRCFunctions "(checkAllLayers\>"hs=s+1
+syn match divaDRCFunctions "\<checkAllLayers("he=e-1
+syn match divaDRCFunctions "(checkLayer\>"hs=s+1
+syn match divaDRCFunctions "\<checkLayer("he=e-1
+syn match divaDRCFunctions "(drc\>"hs=s+1
+syn match divaDRCFunctions "\<drc("he=e-1
+syn match divaDRCFunctions "(drcAntenna\>"hs=s+1
+syn match divaDRCFunctions "\<drcAntenna("he=e-1
+syn match divaFunctions "(\(drcExtract\|lvs\)Rules\>"hs=s+1
+syn match divaFunctions "\<\(drcExtract\|lvs\)Rules("he=e-1
+syn match divaLayerFunctions "(saveDerived\>"hs=s+1
+syn match divaLayerFunctions "\<saveDerived("he=e-1
+syn match divaLayerFunctions "(copyGraphics\>"hs=s+1
+syn match divaLayerFunctions "\<copyGraphics("he=e-1
+syn match divaChkFunctions "(dubiousData\>"hs=s+1
+syn match divaChkFunctions "\<dubiousData("he=e-1
+syn match divaChkFunctions "(offGrid\>"hs=s+1
+syn match divaChkFunctions "\<offGrid("he=e-1
+syn match divaLVSFunctions "(compareDeviceProperty\>"hs=s+1
+syn match divaLVSFunctions "\<compareDeviceProperty("he=e-1
+syn match divaLVSFunctions "(ignoreTerminal\>"hs=s+1
+syn match divaLVSFunctions "\<ignoreTerminal("he=e-1
+syn match divaLVSFunctions "(parameterMatchType\>"hs=s+1
+syn match divaLVSFunctions "\<parameterMatchType("he=e-1
+syn match divaLVSFunctions "(\(permute\|prune\|remove\)Device\>"hs=s+1
+syn match divaLVSFunctions "\<\(permute\|prune\|remove\)Device("he=e-1
+syn match divaGeomFunctions "(geom\u\a\+\(45\|90\)\=\>"hs=s+1
+syn match divaGeomFunctions "\<geom\u\a\+\(45\|90\)\=("he=e-1
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link divaDRCKeywords Statement
+hi def link divaMeasKeywords Statement
+hi def link divaCtrlFunctions Conditional
+hi def link divaExtFunctions Function
+hi def link divaDRCFunctions Function
+hi def link divaFunctions Function
+hi def link divaLayerFunctions Function
+hi def link divaChkFunctions Function
+hi def link divaLVSFunctions Function
+hi def link divaGeomFunctions Function
+
+
+let b:current_syntax = "diva"
+
+" vim:ts=4
diff --git a/runtime/syntax/django.vim b/runtime/syntax/django.vim
new file mode 100644
index 0000000..76b47d2
--- /dev/null
+++ b/runtime/syntax/django.vim
@@ -0,0 +1,84 @@
+" Vim syntax file
+" Language: Django template
+" Maintainer: Dave Hodder <dmh@dmh.org.uk>
+" Last Change: 2021 Nov 29
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syntax case match
+
+" Mark illegal characters
+syn match djangoError "%}\|}}\|#}"
+
+" Django template built-in tags and parameters
+" 'comment' doesn't appear here because it gets special treatment
+syn keyword djangoStatement contained autoescape csrf_token empty
+" FIXME ==, !=, <, >, <=, and >= should be djangoStatements:
+" syn keyword djangoStatement contained == != < > <= >=
+syn keyword djangoStatement contained and as block endblock by cycle debug else elif
+syn keyword djangoStatement contained extends filter endfilter firstof for
+syn keyword djangoStatement contained endfor if endif ifchanged endifchanged
+syn keyword djangoStatement contained ifequal endifequal ifnotequal
+syn keyword djangoStatement contained endifnotequal in include load not now or
+syn keyword djangoStatement contained parsed regroup reversed spaceless
+syn keyword djangoStatement contained endspaceless ssi templatetag openblock
+syn keyword djangoStatement contained closeblock openvariable closevariable
+syn keyword djangoStatement contained openbrace closebrace opencomment
+syn keyword djangoStatement contained closecomment widthratio url with endwith
+syn keyword djangoStatement contained get_current_language trans noop blocktrans
+syn keyword djangoStatement contained endblocktrans get_available_languages
+syn keyword djangoStatement contained get_current_language_bidi plural
+syn keyword djangoStatement contained translate blocktranslate endblocktranslate
+
+" Django templete built-in filters
+syn keyword djangoFilter contained add addslashes capfirst center cut date
+syn keyword djangoFilter contained default default_if_none dictsort
+syn keyword djangoFilter contained dictsortreversed divisibleby escape escapejs
+syn keyword djangoFilter contained filesizeformat first fix_ampersands
+syn keyword djangoFilter contained floatformat get_digit join last length length_is
+syn keyword djangoFilter contained linebreaks linebreaksbr linenumbers ljust
+syn keyword djangoFilter contained lower make_list phone2numeric pluralize
+syn keyword djangoFilter contained pprint random removetags rjust slice slugify
+syn keyword djangoFilter contained safe safeseq stringformat striptags
+syn keyword djangoFilter contained time timesince timeuntil title truncatechars
+syn keyword djangoFilter contained truncatewords truncatewords_html unordered_list upper urlencode
+syn keyword djangoFilter contained urlize urlizetrunc wordcount wordwrap yesno
+
+" Keywords to highlight within comments
+syn keyword djangoTodo contained TODO FIXME XXX
+
+" Django template constants (always surrounded by double quotes)
+syn region djangoArgument contained start=/"/ skip=/\\"/ end=/"/
+
+" Mark illegal characters within tag and variables blocks
+syn match djangoTagError contained "#}\|{{\|[^%]}}\|[&#]"
+syn match djangoVarError contained "#}\|{%\|%}\|[<>!&#%]"
+
+" Django template tag and variable blocks
+syn region djangoTagBlock start="{%" end="%}" contains=djangoStatement,djangoFilter,djangoArgument,djangoTagError display
+syn region djangoVarBlock start="{{" end="}}" contains=djangoFilter,djangoArgument,djangoVarError display
+
+" Django template 'comment' tag and comment block
+syn region djangoComment start="{%\s*comment\(\s\+.\{-}\)\?%}" end="{%\s*endcomment\s*%}" contains=djangoTodo
+syn region djangoComBlock start="{#" end="#}" contains=djangoTodo
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link djangoTagBlock PreProc
+hi def link djangoVarBlock PreProc
+hi def link djangoStatement Statement
+hi def link djangoFilter Identifier
+hi def link djangoArgument Constant
+hi def link djangoTagError Error
+hi def link djangoVarError Error
+hi def link djangoError Error
+hi def link djangoComment Comment
+hi def link djangoComBlock Comment
+hi def link djangoTodo Todo
+
+
+let b:current_syntax = "django"
diff --git a/runtime/syntax/dns.vim b/runtime/syntax/dns.vim
new file mode 100644
index 0000000..cc9a3f0
--- /dev/null
+++ b/runtime/syntax/dns.vim
@@ -0,0 +1,5 @@
+" Vim syntax file
+" Language: DNS/BIND Zone File
+
+" This has been replaced by the bindzone syntax
+:runtime! syntax/bindzone.vim
diff --git a/runtime/syntax/dnsmasq.vim b/runtime/syntax/dnsmasq.vim
new file mode 100644
index 0000000..a4cc8b5
--- /dev/null
+++ b/runtime/syntax/dnsmasq.vim
@@ -0,0 +1,242 @@
+" Vim syntax file
+" Maintainer: Thilo Six
+" Contact: vim-foo@xk2c-foo.de
+" :3s+-foo++g
+" Description: highlight dnsmasq configuration files
+" File: runtime/syntax/dnsmasq.vim
+" Version: 2.76
+" Last Change: 2015 Sep 27
+" Modeline: vim: ts=8:sw=2:sts=2:
+"
+" License: VIM License
+" Vim is Charityware, see ":help Uganda"
+"
+" Options: You might want to add this to your vimrc:
+"
+" if &background == "dark"
+" let dnsmasq_backrgound_light = 0
+" else
+" let dnsmasq_backrgound_light = 1
+" endif
+"
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax") || &compatible
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+if !exists("b:dnsmasq_backrgound_light")
+ if exists("dnsmasq_backrgound_light")
+ let b:dnsmasq_backrgound_light = dnsmasq_backrgound_light
+ else
+ let b:dnsmasq_backrgound_light = 0
+ endif
+endif
+
+
+" case on
+syn case match
+
+syn match DnsmasqValues "=.*"hs=s+1 contains=DnsmasqComment,DnsmasqSpecial
+syn match DnsmasqSpecial display '=\|@\|,\|!\|:' nextgroup=DnsmasqValues
+syn match DnsmasqSpecial "#"
+
+syn match DnsmasqIPv4 "\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>" nextgroup=DnsmasqSubnet2,DnsmasqRange
+syn match DnsmasqSubnet "\<255.\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{2\}\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>"
+syn match DnsmasqSubnet2 contained "\/\([0-4]\?[0-9]\)\>"
+syn match DnsmasqRange contained "-"
+syn match DnsmasqMac "\<\(\x\x\?:\)\{5}\x\x\?"
+
+syn match DnsmasqTime "\<\(\d\{1,3}\)[hm]\>"
+
+" String
+syn match DnsmasqString "\".*\"" contains=@Spell
+syn match DnsmasqString "'.*'" contains=@Spell
+
+" Comments
+syn keyword DnsmasqTodo FIXME TODO XXX NOTE contained
+syn match DnsmasqComment "\(^\|\s\+\)#.*$" contains=@Spell,DnsmasqTodo
+
+" highlight trailing spaces
+syn match DnsmasqTrailSpace "[ \t]\+$"
+syn match DnsmasqTrailSpace "[ \t]\+$" containedin=ALL
+
+syn match DnsmasqKeywordSpecial "\<set\>:"me=e-1
+syn match DnsmasqKeywordSpecial "\<tag\>:"me=e-1
+syn match DnsmasqKeywordSpecial ",\<static\>"hs=s+1 contains=DnsmasqSpecial
+syn match DnsmasqKeywordSpecial ",\<infinite\>"hs=s+1 contains=DnsmasqSpecial
+syn match DnsmasqKeywordSpecial "\<encap\>:"me=e-1
+syn match DnsmasqKeywordSpecial "\<interface\>:"me=e-1
+syn match DnsmasqKeywordSpecial "\<vi-encap\>:"me=e-1
+syn match DnsmasqKeywordSpecial "\<net\>:"me=e-1
+syn match DnsmasqKeywordSpecial "\<vendor\>:"me=e-1
+syn match DnsmasqKeywordSpecial "\<opt\>:"me=e-1
+syn match DnsmasqKeywordSpecial "\<option\>:"me=e-1
+syn match DnsmasqKeywordSpecial ",\<ignore\>"hs=s+1 contains=DnsmasqSpecial
+syn match DnsmasqKeywordSpecial "\<id\>:"me=e-1
+
+syn match DnsmasqKeyword "^\s*add-mac\>"
+syn match DnsmasqKeyword "^\s*add-subnet\>"
+syn match DnsmasqKeyword "^\s*addn-hosts\>"
+syn match DnsmasqKeyword "^\s*address\>"
+syn match DnsmasqKeyword "^\s*alias\>"
+syn match DnsmasqKeyword "^\s*all-servers\>"
+syn match DnsmasqKeyword "^\s*auth-zone\>"
+syn match DnsmasqKeyword "^\s*bind-dynamic\>"
+syn match DnsmasqKeyword "^\s*bind-interfaces\>"
+syn match DnsmasqKeyword "^\s*bogus-nxdomain\>"
+syn match DnsmasqKeyword "^\s*bogus-priv\>"
+syn match DnsmasqKeyword "^\s*bootp-dynamic\>"
+syn match DnsmasqKeyword "^\s*bridge-interface\>"
+syn match DnsmasqKeyword "^\s*cache-size\>"
+syn match DnsmasqKeyword "^\s*clear-on-reload\>"
+syn match DnsmasqKeyword "^\s*cname\>"
+syn match DnsmasqKeyword "^\s*conf-dir\>"
+syn match DnsmasqKeyword "^\s*conf-file\>"
+syn match DnsmasqKeyword "^\s*conntrack\>"
+syn match DnsmasqKeyword "^\s*dhcp-alternate-port\>"
+syn match DnsmasqKeyword "^\s*dhcp-authoritative\>"
+syn match DnsmasqKeyword "^\s*dhcp-boot\>"
+syn match DnsmasqKeyword "^\s*dhcp-broadcast\>"
+syn match DnsmasqKeyword "^\s*dhcp-circuitid\>"
+syn match DnsmasqKeyword "^\s*dhcp-client-update\>"
+syn match DnsmasqKeyword "^\s*dhcp-duid\>"
+syn match DnsmasqKeyword "^\s*dhcp-fqdn\>"
+syn match DnsmasqKeyword "^\s*dhcp-generate-names\>"
+syn match DnsmasqKeyword "^\s*dhcp-host\>"
+syn match DnsmasqKeyword "^\s*dhcp-hostsfile\>"
+syn match DnsmasqKeyword "^\s*dhcp-ignore\>"
+syn match DnsmasqKeyword "^\s*dhcp-ignore-names\>"
+syn match DnsmasqKeyword "^\s*dhcp-lease-max\>"
+syn match DnsmasqKeyword "^\s*dhcp-leasefile\>"
+syn match DnsmasqKeyword "^\s*dhcp-luascript\>"
+syn match DnsmasqKeyword "^\s*dhcp-mac\>"
+syn match DnsmasqKeyword "^\s*dhcp-match\>"
+syn match DnsmasqKeyword "^\s*dhcp-no-override\>"
+syn match DnsmasqKeyword "^\s*dhcp-option\>"
+syn match DnsmasqKeyword "^\s*dhcp-option-force\>"
+syn match DnsmasqKeyword "^\s*dhcp-optsfile\>"
+syn match DnsmasqKeyword "^\s*dhcp-proxy\>"
+syn match DnsmasqKeyword "^\s*dhcp-range\>"
+syn match DnsmasqKeyword "^\s*dhcp-relay\>"
+syn match DnsmasqKeyword "^\s*dhcp-remoteid\>"
+syn match DnsmasqKeyword "^\s*dhcp-script\>"
+syn match DnsmasqKeyword "^\s*dhcp-scriptuser\>"
+syn match DnsmasqKeyword "^\s*dhcp-sequential-ip\>"
+syn match DnsmasqKeyword "^\s*dhcp-subscrid\>"
+syn match DnsmasqKeyword "^\s*dhcp-userclass\>"
+syn match DnsmasqKeyword "^\s*dhcp-vendorclass\>"
+syn match DnsmasqKeyword "^\s*dhcp-hostsdir\>"
+syn match DnsmasqKeyword "^\s*dns-rr\>"
+syn match DnsmasqKeyword "^\s*dnssec\>"
+syn match DnsmasqKeyword "^\s*dnssec-check-unsigned\>"
+syn match DnsmasqKeyword "^\s*dnssec-no-timecheck\>"
+syn match DnsmasqKeyword "^\s*dnssec-timestamp\>"
+syn match DnsmasqKeyword "^\s*dns-forward-max\>"
+syn match DnsmasqKeyword "^\s*domain\>"
+syn match DnsmasqKeyword "^\s*domain-needed\>"
+syn match DnsmasqKeyword "^\s*edns-packet-max\>"
+syn match DnsmasqKeyword "^\s*enable-dbus\>"
+syn match DnsmasqKeyword "^\s*enable-ra\>"
+syn match DnsmasqKeyword "^\s*enable-tftp\>"
+syn match DnsmasqKeyword "^\s*except-interface\>"
+syn match DnsmasqKeyword "^\s*expand-hosts\>"
+syn match DnsmasqKeyword "^\s*filterwin2k\>"
+syn match DnsmasqKeyword "^\s*group\>"
+syn match DnsmasqKeyword "^\s*host-record\>"
+syn match DnsmasqKeyword "^\s*interface\>"
+syn match DnsmasqKeyword "^\s*interface-name\>"
+syn match DnsmasqKeyword "^\s*ipset\>"
+syn match DnsmasqKeyword "^\s*ignore-address\>"
+syn match DnsmasqKeyword "^\s*keep-in-foreground\>"
+syn match DnsmasqKeyword "^\s*leasefile-ro\>"
+syn match DnsmasqKeyword "^\s*listen-address\>"
+syn match DnsmasqKeyword "^\s*local\>"
+syn match DnsmasqKeyword "^\s*localmx\>"
+syn match DnsmasqKeyword "^\s*local-ttl\>"
+syn match DnsmasqKeyword "^\s*local-service\>"
+syn match DnsmasqKeyword "^\s*localise-queries\>"
+syn match DnsmasqKeyword "^\s*log-async\>"
+syn match DnsmasqKeyword "^\s*log-dhcp\>"
+syn match DnsmasqKeyword "^\s*log-facility\>"
+syn match DnsmasqKeyword "^\s*log-queries\>"
+syn match DnsmasqKeyword "^\s*max-ttl\>"
+syn match DnsmasqKeyword "^\s*max-cache-ttl\>"
+syn match DnsmasqKeyword "^\s*min-cache-ttl\>"
+syn match DnsmasqKeyword "^\s*min-port\>"
+syn match DnsmasqKeyword "^\s*mx-host\>"
+syn match DnsmasqKeyword "^\s*mx-target\>"
+syn match DnsmasqKeyword "^\s*naptr-record\>"
+syn match DnsmasqKeyword "^\s*neg-ttl\>"
+syn match DnsmasqKeyword "^\s*no-daemon\>"
+syn match DnsmasqKeyword "^\s*no-dhcp-interface\>"
+syn match DnsmasqKeyword "^\s*no-hosts\>"
+syn match DnsmasqKeyword "^\s*no-negcache\>"
+syn match DnsmasqKeyword "^\s*no-ping\>"
+syn match DnsmasqKeyword "^\s*no-poll\>"
+syn match DnsmasqKeyword "^\s*no-resolv\>"
+syn match DnsmasqKeyword "^\s*pid-file\>"
+syn match DnsmasqKeyword "^\s*port\>"
+syn match DnsmasqKeyword "^\s*proxy-dnssec\>"
+syn match DnsmasqKeyword "^\s*ptr-record\>"
+syn match DnsmasqKeyword "^\s*pxe-prompt\>"
+syn match DnsmasqKeyword "^\s*pxe-service\>"
+syn match DnsmasqKeyword "^\s*query-port\>"
+syn match DnsmasqKeyword "^\s*quiet-ra\>"
+syn match DnsmasqKeyword "^\s*quiet-dhcp\>"
+syn match DnsmasqKeyword "^\s*quiet-dhcp6\>"
+syn match DnsmasqKeyword "^\s*ra-param\>"
+syn match DnsmasqKeyword "^\s*read-ethers\>"
+syn match DnsmasqKeyword "^\s*rebind-domain-ok\>"
+syn match DnsmasqKeyword "^\s*rebind-localhost-ok\>"
+syn match DnsmasqKeyword "^\s*resolv-file\>"
+syn match DnsmasqKeyword "^\s*rev-server\>"
+syn match DnsmasqKeyword "^\s*selfmx\>"
+syn match DnsmasqKeyword "^\s*server\>"
+syn match DnsmasqKeyword "^\s*servers-file\>"
+syn match DnsmasqKeyword "^\s*srv-host\>"
+syn match DnsmasqKeyword "^\s*stop-dns-rebind\>"
+syn match DnsmasqKeyword "^\s*strict-order\>"
+syn match DnsmasqKeyword "^\s*synth-domain\>"
+syn match DnsmasqKeyword "^\s*tag-if\>"
+syn match DnsmasqKeyword "^\s*test\>"
+syn match DnsmasqKeyword "^\s*tftp-max\>"
+syn match DnsmasqKeyword "^\s*tftp-lowercase\>"
+syn match DnsmasqKeyword "^\s*tftp-no-blocksize\>"
+syn match DnsmasqKeyword "^\s*tftp-no-fail\>"
+syn match DnsmasqKeyword "^\s*tftp-port-range\>"
+syn match DnsmasqKeyword "^\s*tftp-root\>"
+syn match DnsmasqKeyword "^\s*tftp-secure\>"
+syn match DnsmasqKeyword "^\s*tftp-unique-root\>"
+syn match DnsmasqKeyword "^\s*txt-record\>"
+syn match DnsmasqKeyword "^\s*user\>"
+syn match DnsmasqKeyword "^\s*version\>"
+
+
+if b:dnsmasq_backrgound_light == 1
+ hi def DnsmasqKeyword ctermfg=DarkGreen guifg=DarkGreen
+else
+ hi def link DnsmasqKeyword Keyword
+endif
+hi def link DnsmasqKeywordSpecial Type
+hi def link DnsmasqTodo Todo
+hi def link DnsmasqSpecial Constant
+hi def link DnsmasqIPv4 Identifier
+hi def link DnsmasqSubnet2 DnsmasqSubnet
+hi def link DnsmasqSubnet DnsmasqMac
+hi def link DnsmasqRange DnsmasqMac
+hi def link DnsmasqMac Preproc
+hi def link DnsmasqTime Preproc
+hi def link DnsmasqComment Comment
+hi def link DnsmasqTrailSpace DiffDelete
+hi def link DnsmasqString Constant
+hi def link DnsmasqValues Normal
+
+let b:current_syntax = "dnsmasq"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
diff --git a/runtime/syntax/docbk.vim b/runtime/syntax/docbk.vim
new file mode 100644
index 0000000..809f289
--- /dev/null
+++ b/runtime/syntax/docbk.vim
@@ -0,0 +1,186 @@
+" Vim syntax file
+" Language: DocBook
+" Maintainer: Devin Weaver <vim@tritarget.com>
+" Last Updated By: Shlomi Fish
+" URL: http://tritarget.com/pub/vim/syntax/docbk.vim
+" Last Change: 2012 Nov 28
+" Version: 1.2 (and modified after that)
+" Thanks to Johannes Zellner <johannes@zellner.org> for the default to XML
+" suggestion.
+
+" REFERENCES:
+" http://docbook.org/
+" http://www.open-oasis.org/docbook/
+"
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Auto detect added by Bram Moolenaar
+if !exists('b:docbk_type')
+ if expand('%:e') == "sgml"
+ let b:docbk_type = 'sgml'
+ else
+ let b:docbk_type = 'xml'
+ endif
+endif
+
+if !exists('b:docbk_ver')
+ if exists('docbk_ver')
+ let b:docbk_ver = docbk_ver
+ else
+ let b:docbk_ver = 4
+ endif
+end
+
+if 'xml' == b:docbk_type
+ doau Syntax xml
+ syn cluster xmlTagHook add=docbkKeyword
+ syn cluster xmlRegionHook add=docbkRegion,docbkTitle,docbkRemark,docbkCite
+ syn case match
+elseif 'sgml' == b:docbk_type
+ doau Syntax sgml
+ syn cluster sgmlTagHook add=docbkKeyword
+ syn cluster sgmlRegionHook add=docbkRegion,docbkTitle,docbkRemark,docbkCite
+ syn case ignore
+endif
+
+syn keyword docbkKeyword abbrev abstract accel acronym address contained
+syn keyword docbkKeyword affiliation alt anchor answer appendix contained
+syn keyword docbkKeyword application area areaset areaspec arg contained
+syn keyword docbkKeyword article artpagenums attribution audiodata contained
+syn keyword docbkKeyword audioobject author authorgroup contained
+syn keyword docbkKeyword authorinitials bibliocoverage bibliodiv contained
+syn keyword docbkKeyword biblioentry bibliography biblioid contained
+syn keyword docbkKeyword bibliolist bibliomisc bibliomixed contained
+syn keyword docbkKeyword bibliomset biblioref bibliorelation contained
+syn keyword docbkKeyword biblioset bibliosource blockquote book contained
+syn keyword docbkKeyword bridgehead callout calloutlist caption contained
+syn keyword docbkKeyword caution chapter citation citebiblioid contained
+syn keyword docbkKeyword citerefentry citetitle city classname contained
+syn keyword docbkKeyword classsynopsis classsynopsisinfo cmdsynopsis contained
+syn keyword docbkKeyword co code col colgroup collab colophon contained
+syn keyword docbkKeyword colspec command computeroutput confdates contained
+syn keyword docbkKeyword confgroup confnum confsponsor conftitle contained
+syn keyword docbkKeyword constant constructorsynopsis contractnum contained
+syn keyword docbkKeyword contractsponsor contrib copyright coref contained
+syn keyword docbkKeyword country database date dedication contained
+syn keyword docbkKeyword destructorsynopsis edition editor email contained
+syn keyword docbkKeyword emphasis entry entrytbl envar epigraph contained
+syn keyword docbkKeyword equation errorcode errorname errortext contained
+syn keyword docbkKeyword errortype example exceptionname fax contained
+syn keyword docbkKeyword fieldsynopsis figure filename firstname contained
+syn keyword docbkKeyword firstterm footnote footnoteref contained
+syn keyword docbkKeyword foreignphrase formalpara funcdef funcparams contained
+syn keyword docbkKeyword funcprototype funcsynopsis funcsynopsisinfo contained
+syn keyword docbkKeyword function glossary glossdef glossdiv contained
+syn keyword docbkKeyword glossentry glosslist glosssee glossseealso contained
+syn keyword docbkKeyword glossterm group guibutton guiicon guilabel contained
+syn keyword docbkKeyword guimenu guimenuitem guisubmenu hardware contained
+syn keyword docbkKeyword holder honorific imagedata imageobject contained
+syn keyword docbkKeyword imageobjectco important index indexdiv contained
+syn keyword docbkKeyword indexentry indexterm informalequation contained
+syn keyword docbkKeyword informalexample informalfigure contained
+syn keyword docbkKeyword informaltable initializer inlineequation contained
+syn keyword docbkKeyword inlinemediaobject interfacename issuenum contained
+syn keyword docbkKeyword itemizedlist itermset jobtitle keycap contained
+syn keyword docbkKeyword keycode keycombo keysym keyword keywordset contained
+syn keyword docbkKeyword label legalnotice lineage lineannotation contained
+syn keyword docbkKeyword link listitem literal literallayout contained
+syn keyword docbkKeyword manvolnum markup mathphrase mediaobject contained
+syn keyword docbkKeyword member menuchoice methodname methodparam contained
+syn keyword docbkKeyword methodsynopsis modifier mousebutton msg contained
+syn keyword docbkKeyword msgaud msgentry msgexplan msginfo msglevel contained
+syn keyword docbkKeyword msgmain msgorig msgrel msgset msgsub contained
+syn keyword docbkKeyword msgtext note olink ooclass ooexception contained
+syn keyword docbkKeyword oointerface option optional orderedlist contained
+syn keyword docbkKeyword orgdiv orgname otheraddr othercredit contained
+syn keyword docbkKeyword othername package pagenums para paramdef contained
+syn keyword docbkKeyword parameter part partintro personblurb contained
+syn keyword docbkKeyword personname phone phrase pob postcode contained
+syn keyword docbkKeyword preface primary primaryie printhistory contained
+syn keyword docbkKeyword procedure productname productnumber contained
+syn keyword docbkKeyword programlisting programlistingco prompt contained
+syn keyword docbkKeyword property pubdate publisher publishername contained
+syn keyword docbkKeyword qandadiv qandaentry qandaset question quote contained
+syn keyword docbkKeyword refclass refdescriptor refentry contained
+syn keyword docbkKeyword refentrytitle reference refmeta refmiscinfo contained
+syn keyword docbkKeyword refname refnamediv refpurpose refsect1 contained
+syn keyword docbkKeyword refsect2 refsect3 refsection refsynopsisdiv contained
+syn keyword docbkKeyword releaseinfo remark replaceable returnvalue contained
+syn keyword docbkKeyword revdescription revhistory revision contained
+syn keyword docbkKeyword revnumber revremark row sbr screen screenco contained
+syn keyword docbkKeyword screenshot secondary secondaryie sect1 contained
+syn keyword docbkKeyword sect2 sect3 sect4 sect5 section see seealso contained
+syn keyword docbkKeyword seealsoie seeie seg seglistitem contained
+syn keyword docbkKeyword segmentedlist segtitle seriesvolnums set contained
+syn keyword docbkKeyword setindex shortaffil shortcut sidebar contained
+syn keyword docbkKeyword simpara simplelist simplemsgentry contained
+syn keyword docbkKeyword simplesect spanspec state step contained
+syn keyword docbkKeyword stepalternatives street subject subjectset contained
+syn keyword docbkKeyword subjectterm subscript substeps subtitle contained
+syn keyword docbkKeyword superscript surname symbol synopfragment contained
+syn keyword docbkKeyword synopfragmentref synopsis systemitem table contained
+syn keyword docbkKeyword task taskprerequisites taskrelated contained
+syn keyword docbkKeyword tasksummary tbody td term termdef tertiary contained
+syn keyword docbkKeyword tertiaryie textdata textobject tfoot tgroup contained
+syn keyword docbkKeyword th thead tip title titleabbrev toc tocentry contained
+syn keyword docbkKeyword token tr trademark type uri userinput contained
+syn keyword docbkKeyword varargs variablelist varlistentry varname contained
+syn keyword docbkKeyword videodata videoobject void volumenum contained
+syn keyword docbkKeyword warning wordasword xref year contained
+
+if b:docbk_ver == 4
+ syn keyword docbkKeyword ackno action appendixinfo articleinfo contained
+ syn keyword docbkKeyword authorblurb beginpage bibliographyinfo contained
+ syn keyword docbkKeyword blockinfo bookinfo chapterinfo contained
+ syn keyword docbkKeyword collabname corpauthor corpcredit contained
+ syn keyword docbkKeyword corpname glossaryinfo graphic graphicco contained
+ syn keyword docbkKeyword highlights indexinfo inlinegraphic contained
+ syn keyword docbkKeyword interface invpartnumber isbn issn lot contained
+ syn keyword docbkKeyword lotentry medialabel mediaobjectco contained
+ syn keyword docbkKeyword modespec objectinfo partinfo contained
+ syn keyword docbkKeyword prefaceinfo pubsnumber refentryinfo contained
+ syn keyword docbkKeyword referenceinfo refsect1info refsect2info contained
+ syn keyword docbkKeyword refsect3info refsectioninfo contained
+ syn keyword docbkKeyword refsynopsisdivinfo screeninfo sect1info contained
+ syn keyword docbkKeyword sect2info sect3info sect4info sect5info contained
+ syn keyword docbkKeyword sectioninfo setindexinfo setinfo contained
+ syn keyword docbkKeyword sgmltag sidebarinfo structfield contained
+ syn keyword docbkKeyword structname tocback tocchap tocfront contained
+ syn keyword docbkKeyword toclevel1 toclevel2 toclevel3 toclevel4 contained
+ syn keyword docbkKeyword toclevel5 tocpart ulink contained
+
+else
+ syn keyword docbkKeyword acknowledgements annotation arc contained
+ syn keyword docbkKeyword constraint constraintdef cover contained
+ syn keyword docbkKeyword extendedlink givenname info lhs locator contained
+ syn keyword docbkKeyword multimediaparam nonterminal org person contained
+ syn keyword docbkKeyword production productionrecap contained
+ syn keyword docbkKeyword productionset rhs tag tocdiv topic contained
+
+endif
+
+" Add special emphasis on some regions. Thanks to Rory Hunter <roryh@dcs.ed.ac.uk> for these ideas.
+syn region docbkRegion start="<emphasis>"lc=10 end="</emphasis>"me=e-11 contains=xmlRegion,xmlEntity,sgmlRegion,sgmlEntity keepend
+syn region docbkTitle start="<title>"lc=7 end="</title>"me=e-8 contains=xmlRegion,xmlEntity,sgmlRegion,sgmlEntity keepend
+syn region docbkRemark start="<remark>"lc=8 end="</remark>"me=e-9 contains=xmlRegion,xmlEntity,sgmlRegion,sgmlEntity keepend
+syn region docbkRemark start="<comment>"lc=9 end="</comment>"me=e-10 contains=xmlRegion,xmlEntity,sgmlRegion,sgmlEntity keepend
+syn region docbkCite start="<citation>"lc=10 end="</citation>"me=e-11 contains=xmlRegion,xmlEntity,sgmlRegion,sgmlEntity keepend
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def DocbkBold term=bold cterm=bold gui=bold
+
+hi def link docbkKeyword Statement
+hi def link docbkRegion DocbkBold
+hi def link docbkTitle Title
+hi def link docbkRemark Comment
+hi def link docbkCite Constant
+
+
+let b:current_syntax = "docbk"
+
+" vim: ts=8
diff --git a/runtime/syntax/docbksgml.vim b/runtime/syntax/docbksgml.vim
new file mode 100644
index 0000000..544f3d2
--- /dev/null
+++ b/runtime/syntax/docbksgml.vim
@@ -0,0 +1,7 @@
+" Vim syntax file
+" Language: DocBook SGML
+" Maintainer: Johannes Zellner <johannes@zellner.org>
+" Last Change: Sam, 07 Sep 2002 17:20:46 CEST
+
+let b:docbk_type="sgml"
+runtime syntax/docbk.vim
diff --git a/runtime/syntax/docbkxml.vim b/runtime/syntax/docbkxml.vim
new file mode 100644
index 0000000..181af2c
--- /dev/null
+++ b/runtime/syntax/docbkxml.vim
@@ -0,0 +1,7 @@
+" Vim syntax file
+" Language: DocBook XML
+" Maintainer: Johannes Zellner <johannes@zellner.org>
+" Last Change: Sam, 07 Sep 2002 17:20:12 CEST
+
+let b:docbk_type="xml"
+runtime syntax/docbk.vim
diff --git a/runtime/syntax/dockerfile.vim b/runtime/syntax/dockerfile.vim
new file mode 100644
index 0000000..ce52e69
--- /dev/null
+++ b/runtime/syntax/dockerfile.vim
@@ -0,0 +1,45 @@
+" dockerfile.vim - Syntax highlighting for Dockerfiles
+" Maintainer: Honza Pokorny <https://honza.ca>
+" Last Change: 2020 Feb 11
+" License: BSD
+
+" https://docs.docker.com/engine/reference/builder/
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syntax include @JSON syntax/json.vim
+unlet b:current_syntax
+
+syntax include @Shell syntax/sh.vim
+unlet b:current_syntax
+
+syntax case ignore
+syntax match dockerfileLinePrefix /\v^\s*(ONBUILD\s+)?\ze\S/ contains=dockerfileKeyword nextgroup=dockerfileInstruction skipwhite
+syntax region dockerfileFrom matchgroup=dockerfileKeyword start=/\v^\s*(FROM)\ze(\s|$)/ skip=/\v\\\_./ end=/\v((^|\s)AS(\s|$)|$)/ contains=dockerfileOption
+
+syntax keyword dockerfileKeyword contained ADD ARG CMD COPY ENTRYPOINT ENV EXPOSE HEALTHCHECK LABEL MAINTAINER ONBUILD RUN SHELL STOPSIGNAL USER VOLUME WORKDIR
+syntax match dockerfileOption contained /\v(^|\s)\zs--\S+/
+
+syntax match dockerfileInstruction contained /\v<(\S+)>(\s+--\S+)*/ contains=dockerfileKeyword,dockerfileOption skipwhite nextgroup=dockerfileValue
+syntax match dockerfileInstruction contained /\v<(ADD|COPY)>(\s+--\S+)*/ contains=dockerfileKeyword,dockerfileOption skipwhite nextgroup=dockerfileJSON
+syntax match dockerfileInstruction contained /\v<(HEALTHCHECK)>(\s+--\S+)*/ contains=dockerfileKeyword,dockerfileOption skipwhite nextgroup=dockerfileInstruction
+syntax match dockerfileInstruction contained /\v<(CMD|ENTRYPOINT|RUN)>/ contains=dockerfileKeyword skipwhite nextgroup=dockerfileShell
+syntax match dockerfileInstruction contained /\v<(CMD|ENTRYPOINT|RUN)>\ze\s+\[/ contains=dockerfileKeyword skipwhite nextgroup=dockerfileJSON
+syntax match dockerfileInstruction contained /\v<(SHELL|VOLUME)>/ contains=dockerfileKeyword skipwhite nextgroup=dockerfileJSON
+
+syntax region dockerfileString contained start=/\v"/ skip=/\v\\./ end=/\v"/
+syntax region dockerfileJSON contained keepend start=/\v\[/ skip=/\v\\\_./ end=/\v$/ contains=@JSON
+syntax region dockerfileShell contained keepend start=/\v/ skip=/\v\\\_./ end=/\v$/ contains=@Shell
+syntax region dockerfileValue contained keepend start=/\v/ skip=/\v\\\_./ end=/\v$/ contains=dockerfileString
+
+syntax region dockerfileComment start=/\v^\s*#/ end=/\v$/
+set commentstring=#\ %s
+
+hi def link dockerfileString String
+hi def link dockerfileKeyword Keyword
+hi def link dockerfileComment Comment
+hi def link dockerfileOption Special
+
+let b:current_syntax = "dockerfile"
diff --git a/runtime/syntax/dosbatch.vim b/runtime/syntax/dosbatch.vim
new file mode 100644
index 0000000..a75771b
--- /dev/null
+++ b/runtime/syntax/dosbatch.vim
@@ -0,0 +1,152 @@
+" Vim syntax file
+" Language: MS-DOS/Windows batch file (with NT command extensions)
+" Maintainer: Mike Williams <mrmrdubya@gmail.com>
+" Filenames: *.bat
+" Last Change: 12th February 2023
+"
+" Options Flags:
+" dosbatch_cmdextversion - 1 = Windows NT, 2 = Windows 2000 [default]
+" dosbatch_colons_comment - any value to treat :: as comment line
+"
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Set default highlighting to Win2k
+if !exists("dosbatch_cmdextversion")
+ let dosbatch_cmdextversion = 2
+endif
+
+" DOS bat files are case insensitive but case preserving!
+syn case ignore
+
+syn keyword dosbatchTodo contained TODO
+
+" Dosbat keywords
+syn keyword dosbatchStatement goto call exit
+syn keyword dosbatchConditional if else
+syn keyword dosbatchRepeat for
+
+" Some operators - first lot are case sensitive!
+syn case match
+syn keyword dosbatchOperator EQU NEQ LSS LEQ GTR GEQ
+syn case ignore
+syn match dosbatchOperator "\s[-+\*/%!~]\s"
+syn match dosbatchOperator "="
+syn match dosbatchOperator "[-+\*/%]="
+syn match dosbatchOperator "\s\(&\||\|^\|<<\|>>\)=\=\s"
+syn match dosbatchIfOperator "if\s\+\(\(not\)\=\s\+\)\=\(exist\|defined\|errorlevel\|cmdextversion\)\="lc=2
+
+" String - using "'s is a convenience rather than a requirement outside of FOR
+syn match dosbatchString "\"[^"]*\"" contains=dosbatchVariable,dosBatchArgument,dosbatchSpecialChar,@dosbatchNumber,@Spell
+syn match dosbatchString "\<echo\([^)>|]\|\^\@<=[)>|]\)*"lc=4 contains=dosbatchVariable,dosbatchArgument,dosbatchSpecialChar,@dosbatchNumber,@Spell
+syn match dosbatchEchoOperator "\<echo\s\+\(on\|off\)\s*$"lc=4
+
+" For embedded commands
+syn match dosbatchCmd "(\s*'[^']*'"lc=1 contains=dosbatchString,dosbatchVariable,dosBatchArgument,@dosbatchNumber,dosbatchImplicit,dosbatchStatement,dosbatchConditional,dosbatchRepeat,dosbatchOperator
+
+" Numbers - surround with ws to not include in dir and filenames
+syn match dosbatchInteger "[[:space:]=(/:,!~-]\d\+"lc=1
+syn match dosbatchHex "[[:space:]=(/:,!~-]0x\x\+"lc=1
+syn match dosbatchBinary "[[:space:]=(/:,!~-]0b[01]\+"lc=1
+syn match dosbatchOctal "[[:space:]=(/:,!~-]0\o\+"lc=1
+syn cluster dosbatchNumber contains=dosbatchInteger,dosbatchHex,dosbatchBinary,dosbatchOctal
+
+" Command line switches
+syn match dosbatchSwitch "/\(\a\+\|?\)"
+
+" Various special escaped char formats
+syn match dosbatchSpecialChar "\^[&|()<>^]"
+syn match dosbatchSpecialChar "\$[a-hl-npqstv_$+]"
+syn match dosbatchSpecialChar "%%"
+
+" Environment variables
+syn match dosbatchIdentifier contained "\s\h\w*\>"
+syn match dosbatchVariable "%\h\w*%"
+syn match dosbatchVariable "%\h\w*:\*\=[^=]*=[^%]*%"
+syn match dosbatchVariable "%\h\w*:\~[-]\=\d\+\(,[-]\=\d\+\)\=%" contains=dosbatchInteger
+syn match dosbatchVariable "!\h\w*!"
+syn match dosbatchVariable "!\h\w*:\*\=[^=]*=[^!]*!"
+syn match dosbatchVariable "!\h\w*:\~[-]\=\d\+\(,[-]\=\d\+\)\=!" contains=dosbatchInteger
+syn match dosbatchSet "\s\h\w*[+-]\==\{-1}" contains=dosbatchIdentifier,dosbatchOperator
+
+" Args to bat files and for loops, etc
+syn match dosbatchArgument "%\(\d\|\*\)"
+syn match dosbatchArgument "%[a-z]\>"
+if dosbatch_cmdextversion == 1
+ syn match dosbatchArgument "%\~[fdpnxs]\+\(\($PATH:\)\=[a-z]\|\d\)\>"
+else
+ syn match dosbatchArgument "%\~[fdpnxsatz]\+\(\($PATH:\)\=[a-z]\|\d\)\>"
+endif
+
+" Line labels
+syn match dosbatchLabel "^\s*:\s*\h\w*\>"
+syn match dosbatchLabel "\<\(goto\|call\)\s\+:\h\w*\>"lc=4
+syn match dosbatchLabel "\<goto\s\+\h\w*\>"lc=4
+syn match dosbatchLabel ":\h\w*\>"
+
+" Comments - usual rem but also two colons as first non-space is an idiom
+syn match dosbatchComment "^rem\($\|\s.*$\)"lc=3 contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
+syn match dosbatchComment "^@rem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
+syn match dosbatchComment "\srem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
+syn match dosbatchComment "\s@rem\($\|\s.*$\)"lc=5 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
+if exists("dosbatch_colons_comment")
+ syn match dosbatchComment "\s*:\s*:.*$" contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
+else
+ syn match dosbatchError "\s*:\s*:.*$"
+endif
+
+" Comments in ()'s - still to handle spaces before rem
+syn match dosbatchComment "(rem\([^)]\|\^\@<=)\)*"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
+
+syn keyword dosbatchImplicit append assoc at attrib break cacls cd chcp chdir
+syn keyword dosbatchImplicit chkdsk chkntfs cls cmd color comp compact convert copy
+syn keyword dosbatchImplicit date del dir diskcomp diskcopy doskey echo endlocal
+syn keyword dosbatchImplicit erase fc find findstr format ftype
+syn keyword dosbatchImplicit graftabl help keyb label md mkdir mode more move
+syn keyword dosbatchImplicit path pause popd print prompt pushd rd recover rem
+syn keyword dosbatchImplicit ren rename replace restore rmdir set setlocal shift
+syn keyword dosbatchImplicit sort start subst time title tree type ver verify
+syn keyword dosbatchImplicit vol xcopy
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link dosbatchTodo Todo
+hi def link dosbatchError Error
+
+hi def link dosbatchStatement Statement
+hi def link dosbatchCommands dosbatchStatement
+hi def link dosbatchLabel Label
+hi def link dosbatchConditional Conditional
+hi def link dosbatchRepeat Repeat
+
+hi def link dosbatchOperator Operator
+hi def link dosbatchEchoOperator dosbatchOperator
+hi def link dosbatchIfOperator dosbatchOperator
+
+hi def link dosbatchArgument Identifier
+hi def link dosbatchIdentifier Identifier
+hi def link dosbatchVariable dosbatchIdentifier
+
+hi def link dosbatchSpecialChar SpecialChar
+hi def link dosbatchString String
+hi def link dosbatchNumber Number
+hi def link dosbatchInteger dosbatchNumber
+hi def link dosbatchHex dosbatchNumber
+hi def link dosbatchBinary dosbatchNumber
+hi def link dosbatchOctal dosbatchNumber
+
+hi def link dosbatchComment Comment
+hi def link dosbatchImplicit Function
+
+hi def link dosbatchSwitch Special
+
+hi def link dosbatchCmd PreProc
+
+
+let b:current_syntax = "dosbatch"
+
+" vim: ts=8
diff --git a/runtime/syntax/dosini.vim b/runtime/syntax/dosini.vim
new file mode 100644
index 0000000..cf42819
--- /dev/null
+++ b/runtime/syntax/dosini.vim
@@ -0,0 +1,40 @@
+" Vim syntax file
+" Language: Configuration File (ini file) for MSDOS/MS Windows
+" Version: 2.2
+" Original Author: Sean M. McKee <mckee@misslink.net>
+" Previous Maintainer: Nima Talebi <nima@it.net.au>
+" Current Maintainer: Hong Xu <hong@topbug.net>
+" Homepage: http://www.vim.org/scripts/script.php?script_id=3747
+" Repository: https://github.com/xuhdev/syntax-dosini.vim
+" Last Change: 2018 Sep 11
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" shut case off
+syn case ignore
+
+syn match dosiniLabel "^.\{-}\ze\s*=" nextgroup=dosiniNumber,dosiniValue
+syn match dosiniValue "=\zs.*"
+syn match dosiniNumber "=\zs\s*\d\+\s*$"
+syn match dosiniNumber "=\zs\s*\d*\.\d\+\s*$"
+syn match dosiniNumber "=\zs\s*\d\+e[+-]\=\d\+\s*$"
+syn region dosiniHeader start="^\s*\[" end="\]"
+syn match dosiniComment "^[#;].*$"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link dosiniNumber Number
+hi def link dosiniHeader Special
+hi def link dosiniComment Comment
+hi def link dosiniLabel Type
+hi def link dosiniValue String
+
+
+let b:current_syntax = "dosini"
+
+" vim: sts=2 sw=2 et
diff --git a/runtime/syntax/dot.vim b/runtime/syntax/dot.vim
new file mode 100644
index 0000000..68a0f57
--- /dev/null
+++ b/runtime/syntax/dot.vim
@@ -0,0 +1,121 @@
+" Language: Dot
+" Filenames: *.dot
+" Maintainer: Markus Mottl <markus.mottl@gmail.com>
+" URL: http://www.ocaml.info/vim/syntax/dot.vim
+" Last Change: 2021 Mar 24 - better attr + escape string matching, new keywords (Farbod Salamat-Zadeh)
+" 2011 May 17 - improved identifier matching + two new keywords
+" 2001 May 04 - initial version
+
+" 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
+
+" Errors
+syn match dotParErr ")"
+syn match dotBrackErr "]"
+syn match dotBraceErr "}"
+
+" Enclosing delimiters
+syn region dotEncl transparent matchgroup=dotParEncl start="(" matchgroup=dotParEncl end=")" contains=ALLBUT,dotParErr
+syn region dotEncl transparent matchgroup=dotBrackEncl start="\[" matchgroup=dotBrackEncl end="\]" contains=ALLBUT,dotBrackErr
+syn region dotEncl transparent matchgroup=dotBraceEncl start="{" matchgroup=dotBraceEncl end="}" contains=ALLBUT,dotBraceErr
+
+" Comments
+syn region dotComment start="//" end="$" contains=dotComment,dotTodo
+syn region dotComment start="/\*" end="\*/" contains=dotComment,dotTodo
+syn keyword dotTodo contained TODO FIXME XXX
+
+" Strings
+syn region dotString start=+"+ skip=+\\\\\|\\"+ end=+"+
+
+" Escape strings
+syn match dotEscString /\v\\(N|G|E|T|H|L)/ containedin=dotString
+syn match dotEscString /\v\\(n|l|r)/ containedin=dotString
+
+" General keywords
+syn keyword dotKeyword graph digraph subgraph node edge strict
+
+" Node, edge and graph attributes
+syn keyword dotType _background area arrowhead arrowsize arrowtail bb bgcolor
+ \ center charset class clusterrank color colorscheme comment compound
+ \ concentrate constraint Damping decorate defaultdist dim dimen dir
+ \ diredgeconstraints distortion dpi edgehref edgetarget edgetooltip
+ \ edgeURL epsilon esep fillcolor fixedsize fontcolor fontname fontnames
+ \ fontpath fontsize forcelabels gradientangle group head_lp headclip
+ \ headhref headlabel headport headtarget headtooltip headURL height href
+ \ id image imagepath imagepos imagescale inputscale K label label_scheme
+ \ labelangle labeldistance labelfloat labelfontcolor labelfontname
+ \ labelfontsize labelhref labeljust labelloc labeltarget labeltooltip
+ \ labelURL landscape layer layerlistsep layers layerselect layersep
+ \ layout len levels levelsgap lhead lheight lp ltail lwidth margin
+ \ maxiter mclimit mindist minlen mode model mosek newrank nodesep
+ \ nojustify normalize notranslate nslimit nslimit1 ordering orientation
+ \ outputorder overlap overlap_scaling overlap_shrink pack packmode pad
+ \ page pagedir pencolor penwidth peripheries pin pos quadtree quantum
+ \ rank rankdir ranksep ratio rects regular remincross repulsiveforce
+ \ resolution root rotate rotation samehead sametail samplepoints scale
+ \ searchsize sep shape shapefile showboxes sides size skew smoothing
+ \ sortv splines start style stylesheet tail_lp tailclip tailhref
+ \ taillabel tailport tailtarget tailtooltip tailURL target tooltip
+ \ truecolor URL vertices viewport voro_margin weight width xdotversion
+ \ xlabel xlp z
+
+" Special chars
+syn match dotKeyChar "="
+syn match dotKeyChar ";"
+syn match dotKeyChar "->"
+syn match dotKeyChar "--"
+
+" Identifier
+syn match dotIdentifier /\<\w\+\(:\w\+\)\?\>/
+
+" Synchronization
+syn sync minlines=50
+syn sync maxlines=500
+
+" 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_dot_syntax_inits")
+ if version < 508
+ let did_dot_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink dotParErr Error
+ HiLink dotBraceErr Error
+ HiLink dotBrackErr Error
+
+ HiLink dotComment Comment
+ HiLink dotTodo Todo
+
+ HiLink dotParEncl Keyword
+ HiLink dotBrackEncl Keyword
+ HiLink dotBraceEncl Keyword
+
+ HiLink dotKeyword Keyword
+ HiLink dotType Type
+ HiLink dotKeyChar Keyword
+
+ HiLink dotString String
+ HiLink dotEscString Keyword
+ HiLink dotIdentifier Identifier
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "dot"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim: ts=8
diff --git a/runtime/syntax/doxygen.vim b/runtime/syntax/doxygen.vim
new file mode 100644
index 0000000..357c430
--- /dev/null
+++ b/runtime/syntax/doxygen.vim
@@ -0,0 +1,633 @@
+" DoxyGen syntax highlighting extension for c/c++/idl/java
+" Language: doxygen on top of c, cpp, idl, java, php
+" Maintainer: Michael Geddes <vimmer@frog.wheelycreek.net>
+" Author: Michael Geddes
+" Last Change: December 2020
+" Version: 1.30
+"
+" Copyright 2004-2020 Michael Geddes
+" Please feel free to use, modify & distribute all or part of this script,
+" providing this copyright message remains.
+" I would appreciate being acknowledged in any derived scripts, and would
+" appreciate and welcome any updates, modifications or suggestions.
+
+" NOTE: Comments welcome!
+"
+" There are two variables that control the syntax highlighting produced by this
+" script:
+" doxygen_enhanced_colour - Use the (non-standard) original colours designed
+" for this highlighting.
+" doxygen_my_rendering - Disable the HTML bold/italic/underline rendering.
+"
+" A brief description without '.' or '!' will cause the end comment
+" character to be marked as an error. You can define the colour of this using
+" the highlight doxygenErrorComment.
+" A \link without an \endlink will cause an error highlight on the end-comment.
+" This is defined by doxygenLinkError
+"
+" The variable g:doxygen_codeword_font can be set to the guifont for marking \c
+" words - a 'typewriter' like font normally. Spaces must be escaped. It can
+" also be set to any highlight attribute. Alternatively, a highlight for doxygenCodeWord
+" can be used to override it.
+"
+" By default, highlighting is done assuming you have the JAVADOC_AUTOBRIEF
+" setting turned on in your Doxygen configuration. If you don't, you
+" can set the variable g:doxygen_javadoc_autobrief to 0 to have the
+" highlighting more accurately reflect the way Doxygen will interpret your
+" comments.
+"
+" Support for cpp, c, idl, doxygen and php.
+"
+" Special thanks to: Wu Yongwei, Toby Allsopp
+"
+
+if exists('b:suppress_doxygen')
+ unlet b:suppress_doxygen
+ finish
+endif
+
+if exists('b:current_syntax') && b:current_syntax =~ 'doxygen' && !exists('doxygen_debug_script')
+ finish
+endif
+
+let s:cpo_save = &cpo
+try
+ set cpo&vim
+
+ " Start of Doxygen syntax highlighting:
+ "
+
+ " C/C++ Style line comments
+ syn match doxygenCommentWhite +\s*\ze/\*\(\*/\)\@![*!]+ containedin=phpRegion
+ syn match doxygenCommentWhite +\s*\ze//[/!]+ containedin=phpRegion
+ syn match doxygenCommentWhite +\s*\ze/\*\(\*/\)\@![*!]+
+ syn match doxygenCommentWhite +\s*\ze//[/!]+ containedin=phpRegion
+
+ syn region doxygenComment start=+/\*\(\*/\)\@![*!]+ end=+\*/+ contains=doxygenSyncStart,doxygenStart,doxygenTODO,doxygenLeadingWhite keepend fold containedin=phpRegion
+ syn region doxygenCommentL start=+//[/!]<\@!+me=e-1 end=+$+ contains=doxygenLeadingLWhite,doxygenStartL,@Spell keepend skipwhite skipnl nextgroup=doxygenCommentWhite2 fold containedin=phpRegion
+ syn region doxygenCommentL start=+//[/!]<+me=e-2 end=+$+ contains=doxygenStartL,@Spell keepend skipwhite skipnl fold containedin=phpRegion
+ syn region doxygenCommentL start=+//@\ze[{}]+ end=+$+ contains=doxygenGroupDefine,doxygenGroupDefineSpecial,@Spell fold containedin=phpRegion
+ syn region doxygenComment start=+/\*@\ze[{}]+ end=+\*/+ contains=doxygenGroupDefine,doxygenGroupDefineSpecial,@Spell fold containedin=phpRegion
+
+ " Single line brief followed by multiline comment.
+ syn match doxygenCommentWhite2 +\_s*\ze/\*\(\*/\)\@![*!]+ contained nextgroup=doxygenComment2
+ syn region doxygenComment2 start=+/\*\(\*/\)\@![*!]+ end=+\*/+ contained contains=doxygenSyncStart2,doxygenStart2,doxygenTODO keepend fold
+ " This helps with sync-ing as for some reason, syncing behaves differently to a normal region, and the start pattern does not get matched.
+ syn match doxygenSyncStart2 +[^*/]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenStartSpecial,doxygenSkipComment,doxygenStartSkip2 skipwhite skipnl
+
+ " Skip empty lines at the start for when comments start on the 2nd/3rd line.
+ syn match doxygenStartSkip2 +^\s*\*[^/]+me=e-1 contained nextgroup=doxygenBody,doxygenStartSpecial,doxygenStartSkipWhite skipwhite skipnl
+ syn match doxygenStartSkip2 +^\s*\*$+ contained nextgroup=doxygenBody,doxygenStartSpecial,doxygenStartSkipWhite skipwhite skipnl
+ syn match doxygenStart2 +/\*[*!]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenStartSpecial,doxygenStartSkip2 skipwhite skipnl
+
+
+ " Match the Starting pattern (effectively creating the start of a BNF)
+ if !exists('g:doxygen_javadoc_autobrief') || g:doxygen_javadoc_autobrief
+ syn match doxygenStart +/\*[*!]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenFindBriefSpecial,doxygenStartSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl
+ syn match doxygenLeadingLWhite +\s\++ contained nextgroup=doxygenPrevL,doxygenBriefL,doxygenSpecial
+ syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenLeaingLWhite,doxygenPrevL,doxygenBriefL,doxygenSpecial
+ " Match the first sentence as a brief comment
+ if ! exists('g:doxygen_end_punctuation')
+ let g:doxygen_end_punctuation='[.]'
+ endif
+
+ exe 'syn region doxygenBrief contained start=+[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]+ start=+\(^\s*\)\@<!\*/\@!+ start=+\<\k+ skip=+'.doxygen_end_punctuation.'\S\@=+ end=+'.doxygen_end_punctuation.'+ end=+\(\s*\(\n\s*\*\=\s*\)[@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\@=+ contains=doxygenSmallSpecial,doxygenContinueCommentWhite,doxygenLeadingWhite,doxygenBriefEndComment,doxygenFindBriefSpecial,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink,@Spell skipnl nextgroup=doxygenBody'
+
+ syn match doxygenBriefEndComment +\*/+ contained
+
+ exe 'syn region doxygenBriefL start=+@\k\@!\|[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@]+ start=+\<+ skip=+'.doxygen_end_punctuation.'\S+ end=+'.doxygen_end_punctuation.'\|$+ contained contains=doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell keepend'
+ syn match doxygenPrevL +<+ contained nextgroup=doxygenBriefL,doxygenSpecial skipwhite
+ else
+ syn match doxygenStart +/\*[*!]+ contained nextgroup=doxygenBody,doxygenPrev,doxygenFindBriefSpecial,doxygenStartSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl
+ syn match doxygenStartL +//[/!]+ contained nextgroup=doxygenLeadingLWhite,doxygenPrevL,doxygenLine,doxygenSpecial
+ syn match doxygenLeadingLWhite +\s\++ contained nextgroup=doxygenPrevL,doxygenLine,doxygenSpecial
+ syn region doxygenLine start=+@\k\@!\|[\\@]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@<]+ start=+\<+ end='$' contained contains=doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell keepend
+ syn match doxygenPrevL +<+ contained nextgroup=doxygenLine,doxygenSpecial skipwhite
+
+ endif
+
+ " This helps with sync-ing as for some reason, syncing behaves differently to a normal region, and the start pattern does not get matched.
+ syn match doxygenSyncStart +\ze[^*/]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl
+ " Match an [@\]brief so that it moves to body-mode.
+ "
+ "
+ " syn match doxygenBriefLine contained
+ syn match doxygenBriefSpecial contained +[@\\]+ nextgroup=doxygenBriefWord skipwhite
+ " syn region doxygenFindBriefSpecial start=+[@\\]brief\>+ end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ keepend contains=doxygenBriefSpecial nextgroup=doxygenBody keepend skipwhite skipnl contained
+ syn region doxygenFindBriefSpecial start=+[@\\]brief\>+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ keepend contains=doxygenBriefSpecial nextgroup=doxygenBody keepend skipwhite skipnl contained
+
+
+
+" end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+
+"syn region doxygenBriefLine contained start=+\<\k+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ contains=doxygenContinueCommentWhite,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink,@Spell skipwhite keepend matchgroup=xxx
+syn region doxygenBriefLine contained start=+\<\k+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ skipwhite keepend matchgroup=xxx contains=@Spell
+" syn region doxygenBriefLine matchgroup=xxxy contained start=+\<\k.\++ skip=+^\s*\k+ end=+end+ skipwhite keepend
+"doxygenFindBriefSpecial,
+ "" syn region doxygenSpecialMultilineDesc start=+.\++ contained contains=doxygenSpecialContinueCommentWhite,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell skipwhite keepend
+
+
+ " Match a '<' for applying a comment to the previous element.
+ syn match doxygenPrev +<+ contained nextgroup=doxygenBrief,doxygenBody,doxygenSpecial,doxygenStartSkipWhite skipwhite
+
+if exists("c_comment_strings")
+ " These are anti-Doxygen comments. If there are more than two asterisks or 3 '/'s
+ " then turn the comments back into normal C comments.
+ syn region cComment start="/\*\*\*" end="\*/" contains=@cCommentGroup,cCommentString,cCharacter,cNumbersCom,cSpaceError
+ syn region cCommentL start="////" skip="\\$" end="$" contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError
+else
+ syn region cComment start="/\*\*\*" end="\*/" contains=@cCommentGroup,cSpaceError
+ syn region cCommentL start="////" skip="\\$" end="$" contains=@cCommentGroup,cSpaceError
+endif
+
+ " Special commands at the start of the area: starting with '@' or '\'
+ syn region doxygenStartSpecial contained start=+[@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=doxygenSpecial nextgroup=doxygenSkipComment skipnl keepend
+ syn match doxygenSkipComment contained +^\s*\*/\@!+ nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenPage skipwhite
+
+ "syn region doxygenBodyBit contained start=+$+
+
+ " The main body of a doxygen comment.
+ syn region doxygenBody contained start=+\(/\*[*!]\)\@<!<\|[^<]\|$+ matchgroup=doxygenEndComment end=+\*/+re=e-2,me=e-2 contains=doxygenContinueCommentWhite,doxygenTODO,doxygenSpecial,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell
+
+ " These allow the skipping of comment continuation '*' characters.
+ syn match doxygenContinueCommentWhite contained +^\s*\ze\*+ nextgroup=doxygenContinueComment
+ syn match doxygenContinueComment contained +\*/\@!+
+
+ " Catch a Brief comment without punctuation - flag it as an error but
+ " make sure the end comment is picked up also.
+ syn match doxygenErrorComment contained +\*/+
+
+
+ " Skip empty lines at the start for when comments start on the 2nd/3rd line.
+ if !exists('g:doxygen_javadoc_autobrief') || g:doxygen_javadoc_autobrief
+ syn match doxygenStartSkipWhite +^\s*\ze\*/\@!+ contained nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl
+ "syn match doxygenStartSkipWhite +^\s*\ze\*$+ contained nextgroup=doxygenBrief,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage skipwhite skipnl
+ else
+ syn match doxygenStartSkipWhite +^\s*\*[^/]+me=e-1 contained nextgroup=doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage,doxygenBody skipwhite skipnl
+ syn match doxygenStartSkipWhite +^\s*\*$+ contained nextgroup=doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkipWhite,doxygenPage,doxygenBody skipwhite skipnl
+ endif
+
+ " Create the single word matching special identifiers.
+
+ fun! s:DxyCreateSmallSpecial( kword, name )
+
+ let mx='[-:0-9A-Za-z_%=&+*/!~>|]\@<!\([-0-9A-Za-z_%=+*/!~>|#]\+[-0-9A-Za-z_%=+*/!~>|]\@!\|\\[\\<>&.]@\|[.,]\w\@=\|::\|([^)]*)\|&[0-9a-zA-Z]\{2,7};\)\+'
+ exe 'syn region doxygenSpecial'.a:name.'Word contained start=+'.a:kword.'+ end=+\(\_s\+'.mx.'\)\@<=[-a-zA-Z_0-9+*/^%|~!=&\\]\@!+ skipwhite contains=doxygenContinueCommentWhite,doxygen'.a:name.'Word'
+ exe 'syn match doxygen'.a:name.'Word contained "\_s\@<='.mx.'" contains=doxygenHtmlSpecial,@Spell keepend'
+ endfun
+ call s:DxyCreateSmallSpecial('p', 'Code')
+ call s:DxyCreateSmallSpecial('c', 'Code')
+ call s:DxyCreateSmallSpecial('b', 'Bold')
+ call s:DxyCreateSmallSpecial('e', 'Emphasised')
+ call s:DxyCreateSmallSpecial('em', 'Emphasised')
+ call s:DxyCreateSmallSpecial('a', 'Argument')
+ call s:DxyCreateSmallSpecial('ref', 'Ref')
+ delfun s:DxyCreateSmallSpecial
+
+ syn match doxygenSmallSpecial contained +[@\\]\(\<[npcbea]\>\|\<em\>\|\<ref\>\|\<link\>\|f\$\|[$\\&<>#]\)\@=+ nextgroup=doxygenOtherLink,doxygenHyperLink,doxygenHashLink,doxygenFormula,doxygenSymbol,doxygenSpecial.*Word
+
+ " Now for special characters
+ syn match doxygenSpecial contained +[@\\]\(\<[npcbea]\>\|\<em\>\|\<ref\|\<link\>\>\|\<f\$\|[$\\&<>#]\)\@!+ nextgroup=doxygenParam,doxygenTParam,doxygenRetval,doxygenBriefWord,doxygenBold,doxygenBOther,doxygenOther,doxygenOtherTODO,doxygenOtherWARN,doxygenOtherBUG,doxygenPage,doxygenGroupDefine,doxygenCodeRegion,doxygenVerbatimRegion,doxygenDotRegion
+ " doxygenOtherLink,doxygenSymbol,doxygenFormula,doxygenErrorSpecial,doxygenSpecial.*Word
+ "
+ syn match doxygenGroupDefine contained +@\@<=[{}]+
+ syn match doxygenGroupDefineSpecial contained +@\ze[{}]+
+
+ syn match doxygenErrorSpecial contained +\s+
+
+ " Match parameters and retvals (highlighting the first word as special).
+ syn match doxygenParamDirection contained "\v\[(\s*in>((]\s*\[|\s*,\s*)out>)=|out>((]\s*\[|\s*,\s*)in>)=)\]" nextgroup=doxygenParamName skipwhite
+ syn keyword doxygenParam contained param nextgroup=doxygenParamName,doxygenParamDirection skipwhite
+ syn keyword doxygenTParam contained tparam nextgroup=doxygenParamName skipwhite
+ syn match doxygenParamName contained +[A-Za-z0-9_:]\++ nextgroup=doxygenSpecialMultilineDesc skipwhite
+ syn keyword doxygenRetval contained retval throw throws exception nextgroup=doxygenReturnValue skipwhite
+ syn match doxygenReturnValue contained +\S\++ nextgroup=doxygenSpecialMultilineDesc skipwhite
+
+ " Match one line identifiers.
+ syn keyword doxygenOther contained addindex anchor
+ \ dontinclude endhtmlonly endlatexonly showinitializer hideinitializer
+ \ example htmlonly image include includelineno ingroup latexonly line
+ \ overload relates related relatesalso relatedalso sa skip skipline
+ \ until verbinclude version addtogroup htmlinclude copydoc dotfile
+ \ xmlonly endxmlonly
+ \ nextgroup=doxygenSpecialOnelineDesc copybrief copydetails copyright dir extends
+ \ implements
+
+ syn region doxygenCodeRegion contained matchgroup=doxygenOther start=+\<code\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endcode\>+ contains=doxygenCodeRegionSpecial,doxygenContinueCommentWhite,doxygenErrorComment,@NoSpell
+ syn match doxygenCodeRegionSpecial contained +[\\@]\(endcode\>\)\@=+
+
+ syn region doxygenVerbatimRegion contained matchgroup=doxygenOther start=+\<verbatim\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endverbatim\>+ contains=doxygenVerbatimRegionSpecial,doxygenContinueCommentWhite,doxygenErrorComment,@NoSpell
+ syn match doxygenVerbatimRegionSpecial contained +[\\@]\(endverbatim\>\)\@=+
+
+ if exists('b:current_syntax')
+ let b:doxygen_syntax_save=b:current_syntax
+ unlet b:current_syntax
+ endif
+
+ syn include @Dotx syntax/dot.vim
+
+ if exists('b:doxygen_syntax_save')
+ let b:current_syntax=b:doxygen_syntax_save
+ unlet b:doxygen_syntax_save
+ else
+ unlet b:current_syntax
+ endif
+
+ syn region doxygenDotRegion contained matchgroup=doxygenOther start=+\<dot\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<enddot\>+ contains=doxygenDotRegionSpecial,doxygenErrorComment,doxygenContinueCommentWhite,@NoSpell,@Dotx
+ syn match doxygenDotRegionSpecial contained +[\\@]\(enddot\>\)\@=+
+
+ " Match single line identifiers.
+ syn keyword doxygenBOther contained class enum file fn mainpage interface
+ \ namespace struct typedef union var def name
+ \ nextgroup=doxygenSpecialTypeOnelineDesc
+
+ syn keyword doxygenOther contained par nextgroup=doxygenHeaderLine
+ syn region doxygenHeaderLine start=+.+ end=+^+ contained skipwhite nextgroup=doxygenSpecialMultilineDesc
+ " Match the start of other multiline comments.
+ syn keyword doxygenOther contained arg author authors date deprecated li return returns result see invariant note post pre remarks since test internal nextgroup=doxygenSpecialMultilineDesc
+ syn keyword doxygenOtherTODO contained todo attention nextgroup=doxygenSpecialMultilineDesc
+ syn keyword doxygenOtherWARN contained warning nextgroup=doxygenSpecialMultilineDesc
+ syn keyword doxygenOtherBUG contained bug nextgroup=doxygenSpecialMultilineDesc
+
+ " Handle \link, \endlink, highlighting the link-to and the link text bits separately.
+ syn region doxygenOtherLink matchgroup=doxygenOther start=+\<link\>+ end=+[\@]\@<=endlink\>+ contained contains=doxygenLinkWord,doxygenContinueCommentWhite,doxygenLinkError,doxygenEndlinkSpecial
+ syn match doxygenEndlinkSpecial contained +[\\@]\zeendlink\>+
+
+ syn match doxygenLinkWord "[_a-zA-Z:#()][_a-z0-9A-Z:#()]*\>" contained skipnl nextgroup=doxygenLinkRest,doxygenContinueLinkComment
+ syn match doxygenLinkRest +[^*@\\]\|\*/\@!\|[@\\]\(endlink\>\)\@!+ contained skipnl nextgroup=doxygenLinkRest,doxygenContinueLinkComment
+ syn match doxygenContinueLinkComment contained +^\s*\*\=[^/]+me=e-1 nextgroup=doxygenLinkRest
+ syn match doxygenLinkError "\*/" contained
+ " #Link highlighting.
+ syn match doxygenHashLink /\(\h\w*\)\?#\(\.\w\@=\|\w\+\|::\|()\)\+/ contained contains=doxygenHashSpecial
+ syn match doxygenHashSpecial /#/ contained
+ syn match doxygenHyperLink /\(\s\|^\s*\*\?\)\@<=\(http\|https\|ftp\):\/\/[-0-9a-zA-Z_?&=+#%/.!':;@~]\+/ contained
+
+ " Handle \page. This does not use doxygenBrief.
+ syn match doxygenPage "[\\@]page\>"me=s+1 contained skipwhite nextgroup=doxygenPagePage
+ syn keyword doxygenPagePage page contained skipwhite nextgroup=doxygenPageIdent
+ syn region doxygenPageDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenBody
+ syn match doxygenPageIdent "\<\w\+\>" contained nextgroup=doxygenPageDesc
+
+ " Handle section
+ syn keyword doxygenOther defgroup section subsection subsubsection weakgroup contained skipwhite nextgroup=doxygenSpecialIdent
+ syn region doxygenSpecialSectionDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend skipwhite skipnl nextgroup=doxygenContinueCommentWhite
+ syn match doxygenSpecialIdent "\<\w\+\>" contained nextgroup=doxygenSpecialSectionDesc
+
+ " Does the one-line description for the one-line type identifiers.
+ syn region doxygenSpecialTypeOnelineDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend
+ syn region doxygenSpecialOnelineDesc start=+.\++ end=+$+ contained skipwhite contains=doxygenSmallSpecial,@doxygenHtmlGroup keepend
+
+ " Handle the multiline description for the multiline type identifiers.
+ " Continue until an 'empty' line (can contain a '*' continuation) or until the
+ " next whole-line @ command \ command.
+ syn region doxygenSpecialMultilineDesc start=+.\++ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ contained contains=doxygenSpecialContinueCommentWhite,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell skipwhite keepend
+
+" syn match doxygenSpecialContinueComment contained +^\s*\*/\@!\s*+ nextgroup=doxygenSpecial skipwhite
+ syn match doxygenSpecialContinueCommentWhite contained +^\s*\ze\*+ nextgroup=doxygenSpecialContinueComment
+ syn match doxygenSpecialContinueComment contained +\*/\@!+
+
+
+ " Handle special cases 'bold' and 'group'
+ syn keyword doxygenBold contained bold nextgroup=doxygenSpecialHeading
+ syn keyword doxygenBriefWord contained brief nextgroup=doxygenBriefLine skipwhite
+ syn match doxygenSpecialHeading +.\++ contained skipwhite
+ syn keyword doxygenGroup contained group nextgroup=doxygenGroupName skipwhite
+ syn keyword doxygenGroupName contained +\k\++ nextgroup=doxygenSpecialOnelineDesc skipwhite
+
+ " Handle special symbol identifiers @$, @\, @$ etc
+ syn match doxygenSymbol contained +[$\\&<>#n]+
+
+ " Simplistic handling of formula regions
+ syn region doxygenFormula contained matchgroup=doxygenFormulaEnds start=+f\$+ end=+[@\\]f\$+ contains=doxygenFormulaSpecial,doxygenFormulaOperator
+ syn match doxygenFormulaSpecial contained +[@\\]\(f[^$]\|[^f]\)+me=s+1 nextgroup=doxygenFormulaKeyword,doxygenFormulaEscaped
+ syn match doxygenFormulaEscaped contained "."
+ syn match doxygenFormulaKeyword contained "[a-z]\+"
+ syn match doxygenFormulaOperator contained +[_^]+
+
+ syn region doxygenFormula contained matchgroup=doxygenFormulaEnds start=+f\[+ end=+[@\\]f]+ contains=doxygenFormulaSpecial,doxygenFormulaOperator,doxygenAtom
+ syn region doxygenAtom contained transparent matchgroup=doxygenFormulaOperator start=+{+ end=+}+ contains=doxygenAtom,doxygenFormulaSpecial,doxygenFormulaOperator
+
+ " Add TODO highlighting.
+ syn keyword doxygenTODO contained TODO README XXX FIXME
+
+ " Supported HTML subset. Not perfect, but okay.
+ syn case ignore
+ syn region doxygenHtmlTag contained matchgroup=doxygenHtmlCh start=+\v\</=\ze([biuap]|em|strong|img|br|center|code|dfn|d[ldt]|hr|h[0-3]|li|[ou]l|pre|small|sub|sup|table|tt|var|caption|src|alt|longdesc|name|height|width|usemap|ismap|href|type)>+ skip=+\\<\|\<\k\+=\("[^"]*"\|'[^']*\)+ end=+>+ contains=doxygenHtmlCmd,doxygenContinueCommentWhite,doxygenHtmlVar
+ syn keyword doxygenHtmlCmd contained b i em strong u img a br p center code dfn dl dd dt hr h1 h2 h3 li ol ul pre small sub sup table tt var caption nextgroup=doxygenHtmlVar skipwhite
+ syn keyword doxygenHtmlVar contained src alt longdesc name height width usemap ismap href type nextgroup=doxygenHtmlEqu skipwhite
+ syn match doxygenHtmlEqu contained +=+ nextgroup=doxygenHtmlExpr skipwhite
+ syn match doxygenHtmlExpr contained +"\(\\.\|[^"]\)*"\|'\(\\.\|[^']\)*'+ nextgroup=doxygenHtmlVar skipwhite
+ syn case match
+ syn match doxygenHtmlSpecial contained "&\(copy\|quot\|[AEIOUYaeiouy]uml\|[AEIOUYaeiouy]acute\|[AEIOUaeiouy]grave\|[AEIOUaeiouy]circ\|[ANOano]tilde\|szlig\|[Aa]ring\|nbsp\|gt\|lt\|amp\);"
+
+ syn cluster doxygenHtmlGroup contains=doxygenHtmlCode,doxygenHtmlBold,doxygenHtmlUnderline,doxygenHtmlItalic,doxygenHtmlSpecial,doxygenHtmlTag,doxygenHtmlLink
+
+ syn cluster doxygenHtmlTop contains=@Spell,doxygenHtmlSpecial,doxygenHtmlTag,doxygenContinueCommentWhite
+ " Html Support
+ syn region doxygenHtmlLink contained start=+<[aA]\>\s*\(\n\s*\*\s*\)\=\(\(name\|href\)=\("[^"]*"\|'[^']*'\)\)\=\s*>+ end=+</[aA]>+me=e-4 contains=@doxygenHtmlTop
+ hi link doxygenHtmlLink Underlined
+
+ syn region doxygenHtmlBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderline,doxygenHtmlBoldItalic,@Spell
+ syn region doxygenHtmlBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderline,doxygenHtmlBoldItalic,@Spell
+ syn region doxygenHtmlBoldUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderlineItalic,@Spell
+ syn region doxygenHtmlBoldItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldItalicUnderline,@Spell
+ syn region doxygenHtmlBoldItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,doxygenHtmlBoldItalicUnderline,@Spell
+ syn region doxygenHtmlBoldUnderlineItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,@Spell
+ syn region doxygenHtmlBoldUnderlineItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,@Spell
+ syn region doxygenHtmlBoldItalicUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlBoldUnderlineItalic,@Spell
+
+ syn region doxygenHtmlUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBold,doxygenHtmlUnderlineItalic,@Spell
+ syn region doxygenHtmlUnderlineBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBoldItalic,@Spell
+ syn region doxygenHtmlUnderlineBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlUnderlineBoldItalic,@Spell
+ syn region doxygenHtmlUnderlineItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,htmUnderlineItalicBold,@Spell
+ syn region doxygenHtmlUnderlineItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,htmUnderlineItalicBold,@Spell
+ syn region doxygenHtmlUnderlineItalicBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,@Spell
+ syn region doxygenHtmlUnderlineItalicBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,@Spell
+ syn region doxygenHtmlUnderlineBoldItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,@Spell
+ syn region doxygenHtmlUnderlineBoldItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,@Spell
+
+ syn region doxygenHtmlItalic contained start="\c<i\>" end="\c</i>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicBold,doxygenHtmlItalicUnderline,@Spell
+ syn region doxygenHtmlItalic contained start="\c<em\>" end="\c</em>"me=e-5 contains=@doxygenHtmlTop,@Spell
+ syn region doxygenHtmlItalicBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicBoldUnderline,@Spell
+ syn region doxygenHtmlItalicBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,doxygenHtmlItalicBoldUnderline,@Spell
+ syn region doxygenHtmlItalicBoldUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,@Spell
+ syn region doxygenHtmlItalicUnderline contained start="\c<u\>" end="\c</u>"me=e-4 contains=@doxygenHtmlTop,doxygenHtmlItalicUnderlineBold,@Spell
+ syn region doxygenHtmlItalicUnderlineBold contained start="\c<b\>" end="\c</b>"me=e-4 contains=@doxygenHtmlTop,@Spell
+ syn region doxygenHtmlItalicUnderlineBold contained start="\c<strong\>" end="\c</strong>"me=e-9 contains=@doxygenHtmlTop,@Spell
+
+ syn region doxygenHtmlCode contained start="\c<code\>" end="\c</code>"me=e-7 contains=@doxygenHtmlTop,@NoSpell
+
+ " Prevent the doxygen contained matches from leaking into the c/rc groups.
+ syn cluster cParenGroup add=doxygen.*
+ syn cluster cParenGroup remove=doxygenComment,doxygenCommentL
+ syn cluster cPreProcGroup add=doxygen.*
+ syn cluster cMultiGroup add=doxygen.*
+ syn cluster rcParenGroup add=doxygen.*
+ syn cluster rcParenGroup remove=doxygenComment,doxygenCommentL
+ syn cluster rcGroup add=doxygen.*
+
+ let s:my_syncolor=0
+ if !exists(':SynColor')
+ command -nargs=+ SynColor hi def <args>
+ let s:my_syncolor=1
+ endif
+
+ let s:my_synlink=0
+ if !exists(':SynLink')
+ command -nargs=+ SynLink hi def link <args>
+ let s:my_synlink=1
+ endif
+
+ try
+ "let did_doxygen_syntax_inits = &background
+ hi doxygen_Dummy guifg=black
+
+ fun! s:Doxygen_Hilights_Base()
+ SynLink doxygenHtmlSpecial Special
+ SynLink doxygenHtmlVar Type
+ SynLink doxygenHtmlExpr String
+
+ SynLink doxygenSmallSpecial SpecialChar
+
+ SynLink doxygenSpecialCodeWord doxygenSmallSpecial
+ SynLink doxygenSpecialBoldWord doxygenSmallSpecial
+ SynLink doxygenSpecialEmphasisedWord doxygenSmallSpecial
+ SynLink doxygenSpecialArgumentWord doxygenSmallSpecial
+
+ " SynColor doxygenFormulaKeyword cterm=bold ctermfg=DarkMagenta guifg=DarkMagenta gui=bold
+ SynLink doxygenFormulaKeyword Keyword
+ "SynColor doxygenFormulaEscaped ctermfg=DarkMagenta guifg=DarkMagenta gui=bold
+ SynLink doxygenFormulaEscaped Special
+ SynLink doxygenFormulaOperator Operator
+ SynLink doxygenFormula Statement
+ SynLink doxygenSymbol Constant
+ SynLink doxygenSpecial Special
+ SynLink doxygenFormulaSpecial Special
+ "SynColor doxygenFormulaSpecial ctermfg=DarkBlue guifg=DarkBlue
+ endfun
+ call s:Doxygen_Hilights_Base()
+
+ fun! s:Doxygen_Hilights()
+ " Pick a sensible default for 'codeword'.
+ let font=''
+ if exists('g:doxygen_codeword_font')
+ if g:doxygen_codeword_font !~ '\<\k\+='
+ let font='font='.g:doxygen_codeword_font
+ else
+ let font=g:doxygen_codeword_font
+ endif
+ else
+ " Try and pick a font (only some platforms have been tested).
+ if has('gui_running')
+ if has('gui_gtk2')
+ if &guifont == ''
+ let font="font='FreeSerif 12'"
+ else
+ let font="font='".substitute(&guifont, '^.\{-}\(\d\+\)$', 'FreeSerif \1','')."'"
+ endif
+
+ elseif has('gui_win32') || has('gui_win16') || has('gui_win95')
+
+ if exists('g:doxygen_use_bitsream_vera') && g:doxygen_use_bitsream_vera
+ let font_base='Bitstream_Vera_Sans_Mono'
+ else
+ let font_base='Lucida_Console'
+ endif
+ if &guifont == ''
+ let font='font='.font_base.':h10'
+ else
+ let font='font='.matchstr(substitute(&guifont, '^[^:]*', font_base,''),'[^,]*')
+ endif
+ elseif has('gui_athena') || has('gui_gtk') || &guifont=~'^\(-[^-]\+\)\{14}'
+ if &guifont == ''
+ let font='font=-b&h-lucidatypewriter-medium-r-normal-*-*-140-*-*-m-*-iso8859-1'
+ else
+ " let font='font='.substitute(&guifont,'^\(-[^-]\+\)\{7}-\([0-9]\+\).*', '-b\&h-lucidatypewriter-medium-r-normal-*-*-\2-*-*-m-*-iso8859-1','')
+ " The above line works, but it is hard to expect the combination of
+ " the two fonts will look good.
+ endif
+ elseif has('gui_kde')
+ " let font='font=Bitstream\ Vera\ Sans\ Mono/12/-1/5/50/0/0/0/0/0'
+ endif
+ endif
+ endif
+ if font=='' | let font='gui=bold' | endif
+ exe 'SynColor doxygenCodeWord term=bold cterm=bold '.font
+ if (exists('g:doxygen_enhanced_color') && g:doxygen_enhanced_color) || (exists('g:doxygen_enhanced_colour') && g:doxygen_enhanced_colour)
+ if &background=='light'
+ SynColor doxygenComment ctermfg=DarkRed guifg=DarkRed
+ SynColor doxygenBrief cterm=bold ctermfg=Cyan guifg=DarkBlue gui=bold
+ SynColor doxygenBody ctermfg=DarkBlue guifg=DarkBlue
+ SynColor doxygenSpecialTypeOnelineDesc cterm=bold ctermfg=DarkRed guifg=firebrick3 gui=bold
+ SynColor doxygenBOther cterm=bold ctermfg=DarkMagenta guifg=#aa50aa gui=bold
+ SynColor doxygenParam ctermfg=DarkGray guifg=#aa50aa
+ SynColor doxygenParamName cterm=italic ctermfg=DarkBlue guifg=DeepSkyBlue4 gui=italic,bold
+ SynColor doxygenSpecialOnelineDesc cterm=bold ctermfg=DarkCyan guifg=DodgerBlue3 gui=bold
+ SynColor doxygenSpecialHeading cterm=bold ctermfg=DarkBlue guifg=DeepSkyBlue4 gui=bold
+ SynColor doxygenPrev ctermfg=DarkGreen guifg=DarkGreen
+ else
+ SynColor doxygenComment ctermfg=LightRed guifg=LightRed
+ SynColor doxygenBrief cterm=bold ctermfg=Cyan ctermbg=darkgrey guifg=LightBlue gui=Bold,Italic
+ SynColor doxygenBody ctermfg=Cyan guifg=LightBlue
+ SynColor doxygenSpecialTypeOnelineDesc cterm=bold ctermfg=Red guifg=firebrick3 gui=bold
+ SynColor doxygenBOther cterm=bold ctermfg=Magenta guifg=#aa50aa gui=bold
+ SynColor doxygenParam ctermfg=LightGray guifg=LightGray
+ SynColor doxygenParamName cterm=italic ctermfg=LightBlue guifg=LightBlue gui=italic,bold
+ SynColor doxygenSpecialOnelineDesc cterm=bold ctermfg=LightCyan guifg=LightCyan gui=bold
+ SynColor doxygenSpecialHeading cterm=bold ctermfg=LightBlue guifg=LightBlue gui=bold
+ SynColor doxygenPrev ctermfg=LightGreen guifg=LightGreen
+ endif
+ SynLink doxygenValue doxygenParamName
+ else
+ SynLink doxygenComment SpecialComment
+ SynLink doxygenBrief Statement
+ SynLink doxygenBody Comment
+ SynLink doxygenSpecialTypeOnelineDesc Statement
+ SynLink doxygenBOther Constant
+ SynLink doxygenParam SpecialComment
+ SynLink doxygenParamName Underlined
+ SynLink doxygenSpecialOnelineDesc Statement
+ SynLink doxygenSpecialHeading Statement
+ SynLink doxygenPrev SpecialComment
+ SynLink doxygenValue Constant
+ endif
+ SynLink doxygenTParam doxygenParam
+
+ endfun
+
+ call s:Doxygen_Hilights()
+
+ syn match doxygenLeadingWhite +\(^\s*\*\)\@<=\s*+ contained
+
+ " This is still a proposal, but it is probably fine. However, it doesn't
+ " work when 'syntax' is set in a modeline, catch the security error.
+ try
+ aug doxygengroup
+ au!
+ au Syntax UserColor_reset nested call s:Doxygen_Hilights_Base()
+ au Syntax UserColor_{on,reset,enable} nested call s:Doxygen_Hilights()
+ aug END
+ catch /E12:/
+ endtry
+
+
+ SynLink doxygenBody Comment
+ SynLink doxygenLine doxygenBody
+ SynLink doxygenTODO Todo
+ SynLink doxygenOtherTODO Todo
+ SynLink doxygenOtherWARN Todo
+ SynLink doxygenOtherBUG Todo
+ SynLink doxygenLeadingLWhite doxygenBody
+
+ SynLink doxygenErrorSpecial Error
+ SynLink doxygenErrorEnd Error
+ SynLink doxygenErrorComment Error
+ SynLink doxygenLinkError Error
+ SynLink doxygenBriefSpecial doxygenSpecial
+ SynLink doxygenHashSpecial doxygenSpecial
+ SynLink doxygenGroupDefineSpecial doxygenSpecial
+ SynLink doxygenEndlinkSpecial doxygenSpecial
+ SynLink doxygenCodeRegionSpecial doxygenSpecial
+ SynLink doxygenVerbatimRegionSpecial doxygenSpecial
+ SynLink doxygenDotRegionSpecial doxygenSpecial
+ SynLink doxygenGroupDefine doxygenParam
+
+ SynLink doxygenSpecialMultilineDesc doxygenSpecialOnelineDesc
+ SynLink doxygenFormulaEnds doxygenSpecial
+ SynLink doxygenBold doxygenParam
+ SynLink doxygenBriefWord doxygenParam
+ SynLink doxygenRetval doxygenParam
+ SynLink doxygenOther doxygenParam
+ SynLink doxygenStart doxygenComment
+ SynLink doxygenStart2 doxygenStart
+ SynLink doxygenComment2 doxygenComment
+ SynLink doxygenCommentL doxygenComment
+ SynLink doxygenContinueComment doxygenComment
+ SynLink doxygenSpecialContinueComment doxygenComment
+ SynLink doxygenSkipComment doxygenComment
+ SynLink doxygenEndComment doxygenComment
+ SynLink doxygenStartL doxygenComment
+ SynLink doxygenBriefEndComment doxygenComment
+ SynLink doxygenPrevL doxygenPrev
+ SynLink doxygenBriefL doxygenBrief
+ SynLink doxygenBriefLine doxygenBrief
+ SynLink doxygenHeaderLine doxygenSpecialHeading
+ SynLink doxygenCommentWhite Normal
+ SynLink doxygenCommentWhite2 doxygenCommentWhite
+ SynLink doxygenContinueCommentWhite doxygenCommentWhite
+ SynLink doxygenStartSkipWhite doxygenContinueCommentWhite
+ SynLink doxygenLinkWord doxygenParamName
+ SynLink doxygenLinkRest doxygenSpecialMultilineDesc
+ SynLink doxygenHyperLink doxygenLinkWord
+ SynLink doxygenHashLink doxygenLinkWord
+ SynLink doxygenReturnValue doxygenValue
+
+ SynLink doxygenPage doxygenSpecial
+ SynLink doxygenPagePage doxygenBOther
+ SynLink doxygenPageIdent doxygenParamName
+ SynLink doxygenPageDesc doxygenSpecialTypeOnelineDesc
+
+ SynLink doxygenSpecialIdent doxygenPageIdent
+ SynLink doxygenSpecialSectionDesc doxygenSpecialMultilineDesc
+
+ SynLink doxygenSpecialRefWord doxygenOther
+ SynLink doxygenRefWord doxygenPageIdent
+ SynLink doxygenContinueLinkComment doxygenComment
+
+ SynLink doxygenHtmlCh Function
+ SynLink doxygenHtmlCmd Statement
+ SynLink doxygenHtmlBoldItalicUnderline doxygenHtmlBoldUnderlineItalic
+ SynLink doxygenHtmlUnderlineBold doxygenHtmlBoldUnderline
+ SynLink doxygenHtmlUnderlineItalicBold doxygenHtmlBoldUnderlineItalic
+ SynLink doxygenHtmlUnderlineBoldItalic doxygenHtmlBoldUnderlineItalic
+ SynLink doxygenHtmlItalicUnderline doxygenHtmlUnderlineItalic
+ SynLink doxygenHtmlItalicBold doxygenHtmlBoldItalic
+ SynLink doxygenHtmlItalicBoldUnderline doxygenHtmlBoldUnderlineItalic
+ SynLink doxygenHtmlItalicUnderlineBold doxygenHtmlBoldUnderlineItalic
+ SynLink doxygenHtmlLink Underlined
+
+ SynLink doxygenParamDirection StorageClass
+
+
+ if !exists("doxygen_my_rendering") && !exists("html_my_rendering")
+ SynColor doxygenBoldWord term=bold cterm=bold gui=bold
+ SynColor doxygenEmphasisedWord term=italic cterm=italic gui=italic
+ SynLink doxygenArgumentWord doxygenEmphasisedWord
+ SynLink doxygenHtmlCode doxygenCodeWord
+ SynLink doxygenHtmlBold doxygenBoldWord
+ SynColor doxygenHtmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline
+ SynColor doxygenHtmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic
+ SynColor doxygenHtmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
+ SynColor doxygenHtmlUnderline term=underline cterm=underline gui=underline
+ SynColor doxygenHtmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline
+ SynColor doxygenHtmlItalic term=italic cterm=italic gui=italic
+ endif
+
+ finally
+ if s:my_synlink | delcommand SynLink | endif
+ if s:my_syncolor | delcommand SynColor | endif
+ endtry
+
+ if &syntax=='idl'
+ syn cluster idlCommentable add=doxygenComment,doxygenCommentL
+ endif
+
+ "syn sync clear
+ "syn sync maxlines=500
+ "syn sync minlines=50
+ syn sync match doxygenComment groupthere cComment "/\@<!/\*"
+ syn sync match doxygenSyncComment grouphere doxygenComment "/\@<!/\*[*!]"
+ "syn sync match doxygenSyncComment grouphere doxygenComment "/\*[*!]" contains=doxygenStart,doxygenTODO keepend
+ syn sync match doxygenSyncEndComment groupthere NONE "\*/"
+
+ if !exists('b:current_syntax')
+ let b:current_syntax = "doxygen"
+ else
+ let b:current_syntax = b:current_syntax.'.doxygen'
+ endif
+
+finally
+ let &cpo = s:cpo_save
+ unlet s:cpo_save
+endtry
+let suppress_doxygen=1
+" vim:et sw=2 sts=2
diff --git a/runtime/syntax/dracula.vim b/runtime/syntax/dracula.vim
new file mode 100644
index 0000000..a373dc2
--- /dev/null
+++ b/runtime/syntax/dracula.vim
@@ -0,0 +1,72 @@
+" Vim syntax file
+" Language: Dracula
+" Maintainer: Scott Bordelon <slb@artisan.com>
+" Last change: Wed Apr 25 18:50:01 PDT 2001
+" Extensions: drac.*,*.drac,*.drc,*.lvs,*.lpe
+" Comment: Dracula is an industry-standard language created by CADENCE (a
+" company specializing in Electronics Design Automation), for
+" the purposes of Design Rule Checking, Layout vs. Schematic
+" verification, and Layout Parameter Extraction.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Ignore case
+syn case ignore
+
+" A bunch of useful Dracula keywords
+
+"syn match draculaIdentifier
+
+syn keyword draculaStatement indisk primary outdisk printfile system
+syn keyword draculaStatement mode scale resolution listerror keepdata
+syn keyword draculaStatement datatype by lt gt output label range touch
+syn keyword draculaStatement inside outside within overlap outlib
+syn keyword draculaStatement schematic model unit parset
+syn match draculaStatement "flag-\(non45\|acuteangle\|offgrid\)"
+syn match draculaStatement "text-pri-only"
+syn match draculaStatement "[=&]"
+syn match draculaStatement "\[[^,]*\]"
+syn match draculastatement "^ *\(sel\|width\|ext\|enc\|area\|shrink\|grow\|length\)"
+syn match draculastatement "^ *\(or\|not\|and\|select\|size\|connect\|sconnect\|int\)"
+syn match draculastatement "^ *\(softchk\|stamp\|element\|parasitic cap\|attribute cap\)"
+syn match draculastatement "^ *\(flagnon45\|lextract\|equation\|lpeselect\|lpechk\|attach\)"
+syn match draculaStatement "\(temporary\|connect\)-layer"
+syn match draculaStatement "program-dir"
+syn match draculaStatement "status-command"
+syn match draculaStatement "batch-queue"
+syn match draculaStatement "cnames-csen"
+syn match draculaStatement "filter-lay-opt"
+syn match draculaStatement "filter-sch-opt"
+syn match draculaStatement "power-node"
+syn match draculaStatement "ground-node"
+syn match draculaStatement "subckt-name"
+
+syn match draculaType "\*description"
+syn match draculaType "\*input-layer"
+syn match draculaType "\*operation"
+syn match draculaType "\*end"
+
+syn match draculaComment ";.*"
+
+syn match draculaPreProc "^#.*"
+
+"Modify the following as needed. The trade-off is performance versus
+"functionality.
+syn sync lines=50
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link draculaIdentifier Identifier
+hi def link draculaStatement Statement
+hi def link draculaType Type
+hi def link draculaComment Comment
+hi def link draculaPreProc PreProc
+
+
+let b:current_syntax = "dracula"
+
+" vim: ts=8
diff --git a/runtime/syntax/dsl.vim b/runtime/syntax/dsl.vim
new file mode 100644
index 0000000..95c7843
--- /dev/null
+++ b/runtime/syntax/dsl.vim
@@ -0,0 +1,38 @@
+" Vim syntax file
+" Language: DSSSL
+" Maintainer: Johannes Zellner <johannes@zellner.org>
+" Last Change: Tue, 27 Apr 2004 14:54:59 CEST
+" Filenames: *.dsl
+" $Id: dsl.vim,v 1.1 2004/06/13 19:13:31 vimboss Exp $
+
+if exists("b:current_syntax") | finish | endif
+
+runtime syntax/xml.vim
+syn cluster xmlRegionHook add=dslRegion,dslComment
+syn cluster xmlCommentHook add=dslCond
+
+" EXAMPLE:
+" <![ %output.html; [
+" <!-- some comment -->
+" (define html-manifest #f)
+" ]]>
+"
+" NOTE: 'contains' the same as xmlRegion, except xmlTag / xmlEndTag
+syn region dslCond matchgroup=dslCondDelim start="\[\_[^[]\+\[" end="]]" contains=xmlCdata,@xmlRegionCluster,xmlComment,xmlEntity,xmlProcessing,@xmlRegionHook
+
+" NOTE, that dslRegion and dslComment do both NOT have a 'contained'
+" argument, so this will also work in plain dsssl documents.
+
+syn region dslRegion matchgroup=Delimiter start=+(+ end=+)+ contains=dslRegion,dslString,dslComment
+syn match dslString +"\_[^"]*"+ contained
+syn match dslComment +;.*$+ contains=dslTodo
+syn keyword dslTodo contained TODO FIXME XXX display
+
+" The default highlighting.
+hi def link dslTodo Todo
+hi def link dslString String
+hi def link dslComment Comment
+" compare the following with xmlCdataStart / xmlCdataEnd
+hi def link dslCondDelim Type
+
+let b:current_syntax = "dsl"
diff --git a/runtime/syntax/dtd.vim b/runtime/syntax/dtd.vim
new file mode 100644
index 0000000..58f07c9
--- /dev/null
+++ b/runtime/syntax/dtd.vim
@@ -0,0 +1,161 @@
+" Vim syntax file
+" Language: DTD (Document Type Definition for XML)
+" Maintainer: Christian Brabandt <cb@256bit.org>
+" Repository: https://github.com/chrisbra/vim-xml-ftplugin
+" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
+" Author: Daniel Amyot <damyot@site.uottawa.ca>
+" Last Changed: Sept 24, 2019
+" Filenames: *.dtd
+"
+" REFERENCES:
+" http://www.w3.org/TR/html40/
+" http://www.w3.org/TR/NOTE-html-970421
+"
+" TODO:
+" - improve synchronizing.
+
+if exists("b:current_syntax")
+ finish
+endif
+let s:dtd_cpo_save = &cpo
+set cpo&vim
+
+if !exists("dtd_ignore_case")
+ " I prefer having the case takes into consideration.
+ syn case match
+else
+ syn case ignore
+endif
+
+
+" the following line makes the opening <! and
+" closing > highlighted using 'dtdFunction'.
+"
+" PROVIDES: @dtdTagHook
+"
+syn region dtdTag matchgroup=dtdFunction
+ \ start=+<!+ end=+>+ matchgroup=NONE
+ \ contains=dtdTag,dtdTagName,dtdError,dtdComment,dtdString,dtdAttrType,dtdAttrDef,dtdEnum,dtdParamEntityInst,dtdParamEntityDecl,dtdCard,@dtdTagHook
+
+if !exists("dtd_no_tag_errors")
+ " mark everything as an error which starts with a <!
+ " and is not overridden later. If this is annoying,
+ " it can be switched off by setting the variable
+ " dtd_no_tag_errors.
+ syn region dtdError contained start=+<!+lc=2 end=+>+
+endif
+
+" if this is a html like comment highlight also
+" the opening <! and the closing > as Comment.
+syn region dtdComment start=+<![ \t]*--+ end=+-->+ contains=dtdTodo,@Spell
+
+
+" proper DTD comment
+syn region dtdComment contained start=+--+ end=+--+ contains=dtdTodo,@Spell
+
+
+" Start tags (keywords). This is contained in dtdFunction.
+" Note that everything not contained here will be marked
+" as error.
+syn match dtdTagName contained +<!\(ATTLIST\|DOCTYPE\|ELEMENT\|ENTITY\|NOTATION\|SHORTREF\|USEMAP\|\[\)+lc=2,hs=s+2
+
+
+" wildcards and operators
+syn match dtdCard contained "|"
+syn match dtdCard contained ","
+" evenutally overridden by dtdEntity
+syn match dtdCard contained "&"
+syn match dtdCard contained "?"
+syn match dtdCard contained "\*"
+syn match dtdCard contained "+"
+
+" ...and finally, special cases.
+syn match dtdCard "ANY"
+syn match dtdCard "EMPTY"
+
+if !exists("dtd_no_param_entities")
+
+ " highlight parameter entity declarations
+ " and instances. Note that the closing `;'
+ " is optional.
+
+ " instances
+ syn region dtdParamEntityInst oneline matchgroup=dtdParamEntityPunct
+ \ start="%[-_a-zA-Z0-9.]\+"he=s+1,rs=s+1
+ \ skip=+[-_a-zA-Z0-9.]+
+ \ end=";\|\>"
+ \ matchgroup=NONE contains=dtdParamEntityPunct
+ syn match dtdParamEntityPunct contained "\."
+
+ " declarations
+ " syn region dtdParamEntityDecl oneline matchgroup=dtdParamEntityDPunct start=+<!ENTITY % +lc=8 skip=+[-_a-zA-Z0-9.]+ matchgroup=NONE end="\>" contains=dtdParamEntityDPunct
+ syn match dtdParamEntityDecl +<!ENTITY % [-_a-zA-Z0-9.]*+lc=8 contains=dtdParamEntityDPunct
+ syn match dtdParamEntityDPunct contained "%\|\."
+
+endif
+
+" &entities; compare with xml
+syn match dtdEntity "&[^; \t]*;" contains=dtdEntityPunct
+syn match dtdEntityPunct contained "[&.;]"
+
+" Strings are between quotes
+syn region dtdString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=dtdAttrDef,dtdAttrType,dtdParamEntityInst,dtdEntity,dtdCard
+syn region dtdString start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=dtdAttrDef,dtdAttrType,dtdParamEntityInst,dtdEntity,dtdCard
+
+" Enumeration of elements or data between parenthesis
+"
+" PROVIDES: @dtdEnumHook
+"
+syn region dtdEnum matchgroup=dtdType start="(" end=")" matchgroup=NONE contains=dtdEnum,dtdParamEntityInst,dtdCard,@dtdEnumHook
+
+"Attribute types
+syn keyword dtdAttrType NMTOKEN ENTITIES NMTOKENS ID CDATA
+syn keyword dtdAttrType IDREF IDREFS
+" ENTITY has to treated special for not overriding <!ENTITY
+syn match dtdAttrType +[^!]\<ENTITY+
+
+"Attribute Definitions
+syn match dtdAttrDef "#REQUIRED"
+syn match dtdAttrDef "#IMPLIED"
+syn match dtdAttrDef "#FIXED"
+
+syn case match
+" define some common keywords to mark TODO
+" and important sections inside comments.
+syn keyword dtdTodo contained TODO FIXME XXX
+
+syn sync lines=250
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default highlighting.
+hi def link dtdFunction Function
+hi def link dtdTag Normal
+hi def link dtdType Type
+hi def link dtdAttrType dtdType
+hi def link dtdAttrDef dtdType
+hi def link dtdConstant Constant
+hi def link dtdString dtdConstant
+hi def link dtdEnum dtdConstant
+hi def link dtdCard dtdFunction
+
+hi def link dtdEntity Statement
+hi def link dtdEntityPunct dtdType
+hi def link dtdParamEntityInst dtdConstant
+hi def link dtdParamEntityPunct dtdType
+hi def link dtdParamEntityDecl dtdType
+hi def link dtdParamEntityDPunct dtdComment
+
+hi def link dtdComment Comment
+hi def link dtdTagName Statement
+hi def link dtdError Error
+hi def link dtdTodo Todo
+
+
+let &cpo = s:dtd_cpo_save
+unlet s:dtd_cpo_save
+
+let b:current_syntax = "dtd"
+
+" vim: ts=8
diff --git a/runtime/syntax/dtml.vim b/runtime/syntax/dtml.vim
new file mode 100644
index 0000000..cb09de8
--- /dev/null
+++ b/runtime/syntax/dtml.vim
@@ -0,0 +1,208 @@
+" DTML syntax file
+" Language: Zope's Dynamic Template Markup Language
+" Maintainer: Jean Jordaan <jean@upfrontsystems.co.za> (njj)
+" Last change: 2001 Sep 02
+
+" These are used with Claudio Fleiner's html.vim in the standard distribution.
+"
+" Still very hackish. The 'dtml attributes' and 'dtml methods' have been
+" hacked out of the Zope Quick Reference in case someone finds something
+" sensible to do with them. I certainly haven't.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" First load the HTML syntax
+runtime! syntax/html.vim
+
+syn case match
+
+" This doesn't have any effect. Does it need to be moved to above/
+" if !exists("main_syntax")
+" let main_syntax = 'dtml'
+" endif
+
+" dtml attributes
+syn keyword dtmlAttribute ac_inherited_permissions access_debug_info contained
+syn keyword dtmlAttribute acquiredRolesAreUsedBy all_meta_types assume_children AUTH_TYPE contained
+syn keyword dtmlAttribute AUTHENTICATED_USER AUTHENTICATION_PATH BASE0 batch-end-index batch-size contained
+syn keyword dtmlAttribute batch-start-index bobobase_modification_time boundary branches contained
+syn keyword dtmlAttribute branches_expr capitalize cb_dataItems cb_dataValid cb_isCopyable contained
+syn keyword dtmlAttribute cb_isMoveable changeClassId classDefinedAndInheritedPermissions contained
+syn keyword dtmlAttribute classDefinedPermissions classInheritedPermissions collapse-all column contained
+syn keyword dtmlAttribute connected connectionIsValid CONTENT_LENGTH CONTENT_TYPE cook cookies contained
+syn keyword dtmlAttribute COPY count- createInObjectManager da_has_single_argument dav__allprop contained
+syn keyword dtmlAttribute dav__init dav__propnames dav__propstat dav__validate default contained
+syn keyword dtmlAttribute delClassAttr DELETE Destination DestinationURL digits discard contained
+syn keyword dtmlAttribute disposition document_src e encode enter etc expand-all expr File contained
+syn keyword dtmlAttribute filtered_manage_options filtered_meta_types first- fmt footer form contained
+syn keyword dtmlAttribute GATEWAY_INTERFACE get_local_roles get_local_roles_for_userid contained
+syn keyword dtmlAttribute get_request_var_or_attr get_size get_size get_valid_userids getAttribute contained
+syn keyword dtmlAttribute getAttributeNode getAttributes getChildNodes getClassAttr getContentType contained
+syn keyword dtmlAttribute getData getDocType getDocumentElement getElementsByTagName getFirstChild contained
+syn keyword dtmlAttribute getImplementation getLastChild getLength getName getNextSibling contained
+syn keyword dtmlAttribute getNodeName getNodeType getNodeValue getOwnerDocument getParentNode contained
+syn keyword dtmlAttribute getPreviousSibling getProperty getPropertyType getSize getSize getSize contained
+syn keyword dtmlAttribute get_size getTagName getUser getUserName getUserNames getUsers contained
+syn keyword dtmlAttribute has_local_roles hasChildNodes hasProperty HEAD header hexdigits HTML contained
+syn keyword dtmlAttribute html_quote HTMLFile id index_html index_objects indexes contained
+syn keyword dtmlAttribute inheritedAttribute items last- leave leave_another leaves letters LOCK contained
+syn keyword dtmlAttribute locked_in_version lower lowercase mailfrom mailhost mailhost_list mailto contained
+syn keyword dtmlAttribute manage manage_ methods manage_access manage_acquiredPermissions contained
+syn keyword dtmlAttribute manage_addConferaTopic manage_addDocument manage_addDTMLDocument contained
+syn keyword dtmlAttribute manage_addDTMLMethod manage_addFile manage_addFolder manage_addImage contained
+syn keyword dtmlAttribute manage_addLocalRoles manage_addMailHost manage_addPermission contained
+syn keyword dtmlAttribute manage_addPrincipiaFactory manage_addProduct manage_addProperty contained
+syn keyword dtmlAttribute manage_addUserFolder manage_addZClass manage_addZGadflyConnection contained
+syn keyword dtmlAttribute manage_addZGadflyConnectionForm manage_advanced manage_afterAdd contained
+syn keyword dtmlAttribute manage_afterClone manage_beforeDelete manage_changePermissions contained
+syn keyword dtmlAttribute manage_changeProperties manage_clone manage_CopyContainerFirstItem contained
+syn keyword dtmlAttribute manage_copyObjects manage_cutObjects manage_defined_roles contained
+syn keyword dtmlAttribute manage_delLocalRoles manage_delObjects manage_delProperties contained
+syn keyword dtmlAttribute manage_distribute manage_edit manage_editedDialog manage_editProperties contained
+syn keyword dtmlAttribute manage_editRoles manage_exportObject manage_FTPget manage_FTPlist contained
+syn keyword dtmlAttribute manage_FTPstat manage_get_product_readme__ manage_getPermissionMapping contained
+syn keyword dtmlAttribute manage_haveProxy manage_help manage_importObject manage_listLocalRoles contained
+syn keyword dtmlAttribute manage_options manage_pasteObjects manage_permission contained
+syn keyword dtmlAttribute manage_propertiesForm manage_proxy manage_renameObject manage_role contained
+syn keyword dtmlAttribute manage_setLocalRoles manage_setPermissionMapping contained
+syn keyword dtmlAttribute manage_subclassableClassNames manage_test manage_testForm contained
+syn keyword dtmlAttribute manage_undo_transactions manage_upload manage_users manage_workspace contained
+syn keyword dtmlAttribute management_interface mapping math max- mean- median- meta_type min- contained
+syn keyword dtmlAttribute MKCOL modified_in_version MOVE multiple name navigate_filter new_version contained
+syn keyword dtmlAttribute newline_to_br next next-batches next-sequence next-sequence-end-index contained
+syn keyword dtmlAttribute next-sequence-size next-sequence-start-index no manage_access None contained
+syn keyword dtmlAttribute nonempty normalize nowrap null Object Manager objectIds objectItems contained
+syn keyword dtmlAttribute objectMap objectValues octdigits only optional OPTIONS orphan overlap contained
+syn keyword dtmlAttribute PARENTS PATH_INFO PATH_TRANSLATED permission_settings contained
+syn keyword dtmlAttribute permissionMappingPossibleValues permissionsOfRole pi port contained
+syn keyword dtmlAttribute possible_permissions previous previous-batches previous-sequence contained
+syn keyword dtmlAttribute previous-sequence-end-index previous-sequence-size contained
+syn keyword dtmlAttribute previous-sequence-start-index PrincipiaFind PrincipiaSearchSource contained
+syn keyword dtmlAttribute propdict propertyIds propertyItems propertyLabel propertyMap propertyMap contained
+syn keyword dtmlAttribute propertyValues PROPFIND PROPPATCH PUT query_day query_month QUERY_STRING contained
+syn keyword dtmlAttribute query_year quoted_input quoted_report raise_standardErrorMessage random contained
+syn keyword dtmlAttribute read read_raw REMOTE_ADDR REMOTE_HOST REMOTE_IDENT REMOTE_USER REQUEST contained
+syn keyword dtmlAttribute REQUESTED_METHOD required RESPONSE reverse rolesOfPermission save schema contained
+syn keyword dtmlAttribute SCRIPT_NAME sequence-end sequence-even sequence-index contained
+syn keyword dtmlAttribute sequence-index-var- sequence-item sequence-key sequence-Letter contained
+syn keyword dtmlAttribute sequence-letter sequence-number sequence-odd sequence-query contained
+syn keyword dtmlAttribute sequence-roman sequence-Roman sequence-start sequence-step-end-index contained
+syn keyword dtmlAttribute sequence-step-size sequence-step-start-index sequence-var- SERVER_NAME contained
+syn keyword dtmlAttribute SERVER_PORT SERVER_PROTOCOL SERVER_SOFTWARE setClassAttr setName single contained
+syn keyword dtmlAttribute size skip_unauthorized smtphost sort spacify sql_quote SQLConnectionIDs contained
+syn keyword dtmlAttribute standard-deviation- standard-deviation-n- standard_html_footer contained
+syn keyword dtmlAttribute standard_html_header start String string subject SubTemplate superValues contained
+syn keyword dtmlAttribute tabs_path_info tag test_url_ text_content this thousands_commas title contained
+syn keyword dtmlAttribute title_and_id title_or_id total- tpURL tpValues TRACE translate tree-c contained
+syn keyword dtmlAttribute tree-colspan tree-e tree-item-expanded tree-item-url tree-level contained
+syn keyword dtmlAttribute tree-root-url tree-s tree-state type undoable_transactions UNLOCK contained
+syn keyword dtmlAttribute update_data upper uppercase url url_quote URLn user_names contained
+syn keyword dtmlAttribute userdefined_roles valid_property_id valid_roles validate_roles contained
+syn keyword dtmlAttribute validClipData validRoles values variance- variance-n- view_image_or_file contained
+syn keyword dtmlAttribute where whitespace whrandom xml_namespace zclass_candidate_view_actions contained
+syn keyword dtmlAttribute ZClassBaseClassNames ziconImage ZopeFind ZQueryIds contained
+
+syn keyword dtmlMethod abs absolute_url ac_inherited_permissions aCommon contained
+syn keyword dtmlMethod aCommonZ acos acquiredRolesAreUsedBy aDay addPropertySheet aMonth AMPM contained
+syn keyword dtmlMethod ampm AMPMMinutes appendChild appendData appendHeader asin atan atan2 contained
+syn keyword dtmlMethod atof atoi betavariate capatilize capwords catalog_object ceil center contained
+syn keyword dtmlMethod choice chr cloneNode COPY cos cosh count createInObjectManager contained
+syn keyword dtmlMethod createSQLInput cunifvariate Date DateTime Day day dayOfYear dd default contained
+syn keyword dtmlMethod DELETE deleteData delPropertySheet divmod document_id document_title dow contained
+syn keyword dtmlMethod earliestTime enter equalTo exp expireCookie expovariate fabs fCommon contained
+syn keyword dtmlMethod fCommonZ filtered_manage_options filtered_meta_types find float floor contained
+syn keyword dtmlMethod fmod frexp gamma gauss get get_local_roles_for_userid get_size getattr contained
+syn keyword dtmlMethod getAttribute getAttributeNode getClassAttr getDomains contained
+syn keyword dtmlMethod getElementsByTagName getHeader getitem getNamedItem getobject contained
+syn keyword dtmlMethod getObjectsInfo getpath getProperty getRoles getStatus getUser contained
+syn keyword dtmlMethod getUserName greaterThan greaterThanEqualTo h_12 h_24 has_key contained
+syn keyword dtmlMethod has_permission has_role hasattr hasFeature hash hasProperty HEAD hex contained
+syn keyword dtmlMethod hour hypot index index_html inheritedAttribute insertBefore insertData contained
+syn keyword dtmlMethod int isCurrentDay isCurrentHour isCurrentMinute isCurrentMonth contained
+syn keyword dtmlMethod isCurrentYear isFuture isLeadYear isPast item join latestTime ldexp contained
+syn keyword dtmlMethod leave leave_another len lessThan lessThanEqualTo ljust log log10 contained
+syn keyword dtmlMethod lognormvariate lower lstrip maketrans manage manage_access contained
+syn keyword dtmlMethod manage_acquiredPermissions manage_addColumn manage_addDocument contained
+syn keyword dtmlMethod manage_addDTMLDocument manage_addDTMLMethod manage_addFile contained
+syn keyword dtmlMethod manage_addFolder manage_addImage manage_addIndex manage_addLocalRoles contained
+syn keyword dtmlMethod manage_addMailHost manage_addPermission manage_addPrincipiaFactory contained
+syn keyword dtmlMethod manage_addProduct manage_addProperty manage_addPropertySheet contained
+syn keyword dtmlMethod manage_addUserFolder manage_addZCatalog manage_addZClass contained
+syn keyword dtmlMethod manage_addZGadflyConnection manage_addZGadflyConnectionForm contained
+syn keyword dtmlMethod manage_advanced manage_catalogClear manage_catalogFoundItems contained
+syn keyword dtmlMethod manage_catalogObject manage_catalogReindex manage_changePermissions contained
+syn keyword dtmlMethod manage_changeProperties manage_clone manage_CopyContainerFirstItem contained
+syn keyword dtmlMethod manage_copyObjects manage_createEditor manage_createView contained
+syn keyword dtmlMethod manage_cutObjects manage_defined_roles manage_delColumns contained
+syn keyword dtmlMethod manage_delIndexes manage_delLocalRoles manage_delObjects contained
+syn keyword dtmlMethod manage_delProperties manage_Discard__draft__ manage_distribute contained
+syn keyword dtmlMethod manage_edit manage_edit manage_editedDialog manage_editProperties contained
+syn keyword dtmlMethod manage_editRoles manage_exportObject manage_importObject contained
+syn keyword dtmlMethod manage_makeChanges manage_pasteObjects manage_permission contained
+syn keyword dtmlMethod manage_propertiesForm manage_proxy manage_renameObject manage_role contained
+syn keyword dtmlMethod manage_Save__draft__ manage_setLocalRoles manage_setPermissionMapping contained
+syn keyword dtmlMethod manage_test manage_testForm manage_uncatalogObject contained
+syn keyword dtmlMethod manage_undo_transactions manage_upload manage_users manage_workspace contained
+syn keyword dtmlMethod mange_createWizard max min minute MKCOL mm modf month Month MOVE contained
+syn keyword dtmlMethod namespace new_version nextObject normalvariate notEqualTo objectIds contained
+syn keyword dtmlMethod objectItems objectValues oct OPTIONS ord paretovariate parts pCommon contained
+syn keyword dtmlMethod pCommonZ pDay permissionsOfRole pMonth pow PreciseAMPM PreciseTime contained
+syn keyword dtmlMethod previousObject propertyInfo propertyLabel PROPFIND PROPPATCH PUT quit contained
+syn keyword dtmlMethod raise_standardErrorMessage randint random read read_raw redirect contained
+syn keyword dtmlMethod removeAttribute removeAttributeNode removeChild replace replaceChild contained
+syn keyword dtmlMethod replaceData rfc822 rfind rindex rjust rolesOfPermission round rstrip contained
+syn keyword dtmlMethod save searchResults second seed set setAttribute setAttributeNode setBase contained
+syn keyword dtmlMethod setCookie setHeader setStatus sin sinh split splitText sqrt str strip contained
+syn keyword dtmlMethod substringData superValues swapcase tabs_path_info tan tanh Time contained
+syn keyword dtmlMethod TimeMinutes timeTime timezone title title_and_id title_or_id toXML contained
+syn keyword dtmlMethod toZone uncatalog_object undoable_transactions uniform uniqueValuesFor contained
+syn keyword dtmlMethod update_data upper valid_property_id validate_roles vonmisesvariate contained
+syn keyword dtmlMethod weibullvariate year yy zfill ZopeFind contained
+
+" DTML tags
+syn keyword dtmlTagName var if elif else unless in with let call raise try except tag comment tree sqlvar sqltest sqlgroup sendmail mime transparent contained
+
+syn keyword dtmlEndTagName if unless in with let raise try tree sendmail transparent contained
+
+" Own additions
+syn keyword dtmlTODO TODO FIXME contained
+
+syn region dtmlComment start=+<dtml-comment>+ end=+</dtml-comment>+ contains=dtmlTODO
+
+" All dtmlTagNames are contained by dtmlIsTag.
+syn match dtmlIsTag "dtml-[A-Za-z]\+" contains=dtmlTagName
+
+" 'var' tag entity syntax: &dtml-variableName;
+" - with attributes: &dtml.attribute1[.attribute2]...-variableName;
+syn match dtmlSpecialChar "&dtml[.0-9A-Za-z_]\{-}-[0-9A-Za-z_.]\+;"
+
+" Redefine to allow inclusion of DTML within HTML strings.
+syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,dtmlSpecialChar,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc
+syn region htmlLink start="<a\>[^>]*href\>" end="</a>"me=e-4 contains=@Spell,htmlTag,htmlEndTag,dtmlSpecialChar,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc
+syn region htmlHead start="<head\>" end="</head>"me=e-7 end="<body\>"me=e-5 end="<h[1-6]\>"me=e-3 contains=htmlTag,htmlEndTag,dtmlSpecialChar,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,htmlTitle,javaScript,cssStyle,@htmlPreproc
+syn region htmlTitle start="<title\>" end="</title>"me=e-8 contains=htmlTag,htmlEndTag,dtmlSpecialChar,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc
+syn region htmlString contained start=+"+ end=+"+ contains=dtmlSpecialChar,htmlSpecialChar,javaScriptExpression,dtmlIsTag,dtmlAttribute,dtmlMethod,@htmlPreproc
+syn match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,dtmlIsTag,dtmlAttribute,dtmlMethod,@htmlTagNameCluster
+syn match htmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,dtmlIsTag,dtmlAttribute,dtmlMethod,@htmlTagNameCluster
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link dtmlIsTag PreProc
+hi def link dtmlAttribute Identifier
+hi def link dtmlMethod Function
+hi def link dtmlComment Comment
+hi def link dtmlTODO Todo
+hi def link dtmlSpecialChar Special
+
+
+let b:current_syntax = "dtml"
+
+" if main_syntax == 'dtml'
+" unlet main_syntax
+" endif
+
+" vim: ts=4
diff --git a/runtime/syntax/dtrace.vim b/runtime/syntax/dtrace.vim
new file mode 100644
index 0000000..392fa1c
--- /dev/null
+++ b/runtime/syntax/dtrace.vim
@@ -0,0 +1,145 @@
+" DTrace D script syntax file. To avoid confusion with the D programming
+" language, I call this script dtrace.vim instead of d.vim.
+" Language: D script as described in "Solaris Dynamic Tracing Guide",
+" http://docs.sun.com/app/docs/doc/817-6223
+" Version: 1.5
+" Last Change: 2008/04/05
+" Maintainer: Nicolas Weber <nicolasweber@gmx.de>
+
+" dtrace lexer and parser are at
+" http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/libdtrace/common/dt_lex.l
+" http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/libdtrace/common/dt_grammar.y
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the C syntax to start with
+runtime! syntax/c.vim
+unlet b:current_syntax
+
+syn clear cCommentL " dtrace doesn't support // style comments
+
+" First line may start with #!, also make sure a '-s' flag is somewhere in
+" that line.
+syn match dtraceComment "\%^#!.*-s.*"
+
+" Probe descriptors need explicit matches, so that keywords in probe
+" descriptors don't show up as errors. Note that this regex detects probes
+" as "something with three ':' in it". This works in practice, but it's not
+" really correct. Also add special case code for BEGIN, END and ERROR, since
+" they are common.
+" Be careful not to detect '/*some:::node*/\n/**/' as probe, as it's
+" commented out.
+" XXX: This allows a probe description to end with ',', even if it's not
+" followed by another probe.
+" XXX: This doesn't work if followed by a comment.
+let s:oneProbe = '\%(BEGIN\|END\|ERROR\|\S\{-}:\S\{-}:\S\{-}:\S\{-}\)\_s*'
+exec 'syn match dtraceProbe "'.s:oneProbe.'\%(,\_s*'.s:oneProbe.'\)*\ze\_s\%({\|\/[^*]\|\%$\)"'
+
+" Note: We have to be careful to not make this match /* */ comments.
+" Also be careful not to eat `c = a / b; b = a / 2;`. We use the same
+" technique as the dtrace lexer: a predicate has to be followed by {, ;, or
+" EOF. Also note that dtrace doesn't allow an empty predicate // (we do).
+" This regex doesn't allow a divison operator in the predicate.
+" Make sure that this matches the empty predicate as well.
+" XXX: This doesn't work if followed by a comment.
+syn match dtracePredicate "/\*\@!\_[^/]*/\ze\_s*\%({\|;\|\%$\)"
+ "contains=ALLBUT,dtraceOption " this lets the region contain too much stuff
+
+" Pragmas.
+" dtrace seems not to support whitespace before or after the '='. dtrace
+" supports only one option per #pragma, and no continuations of #pragma over
+" several lines with '\'.
+" Note that dtrace treats units (Hz etc) as case-insenstive, we allow only
+" sane unit capitalization in this script (ie 'ns', 'us', 'ms', 's' have to be
+" small, Hertz can be 'Hz' or 'hz')
+" XXX: "cpu" is always highlighted as builtin var, not as option
+
+" auto or manual: bufresize
+syn match dtraceOption contained "bufresize=\%(auto\|manual\)\s*$"
+
+" scalar: cpu jstackframes jstackstrsize nspec stackframes stackindent ustackframes
+syn match dtraceOption contained "\%(cpu\|jstackframes\|jstackstrsize\|nspec\|stackframes\|stackindent\|ustackframes\)=\d\+\s*$"
+
+" size: aggsize bufsize dynvarsize specsize strsize
+" size defaults to something if no unit is given (ie., having no unit is ok)
+syn match dtraceOption contained "\%(aggsize\|bufsize\|dynvarsize\|specsize\|strsize\)=\d\+\%(k\|m\|g\|t\|K\|M\|G\|T\)\=\s*$"
+
+" time: aggrate cleanrate statusrate switchrate
+" time defaults to hz if no unit is given
+syn match dtraceOption contained "\%(aggrate\|cleanrate\|statusrate\|switchrate\)=\d\+\%(hz\|Hz\|ns\|us\|ms\|s\)\=\s*$"
+
+" No type: defaultargs destructive flowindent grabanon quiet rawbytes
+syn match dtraceOption contained "\%(defaultargs\|destructive\|flowindent\|grabanon\|quiet\|rawbytes\)\s*$"
+
+
+" Turn reserved but unspecified keywords into errors
+syn keyword dtraceReservedKeyword auto break case continue counter default do
+syn keyword dtraceReservedKeyword else for goto if import probe provider
+syn keyword dtraceReservedKeyword register restrict return static switch while
+
+" Add dtrace-specific stuff
+syn keyword dtraceOperator sizeof offsetof stringof xlate
+syn keyword dtraceStatement self inline xlate this translator
+
+" Builtin variables
+syn keyword dtraceIdentifier arg0 arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9
+syn keyword dtraceIdentifier args caller chip cpu curcpu curlwpsinfo curpsinfo
+syn keyword dtraceIdentifier curthread cwd epid errno execname gid id ipl lgrp
+syn keyword dtraceIdentifier pid ppid probefunc probemod probename probeprov
+syn keyword dtraceIdentifier pset root stackdepth tid timestamp uid uregs
+syn keyword dtraceIdentifier vtimestamp walltimestamp
+syn keyword dtraceIdentifier ustackdepth
+
+" Macro Variables
+syn match dtraceConstant "$[0-9]\+"
+syn match dtraceConstant "$\(egid\|euid\|gid\|pgid\|ppid\)"
+syn match dtraceConstant "$\(projid\|sid\|target\|taskid\|uid\)"
+
+" Data Recording Actions
+syn keyword dtraceFunction trace tracemem printf printa stack ustack jstack
+
+" Process Destructive Actions
+syn keyword dtraceFunction stop raise copyout copyoutstr system
+
+" Kernel Destructive Actions
+syn keyword dtraceFunction breakpoint panic chill
+
+" Special Actions
+syn keyword dtraceFunction speculate commit discard exit
+
+" Subroutines
+syn keyword dtraceFunction alloca basename bcopy cleanpath copyin copyinstr
+syn keyword dtraceFunction copyinto dirname msgdsize msgsize mutex_owned
+syn keyword dtraceFunction mutex_owner mutex_type_adaptive progenyof
+syn keyword dtraceFunction rand rw_iswriter rw_write_held speculation
+syn keyword dtraceFunction strjoin strlen
+
+" Aggregating Functions
+syn keyword dtraceAggregatingFunction count sum avg min max lquantize quantize
+
+syn keyword dtraceType int8_t int16_t int32_t int64_t intptr_t
+syn keyword dtraceType uint8_t uint16_t uint32_t uint64_t uintptr_t
+syn keyword dtraceType string
+syn keyword dtraceType pid_t id_t
+
+
+" Define the default highlighting.
+" We use `hi def link` directly, this requires 5.8.
+hi def link dtraceReservedKeyword Error
+hi def link dtracePredicate String
+hi def link dtraceProbe dtraceStatement
+hi def link dtraceStatement Statement
+hi def link dtraceConstant Constant
+hi def link dtraceIdentifier Identifier
+hi def link dtraceAggregatingFunction dtraceFunction
+hi def link dtraceFunction Function
+hi def link dtraceType Type
+hi def link dtraceOperator Operator
+hi def link dtraceComment Comment
+hi def link dtraceNumber Number
+hi def link dtraceOption Identifier
+
+let b:current_syntax = "dtrace"
diff --git a/runtime/syntax/dts.vim b/runtime/syntax/dts.vim
new file mode 100644
index 0000000..be51ab5
--- /dev/null
+++ b/runtime/syntax/dts.vim
@@ -0,0 +1,79 @@
+" Vim syntax file
+" Language: dts/dtsi (device tree files)
+" Maintainer: Daniel Mack <vim@zonque.org>
+" Last Change: 2022 Jun 14
+
+if exists("b:current_syntax")
+ finish
+endif
+let b:current_syntax = 'dts'
+
+syntax region dtsComment start="/\*" end="\*/"
+syntax match dtsReference "&[[:alpha:][:digit:]_]\+"
+syntax region dtsBinaryProperty start="\[" end="\]"
+syntax match dtsStringProperty "\".*\""
+syntax match dtsKeyword "/.\{-1,\}/"
+syntax match dtsLabel "^[[:space:]]*[[:alpha:][:digit:]_]\+:"
+syntax match dtsNode /[[:alpha:][:digit:]-_]\+\(@[0-9a-fA-F]\+\|\)[[:space:]]*{/he=e-1
+syntax region dtsCellProperty start="<" end=">" contains=dtsReference,dtsBinaryProperty,dtsStringProperty,dtsComment
+syntax region dtsCommentInner start="/\*" end="\*/"
+syntax match dtsCommentLine "//.*$"
+
+" Accept %: for # (C99)
+syn region cPreCondit start="^\s*\zs\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" keepend contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
+syn match cPreConditMatch display "^\s*\zs\(%:\|#\)\s*\(else\|endif\)\>"
+if !exists("c_no_if0")
+ syn cluster cCppOutInGroup contains=cCppInIf,cCppInElse,cCppInElse2,cCppOutIf,cCppOutIf2,cCppOutElse,cCppInSkip,cCppOutSkip
+ syn region cCppOutWrapper start="^\s*\zs\(%:\|#\)\s*if\s\+0\+\s*\($\|//\|/\*\|&\)" end=".\@=\|$" contains=cCppOutIf,cCppOutElse,@NoSpell fold
+ syn region cCppOutIf contained start="0\+" matchgroup=cCppOutWrapper end="^\s*\(%:\|#\)\s*endif\>" contains=cCppOutIf2,cCppOutElse
+ if !exists("c_no_if0_fold")
+ syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell fold
+ else
+ syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell
+ endif
+ syn region cCppOutElse contained matchgroup=cCppOutWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=TOP,cPreCondit
+ syn region cCppInWrapper start="^\s*\zs\(%:\|#\)\s*if\s\+0*[1-9]\d*\s*\($\|//\|/\*\||\)" end=".\@=\|$" contains=cCppInIf,cCppInElse fold
+ syn region cCppInIf contained matchgroup=cCppInWrapper start="\d\+" end="^\s*\(%:\|#\)\s*endif\>" contains=TOP,cPreCondit
+ if !exists("c_no_if0_fold")
+ syn region cCppInElse contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 fold
+ else
+ syn region cCppInElse contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2
+ endif
+ syn region cCppInElse2 contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)\([^/]\|/[^/*]\)*" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell
+ syn region cCppOutSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppOutSkip
+ syn region cCppInSkip contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(if\s\+\(\d\+\s*\($\|//\|/\*\||\|&\)\)\@!\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" containedin=cCppOutElse,cCppInIf,cCppInSkip contains=TOP,cPreProc
+endif
+syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match cIncluded display contained "<[^>]*>"
+syn match cInclude display "^\s*\zs\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded
+"syn match cLineSkip "\\$"
+syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti,cBadBlock
+syn region cDefine start="^\s*\zs\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
+syn region cPreProc start="^\s*\zs\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
+
+hi def link dtsCellProperty Number
+hi def link dtsBinaryProperty Number
+hi def link dtsStringProperty String
+hi def link dtsKeyword Include
+hi def link dtsLabel Label
+hi def link dtsNode Structure
+hi def link dtsReference Macro
+hi def link dtsComment Comment
+hi def link dtsCommentInner Comment
+hi def link dtsCommentLine Comment
+
+hi def link cInclude Include
+hi def link cPreProc PreProc
+hi def link cDefine Macro
+hi def link cIncluded cString
+hi def link cString String
+
+hi def link cCppInWrapper cCppOutWrapper
+hi def link cCppOutWrapper cPreCondit
+hi def link cPreConditMatch cPreCondit
+hi def link cPreCondit PreCondit
+hi def link cCppOutSkip cCppOutIf2
+
+hi def link cCppInElse2 cCppOutIf2
+hi def link cCppOutIf2 cCppOut
+hi def link cCppOut Comment
diff --git a/runtime/syntax/dune.vim b/runtime/syntax/dune.vim
new file mode 100644
index 0000000..b425405
--- /dev/null
+++ b/runtime/syntax/dune.vim
@@ -0,0 +1,47 @@
+" Vim syntax file
+" Language: Dune buildsystem
+" Maintainer: Markus Mottl <markus.mottl@gmail.com>
+" Anton Kochkov <anton.kochkov@gmail.com>
+" URL: https://github.com/ocaml/vim-ocaml
+" Last Change:
+" 2019 Feb 27 - Add newer keywords to the syntax (Simon Cruanes)
+" 2018 May 8 - Check current_syntax (Kawahara Satoru)
+" 2018 Mar 29 - Extend jbuild syntax with more keywords (Petter A. Urkedal)
+" 2017 Sep 6 - Initial version (Etienne Millon)
+
+if exists("b:current_syntax")
+ finish
+endif
+
+set syntax=lisp
+syn case match
+
+" The syn-iskeyword setting lacks #,? from the iskeyword setting here.
+" Clearing it avoids maintaining keyword characters in multiple places.
+syn iskeyword clear
+
+syn keyword lispDecl jbuild_version library executable executables rule ocamllex ocamlyacc menhir alias install
+
+syn keyword lispKey name public_name synopsis modules libraries wrapped
+syn keyword lispKey preprocess preprocessor_deps optional c_names cxx_names
+syn keyword lispKey install_c_headers modes no_dynlink self_build_stubs_archive
+syn keyword lispKey ppx_runtime_libraries virtual_deps js_of_ocaml link_flags
+syn keyword lispKey javascript_files flags ocamlc_flags ocamlopt_flags pps staged_pps
+syn keyword lispKey library_flags c_flags c_library_flags kind package action
+syn keyword lispKey deps targets locks fallback
+syn keyword lispKey inline_tests tests test names
+
+syn keyword lispAtom true false
+
+syn keyword lispFunc cat chdir copy# diff? echo run setenv
+syn keyword lispFunc ignore-stdout ignore-stderr ignore-outputs
+syn keyword lispFunc with-stdout-to with-stderr-to with-outputs-to
+syn keyword lispFunc write-file system bash
+
+syn cluster lispBaseListCluster add=duneVar
+syn match duneVar '\${[@<^]}' containedin=lispSymbol
+syn match duneVar '\${\k\+\(:\k\+\)\?}' containedin=lispSymbol
+
+hi def link duneVar Identifier
+
+let b:current_syntax = "dune"
diff --git a/runtime/syntax/dylan.vim b/runtime/syntax/dylan.vim
new file mode 100644
index 0000000..345e932
--- /dev/null
+++ b/runtime/syntax/dylan.vim
@@ -0,0 +1,92 @@
+" Vim syntax file
+" Language: Dylan
+" Authors: Justus Pendleton <justus@acm.org>
+" Brent A. Fulgham <bfulgham@debian.org>
+" Last Change: Fri Sep 29 13:45:55 PDT 2000
+"
+" This syntax file is based on the Haskell, Perl, Scheme, and C
+" syntax files.
+
+" Part 1: Syntax definition
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+setlocal lisp
+
+" Highlight special characters (those that have backslashes) differently
+syn match dylanSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
+
+" Keywords
+syn keyword dylanBlock afterwards begin block cleanup end
+syn keyword dylanClassMods abstract concrete primary inherited virtual
+syn keyword dylanException exception handler signal
+syn keyword dylanParamDefs method class function library macro interface
+syn keyword dylanSimpleDefs constant variable generic primary
+syn keyword dylanOther above below from by in instance local slot subclass then to
+syn keyword dylanConditional if when select case else elseif unless finally otherwise then
+syn keyword dylanRepeat begin for until while from to
+syn keyword dylanStatement define let
+syn keyword dylanImport use import export exclude rename create
+syn keyword dylanMiscMods open sealed domain singleton sideways inline functional
+
+" Matching rules for special forms
+syn match dylanOperator "\s[-!%&\*\+/=\?@\\^|~:]\+[-#!>%&:\*\+/=\?@\\^|~]*"
+syn match dylanOperator "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=:[-!#$%&\*\+./=\?@\\^|~:]*"
+" Numbers
+syn match dylanNumber "\<[0-9]\+\>\|\<0[xX][0-9a-fA-F]\+\>\|\<0[oO][0-7]\+\>"
+syn match dylanNumber "\<[0-9]\+\.[0-9]\+\([eE][-+]\=[0-9]\+\)\=\>"
+" Booleans
+syn match dylanBoolean "#t\|#f"
+" Comments
+syn match dylanComment "//.*"
+syn region dylanComment start="/\*" end="\*/"
+" Strings
+syn region dylanString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=dySpecial
+syn match dylanCharacter "'[^\\]'"
+" Constants, classes, and variables
+syn match dylanConstant "$\<[a-zA-Z0-9\-]\+\>"
+syn match dylanClass "<\<[a-zA-Z0-9\-]\+\>>"
+syn match dylanVariable "\*\<[a-zA-Z0-9\-]\+\>\*"
+" Preconditions
+syn region dylanPrecondit start="^\s*#\s*\(if\>\|else\>\|endif\>\)" skip="\\$" end="$"
+
+" These appear at the top of files (usually). I like to highlight the whole line
+" so that the definition stands out. They should probably really be keywords, but they
+" don't generally appear in the middle of a line of code.
+syn region dylanHeader start="^[Mm]odule:" end="^$"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link dylanBlock PreProc
+hi def link dylanBoolean Boolean
+hi def link dylanCharacter Character
+hi def link dylanClass Structure
+hi def link dylanClassMods StorageClass
+hi def link dylanComment Comment
+hi def link dylanConditional Conditional
+hi def link dylanConstant Constant
+hi def link dylanException Exception
+hi def link dylanHeader Macro
+hi def link dylanImport Include
+hi def link dylanLabel Label
+hi def link dylanMiscMods StorageClass
+hi def link dylanNumber Number
+hi def link dylanOther Keyword
+hi def link dylanOperator Operator
+hi def link dylanParamDefs Keyword
+hi def link dylanPrecondit PreCondit
+hi def link dylanRepeat Repeat
+hi def link dylanSimpleDefs Keyword
+hi def link dylanStatement Macro
+hi def link dylanString String
+hi def link dylanVariable Identifier
+
+
+let b:current_syntax = "dylan"
+
+" vim:ts=8
diff --git a/runtime/syntax/dylanintr.vim b/runtime/syntax/dylanintr.vim
new file mode 100644
index 0000000..692db34
--- /dev/null
+++ b/runtime/syntax/dylanintr.vim
@@ -0,0 +1,39 @@
+" Vim syntax file
+" Language: Dylan
+" Authors: Justus Pendleton <justus@acm.org>
+" Last Change: Fri Sep 29 13:53:27 PDT 2000
+"
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+syn region dylanintrInfo matchgroup=Statement start="^" end=":" oneline
+syn match dylanintrInterface "define interface"
+syn match dylanintrClass "<.*>"
+syn region dylanintrType start=+"+ skip=+\\\\\|\\"+ end=+"+
+
+syn region dylanintrIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match dylanintrIncluded contained "<[^>]*>"
+syn match dylanintrInclude "^\s*#\s*include\>\s*["<]" contains=intrIncluded
+
+"syn keyword intrMods pointer struct
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link dylanintrInfo Special
+hi def link dylanintrInterface Operator
+hi def link dylanintrMods Type
+hi def link dylanintrClass StorageClass
+hi def link dylanintrType Type
+hi def link dylanintrIncluded String
+hi def link dylanintrInclude Include
+
+
+let b:current_syntax = "dylanintr"
+
+" vim:ts=8
diff --git a/runtime/syntax/dylanlid.vim b/runtime/syntax/dylanlid.vim
new file mode 100644
index 0000000..dae0bf9
--- /dev/null
+++ b/runtime/syntax/dylanlid.vim
@@ -0,0 +1,29 @@
+" Vim syntax file
+" Language: Dylan Library Interface Files
+" Authors: Justus Pendleton <justus@acm.org>
+" Brent Fulgham <bfulgham@debian.org>
+" Last Change: Fri Sep 29 13:50:20 PDT 2000
+"
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+syn region dylanlidInfo matchgroup=Statement start="^" end=":" oneline
+syn region dylanlidEntry matchgroup=Statement start=":%" end="$" oneline
+
+syn sync lines=50
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link dylanlidInfo Type
+hi def link dylanlidEntry String
+
+
+let b:current_syntax = "dylanlid"
+
+" vim:ts=8
diff --git a/runtime/syntax/ecd.vim b/runtime/syntax/ecd.vim
new file mode 100644
index 0000000..1276f2b
--- /dev/null
+++ b/runtime/syntax/ecd.vim
@@ -0,0 +1,44 @@
+" Vim syntax file
+" Language: ecd (Embedix Component Description) files
+" Maintainer: John Beppu <beppu@opensource.lineo.com>
+" URL: http://opensource.lineo.com/~beppu/prose/ecd_vim.html
+" Last Change: 2001 Sep 27
+
+" An ECD file contains meta-data for packages in the Embedix Linux distro.
+" This syntax file was derived from apachestyle.vim
+" by Christian Hammers <ch@westend.com>
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" specials
+syn match ecdComment "^\s*#.*"
+
+" options and values
+syn match ecdAttr "^\s*[a-zA-Z]\S*\s*[=].*$" contains=ecdAttrN,ecdAttrV
+syn match ecdAttrN contained "^.*="me=e-1
+syn match ecdAttrV contained "=.*$"ms=s+1
+
+" tags
+syn region ecdTag start=+<+ end=+>+ contains=ecdTagN,ecdTagError
+syn match ecdTagN contained +<[/\s]*[-a-zA-Z0-9_]\++ms=s+1
+syn match ecdTagError contained "[^>]<"ms=s+1
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link ecdComment Comment
+hi def link ecdAttr Type
+hi def link ecdAttrN Statement
+hi def link ecdAttrV Value
+hi def link ecdTag Function
+hi def link ecdTagN Statement
+hi def link ecdTagError Error
+
+
+let b:current_syntax = "ecd"
+" vim: ts=8
diff --git a/runtime/syntax/edif.vim b/runtime/syntax/edif.vim
new file mode 100644
index 0000000..002c9f8
--- /dev/null
+++ b/runtime/syntax/edif.vim
@@ -0,0 +1,45 @@
+" Vim syntax file
+" Language: EDIF (Electronic Design Interchange Format)
+" Maintainer: Artem Zankovich <z_artem@hotbox.ru>
+" Last Change: Oct 14, 2002
+"
+" Supported standarts are:
+" ANSI/EIA Standard 548-1988 (EDIF Version 2 0 0)
+" IEC 61690-1 (EDIF Version 3 0 0)
+" IEC 61690-2 (EDIF Version 4 0 0)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=48-57,-,+,A-Z,a-z,_,&
+
+syn region edifList matchgroup=Delimiter start="(" end=")" contains=edifList,edifKeyword,edifString,edifNumber
+
+" Strings
+syn match edifInStringError /%/ contained
+syn match edifInString /%\s*\d\+\s*%/ contained
+syn region edifString start=/"/ end=/"/ contains=edifInString,edifInStringError contained
+
+" Numbers
+syn match edifNumber "\<[-+]\=[0-9]\+\>"
+
+" Keywords
+syn match edifKeyword "(\@<=\s*[a-zA-Z&][a-zA-Z_0-9]*\>" contained
+
+syn match edifError ")"
+
+" synchronization
+syntax sync fromstart
+
+" Define the default highlighting.
+
+hi def link edifInString SpecialChar
+hi def link edifKeyword Keyword
+hi def link edifNumber Number
+hi def link edifInStringError edifError
+hi def link edifError Error
+hi def link edifString String
+
+let b:current_syntax = "edif"
diff --git a/runtime/syntax/editorconfig.vim b/runtime/syntax/editorconfig.vim
new file mode 100644
index 0000000..6740624
--- /dev/null
+++ b/runtime/syntax/editorconfig.vim
@@ -0,0 +1,21 @@
+" Vim syntax file
+" Language: EditorConfig
+" Maintainer: Gregory Anders <greg@gpanders.com>
+" Last Change: 2023-01-03
+
+if exists('b:current_syntax')
+ finish
+endif
+
+runtime! syntax/dosini.vim
+unlet! b:current_syntax
+
+syntax match editorconfigUnknownProperty "^\s*\zs\w\+\ze\s*="
+
+syntax keyword editorconfigProperty root charset end_of_line indent_style
+syntax keyword editorconfigProperty indent_size tab_width max_line_length
+syntax keyword editorconfigProperty trim_trailing_whitespace insert_final_newline
+
+hi def link editorconfigProperty dosiniLabel
+
+let b:current_syntax = 'editorconfig'
diff --git a/runtime/syntax/eiffel.vim b/runtime/syntax/eiffel.vim
new file mode 100644
index 0000000..c663487
--- /dev/null
+++ b/runtime/syntax/eiffel.vim
@@ -0,0 +1,199 @@
+" Eiffel syntax file
+" Language: Eiffel
+" Maintainer: Jocelyn Fiat <jfiat@eiffel.com>
+" Previous maintainer: Reimer Behrends <behrends@cse.msu.edu>
+" Contributions from: Thilo Six
+"
+" URL: https://github.com/eiffelhub/vim-eiffel
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:keepcpo= &cpo
+set cpo&vim
+
+" Option handling
+
+if exists("eiffel_ignore_case")
+ syn case ignore
+else
+ syn case match
+ if exists("eiffel_pedantic") || exists("eiffel_strict")
+ syn keyword eiffelError current void result precursor none
+ syn keyword eiffelError CURRENT VOID RESULT PRECURSOR None
+ syn keyword eiffelError TRUE FALSE
+ endif
+ if exists("eiffel_pedantic")
+ syn keyword eiffelError true false
+ syn match eiffelError "\<[a-z_]\+[A-Z][a-zA_Z_]*\>"
+ syn match eiffelError "\<[A-Z][a-z_]*[A-Z][a-zA-Z_]*\>"
+ endif
+ if exists("eiffel_lower_case_predef")
+ syn keyword eiffelPredefined current void result precursor
+ endif
+endif
+
+if exists("eiffel_hex_constants")
+ syn match eiffelNumber "\d[0-9a-fA-F]*[xX]"
+endif
+
+" Keyword definitions
+
+syn keyword eiffelTopStruct note indexing feature creation inherit
+syn match eiffelTopStruct "\<class\>"
+syn match eiffelKeyword "\<end\>"
+syn match eiffelTopStruct "^end\>\(\s*--\s\+class\s\+\<[A-Z][A-Z0-9_]*\>\)\=" contains=eiffelClassName
+syn match eiffelBrackets "[[\]]"
+syn match eiffelBracketError "\]"
+syn region eiffelGeneric transparent matchgroup=eiffelBrackets start="\[" end="\]" contains=ALLBUT,eiffelBracketError,eiffelGenericDecl,eiffelStringError,eiffelStringEscape,eiffelGenericCreate,eiffelTopStruct
+if exists("eiffel_ise")
+ syn match eiffelAgent "\<agent\>"
+ syn match eiffelConvert "\<convert\>"
+ syn match eiffelCreate "\<create\>"
+ syn match eiffelTopStruct contained "\<create\>"
+ syn match eiffelTopStruct contained "\<convert\>"
+ syn match eiffelGenericCreate contained "\<create\>"
+ syn match eiffelTopStruct "^create\>"
+ syn region eiffelGenericDecl transparent matchgroup=eiffelBrackets contained start="\[" end="\]" contains=ALLBUT,eiffelCreate,eiffelTopStruct,eiffelGeneric,eiffelBracketError,eiffelStringEscape,eiffelStringError,eiffelBrackets
+ syn region eiffelClassHeader start="^class\>" end="$" contains=ALLBUT,eiffelCreate,eiffelGenericCreate,eiffelGeneric,eiffelStringEscape,eiffelStringError,eiffelBrackets
+endif
+syn keyword eiffelDeclaration is do once deferred unique local attribute assign
+syn keyword eiffelDeclaration attached detachable Unique
+syn keyword eiffelProperty expanded obsolete separate frozen
+syn keyword eiffelProperty prefix infix
+syn keyword eiffelInheritClause rename redefine undefine select export as
+syn keyword eiffelAll all
+syn keyword eiffelKeyword external alias some
+syn keyword eiffelStatement if else elseif inspect
+syn keyword eiffelStatement when then
+syn match eiffelAssertion "\<require\(\s\+else\)\=\>"
+syn match eiffelAssertion "\<ensure\(\s\+then\)\=\>"
+syn keyword eiffelAssertion check
+syn keyword eiffelDebug debug
+syn keyword eiffelStatement across from until loop
+syn keyword eiffelAssertion variant
+syn match eiffelAssertion "\<invariant\>"
+syn match eiffelTopStruct "^invariant\>"
+syn keyword eiffelException rescue retry
+
+syn keyword eiffelPredefined Current Void Result Precursor
+
+" Operators
+syn match eiffelOperator "\<and\(\s\+then\)\=\>"
+syn match eiffelOperator "\<or\(\s\+else\)\=\>"
+syn keyword eiffelOperator xor implies not
+syn keyword eiffelOperator strip old
+syn keyword eiffelOperator Strip
+syn match eiffelOperator "\$"
+syn match eiffelCreation "!"
+syn match eiffelExport "[{}]"
+syn match eiffelArray "<<"
+syn match eiffelArray ">>"
+syn match eiffelConstraint "->"
+syn match eiffelOperator "[@#|&][^ \e\t\b%]*"
+
+" Special classes
+syn keyword eiffelAnchored like
+syn keyword eiffelBitType BIT
+
+" Constants
+if !exists("eiffel_pedantic")
+ syn keyword eiffelBool true false
+endif
+syn keyword eiffelBool True False
+syn region eiffelString start=+"+ skip=+%"+ end=+"+ contains=eiffelStringEscape,eiffelStringError
+syn match eiffelStringEscape contained "%[^/]"
+syn match eiffelStringEscape contained "%/\d\+/"
+syn match eiffelStringEscape contained "^[ \t]*%"
+syn match eiffelStringEscape contained "%[ \t]*$"
+syn match eiffelStringError contained "%/[^0-9]"
+syn match eiffelStringError contained "%/\d\+[^0-9/]"
+syn match eiffelBadConstant "'\(%[^/]\|%/\d\+/\|[^'%]\)\+'"
+syn match eiffelBadConstant "''"
+syn match eiffelCharacter "'\(%[^/]\|%/\d\+/\|[^'%]\)'" contains=eiffelStringEscape
+syn match eiffelNumber "-\=\<\d\+\(_\d\+\)*\>"
+syn match eiffelNumber "\<[01]\+[bB]\>"
+syn match eiffelNumber "-\=\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\)\=\([eE][-+]\=\d\+\(_\d\+\)*\)\="
+syn match eiffelNumber "-\=\.\d\+\(_\d\+\)*\([eE][-+]\=\d\+\(_\d\+\)*\)\="
+syn match eiffelComment "--.*" contains=eiffelTodo
+
+syn case match
+
+" Case sensitive stuff
+
+syn keyword eiffelTodo contained TODO XXX FIXME
+syn match eiffelClassName "\<[A-Z][A-Z0-9_]*\>"
+
+" Catch mismatched parentheses
+syn match eiffelParenError ")"
+syn region eiffelParen transparent start="(" end=")" contains=ALLBUT,eiffelParenError,eiffelStringError,eiffelStringEscape
+
+if exists("eiffel_fold")
+" setlocal foldmethod=indent
+" syn sync fromstart
+endif
+
+" Should suffice for even very long strings and expressions
+syn sync lines=40
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link eiffelKeyword Statement
+hi def link eiffelProperty Statement
+hi def link eiffelInheritClause Statement
+hi def link eiffelStatement Statement
+hi def link eiffelDeclaration Statement
+hi def link eiffelAssertion Statement
+hi def link eiffelDebug Statement
+hi def link eiffelException Statement
+hi def link eiffelGenericCreate Statement
+
+hi def link eiffelAgent Statement
+hi def link eiffelConvert Statement
+
+hi def link eiffelTopStruct PreProc
+
+hi def link eiffelAll Special
+hi def link eiffelAnchored Special
+hi def link eiffelBitType Special
+
+
+hi def link eiffelBool Boolean
+hi def link eiffelString String
+hi def link eiffelCharacter Character
+hi def link eiffelClassName Type
+hi def link eiffelNumber Number
+
+hi def link eiffelStringEscape Special
+
+hi def link eiffelOperator Special
+hi def link eiffelArray Special
+hi def link eiffelExport Special
+hi def link eiffelCreation Special
+hi def link eiffelBrackets Special
+hi def link eiffelGeneric Special
+hi def link eiffelGenericDecl Special
+hi def link eiffelConstraint Special
+hi def link eiffelCreate Special
+
+hi def link eiffelPredefined Constant
+
+hi def link eiffelComment Comment
+
+hi def link eiffelError Error
+hi def link eiffelBadConstant Error
+hi def link eiffelStringError Error
+hi def link eiffelParenError Error
+hi def link eiffelBracketError Error
+
+hi def link eiffelTodo Todo
+
+
+let b:current_syntax = "eiffel"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim: ts=8
diff --git a/runtime/syntax/elf.vim b/runtime/syntax/elf.vim
new file mode 100644
index 0000000..c8e5a61
--- /dev/null
+++ b/runtime/syntax/elf.vim
@@ -0,0 +1,82 @@
+" Vim syntax file
+" Language: ELF
+" Maintainer: Christian V. J. Brüssow <cvjb@cvjb.de>
+" Last Change: Son 22 Jun 2003 20:43:14 CEST
+" Filenames: *.ab,*.am
+" URL: http://www.cvjb.de/comp/vim/elf.vim
+" $Id: elf.vim,v 1.1 2004/06/13 19:52:27 vimboss Exp $
+"
+" ELF: Extensible Language Facility
+" This is the Applix Inc., Macro and Builder programming language.
+" It has nothing in common with the binary format called ELF.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Case does not matter
+syn case ignore
+
+" Environments
+syn region elfEnvironment transparent matchgroup=Special start="{" matchgroup=Special end="}" contains=ALLBUT,elfBraceError
+
+" Unmatched braces
+syn match elfBraceError "}"
+
+" All macros must have at least one of these definitions
+syn keyword elfSpecial endmacro
+syn region elfSpecial transparent matchgroup=Special start="^\(\(macro\)\|\(set\)\) \S\+$" matchgroup=Special end="^\(\(endmacro\)\|\(endset\)\)$" contains=ALLBUT,elfBraceError
+
+" Preprocessor Commands
+syn keyword elfPPCom define include
+
+" Some keywords
+syn keyword elfKeyword false true null
+syn keyword elfKeyword var format object function endfunction
+
+" Conditionals and loops
+syn keyword elfConditional if else case of endcase for to next while until return goto
+
+" All built-in elf macros end with an '@'
+syn match elfMacro "[0-9_A-Za-z]\+@"
+
+" Strings and characters
+syn region elfString start=+"+ skip=+\\\\\|\\"+ end=+"+
+
+" Numbers
+syn match elfNumber "-\=\<[0-9]*\.\=[0-9_]\>"
+
+" Comments
+syn region elfComment start="/\*" end="\*/"
+syn match elfComment "\'.*$"
+
+syn sync ccomment elfComment
+
+" Parenthesis
+syn match elfParens "[\[\]()]"
+
+" Punctuation
+syn match elfPunct "[,;]"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later.
+hi def link elfComment Comment
+hi def link elfPPCom Include
+hi def link elfKeyword Keyword
+hi def link elfSpecial Special
+hi def link elfEnvironment Special
+hi def link elfBraceError Error
+hi def link elfConditional Conditional
+hi def link elfMacro Function
+hi def link elfNumber Number
+hi def link elfString String
+hi def link elfParens Delimiter
+hi def link elfPunct Delimiter
+
+
+let b:current_syntax = "elf"
+
+" vim:ts=8:sw=4:nocindent:smartindent:
diff --git a/runtime/syntax/elinks.vim b/runtime/syntax/elinks.vim
new file mode 100644
index 0000000..98252a2
--- /dev/null
+++ b/runtime/syntax/elinks.vim
@@ -0,0 +1,188 @@
+" Vim syntax file
+" Language: elinks(1) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-06-17
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword+=-
+
+syn keyword elinksTodo contained TODO FIXME XXX NOTE
+
+syn region elinksComment display oneline start='#' end='$'
+ \ contains=elinksTodo,@Spell
+
+syn match elinksNumber '\<\d\+\>'
+
+syn region elinksString start=+"+ skip=+\\\\\|\\"+ end=+"+
+ \ contains=@elinksColor
+
+syn keyword elinksKeyword set bind
+
+syn keyword elinksPrefix bookmarks
+syn keyword elinksOptions file_format
+
+syn keyword elinksPrefix config
+syn keyword elinksOptions comments indentation saving_style i18n
+ \ saving_style_w show_template
+
+syn keyword elinksPrefix connection ssl client_cert
+syn keyword elinksOptions enable file cert_verify async_dns max_connections
+ \ max_connections_to_host receive_timeout retries
+ \ unrestartable_receive_timeout
+
+syn keyword elinksPrefix cookies
+syn keyword elinksOptions accept_policy max_age paranoid_security save resave
+
+syn keyword elinksPrefix document browse accesskey forms images links
+syn keyword elinksPrefix active_link colors search cache codepage colors
+syn keyword elinksPrefix format memory download dump history global html
+syn keyword elinksPrefix plain
+syn keyword elinksOptions auto_follow priority auto_submit confirm_submit
+ \ input_size show_formhist file_tags
+ \ image_link_tagging image_link_prefix
+ \ image_link_suffix show_as_links
+ \ show_any_as_links background text enable_color
+ \ bold invert underline color_dirs numbering
+ \ use_tabindex number_keys_select_link
+ \ wraparound case regex show_hit_top_bottom
+ \ wraparound show_not_found margin_width refresh
+ \ minimum_refresh_time scroll_margin scroll_step
+ \ table_move_order size size cache_redirects
+ \ ignore_cache_control assume force_assumed text
+ \ background link vlink dirs allow_dark_on_black
+ \ ensure_contrast use_document_colors directory
+ \ set_original_time overwrite notify_bell
+ \ codepage width enable max_items display_type
+ \ write_interval keep_unhistory display_frames
+ \ display_tables expand_table_columns display_subs
+ \ display_sups link_display underline_links
+ \ wrap_nbsp display_links compress_empty_lines
+
+syn keyword elinksPrefix mime extension handler mailcap mimetypes type
+syn keyword elinksOptions ask block program enable path ask description
+ \ prioritize enable path default_type
+
+syn keyword elinksPrefix protocol file cgi ftp proxy http bugs proxy
+syn keyword elinksPrefix referer https proxy rewrite dumb smart
+syn keyword elinksOptions path policy allow_special_files show_hidden_files
+ \ try_encoding_extensions host anon_passwd
+ \ use_pasv use_epsv accept_charset allow_blacklist
+ \ broken_302_redirect post_no_keepalive http10
+ \ host user passwd policy fake accept_language
+ \ accept_ui_language trace user_agent host
+ \ enable-dumb enable-smart
+
+syn keyword elinksPrefix terminal
+syn keyword elinksOptions type m11_hack utf_8_io restrict_852 block_cursor
+ \ colors transparency underline charset
+
+syn keyword elinksPrefix ui colors color mainmenu normal selected hotkey
+ \ menu marked hotkey frame dialog generic
+ \ frame scrollbar scrollbar-selected title text
+ \ checkbox checkbox-label button button-selected
+ \ field field-text meter shadow title title-bar
+ \ title-text status status-bar status-text tabs
+ \ unvisited normal loading separator searched mono
+syn keyword elinksOptions text background
+
+syn keyword elinksPrefix ui dialogs leds sessions tabs timer
+syn keyword elinksOptions listbox_min_height shadows underline_hotkeys enable
+ \ auto_save auto_restore auto_save_foldername
+ \ homepage show_bar wraparound confirm_close
+ \ enable duration action language show_status_bar
+ \ show_title_bar startup_goto_dialog
+ \ success_msgbox window_title
+
+syn keyword elinksOptions secure_file_saving
+
+syn cluster elinksColor contains=elinksColorBlack,elinksColorDarkRed,
+ \ elinksColorDarkGreen,elinksColorDarkYellow,
+ \ elinksColorDarkBlue,elinksColorDarkMagenta,
+ \ elinksColorDarkCyan,elinksColorGray,
+ \ elinksColorDarkGray,elinksColorRed,
+ \ elinksColorGreen,elinksColorYellow,
+ \ elinksColorBlue,elinksColorMagenta,
+ \ elinksColorCyan,elinksColorWhite
+
+syn keyword elinksColorBlack contained black
+syn keyword elinksColorDarkRed contained darkred sandybrown maroon crimson
+ \ firebrick
+syn keyword elinksColorDarkGreen contained darkgreen darkolivegreen
+ \ darkseagreen forestgreen
+ \ mediumspringgreen seagreen
+syn keyword elinksColorDarkYellow contained brown blanchedalmond chocolate
+ \ darkorange darkgoldenrod orange rosybrown
+ \ saddlebrown peru olive olivedrab sienna
+syn keyword elinksColorDarkBlue contained darkblue cadetblue cornflowerblue
+ \ darkslateblue deepskyblue midnightblue
+ \ royalblue steelblue navy
+syn keyword elinksColorDarkMagenta contained darkmagenta mediumorchid
+ \ mediumpurple mediumslateblue slateblue
+ \ deeppink hotpink darkorchid orchid purple
+ \ indigo
+syn keyword elinksColorDarkCyan contained darkcyan mediumaquamarine
+ \ mediumturquoise darkturquoise teal
+syn keyword elinksColorGray contained silver dimgray lightslategray
+ \ slategray lightgrey burlywood plum tan
+ \ thistle
+syn keyword elinksColorDarkGray contained gray darkgray darkslategray
+ \ darksalmon
+syn keyword elinksColorRed contained red indianred orangered tomato
+ \ lightsalmon salmon coral lightcoral
+syn keyword elinksColorGreen contained green greenyellow lawngreen
+ \ lightgreen lightseagreen limegreen
+ \ mediumseagreen springgreen yellowgreen
+ \ palegreen lime chartreuse
+syn keyword elinksColorYellow contained yellow beige darkkhaki
+ \ lightgoldenrodyellow palegoldenrod gold
+ \ goldenrod khaki lightyellow
+syn keyword elinksColorBlue contained blue aliceblue aqua aquamarine
+ \ azure dodgerblue lightblue lightskyblue
+ \ lightsteelblue mediumblue
+syn keyword elinksColorMagenta contained magenta darkviolet blueviolet
+ \ lightpink mediumvioletred palevioletred
+ \ violet pink fuchsia
+syn keyword elinksColorCyan contained cyan lightcyan powderblue skyblue
+ \ turquoise paleturquoise
+syn keyword elinksColorWhite contained white antiquewhite floralwhite
+ \ ghostwhite navajowhite whitesmoke linen
+ \ lemonchiffon cornsilk lavender
+ \ lavenderblush seashell mistyrose ivory
+ \ papayawhip bisque gainsboro honeydew
+ \ mintcream moccasin oldlace peachpuff snow
+ \ wheat
+
+hi def link elinksTodo Todo
+hi def link elinksComment Comment
+hi def link elinksNumber Number
+hi def link elinksString String
+hi def link elinksKeyword Keyword
+hi def link elinksPrefix Identifier
+hi def link elinksOptions Identifier
+hi def elinksColorBlack ctermfg=Black guifg=Black
+hi def elinksColorDarkRed ctermfg=DarkRed guifg=DarkRed
+hi def elinksColorDarkGreen ctermfg=DarkGreen guifg=DarkGreen
+hi def elinksColorDarkYellow ctermfg=DarkYellow guifg=DarkYellow
+hi def elinksColorDarkBlue ctermfg=DarkBlue guifg=DarkBlue
+hi def elinksColorDarkMagenta ctermfg=DarkMagenta guifg=DarkMagenta
+hi def elinksColorDarkCyan ctermfg=DarkCyan guifg=DarkCyan
+hi def elinksColorGray ctermfg=Gray guifg=Gray
+hi def elinksColorDarkGray ctermfg=DarkGray guifg=DarkGray
+hi def elinksColorRed ctermfg=Red guifg=Red
+hi def elinksColorGreen ctermfg=Green guifg=Green
+hi def elinksColorYellow ctermfg=Yellow guifg=Yellow
+hi def elinksColorBlue ctermfg=Blue guifg=Blue
+hi def elinksColorMagenta ctermfg=Magenta guifg=Magenta
+hi def elinksColorCyan ctermfg=Cyan guifg=Cyan
+hi def elinksColorWhite ctermfg=White guifg=White
+
+let b:current_syntax = "elinks"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/elm.vim b/runtime/syntax/elm.vim
new file mode 100644
index 0000000..1277827
--- /dev/null
+++ b/runtime/syntax/elm.vim
@@ -0,0 +1,105 @@
+" Vim syntax file
+" Language: Elm
+" Maintainer: Andreas Scharf <as@99n.de>
+" Original Author: Joseph Hager <ajhager@gmail.com>
+" Copyright: Joseph Hager <ajhager@gmail.com>
+" License: BSD3
+" Latest Revision: 2020-05-29
+
+if exists('b:current_syntax')
+ finish
+endif
+
+" Keywords
+syn keyword elmConditional else if of then case
+syn keyword elmAlias alias
+syn keyword elmTypedef contained type port
+syn keyword elmImport exposing as import module where
+
+" Operators
+" elm/core
+syn match elmOperator contained "\(<|\||>\|||\|&&\|==\|/=\|<=\|>=\|++\|::\|+\|-\|*\|/\|//\|^\|<>\|>>\|<<\|<\|>\|%\)"
+" elm/parser
+syn match elmOperator contained "\(|.\||=\)"
+" elm/url
+syn match elmOperator contained "\(</>\|<?>\)"
+
+" Types
+syn match elmType "\<[A-Z][0-9A-Za-z_-]*"
+syn keyword elmNumberType number
+
+" Modules
+syn match elmModule "\<\([A-Z][0-9A-Za-z_'-\.]*\)\+\.[A-Za-z]"me=e-2
+syn match elmModule "^\(module\|import\)\s\+[A-Z][0-9A-Za-z_'-\.]*\(\s\+as\s\+[A-Z][0-9A-Za-z_'-\.]*\)\?\(\s\+exposing\)\?" contains=elmImport
+
+" Delimiters
+syn match elmDelimiter "[,;]"
+syn match elmBraces "[()[\]{}]"
+
+" Functions
+syn match elmTupleFunction "\((,\+)\)"
+
+" Comments
+syn keyword elmTodo TODO FIXME XXX contained
+syn match elmLineComment "--.*" contains=elmTodo,@spell
+syn region elmComment matchgroup=elmComment start="{-|\=" end="-}" contains=elmTodo,elmComment,@spell fold
+
+" Strings
+syn match elmStringEscape "\\u[0-9a-fA-F]\{4}" contained
+syn match elmStringEscape "\\[nrfvbt\\\"]" contained
+syn region elmString start="\"" skip="\\\"" end="\"" contains=elmStringEscape,@spell
+syn region elmTripleString start="\"\"\"" skip="\\\"" end="\"\"\"" contains=elmStringEscape,@spell
+syn match elmChar "'[^'\\]'\|'\\.'\|'\\u[0-9a-fA-F]\{4}'"
+
+" Lambda
+syn region elmLambdaFunc start="\\"hs=s+1 end="->"he=e-2
+
+" Debug
+syn match elmDebug "Debug.\(log\|todo\|toString\)"
+
+" Numbers
+syn match elmInt "-\?\<\d\+\>"
+syn match elmFloat "-\?\(\<\d\+\.\d\+\>\)"
+
+" Identifiers
+syn match elmTopLevelDecl "^\s*[a-zA-Z][a-zA-z0-9_]*\('\)*\s\+:\(\r\n\|\r\|\n\|\s\)\+" contains=elmOperator
+syn match elmFuncName /^\l\w*/
+
+" Folding
+syn region elmTopLevelTypedef start="type" end="\n\(\n\n\)\@=" contains=ALL fold
+syn region elmTopLevelFunction start="^[a-zA-Z].\+\n[a-zA-Z].\+=" end="^\(\n\+\)\@=" contains=ALL fold
+syn region elmCaseBlock matchgroup=elmCaseBlockDefinition start="^\z\(\s\+\)\<case\>" end="^\z1\@!\W\@=" end="\(\n\n\z1\@!\)\@=" end="\n\z1\@!\(\n\n\)\@=" contains=ALL fold
+syn region elmCaseItemBlock start="^\z\(\s\+\).\+->$" end="^\z1\@!\W\@=" end="\(\n\n\z1\@!\)\@=" end="\(\n\z1\S\)\@=" contains=ALL fold
+syn region elmLetBlock matchgroup=elmLetBlockDefinition start="\<let\>" end="\<in\>" contains=ALL fold
+
+hi def link elmFuncName Function
+hi def link elmCaseBlockDefinition Conditional
+hi def link elmCaseBlockItemDefinition Conditional
+hi def link elmLetBlockDefinition TypeDef
+hi def link elmTopLevelDecl Function
+hi def link elmTupleFunction Normal
+hi def link elmTodo Todo
+hi def link elmComment Comment
+hi def link elmLineComment Comment
+hi def link elmString String
+hi def link elmTripleString String
+hi def link elmChar String
+hi def link elmStringEscape Special
+hi def link elmInt Number
+hi def link elmFloat Float
+hi def link elmDelimiter Delimiter
+hi def link elmBraces Delimiter
+hi def link elmTypedef TypeDef
+hi def link elmImport Include
+hi def link elmConditional Conditional
+hi def link elmAlias Delimiter
+hi def link elmOperator Operator
+hi def link elmType Type
+hi def link elmNumberType Identifier
+hi def link elmLambdaFunc Function
+hi def link elmDebug Debug
+hi def link elmModule Type
+
+syn sync minlines=500
+
+let b:current_syntax = 'elm'
diff --git a/runtime/syntax/elmfilt.vim b/runtime/syntax/elmfilt.vim
new file mode 100644
index 0000000..d995853
--- /dev/null
+++ b/runtime/syntax/elmfilt.vim
@@ -0,0 +1,58 @@
+" Vim syntax file
+" Language: Elm Filter rules
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Last Change: Aug 31, 2016
+" Version: 9
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_ELMFILT
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn cluster elmfiltIfGroup contains=elmfiltCond,elmfiltOper,elmfiltOperKey,,elmfiltNumber,elmfiltOperKey
+
+syn match elmfiltParenError "[()]"
+syn match elmfiltMatchError "/"
+syn region elmfiltIf start="\<if\>" end="\<then\>" contains=elmfiltParen,elmfiltParenError skipnl skipwhite nextgroup=elmfiltAction
+syn region elmfiltParen contained matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=elmfiltParen,@elmfiltIfGroup,elmfiltThenError
+syn region elmfiltMatch contained matchgroup=Delimiter start="/" skip="\\/" matchgroup=Delimiter end="/" skipnl skipwhite nextgroup=elmfiltOper,elmfiltOperKey
+syn match elmfiltThenError "\<then.*$"
+syn match elmfiltComment "^#.*$" contains=@Spell
+
+syn keyword elmfiltAction contained delete execute executec forward forwardc leave save savecopy skipnl skipwhite nextgroup=elmfiltString
+syn match elmfiltArg contained "[^\\]%[&0-9dDhmrsSty&]"lc=1
+
+syn match elmfiltOperKey contained "\<contains\>" skipnl skipwhite nextgroup=elmfiltString
+syn match elmfiltOperKey contained "\<matches\s" nextgroup=elmfiltMatch,elmfiltSpaceError
+syn keyword elmfiltCond contained cc bcc lines always subject sender from to lines received skipnl skipwhite nextgroup=elmfiltString
+syn match elmfiltNumber contained "\d\+"
+syn keyword elmfiltOperKey contained and not skipnl skipwhite nextgroup=elmfiltOper,elmfiltOperKey,elmfiltString
+syn match elmfiltOper contained "\~" skipnl skipwhite nextgroup=elmfiltMatch
+syn match elmfiltOper contained "<=\|>=\|!=\|<\|<\|=" skipnl skipwhite nextgroup=elmfiltString,elmfiltCond,elmfiltOperKey
+syn region elmfiltString contained start='"' skip='"\(\\\\\)*\\["%]' end='"' contains=elmfiltArg skipnl skipwhite nextgroup=elmfiltOper,elmfiltOperKey,@Spell
+syn region elmfiltString contained start="'" skip="'\(\\\\\)*\\['%]" end="'" contains=elmfiltArg skipnl skipwhite nextgroup=elmfiltOper,elmfiltOperKey,@Spell
+syn match elmfiltSpaceError contained "\s.*$"
+
+" Define the default highlighting.
+if !exists("skip_elmfilt_syntax_inits")
+
+ hi def link elmfiltAction Statement
+ hi def link elmfiltArg Special
+ hi def link elmfiltComment Comment
+ hi def link elmfiltCond Statement
+ hi def link elmfiltIf Statement
+ hi def link elmfiltMatch Special
+ hi def link elmfiltMatchError Error
+ hi def link elmfiltNumber Number
+ hi def link elmfiltOper Operator
+ hi def link elmfiltOperKey Type
+ hi def link elmfiltParenError Error
+ hi def link elmfiltSpaceError Error
+ hi def link elmfiltString String
+ hi def link elmfiltThenError Error
+
+endif
+
+let b:current_syntax = "elmfilt"
+" vim: ts=9
diff --git a/runtime/syntax/erlang.vim b/runtime/syntax/erlang.vim
new file mode 100644
index 0000000..0b25619
--- /dev/null
+++ b/runtime/syntax/erlang.vim
@@ -0,0 +1,266 @@
+" Vim syntax file
+" Language: Erlang (http://www.erlang.org)
+" Maintainer: Csaba Hoch <csaba.hoch@gmail.com>
+" Contributor: Adam Rutkowski <hq@mtod.org>
+" Last Update: 2022-Sep-06
+" License: Vim license
+" URL: https://github.com/vim-erlang/vim-erlang-runtime
+
+" Acknowledgements: This script was originally created by Kresimir Marzic [1].
+" The script was then revamped by Csaba Hoch [2]. During the revamp, the new
+" highlighting style and some code was taken from the Erlang syntax script
+" that is part of vimerl [3], created by Oscar Hellström [4] and improved by
+" Ricardo Catalinas Jiménez [5].
+
+" [1]: Kreąimir Marľić (Kresimir Marzic) <kmarzic@fly.srk.fer.hr>
+" [2]: Csaba Hoch <csaba.hoch@gmail.com>
+" [3]: https://github.com/jimenezrick/vimerl
+" [4]: Oscar Hellström <oscar@oscarh.net> (http://oscar.hellstrom.st)
+" [5]: Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
+
+" Customization:
+"
+" To use the old highlighting style, add this to your .vimrc:
+"
+" let g:erlang_old_style_highlight = 1
+"
+" To highlight further module attributes, add them to
+" ~/.vim/after/syntax/erlang.vim:
+"
+" syn keyword erlangAttribute myattr1 myattr2 contained
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Case sensitive
+syn case match
+
+setlocal iskeyword+=$,@-@
+
+" Comments
+syn match erlangComment '%.*$' contains=erlangCommentAnnotation,erlangTodo
+syn match erlangCommentAnnotation ' \@<=@\%(clear\|docfile\|end\|headerfile\|todo\|TODO\|type\|author\|copyright\|doc\|reference\|see\|since\|title\|version\|deprecated\|hidden\|param\|private\|equiv\|spec\|throws\)' contained
+syn match erlangCommentAnnotation /`[^']*'/ contained
+syn keyword erlangTodo TODO FIXME XXX contained
+
+" Numbers (minimum base is 2, maximum is 36.)
+syn match erlangNumberInteger '\<\d\+\>'
+syn match erlangNumberInteger '\<\%([2-9]\|[12]\d\|3[0-6]\)\+#[[:alnum:]]\+\>'
+syn match erlangNumberFloat '\<\d\+\.\d\+\%([eE][+-]\=\d\+\)\=\>'
+
+" Strings, atoms, characters
+syn region erlangString start=/"/ end=/"/ contains=erlangStringModifier
+syn region erlangQuotedAtom start=/'/ end=/'/ contains=erlangQuotedAtomModifier
+syn match erlangStringModifier '\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)\|\~\%([ni~]\|\%(-\=\d\+\|\*\)\=\.\=\%(\*\|\d\+\)\=\%(\..\)\=[tl]*[cfegswpWPBX#bx+]\)' contained
+syn match erlangQuotedAtomModifier '\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)' contained
+syn match erlangModifier '\$\%([^\\]\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)\)'
+
+" Operators, separators
+syn match erlangOperator '==\|=:=\|/=\|=/=\|<\|=<\|>\|>=\|=>\|:=\|?=\|++\|--\|=\|!\|<-\|+\|-\|\*\|\/'
+syn match erlangEqualsBinary '=<<\%(<\)\@!'
+syn keyword erlangOperator div rem or xor bor bxor bsl bsr and band not bnot andalso orelse
+syn match erlangBracket '{\|}\|\[\|]\||\|||'
+syn match erlangPipe '|'
+syn match erlangRightArrow '->'
+
+" Atoms, function calls (order is important)
+syn match erlangAtom '\<\l[[:alnum:]_@]*' contains=erlangBoolean
+syn keyword erlangBoolean true false contained
+syn match erlangLocalFuncCall '\<\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*(\)\@=' contains=erlangBIF
+syn match erlangLocalFuncRef '\<\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*/\)\@='
+syn match erlangGlobalFuncCall '\<\%(\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*\.\%(\s\|\n\|%.*\n\)*\)*\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*:\%(\s\|\n\|%.*\n\)*\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*(\)\@=' contains=erlangComment,erlangVariable
+syn match erlangGlobalFuncRef '\<\%(\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*\.\%(\s\|\n\|%.*\n\)*\)*\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*:\%(\s\|\n\|%.*\n\)*\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*/\)\@=' contains=erlangComment,erlangVariable
+
+" Variables, macros, records, maps
+syn match erlangVariable '\<[A-Z][[:alnum:]_@]*'
+syn match erlangAnonymousVariable '\<_[[:alnum:]_@]*'
+syn match erlangMacro '??\=[[:alnum:]_@]\+'
+syn match erlangMacro '\%(-define(\)\@<=[[:alnum:]_@]\+'
+syn region erlangQuotedMacro start=/??\=\s*'/ end=/'/ contains=erlangQuotedAtomModifier
+syn match erlangMap '#'
+syn match erlangRecord '#\s*\l[[:alnum:]_@]*'
+syn region erlangQuotedRecord start=/#\s*'/ end=/'/ contains=erlangQuotedAtomModifier
+
+" Shebang (this line has to be after the ErlangMap)
+syn match erlangShebang '^#!.*'
+
+" Bitstrings
+syn match erlangBitType '\%(\/\%(\s\|\n\|%.*\n\)*\)\@<=\%(integer\|float\|binary\|bytes\|bitstring\|bits\|binary\|utf8\|utf16\|utf32\|signed\|unsigned\|big\|little\|native\|unit\)\%(\%(\s\|\n\|%.*\n\)*-\%(\s\|\n\|%.*\n\)*\%(integer\|float\|binary\|bytes\|bitstring\|bits\|binary\|utf8\|utf16\|utf32\|signed\|unsigned\|big\|little\|native\|unit\)\)*' contains=erlangComment
+
+" Constants and Directives
+syn match erlangUnknownAttribute '^\s*-\%(\s\|\n\|%.*\n\)*\l[[:alnum:]_@]*' contains=erlangComment
+syn match erlangAttribute '^\s*-\%(\s\|\n\|%.*\n\)*\%(behaviou\=r\|compile\|export\(_type\)\=\|file\|import\|module\|author\|copyright\|doc\|vsn\|on_load\|optional_callbacks\|feature\)\>' contains=erlangComment
+syn match erlangInclude '^\s*-\%(\s\|\n\|%.*\n\)*\%(include\|include_lib\)\>' contains=erlangComment
+syn match erlangRecordDef '^\s*-\%(\s\|\n\|%.*\n\)*record\>' contains=erlangComment
+syn match erlangDefine '^\s*-\%(\s\|\n\|%.*\n\)*\%(define\|undef\)\>' contains=erlangComment
+syn match erlangPreCondit '^\s*-\%(\s\|\n\|%.*\n\)*\%(ifdef\|ifndef\|else\|endif\)\>' contains=erlangComment
+syn match erlangType '^\s*-\%(\s\|\n\|%.*\n\)*\%(spec\|type\|opaque\|callback\)\>' contains=erlangComment
+
+" Keywords
+syn keyword erlangKeyword after begin case catch cond end fun if let of else
+syn keyword erlangKeyword receive when try maybe
+
+" Build-in-functions (BIFs)
+syn keyword erlangBIF abs alive apply atom_to_binary atom_to_list contained
+syn keyword erlangBIF binary_part binary_to_atom contained
+syn keyword erlangBIF binary_to_existing_atom binary_to_float contained
+syn keyword erlangBIF binary_to_integer bitstring_to_list contained
+syn keyword erlangBIF binary_to_list binary_to_term bit_size contained
+syn keyword erlangBIF byte_size check_old_code check_process_code contained
+syn keyword erlangBIF concat_binary date delete_module demonitor contained
+syn keyword erlangBIF disconnect_node element erase error exit contained
+syn keyword erlangBIF float float_to_binary float_to_list contained
+syn keyword erlangBIF garbage_collect get get_keys group_leader contained
+syn keyword erlangBIF halt hd integer_to_binary integer_to_list contained
+syn keyword erlangBIF iolist_to_binary iolist_size is_alive contained
+syn keyword erlangBIF is_atom is_binary is_bitstring is_boolean contained
+syn keyword erlangBIF is_float is_function is_integer is_list is_map is_map_key contained
+syn keyword erlangBIF is_number is_pid is_port is_process_alive contained
+syn keyword erlangBIF is_record is_reference is_tuple length link contained
+syn keyword erlangBIF list_to_atom list_to_binary contained
+syn keyword erlangBIF list_to_bitstring list_to_existing_atom contained
+syn keyword erlangBIF list_to_float list_to_integer list_to_pid contained
+syn keyword erlangBIF list_to_tuple load_module make_ref map_size max contained
+syn keyword erlangBIF min module_loaded monitor monitor_node node contained
+syn keyword erlangBIF nodes now open_port pid_to_list port_close contained
+syn keyword erlangBIF port_command port_connect pre_loaded contained
+syn keyword erlangBIF process_flag process_flag process_info contained
+syn keyword erlangBIF process purge_module put register registered contained
+syn keyword erlangBIF round self setelement size spawn spawn_link contained
+syn keyword erlangBIF spawn_monitor spawn_opt split_binary contained
+syn keyword erlangBIF statistics term_to_binary throw time tl contained
+syn keyword erlangBIF trunc tuple_size tuple_to_list unlink contained
+syn keyword erlangBIF unregister whereis contained
+
+" Sync at the beginning of functions: if this is not used, multiline string
+" are not always recognized, and the indentation script cannot use the
+" "searchpair" (because it would not always skip strings and comments when
+" looking for keywords and opening parens/brackets).
+syn sync match erlangSync grouphere NONE "^[a-z]\s*("
+let b:erlang_syntax_synced = 1
+
+" Define the default highlighting. See ":help group-name" for the groups and
+" their colors.
+
+let s:old_style = (exists("g:erlang_old_style_highlight") &&
+ \g:erlang_old_style_highlight == 1)
+
+
+" Comments
+hi def link erlangComment Comment
+hi def link erlangCommentAnnotation Special
+hi def link erlangTodo Todo
+hi def link erlangShebang Comment
+
+" Numbers
+hi def link erlangNumberInteger Number
+hi def link erlangNumberFloat Float
+
+" Strings, atoms, characters
+hi def link erlangString String
+
+if s:old_style
+hi def link erlangQuotedAtom Type
+else
+hi def link erlangQuotedAtom String
+endif
+
+hi def link erlangStringModifier Special
+hi def link erlangQuotedAtomModifier Special
+hi def link erlangModifier Special
+
+" Operators, separators
+hi def link erlangOperator Operator
+hi def link erlangEqualsBinary ErrorMsg
+hi def link erlangRightArrow Operator
+if s:old_style
+hi def link erlangBracket Normal
+hi def link erlangPipe Normal
+else
+hi def link erlangBracket Delimiter
+hi def link erlangPipe Delimiter
+endif
+
+" Atoms, functions, variables, macros
+if s:old_style
+hi def link erlangAtom Normal
+hi def link erlangLocalFuncCall Normal
+hi def link erlangLocalFuncRef Normal
+hi def link erlangGlobalFuncCall Function
+hi def link erlangGlobalFuncRef Function
+hi def link erlangVariable Normal
+hi def link erlangAnonymousVariable erlangVariable
+hi def link erlangMacro Normal
+hi def link erlangQuotedMacro Normal
+hi def link erlangRecord Normal
+hi def link erlangQuotedRecord Normal
+hi def link erlangMap Normal
+else
+hi def link erlangAtom String
+hi def link erlangLocalFuncCall Normal
+hi def link erlangLocalFuncRef Normal
+hi def link erlangGlobalFuncCall Normal
+hi def link erlangGlobalFuncRef Normal
+hi def link erlangVariable Identifier
+hi def link erlangAnonymousVariable erlangVariable
+hi def link erlangMacro Macro
+hi def link erlangQuotedMacro Macro
+hi def link erlangRecord Structure
+hi def link erlangQuotedRecord Structure
+hi def link erlangMap Structure
+endif
+
+" Bitstrings
+if !s:old_style
+hi def link erlangBitType Type
+endif
+
+" Constants and Directives
+if s:old_style
+hi def link erlangAttribute Type
+hi def link erlangMacroDef Type
+hi def link erlangUnknownAttribute Normal
+hi def link erlangInclude Type
+hi def link erlangRecordDef Type
+hi def link erlangDefine Type
+hi def link erlangPreCondit Type
+hi def link erlangType Type
+else
+hi def link erlangAttribute Keyword
+hi def link erlangMacroDef Macro
+hi def link erlangUnknownAttribute Normal
+hi def link erlangInclude Include
+hi def link erlangRecordDef Keyword
+hi def link erlangDefine Define
+hi def link erlangPreCondit PreCondit
+hi def link erlangType Type
+endif
+
+" Keywords
+hi def link erlangKeyword Keyword
+
+" Build-in-functions (BIFs)
+hi def link erlangBIF Function
+
+if s:old_style
+hi def link erlangBoolean Statement
+hi def link erlangExtra Statement
+hi def link erlangSignal Statement
+else
+hi def link erlangBoolean Boolean
+hi def link erlangExtra Statement
+hi def link erlangSignal Statement
+endif
+
+
+let b:current_syntax = "erlang"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: sw=2 et
diff --git a/runtime/syntax/eruby.vim b/runtime/syntax/eruby.vim
new file mode 100644
index 0000000..3d1bf71
--- /dev/null
+++ b/runtime/syntax/eruby.vim
@@ -0,0 +1,79 @@
+" Vim syntax file
+" Language: eRuby
+" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
+" URL: https://github.com/vim-ruby/vim-ruby
+" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2022 Mar 18
+
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'eruby'
+endif
+
+if !exists("g:eruby_default_subtype")
+ let g:eruby_default_subtype = "html"
+endif
+
+if &filetype =~ '^eruby\.'
+ let b:eruby_subtype = matchstr(&filetype,'^eruby\.\zs\w\+')
+elseif !exists("b:eruby_subtype") && main_syntax == 'eruby'
+ let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
+ let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+')
+ if b:eruby_subtype == ''
+ let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\|\.erubis\|\.example\)\+$','',''),'\.\zs\w\+\%(\ze+\w\+\)\=$')
+ endif
+ if b:eruby_subtype == 'rhtml'
+ let b:eruby_subtype = 'html'
+ elseif b:eruby_subtype == 'rb'
+ let b:eruby_subtype = 'ruby'
+ elseif b:eruby_subtype == 'yml'
+ let b:eruby_subtype = 'yaml'
+ elseif b:eruby_subtype == 'js'
+ let b:eruby_subtype = 'javascript'
+ elseif b:eruby_subtype == 'txt'
+ " Conventional; not a real file type
+ let b:eruby_subtype = 'text'
+ elseif b:eruby_subtype == ''
+ let b:eruby_subtype = g:eruby_default_subtype
+ endif
+endif
+
+if !exists("b:eruby_nest_level")
+ if &syntax =~# '\<eruby\.eruby\>'
+ let b:eruby_nest_level = strlen(substitute(substitute(&filetype,'\C\<eruby\>','@','g'),'[^@]','','g'))
+ else
+ let b:eruby_nest_level = strlen(substitute(substitute(substitute(expand("%:t"),'@','','g'),'\c\.\%(erb\|rhtml\)\>','@','g'),'[^@]','','g'))
+ endif
+endif
+if !b:eruby_nest_level
+ let b:eruby_nest_level = 1
+endif
+
+if exists("b:eruby_subtype") && b:eruby_subtype != '' && b:eruby_subtype !=? 'eruby'
+ exe "runtime! syntax/".b:eruby_subtype.".vim"
+ unlet! b:current_syntax
+endif
+syn include @rubyTop syntax/ruby.vim
+
+syn cluster erubyRegions contains=erubyOneLiner,erubyBlock,erubyExpression,erubyComment
+
+exe 'syn region erubyOneLiner matchgroup=erubyDelimiter start="^%\{1,'.b:eruby_nest_level.'\}%\@!" end="$" contains=@rubyTop containedin=ALLBUT,@erubyRegions keepend oneline'
+exe 'syn region erubyBlock matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}%\@!-\=" end="[=-]\=%\@<!%\{1,'.b:eruby_nest_level.'\}>" contains=@rubyTop containedin=ALLBUT,@erubyRegions keepend'
+exe 'syn region erubyExpression matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}=\{1,4}" end="[=-]\=%\@<!%\{1,'.b:eruby_nest_level.'\}>" contains=@rubyTop containedin=ALLBUT,@erubyRegions keepend'
+exe 'syn region erubyComment matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}-\=#" end="[=-]\=%\@<!%\{1,'.b:eruby_nest_level.'\}>" contains=rubyTodo,@Spell containedin=ALLBUT,@erubyRegions keepend'
+
+" Define the default highlighting.
+
+hi def link erubyDelimiter PreProc
+hi def link erubyComment Comment
+
+let b:current_syntax = 'eruby'
+
+if main_syntax == 'eruby'
+ unlet main_syntax
+endif
+
+" vim: nowrap sw=2 sts=2 ts=8:
diff --git a/runtime/syntax/esmtprc.vim b/runtime/syntax/esmtprc.vim
new file mode 100644
index 0000000..81f074b
--- /dev/null
+++ b/runtime/syntax/esmtprc.vim
@@ -0,0 +1,31 @@
+" Vim syntax file
+" Language: Esmtp setup file (based on esmtp 0.5.0)
+" Maintainer: Kornel Kielczewski <kornel@gazeta.pl>
+" Last Change: 16 Feb 2005
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+"All options
+syntax keyword esmtprcOptions hostname username password starttls certificate_passphrase preconnect identity mda
+
+"All keywords
+syntax keyword esmtprcIdentifier default enabled disabled required
+
+"We're trying to be smarer than /."*@.*/ :)
+syntax match esmtprcAddress /[a-z0-9_.-]*[a-z0-9]\+@[a-z0-9_.-]*[a-z0-9]\+\.[a-z]\+/
+syntax match esmtprcFulladd /[a-z0-9_.-]*[a-z0-9]\+\.[a-z]\+:[0-9]\+/
+
+"String..
+syntax region esmtprcString start=/"/ end=/"/
+
+
+highlight link esmtprcOptions Label
+highlight link esmtprcString String
+highlight link esmtprcAddress Type
+highlight link esmtprcIdentifier Identifier
+highlight link esmtprcFulladd Include
+
+let b:current_syntax = "esmtprc"
diff --git a/runtime/syntax/esqlc.vim b/runtime/syntax/esqlc.vim
new file mode 100644
index 0000000..792e5d3
--- /dev/null
+++ b/runtime/syntax/esqlc.vim
@@ -0,0 +1,58 @@
+" Vim syntax file
+" Language: ESQL-C
+" Maintainer: Jonathan A. George <jageorge@tel.gte.com>
+" Last Change: 2001 May 09
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the C++ syntax to start with
+runtime! syntax/cpp.vim
+
+" ESQL-C extentions
+
+syntax keyword esqlcPreProc EXEC SQL INCLUDE
+
+syntax case ignore
+
+syntax keyword esqlcPreProc begin end declare section database open execute
+syntax keyword esqlcPreProc prepare fetch goto continue found sqlerror work
+
+syntax keyword esqlcKeyword access add as asc by check cluster column
+syntax keyword esqlcKeyword compress connect current decimal
+syntax keyword esqlcKeyword desc exclusive file from group
+syntax keyword esqlcKeyword having identified immediate increment index
+syntax keyword esqlcKeyword initial into is level maxextents mode modify
+syntax keyword esqlcKeyword nocompress nowait of offline on online start
+syntax keyword esqlcKeyword successful synonym table then to trigger uid
+syntax keyword esqlcKeyword unique user validate values view whenever
+syntax keyword esqlcKeyword where with option order pctfree privileges
+syntax keyword esqlcKeyword public resource row rowlabel rownum rows
+syntax keyword esqlcKeyword session share size smallint
+
+syntax keyword esqlcOperator not and or
+syntax keyword esqlcOperator in any some all between exists
+syntax keyword esqlcOperator like escape
+syntax keyword esqlcOperator intersect minus
+syntax keyword esqlcOperator prior distinct
+syntax keyword esqlcOperator sysdate
+
+syntax keyword esqlcStatement alter analyze audit comment commit create
+syntax keyword esqlcStatement delete drop explain grant insert lock noaudit
+syntax keyword esqlcStatement rename revoke rollback savepoint select set
+syntax keyword esqlcStatement truncate update
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link esqlcOperator Operator
+hi def link esqlcStatement Statement
+hi def link esqlcKeyword esqlcSpecial
+hi def link esqlcSpecial Special
+hi def link esqlcPreProc PreProc
+
+
+let b:current_syntax = "esqlc"
+
diff --git a/runtime/syntax/esterel.vim b/runtime/syntax/esterel.vim
new file mode 100644
index 0000000..b010521
--- /dev/null
+++ b/runtime/syntax/esterel.vim
@@ -0,0 +1,78 @@
+" Vim syntax file
+" Language: ESTEREL
+" Maintainer: Maurizio Tranchero <maurizio.tranchero@polito.it> - <maurizio.tranchero@gmail.com>
+" Credits: Luca Necchi <luca.necchi@polito.it>, Nikos Andrikos <nick.andrik@gmail.com>
+" First Release: Tue May 17 23:49:39 CEST 2005
+" Last Change: Tue May 6 13:29:56 CEST 2008
+" Version: 0.8
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" case is significant
+syn case ignore
+" Esterel Regions
+syn region esterelModule start=/module/ end=/end module/ contains=ALLBUT,esterelModule
+syn region esterelLoop start=/loop/ end=/end loop/ contains=ALLBUT,esterelModule
+syn region esterelAbort start=/abort/ end=/when/ contains=ALLBUT,esterelModule
+syn region esterelAbort start=/weak abort/ end=/when/ contains=ALLBUT,esterelModule
+syn region esterelEvery start=/every/ end=/end every/ contains=ALLBUT,esterelModule
+syn region esterelIf start=/if/ end=/end if/ contains=ALLBUT,esterelModule
+syn region esterelConcurrent transparent start=/\[/ end=/\]/ contains=ALLBUT,esterelModule
+syn region esterelIfThen start=/if/ end=/then/ oneline
+" Esterel Keywords
+syn keyword esterelIO input output inputoutput constant
+syn keyword esterelBoolean and or not xor xnor nor nand
+syn keyword esterelExpressions mod pre
+syn keyword esterelStatement nothing halt
+syn keyword esterelStatement module signal sensor end
+syn keyword esterelStatement every do loop abort weak
+syn keyword esterelStatement emit present await
+syn keyword esterelStatement pause when immediate
+syn keyword esterelStatement if then else case
+syn keyword esterelStatement var in run suspend
+syn keyword esterelStatement repeat times combine with
+syn keyword esterelStatement assert sustain
+" check what it is the following
+syn keyword esterelStatement relation
+syn keyword esterelFunctions function procedure task
+syn keyword esterelSysCall call trap exit exec
+" Esterel Types
+syn keyword esterelType integer float bolean
+" Esterel Comment
+syn match esterelComment "%.*$"
+" Operators and special characters
+syn match esterelSpecial ":"
+syn match esterelSpecial "<="
+syn match esterelSpecial ">="
+syn match esterelSpecial "+"
+syn match esterelSpecial "-"
+syn match esterelSpecial "="
+syn match esterelSpecial ";"
+syn match esterelSpecial "/"
+syn match esterelSpecial "?"
+syn match esterelOperator "\["
+syn match esterelOperator "\]"
+syn match esterelOperator ":="
+syn match esterelOperator "||"
+syn match esterelStatement "\<\(if\|else\)\>"
+syn match esterelNone "\<else\s\+if\>$"
+syn match esterelNone "\<else\s\+if\>\s"
+
+" Class Linking
+
+hi def link esterelStatement Statement
+hi def link esterelType Type
+hi def link esterelComment Comment
+hi def link esterelBoolean Number
+hi def link esterelExpressions Number
+hi def link esterelIO String
+hi def link esterelOperator Type
+hi def link esterelSysCall Type
+hi def link esterelFunctions Type
+hi def link esterelSpecial Special
+
+
+let b:current_syntax = "esterel"
diff --git a/runtime/syntax/eterm.vim b/runtime/syntax/eterm.vim
new file mode 100644
index 0000000..9b43cb2
--- /dev/null
+++ b/runtime/syntax/eterm.vim
@@ -0,0 +1,429 @@
+" Vim syntax file
+" Language: eterm(1) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-21
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword etermTodo contained TODO FIXME XXX NOTE
+
+syn region etermComment display oneline start='^#' end='$'
+ \ contains=etermTodo,@Spell
+
+syn match etermMagic display '^<Eterm-[0-9.]\+>$'
+
+syn match etermNumber contained display '\<\(\d\+\|0x\x\{1,2}\)\>'
+
+syn region etermString contained display oneline start=+"+
+ \ skip=+\\"+ end=+"+
+
+syn keyword etermBoolean contained on off true false yes no
+
+syn keyword etermPreProc contained appname exec get put random version
+ \ include preproc
+
+syn keyword etermFunctions contained copy exit kill nop paste save
+ \ scroll search spawn
+
+syn cluster etermGeneral contains=etermComment,etermFunction,
+ \ etermPreProc
+
+syn keyword etermKeyMod contained ctrl shift lock mod1 mod2 mod3 mod4
+ \ mod5 alt meta anymod
+syn keyword etermKeyMod contained button1 button2 button3 button4
+ \ button5
+
+syn keyword etermColorOptions contained video nextgroup=etermVideoOptions
+ \ skipwhite
+
+syn keyword etermVideoType contained normal reverse
+
+syn keyword etermColorOptions contained foreground background cursor
+ \ cursor_text pointer
+ \ nextgroup=etermColorType skipwhite
+
+syn keyword etermColorType contained bd ul
+syn match etermColorType contained display '\<\%(\d\|1[0-5]\)'
+
+syn keyword etermColorOptions contained color
+ \ nextgroup=etermColorNumber skipwhite
+
+syn keyword etermColorNumber contained bd ul nextgroup=etermColorSpec
+ \ skipwhite
+syn match etermColorNumber contained display '\<\%(\d\|1[0-5]\)'
+ \ nextgroup=etermColorSpec skipwhite
+
+syn match etermColorSpec contained display '\S\+'
+
+syn region etermColorContext fold transparent matchgroup=etermContext
+ \ start='^\s*begin\s\+color\>'
+ \ end='^\s*end\>'
+ \ contains=@etermGeneral,etermColorOptions
+
+syn keyword etermAttrOptions contained geometry nextgroup=etermGeometry
+ \ skipwhite
+
+syn match etermGeometry contained display '\d\+x\d++\d\++\d\+'
+
+syn keyword etermAttrOptions contained scrollbar_type
+ \ nextgroup=etermScrollbarType skipwhite
+
+syn keyword etermScrollbarType contained motif xterm next
+
+syn keyword etermAttrOptions contained font nextgroup=etermFontType
+ \ skipwhite
+
+syn keyword etermFontType contained bold nextgroup=etermFont skipwhite
+syn match etermFontType contained display '[0-5]' nextgroup=etermFont
+ \ skipwhite
+
+syn match etermFont contained display '\S\+'
+
+syn keyword etermFontType contained default nextgroup=etermNumber
+ \ skipwhite
+
+syn keyword etermFontType contained proportional nextgroup=etermBoolean
+ \ skipwhite
+
+syn keyword etermFontType contained fx nextgroup=etermString skipwhite
+
+syn keyword etermAttrOptions contained title name iconname
+ \ nextgroup=etermString skipwhite
+
+syn keyword etermAttrOptions contained scrollbar_width desktop
+ \ nextgroup=etermNumber skipwhite
+
+syn region etermAttrContext fold transparent matchgroup=etermContext
+ \ start='^\s*begin\s\+attributes\>'
+ \ end='^\s*end\>'
+ \ contains=@etermGeneral,etermAttrOptions
+
+syn keyword etermIClassOptions contained icon path nextgroup=etermString
+ \ skipwhite
+syn keyword etermIClassOptions contained cache nextgroup=etermNumber
+ \ skipwhite
+syn keyword etermIClassOptions contained anim nextgroup=etermNumber
+ \ skipwhite
+
+syn region etermIClassContext fold transparent matchgroup=etermContext
+ \ start='^\s*begin\s\+imageclasses\>'
+ \ end='^\s*end\>'
+ \ contains=@etermGeneral,etermImageContext,
+ \ etermIClassOptions
+
+syn keyword etermImageOptions contained type nextgroup=etermImageType
+ \ skipwhite
+
+syn keyword etermImageTypes contained background trough anchor up_arrow
+ \ left_arrow right_arrow menu menuitem
+ \ submenu button buttonbar down_arrow
+
+syn keyword etermImageOptions contained mode nextgroup=etermImageModes
+ \ skipwhite
+
+syn keyword etermImageModes contained image trans viewport auto solid
+ \ nextgroup=etermImageModesAllow skipwhite
+syn keyword etermImageModesAllow contained allow nextgroup=etermImageModesR
+ \ skipwhite
+syn keyword etermImageModesR contained image trans viewport auto solid
+
+syn keyword etermImageOptions contained state nextgroup=etermImageState
+ \ skipwhite
+
+syn keyword etermImageState contained normal selected clicked disabled
+
+syn keyword etermImageOptions contained color nextgroup=etermImageColorFG
+ \ skipwhite
+
+syn keyword etermImageColorFG contained '\S\+' nextgroup=etermImageColorBG
+ \ skipwhite
+
+syn keyword etermImageColorBG contained '\S\+'
+
+syn keyword etermImageOptions contained file nextgroup=etermString
+ \ skipwhite
+
+syn keyword etermImageOptions contained geom nextgroup=etermImageGeom
+ \ skipwhite
+
+syn match etermImageGeom contained display
+ \ '\s\+\%(\d\+x\d\++\d\++\d\+\)\=:\%(\%(tie\|scale\|hscale\|vscale\|propscale\)d\=\)\='
+
+syn keyword etermImageOptions contained cmod colormod
+ \ nextgroup=etermImageCmod skipwhite
+
+syn keyword etermImageCmod contained image red green blue
+ \ nextgroup=etermImageBrightness skipwhite
+
+syn match etermImageBrightness contained display '\<\(\d\+\|0x\x\{1,2}\)\>'
+ \ nextgroup=etermImageContrast skipwhite
+
+syn match etermImageContrast contained display '\<\(\d\+\|0x\x\{1,2}\)\>'
+ \ nextgroup=etermImageGamma skipwhite
+
+syn match etermImageGamma contained display '\<\(\d\+\|0x\x\{1,2}\)\>'
+ \ nextgroup=etermImageGamma skipwhite
+
+syn region etermImageOptions contained display oneline
+ \ matchgroup=etermImageOptions
+ \ start='border\|bevel\%(\s\+\%(up\|down\)\)\|padding'
+ \ end='$' contains=etermNumber
+
+syn region etermImageContext contained fold transparent
+ \ matchgroup=etermContext
+ \ start='^\s*begin\s\+image\>'
+ \ end='^\s*end\>'
+ \ contains=@etermGeneral,etermImageOptions
+
+syn keyword etermMenuItemOptions contained action
+ \ nextgroup=etermMenuItemAction skipwhite
+
+syn keyword etermMenuItemAction contained string echo submenu script
+ \ nextgroup=etermString skipwhite
+
+syn keyword etermMenuItemAction contained separator
+
+syn keyword etermMenuItemOptions contained text rtext nextgroup=etermString
+ \ skipwhite
+
+syn region etermMenuItemContext contained fold transparent
+ \ matchgroup=etermContext
+ \ start='^\s*begin\s\+menuitem\>'
+ \ end='^\s*end\>'
+ \ contains=@etermGeneral,etermMenuItemOptions
+
+syn keyword etermMenuOptions contained title nextgroup=etermString
+ \ skipwhite
+
+syn keyword etermMenuOptions contained font_name nextgroup=etermFont
+ \ skipwhite
+
+syn match etermMenuOptions contained display '\<sep\>\|-'
+
+syn region etermMenuContext fold transparent matchgroup=etermContext
+ \ start='^\s*begin\s\+menu\>'
+ \ end='^\s*end\>'
+ \ contains=@etermGeneral,etermMenuOptions,
+ \ etermMenuItemContext
+
+syn keyword etermBind contained bind nextgroup=etermBindMods
+ \ skipwhite
+
+syn keyword etermBindMods contained ctrl shift lock mod1 mod2 mod3 mod4
+ \ mod5 alt meta anymod
+ \ nextgroup=etermBindMods skipwhite
+
+syn keyword etermBindTo contained to nextgroup=etermBindType
+ \ skipwhite
+
+syn keyword etermBindType contained string echo menu script
+ \ nextgroup=etermBindParam skipwhite
+
+syn match etermBindParam contained display '\S\+'
+
+syn region etermActionsContext fold transparent matchgroup=etermContext
+ \ start='^\s*begin\s\+actions\>'
+ \ end='^\s*end\>'
+ \ contains=@etermGeneral,etermActionsOptions
+
+syn keyword etermButtonOptions contained font nextgroup=etermFont skipwhite
+syn keyword etermButtonOptions contained visible nextgroup=etermBoolean
+ \ skipwhite
+syn keyword etermButtonOptions contained dock nextgroup=etermDockOption
+ \ skipwhite
+
+syn keyword etermDockOption contained top bottom no
+
+syn keyword etermButton contained button nextgroup=etermButtonText
+ \ skipwhite
+
+syn region etermButtonText contained display oneline start=+"+
+ \ skip=+\\"+ end=+"+
+ \ nextgroup=etermButtonIcon skipwhite
+
+syn keyword etermButtonIcon contained icon nextgroup=etermButtonIconFile
+ \ skipwhite
+
+syn keyword etermButtonIconFile contained '\S\+' nextgroup=etermButtonAction
+ \ skipwhite
+
+syn keyword etermButtonAction contained action nextgroup=etermBindType
+ \ skipwhite
+
+syn region etermButtonContext fold transparent matchgroup=etermContext
+ \ start='^\s*begin\s\+button_bar\>'
+ \ end='^\s*end\>'
+ \ contains=@etermGeneral,etermButtonOptions
+
+syn keyword etermMultiOptions contained encoding nextgroup=etermEncoding
+ \ skipwhite
+
+syn keyword etermEncoding eucj sjis euckr big5 gb
+syn match etermEncoding display 'iso-10646'
+
+syn keyword etermMultiOptions contained font nextgroup=etermFontType
+ \ skipwhite
+
+syn region etermMultiContext fold transparent matchgroup=etermContext
+ \ start='^\s*begin\s\+multichar\>'
+ \ end='^\s*end\>'
+ \ contains=@etermGeneral,etermMultiOptions
+
+syn keyword etermXimOptions contained input_method
+ \ nextgroup=etermInputMethod skipwhite
+
+syn match etermInputMethod contained display '\S+'
+
+syn keyword etermXimOptions contained preedit_type
+ \ nextgroup=etermPreeditType skipwhite
+
+syn keyword etermPreeditType contained OverTheSpot OffTheSpot Root
+
+syn region etermXimContext fold transparent matchgroup=etermContext
+ \ start='^\s*begin\s\+xim\>'
+ \ end='^\s*end\>'
+ \ contains=@etermGeneral,etermXimOptions
+
+syn keyword etermTogOptions contained map_alert visual_bell login_shell
+ \ scrollbar utmp_logging meta8 iconic
+ \ no_input home_on_output home_on_input
+ \ scrollbar_floating scrollbar_right
+ \ scrollbar_popup borderless double_buffer
+ \ no_cursor pause xterm_select select_line
+ \ select_trailing_spaces report_as_keysyms
+ \ itrans immotile_trans buttonbar
+ \ resize_gravity nextgroup=etermBoolean
+ \ skipwhite
+
+syn region etermTogContext fold transparent matchgroup=etermContext
+ \ start='^\s*begin\s\+toggles\>'
+ \ end='^\s*end\>'
+ \ contains=@etermGeneral,etermTogOptions
+
+syn keyword etermKeyboardOptions contained smallfont_key bigfont_key keysym
+ \ nextgroup=etermKeysym skipwhite
+
+syn keyword etermKeysym contained '\S\+' nextgroup=etermString
+ \ skipwhite
+
+syn keyword etermKeyboardOptions contained meta_mod alt_mod numlock_mod
+ \ nextgroup=etermNumber skipwhite
+
+syn keyword etermKeyboardOptions contained greek app_keypad app_cursor
+ \ nextgroup=etermBoolean skipwhite
+
+syn region etermKeyboardContext fold transparent matchgroup=etermContext
+ \ start='^\s*begin\s\+keyboard\>'
+ \ end='^\s*end\>'
+ \ contains=@etermGeneral,etermKeyboardOptions
+
+syn keyword etermMiscOptions contained print_pipe cut_chars finished_title
+ \ finished_text term_name exec
+ \ nextgroup=etermString skipwhite
+
+syn keyword etermMiscOptions contained save_lines min_anchor_size
+ \ border_width line_space
+
+syn region etermMiscContext fold transparent matchgroup=etermContext
+ \ start='^\s*begin\s\+misc\>'
+ \ end='^\s*end\>'
+ \ contains=@etermGeneral,etermMiscOptions
+
+syn keyword etermEScreenOptions contained url nextgroup=etermURL skipwhite
+
+syn match etermURL contained display
+ \ '\<\%(screen\|twin\)://\%([^@:/]\+\%(@[^:/]\+\%(:[^/]\+\)\=\)\=\)\=/\S\+'
+
+syn keyword etermEScreenOptions contained firewall
+
+syn keyword etermEScreenOptions contained delay nextgroup=etermNumber
+ \ skipwhite
+
+syn keyword etermEScreenOptions contained bbar_font nextgroup=etermFont
+ \ skipwhite
+
+syn keyword etermEScreenOptions contained bbar_dock nextgroup=etermDockOption
+ \ skipwhite
+
+syn region etermEScreenContext fold transparent matchgroup=etermContext
+ \ start='^\s*begin\s\+escreen\>'
+ \ end='^\s*end\>'
+ \ contains=@etermGeneral,etermEScreenOptions
+
+if exists("eterm_minlines")
+ let b:eterm_minlines = eterm_minlines
+else
+ let b:eterm_minlines = 50
+endif
+exec "syn sync minlines=" . b:eterm_minlines
+
+hi def link etermTodo Todo
+hi def link etermComment Comment
+hi def link etermMagic PreProc
+hi def link etermNumber Number
+hi def link etermString String
+hi def link etermBoolean Boolean
+hi def link etermPreProc PreProc
+hi def link etermFunctions Function
+hi def link etermKeyMod Constant
+hi def link etermOption Keyword
+hi def link etermColorOptions etermOption
+hi def link etermColor String
+hi def link etermVideoType Type
+hi def link etermColorType Type
+hi def link etermColorNumber Number
+hi def link etermColorSpec etermColor
+hi def link etermContext Keyword
+hi def link etermAttrOptions etermOption
+hi def link etermGeometry String
+hi def link etermScrollbarType Type
+hi def link etermFontType Type
+hi def link etermIClassOptions etermOption
+hi def link etermImageOptions etermOption
+hi def link etermImageTypes Type
+hi def link etermImageModes Type
+hi def link etermImageModesAllow Keyword
+hi def link etermImageModesR Type
+hi def link etermImageState Keyword
+hi def link etermImageColorFG etermColor
+hi def link etermImageColorBG etermColor
+hi def link etermImageGeom String
+hi def link etermImageCmod etermOption
+hi def link etermImageBrightness Number
+hi def link etermImageContrast Number
+hi def link etermImageGamma Number
+hi def link etermMenuItemOptions etermOption
+hi def link etermMenuItemAction Keyword
+hi def link etermMenuOptions etermOption
+hi def link etermBind Keyword
+hi def link etermBindMods Identifier
+hi def link etermBindTo Keyword
+hi def link etermBindType Type
+hi def link etermBindParam String
+hi def link etermButtonOptions etermOption
+hi def link etermDockOption etermOption
+hi def link etermButtonText String
+hi def link etermButtonIcon String
+hi def link etermButtonIconFile String
+hi def link etermButtonAction Keyword
+hi def link etermMultiOptions etermOption
+hi def link etermEncoding Identifier
+hi def link etermXimOptions etermOption
+hi def link etermInputMethod Identifier
+hi def link etermPreeditType Type
+hi def link etermTogOptions etermOption
+hi def link etermKeyboardOptions etermOption
+hi def link etermKeysym Constant
+hi def link etermMiscOptions etermOption
+hi def link etermEScreenOptions etermOption
+hi def link etermURL Identifier
+
+let b:current_syntax = "eterm"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/euphoria3.vim b/runtime/syntax/euphoria3.vim
new file mode 100644
index 0000000..ece1402
--- /dev/null
+++ b/runtime/syntax/euphoria3.vim
@@ -0,0 +1,133 @@
+" Vim syntax file
+" Language: Euphoria 3.1.1 - supports DOS - (http://www.rapideuphoria.com/)
+" Maintainer: Shian Lee
+" Last Change: 2014 Feb 24 (for Vim 7.4)
+" Remark: Euphoria has two syntax files, euphoria3.vim and euphoria4.vim;
+" For details see :help ft-euphoria-syntax
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Reset compatible-options to Vim default value, just in case:
+let s:save_cpo = &cpo
+set cpo&vim
+
+" Should suffice for very long expressions:
+syn sync lines=40
+
+" Euphoria is a case-sensitive language (with only 4 builtin types):
+syntax case match
+
+" Keywords/Builtins for Debug - from $EUDIR/bin/keywords.e:
+syn keyword euphoria3Debug with without trace profile
+syn keyword euphoria3Debug profile_time warning type_check
+
+" Keywords (Statments) - from $EUDIR/bin/keywords.e:
+syn keyword euphoria3Keyword if end then procedure else for return
+syn keyword euphoria3Keyword do elsif while type constant to and or
+syn keyword euphoria3Keyword exit function global by not include
+syn keyword euphoria3Keyword xor
+
+" Builtins (Identifiers) - from $EUDIR/bin/keywords.e:
+syn keyword euphoria3Builtin length puts integer sequence position object
+syn keyword euphoria3Builtin append prepend print printf
+syn keyword euphoria3Builtin clear_screen floor getc gets get_key
+syn keyword euphoria3Builtin rand repeat atom compare find match
+syn keyword euphoria3Builtin time command_line open close getenv
+syn keyword euphoria3Builtin sqrt sin cos tan log system date remainder
+syn keyword euphoria3Builtin power machine_func machine_proc abort peek poke
+syn keyword euphoria3Builtin call sprintf arctan and_bits or_bits xor_bits
+syn keyword euphoria3Builtin not_bits pixel get_pixel mem_copy mem_set
+syn keyword euphoria3Builtin c_proc c_func routine_id call_proc call_func
+syn keyword euphoria3Builtin poke4 peek4s peek4u equal system_exec
+syn keyword euphoria3Builtin platform task_create task_schedule task_yield
+syn keyword euphoria3Builtin task_self task_suspend task_list
+syn keyword euphoria3Builtin task_status task_clock_stop task_clock_start
+syn keyword euphoria3Builtin find_from match_from
+" Builtins (Identifiers) shortcuts for length() and print():
+syn match euphoria3Builtin "\$"
+syn match euphoria3Builtin "?"
+
+" Library Identifiers (Function) - from $EUDIR/doc/library.doc:
+syn keyword euphoria3Library reverse sort custom_sort lower upper
+syn keyword euphoria3Library wildcard_match wildcard_file arcsin
+syn keyword euphoria3Library arccos PI flush lock_file unlock_file
+syn keyword euphoria3Library pretty_print sprint get_bytes prompt_string
+syn keyword euphoria3Library wait_key get prompt_number value seek where
+syn keyword euphoria3Library current_dir chdir dir walk_dir allow_break
+syn keyword euphoria3Library check_break get_mouse mouse_events mouse_pointer
+syn keyword euphoria3Library tick_rate sleep get_position graphics_mode
+syn keyword euphoria3Library video_config scroll wrap text_color bk_color
+syn keyword euphoria3Library palette all_palette get_all_palette read_bitmap
+syn keyword euphoria3Library save_bitmap get_active_page set_active_page
+syn keyword euphoria3Library get_display_page set_display_page sound
+syn keyword euphoria3Library cursor text_rows get_screen_char put_screen_char
+syn keyword euphoria3Library save_text_image display_text_image draw_line
+syn keyword euphoria3Library polygon ellipse save_screen save_image display_image
+syn keyword euphoria3Library dos_interrupt allocate free allocate_low free_low
+syn keyword euphoria3Library allocate_string register_block unregister_block
+syn keyword euphoria3Library get_vector set_vector lock_memory int_to_bytes
+syn keyword euphoria3Library bytes_to_int int_to_bits bits_to_int atom_to_float64
+syn keyword euphoria3Library atom_to_float32 float64_to_atom float32_to_atom
+syn keyword euphoria3Library set_rand use_vesa crash_file crash_message
+syn keyword euphoria3Library crash_routine open_dll define_c_proc define_c_func
+syn keyword euphoria3Library define_c_var call_back message_box free_console
+syn keyword euphoria3Library instance
+
+" Library Identifiers (Function) - from $EUDIR/doc/database.doc:
+syn keyword euphoria3Library db_create db_open db_select db_close db_create_table
+syn keyword euphoria3Library db_select_table db_rename_table db_delete_table
+syn keyword euphoria3Library db_table_list db_table_size db_find_key db_record_key
+syn keyword euphoria3Library db_record_data db_insert db_delete_record
+syn keyword euphoria3Library db_replace_data db_compress db_dump db_fatal_id
+
+" Linux shell comment (#!...):
+syn match euphoria3Comment "\%^#!.*$"
+" Comment on one line:
+syn region euphoria3Comment start=/--/ end=/$/
+
+" Delimiters and brackets:
+syn match euphoria3Delimit "[([\])]"
+syn match euphoria3Delimit "\.\."
+syn match euphoria3Operator "[{}]"
+
+" Character constant:
+syn region euphoria3Char start=/'/ skip=/\\'\|\\\\/ end=/'/ oneline
+
+" String constant:
+syn region euphoria3String start=/"/ skip=/\\"\|\\\\/ end=/"/ oneline
+
+" Hexadecimal integer:
+syn match euphoria3Number "#[0-9A-F]\+\>"
+
+" Integer/Floating point without a dot:
+syn match euphoria3Number "\<\d\+\>"
+" Floating point with dot:
+syn match euphoria3Number "\<\d\+\.\d*\>"
+" Floating point starting with a dot:
+syn match euphoria3Number "\.\d\+\>"
+" Boolean constants:
+syn keyword euphoria3Boolean true TRUE false FALSE
+
+" Define the default highlighting.
+" Only used when an item doesn't have highlighting yet:
+hi def link euphoria3Comment Comment
+hi def link euphoria3String String
+hi def link euphoria3Char Character
+hi def link euphoria3Number Number
+hi def link euphoria3Boolean Boolean
+hi def link euphoria3Builtin Identifier
+hi def link euphoria3Library Function
+hi def link euphoria3Keyword Statement
+hi def link euphoria3Operator Statement
+hi def link euphoria3Debug Debug
+hi def link euphoria3Delimit Delimiter
+
+let b:current_syntax = "euphoria3"
+
+" Restore current compatible-options:
+let &cpo = s:save_cpo
+unlet s:save_cpo
+
diff --git a/runtime/syntax/euphoria4.vim b/runtime/syntax/euphoria4.vim
new file mode 100644
index 0000000..5e668a7
--- /dev/null
+++ b/runtime/syntax/euphoria4.vim
@@ -0,0 +1,245 @@
+" Vim syntax file
+" Language: Euphoria 4.0.5 (http://www.openeuphoria.org/)
+" Maintainer: Shian Lee
+" Last Change: 2014 Feb 26 (for Vim 7.4)
+" Remark: Euphoria has two syntax files, euphoria3.vim and euphoria4.vim;
+" For details see :help ft-euphoria-syntax
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Reset compatible-options to Vim default value, just in case:
+let s:save_cpo = &cpo
+set cpo&vim
+
+" Should suffice for very long strings and expressions:
+syn sync lines=40
+
+" Euphoria is a case-sensitive language (with only 4 builtin types):
+syntax case match
+
+" Some keywords/Builtins for Debug - from $EUDIR/include/euphoria/keywords.e:
+syn keyword euphoria4Debug with without trace profile batch check indirect
+syn keyword euphoria4Debug includes inline warning define
+
+" Keywords for conditional compilation - from $EUDIR/include/euphoria/keywords.e:
+syn keyword euphoria4PreProc elsedef elsifdef ifdef
+
+" Keywords (Statments) - from $EUDIR/include/euphoria/keywords.e:
+syn keyword euphoria4Keyword and as break by case constant continue do else
+syn keyword euphoria4Keyword elsif end entry enum exit export
+syn keyword euphoria4Keyword fallthru for function global goto if include
+syn keyword euphoria4Keyword label loop namespace not or override procedure
+syn keyword euphoria4Keyword public retry return routine switch then to type
+syn keyword euphoria4Keyword until while xor
+
+" Builtins (Identifiers) - from $EUDIR/include/euphoria/keywords.e:
+syn keyword euphoria4Builtin abort and_bits append arctan atom c_func c_proc
+syn keyword euphoria4Builtin call call_func call_proc clear_screen close
+syn keyword euphoria4Builtin command_line compare cos date delete delete_routine
+syn keyword euphoria4Builtin equal find floor get_key getc getenv gets hash
+syn keyword euphoria4Builtin head include_paths insert integer length log
+syn keyword euphoria4Builtin machine_func machine_proc match mem_copy mem_set
+syn keyword euphoria4Builtin not_bits object open option_switches or_bits peek
+syn keyword euphoria4Builtin peek2s peek2u peek4s peek4u peek_string peeks pixel
+syn keyword euphoria4Builtin platform poke poke2 poke4 position power prepend
+syn keyword euphoria4Builtin print printf puts rand remainder remove repeat
+syn keyword euphoria4Builtin replace routine_id sequence sin splice sprintf
+syn keyword euphoria4Builtin sqrt system system_exec tail tan task_clock_start
+syn keyword euphoria4Builtin task_clock_stop task_create task_list task_schedule
+syn keyword euphoria4Builtin task_self task_status task_suspend task_yield time
+syn keyword euphoria4Builtin xor_bits
+" Builtins (Identifiers) shortcuts for length() and print():
+syn match euphoria4Builtin "\$"
+syn match euphoria4Builtin "?"
+
+" Library Identifiers (Function) - grep from $EUDIR/include/*:
+syn keyword euphoria4Library DEP_on SyntaxColor abbreviate_path abs absolute_path
+syn keyword euphoria4Library accept add add_item all_copyrights all_matches
+syn keyword euphoria4Library allocate allocate_code allocate_data allocate_low
+syn keyword euphoria4Library allocate_pointer_array allocate_protect
+syn keyword euphoria4Library allocate_string allocate_string_pointer_array
+syn keyword euphoria4Library allocate_wstring allocations allow_break any_key
+syn keyword euphoria4Library append_lines apply approx arccos arccosh arcsin
+syn keyword euphoria4Library arcsinh arctanh assert at atan2 atom_to_float32
+syn keyword euphoria4Library atom_to_float64 attr_to_colors avedev average
+syn keyword euphoria4Library begins binary_search bind binop_ok bits_to_int
+syn keyword euphoria4Library bk_color breakup build_commandline build_list
+syn keyword euphoria4Library bytes_to_int calc_hash calc_primes call_back
+syn keyword euphoria4Library canon2win canonical canonical_path ceil
+syn keyword euphoria4Library central_moment chance char_test chdir
+syn keyword euphoria4Library check_all_blocks check_break check_free_list
+syn keyword euphoria4Library checksum clear clear_directory cmd_parse
+syn keyword euphoria4Library colors_to_attr columnize combine connect
+syn keyword euphoria4Library console_colors copy copy_file cosh count crash
+syn keyword euphoria4Library crash_file crash_message crash_routine create
+syn keyword euphoria4Library create_directory create_file curdir current_dir
+syn keyword euphoria4Library cursor custom_sort datetime days_in_month
+syn keyword euphoria4Library days_in_year db_cache_clear db_clear_table db_close
+syn keyword euphoria4Library db_compress db_connect db_create db_create_table
+syn keyword euphoria4Library db_current db_current_table db_delete_record
+syn keyword euphoria4Library db_delete_table db_dump db_fetch_record db_find_key
+syn keyword euphoria4Library db_get_errors db_get_recid db_insert db_open
+syn keyword euphoria4Library db_record_data db_record_key db_record_recid
+syn keyword euphoria4Library db_rename_table db_replace_data db_replace_recid
+syn keyword euphoria4Library db_select db_select_table db_set_caching
+syn keyword euphoria4Library db_table_list db_table_size deallocate decanonical
+syn keyword euphoria4Library decode defaulted_value defaultext define_c_func
+syn keyword euphoria4Library define_c_proc define_c_var deg2rad delete_file
+syn keyword euphoria4Library dep_works dequote deserialize diff dir dir_size
+syn keyword euphoria4Library dirname disk_metrics disk_size display
+syn keyword euphoria4Library display_text_image dnsquery driveid dump dup emovavg
+syn keyword euphoria4Library encode ends ensure_in_list ensure_in_range
+syn keyword euphoria4Library error_code error_message error_no error_string
+syn keyword euphoria4Library error_to_string escape euphoria_copyright exec
+syn keyword euphoria4Library exp extract fetch fib file_exists file_length
+syn keyword euphoria4Library file_timestamp file_type filebase fileext filename
+syn keyword euphoria4Library filter find_all find_all_but find_any find_each
+syn keyword euphoria4Library find_nested find_replace find_replace_callback
+syn keyword euphoria4Library find_replace_limit flags_to_string flatten
+syn keyword euphoria4Library float32_to_atom float64_to_atom flush for_each
+syn keyword euphoria4Library format frac free free_code free_console free_low
+syn keyword euphoria4Library free_pointer_array from_date from_unix gcd geomean
+syn keyword euphoria4Library get get_bytes get_charsets get_def_lang
+syn keyword euphoria4Library get_display_page get_dstring get_encoding_properties
+syn keyword euphoria4Library get_integer16 get_integer32 get_lang_path get_lcid
+syn keyword euphoria4Library get_mouse get_option get_ovector_size get_pid
+syn keyword euphoria4Library get_position get_rand get_screen_char get_text
+syn keyword euphoria4Library get_vector getaddrinfo getmxrr getnsrr graphics_mode
+syn keyword euphoria4Library harmean has has_console has_match hex_text
+syn keyword euphoria4Library host_by_addr host_by_name http_get http_post iff
+syn keyword euphoria4Library iif info init_class init_curdir insertion_sort
+syn keyword euphoria4Library instance int_to_bits int_to_bytes intdiv
+syn keyword euphoria4Library is_DEP_supported is_empty is_even is_even_obj
+syn keyword euphoria4Library is_in_list is_in_range is_inetaddr is_leap_year
+syn keyword euphoria4Library is_match is_using_DEP is_win_nt join join_path
+syn keyword euphoria4Library keep_comments keep_newlines key_codes keys keyvalues
+syn keyword euphoria4Library kill kurtosis lang_load larger_of largest last
+syn keyword euphoria4Library listen load load_map locate_file lock_file
+syn keyword euphoria4Library lock_memory log10 lookup lower malloc mapping
+syn keyword euphoria4Library match_all match_any match_replace matches max
+syn keyword euphoria4Library maybe_any_key median memory_used merge message_box
+syn keyword euphoria4Library mid min minsize mod mode money mouse_events
+syn keyword euphoria4Library mouse_pointer movavg move_file nested_get
+syn keyword euphoria4Library nested_put new new_extra new_from_kvpairs
+syn keyword euphoria4Library new_from_string new_time next_prime now now_gmt
+syn keyword euphoria4Library number open_dll optimize option_spec_to_string
+syn keyword euphoria4Library or_all pad_head pad_tail pairs parse
+syn keyword euphoria4Library parse_commandline parse_ip_address parse_querystring
+syn keyword euphoria4Library parse_url patch pathinfo pathname pcre_copyright
+syn keyword euphoria4Library peek_end peek_top peek_wstring pivot platform_name
+syn keyword euphoria4Library poke_string poke_wstring pop powof2 prepare_block
+syn keyword euphoria4Library pretty_print pretty_sprint prime_list process_lines
+syn keyword euphoria4Library product project prompt_number prompt_string proper
+syn keyword euphoria4Library push put put_integer16 put_integer32 put_screen_char
+syn keyword euphoria4Library quote rad2deg rand_range range raw_frequency read
+syn keyword euphoria4Library read_bitmap read_file read_lines receive receive_from
+syn keyword euphoria4Library register_block rehash remove_all remove_directory
+syn keyword euphoria4Library remove_dups remove_item remove_subseq rename_file
+syn keyword euphoria4Library repeat_pattern reset retain_all reverse rfind rmatch
+syn keyword euphoria4Library rnd rnd_1 roll rotate rotate_bits round safe_address
+syn keyword euphoria4Library sample save_bitmap save_map save_text_image scroll
+syn keyword euphoria4Library seek select send send_to serialize series
+syn keyword euphoria4Library service_by_name service_by_port set
+syn keyword euphoria4Library set_accumulate_summary set_charsets set_colors
+syn keyword euphoria4Library set_decimal_mark set_def_lang set_default_charsets
+syn keyword euphoria4Library set_encoding_properties set_keycodes set_lang_path
+syn keyword euphoria4Library set_option set_rand set_test_abort set_test_verbosity
+syn keyword euphoria4Library set_vector set_wait_on_summary setenv shift_bits
+syn keyword euphoria4Library show_block show_help show_tokens shuffle shutdown
+syn keyword euphoria4Library sign sim_index sinh size skewness sleep slice small
+syn keyword euphoria4Library smaller_of smallest sort sort_columns sound split
+syn keyword euphoria4Library split_any split_limit split_path sprint start_time
+syn keyword euphoria4Library statistics stdev store string_numbers subtract sum
+syn keyword euphoria4Library sum_central_moments swap tanh task_delay temp_file
+syn keyword euphoria4Library test_equal test_exec test_fail test_false
+syn keyword euphoria4Library test_not_equal test_pass test_read test_report
+syn keyword euphoria4Library test_true test_write text_color text_rows threshold
+syn keyword euphoria4Library tick_rate to_integer to_number to_string to_unix
+syn keyword euphoria4Library tokenize_file tokenize_string top transform translate
+syn keyword euphoria4Library transmute trim trim_head trim_tail trsprintf trunc
+syn keyword euphoria4Library type_of uname unlock_file unregister_block unsetenv
+syn keyword euphoria4Library upper use_vesa valid valid_index value values version
+syn keyword euphoria4Library version_date version_major version_minor version_node
+syn keyword euphoria4Library version_patch version_revision version_string
+syn keyword euphoria4Library version_string_long version_string_short version_type
+syn keyword euphoria4Library video_config vlookup vslice wait_key walk_dir
+syn keyword euphoria4Library warning_file weeks_day where which_bit wildcard_file
+syn keyword euphoria4Library wildcard_match wrap write write_file write_lines
+syn keyword euphoria4Library writef writefln years_day
+
+" Library Identifiers (Type) - grep from $EUDIR/include/*:
+syn keyword euphoria4Type ascii_string boolean bordered_address byte_range
+syn keyword euphoria4Type case_flagset_type color cstring
+syn keyword euphoria4Type file_number file_position graphics_point
+syn keyword euphoria4Type integer_array lcid lock_type machine_addr map
+syn keyword euphoria4Type mixture number_array option_spec
+syn keyword euphoria4Type page_aligned_address positive_int process regex
+syn keyword euphoria4Type sequence_array socket stack std_library_address
+syn keyword euphoria4Type string t_alnum t_alpha t_ascii t_boolean
+syn keyword euphoria4Type t_bytearray t_cntrl t_consonant t_digit t_display
+syn keyword euphoria4Type t_graph t_identifier t_lower t_print t_punct
+syn keyword euphoria4Type t_space t_specword t_text t_upper t_vowel t_xdigit
+syn keyword euphoria4Type valid_memory_protection_constant valid_wordsize
+
+" Linux shell comment (#!...):
+syn match euphoria4Comment "\%^#!.*$"
+" Single and multilines comments:
+syn region euphoria4Comment start=/--/ end=/$/
+syn region euphoria4Comment start="/\*" end="\*/"
+
+" Delimiters and brackets:
+syn match euphoria4Delimit "[([\])]"
+syn match euphoria4Delimit "\.\."
+syn match euphoria4Delimit ":"
+syn match euphoria4Operator "[{}]"
+
+" Character constant:
+syn region euphoria4Char start=/'/ skip=/\\'\|\\\\/ end=/'/ oneline
+
+" String constant (""" must be *after* "):
+syn region euphoria4String start=/"/ skip=/\\"\|\\\\/ end=/"/ oneline
+syn region euphoria4String start=/b"\|x"/ end=/"/
+syn region euphoria4String start=/`/ end=/`/
+syn region euphoria4String start=/"""/ end=/"""/
+
+" Binary/Octal/Decimal/Hexadecimal integer:
+syn match euphoria4Number "\<0b[01_]\+\>"
+syn match euphoria4Number "\<0t[0-7_]\+\>"
+syn match euphoria4Number "\<0d[0-9_]\+\>"
+syn match euphoria4Number "\<0x[0-9A-Fa-f_]\+\>"
+syn match euphoria4Number "#[0-9A-Fa-f_]\+\>"
+
+" Integer/Floating point without a dot:
+syn match euphoria4Number "\<\d\+\>"
+" Floating point with dot:
+syn match euphoria4Number "\<\d\+\.\d*\>"
+" Floating point starting with a dot:
+syn match euphoria4Number "\.\d\+\>"
+" Boolean constants:
+syn keyword euphoria4Boolean true TRUE false FALSE
+
+" Define the default highlighting.
+" Only used when an item doesn't have highlighting yet:
+hi def link euphoria4Comment Comment
+hi def link euphoria4String String
+hi def link euphoria4Char Character
+hi def link euphoria4Number Number
+hi def link euphoria4Boolean Boolean
+hi def link euphoria4Builtin Identifier
+hi def link euphoria4Library Function
+hi def link euphoria4Type Type
+hi def link euphoria4Keyword Statement
+hi def link euphoria4Operator Statement
+hi def link euphoria4Debug Debug
+hi def link euphoria4Delimit Delimiter
+hi def link euphoria4PreProc PreProc
+
+let b:current_syntax = "euphoria4"
+
+" Restore current compatible-options:
+let &cpo = s:save_cpo
+unlet s:save_cpo
+
diff --git a/runtime/syntax/eviews.vim b/runtime/syntax/eviews.vim
new file mode 100644
index 0000000..03cfb25
--- /dev/null
+++ b/runtime/syntax/eviews.vim
@@ -0,0 +1,87 @@
+" Vim syntax file
+" Language: Eviews (http://www.eviews.com)
+" Maintainer: Vaidotas Zemlys <zemlys@gmail.com>
+" Last Change: 2006 Apr 30
+" Filenames: *.prg
+" URL: http://uosis.mif.vu.lt/~zemlys/vim-syntax/eviews.vim
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=@,48-57,_,.
+
+syn case match
+
+" Comment
+syn match eComment /\'.*/
+
+" Constant
+" string enclosed in double quotes
+syn region eString start=/"/ skip=/\\\\\|\\"/ end=/"/
+" number with no fractional part or exponent
+syn match eNumber /\d\+/
+" floating point number with integer and fractional parts and optional exponent
+syn match eFloat /\d\+\.\d*\([Ee][-+]\=\d\+\)\=/
+" floating point number with no integer part and optional exponent
+syn match eFloat /\.\d\+\([Ee][-+]\=\d\+\)\=/
+" floating point number with no fractional part and optional exponent
+syn match eFloat /\d\+[Ee][-+]\=\d\+/
+
+" Identifier
+" identifier with leading letter and optional following keyword characters
+syn match eIdentifier /\a\k*/
+
+" Eviews Programing Language
+syn keyword eProgLang @date else endif @errorcount @evpath exitloop for if @isobject next poff pon return statusline step stop @temppath then @time to @toc wend while include call subroutine endsub and or
+
+" Eviews Objects, Views and Procedures
+syn keyword eOVP alpha coef equation graph group link logl matrix model pool rowvector sample scalar series sspace sym system table text valmap var vector
+
+
+" Standard Eviews Commands
+syn keyword eStdCmd 3sls add addassign addinit addtext align alpha append arch archtest area arlm arma arroots auto axis bar bdstest binary block boxplot boxplotby bplabel cause ccopy cd cdfplot cellipse censored cfetch checkderivs chow clabel cleartext close coef coefcov coint comment control copy cor correl correlsq count cov create cross data datelabel dates db dbcopy dbcreate dbdelete dbopen dbpack dbrebuild dbrename dbrepair decomp define delete derivs describe displayname do draw driconvert drop dtable ec edftest endog eqs equation errbar exclude exit expand fetch fill fiml fit forecast freeze freq frml garch genr gmm grads graph group hconvert hfetch hilo hist hlabel hpf impulse jbera kdensity kerfit label laglen legend line linefit link linkto load logit logl ls makecoint makederivs makeendog makefilter makegarch makegrads makegraph makegroup makelimits makemodel makeregs makeresids makesignals makestates makestats makesystem map matrix means merge metafile ml model msg name nnfit open options ordered output override pageappend pagecontract pagecopy pagecreate pagedelete pageload pagerename pagesave pageselect pagestack pagestruct pageunstack param pcomp pie pool predict print probit program qqplot qstats range read rename representations resample reset residcor residcov resids results rls rndint rndseed rowvector run sample save scalar scale scat scatmat scenario seas seasplot series set setbpelem setcell setcolwidth setconvert setelem setfillcolor setfont setformat setheight setindent setjust setline setlines setmerge settextcolor setwidth sheet show signalgraphs smooth smpl solve solveopt sort spec spike sspace statby statefinal stategraphs stateinit stats statusline stomna store structure sur svar sym system table template testadd testbtw testby testdrop testexog testfit testlags teststat text tic toc trace tramoseats tsls unlink update updatecoefs uroot usage valmap var vars vector wald wfcreate wfopen wfsave wfselect white wls workfile write wtsls x11 x12 xy xyline xypair
+
+" Constant Identifier
+syn match eConstant /\!\k*/
+" String Identifier
+syn match eStringId /%\k*/
+" Command Identifier
+syn match eCommand /@\k*/
+
+" Special
+syn match eDelimiter /[,;:]/
+
+" Error
+syn region eRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError
+syn region eRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError
+syn region eRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError
+syn match eError /[)\]}]/
+syn match eBraceError /[)}]/ contained
+syn match eCurlyError /[)\]]/ contained
+syn match eParenError /[\]}]/ contained
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link eComment Comment
+hi def link eConstant Identifier
+hi def link eStringId Identifier
+hi def link eCommand Type
+hi def link eString String
+hi def link eNumber Number
+hi def link eBoolean Boolean
+hi def link eFloat Float
+hi def link eConditional Conditional
+hi def link eProgLang Statement
+hi def link eOVP Statement
+hi def link eStdCmd Statement
+hi def link eIdentifier Normal
+hi def link eDelimiter Delimiter
+hi def link eError Error
+hi def link eBraceError Error
+hi def link eCurlyError Error
+hi def link eParenError Error
+
+let b:current_syntax="eviews"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/exim.vim b/runtime/syntax/exim.vim
new file mode 100644
index 0000000..4edc0d7
--- /dev/null
+++ b/runtime/syntax/exim.vim
@@ -0,0 +1,105 @@
+" Vim syntax file
+" This is a GENERATED FILE. Please always refer to source file at the URI below.
+" Language: Exim configuration file exim.conf
+" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
+" Last Change: 2002-10-15
+" URL: http://trific.ath.cx/Ftp/vim/syntax/exim.vim
+
+" Setup
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+" Base constructs
+syn match eximComment "^\s*#.*$" contains=eximFixme
+syn match eximComment "\s#.*$" contains=eximFixme
+syn keyword eximFixme FIXME TODO XXX NOT contained
+syn keyword eximConstant true false yes no
+syn match eximNumber "\<\d\+[KM]\?\>"
+syn match eximNumber "\<0[xX]\x\+\>"
+syn match eximNumber "\<\d\+\(\.\d\{,3}\)\?\>"
+syn match eximTime "\<\(\d\+[wdhms]\)\+\>"
+syn match eximSpecialChar "\\[\\nrt]\|\\\o\{1,3}\|\\x\x\{1,2}"
+syn region eximMacroDefinition matchgroup=eximMacroName start="^[A-Z]\i*\s*=" end="$" skip="\\\s*$" transparent
+
+syn match eximDriverName "\<\(aliasfile\|appendfile\|autoreply\|domainlist\|forwardfile\|ipliteral\|iplookup\|lmtp\|localuser\|lookuphost\|pipe\|queryprogram\|smartuser\|smtp\)\>"
+syn match eximTransport "^\s*\i\+:"
+
+" Options
+syn keyword eximEnd end
+syn keyword eximKeyword accept_8bitmime accept_timeout admin_groups allow_mx_to_ip always_bcc auth_always_advertise auth_hosts auth_over_tls_hosts auto_thaw bi_command check_log_inodes check_log_space check_spool_inodes check_spool_space collapse_source_routes daemon_smtp_port daemon_smtp_service debug_level delay_warning delay_warning_condition deliver_load_max deliver_queue_load_max delivery_date_remove dns_again_means_nonexist dns_check_names dns_check_names_pattern dns_retrans dns_ipv4_lookup dns_retry envelope_to_remove errmsg_text errmsg_file errors_address errors_copy errors_reply_to exim_group exim_path exim_user extract_addresses_remove_arguments finduser_retries forbid_domain_literals freeze_tell_mailmaster gecos_name gecos_pattern headers_check_syntax headers_checks_fail headers_sender_verify headers_sender_verify_errmsg helo_accept_junk_hosts helo_strict_syntax helo_verify hold_domains host_accept_relay host_auth_accept_relay host_lookup host_reject host_reject_recipients hosts_treat_as_local ignore_errmsg_errors ignore_errmsg_errors_after ignore_fromline_hosts ignore_fromline_local keep_malformed kill_ip_options ldap_default_servers local_domains local_domains_include_host local_domains_include_host_literals local_from_check local_from_prefix local_from_suffix local_interfaces localhost_number locally_caseless log_all_parents log_arguments log_file_path log_incoming_port log_ip_options log_level log_queue_run_level log_received_recipients log_received_sender log_refused_recipients log_rewrites log_sender_on_delivery log_smtp_confirmation log_smtp_connections log_smtp_syntax_errors log_subject lookup_open_max max_username_length message_body_visible message_filter message_filter_directory_transport message_filter_directory2_transport message_filter_file_transport message_filter_group message_filter_pipe_transport message_filter_reply_transport message_filter_user message_id_header_text message_size_limit message_size_limit_count_recipients move_frozen_messages mysql_servers never_users nobody_group nobody_user percent_hack_domains perl_at_start perl_startup pgsql_servers pid_file_path preserve_message_logs primary_hostname print_topbitchars prod_requires_admin prohibition_message qualify_domain qualify_recipient queue_list_requires_admin queue_only queue_only_file queue_only_load queue_remote_domains queue_run_in_order queue_run_max queue_smtp_domains rbl_domains rbl_hosts rbl_log_headers rbl_log_rcpt_count rbl_reject_recipients rbl_warn_header received_header_text received_headers_max receiver_try_verify receiver_unqualified_hosts receiver_verify receiver_verify_addresses receiver_verify_hosts receiver_verify_senders recipients_max recipients_max_reject recipients_reject_except recipients_reject_except_senders refuse_ip_options relay_domains relay_domains_include_local_mx relay_match_host_or_sender remote_max_parallel remote_sort retry_data_expire retry_interval_max return_path_remove return_size_limit rfc1413_hosts rfc1413_query_timeout security sender_address_relay sender_address_relay_hosts sender_reject sender_reject_recipients sender_try_verify sender_unqualified_hosts sender_verify sender_verify_batch sender_verify_callback_domains sender_verify_callback_timeout sender_verify_fixup sender_verify_hosts sender_verify_hosts_callback sender_verify_max_retry_rate sender_verify_reject smtp_accept_keepalive smtp_accept_max smtp_accept_max_per_host smtp_accept_queue smtp_accept_queue_per_connection smtp_accept_reserve smtp_banner smtp_check_spool_space smtp_connect_backlog smtp_etrn_command smtp_etrn_hosts smtp_etrn_serialize smtp_expn_hosts smtp_load_reserve smtp_receive_timeout smtp_reserve_hosts smtp_verify split_spool_directory spool_directory strip_excess_angle_brackets strip_trailing_dot syslog_timestamp timeout_frozen_after timestamps_utc timezone tls_advertise_hosts tls_certificate tls_dhparam tls_host_accept_relay tls_hosts tls_log_cipher tls_log_peerdn tls_privatekey tls_verify_certificates tls_verify_ciphers tls_verify_hosts trusted_groups trusted_users unknown_login unknown_username untrusted_set_sender uucp_from_pattern uucp_from_sender warnmsg_file
+syn keyword eximKeyword no_accept_8bitmime no_allow_mx_to_ip no_always_bcc no_auth_always_advertise no_collapse_source_routes no_delivery_date_remove no_dns_check_names no_envelope_to_remove no_extract_addresses_remove_arguments no_forbid_domain_literals no_freeze_tell_mailmaster no_headers_check_syntax no_headers_checks_fail no_headers_sender_verify no_headers_sender_verify_errmsg no_helo_strict_syntax no_ignore_errmsg_errors no_ignore_fromline_local no_kill_ip_options no_local_domains_include_host no_local_domains_include_host_literals no_local_from_check no_locally_caseless no_log_all_parents no_log_arguments no_log_incoming_port no_log_ip_options no_log_received_recipients no_log_received_sender no_log_refused_recipients no_log_rewrites no_log_sender_on_delivery no_log_smtp_confirmation no_log_smtp_connections no_log_smtp_syntax_errors no_log_subject no_message_size_limit_count_recipients no_move_frozen_messages no_preserve_message_logs no_print_topbitchars no_prod_requires_admin no_queue_list_requires_admin no_queue_only no_rbl_log_headers no_rbl_log_rcpt_count no_rbl_reject_recipients no_receiver_try_verify no_receiver_verify no_recipients_max_reject no_refuse_ip_options no_relay_domains_include_local_mx no_relay_match_host_or_sender no_return_path_remove no_sender_try_verify no_sender_verify no_sender_verify_batch no_sender_verify_fixup no_sender_verify_reject no_smtp_accept_keepalive no_smtp_check_spool_space no_smtp_etrn_serialize no_smtp_verify no_split_spool_directory no_strip_excess_angle_brackets no_strip_trailing_dot no_syslog_timestamp no_timestamps_utc no_tls_log_cipher no_tls_log_peerdn no_untrusted_set_sender
+syn keyword eximKeyword not_accept_8bitmime not_allow_mx_to_ip not_always_bcc not_auth_always_advertise not_collapse_source_routes not_delivery_date_remove not_dns_check_names not_envelope_to_remove not_extract_addresses_remove_arguments not_forbid_domain_literals not_freeze_tell_mailmaster not_headers_check_syntax not_headers_checks_fail not_headers_sender_verify not_headers_sender_verify_errmsg not_helo_strict_syntax not_ignore_errmsg_errors not_ignore_fromline_local not_kill_ip_options not_local_domains_include_host not_local_domains_include_host_literals not_local_from_check not_locally_caseless not_log_all_parents not_log_arguments not_log_incoming_port not_log_ip_options not_log_received_recipients not_log_received_sender not_log_refused_recipients not_log_rewrites not_log_sender_on_delivery not_log_smtp_confirmation not_log_smtp_connections not_log_smtp_syntax_errors not_log_subject not_message_size_limit_count_recipients not_move_frozen_messages not_preserve_message_logs not_print_topbitchars not_prod_requires_admin not_queue_list_requires_admin not_queue_only not_rbl_log_headers not_rbl_log_rcpt_count not_rbl_reject_recipients not_receiver_try_verify not_receiver_verify not_recipients_max_reject not_refuse_ip_options not_relay_domains_include_local_mx not_relay_match_host_or_sender not_return_path_remove not_sender_try_verify not_sender_verify not_sender_verify_batch not_sender_verify_fixup not_sender_verify_reject not_smtp_accept_keepalive not_smtp_check_spool_space not_smtp_etrn_serialize not_smtp_verify not_split_spool_directory not_strip_excess_angle_brackets not_strip_trailing_dot not_syslog_timestamp not_timestamps_utc not_tls_log_cipher not_tls_log_peerdn not_untrusted_set_sender
+syn keyword eximKeyword body_only debug_print delivery_date_add driver envelope_to_add headers_add headers_only headers_remove headers_rewrite message_size_limit return_path return_path_add shadow_condition shadow_transport transport_filter
+syn keyword eximKeyword no_body_only no_delivery_date_add no_envelope_to_add no_headers_only no_return_path_add
+syn keyword eximKeyword not_body_only not_delivery_date_add not_envelope_to_add not_headers_only not_return_path_add
+syn keyword eximKeyword allow_fifo allow_symlink batch batch_max bsmtp bsmtp_helo check_group check_owner check_string create_directory create_file current_directory directory directory_mode escape_string file file_format file_must_exist from_hack group lock_fcntl_timeout lock_interval lock_retries lockfile_mode lockfile_timeout maildir_format maildir_retries maildir_tag mailstore_format mailstore_prefix mailstore_suffix mbx_format mode mode_fail_narrower notify_comsat prefix quota quota_filecount quota_is_inclusive quota_size_regex quota_warn_message quota_warn_threshold require_lockfile retry_use_local_part suffix use_crlf use_fcntl_lock use_lockfile use_mbx_lock user
+syn keyword eximKeyword no_allow_fifo no_allow_symlink no_bsmtp_helo no_check_group no_check_owner no_create_directory no_file_must_exist no_from_hack no_maildir_format no_mailstore_format no_mbx_format no_mode_fail_narrower no_notify_comsat no_quota_is_inclusive no_require_lockfile no_retry_use_local_part no_use_crlf no_use_fcntl_lock no_use_lockfile no_use_mbx_lock
+syn keyword eximKeyword not_allow_fifo not_allow_symlink not_bsmtp_helo not_check_group not_check_owner not_create_directory not_file_must_exist not_from_hack not_maildir_format not_mailstore_format not_mbx_format not_mode_fail_narrower not_notify_comsat not_quota_is_inclusive not_require_lockfile not_retry_use_local_part not_use_crlf not_use_fcntl_lock not_use_lockfile not_use_mbx_lock
+syn keyword eximKeyword bcc cc file file_expand file_optional from group headers initgroups log mode once once_file_size once_repeat reply_to return_message subject text to user
+syn keyword eximKeyword no_file_expand no_file_optional no_initgroups no_return_message
+syn keyword eximKeyword not_file_expand not_file_optional not_initgroups not_return_message
+syn keyword eximKeyword batch batch_max command group initgroups retry_use_local_part timeout user
+syn keyword eximKeyword no_initgroups
+syn keyword eximKeyword not_initgroups
+syn keyword eximKeyword allow_commands batch batch_max bsmtp bsmtp_helo check_string command current_directory environment escape_string freeze_exec_fail from_hack group home_directory ignore_status initgroups log_defer_output log_fail_output log_output max_output path pipe_as_creator prefix restrict_to_path retry_use_local_part return_fail_output return_output suffix temp_errors timeout umask use_crlf use_shell user
+syn keyword eximKeyword no_bsmtp_helo no_freeze_exec_fail no_from_hack no_ignore_status no_log_defer_output no_log_fail_output no_log_output no_pipe_as_creator no_restrict_to_path no_return_fail_output no_return_output no_use_crlf no_use_shell
+syn keyword eximKeyword not_bsmtp_helo not_freeze_exec_fail not_from_hack not_ignore_status not_log_defer_output not_log_fail_output not_log_output not_pipe_as_creator not_restrict_to_path not_return_fail_output not_return_output not_use_crlf not_use_shell
+syn keyword eximKeyword allow_localhost authenticate_hosts batch_max command_timeout connect_timeout data_timeout delay_after_cutoff dns_qualify_single dns_search_parents fallback_hosts final_timeout gethostbyname helo_data hosts hosts_avoid_tls hosts_require_tls hosts_override hosts_max_try hosts_randomize interface keepalive max_rcpt multi_domain mx_domains port protocol retry_include_ip_address serialize_hosts service size_addition tls_certificate tls_privatekey tls_verify_certificates tls_verify_ciphers
+syn keyword eximKeyword no_allow_localhost no_delay_after_cutoff no_dns_qualify_single no_dns_search_parents no_gethostbyname no_hosts_override no_hosts_randomize no_keepalive no_multi_domain no_retry_include_ip_address
+syn keyword eximKeyword not_allow_localhost not_delay_after_cutoff not_dns_qualify_single not_dns_search_parents not_gethostbyname not_hosts_override not_hosts_randomize not_keepalive not_multi_domain not_retry_include_ip_address
+syn keyword eximKeyword condition debug_print domains driver errors_to fail_verify fail_verify_recipient fail_verify_sender fallback_hosts group headers_add headers_remove initgroups local_parts more require_files senders transport unseen user verify verify_only verify_recipient verify_sender
+syn keyword eximKeyword no_fail_verify no_fail_verify_recipient no_fail_verify_sender no_initgroups no_more no_unseen no_verify no_verify_only no_verify_recipient no_verify_sender
+syn keyword eximKeyword not_fail_verify not_fail_verify_recipient not_fail_verify_sender not_initgroups not_more not_unseen not_verify not_verify_only not_verify_recipient not_verify_sender
+syn keyword eximKeyword current_directory expn home_directory new_director prefix prefix_optional suffix suffix_optional
+syn keyword eximKeyword no_expn no_prefix_optional no_suffix_optional
+syn keyword eximKeyword not_expn not_prefix_optional not_suffix_optional
+syn keyword eximKeyword check_ancestor directory_transport directory2_transport file_transport forbid_file forbid_include forbid_pipe freeze_missing_include hide_child_in_errmsg modemask one_time owners owngroups pipe_transport qualify_preserve_domain rewrite skip_syntax_errors syntax_errors_text syntax_errors_to
+syn keyword eximKeyword no_check_ancestor no_forbid_file no_forbid_include no_forbid_pipe no_freeze_missing_include no_hide_child_in_errmsg no_one_time no_qualify_preserve_domain no_rewrite no_skip_syntax_errors
+syn keyword eximKeyword not_check_ancestor not_forbid_file not_forbid_include not_forbid_pipe not_freeze_missing_include not_hide_child_in_errmsg not_one_time not_qualify_preserve_domain not_rewrite not_skip_syntax_errors
+syn keyword eximKeyword expand file forbid_special include_domain optional queries query search_type
+syn keyword eximKeyword no_expand no_forbid_special no_include_domain no_optional
+syn keyword eximKeyword not_expand not_forbid_special not_include_domain not_optional
+syn keyword eximKeyword allow_system_actions check_group check_local_user data file file_directory filter forbid_filter_existstest forbid_filter_logwrite forbid_filter_lookup forbid_filter_perl forbid_filter_reply ignore_eacces ignore_enotdir match_directory reply_transport seteuid
+syn keyword eximKeyword no_allow_system_actions no_check_local_user no_forbid_filter_reply no_forbid_filter_existstest no_forbid_filter_logwrite no_forbid_filter_lookup no_forbid_filter_perl no_forbid_filter_reply no_ignore_eacces no_ignore_enotdir no_seteuid
+syn keyword eximKeyword not_allow_system_actions not_check_local_user not_forbid_filter_reply not_forbid_filter_existstest not_forbid_filter_logwrite not_forbid_filter_lookup not_forbid_filter_perl not_forbid_filter_reply not_ignore_eacces not_ignore_enotdir not_seteuid
+syn keyword eximKeyword match_directory
+syn keyword eximKeyword directory_transport directory2_transport file_transport forbid_file forbid_pipe hide_child_in_errmsg new_address panic_expansion_fail pipe_transport qualify_preserve_domain rewrite
+syn keyword eximKeyword no_forbid_file no_forbid_pipe no_hide_child_in_errmsg no_panic_expansion_fail no_qualify_preserve_domain no_rewrite
+syn keyword eximKeyword not_forbid_file not_forbid_pipe not_hide_child_in_errmsg not_panic_expansion_fail not_qualify_preserve_domain not_rewrite
+syn keyword eximKeyword ignore_target_hosts pass_on_timeout self translate_ip_address
+syn keyword eximKeyword no_pass_on_timeout
+syn keyword eximKeyword not_pass_on_timeout
+syn keyword eximKeyword host_find_failed hosts_randomize modemask owners owngroups qualify_single route_file route_list route_queries route_query search_parents search_type
+syn keyword eximKeyword no_hosts_randomize no_qualify_single no_search_parents
+syn keyword eximKeyword not_hosts_randomize not_qualify_single not_search_parents
+syn keyword eximKeyword hosts optional port protocol query reroute response_pattern service timeout
+syn keyword eximKeyword no_optional
+syn keyword eximKeyword not_optional
+syn keyword eximKeyword check_secondary_mx gethostbyname mx_domains qualify_single rewrite_headers search_parents widen_domains
+syn keyword eximKeyword no_check_secondary_mx no_gethostbyname no_qualify_single no_search_parents
+syn keyword eximKeyword not_check_secondary_mx not_gethostbyname not_qualify_single not_search_parents
+syn keyword eximKeyword command command_group command_user current_directory timeout
+syn keyword eximKeyword driver public_name server_set_id server_mail_auth_condition
+syn keyword eximKeyword server_prompts server_condition client_send
+syn keyword eximKeyword server_secret client_name client_secret
+
+" Define the default highlighting
+
+hi def link eximComment Comment
+hi def link eximFixme Todo
+hi def link eximEnd Keyword
+hi def link eximNumber Number
+hi def link eximDriverName Constant
+hi def link eximConstant Constant
+hi def link eximTime Constant
+hi def link eximKeyword Type
+hi def link eximSpecialChar Special
+hi def link eximMacroName Preproc
+hi def link eximTransport Identifier
+
+
+let b:current_syntax = "exim"
diff --git a/runtime/syntax/expect.vim b/runtime/syntax/expect.vim
new file mode 100644
index 0000000..75cbd3e
--- /dev/null
+++ b/runtime/syntax/expect.vim
@@ -0,0 +1,103 @@
+" Vim syntax file
+" Language: Expect
+" Maintainer: Ralph Jennings <knowbudy@oro.net>
+" Last Change: 2012 Jun 01
+" (Dominique Pelle added @Spell)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Reserved Expect variable prefixes.
+syn match expectVariables "\$exp[a-zA-Z0-9_]*\|\$inter[a-zA-Z0-9_]*"
+syn match expectVariables "\$spawn[a-zA-Z0-9_]*\|\$timeout[a-zA-Z0-9_]*"
+
+" Normal Expect variables.
+syn match expectVariables "\$env([^)]*)"
+syn match expectVariables "\$any_spawn_id\|\$argc\|\$argv\d*"
+syn match expectVariables "\$user_spawn_id\|\$spawn_id\|\$timeout"
+
+" Expect variable arrays.
+syn match expectVariables "\$\(expect\|interact\)_out([^)]*)" contains=expectOutVar
+
+" User defined variables.
+syn match expectVariables "\$[a-zA-Z_][a-zA-Z0-9_]*"
+
+" Reserved Expect command prefixes.
+syn match expectCommand "exp_[a-zA-Z0-9_]*"
+
+" Normal Expect commands.
+syn keyword expectStatement close debug disconnect
+syn keyword expectStatement exit exp_continue exp_internal exp_open
+syn keyword expectStatement exp_pid exp_version
+syn keyword expectStatement fork inter_return interpreter
+syn keyword expectStatement log_file log_user match_max overlay
+syn keyword expectStatement parity remove_nulls return
+syn keyword expectStatement send send_error send_log send_user
+syn keyword expectStatement sleep spawn strace stty system
+syn keyword expectStatement timestamp trace trap wait
+
+" Tcl commands recognized and used by Expect.
+syn keyword expectCommand proc
+syn keyword expectConditional if else
+syn keyword expectRepeat while for foreach
+
+" Expect commands with special arguments.
+syn keyword expectStatement expect expect_after expect_background nextgroup=expectExpectOpts
+syn keyword expectStatement expect_before expect_user interact nextgroup=expectExpectOpts
+
+syn match expectSpecial contained "\\."
+
+" Options for "expect", "expect_after", "expect_background",
+" "expect_before", "expect_user", and "interact".
+syn keyword expectExpectOpts default eof full_buffer null return timeout
+
+syn keyword expectOutVar contained spawn_id seconds seconds_total
+syn keyword expectOutVar contained string start end buffer
+
+" Numbers (Tcl style).
+syn case ignore
+ syn match expectNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"
+ "floating point number, with dot, optional exponent
+ syn match expectNumber "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
+ "floating point number, starting with a dot, optional exponent
+ syn match expectNumber "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+ "floating point number, without dot, with exponent
+ syn match expectNumber "\<\d\+e[-+]\=\d\+[fl]\=\>"
+ "hex number
+ syn match expectNumber "0x[0-9a-f]\+\(u\=l\=\|lu\)\>"
+ "syn match expectIdentifier "\<[a-z_][a-z0-9_]*\>"
+syn case match
+
+syn region expectString start=+"+ end=+"+ contains=@Spell,expectVariables,expectSpecial
+
+" Are these really comments in Expect? (I never use it, so I'm just guessing).
+syn keyword expectTodo contained TODO
+syn match expectComment "#.*$" contains=@Spell,expectTodo
+syn match expectSharpBang "\%^#!.*"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link expectSharpBang PreProc
+hi def link expectVariables Special
+hi def link expectCommand Function
+hi def link expectStatement Statement
+hi def link expectConditional Conditional
+hi def link expectRepeat Repeat
+hi def link expectExpectOpts Keyword
+hi def link expectOutVar Special
+hi def link expectSpecial Special
+hi def link expectNumber Number
+
+hi def link expectString String
+
+hi def link expectComment Comment
+hi def link expectTodo Todo
+"hi def link expectIdentifier Identifier
+
+
+let b:current_syntax = "expect"
+
+" vim: ts=8
diff --git a/runtime/syntax/exports.vim b/runtime/syntax/exports.vim
new file mode 100644
index 0000000..05a3f1a
--- /dev/null
+++ b/runtime/syntax/exports.vim
@@ -0,0 +1,58 @@
+" Vim syntax file
+" Language: exports
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Last Change: Aug 31, 2016
+" Version: 8
+" Notes: This file includes both SysV and BSD 'isms
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_EXPORTS
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Options: -word
+syn keyword exportsKeyOptions contained alldirs nohide ro wsync
+syn keyword exportsKeyOptions contained kerb o rw
+syn match exportsOptError contained "[a-z]\+"
+
+" Settings: word=
+syn keyword exportsKeySettings contained access anon root rw
+syn match exportsSetError contained "[a-z]\+"
+
+" OptSet: -word=
+syn keyword exportsKeyOptSet contained mapall maproot mask network
+syn match exportsOptSetError contained "[a-z]\+"
+
+" options and settings
+syn match exportsSettings "[a-z]\+=" contains=exportsKeySettings,exportsSetError
+syn match exportsOptions "-[a-z]\+" contains=exportsKeyOptions,exportsOptError
+syn match exportsOptSet "-[a-z]\+=" contains=exportsKeyOptSet,exportsOptSetError
+
+" Separators
+syn match exportsSeparator "[,:]"
+
+" comments
+syn match exportsComment "^\s*#.*$" contains=@Spell
+
+" Define the default highlighting.
+if !exists("skip_exports_syntax_inits")
+
+ hi def link exportsKeyOptSet exportsKeySettings
+ hi def link exportsOptSet exportsSettings
+
+ hi def link exportsComment Comment
+ hi def link exportsKeyOptions Type
+ hi def link exportsKeySettings Keyword
+ hi def link exportsOptions Constant
+ hi def link exportsSeparator Constant
+ hi def link exportsSettings Constant
+
+ hi def link exportsOptError Error
+ hi def link exportsOptSetError Error
+ hi def link exportsSetError Error
+
+endif
+
+let b:current_syntax = "exports"
+" vim: ts=10
diff --git a/runtime/syntax/falcon.vim b/runtime/syntax/falcon.vim
new file mode 100644
index 0000000..e022c7a
--- /dev/null
+++ b/runtime/syntax/falcon.vim
@@ -0,0 +1,197 @@
+" Vim syntax file
+" Language: Falcon
+" Maintainer: Steven Oliver <oliver.steven@gmail.com>
+" Website: http://github.com/steveno/vim-files/blob/master/syntax/falcon.vim
+" Credits: Thanks the ruby.vim authors, I borrowed a lot!
+" Thanks to the lisp authors for the rainbow code!
+" -------------------------------------------------------------------------------
+
+" When wanted, highlight the trailing whitespace.
+if exists("c_space_errors")
+ if !exists("c_no_trail_space_error")
+ syn match falconSpaceError "\s\+$"
+ endif
+
+ if !exists("c_no_tab_space_error")
+ syn match falconSpaceError " \+\t"me=e-1
+ endif
+endif
+
+" Symbols
+syn match falconSymbol "\(;\|,\|\.\)"
+syn match falconSymbolOther "\(#\|@\)" display
+
+" Operators
+syn match falconOperator "\(+\|-\|\*\|/\|=\|<\|>\|\*\*\|!=\|\~=\)"
+syn match falconOperator "\(<=\|>=\|=>\|\.\.\|<<\|>>\|\"\)"
+
+" Clusters
+syn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@falconStringSpecial fold
+syn case match
+
+" Keywords
+syn keyword falconKeyword all allp any anyp as attributes brigade cascade catch choice class const
+syn keyword falconKeyword continue def directive do list dropping enum eq eval exit export from function
+syn keyword falconKeyword give global has hasnt in init innerfunc lambda launch launch len List list
+syn keyword falconKeyword load notin object pass print printl provides raise return self sender static to
+syn keyword falconKeyword try xamp
+
+" Error Type Keywords
+syn keyword falconKeyword CloneError CodeError Error InterruprtedError IoError MathError
+syn keyword falconKeyword ParamError RangeError SyntaxError TraceStep TypeError
+
+" Todo
+syn keyword falconTodo DEBUG FIXME NOTE TODO XXX
+
+" Conditionals
+syn keyword falconConditional and case default else end if iff
+syn keyword falconConditional elif or not switch select
+syn match falconConditional "end\s\if"
+
+" Loops
+syn keyword falconRepeat break for loop forfirst forlast formiddle while
+
+" Booleans
+syn keyword falconBool true false
+
+" Constants
+syn keyword falconConst PI E nil
+syn match falconConstant "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=\%(\s*(\)\@!"
+
+" Comments
+syn match falconCommentSkip contained "^\s*\*\($\|\s\+\)"
+syn region falconComment start="/\*" end="\*/" contains=@falconCommentGroup,falconSpaceError,falconTodo
+syn region falconCommentL start="//" end="$" keepend contains=@falconCommentGroup,falconSpaceError,falconTodo
+syn match falconSharpBang "\%^#!.*" display
+syn sync ccomment falconComment
+
+" Numbers
+syn match falconNumbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal
+syn match falconNumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal
+syn match falconHexadecimal contained "\<0x\x\+\>"
+syn match falconOctal contained "\<0\o\+\>"
+syn match falconIntLiteral contained "[+-]\<d\+\(\d\+\)\?\>"
+syn match falconFloatLiteral contained "[+-]\=\d\+\.\d*"
+syn match falconFloatLiteral contained "[+-]\=\d*\.\d*"
+
+" Includes
+syn keyword falconInclude load import
+
+" Expression Substitution and Backslash Notation
+syn match falconStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display
+syn match falconStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display
+syn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold
+
+" Normal String and Shell Command Output
+syn region falconString matchgroup=falconStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold
+syn region falconString matchgroup=falconStringDelimiter start="'" end="'" skip="\\\\\|\\'" fold
+syn region falconString matchgroup=falconStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=falconStringEscape fold
+
+" Generalized Single Quoted String, Symbol and Array of Strings
+syn region falconString matchgroup=falconStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
+syn region falconString matchgroup=falconStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape
+syn region falconString matchgroup=falconStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape
+syn region falconString matchgroup=falconStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape
+syn region falconString matchgroup=falconStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape
+syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
+syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape
+syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape
+syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape
+syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape
+
+" Generalized Double Quoted String and Array of Strings and Shell Command Output
+syn region falconString matchgroup=falconStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold
+syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold
+syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=falconStringEscape,falconDelimEscape fold
+syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=falconStringEscape,falconDelimEscape fold
+syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=falconStringEscape,falconDelimEscape fold
+syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=falconStringEscape,falconDelimEscape fold
+
+syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<\z(\h\w*\)\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
+syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<"\z([^"]*\)"\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
+syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<'\z([^']*\)'\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ fold keepend
+syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<`\z([^`]*\)`\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
+
+syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-\z(\h\w*\)\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
+syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-"\z([^"]*\)"\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
+syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-'\z([^']*\)'\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ fold keepend
+syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-`\z([^`]*\)`\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
+
+" Falcon rainbox to highlight parens in varying colors
+if exists("g:falcon_rainbow") && g:falcon_rainbow != 0
+ syn region falconParen0 matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen1
+ syn region falconParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen2
+ syn region falconParen2 contained matchgroup=hlLevel2 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen3
+ syn region falconParen3 contained matchgroup=hlLevel3 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen4
+ syn region falconParen4 contained matchgroup=hlLevel4 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen5
+ syn region falconParen5 contained matchgroup=hlLevel5 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen6
+ syn region falconParen6 contained matchgroup=hlLevel6 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen7
+ syn region falconParen7 contained matchgroup=hlLevel7 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen8
+ syn region falconParen8 contained matchgroup=hlLevel8 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen9
+ syn region falconParen9 contained matchgroup=hlLevel9 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen0
+endif
+
+" Setup the colors for the rainbox
+if exists("g:falcon_rainbow") && g:falcon_rainbow != 0
+ if &bg == "dark"
+ hi def hlLevel0 ctermfg=red guifg=red1
+ hi def hlLevel1 ctermfg=yellow guifg=orange1
+ hi def hlLevel2 ctermfg=green guifg=yellow1
+ hi def hlLevel3 ctermfg=cyan guifg=greenyellow
+ hi def hlLevel4 ctermfg=magenta guifg=green1
+ hi def hlLevel5 ctermfg=red guifg=springgreen1
+ hi def hlLevel6 ctermfg=yellow guifg=cyan1
+ hi def hlLevel7 ctermfg=green guifg=slateblue1
+ hi def hlLevel8 ctermfg=cyan guifg=magenta1
+ hi def hlLevel9 ctermfg=magenta guifg=purple1
+ else
+ hi def hlLevel0 ctermfg=red guifg=red3
+ hi def hlLevel1 ctermfg=darkyellow guifg=orangered3
+ hi def hlLevel2 ctermfg=darkgreen guifg=orange2
+ hi def hlLevel3 ctermfg=blue guifg=yellow3
+ hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4
+ hi def hlLevel5 ctermfg=red guifg=green4
+ hi def hlLevel6 ctermfg=darkyellow guifg=paleturquoise3
+ hi def hlLevel7 ctermfg=darkgreen guifg=deepskyblue4
+ hi def hlLevel8 ctermfg=blue guifg=darkslateblue
+ hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet
+ endif
+endif
+
+" Syntax Synchronizing
+syn sync minlines=10 maxlines=100
+
+" Define the default highlighting
+if !exists("did_falcon_syn_inits")
+
+ hi def link falconKeyword Keyword
+ hi def link falconCommentString String
+ hi def link falconTodo Todo
+ hi def link falconConditional Keyword
+ hi def link falconRepeat Repeat
+ hi def link falconcommentSkip Comment
+ hi def link falconComment Comment
+ hi def link falconCommentL Comment
+ hi def link falconConst Constant
+ hi def link falconConstants Constant
+ hi def link falconOperator Operator
+ hi def link falconSymbol Normal
+ hi def link falconSpaceError Error
+ hi def link falconHexadecimal Number
+ hi def link falconOctal Number
+ hi def link falconIntLiteral Number
+ hi def link falconFloatLiteral Float
+ hi def link falconStringEscape Special
+ hi def link falconStringDelimiter Delimiter
+ hi def link falconString String
+ hi def link falconBool Constant
+ hi def link falconSharpBang PreProc
+ hi def link falconInclude Include
+ hi def link falconSymbol Constant
+ hi def link falconSymbolOther Delimiter
+endif
+
+let b:current_syntax = "falcon"
+
+" vim: set sw=4 sts=4 et tw=80 :
+
diff --git a/runtime/syntax/fan.vim b/runtime/syntax/fan.vim
new file mode 100644
index 0000000..fc193af
--- /dev/null
+++ b/runtime/syntax/fan.vim
@@ -0,0 +1,132 @@
+" Vim syntax file
+" Language: Fantom
+" Maintainer: Kamil Toman <kamil.toman@gmail.com>
+" Last Change: 2010 May 27
+" Based on Java syntax file by Claudio Fleiner <claudio@fleiner.com>
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" keyword definitions
+syn keyword fanExternal using native
+syn keyword fanError goto void serializable volatile
+syn keyword fanConditional if else switch
+syn keyword fanRepeat do while for foreach each
+syn keyword fanBoolean true false
+syn keyword fanConstant null
+syn keyword fanTypedef this super
+syn keyword fanOperator new is isnot as
+syn keyword fanLongOperator plus minus mult div mod get set slice lshift rshift and or xor inverse negate increment decrement equals compare
+syn keyword fanType Void Bool Int Float Decimal Str Duration Uri Type Range List Map Obj
+syn keyword fanStatement return
+syn keyword fanStorageClass static const final
+syn keyword fanSlot virtual override once
+syn keyword fanField readonly
+syn keyword fanExceptions throw try catch finally
+syn keyword fanAssert assert
+syn keyword fanTypedef class enum mixin
+syn match fanFacet "@[_a-zA-Z][_a-zA-Z0-9_]*\>"
+syn keyword fanBranch break continue
+syn keyword fanScopeDecl public internal protected private abstract
+
+if exists("fan_space_errors")
+ if !exists("fan_no_trail_space_error")
+ syn match fanSpaceError "\s\+$"
+ endif
+ if !exists("fan_no_tab_space_error")
+ syn match fanSpaceError " \+\t"me=e-1
+ endif
+endif
+
+syn region fanLabelRegion transparent matchgroup=fanLabel start="\<case\>" matchgroup=NONE end=":" contains=fanNumber,fanCharacter
+syn keyword fanLabel default
+syn keyword fanLabel case
+
+" The following cluster contains all fan groups except the contained ones
+syn cluster fanTop add=fanExternal,fanError,fanConditional,fanRepeat,fanBoolean,fanConstant,fanTypedef,fanOperator,fanLongOperator,fanType,fanType,fanStatement,fanStorageClass,fanSlot,fanField,fanExceptions,fanAssert,fanClassDecl,fanTypedef,fanFacet,fanBranch,fanScopeDecl,fanLabelRegion,fanLabel
+
+" Comments
+syn keyword fanTodo contained TODO FIXME XXX
+syn region fanComment start="/\*" end="\*/" contains=@fanCommentSpecial,fanTodo,fanComment,@Spell
+syn match fanCommentStar contained "^\s*\*[^/]"me=e-1
+syn match fanCommentStar contained "^\s*\*$"
+syn match fanLineComment "//.*" contains=@fanCommentSpecial2,fanTodo,@Spell
+syn match fanDocComment "\*\*.*" contains=@fanCommentSpecial2,fanTodo,@Spell
+hi def link fanCommentString fanString
+hi def link fanComment2String fanString
+hi def link fanCommentCharacter fanCharacter
+
+syn cluster fanTop add=fanComment,fanLineComment,fanDocComment
+
+" match the special comment /**/
+syn match fanComment "/\*\*/"
+
+" Strings and constants
+syn match fanSpecialError contained "\\."
+syn match fanSpecialCharError contained "[^']"
+syn match fanSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\|\$\)"
+syn match fanStringSubst contained "\$[A-Za-z][A-Za-z_.]*"
+syn match fanStringSubst contained "\${[^}]*}"
+syn region fanString start=+"+ end=+"+ contains=fanSpecialChar,fanSpecialError,fanStringSubst,@Spell
+syn region fanTripleString start=+"""+ end=+"""+ contains=fanSpecialChar,fanSpecialError,fanStringSubst,@Spell
+syn region fanDSL start=+<|+ end=+|>+
+syn match fanUri "`[^`]*`"
+syn match fanCharacter "'[^']*'" contains=fanSpecialChar,fanSpecialCharError
+syn match fanCharacter "'\\''" contains=fanSpecialChar
+syn match fanCharacter "'[^\\]'"
+syn match fanNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
+syn match fanNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
+syn match fanNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
+syn match fanNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
+
+syn cluster fanTop add=fanString,fanCharacter,fanNumber,fanSpecial,fanStringError
+
+" The default highlighting.
+hi def link fanBranch Conditional
+hi def link fanLabel Label
+hi def link fanUserLabel Label
+hi def link fanConditional Conditional
+hi def link fanRepeat Repeat
+hi def link fanExceptions Exception
+hi def link fanAssert Statement
+hi def link fanStorageClass StorageClass
+hi def link fanSlot StorageClass
+hi def link fanField StorageClass
+hi def link fanScopeDecl StorageClass
+hi def link fanBoolean Boolean
+hi def link fanSpecial Special
+hi def link fanSpecialError Error
+hi def link fanSpecialCharError Error
+hi def link fanTripleString String
+hi def link fanString String
+hi def link fanDSL String
+hi def link fanCharacter String
+hi def link fanStringSubst Identifier
+hi def link fanUri SpecialChar
+hi def link fanSpecialChar SpecialChar
+hi def link fanNumber Number
+hi def link fanError Error
+hi def link fanStringError Error
+hi def link fanStatement Statement
+hi def link fanOperator Operator
+hi def link fanLongOperator Operator
+hi def link fanComment Comment
+hi def link fanDocComment Comment
+hi def link fanLineComment Comment
+hi def link fanConstant Constant
+hi def link fanTypedef Typedef
+hi def link fanTodo Todo
+hi def link fanFacet PreProc
+
+hi def link fanCommentTitle SpecialComment
+hi def link fanCommentStar SpecialComment
+hi def link fanType Identifier
+hi def link fanExternal Include
+
+hi def link fanSpaceError Error
+
+let b:current_syntax = "fan"
+
+" vim: ts=8
diff --git a/runtime/syntax/fasm.vim b/runtime/syntax/fasm.vim
new file mode 100644
index 0000000..172ba7c
--- /dev/null
+++ b/runtime/syntax/fasm.vim
@@ -0,0 +1,151 @@
+" Vim syntax file
+" Language: Flat Assembler (FASM)
+" Maintainer: Ron Aaron <ron@ronware.org>
+" Last Change: 2012/02/13
+" Vim URL: http://www.vim.org/lang.html
+" FASM Home: http://flatassembler.net/
+" FASM Version: 1.56
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=a-z,A-Z,48-57,.,_
+setlocal isident=a-z,A-Z,48-57,.,_
+syn case ignore
+
+syn keyword fasmRegister ah al ax bh bl bp bx ch cl cr0 cr1 cr2 cr3 cr4 cr5 cr6
+syn keyword fasmRegister cr7 cs cx dh di dl dr0 dr1 dr2 dr3 dr4 dr5 dr6 dr7 ds dx
+syn keyword fasmRegister eax ebp ebx ecx edi edx es esi esp fs gs mm0 mm1 mm2 mm3
+syn keyword fasmRegister mm4 mm5 mm6 mm7 si sp ss st st0 st1 st2 st3 st4 st5 st6
+syn keyword fasmRegister st7 tr0 tr1 tr2 tr3 tr4 tr5 tr6 tr7 xmm0 xmm1 xmm2 xmm3
+syn keyword fasmRegister xmm4 xmm5 xmm6 xmm7
+syn keyword fasmAddressSizes byte dqword dword fword pword qword tword word
+syn keyword fasmDataDirectives db dd df dp dq dt du dw file rb rd rf rp rq rt rw
+syn keyword fasmInstr aaa aad aam aas adc add addpd addps addsd addss addsubpd
+syn keyword fasmInstr addsubps and andnpd andnps andpd andps arpl bound bsf bsr
+syn keyword fasmInstr bswap bt btc btr bts call cbw cdq clc cld clflush cli clts
+syn keyword fasmInstr cmc cmova cmovae cmovb cmovbe cmovc cmove cmovg cmovge cmovl
+syn keyword fasmInstr cmovle cmovna cmovnae cmovnb cmovnbe cmovnc cmovne cmovng
+syn keyword fasmInstr cmovnge cmovnl cmovnle cmovno cmovnp cmovns cmovnz cmovo cmovp
+syn keyword fasmInstr cmovpe cmovpo cmovs cmovz cmp cmpeqpd cmpeqps cmpeqsd cmpeqss
+syn keyword fasmInstr cmplepd cmpleps cmplesd cmpless cmpltpd cmpltps cmpltsd cmpltss
+syn keyword fasmInstr cmpneqpd cmpneqps cmpneqsd cmpneqss cmpnlepd cmpnleps cmpnlesd
+syn keyword fasmInstr cmpnless cmpnltpd cmpnltps cmpnltsd cmpnltss cmpordpd cmpordps
+syn keyword fasmInstr cmpordsd cmpordss cmppd cmpps cmps cmpsb cmpsd cmpss cmpsw
+syn keyword fasmInstr cmpunordpd cmpunordps cmpunordsd cmpunordss cmpxchg cmpxchg8b
+syn keyword fasmInstr comisd comiss cpuid cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps
+syn keyword fasmInstr cvtpi2pd cvtpi2ps cvtps2dq cvtps2pd cvtps2pi cvtsd2si cvtsd2ss
+syn keyword fasmInstr cvtsi2sd cvtsi2ss cvtss2sd cvtss2si cvttpd2dq cvttpd2pi cvttps2dq
+syn keyword fasmInstr cvttps2pi cvttsd2si cvttss2si cwd cwde daa das data dec div
+syn keyword fasmInstr divpd divps divsd divss else emms end enter extrn f2xm1 fabs
+syn keyword fasmInstr fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb
+syn keyword fasmInstr fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp
+syn keyword fasmInstr fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree
+syn keyword fasmInstr ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp
+syn keyword fasmInstr finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv
+syn keyword fasmInstr fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi
+syn keyword fasmInstr fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem
+syn keyword fasmInstr fprem1 fptan frndint frstor frstpm fsave fscale fsetpm fsin
+syn keyword fasmInstr fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr
+syn keyword fasmInstr fsubrp ftst fucom fucomi fucomip fucomp fucompp fwait fxam
+syn keyword fasmInstr fxch fxrstor fxsave fxtract fyl2x fyl2xp1 haddpd haddps heap
+syn keyword fasmInstr hlt hsubpd hsubps idiv if imul in inc ins insb insd insw int
+syn keyword fasmInstr int3 into invd invlpg iret iretd iretw ja jae jb jbe jc jcxz
+syn keyword fasmInstr je jecxz jg jge jl jle jmp jna jnae jnb jnbe jnc jne jng jnge
+syn keyword fasmInstr jnl jnle jno jnp jns jnz jo jp jpe jpo js jz lahf lar lddqu
+syn keyword fasmInstr ldmxcsr lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw
+syn keyword fasmInstr load loadall286 loadall386 lock lods lodsb lodsd lodsw loop
+syn keyword fasmInstr loopd loope looped loopew loopne loopned loopnew loopnz loopnzd
+syn keyword fasmInstr loopnzw loopw loopz loopzd loopzw lsl lss ltr maskmovdqu maskmovq
+syn keyword fasmInstr maxpd maxps maxsd maxss mfence minpd minps minsd minss monitor
+syn keyword fasmInstr mov movapd movaps movd movddup movdq2q movdqa movdqu movhlps
+syn keyword fasmInstr movhpd movhps movlhps movlpd movlps movmskpd movmskps movntdq
+syn keyword fasmInstr movnti movntpd movntps movntq movq movq2dq movs movsb movsd
+syn keyword fasmInstr movshdup movsldup movss movsw movsx movupd movups movzx mul
+syn keyword fasmInstr mulpd mulps mulsd mulss mwait neg nop not or org orpd orps
+syn keyword fasmInstr out outs outsb outsd outsw packssdw packsswb packuswb paddb
+syn keyword fasmInstr paddd paddq paddsb paddsw paddusb paddusw paddw pand pandn
+syn keyword fasmInstr pause pavgb pavgusb pavgw pcmpeqb pcmpeqd pcmpeqw pcmpgtb
+syn keyword fasmInstr pcmpgtd pcmpgtw pextrw pf2id pf2iw pfacc pfadd pfcmpeq pfcmpge
+syn keyword fasmInstr pfcmpgt pfmax pfmin pfmul pfnacc pfpnacc pfrcp pfrcpit1 pfrcpit2
+syn keyword fasmInstr pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pi2fw pinsrw pmaddwd pmaxsw
+syn keyword fasmInstr pmaxub pminsw pminub pmovmskb pmulhrw pmulhuw pmulhw pmullw
+syn keyword fasmInstr pmuludq pop popa popad popaw popd popf popfd popfw popw por
+syn keyword fasmInstr prefetch prefetchnta prefetcht0 prefetcht1 prefetcht2 prefetchw
+syn keyword fasmInstr psadbw pshufd pshufhw pshuflw pshufw pslld pslldq psllq psllw
+syn keyword fasmInstr psrad psraw psrld psrldq psrlq psrlw psubb psubd psubq psubsb
+syn keyword fasmInstr psubsw psubusb psubusw psubw pswapd punpckhbw punpckhdq punpckhqdq
+syn keyword fasmInstr punpckhwd punpcklbw punpckldq punpcklqdq punpcklwd push pusha
+syn keyword fasmInstr pushad pushaw pushd pushf pushfd pushfw pushw pxor rcl rcpps
+syn keyword fasmInstr rcpss rcr rdmsr rdpmc rdtsc rep repe repne repnz repz ret
+syn keyword fasmInstr retd retf retfd retfw retn retnd retnw retw rol ror rsm rsqrtps
+syn keyword fasmInstr rsqrtss sahf sal salc sar sbb scas scasb scasd scasw seta
+syn keyword fasmInstr setae setalc setb setbe setc sete setg setge setl setle setna
+syn keyword fasmInstr setnae setnb setnbe setnc setne setng setnge setnl setnle
+syn keyword fasmInstr setno setnp setns setnz seto setp setpe setpo sets setz sfence
+syn keyword fasmInstr sgdt shl shld shr shrd shufpd shufps sidt sldt smsw sqrtpd
+syn keyword fasmInstr sqrtps sqrtsd sqrtss stc std sti stmxcsr store stos stosb
+syn keyword fasmInstr stosd stosw str sub subpd subps subsd subss sysenter sysexit
+syn keyword fasmInstr test ucomisd ucomiss ud2 unpckhpd unpckhps unpcklpd unpcklps
+syn keyword fasmInstr verr verw wait wbinvd wrmsr xadd xchg xlat xlatb xor xorpd
+syn keyword fasmPreprocess common equ fix forward include local macro purge restore
+syn keyword fasmPreprocess reverse struc
+syn keyword fasmDirective align binary code coff console discardable display dll
+syn keyword fasmDirective elf entry executable export extern far fixups format gui
+syn keyword fasmDirective import label ms mz native near notpageable pe public readable
+syn keyword fasmDirective repeat resource section segment shareable stack times
+syn keyword fasmDirective use16 use32 virtual wdm writable writeable
+syn keyword fasmOperator as at defined eq eqtype from mod on ptr rva used
+
+syn match fasmNumericOperator "[+-/*]"
+syn match fasmLogicalOperator "[=|&~<>]\|<=\|>=\|<>"
+" numbers
+syn match fasmBinaryNumber "\<[01]\+b\>"
+syn match fasmHexNumber "\<\d\x*h\>"
+syn match fasmHexNumber "\<\(0x\|$\)\x*\>"
+syn match fasmFPUNumber "\<\d\+\(\.\d*\)\=\(e[-+]\=\d*\)\=\>"
+syn match fasmOctalNumber "\<\(0\o\+o\=\|\o\+o\)\>"
+syn match fasmDecimalNumber "\<\(0\|[1-9]\d*\)\>"
+syn region fasmComment start=";" end="$"
+syn region fasmString start="\"" end="\"\|$"
+syn region fasmString start="'" end="'\|$"
+syn match fasmSymbol "[()|\[\]:]"
+syn match fasmSpecial "[#?%$,]"
+syn match fasmLabel "^\s*[^; \t]\+:"
+
+hi def link fasmAddressSizes type
+hi def link fasmNumericOperator fasmOperator
+hi def link fasmLogicalOperator fasmOperator
+
+hi def link fasmBinaryNumber fasmNumber
+hi def link fasmHexNumber fasmNumber
+hi def link fasmFPUNumber fasmNumber
+hi def link fasmOctalNumber fasmNumber
+hi def link fasmDecimalNumber fasmNumber
+
+hi def link fasmSymbols fasmRegister
+hi def link fasmPreprocess fasmDirective
+
+" link to standard syn groups so the 'colorschemes' work:
+hi def link fasmOperator operator
+hi def link fasmComment comment
+hi def link fasmDirective preproc
+hi def link fasmRegister type
+hi def link fasmNumber constant
+hi def link fasmSymbol structure
+hi def link fasmString String
+hi def link fasmSpecial special
+hi def link fasmInstr keyword
+hi def link fasmLabel label
+hi def link fasmPrefix preproc
+let b:current_syntax = "fasm"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 sw=8 :
diff --git a/runtime/syntax/fdcc.vim b/runtime/syntax/fdcc.vim
new file mode 100644
index 0000000..f7b296b
--- /dev/null
+++ b/runtime/syntax/fdcc.vim
@@ -0,0 +1,101 @@
+" Vim syntax file
+" Language: fdcc or locale files
+" Maintainer: Dwayne Bailey <dwayne@translate.org.za>
+" Last Change: 2004 May 16
+" Remarks: FDCC (Formal Definitions of Cultural Conventions) see ISO TR 14652
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn sync minlines=150
+setlocal iskeyword+=-
+
+" Numbers
+syn match fdccNumber /[0-9]*/ contained
+
+" Unicode codings and strings
+syn match fdccUnicodeInValid /<[^<]*>/ contained
+syn match fdccUnicodeValid /<U[0-9A-F][0-9A-F][0-9A-F][0-9A-F]>/ contained
+syn region fdccString start=/"/ end=/"/ contains=fdccUnicodeInValid,fdccUnicodeValid
+
+" Valid LC_ Keywords
+syn keyword fdccKeyword escape_char comment_char
+syn keyword fdccKeywordIdentification title source address contact email tel fax language territory revision date category
+syn keyword fdccKeywordCtype copy space translit_start include translit_end outdigit class
+syn keyword fdccKeywordCollate copy script order_start order_end collating-symbol reorder-after reorder-end collating-element symbol-equivalence
+syn keyword fdccKeywordMonetary copy int_curr_symbol currency_symbol mon_decimal_point mon_thousands_sep mon_grouping positive_sign negative_sign int_frac_digits frac_digits p_cs_precedes p_sep_by_space n_cs_precedes n_sep_by_space p_sign_posn n_sign_posn int_p_cs_precedes int_p_sep_by_space int_n_cs_precedes int_n_sep_by_space int_p_sign_posn int_n_sign_posn
+syn keyword fdccKeywordNumeric copy decimal_point thousands_sep grouping
+syn keyword fdccKeywordTime copy abday day abmon mon d_t_fmt d_fmt t_fmt am_pm t_fmt_ampm date_fmt era_d_fmt first_weekday first_workday week cal_direction time_zone era alt_digits era_d_t_fmt
+syn keyword fdccKeywordMessages copy yesexpr noexpr yesstr nostr
+syn keyword fdccKeywordPaper copy height width
+syn keyword fdccKeywordTelephone copy tel_int_fmt int_prefix tel_dom_fmt int_select
+syn keyword fdccKeywordMeasurement copy measurement
+syn keyword fdccKeywordName copy name_fmt name_gen name_mr name_mrs name_miss name_ms
+syn keyword fdccKeywordAddress copy postal_fmt country_name country_post country_ab2 country_ab3 country_num country_car country_isbn lang_name lang_ab lang_term lang_lib
+
+" Comments
+syn keyword fdccTodo TODO FIXME contained
+syn match fdccVariable /%[a-zA-Z]/ contained
+syn match fdccComment /[#%].*/ contains=fdccTodo,fdccVariable
+
+" LC_ Groups
+syn region fdccBlank matchgroup=fdccLCIdentification start=/^LC_IDENTIFICATION$/ end=/^END LC_IDENTIFICATION$/ contains=fdccKeywordIdentification,fdccString,fdccComment
+syn region fdccBlank matchgroup=fdccLCCtype start=/^LC_CTYPE$/ end=/^END LC_CTYPE$/ contains=fdccKeywordCtype,fdccString,fdccComment,fdccUnicodeInValid,fdccUnicodeValid
+syn region fdccBlank matchgroup=fdccLCCollate start=/^LC_COLLATE$/ end=/^END LC_COLLATE$/ contains=fdccKeywordCollate,fdccString,fdccComment,fdccUnicodeInValid,fdccUnicodeValid
+syn region fdccBlank matchgroup=fdccLCMonetary start=/^LC_MONETARY$/ end=/^END LC_MONETARY$/ contains=fdccKeywordMonetary,fdccString,fdccComment,fdccNumber
+syn region fdccBlank matchgroup=fdccLCNumeric start=/^LC_NUMERIC$/ end=/^END LC_NUMERIC$/ contains=fdccKeywordNumeric,fdccString,fdccComment,fdccNumber
+syn region fdccBlank matchgroup=fdccLCTime start=/^LC_TIME$/ end=/^END LC_TIME$/ contains=fdccKeywordTime,fdccString,fdccComment,fdccNumber
+syn region fdccBlank matchgroup=fdccLCMessages start=/^LC_MESSAGES$/ end=/^END LC_MESSAGES$/ contains=fdccKeywordMessages,fdccString,fdccComment
+syn region fdccBlank matchgroup=fdccLCPaper start=/^LC_PAPER$/ end=/^END LC_PAPER$/ contains=fdccKeywordPaper,fdccString,fdccComment,fdccNumber
+syn region fdccBlank matchgroup=fdccLCTelephone start=/^LC_TELEPHONE$/ end=/^END LC_TELEPHONE$/ contains=fdccKeywordTelephone,fdccString,fdccComment
+syn region fdccBlank matchgroup=fdccLCMeasurement start=/^LC_MEASUREMENT$/ end=/^END LC_MEASUREMENT$/ contains=fdccKeywordMeasurement,fdccString,fdccComment,fdccNumber
+syn region fdccBlank matchgroup=fdccLCName start=/^LC_NAME$/ end=/^END LC_NAME$/ contains=fdccKeywordName,fdccString,fdccComment
+syn region fdccBlank matchgroup=fdccLCAddress start=/^LC_ADDRESS$/ end=/^END LC_ADDRESS$/ contains=fdccKeywordAddress,fdccString,fdccComment,fdccNumber
+
+
+" Only when an item doesn't have highlighting yet
+
+hi def link fdccBlank Blank
+
+hi def link fdccTodo Todo
+hi def link fdccComment Comment
+hi def link fdccVariable Type
+
+hi def link fdccLCIdentification Statement
+hi def link fdccLCCtype Statement
+hi def link fdccLCCollate Statement
+hi def link fdccLCMonetary Statement
+hi def link fdccLCNumeric Statement
+hi def link fdccLCTime Statement
+hi def link fdccLCMessages Statement
+hi def link fdccLCPaper Statement
+hi def link fdccLCTelephone Statement
+hi def link fdccLCMeasurement Statement
+hi def link fdccLCName Statement
+hi def link fdccLCAddress Statement
+
+hi def link fdccUnicodeInValid Error
+hi def link fdccUnicodeValid String
+hi def link fdccString String
+hi def link fdccNumber Blank
+
+hi def link fdccKeywordIdentification fdccKeyword
+hi def link fdccKeywordCtype fdccKeyword
+hi def link fdccKeywordCollate fdccKeyword
+hi def link fdccKeywordMonetary fdccKeyword
+hi def link fdccKeywordNumeric fdccKeyword
+hi def link fdccKeywordTime fdccKeyword
+hi def link fdccKeywordMessages fdccKeyword
+hi def link fdccKeywordPaper fdccKeyword
+hi def link fdccKeywordTelephone fdccKeyword
+hi def link fdccKeywordMeasurement fdccKeyword
+hi def link fdccKeywordName fdccKeyword
+hi def link fdccKeywordAddress fdccKeyword
+hi def link fdccKeyword Identifier
+
+
+let b:current_syntax = "fdcc"
+
+" vim: ts=8
diff --git a/runtime/syntax/fetchmail.vim b/runtime/syntax/fetchmail.vim
new file mode 100644
index 0000000..50d6b82
--- /dev/null
+++ b/runtime/syntax/fetchmail.vim
@@ -0,0 +1,83 @@
+" Vim syntax file
+" Language: fetchmail(1) RC File
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2022 Jul 02
+
+" Version 6.4.3
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword fetchmailTodo contained FIXME TODO XXX NOTE
+
+syn region fetchmailComment start='#' end='$' contains=fetchmailTodo,@Spell
+
+syn match fetchmailNumber display '\<\d\+\>'
+
+syn region fetchmailString start=+"+ skip=+\\\\\|\\"+ end=+"+
+ \ contains=fetchmailStringEsc
+syn region fetchmailString start=+'+ skip=+\\\\\|\\'+ end=+'+
+ \ contains=fetchmailStringEsc
+
+syn match fetchmailStringEsc contained '\\\([ntb]\|0\d*\|x\x\+\)'
+
+syn region fetchmailKeyword transparent matchgroup=fetchmailKeyword
+ \ start='\<poll\|skip\|defaults\>'
+ \ end='\<poll\|skip\|defaults\>'
+ \ contains=ALLBUT,fetchmailOptions,fetchmailSet
+
+syn keyword fetchmailServerOpts contained via proto[col] local[domains] port
+ \ service auth[enticate] timeout envelope
+ \ qvirtual aka interface monitor plugin plugout
+ \ dns checkalias uidl interval tracepolls
+ \ principal esmtpname esmtppassword
+" removed in 6.3.0
+syn keyword fetchmailServerOpts contained netsec
+syn match fetchmailServerOpts contained '\<bad-header\>'
+syn match fetchmailServerOpts contained '\<no\_s\+\(envelope\|dns\|checkalias\|uidl\)'
+
+syn keyword fetchmailUserOpts contained user[name] is to pass[word] ssl
+ \ sslcert sslcertck sslcertfile sslcertpath
+ \ sslfingerprint sslkey sslproto folder
+ \ smtphost fetchdomains smtpaddress smtpname
+ \ antispam mda bsmtp preconnect postconnect
+ \ keep flush limitflush fetchall rewrite
+ \ stripcr forcecr pass8bits dropstatus
+ \ dropdelivered mimedecode idle limit warnings
+ \ batchlimit fetchlimit fetchsizelimit
+ \ fastuidl expunge properties
+ \ sslcommonname
+syn match fetchmailUserOpts contained '\<no\_s\+\(sslcertck\|keep\|flush\|fetchall\|rewrite\|stripcr\|forcecr\|pass8bits\|dropstatus\|dropdelivered\|mimedecode\|idle\)'
+
+syn keyword fetchmailSpecial contained here there
+
+syn keyword fetchmailNoise and with has wants options
+syn match fetchmailNoise display '[:;,]'
+
+syn keyword fetchmailSet nextgroup=fetchmailOptions skipwhite skipnl set
+
+syn keyword fetchmailOptions daemon postmaster bouncemail spambounce
+ \ softbounce logfile pidfile idfile syslog properties
+syn match fetchmailOptions '\<no\_s\+\(bouncemail\|spambounce\|softbounce\|syslog\)'
+
+hi def link fetchmailComment Comment
+hi def link fetchmailTodo Todo
+hi def link fetchmailNumber Number
+hi def link fetchmailString String
+hi def link fetchmailStringEsc SpecialChar
+hi def link fetchmailKeyword Keyword
+hi def link fetchmailServerOpts Identifier
+hi def link fetchmailUserOpts Identifier
+hi def link fetchmailSpecial Special
+hi def link fetchmailSet Keyword
+hi def link fetchmailOptions Identifier
+
+let b:current_syntax = "fetchmail"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/fgl.vim b/runtime/syntax/fgl.vim
new file mode 100644
index 0000000..1b75d13
--- /dev/null
+++ b/runtime/syntax/fgl.vim
@@ -0,0 +1,134 @@
+" Vim syntax file
+" Language: Informix 4GL
+" Maintainer: Rafal M. Sulejman <rms@poczta.onet.pl>
+" Update: 26 Sep 2002
+" Changes:
+" - Dynamic 4GL/FourJs/4GL 7.30 pseudo comment directives (Julian Bridle)
+" - Conditionally allow case insensitive keywords (Julian Bridle)
+"
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if exists("fgl_ignore_case")
+ syntax case ignore
+else
+ syntax case match
+endif
+syn keyword fglKeyword ABORT ABS ABSOLUTE ACCEPT ACCESS ACOS ADD AFTER ALL
+syn keyword fglKeyword ALLOCATE ALTER AND ANSI ANY APPEND ARG_VAL ARRAY ARR_COUNT
+syn keyword fglKeyword ARR_CURR AS ASC ASCENDING ASCII ASIN AT ATAN ATAN2 ATTACH
+syn keyword fglKeyword ATTRIBUTE ATTRIBUTES AUDIT AUTHORIZATION AUTO AUTONEXT AVERAGE AVG
+syn keyword fglKeyword BEFORE BEGIN BETWEEN BLACK BLINK BLUE BOLD BORDER BOTH BOTTOM
+syn keyword fglKeyword BREAK BUFFERED BY BYTE
+syn keyword fglKeyword CALL CASCADE CASE CHAR CHARACTER CHARACTER_LENGTH CHAR_LENGTH
+syn keyword fglKeyword CHECK CLASS_ORIGIN CLEAR CLIPPED CLOSE CLUSTER COLOR
+syn keyword fglKeyword COLUMN COLUMNS COMMAND COMMENT COMMENTS COMMIT COMMITTED
+syn keyword fglKeyword COMPOSITES COMPRESS CONCURRENT CONNECT CONNECTION
+syn keyword fglKeyword CONNECTION_ALIAS CONSTRAINED CONSTRAINT CONSTRAINTS CONSTRUCT
+syn keyword fglKeyword CONTINUE CONTROL COS COUNT CREATE CURRENT CURSOR CYAN
+syn keyword fglKeyword DATA DATABASE DATASKIP DATE DATETIME DAY DBA DBINFO DBSERVERNAME
+syn keyword fglKeyword DEALLOCATE DEBUG DEC DECIMAL DECLARE DEFAULT DEFAULTS DEFER
+syn keyword fglKeyword DEFERRED DEFINE DELETE DELIMITER DELIMITERS DESC DESCENDING
+syn keyword fglKeyword DESCRIBE DESCRIPTOR DETACH DIAGNOSTICS DIM DIRTY DISABLED
+syn keyword fglKeyword DISCONNECT DISPLAY DISTINCT DISTRIBUTIONS DO DORMANT DOUBLE
+syn keyword fglKeyword DOWN DOWNSHIFT DROP
+syn keyword fglKeyword EACH ELIF ELSE ENABLED END ENTRY ERROR ERRORLOG ERR_GET
+syn keyword fglKeyword ERR_PRINT ERR_QUIT ESC ESCAPE EVERY EXCEPTION EXCLUSIVE
+syn keyword fglKeyword EXEC EXECUTE EXISTS EXIT EXP EXPLAIN EXPRESSION EXTEND EXTENT
+syn keyword fglKeyword EXTERN EXTERNAL
+syn keyword fglKeyword F1 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F2 F20 F21 F22 F23
+syn keyword fglKeyword F24 F25 F26 F27 F28 F29 F3 F30 F31 F32 F33 F34 F35 F36 F37 F38
+syn keyword fglKeyword F39 F4 F40 F41 F42 F43 F44 F45 F46 F47 F48 F49 F5 F50 F51 F52
+syn keyword fglKeyword F53 F54 F55 F56 F57 F58 F59 F6 F60 F61 F62 F63 F64 F7 F8 F9
+syn keyword fglKeyword FALSE FETCH FGL_GETENV FGL_KEYVAL FGL_LASTKEY FIELD FIELD_TOUCHED
+syn keyword fglKeyword FILE FILLFACTOR FILTERING FINISH FIRST FLOAT FLUSH FOR
+syn keyword fglKeyword FOREACH FOREIGN FORM FORMAT FORMONLY FORTRAN FOUND FRACTION
+syn keyword fglKeyword FRAGMENT FREE FROM FUNCTION GET_FLDBUF GLOBAL GLOBALS GO GOTO
+syn keyword fglKeyword GRANT GREEN GROUP HAVING HEADER HELP HEX HIDE HIGH HOLD HOUR
+syn keyword fglKeyword IDATA IF ILENGTH IMMEDIATE IN INCLUDE INDEX INDEXES INDICATOR
+syn keyword fglKeyword INFIELD INIT INITIALIZE INPUT INSERT INSTRUCTIONS INT INTEGER
+syn keyword fglKeyword INTERRUPT INTERVAL INTO INT_FLAG INVISIBLE IS ISAM ISOLATION
+syn keyword fglKeyword ITYPE
+syn keyword fglKeyword KEY LABEL
+syn keyword fglKeyword LANGUAGE LAST LEADING LEFT LENGTH LET LIKE LINE
+syn keyword fglKeyword LINENO LINES LOAD LOCATE LOCK LOG LOG10 LOGN LONG LOW
+syn keyword fglKeyword MAGENTA MAIN MARGIN MATCHES MAX MDY MEDIUM MEMORY MENU MESSAGE
+syn keyword fglKeyword MESSAGE_LENGTH MESSAGE_TEXT MIN MINUTE MOD MODE MODIFY MODULE
+syn keyword fglKeyword MONEY MONTH MORE
+syn keyword fglKeyword NAME NCHAR NEED NEW NEXT NEXTPAGE NO NOCR NOENTRY NONE NORMAL
+syn keyword fglKeyword NOT NOTFOUND NULL NULLABLE NUMBER NUMERIC NUM_ARGS NVARCHAR
+syn keyword fglKeyword OCTET_LENGTH OF OFF OLD ON ONLY OPEN OPTIMIZATION OPTION OPTIONS
+syn keyword fglKeyword OR ORDER OTHERWISE OUTER OUTPUT
+syn keyword fglKeyword PAGE PAGENO PAUSE PDQPRIORITY PERCENT PICTURE PIPE POW PRECISION
+syn keyword fglKeyword PREPARE PREVIOUS PREVPAGE PRIMARY PRINT PRINTER PRIOR PRIVATE
+syn keyword fglKeyword PRIVILEGES PROCEDURE PROGRAM PROMPT PUBLIC PUT
+syn keyword fglKeyword QUIT QUIT_FLAG
+syn keyword fglKeyword RAISE RANGE READ READONLY REAL RECORD RECOVER RED REFERENCES
+syn keyword fglKeyword REFERENCING REGISTER RELATIVE REMAINDER REMOVE RENAME REOPTIMIZATION
+syn keyword fglKeyword REPEATABLE REPORT REQUIRED RESOLUTION RESOURCE RESTRICT
+syn keyword fglKeyword RESUME RETURN RETURNED_SQLSTATE RETURNING REVERSE REVOKE RIGHT
+syn keyword fglKeyword ROBIN ROLE ROLLBACK ROLLFORWARD ROOT ROUND ROW ROWID ROWIDS
+syn keyword fglKeyword ROWS ROW_COUNT RUN
+syn keyword fglKeyword SCALE SCHEMA SCREEN SCROLL SCR_LINE SECOND SECTION SELECT
+syn keyword fglKeyword SERIAL SERIALIZABLE SERVER_NAME SESSION SET SET_COUNT SHARE
+syn keyword fglKeyword SHORT SHOW SITENAME SIZE SIZEOF SKIP SLEEP SMALLFLOAT SMALLINT
+syn keyword fglKeyword SOME SPACE SPACES SQL SQLAWARN SQLCA SQLCODE SQLERRD SQLERRM
+syn keyword fglKeyword SQLERROR SQLERRP SQLSTATE SQLWARNING SQRT STABILITY START
+syn keyword fglKeyword STARTLOG STATIC STATISTICS STATUS STDEV STEP STOP STRING STRUCT
+syn keyword fglKeyword SUBCLASS_ORIGIN SUM SWITCH SYNONYM SYSTEM
+syn keyword fglKeyword SysBlobs SysChecks SysColAuth SysColDepend SysColumns
+syn keyword fglKeyword SysConstraints SysDefaults SysDepend SysDistrib SysFragAuth
+syn keyword fglKeyword SysFragments SysIndexes SysObjState SysOpClstr SysProcAuth
+syn keyword fglKeyword SysProcBody SysProcPlan SysProcedures SysReferences SysRoleAuth
+syn keyword fglKeyword SysSynTable SysSynonyms SysTabAuth SysTables SysTrigBody
+syn keyword fglKeyword SysTriggers SysUsers SysViews SysViolations
+syn keyword fglKeyword TAB TABLE TABLES TAN TEMP TEXT THEN THROUGH THRU TIME TO
+syn keyword fglKeyword TODAY TOP TOTAL TRACE TRAILER TRAILING TRANSACTION TRIGGER
+syn keyword fglKeyword TRIGGERS TRIM TRUE TRUNC TYPE TYPEDEF
+syn keyword fglKeyword UNCOMMITTED UNCONSTRAINED UNDERLINE UNION UNIQUE UNITS UNLOAD
+syn keyword fglKeyword UNLOCK UNSIGNED UP UPDATE UPSHIFT USER USING
+syn keyword fglKeyword VALIDATE VALUE VALUES VARCHAR VARIABLES VARIANCE VARYING
+syn keyword fglKeyword VERIFY VIEW VIOLATIONS
+syn keyword fglKeyword WAIT WAITING WARNING WEEKDAY WHEN WHENEVER WHERE WHILE WHITE
+syn keyword fglKeyword WINDOW WITH WITHOUT WORDWRAP WORK WRAP WRITE
+syn keyword fglKeyword YEAR YELLOW
+syn keyword fglKeyword ZEROFILL
+
+" Strings and characters:
+syn region fglString start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn region fglString start=+'+ skip=+\\\\\|\\"+ end=+'+
+
+" Numbers:
+syn match fglNumber "-\=\<[0-9]*\.\=[0-9_]\>"
+
+" Comments:
+syn region fglComment start="{" end="}"
+syn match fglComment "--.*"
+syn match fglComment "#.*"
+
+" Not a comment even though it looks like one (Dynamic 4GL/FourJs directive)
+syn match fglSpecial "--#"
+syn match fglSpecial "--@"
+
+syn sync ccomment fglComment
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link fglComment Comment
+"hi def link fglKeyword fglSpecial
+hi def link fglKeyword fglStatement
+hi def link fglNumber Number
+hi def link fglOperator fglStatement
+hi def link fglSpecial Special
+hi def link fglStatement Statement
+hi def link fglString String
+hi def link fglType Type
+
+
+let b:current_syntax = "fgl"
+
+" vim: ts=8
diff --git a/runtime/syntax/fish.vim b/runtime/syntax/fish.vim
new file mode 100644
index 0000000..266878b
--- /dev/null
+++ b/runtime/syntax/fish.vim
@@ -0,0 +1,225 @@
+" Vim syntax file
+" Language: fish
+" Maintainer: Nicholas Boyle (github.com/nickeb96)
+" Repository: https://github.com/nickeb96/fish.vim
+" Last Change: February 1, 2023
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+
+" Statements
+syn cluster fishStatement contains=fishKeywordAndOr,fishNot,fishSelectStatement,fishKeyword,fishKeywordIf,fishCommand,fishVariable
+
+syn keyword fishKeywordAndOr and or nextgroup=fishNot,fishSelectStatement,fishKeyword,fishKeywordIf,fishCommand
+hi def link fishKeywordAndOr fishOperator
+
+syn keyword fishNot not skipwhite nextgroup=fishSelectStatement,fishKeyword,fishKeywordIf,fishCommand
+syn match fishNot /!/ skipwhite nextgroup=fishSelectStatement,fishKeyword,fishKeywordIf,fishCommand
+hi def link fishNot fishOperator
+
+syn keyword fishSelectStatement command builtin skipwhite nextgroup=fishKeyword,fishKeywordIf,fishCommand,fishOption
+hi def link fishSelectStatement fishKeyword
+
+syn keyword fishKeyword end skipwhite nextgroup=@fishTerminator
+
+syn keyword fishKeywordIf if skipwhite nextgroup=@fishStatement
+syn keyword fishKeyword else skipwhite nextgroup=fishKeywordIf,fishSemicolon
+hi def link fishKeywordIf fishKeyword
+
+syn keyword fishKeyword switch skipwhite nextgroup=@fishArgument
+syn keyword fishKeyword case skipwhite nextgroup=@fishArgument
+
+syn keyword fishKeyword while skipwhite nextgroup=@fishStatement
+
+syn keyword fishKeyword for skipwhite nextgroup=fishForVariable
+syn match fishForVariable /[[:alnum:]_]\+/ contained skipwhite nextgroup=fishKeywordIn
+syn keyword fishKeywordIn in contained skipwhite nextgroup=@fishArgument
+hi def link fishForVariable fishParameter
+hi def link fishKeywordIn fishKeyword
+
+syn keyword fishKeyword _ abbr argparse begin bg bind block break breakpoint cd commandline
+ \ complete continue count disown echo emit eval exec exit false fg function functions
+ \ history jobs math printf pwd random read realpath return set set_color source status
+ \ string test time true type ulimit wait
+ \ skipwhite nextgroup=@fishNext
+syn match fishKeyword /\<contains\>/ skipwhite nextgroup=@fishNext
+
+syn match fishCommand /[[:alnum:]_\/[][[:alnum:]+._-]*/ skipwhite nextgroup=@fishNext
+
+
+" Internally Nested Arguments
+
+syn cluster fishSubscriptArgs contains=fishInnerVariable,fishIndexNum,fishIndexRange,fishInnerCommandSub
+
+syn match fishInnerVariable /\$\+[[:alnum:]_]\+/ contained
+syn match fishInnerVariable /\$\+[[:alnum:]_]\+\[/me=e-1,he=e-1 contained nextgroup=fishInnerSubscript
+hi def link fishInnerVariable fishVariable
+
+syn region fishInnerSubscript matchgroup=fishVariable start=/\[/ end=/]/ contained
+ \ keepend contains=@fishSubscriptArgs
+hi def link fishInnerSubscript fishSubscript
+
+syn match fishIndexNum /[+-]?[[:digit:]]\+/ contained
+hi def link fishIndexNum fishParameter
+
+syn match fishIndexRange /\.\./ contained
+hi def link fishIndexRange fishParameter
+
+syn region fishInnerCommandSub matchgroup=fishOperator start=/(/ start=/\$(/ end=/)/ contained
+ \ contains=@fishStatement
+hi def link fishInnerCommandSub fishCommandSub
+
+syn region fishQuotedCommandSub matchgroup=fishOperator start=/\$(/ end=/)/ contained
+ \ contains=@fishStatement
+hi def link fishQuotedCommandSub fishCommandSub
+
+syn match fishBraceExpansionComma /,/ contained
+hi def link fishBraceExpansionComma fishOperator
+
+syn match fishBracedParameter '[[:alnum:]\u5b\u5d@:=+.%/!_-]\+' contained contains=fishInnerPathGlob
+hi def link fishBracedParameter fishParameter
+
+syn region fishBracedQuote start=/'/ skip=/\\'/ end=/'/ contained
+ \ contains=fishEscapedEscape,fishEscapedSQuote
+syn region fishBracedQuote start=/"/ skip=/\\"/ end=/"/ contained
+ \ contains=fishEscapedEscape,fishEscapedDQuote,fishEscapedDollar,fishInnerVariable,fishInnerCommandSub
+hi def link fishBracedQuote fishQuote
+
+
+" Arguments
+
+syn cluster fishArgument contains=fishParameter,fishOption,fishVariable,fishPathGlob,fishBraceExpansion,fishQuote,fishCharacter,fishCommandSub,fishRedirection,fishSelfPid
+
+syn match fishParameter '[[:alnum:]\u5b\u5d@:=+.,%/!_-]\+' contained skipwhite nextgroup=@fishNext
+
+syn match fishOption /-[[:alnum:]=_-]*/ contained skipwhite nextgroup=@fishNext
+
+syn match fishPathGlob /\(\~\|*\|?\)/ contained skipwhite nextgroup=@fishNext
+
+syn region fishBraceExpansion matchgroup=fishOperator start=/{/ end=/}/ contained
+ \ contains=fishBraceExpansionComma,fishInnerVariable,fishInnerCommandSub,fishBracedParameter,fishBracedQuote
+ \ skipwhite nextgroup=@fishNext
+
+syn match fishVariable /\$\+[[:alnum:]_]\+/ skipwhite nextgroup=@fishNext
+syn match fishVariable /\$\+[[:alnum:]_]\+\[/me=e-1,he=e-1 nextgroup=fishSubscript
+
+syn region fishSubscript matchgroup=fishVariable start=/\[/ end=/]/ contained
+ \ keepend contains=@fishSubscriptArgs
+ \ skipwhite nextgroup=@fishNext
+
+syn region fishCommandSub matchgroup=fishOperator start=/(/ start=/\$(/ end=/)/ contained
+ \ contains=@fishStatement
+ \ skipwhite nextgroup=@fishNext
+
+syn region fishQuote start=/'/ skip=/\\'/ end=/'/ contained
+ \ contains=fishEscapedEscape,fishEscapedSQuote
+ \ skipwhite nextgroup=@fishNext
+syn region fishQuote start=/"/ skip=/\\"/ end=/"/ contained
+ \ contains=fishEscapedEscape,fishEscapedDQuote,fishEscapedDollar,fishInnerVariable,fishQuotedCommandSub
+ \ skipwhite nextgroup=@fishNext
+
+syn match fishEscapedEscape /\\\\/ contained
+syn match fishEscapedSQuote /\\'/ contained
+syn match fishEscapedDQuote /\\"/ contained
+syn match fishEscapedDollar /\\\$/ contained
+hi def link fishEscapedEscape fishCharacter
+hi def link fishEscapedSQuote fishCharacter
+hi def link fishEscapedDQuote fishCharacter
+hi def link fishEscapedDollar fishCharacter
+
+syn match fishCharacter /\\[0-7]\{1,3}/ contained skipwhite nextgroup=@fishNext
+syn match fishCharacter /\\u[0-9a-fA-F]\{4}/ contained skipwhite nextgroup=@fishNext
+syn match fishCharacter /\\U[0-9a-fA-F]\{8}/ contained skipwhite nextgroup=@fishNext
+syn match fishCharacter /\\x[0-7][0-9a-fA-F]\|\\x[0-9a-fA-F]/ contained skipwhite nextgroup=@fishNext
+syn match fishCharacter /\\X[0-9a-fA-F]\{1,2}/ contained skipwhite nextgroup=@fishNext
+syn match fishCharacter /\\[abcefnrtv[\](){}<>\\*?~%#$|&;'" ]/ contained skipwhite nextgroup=@fishNext
+
+syn match fishRedirection /</ contained skipwhite nextgroup=fishRedirectionTarget
+syn match fishRedirection /[0-9&]\?>[>?]\?/ contained skipwhite nextgroup=fishRedirectionTarget
+syn match fishRedirection /[0-9&]\?>&[0-9-]/ contained skipwhite nextgroup=@fishNext
+
+syn match fishRedirectionTarget /[[:alnum:]$~*?{,}"'\/._-]\+/ contained contains=fishInnerVariable skipwhite nextgroup=@fishNext
+hi def link fishRedirectionTarget fishRedirection
+
+syn match fishSelfPid /%self\>/ contained nextgroup=@fishNext
+hi def link fishSelfPid fishOperator
+
+
+" Terminators
+
+syn cluster fishTerminator contains=fishPipe,fishBackgroundJob,fishSemicolon,fishSymbolicAndOr
+
+syn match fishPipe /\(1>\|2>\|&\)\?|/ contained skipwhite nextgroup=@fishStatement
+hi def link fishPipe fishEnd
+
+syn match fishBackgroundJob /&$/ contained skipwhite nextgroup=@fishStatement
+syn match fishBackgroundJob /&[^<>&|]/me=s+1,he=s+1 contained skipwhite nextgroup=@fishStatement
+hi def link fishBackgroundJob fishEnd
+
+syn match fishSemicolon /;/ skipwhite nextgroup=@fishStatement
+hi def link fishSemicolon fishEnd
+
+syn match fishSymbolicAndOr /\(&&\|||\)/ contained skipwhite skipempty nextgroup=@fishStatement
+hi def link fishSymbolicAndOr fishOperator
+
+
+" Other
+
+syn cluster fishNext contains=fishEscapedNl,@fishArgument,@fishTerminator
+
+syn match fishEscapedNl /\\$/ skipnl skipwhite contained nextgroup=@fishNext
+
+syn match fishComment /#.*/ contains=fishTodo,@Spell
+
+syn keyword fishTodo TODO contained
+
+
+
+syn sync minlines=200
+syn sync maxlines=300
+
+
+" Intermediate highlight groups matching $fish_color_* variables
+
+hi def link fishCommand fish_color_command
+hi def link fishComment fish_color_comment
+hi def link fishEnd fish_color_end
+hi def link fishCharacter fish_color_escape
+hi def link fishKeyword fish_color_keyword
+hi def link fishEscapedNl fish_color_normal
+hi def link fishOperator fish_color_operator
+hi def link fishVariable fish_color_operator
+hi def link fishInnerVariable fish_color_operator
+hi def link fishPathGlob fish_color_operator
+hi def link fishOption fish_color_option
+hi def link fishParameter fish_color_param
+hi def link fishQuote fish_color_quote
+hi def link fishRedirection fish_color_redirection
+
+
+" Default highlight groups
+
+hi def link fish_color_param Normal
+hi def link fish_color_normal Normal
+hi def link fish_color_option Normal
+hi def link fish_color_command Function
+hi def link fish_color_keyword Keyword
+hi def link fish_color_end Delimiter
+hi def link fish_color_operator Operator
+hi def link fish_color_redirection Type
+hi def link fish_color_quote String
+hi def link fish_color_escape Character
+hi def link fish_color_comment Comment
+
+hi def link fishTodo Todo
+
+
+let b:current_syntax = 'fish'
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/flexwiki.vim b/runtime/syntax/flexwiki.vim
new file mode 100644
index 0000000..6b15ab2
--- /dev/null
+++ b/runtime/syntax/flexwiki.vim
@@ -0,0 +1,133 @@
+" Vim syntax file
+" Language: FlexWiki, http://www.flexwiki.com/
+" Maintainer: George V. Reilly <george@reilly.org>
+" Home: http://www.georgevreilly.com/vim/flexwiki/
+" Other Home: http://www.vim.org/scripts/script.php?script_id=1529
+" Author: George V. Reilly
+" Filenames: *.wiki
+" Last Change: Wed Apr 26 11:00 PM 2006 P
+" Version: 0.3
+
+" Note: The horrible regexps were reverse-engineered from
+" FlexWikiCore\EngineSource\Formatter.cs, with help from the Regex Analyzer
+" in The Regulator, http://regulator.sourceforge.net/ .NET uses Perl-style
+" regexes, which use a different syntax than Vim (fewer \s).
+" The primary test case is FlexWiki\FormattingRules.wiki
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" A WikiWord (unqualifiedWikiName)
+syntax match flexwikiWord /\%(_\?\([A-Z]\{2,}[a-z0-9]\+[A-Za-z0-9]*\)\|\([A-Z][a-z0-9]\+[A-Za-z0-9]*[A-Z]\+[A-Za-z0-9]*\)\)/
+" A [bracketed wiki word]
+syntax match flexwikiWord /\[[[:alnum:]\s]\+\]/
+
+" text: "this is a link (optional tooltip)":http://www.microsoft.com
+" TODO: check URL syntax against RFC
+syntax match flexwikiLink `\("[^"(]\+\((\([^)]\+\))\)\?":\)\?\(https\?\|ftp\|gopher\|telnet\|file\|notes\|ms-help\):\(\(\(//\)\|\(\\\\\)\)\+[A-Za-z0-9:#@%/;$~_?+-=.&\-\\\\]*\)`
+
+" text: *strong*
+syntax match flexwikiBold /\(^\|\W\)\zs\*\([^ ].\{-}\)\*/
+" '''bold'''
+syntax match flexwikiBold /'''\([^'].\{-}\)'''/
+
+" text: _emphasis_
+syntax match flexwikiItalic /\(^\|\W\)\zs_\([^ ].\{-}\)_/
+" ''italic''
+syntax match flexwikiItalic /''\([^'].\{-}\)''/
+
+" ``deemphasis``
+syntax match flexwikiDeEmphasis /``\([^`].\{-}\)``/
+
+" text: @code@
+syntax match flexwikiCode /\(^\|\s\|(\|\[\)\zs@\([^@]\+\)@/
+
+" text: -deleted text-
+syntax match flexwikiDelText /\(^\|\s\+\)\zs-\([^ <a ]\|[^ <img ]\|[^ -].*\)-/
+
+" text: +inserted text+
+syntax match flexwikiInsText /\(^\|\W\)\zs+\([^ ].\{-}\)+/
+
+" text: ^superscript^
+syntax match flexwikiSuperScript /\(^\|\W\)\zs^\([^ ].\{-}\)^/
+
+" text: ~subscript~
+syntax match flexwikiSubScript /\(^\|\W\)\zs\~\([^ ].\{-}\)\~/
+
+" text: ??citation??
+syntax match flexwikiCitation /\(^\|\W\)\zs??\([^ ].\{-}\)??/
+
+" Emoticons: must come after the Textilisms, as later rules take precedence
+" over earlier ones. This match is an approximation for the ~70 distinct
+" patterns that FlexWiki knows.
+syntax match flexwikiEmoticons /\((.)\|:[()|$@]\|:-[DOPS()\]|$@]\|;)\|:'(\)/
+
+" Aggregate all the regular text highlighting into flexwikiText
+syntax cluster flexwikiText contains=flexwikiItalic,flexwikiBold,flexwikiCode,flexwikiDeEmphasis,flexwikiDelText,flexwikiInsText,flexwikiSuperScript,flexwikiSubScript,flexwikiCitation,flexwikiLink,flexwikiWord,flexwikiEmoticons
+
+" single-line WikiPropertys
+syntax match flexwikiSingleLineProperty /^:\?[A-Z_][_a-zA-Z0-9]\+:/
+
+" TODO: multi-line WikiPropertys
+
+" Header levels, 1-6
+syntax match flexwikiH1 /^!.*$/
+syntax match flexwikiH2 /^!!.*$/
+syntax match flexwikiH3 /^!!!.*$/
+syntax match flexwikiH4 /^!!!!.*$/
+syntax match flexwikiH5 /^!!!!!.*$/
+syntax match flexwikiH6 /^!!!!!!.*$/
+
+" <hr>, horizontal rule
+syntax match flexwikiHR /^----.*$/
+
+" Formatting can be turned off by ""enclosing it in pairs of double quotes""
+syntax match flexwikiEscape /"".\{-}""/
+
+" Tables. Each line starts and ends with '||'; each cell is separated by '||'
+syntax match flexwikiTable /||/
+
+" Bulleted list items start with one or tabs, followed by whitespace, then '*'
+" Numeric list items start with one or tabs, followed by whitespace, then '1.'
+" Eight spaces at the beginning of the line is equivalent to the leading tab.
+syntax match flexwikiList /^\(\t\| \{8}\)\s*\(\*\|1\.\).*$/ contains=@flexwikiText
+
+" Treat all other lines that start with spaces as PRE-formatted text.
+syntax match flexwikiPre /^[ \t]\+[^ \t*1].*$/
+
+
+" Link FlexWiki syntax items to colors
+hi def link flexwikiH1 Title
+hi def link flexwikiH2 flexwikiH1
+hi def link flexwikiH3 flexwikiH2
+hi def link flexwikiH4 flexwikiH3
+hi def link flexwikiH5 flexwikiH4
+hi def link flexwikiH6 flexwikiH5
+hi def link flexwikiHR flexwikiH6
+
+hi def flexwikiBold term=bold cterm=bold gui=bold
+hi def flexwikiItalic term=italic cterm=italic gui=italic
+
+hi def link flexwikiCode Statement
+hi def link flexwikiWord Underlined
+
+hi def link flexwikiEscape Todo
+hi def link flexwikiPre PreProc
+hi def link flexwikiLink Underlined
+hi def link flexwikiList Type
+hi def link flexwikiTable Type
+hi def link flexwikiEmoticons Constant
+hi def link flexwikiDelText Comment
+hi def link flexwikiDeEmphasis Comment
+hi def link flexwikiInsText Constant
+hi def link flexwikiSuperScript Constant
+hi def link flexwikiSubScript Constant
+hi def link flexwikiCitation Constant
+
+hi def link flexwikiSingleLineProperty Identifier
+
+let b:current_syntax="FlexWiki"
+
+" vim:tw=0:
diff --git a/runtime/syntax/focexec.vim b/runtime/syntax/focexec.vim
new file mode 100644
index 0000000..187fd50
--- /dev/null
+++ b/runtime/syntax/focexec.vim
@@ -0,0 +1,88 @@
+" Vim syntax file
+" Language: Focus Executable
+" Maintainer: Rob Brady <robb@datatone.com>
+" Last Change: $Date: 2004/06/13 15:38:04 $
+" URL: http://www.datatone.com/~robb/vim/syntax/focexec.vim
+" $Revision: 1.1 $
+
+" this is a very simple syntax file - I will be improving it
+" one thing is how to do computes
+" I don't like that &vars and FUSE() functions highlight to the same color
+" I think some of these things should get different highlights -
+" should MODIFY commands look different than TABLE?
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+" A bunch of useful keywords
+syn keyword focexecTable TABLE SUM BY ACROSS END PRINT HOLD LIST NOPRINT
+syn keyword focexecTable SUBFOOT SUBHEAD HEADING FOOTING PAGE-BREAK AS
+syn keyword focexecTable WHERE AND OR NOSPLIT FORMAT
+syn keyword focexecModify MODIFY DATA ON FIXFORM PROMPT MATCH COMPUTE
+syn keyword focexecModify GOTO CASE ENDCASE TYPE NOMATCH REJECT INCLUDE
+syn keyword focexecModify CONTINUE FROM
+syn keyword focexecNormal CHECK FILE CREATE EX SET IF FILEDEF DEFINE
+syn keyword focexecNormal REBUILD IF RECORDLIMIT FI EQ JOIN
+syn keyword focexecJoin IN TO
+syn keyword focexecFileDef DISK
+syn keyword focexecSet MSG ALL
+syn match focexecDash "-RUN"
+syn match focexecDash "-PROMPT"
+syn match focexecDash "-WINFORM"
+
+" String and Character constants
+syn region focexecString1 start=+"+ end=+"+
+syn region focexecString2 start=+'+ end=+'+
+
+"amper variables
+syn match focexecAmperVar "&&\=[A-Z_]\+"
+
+"fuse functions
+syn keyword focexecFuse GETUSER GETUSR WHOAMI FEXERR ASIS GETTOK UPCASE LOCASE
+syn keyword focexecFuse SUBSTR TODAY TODAYI POSIT HHMMSS BYTVAL EDAUT1 BITVAL
+syn keyword focexecFuse BITSON FGETENV FPUTENV HEXBYT SPAWN YM YMI JULDAT
+syn keyword focexecFuse JULDATI DOWK DOWKI DOWKLI CHGDAT CHGDATI FTOA ATODBL
+syn keyword focexecFuse SOUNDEX RJUST REVERSE PARAG OVRLAY LJUST CTRFLD CTRAN
+syn keyword focexecFuse CHKFMT ARGLEN GREGDT GREGDTI DTYMD DTYMDI DTDMY DTDMYI
+syn keyword focexecFuse DTYDM DTYDMI DTMYD DTMYDI DTDYM DTDYMI DAYMD DAYMDI
+syn keyword focexecFuse DAMDY DAMDYI DADMY DADMYI AYM AYMI AYMD AYMDI CHKPCK
+syn keyword focexecFuse IMOD FMOD DMOD PCKOUT EXP BAR SPELLNM SPELLNUM RTCIVP
+syn keyword focexecFuse PRDUNI PRDNOR RDNORM RDUNIF LCWORD ITOZ RLPHLD IBIPRO
+syn keyword focexecFuse IBIPRW IBIPRC IBIPRU IBIRCP PTHDAT ITOPACK ITONUM
+syn keyword focexecFuse DSMEXEC DSMEVAL DSMERRC MSMEXEC MSMEVAL MSMERRC EXTDXI
+syn keyword focexecFuse BAANHASH EDAYSI DTOG GTOD HSETPT HPART HTIME HNAME
+syn keyword focexecFuse HADD HDIFF HDATE HGETC HCNVRT HDTTM HMIDNT TEMPPATH
+syn keyword focexecFuse DATEADD DATEDIF DATEMOV DATECVT EURHLD EURXCH FINDFOC
+syn keyword focexecFuse FERRMES CNCTUSR CURRPATH USERPATH SYSTEM ASKYN
+syn keyword focexecFuse FUSEMENU POPEDIT POPFILE
+
+syn match focexecNumber "\<\d\+\>"
+syn match focexecNumber "\<\d\+\.\d*\>"
+
+syn match focexecComment "-\*.*"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link focexecString1 String
+hi def link focexecString2 String
+hi def link focexecNumber Number
+hi def link focexecComment Comment
+hi def link focexecTable Keyword
+hi def link focexecModify Keyword
+hi def link focexecNormal Keyword
+hi def link focexecSet Keyword
+hi def link focexecDash Keyword
+hi def link focexecFileDef Keyword
+hi def link focexecJoin Keyword
+hi def link focexecAmperVar Identifier
+hi def link focexecFuse Function
+
+
+let b:current_syntax = "focexec"
+
+" vim: ts=8
diff --git a/runtime/syntax/form.vim b/runtime/syntax/form.vim
new file mode 100644
index 0000000..9718480
--- /dev/null
+++ b/runtime/syntax/form.vim
@@ -0,0 +1,145 @@
+" Vim syntax file
+" Language: FORM
+" Version: 2.0
+" Maintainer: Michael M. Tung <michael.tung@uni-mainz.de>
+" Last Change: <Thu Oct 23 13:11:21 CEST 2008>
+" Past Change: <October 2008 Thomas Reiter thomasr@nikhef.nl>
+" Past Change: <Wed, 2005/05/25 09:24:58 arwagner wptx44>
+
+" First public release based on 'Symbolic Manipulation with FORM'
+" by J.A.M. Vermaseren, CAN, Netherlands, 1991.
+" This syntax file is still in development. Please send suggestions
+" to the maintainer.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" a bunch of useful FORM keywords
+syn keyword formType global local
+syn keyword formHeaderStatement symbol symbols cfunction cfunctions
+syn keyword formHeaderStatement function functions vector vectors
+syn keyword formHeaderStatement tensor tensors ctensor ctensors
+syn keyword formHeaderStatement set sets index indices table ctable
+syn keyword formHeaderStatement dimension dimensions unittrace
+syn keyword formConditional if else elseif endif while
+syn keyword formConditional repeat endrepeat label goto
+syn keyword formConditional argument endargument exit
+syn keyword formConditional inexpression inside term
+syn keyword formConditional endinexpression endinside endterm
+syn keyword formStatement abrackets also antibrackets antisymmetrize
+syn keyword formStatement argexplode argimplode apply auto autodeclare
+syn keyword formStatement brackets chainin chainout chisholm cleartable
+syn keyword formStatement collect commuting compress contract
+syn keyword formStatement cyclesymmetrize deallocatetable delete
+syn keyword formStatement dimension discard disorder drop factarg fill
+syn keyword formStatement fillexpression fixindex format funpowers hide
+syn keyword formStatement identify idnew idold ifmatch inparallel
+syn keyword formStatement insidefirst keep load makeinteger many metric
+syn keyword formStatement moduleoption modulus multi multiply ndrop
+syn keyword formStatement nfunctions nhide normalize notinparallel
+syn keyword formStatement nprint nskip ntable ntensors nunhide nwrite
+syn keyword formStatement off on once only polyfun pophide print
+syn keyword formStatement printtable propercount pushhide ratio
+syn keyword formStatement rcyclesymmetrize redefine renumber
+syn keyword formStatement replaceinarg replaceloop save select
+syn keyword formStatement setexitflag skip slavepatchsize sort splitarg
+syn keyword formStatement splitfirstarg splitlastarg sum symmetrize
+syn keyword formStatement tablebase testuse threadbucketsize totensor
+syn keyword formStatement tovector trace4 tracen tryreplace unhide
+syn keyword formStatement unittrace vectors write
+" for compatibility with older FORM versions:
+syn keyword formStatement id bracket count match traceN
+
+" some special functions
+syn keyword formStatement abs_ bernoulli_ binom_ conjg_ count_
+syn keyword formStatement d_ dd_ delta_ deltap_ denom_ distrib_
+syn keyword formStatement dum_ dummy_ dummyten_ e_ exp_ fac_
+syn keyword formStatement factorin_ firstbracket_ g5_ g6_ g7_
+syn keyword formStatement g_ gcd_ gi_ integer_ invfac_ match_
+syn keyword formStatement max_ maxpowerof_ min_ minpowerof_
+syn keyword formStatement mod_ nargs_ nterms_ pattern_ poly_
+syn keyword formStatement polyadd_ polydiv_ polygcd_ polyintfac_
+syn keyword formStatement polymul_ polynorm_ polyrem_ polysub_
+syn keyword formStatement replace_ reverse_ root_ setfun_ sig_
+syn keyword formStatement sign_ sum_ sump_ table_ tbl_ term_
+syn keyword formStatement termsin_ termsinbracket_ theta_ thetap_
+syn keyword formStatement 5_ 6_ 7_
+
+syn keyword formReserved sqrt_ ln_ sin_ cos_ tan_ asin_ acos_
+syn keyword formReserved atan_ atan2_ sinh_ cosh_ tanh_ asinh_
+syn keyword formReserved acosh_ atanh_ li2_ lin_
+
+syn keyword formTodo contained TODO FIXME XXX
+
+syn match formSpecial display contained "\\\(n\|t\|b\|\\\|\"\)"
+syn match formSpecial display contained "%\(%\|e\|E\|s\|f\|\$\)"
+syn match formSpecial "\<N\d\+_[?]"
+
+" pattern matching for keywords
+syn match formComment "^\ *\*.*$" contains=formTodo
+syn match formComment "\;\ *\*.*$" contains=formTodo
+syn region formString start=+"+ end=+"+ contains=formSpecial
+syn region formString start=+'+ end=+'+
+syn region formNestedString start=+`+ end=+'+ contains=formNestedString
+syn match formPreProc "^\=\#[a-zA-Z][a-zA-Z0-9]*\>"
+syn match formNumber "\<\d\+\>"
+syn match formNumber "\<\d\+\.\d*\>"
+syn match formNumber "\.\d\+\>"
+syn match formNumber "-\d" contains=Number
+syn match formNumber "-\.\d" contains=Number
+syn match formNumber "i_\+\>"
+syn match formNumber "fac_\+\>"
+" pattern matching wildcards
+syn match formNumber "?[a-zA-Z0-9]*"
+" dollar-variables (new in 3.x)
+syn match formNumber "\\$[a-zA-Z0-9]*"
+" scalar products
+syn match formNumber "^\=[a-zA-Z][a-zA-Z0-9]*\.[a-zA-Z][a-zA-Z0-9]*\>"
+
+syn match formDirective "^\=\.[a-zA-Z][a-zA-Z0-9]*\>"
+
+" hi User Labels
+syn sync ccomment formComment minlines=10
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link formConditional Conditional
+hi def link formNumber Number
+hi def link formStatement Statement
+hi def link formComment Comment
+hi def link formPreProc PreProc
+hi def link formDirective PreProc
+hi def link formType Type
+hi def link formString String
+hi def link formNestedString String
+hi def link formReserved Error
+hi def link formTodo Todo
+hi def link formSpecial SpecialChar
+
+if !exists("form_enhanced_color")
+hi def link formHeaderStatement Statement
+else
+" enhanced color mode
+hi def link formHeaderStatement HeaderStatement
+" dark and a light background for local types
+if &background == "dark"
+hi HeaderStatement term=underline ctermfg=LightGreen guifg=LightGreen gui=bold
+else
+hi HeaderStatement term=underline ctermfg=DarkGreen guifg=SeaGreen gui=bold
+endif
+" change slightly the default for dark gvim
+if has("gui_running") && &background == "dark"
+hi Conditional guifg=LightBlue gui=bold
+hi Statement guifg=LightYellow
+endif
+endif
+
+
+ let b:current_syntax = "form"
+
+" vim: ts=8
diff --git a/runtime/syntax/forth.vim b/runtime/syntax/forth.vim
new file mode 100644
index 0000000..fe98634
--- /dev/null
+++ b/runtime/syntax/forth.vim
@@ -0,0 +1,266 @@
+" Vim syntax file
+" Language: FORTH
+" Current Maintainer: Johan Kotlinski <kotlinski@gmail.com>
+" Previous Maintainer: Christian V. J. Br�ssow <cvjb@cvjb.de>
+" Last Change: 2023-01-12
+" Filenames: *.fs,*.ft
+" URL: https://github.com/jkotlinski/forth.vim
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Synchronization method
+syn sync ccomment
+syn sync maxlines=200
+
+" I use gforth, so I set this to case ignore
+syn case ignore
+
+" Some special, non-FORTH keywords
+syn keyword forthTodo contained TODO FIXME XXX
+
+" Characters allowed in keywords
+" I don't know if 128-255 are allowed in ANS-FORTH
+setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255
+
+" when wanted, highlight trailing white space
+if exists("forth_space_errors")
+ if !exists("forth_no_trail_space_error")
+ syn match forthSpaceError display excludenl "\s\+$"
+ endif
+ if !exists("forth_no_tab_space_error")
+ syn match forthSpaceError display " \+\t"me=e-1
+ endif
+endif
+
+" Keywords
+
+" basic mathematical and logical operators
+syn keyword forthOperators + - * / MOD /MOD NEGATE ABS MIN MAX
+syn keyword forthOperators AND OR XOR NOT LSHIFT RSHIFT INVERT 2* 2/ 1+
+syn keyword forthOperators 1- 2+ 2- 8* UNDER+
+syn keyword forthOperators M+ */ */MOD M* UM* M*/ UM/MOD FM/MOD SM/REM
+syn keyword forthOperators D+ D- DNEGATE DABS DMIN DMAX D2* D2/
+syn keyword forthOperators F+ F- F* F/ FNEGATE FABS FMAX FMIN FLOOR FROUND
+syn keyword forthOperators F** FSQRT FEXP FEXPM1 FLN FLNP1 FLOG FALOG FSIN
+syn keyword forthOperators FCOS FSINCOS FTAN FASIN FACOS FATAN FATAN2 FSINH
+syn keyword forthOperators FCOSH FTANH FASINH FACOSH FATANH F2* F2/ 1/F
+syn keyword forthOperators F~REL F~ABS F~
+syn keyword forthOperators 0< 0<= 0<> 0= 0> 0>= < <= <> = > >= U< U<=
+syn keyword forthOperators U> U>= D0< D0<= D0<> D0= D0> D0>= D< D<= D<>
+syn keyword forthOperators D= D> D>= DU< DU<= DU> DU>= WITHIN ?NEGATE
+syn keyword forthOperators ?DNEGATE TRUE FALSE
+
+" various words that take an input and do something with it
+syn keyword forthFunction . U. .R U.R
+
+" stack manipulations
+syn keyword forthStack DROP NIP DUP OVER TUCK SWAP ROT -ROT ?DUP PICK ROLL
+syn keyword forthStack 2DROP 2NIP 2DUP 2OVER 2TUCK 2SWAP 2ROT 2-ROT
+syn keyword forthStack 3DUP 4DUP 5DUP 3DROP 4DROP 5DROP 8DROP 4SWAP 4ROT
+syn keyword forthStack 4-ROT 4TUCK 8SWAP 8DUP
+syn keyword forthRStack >R R> R@ RDROP 2>R 2R> 2R@ 2RDROP
+syn keyword forthRstack 4>R 4R> 4R@ 4RDROP
+syn keyword forthFStack FDROP FNIP FDUP FOVER FTUCK FSWAP FROT
+
+" stack pointer manipulations
+syn keyword forthSP SP@ SP! FP@ FP! RP@ RP! LP@ LP! DEPTH
+
+" address operations
+syn keyword forthMemory @ ! +! C@ C! 2@ 2! F@ F! SF@ SF! DF@ DF!
+syn keyword forthAdrArith CHARS CHAR+ CELLS CELL+ CELL ALIGN ALIGNED FLOATS
+syn keyword forthAdrArith FLOAT+ FLOAT FALIGN FALIGNED SFLOATS SFLOAT+
+syn keyword forthAdrArith SFALIGN SFALIGNED DFLOATS DFLOAT+ DFALIGN DFALIGNED
+syn keyword forthAdrArith MAXALIGN MAXALIGNED CFALIGN CFALIGNED
+syn keyword forthAdrArith ADDRESS-UNIT-BITS ALLOT ALLOCATE HERE
+syn keyword forthMemBlks MOVE ERASE CMOVE CMOVE> FILL BLANK UNUSED
+
+" conditionals
+syn keyword forthCond IF ELSE ENDIF THEN CASE OF ENDOF ENDCASE ?DUP-IF
+syn keyword forthCond ?DUP-0=-IF AHEAD CS-PICK CS-ROLL CATCH THROW WITHIN
+
+" iterations
+syn keyword forthLoop BEGIN WHILE REPEAT UNTIL AGAIN
+syn keyword forthLoop ?DO LOOP I J K +DO U+DO -DO U-DO DO +LOOP -LOOP
+syn keyword forthLoop UNLOOP LEAVE ?LEAVE EXIT DONE FOR NEXT RECURSE
+
+" new words
+syn match forthClassDef '\<:class\s*[^ \t]\+\>'
+syn match forthObjectDef '\<:object\s*[^ \t]\+\>'
+syn match forthColonDef '\<:m\?\s*[^ \t]\+\>'
+syn keyword forthEndOfColonDef ; ;M ;m
+syn keyword forthEndOfClassDef ;class
+syn keyword forthEndOfObjectDef ;object
+syn keyword forthDefine CONSTANT 2CONSTANT FCONSTANT VARIABLE 2VARIABLE
+syn keyword forthDefine FVARIABLE CREATE USER VALUE TO DEFER IS <BUILDS DOES> IMMEDIATE
+syn keyword forthDefine COMPILE-ONLY COMPILE RESTRICT INTERPRET POSTPONE EXECUTE
+syn keyword forthDefine LITERAL CREATE-INTERPRET/COMPILE INTERPRETATION>
+syn keyword forthDefine <INTERPRETATION COMPILATION> <COMPILATION ] LASTXT
+syn keyword forthDefine COMP' POSTPONE, FIND-NAME NAME>INT NAME?INT NAME>COMP
+syn keyword forthDefine NAME>STRING STATE C; CVARIABLE BUFFER: MARKER
+syn keyword forthDefine , 2, F, C, COMPILE,
+syn match forthDefine "\[DEFINED]"
+syn match forthDefine "\[UNDEFINED]"
+syn match forthDefine "\[IF]"
+syn match forthDefine "\[IFDEF]"
+syn match forthDefine "\[IFUNDEF]"
+syn match forthDefine "\[THEN]"
+syn match forthDefine "\[ENDIF]"
+syn match forthDefine "\[ELSE]"
+syn match forthDefine "\[?DO]"
+syn match forthDefine "\[DO]"
+syn match forthDefine "\[LOOP]"
+syn match forthDefine "\[+LOOP]"
+syn match forthDefine "\[NEXT]"
+syn match forthDefine "\[BEGIN]"
+syn match forthDefine "\[UNTIL]"
+syn match forthDefine "\[AGAIN]"
+syn match forthDefine "\[WHILE]"
+syn match forthDefine "\[REPEAT]"
+syn match forthDefine "\[COMP']"
+syn match forthDefine "'"
+syn match forthDefine '\<\[\>'
+syn match forthDefine "\[']"
+syn match forthDefine '\[COMPILE]'
+syn match forthDefine '\[CHAR]'
+
+" debugging
+syn keyword forthDebug PRINTDEBUGDATA PRINTDEBUGLINE
+syn match forthDebug "\<\~\~\>"
+
+" Assembler
+syn keyword forthAssembler ASSEMBLER CODE END-CODE ;CODE FLUSH-ICACHE C,
+
+" basic character operations
+syn keyword forthCharOps (.) CHAR EXPECT FIND WORD TYPE -TRAILING EMIT KEY
+syn keyword forthCharOps KEY? TIB CR BL COUNT SPACE SPACES
+" recognize 'char (' or '[char] (' correctly, so it doesn't
+" highlight everything after the paren as a comment till a closing ')'
+syn match forthCharOps '\<char\s\S\s'
+syn match forthCharOps '\<\[char\]\s\S\s'
+syn region forthCharOps start=+."\s+ skip=+\\"+ end=+"+
+
+" char-number conversion
+syn keyword forthConversion <<# <# # #> #>> #S (NUMBER) (NUMBER?) CONVERT D>F
+syn keyword forthConversion D>S DIGIT DPL F>D HLD HOLD NUMBER S>D SIGN >NUMBER
+syn keyword forthConversion F>S S>F HOLDS
+
+" interpreter, wordbook, compiler
+syn keyword forthForth (LOCAL) BYE COLD ABORT >BODY >NEXT >LINK CFA >VIEW HERE
+syn keyword forthForth PAD WORDS VIEW VIEW> N>LINK NAME> LINK> L>NAME FORGET
+syn keyword forthForth BODY> ASSERT( ASSERT0( ASSERT1( ASSERT2( ASSERT3( )
+syn keyword forthForth >IN ACCEPT ENVIRONMENT? EVALUATE QUIT SOURCE ACTION-OF
+syn keyword forthForth DEFER! DEFER@ PARSE PARSE-NAME REFILL RESTORE-INPUT
+syn keyword forthForth SAVE-INPUT SOURCE-ID
+syn region forthForth start=+ABORT"\s+ skip=+\\"+ end=+"+
+
+" vocabularies
+syn keyword forthVocs ONLY FORTH ALSO ROOT SEAL VOCS ORDER CONTEXT #VOCS
+syn keyword forthVocs VOCABULARY DEFINITIONS
+
+" File keywords
+syn keyword forthFileMode R/O R/W W/O BIN
+syn keyword forthFileWords OPEN-FILE CREATE-FILE CLOSE-FILE DELETE-FILE
+syn keyword forthFileWords RENAME-FILE READ-FILE READ-LINE KEY-FILE
+syn keyword forthFileWords KEY?-FILE WRITE-FILE WRITE-LINE EMIT-FILE
+syn keyword forthFileWords FLUSH-FILE FILE-STATUS FILE-POSITION
+syn keyword forthFileWords REPOSITION-FILE FILE-SIZE RESIZE-FILE
+syn keyword forthFileWords SLURP-FILE SLURP-FID STDIN STDOUT STDERR
+syn keyword forthFileWords INCLUDE-FILE INCLUDED REQUIRED
+syn keyword forthBlocks OPEN-BLOCKS USE LOAD --> BLOCK-OFFSET
+syn keyword forthBlocks GET-BLOCK-FID BLOCK-POSITION LIST SCR BLOCK
+syn keyword forthBlocks BUFER EMPTY-BUFFERS EMPTY-BUFFER UPDATE UPDATED?
+syn keyword forthBlocks SAVE-BUFFERS SAVE-BUFFER FLUSH THRU +LOAD +THRU
+syn keyword forthBlocks BLOCK-INCLUDED BLK
+
+" numbers
+syn keyword forthMath DECIMAL HEX BASE
+syn match forthInteger '\<-\=[0-9]\+.\=\>'
+syn match forthInteger '\<&-\=[0-9]\+.\=\>'
+syn match forthInteger '\<#-\=[0-9]\+.\=\>'
+" recognize hex and binary numbers, the '$' and '%' notation is for gforth
+syn match forthInteger '\<\$\x*\x\+\>' " *1* --- don't mess
+syn match forthInteger '\<\x*\d\x*\>' " *2* --- this order!
+syn match forthInteger '\<%[0-1]*[0-1]\+\>'
+syn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe]\d\+\>'
+syn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe][-+]\d\+\>'
+
+" XXX If you find this overkill you can remove it. this has to come after the
+" highlighting for numbers otherwise it has no effect.
+syn region forthComment start='0 \[if\]' end='\[endif\]' end='\[then\]' contains=forthTodo
+
+" Strings
+syn region forthString start=+\.*\"+ end=+"+ end=+$+ contains=@Spell
+" XXX
+syn region forthString start=+s\"+ end=+"+ end=+$+ contains=@Spell
+syn region forthString start=+s\\\"+ end=+"+ end=+$+ contains=@Spell
+syn region forthString start=+c\"+ end=+"+ end=+$+ contains=@Spell
+
+" Comments
+syn match forthComment '\\\%(\s.*\)\=$' contains=@Spell,forthTodo,forthSpaceError
+syn region forthComment start='\\S\s' end='.*' contains=@Spell,forthTodo,forthSpaceError
+syn match forthComment '\.(\s[^)]*)' contains=@Spell,forthTodo,forthSpaceError
+syn region forthComment start='\(^\|\s\)\zs(\s' skip='\\)' end=')' contains=@Spell,forthTodo,forthSpaceError
+syn region forthComment start='/\*' end='\*/' contains=@Spell,forthTodo,forthSpaceError
+
+" Include files
+syn match forthInclude '^INCLUDE\s\+\k\+'
+syn match forthInclude '^REQUIRE\s\+\k\+'
+syn match forthInclude '^FLOAD\s\+'
+syn match forthInclude '^NEEDS\s\+'
+
+" Locals definitions
+syn region forthLocals start='{\s' start='{$' end='\s}' end='^}'
+syn match forthLocals '{ }' " otherwise, at least two spaces between
+syn region forthDeprecated start='locals|' end='|'
+
+" Define the default highlighting.
+hi def link forthTodo Todo
+hi def link forthOperators Operator
+hi def link forthMath Number
+hi def link forthInteger Number
+hi def link forthFloat Float
+hi def link forthStack Special
+hi def link forthRstack Special
+hi def link forthFStack Special
+hi def link forthSP Special
+hi def link forthMemory Function
+hi def link forthAdrArith Function
+hi def link forthMemBlks Function
+hi def link forthCond Conditional
+hi def link forthLoop Repeat
+hi def link forthColonDef Define
+hi def link forthEndOfColonDef Define
+hi def link forthDefine Define
+hi def link forthDebug Debug
+hi def link forthAssembler Include
+hi def link forthCharOps Character
+hi def link forthConversion String
+hi def link forthForth Statement
+hi def link forthVocs Statement
+hi def link forthString String
+hi def link forthComment Comment
+hi def link forthClassDef Define
+hi def link forthEndOfClassDef Define
+hi def link forthObjectDef Define
+hi def link forthEndOfObjectDef Define
+hi def link forthInclude Include
+hi def link forthLocals Type " nothing else uses type and locals must stand out
+hi def link forthDeprecated Error " if you must, change to Type
+hi def link forthFileMode Function
+hi def link forthFunction Function
+hi def link forthFileWords Statement
+hi def link forthBlocks Statement
+hi def link forthSpaceError Error
+
+let b:current_syntax = "forth"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim:ts=8:sw=4:nocindent:smartindent:
+
diff --git a/runtime/syntax/fortran.vim b/runtime/syntax/fortran.vim
new file mode 100644
index 0000000..b5c9b1e
--- /dev/null
+++ b/runtime/syntax/fortran.vim
@@ -0,0 +1,553 @@
+" Vim syntax file
+" Language: Fortran 2008 (and older: Fortran 2003, 95, 90, and 77)
+" Version: (v104) 2021 April 06
+" Maintainer: Ajit J. Thakkar <ajit@unb.ca>; <http://www2.unb.ca/~ajit/>
+" Usage: For instructions, do :help fortran-syntax from Vim
+" Credits:
+" Version 0.1 for Fortran 95 was created in April 2000 by Ajit Thakkar from an
+" older Fortran 77 syntax file by Mario Eusebio and Preben Guldberg.
+" Since then, useful suggestions and contributions have been made, in order, by:
+" Andrej Panjkov, Bram Moolenaar, Thomas Olsen, Michael Sternberg, Christian Reile,
+" Walter Dieudonne, Alexander Wagner, Roman Bertle, Charles Rendleman,
+" Andrew Griffiths, Joe Krahn, Hendrik Merx, Matt Thompson, Jan Hermann,
+" Stefano Zaghi, Vishnu V. Krishnan, Judicael Grasset, Takuma Yoshida,
+" Eisuke Kawashima, Andre Chalella, and Fritz Reese.
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Choose fortran_dialect using the priority:
+" source file directive > buffer-local value > global value > file extension
+" first try using directive in first three lines of file
+let b:fortran_retype = getline(1)." ".getline(2)." ".getline(3)
+if b:fortran_retype =~? '\<fortran_dialect\s*=\s*F\>'
+ let b:fortran_dialect = "F"
+elseif b:fortran_retype =~? '\<fortran_dialect\s*=\s*f08\>'
+ let b:fortran_dialect = "f08"
+elseif !exists("b:fortran_dialect")
+ if exists("g:fortran_dialect") && g:fortran_dialect =~# '\<F\|f08\>'
+ " try global variable
+ let b:fortran_dialect = g:fortran_dialect
+ else " nothing found, so use default
+ let b:fortran_dialect = "f08"
+ endif
+endif
+unlet! b:fortran_retype
+" make sure buffer-local value is not invalid
+if b:fortran_dialect !~# '\<F\|f08\>'
+ let b:fortran_dialect = "f08"
+endif
+
+" Choose between fixed and free source form if this hasn't been done yet
+if !exists("b:fortran_fixed_source")
+ if b:fortran_dialect == "F"
+ " F requires free source form
+ let b:fortran_fixed_source = 0
+ elseif exists("fortran_free_source")
+ " User guarantees free source form for all fortran files
+ let b:fortran_fixed_source = 0
+ elseif exists("fortran_fixed_source")
+ " User guarantees fixed source form for all fortran files
+ let b:fortran_fixed_source = 1
+ elseif expand("%:e") =~? '^f\%(90\|95\|03\|08\)$'
+ " Free-form file extension defaults as in Intel ifort, gcc(gfortran), NAG, Pathscale, and Cray compilers
+ let b:fortran_fixed_source = 0
+ elseif expand("%:e") =~? '^\%(f\|f77\|for\)$'
+ " Fixed-form file extension defaults
+ let b:fortran_fixed_source = 1
+ else
+ " Modern fortran still allows both free and fixed source form.
+ " Assume fixed source form unless signs of free source form
+ " are detected in the first five columns of the first s:lmax lines.
+ " Detection becomes more accurate and time-consuming if more lines
+ " are checked. Increase the limit below if you keep lots of comments at
+ " the very top of each file and you have a fast computer.
+ let s:lmax = 500
+ if ( s:lmax > line("$") )
+ let s:lmax = line("$")
+ endif
+ let b:fortran_fixed_source = 1
+ let s:ln=1
+ while s:ln <= s:lmax
+ let s:test = strpart(getline(s:ln),0,5)
+ if s:test !~ '^[Cc*]' && s:test !~ '^ *[!#]' && s:test =~ '[^ 0-9\t]' && s:test !~ '^[ 0-9]*\t'
+ let b:fortran_fixed_source = 0
+ break
+ endif
+ let s:ln = s:ln + 1
+ endwhile
+ unlet! s:lmax s:ln s:test
+ endif
+endif
+
+syn case ignore
+
+if b:fortran_fixed_source == 1
+ syn match fortranConstructName "^\s\{6,}\zs\a\w*\ze\s*:"
+else
+ syn match fortranConstructName "^\s*\zs\a\w*\ze\s*:"
+endif
+if exists("fortran_more_precise")
+ syn match fortranConstructName "\(\<end\s*do\s\+\)\@11<=\a\w*"
+ syn match fortranConstructName "\(\<end\s*if\s\+\)\@11<=\a\w*"
+ syn match fortranConstructName "\(\<end\s*select\s\+\)\@15<=\a\w*"
+endif
+
+syn match fortranUnitHeader "\<end\>"
+syn match fortranType "\<character\>"
+syn match fortranType "\<complex\>"
+syn match fortranType "\<integer\>"
+syn match fortranType "\<real\>"
+syn match fortranType "\<logical\>"
+syn keyword fortranType intrinsic
+syn match fortranType "\<implicit\>"
+syn keyword fortranStructure dimension
+syn keyword fortranStorageClass parameter save
+syn match fortranUnitHeader "\<subroutine\>"
+syn keyword fortranCall call
+syn match fortranUnitHeader "\<function\>"
+syn match fortranUnitHeader "\<program\>"
+syn match fortranUnitHeader "\<block\>"
+syn keyword fortranKeyword return stop
+syn keyword fortranConditional else then
+syn match fortranConditional "\<if\>"
+syn match fortranConditionalOb "\<if\s*(.*)\s*\d\+\s*,\s*\d\+\s*,\s*\d\+\s*$"
+syn match fortranRepeat "\<do\>"
+
+syn keyword fortranTodo contained todo fixme
+
+"Catch errors caused by too many right parentheses
+syn region fortranParen transparent start="(" end=")" contains=ALLBUT,fortranParenError,@fortranCommentGroup,cIncluded,@spell
+syn match fortranParenError ")"
+
+syn match fortranOperator "\.\s*n\=eqv\s*\."
+syn match fortranOperator "\.\s*\(and\|or\|not\)\s*\."
+syn match fortranOperator "\(+\|-\|/\|\*\)"
+syn match fortranTypeOb "\<character\s*\*"
+
+syn match fortranBoolean "\.\s*\(true\|false\)\s*\."
+
+syn keyword fortranReadWrite backspace close endfile inquire open print read rewind write
+
+"If tabs are allowed then the left margin checks do not work
+if exists("fortran_have_tabs")
+ syn match fortranTab "\t" transparent
+else
+ syn match fortranTab "\t"
+endif
+
+syn keyword fortranIO access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit
+
+syn keyword fortranIntrinsicR alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl
+
+" Intrinsics provided by some vendors
+syn keyword fortranExtraIntrinsic algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh
+
+syn keyword fortranIntrinsic abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh
+syn match fortranIntrinsic "\<len\s*[(,]"me=s+3
+syn match fortranIntrinsic "\<real\s*("me=s+4
+syn match fortranIntrinsic "\<logical\s*("me=s+7
+syn match fortranType "\<implicit\s\+real\>"
+syn match fortranType "\<implicit\s\+logical\>"
+
+"Numbers of various sorts
+" Integers
+syn match fortranNumber display "\<\d\+\(_\a\w*\)\=\>"
+" floating point number, without a decimal point
+syn match fortranFloatIll display "\<\d\+[deq][-+]\=\d\+\(_\a\w*\)\=\>"
+" floating point number, starting with a decimal point
+syn match fortranFloatIll display "\.\d\+\([deq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
+" floating point number, no digits after decimal
+syn match fortranFloatIll display "\<\d\+\.\([deq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
+" floating point number, D or Q exponents
+syn match fortranFloatIll display "\<\d\+\.\d\+\([dq][-+]\=\d\+\)\=\(_\a\w*\)\=\>"
+" floating point number
+syn match fortranFloat display "\<\d\+\.\d\+\(e[-+]\=\d\+\)\=\(_\a\w*\)\=\>"
+" binary number
+syn match fortranBinary display "b["'][01]\+["']"
+" octal number
+syn match fortranOctal display "o["'][0-7]\+["']"
+" hexadecimal number
+syn match fortranHex display "z["'][0-9A-F]\+["']"
+" Numbers in formats
+syn match fortranFormatSpec display "\d*f\d\+\.\d\+"
+syn match fortranFormatSpec display "\d*e[sn]\=\d\+\.\d\+\(e\d+\>\)\="
+syn match fortranFormatSpec display "\d*\(d\|q\|g\)\d\+\.\d\+\(e\d+\)\="
+syn match fortranFormatSpec display "\d\+x\>"
+" The next match cannot be used because it would pick up identifiers as well
+" syn match fortranFormatSpec display "\<\(a\|i\)\d\+"
+
+" Numbers as labels
+syn match fortranLabelNumber display "^\d\{1,5}\s"me=e-1
+syn match fortranLabelNumber display "^ \d\{1,4}\s"ms=s+1,me=e-1
+syn match fortranLabelNumber display "^ \d\{1,3}\s"ms=s+2,me=e-1
+syn match fortranLabelNumber display "^ \d\d\=\s"ms=s+3,me=e-1
+syn match fortranLabelNumber display "^ \d\s"ms=s+4,me=e-1
+
+if exists("fortran_more_precise")
+ " Numbers as targets
+ syn match fortranTarget display "\(\<if\s*(.\+)\s*\)\@<=\(\d\+\s*,\s*\)\{2}\d\+\>"
+ syn match fortranTarget display "\(\<do\s\+\)\@11<=\d\+\>"
+ syn match fortranTarget display "\(\<go\s*to\s*(\=\)\@11<=\(\d\+\s*,\s*\)*\d\+\>"
+endif
+
+syn keyword fortranTypeR external
+syn keyword fortranIOR format
+syn match fortranKeywordR "\<continue\>"
+syn match fortranKeyword "^\s*\d\+\s\+continue\>"
+syn match fortranKeyword "\<go\s*to\>"
+syn match fortranKeywordDel "\<go\s*to\ze\s\+.*,\s*(.*$"
+syn match fortranKeywordOb "\<go\s*to\ze\s*(\d\+.*$"
+syn region fortranStringR start=+'+ end=+'+ contains=fortranContinueMark,fortranLeftMargin,fortranSerialNumber
+syn keyword fortranIntrinsicR dim lge lgt lle llt mod
+syn keyword fortranKeywordDel assign pause
+
+syn match fortranType "\<type\>"
+syn keyword fortranType none
+
+syn keyword fortranStructure private public intent optional
+syn keyword fortranStructure pointer target allocatable
+syn keyword fortranStorageClass in out
+syn match fortranStorageClass "\<kind\s*="me=s+4
+syn match fortranStorageClass "\<len\s*="me=s+3
+
+syn match fortranUnitHeader "\<module\>"
+syn match fortranUnitHeader "\<submodule\>"
+syn keyword fortranUnitHeader use only contains
+syn keyword fortranUnitHeader result operator assignment
+syn match fortranUnitHeader "\<interface\>"
+syn keyword fortranKeyword allocate deallocate nullify cycle exit
+syn match fortranConditional "\<select\>"
+syn keyword fortranConditional case default where elsewhere
+
+syn match fortranOperator "\(\(>\|<\)=\=\|==\|/=\|=\)"
+syn match fortranOperator "=>"
+
+syn region fortranString start=+"+ end=+"+ contains=fortranLeftMargin,fortranContinueMark,fortranSerialNumber
+syn keyword fortranIO pad position action delim readwrite
+syn keyword fortranIO eor advance nml
+
+syn keyword fortranIntrinsic adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack precision present product radix random_number random_seed range repeat reshape rrspacing
+syn keyword fortranIntrinsic scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify
+syn match fortranIntrinsic "\<not\>\(\s*\.\)\@!"me=s+3
+syn match fortranIntrinsic "\<kind\>\s*[(,]"me=s+4
+
+syn match fortranUnitHeader "\<end\s*function"
+syn match fortranUnitHeader "\<end\s*interface"
+syn match fortranUnitHeader "\<end\s*module"
+syn match fortranUnitHeader "\<end\s*submodule"
+syn match fortranUnitHeader "\<end\s*program"
+syn match fortranUnitHeader "\<end\s*subroutine"
+syn match fortranUnitHeader "\<end\s*block"
+syn match fortranRepeat "\<end\s*do"
+syn match fortranConditional "\<end\s*where"
+syn match fortranConditional "\<select\s*case"
+syn match fortranConditional "\<end\s*select"
+syn match fortranType "\<end\s*type"
+syn match fortranType "\<in\s*out"
+
+syn keyword fortranType procedure
+syn match fortranType "\<module\ze\s\+procedure\>"
+syn keyword fortranIOR namelist
+syn keyword fortranConditionalR while
+syn keyword fortranIntrinsicR achar iachar transfer
+
+syn keyword fortranInclude include
+syn keyword fortranStorageClassR sequence
+
+syn match fortranConditional "\<end\s*if"
+syn match fortranIO contains=fortranOperator "\<e\(nd\|rr\)\s*=\s*\d\+"
+syn match fortranConditional "\<else\s*if"
+
+syn keyword fortranUnitHeaderOb entry
+syn match fortranTypeR display "double\s\+precision"
+syn match fortranTypeR display "double\s\+complex"
+syn match fortranUnitHeaderR display "block\s\+data"
+syn keyword fortranStorageClassR common equivalence data
+syn keyword fortranIntrinsicR dble dprod
+syn match fortranOperatorR "\.\s*[gl][et]\s*\."
+syn match fortranOperatorR "\.\s*\(eq\|ne\)\s*\."
+
+syn keyword fortranRepeat forall
+syn match fortranRepeat "\<end\s*forall"
+syn keyword fortranIntrinsic null cpu_time
+syn match fortranType "\<elemental\>"
+syn match fortranType "\<pure\>"
+syn match fortranType "\<impure\>"
+syn match fortranType "\<recursive\>"
+if exists("fortran_more_precise")
+ syn match fortranConstructName "\(\<end\s*forall\s\+\)\@15<=\a\w*\>"
+endif
+
+if b:fortran_dialect == "f08"
+ " F2003
+ syn keyword fortranIntrinsic command_argument_count get_command get_command_argument get_environment_variable is_iostat_end is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of
+ " ISO_C_binding
+ syn keyword fortranConstant c_null_char c_alert c_backspace c_form_feed c_new_line c_carriage_return c_horizontal_tab c_vertical_tab
+ syn keyword fortranConstant c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr
+ syn keyword fortranIntrinsic iso_c_binding c_loc c_funloc c_associated c_f_pointer c_f_procpointer
+ syn keyword fortranType c_ptr c_funptr
+ " ISO_Fortran_env
+ syn keyword fortranConstant iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit
+ " IEEE_arithmetic
+ syn keyword fortranIntrinsic ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode
+
+ syn keyword fortranReadWrite flush wait
+ syn keyword fortranIO decimal round iomsg
+ syn keyword fortranType asynchronous nopass non_overridable pass protected volatile extends import
+ syn keyword fortranType non_intrinsic value bind deferred generic final enumerator
+ syn match fortranType "\<abstract\>"
+ syn match fortranType "\<class\>"
+ syn match fortranType "\<associate\>"
+ syn match fortranType "\<end\s*associate"
+ syn match fortranType "\<enum\s*,\s*bind\s*(\s*c\s*)"
+ syn match fortranType "\<end\s*enum"
+ syn match fortranConditional "\<select\s*type"
+ syn match fortranConditional "\<type\s*is\>"
+ syn match fortranConditional "\<class\s*is\>"
+ syn match fortranUnitHeader "\<abstract\s*interface\>"
+ syn match fortranOperator "\([\|]\)"
+
+ " F2008
+ syn keyword fortranIntrinsic acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2
+ syn keyword fortranIntrinsic atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits
+ syn keyword fortranIntrinsic bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image
+ syn keyword fortranIO newunit
+ syn keyword fortranType contiguous
+ syn keyword fortranRepeat concurrent
+
+" CUDA fortran
+ syn match fortranTypeCUDA "\<attributes\>"
+ syn keyword fortranTypeCUDA host global device value
+ syn keyword fortranTypeCUDA shared constant pinned texture
+ syn keyword fortranTypeCUDA dim1 dim2 dim3 dim4
+ syn keyword fortranTypeCUDA cudadeviceprop cuda_count_kind cuda_stream_kind
+ syn keyword fortranTypeCUDA cudaEvent cudaFuncAttributes cudaArrayPtr
+ syn keyword fortranTypeCUDA cudaSymbol cudaChannelFormatDesc cudaPitchedPtr
+ syn keyword fortranTypeCUDA cudaExtent cudaMemcpy3DParms
+ syn keyword fortranTypeCUDA cudaFuncCachePreferNone cudaFuncCachePreferShared
+ syn keyword fortranTypeCUDA cudaFuncCachePreferL1 cudaLimitStackSize
+ syn keyword fortranTypeCUDA cudaLimitPrintfSize cudaLimitMallocHeapSize
+ syn keyword fortranTypeCUDA cudaSharedMemBankSizeDefault cudaSharedMemBankSizeFourByte cudaSharedMemBankSizeEightByte
+ syn keyword fortranTypeCUDA cudaEventDefault cudaEventBlockingSync cudaEventDisableTiming
+ syn keyword fortranTypeCUDA cudaMemcpyHostToDevice cudaMemcpyDeviceToHost
+ syn keyword fortranTypeCUDA cudaMemcpyDeviceToDevice
+ syn keyword fortranTypeCUDA cudaErrorNotReady cudaSuccess cudaErrorInvalidValue
+ syn keyword fortranTypeCUDA c_devptr
+
+ syn match fortranStringCUDA "blockidx%[xyz]"
+ syn match fortranStringCUDA "blockdim%[xyz]"
+ syn match fortranStringCUDA "griddim%[xyz]"
+ syn match fortranStringCUDA "threadidx%[xyz]"
+
+ syn keyword fortranIntrinsicCUDA warpsize syncthreads syncthreads_and syncthreads_count syncthreads_or threadfence threadfence_block threadfence_system gpu_time allthreads anythread ballot
+ syn keyword fortranIntrinsicCUDA atomicadd atomicsub atomicmax atomicmin atomicand atomicor atomicxor atomicexch atomicinc atomicdec atomiccas sizeof __shfl __shfl_up __shfl_down __shfl_xor
+ syn keyword fortranIntrinsicCUDA cudaChooseDevice cudaDeviceGetCacheConfig cudaDeviceGetLimit cudaDeviceGetSharedMemConfig cudaDeviceReset cudaDeviceSetCacheConfig cudaDeviceSetLimit cudaDeviceSetSharedMemConfig cudaDeviceSynchronize cudaGetDevice cudaGetDeviceCount cudaGetDeviceProperties cudaSetDevice cudaSetDeviceFlags cudaSetValidDevices
+ syn keyword fortranIntrinsicCUDA cudaThreadExit cudaThreadSynchronize cudaGetLastError cudaGetErrorString cudaPeekAtLastError cudaStreamCreate cudaStreamDestroy cudaStreamQuery cudaStreamSynchronize cudaStreamWaitEvent cudaEventCreate cudaEventCreateWithFlags cudaEventDestroy cudaEventElapsedTime cudaEventQuery cudaEventRecord cudaEventSynchronize
+ syn keyword fortranIntrinsicCUDA cudaFuncGetAttributes cudaFuncSetCacheConfig cudaFuncSetSharedMemConfig cudaSetDoubleForDevice cudaSetDoubleForHost cudaFree cudaFreeArray cudaFreeHost cudaGetSymbolAddress cudaGetSymbolSize
+ syn keyword fortranIntrinsicCUDA cudaHostAlloc cudaHostGetDevicePointer cudaHostGetFlags cudaHostRegister cudaHostUnregister cudaMalloc cudaMallocArray cudaMallocHost cudaMallocPitch cudaMalloc3D cudaMalloc3DArray
+ syn keyword fortranIntrinsicCUDA cudaMemcpy cudaMemcpyArraytoArray cudaMemcpyAsync cudaMemcpyFromArray cudaMemcpyFromSymbol cudaMemcpyFromSymbolAsync cudaMemcpyPeer cudaMemcpyPeerAsync cudaMemcpyToArray cudaMemcpyToSymbol cudaMemcpyToSymbolAsync cudaMemcpy2D cudaMemcpy2DArrayToArray cudaMemcpy2DAsync cudaMemcpy2DFromArray cudaMemcpy2DToArray cudaMemcpy3D cudaMemcpy3DAsync
+ syn keyword fortranIntrinsicCUDA cudaMemGetInfo cudaMemset cudaMemset2D cudaMemset3D cudaDeviceCanAccessPeer cudaDeviceDisablePeerAccess cudaDeviceEnablePeerAccess cudaPointerGetAttributes cudaDriverGetVersion cudaRuntimeGetVersion
+
+ syn region none matchgroup=fortranType start="<<<" end=">>>" contains=ALLBUT,none
+endif
+
+syn cluster fortranCommentGroup contains=fortranTodo
+
+if (b:fortran_fixed_source == 1)
+ if !exists("fortran_have_tabs")
+ " Fixed format requires a textwidth of 72 for code,
+ " but some vendor extensions allow longer lines
+ if exists("fortran_extended_line_length")
+ syn match fortranSerialNumber excludenl "^.\{133,}$"lc=132
+ elseif exists("fortran_cardimage_line_length")
+ syn match fortranSerialNumber excludenl "^.\{81,}$"lc=80
+ else
+ syn match fortranSerialNumber excludenl "^.\{73,}$"lc=72
+ endif
+ "Flag left margin errors
+ syn match fortranLabelError "^.\{-,4}[^0-9 ]" contains=fortranTab
+ syn match fortranLabelError "^.\{4}\d\S"
+ endif
+ syn match fortranComment excludenl "^[!c*].*$" contains=@fortranCommentGroup,@spell
+ syn match fortranLeftMargin transparent "^ \{5}"
+ syn match fortranContinueMark display "^.\{5}\S"lc=5
+else
+ syn match fortranContinueMark display "&"
+endif
+
+syn match fortranComment excludenl "!.*$" contains=@fortranCommentGroup,@spell
+syn match fortranOpenMP excludenl "^\s*!\$\(OMP\)\=&\=\s.*$"
+
+"cpp is often used with Fortran
+syn match cPreProc "^\s*#\s*\(define\|ifdef\)\>.*"
+syn match cPreProc "^\s*#\s*\(elif\|if\)\>.*"
+syn match cPreProc "^\s*#\s*\(ifndef\|undef\)\>.*"
+syn match cPreCondit "^\s*#\s*\(else\|endif\)\>.*"
+syn region cIncluded contained start=+"[^("]+ skip=+\\\\\|\\"+ end=+"+ contains=fortranLeftMargin,fortranContinueMark,fortranSerialNumber
+"syn region cIncluded contained start=+"[^("]+ skip=+\\\\\|\\"+ end=+"+
+syn match cIncluded contained "<[^>]*>"
+syn match cInclude "^\s*#\s*include\>\s*["<]" contains=cIncluded
+
+"Synchronising limits assume that comment and continuation lines are not mixed
+if exists("fortran_fold") || exists("fortran_more_precise")
+ syn sync fromstart
+elseif (b:fortran_fixed_source == 0)
+ syn sync linecont "&" minlines=30
+else
+ syn sync minlines=30
+endif
+
+if exists("fortran_fold")
+
+ if (b:fortran_fixed_source == 1)
+ syn region fortranProgram transparent fold keepend start="^\s*program\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\(program\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranModule
+ syn region fortranModule transparent fold keepend start="^\s*submodule\s\+(\a\w*\s*\(:\a\w*\s*\)*)\s*\z\(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\(submodule\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram,fortranModule
+ syn region fortranModule transparent fold keepend start="^\s*module\s\+\(procedure\)\@!\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\(module\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram
+ syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|impure \|module \|recursive \)\=\s*\(\(\(real \|integer \|logical \|complex \|double \s*precision \)\s*\((\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\|type\s\+(\s*\w\+\s*) \|character \((\(\s*len\s*=\)\=\s*\d\+\s*)\|(\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\=\s*function\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
+ syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|impure \|module \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
+ syn region fortranBlockData transparent fold keepend start="\<block\s*data\(\s\+\z(\a\w*\)\)\=" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|block\s*data\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
+ syn region fortranAssociate transparent fold keepend start="^\s*\<associate\s\+" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*associate" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction
+ syn region fortranInterface transparent fold keepend extend start="^\s*\(abstract \)\=\s*interface\>" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
+ syn region fortranTypeDef transparent fold keepend extend start="^\s*type\s*\(,\s*\(public\|private\|abstract\)\)\=\s*::" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*type\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock,fortranInterface
+ else
+ syn region fortranProgram transparent fold keepend start="^\s*program\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(program\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranModule
+ syn region fortranModule transparent fold keepend start="^\s*submodule\s\+(\a\w*\s*\(:\a\w*\s*\)*)\s*\z\(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(submodule\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram,fortranModule
+ syn region fortranModule transparent fold keepend start="^\s*module\s\+\(procedure\)\@!\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(module\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram
+ syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|impure \|module \|recursive \)\=\s*\(\(\(real \|integer \|logical \|complex \|double \s*precision \)\s*\((\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\|type\s\+(\s*\w\+\s*) \|character \((\(\s*len\s*=\)\=\s*\d\+\s*)\|(\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\=\s*function\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
+ syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|impure \|module \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
+ syn region fortranBlockData transparent fold keepend start="\<block\s*data\(\s\+\z(\a\w*\)\)\=" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|block\s*data\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
+ syn region fortranAssociate transparent fold keepend start="^\s*\<associate\s\+" skip="^\s*[!#].*$" excludenl end="\<end\s*associate" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction
+ syn region fortranInterface transparent fold keepend extend start="^\s*\(abstract \)\=\s*interface\>" skip="^\s*[!#].*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
+ syn region fortranTypeDef transparent fold keepend extend start="^\s*type\s*\(,\s*\(public\|private\|abstract\)\)\=\s*::" skip="^\s*[!#].*$" excludenl end="\<end\s*type\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock,fortranInterface
+ endif
+
+ if exists("fortran_fold_conditionals")
+ if (b:fortran_fixed_source == 1)
+ syn region fortran77Loop transparent fold keepend start="\<do\s\+\z(\d\+\)" end="^\s*\z1\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
+ syn region fortran90Loop transparent fold keepend extend start="\(\<end\s\+\)\@<!\<do\(\s\+\a\|\s*$\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*do\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
+ syn region fortranIfBlock transparent fold keepend extend start="\(\<e\(nd\|lse\)\s\+\)\@<!\<if\s*(.\+)\s*then\>" skip="^\([!c*]\|\s*#\).*$" end="\<end\s*if\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
+ syn region fortranCase transparent fold keepend extend start="\<select\s*\(case\|type\)\>" skip="^\([!c*]\|\s*#\).*$" end="\<end\s*select\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
+ else
+ syn region fortran77Loop transparent fold keepend start="\<do\s\+\z(\d\+\)" end="^\s*\z1\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
+ syn region fortran90Loop transparent fold keepend extend start="\(\<end\s\+\)\@<!\<do\(\s\+\a\|\s*$\)" skip="^\s*[!#].*$" excludenl end="\<end\s*do\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
+ syn region fortranIfBlock transparent fold keepend extend start="\(\<e\(nd\|lse\)\s\+\)\@<!\<if\s*(\(.\|&\s*\n\)\+)\(\s\|&\s*\n\)*then\>" skip="^\s*[!#].*$" end="\<end\s*if\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
+ syn region fortranCase transparent fold keepend extend start="\<select\s*\(case\|type\)\>" skip="^\s*[!#].*$" end="\<end\s*select\>" contains=ALLBUT,fortranUnitHeader,fortranStructure,fortranStorageClass,fortranType,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortranBlockData
+ endif
+ endif
+
+ if exists("fortran_fold_multilinecomments")
+ if (b:fortran_fixed_source == 1)
+ syn match fortranMultiLineComments transparent fold "\(^[!c*].*\(\n\|\%$\)\)\{4,}" contains=ALLBUT,fortranMultiCommentLines
+ else
+ syn match fortranMultiLineComments transparent fold "\(^\s*!.*\(\n\|\%$\)\)\{4,}" contains=ALLBUT,fortranMultiCommentLines
+ endif
+ endif
+endif
+
+" Define the default highlighting.
+" The default highlighting differs for each dialect.
+" Transparent groups:
+" fortranParen, fortranLeftMargin
+" fortranProgram, fortranModule, fortranSubroutine, fortranFunction,
+" fortranBlockData
+" fortran77Loop, fortran90Loop, fortranIfBlock, fortranCase
+" fortranMultiCommentLines
+hi def link fortranKeyword Keyword
+hi def link fortranConstructName Identifier
+hi def link fortranConditional Conditional
+hi def link fortranRepeat Repeat
+hi def link fortranTodo Todo
+hi def link fortranContinueMark Special
+hi def link fortranString String
+hi def link fortranNumber Number
+hi def link fortranBinary Number
+hi def link fortranOctal Number
+hi def link fortranHex Number
+hi def link fortranOperator Operator
+hi def link fortranBoolean Boolean
+hi def link fortranLabelError Error
+hi def link fortranObsolete Todo
+hi def link fortranType Type
+hi def link fortranStructure Type
+hi def link fortranStorageClass StorageClass
+hi def link fortranCall Function
+hi def link fortranUnitHeader fortranPreCondit
+hi def link fortranReadWrite Keyword
+hi def link fortranIO Keyword
+hi def link fortranIntrinsic Function
+hi def link fortranConstant Constant
+
+" To stop deleted & obsolescent features being highlighted as Todo items,
+" comment out the next 5 lines and uncomment the 5 lines after that
+hi def link fortranUnitHeaderOb fortranObsolete
+hi def link fortranKeywordOb fortranObsolete
+hi def link fortranConditionalOb fortranObsolete
+hi def link fortranTypeOb fortranObsolete
+hi def link fortranKeywordDel fortranObsolete
+"hi def link fortranUnitHeaderOb fortranUnitHeader
+"hi def link fortranKeywordOb fortranKeyword
+"hi def link fortranConditionalOb fortranConditional
+"hi def link fortranTypeOb fortranType
+"hi def link fortranKeywordDel fortranKeyword
+
+if b:fortran_dialect == "F"
+ hi! def link fortranIntrinsicR fortranObsolete
+ hi! def link fortranUnitHeaderR fortranObsolete
+ hi! def link fortranTypeR fortranObsolete
+ hi! def link fortranStorageClassR fortranObsolete
+ hi! def link fortranOperatorR fortranObsolete
+ hi! def link fortranInclude fortranObsolete
+ hi! def link fortranLabelNumber fortranObsolete
+ hi! def link fortranTarget fortranObsolete
+ hi! def link fortranFloatIll fortranObsolete
+ hi! def link fortranIOR fortranObsolete
+ hi! def link fortranKeywordR fortranObsolete
+ hi! def link fortranStringR fortranObsolete
+ hi! def link fortranConditionalR fortranObsolete
+else
+ hi! def link fortranIntrinsicR fortranIntrinsic
+ hi! def link fortranUnitHeaderR fortranPreCondit
+ hi! def link fortranTypeR fortranType
+ hi! def link fortranStorageClassR fortranStorageClass
+ hi! def link fortranOperatorR fortranOperator
+ hi! def link fortranInclude Include
+ hi! def link fortranLabelNumber Special
+ hi! def link fortranTarget Special
+ hi! def link fortranFloatIll fortranFloat
+ hi! def link fortranIOR fortranIO
+ hi! def link fortranKeywordR fortranKeyword
+ hi! def link fortranStringR fortranString
+ hi! def link fortranConditionalR fortranConditional
+endif
+
+" CUDA
+hi def link fortranIntrinsicCUDA fortranIntrinsic
+hi def link fortranTypeCUDA fortranType
+hi def link fortranStringCUDA fortranString
+
+hi def link fortranFormatSpec Identifier
+hi def link fortranFloat Float
+hi def link fortranPreCondit PreCondit
+hi def link cIncluded fortranString
+hi def link cInclude Include
+hi def link cPreProc PreProc
+hi def link cPreCondit PreCondit
+hi def link fortranOpenMP PreProc
+hi def link fortranParenError Error
+hi def link fortranComment Comment
+hi def link fortranSerialNumber Todo
+hi def link fortranTab Error
+
+" Uncomment the next line if you use extra intrinsics provided by vendors
+"hi def link fortranExtraIntrinsic Function
+
+let b:current_syntax = "fortran"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8 tw=132
diff --git a/runtime/syntax/foxpro.vim b/runtime/syntax/foxpro.vim
new file mode 100644
index 0000000..795859e
--- /dev/null
+++ b/runtime/syntax/foxpro.vim
@@ -0,0 +1,716 @@
+" Vim syntax file
+" Filename: foxpro.vim
+" Version: 1.0
+" Language: FoxPro for DOS/UNIX v2.6
+" Maintainer: Bill W. Smith, Jr. <donal@brewich.com>
+" Last Change: 15 May 2006
+
+" This file replaces the FoxPro for DOS v2.x syntax file
+" maintained by Powing Tse <powing@mcmug.org>
+"
+" Change Log: added support for FoxPro Codebook highlighting
+" corrected highlighting of comments that do NOT start in col 1
+" corrected highlighting of comments at end of line (&&)
+"
+"
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" FoxPro Codebook Naming Conventions
+syn match foxproCBConst "\<[c][A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBVar "\<[lgrt][acndlmf][A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBField "\<[a-z0-9]*\.[A-Za-z0-9_]*\>"
+" PROPER CodeBook field names start with the data type and do NOT have _
+syn match foxproCBField "\<[A-Za-z0-9]*\.[acndlm][A-Z][A-Za-z0-9]*\>"
+syn match foxproCBWin "\<w[rbcm][A-Z][A-Za-z0-9_]*\>"
+" CodeBook 2.0 defined objects as follows
+" This uses the hotkey from the screen builder as the second character
+syn match foxproCBObject "\<[lgr][bfthnkoli][A-Z][A-Za-z0-9_]*\>"
+" A later version added the following conventions for objects
+syn match foxproCBObject "\<box[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<fld[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<txt[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<phb[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<rdo[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<chk[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<pop[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<lst[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<inv[A-Z][A-Za-z0-9_]*\>"
+syn match foxproCBObject "\<mnu[A-Z][A-Za-z0-9_]*\>"
+
+syntax case ignore
+
+" Highlight special characters
+syn match foxproSpecial "^\s*!"
+syn match foxproSpecial "&"
+syn match foxproSpecial ";\s*$"
+syn match foxproSpecial "^\s*="
+syn match foxproSpecial "^\s*\\"
+syn match foxproSpecial "^\s*\\\\"
+syn match foxproSpecial "^\s*?"
+syn match foxproSpecial "^\s*??"
+syn match foxproSpecial "^\s*???"
+syn match foxproSpecial "\<m\>\."
+
+" @ Statements
+syn match foxproAtSymbol contained "^\s*@"
+syn match foxproAtCmd contained "\<say\>\|\<get\>\|\<edit\>\|\<box\>\|\<clea\%[r]\>\|\<fill\>\|\<menu\>\|\<prom\%[pt]\>\|\<scro\%[ll]\>\|\<to\>"
+syn match foxproAtStart transparent "^\s*@.*" contains=ALL
+
+" preprocessor directives
+syn match foxproPreProc "^\s*#\s*\(\<if\>\|\<elif\>\|\<else\>\|\<endi\%[f]\>\)"
+syn match foxproPreProc "^\s*#\s*\(\<defi\%[ne]\>\|\<unde\%[f]\>\)"
+syn match foxproPreProc "^\s*#\s*\<regi\%[on]\>"
+
+" Functions
+syn match foxproFunc "\<abs\>\s*("me=e-1
+syn match foxproFunc "\<acop\%[y]\>\s*("me=e-1
+syn match foxproFunc "\<acos\>\s*("me=e-1
+syn match foxproFunc "\<adel\>\s*("me=e-1
+syn match foxproFunc "\<adir\>\s*("me=e-1
+syn match foxproFunc "\<aele\%[ment]\>\s*("me=e-1
+syn match foxproFunc "\<afie\%[lds]\>\s*("me=e-1
+syn match foxproFunc "\<afon\%[t]\>\s*("me=e-1
+syn match foxproFunc "\<ains\>\s*("me=e-1
+syn match foxproFunc "\<alen\>\s*("me=e-1
+syn match foxproFunc "\<alia\%[s]\>\s*("me=e-1
+syn match foxproFunc "\<allt\%[rim]\>\s*("me=e-1
+syn match foxproFunc "\<ansi\%[tooem]\>\s*("me=e-1
+syn match foxproFunc "\<asc\>\s*("me=e-1
+syn match foxproFunc "\<asca\%[n]\>\s*("me=e-1
+syn match foxproFunc "\<asin\>\s*("me=e-1
+syn match foxproFunc "\<asor\%[t]\>\s*("me=e-1
+syn match foxproFunc "\<asub\%[script]\>\s*("me=e-1
+syn match foxproFunc "\<at\>\s*("me=e-1
+syn match foxproFunc "\<atan\>\s*("me=e-1
+syn match foxproFunc "\<atc\>\s*("me=e-1
+syn match foxproFunc "\<atcl\%[ine]\>\s*("me=e-1
+syn match foxproFunc "\<atli\%[ne]\>\s*("me=e-1
+syn match foxproFunc "\<atn2\>\s*("me=e-1
+syn match foxproFunc "\<bar\>\s*("me=e-1
+syn match foxproFunc "\<barc\%[ount]\>\s*("me=e-1
+syn match foxproFunc "\<barp\%[rompt]\>\s*("me=e-1
+syn match foxproFunc "\<betw\%[een]\>\s*("me=e-1
+syn match foxproFunc "\<bof\>\s*("me=e-1
+syn match foxproFunc "\<caps\%[lock]\>\s*("me=e-1
+syn match foxproFunc "\<cdow\>\s*("me=e-1
+syn match foxproFunc "\<cdx\>\s*("me=e-1
+syn match foxproFunc "\<ceil\%[ing]\>\s*("me=e-1
+syn match foxproFunc "\<chr\>\s*("me=e-1
+syn match foxproFunc "\<chrs\%[aw]\>\s*("me=e-1
+syn match foxproFunc "\<chrt\%[ran]\>\s*("me=e-1
+syn match foxproFunc "\<cmon\%[th]\>\s*("me=e-1
+syn match foxproFunc "\<cntb\%[ar]\>\s*("me=e-1
+syn match foxproFunc "\<cntp\%[ad]\>\s*("me=e-1
+syn match foxproFunc "\<col\>\s*("me=e-1
+syn match foxproFunc "\<cos\>\s*("me=e-1
+syn match foxproFunc "\<cpco\%[nvert]\>\s*("me=e-1
+syn match foxproFunc "\<cpcu\%[rrent]\>\s*("me=e-1
+syn match foxproFunc "\<cpdb\%[f]\>\s*("me=e-1
+syn match foxproFunc "\<ctod\>\s*("me=e-1
+syn match foxproFunc "\<curd\%[ir]\>\s*("me=e-1
+syn match foxproFunc "\<date\>\s*("me=e-1
+syn match foxproFunc "\<day\>\s*("me=e-1
+syn match foxproFunc "\<dbf\>\s*("me=e-1
+syn match foxproFunc "\<ddea\%[borttrans]\>\s*("me=e-1
+syn match foxproFunc "\<ddea\%[dvise]\>\s*("me=e-1
+syn match foxproFunc "\<ddee\%[nabled]\>\s*("me=e-1
+syn match foxproFunc "\<ddee\%[xecute]\>\s*("me=e-1
+syn match foxproFunc "\<ddei\%[nitiate]\>\s*("me=e-1
+syn match foxproFunc "\<ddel\%[asterror]\>\s*("me=e-1
+syn match foxproFunc "\<ddep\%[oke]\>\s*("me=e-1
+syn match foxproFunc "\<dder\%[equest]\>\s*("me=e-1
+syn match foxproFunc "\<ddes\%[etoption]\>\s*("me=e-1
+syn match foxproFunc "\<ddes\%[etservice]\>\s*("me=e-1
+syn match foxproFunc "\<ddes\%[ettopic]\>\s*("me=e-1
+syn match foxproFunc "\<ddet\%[erminate]\>\s*("me=e-1
+syn match foxproFunc "\<dele\%[ted]\>\s*("me=e-1
+syn match foxproFunc "\<desc\%[ending]\>\s*("me=e-1
+syn match foxproFunc "\<diff\%[erence]\>\s*("me=e-1
+syn match foxproFunc "\<disk\%[space]\>\s*("me=e-1
+syn match foxproFunc "\<dmy\>\s*("me=e-1
+syn match foxproFunc "\<dow\>\s*("me=e-1
+syn match foxproFunc "\<dtoc\>\s*("me=e-1
+syn match foxproFunc "\<dtor\>\s*("me=e-1
+syn match foxproFunc "\<dtos\>\s*("me=e-1
+syn match foxproFunc "\<empt\%[y]\>\s*("me=e-1
+syn match foxproFunc "\<eof\>\s*("me=e-1
+syn match foxproFunc "\<erro\%[r]\>\s*("me=e-1
+syn match foxproFunc "\<eval\%[uate]\>\s*("me=e-1
+syn match foxproFunc "\<exp\>\s*("me=e-1
+syn match foxproFunc "\<fchs\%[ize]\>\s*("me=e-1
+syn match foxproFunc "\<fclo\%[se]\>\s*("me=e-1
+syn match foxproFunc "\<fcou\%[nt]\>\s*("me=e-1
+syn match foxproFunc "\<fcre\%[ate]\>\s*("me=e-1
+syn match foxproFunc "\<fdat\%[e]\>\s*("me=e-1
+syn match foxproFunc "\<feof\>\s*("me=e-1
+syn match foxproFunc "\<ferr\%[or]\>\s*("me=e-1
+syn match foxproFunc "\<fflu\%[sh]\>\s*("me=e-1
+syn match foxproFunc "\<fget\%[s]\>\s*("me=e-1
+syn match foxproFunc "\<fiel\%[d]\>\s*("me=e-1
+syn match foxproFunc "\<file\>\s*("me=e-1
+syn match foxproFunc "\<filt\%[er]\>\s*("me=e-1
+syn match foxproFunc "\<fkla\%[bel]\>\s*("me=e-1
+syn match foxproFunc "\<fkma\%[x]\>\s*("me=e-1
+syn match foxproFunc "\<fldl\%[ist]\>\s*("me=e-1
+syn match foxproFunc "\<floc\%[k]\>\s*("me=e-1
+syn match foxproFunc "\<floo\%[r]\>\s*("me=e-1
+syn match foxproFunc "\<font\%[metric]\>\s*("me=e-1
+syn match foxproFunc "\<fope\%[n]\>\s*("me=e-1
+syn match foxproFunc "\<for\>\s*("me=e-1
+syn match foxproFunc "\<foun\%[d]\>\s*("me=e-1
+syn match foxproFunc "\<fput\%[s]\>\s*("me=e-1
+syn match foxproFunc "\<frea\%[d]\>\s*("me=e-1
+syn match foxproFunc "\<fsee\%[k]\>\s*("me=e-1
+syn match foxproFunc "\<fsiz\%[e]\>\s*("me=e-1
+syn match foxproFunc "\<ftim\%[e]\>\s*("me=e-1
+syn match foxproFunc "\<full\%[path]\>\s*("me=e-1
+syn match foxproFunc "\<fv\>\s*("me=e-1
+syn match foxproFunc "\<fwri\%[te]\>\s*("me=e-1
+syn match foxproFunc "\<getb\%[ar]\>\s*("me=e-1
+syn match foxproFunc "\<getd\%[ir]\>\s*("me=e-1
+syn match foxproFunc "\<gete\%[nv]\>\s*("me=e-1
+syn match foxproFunc "\<getf\%[ile]\>\s*("me=e-1
+syn match foxproFunc "\<getf\%[ont]\>\s*("me=e-1
+syn match foxproFunc "\<getp\%[ad]\>\s*("me=e-1
+syn match foxproFunc "\<gomo\%[nth]\>\s*("me=e-1
+syn match foxproFunc "\<head\%[er]\>\s*("me=e-1
+syn match foxproFunc "\<home\>\s*("me=e-1
+syn match foxproFunc "\<idxc\%[ollate]\>\s*("me=e-1
+syn match foxproFunc "\<iif\>\s*("me=e-1
+syn match foxproFunc "\<inke\%[y]\>\s*("me=e-1
+syn match foxproFunc "\<inli\%[st]\>\s*("me=e-1
+syn match foxproFunc "\<insm\%[ode]\>\s*("me=e-1
+syn match foxproFunc "\<int\>\s*("me=e-1
+syn match foxproFunc "\<isal\%[pha]\>\s*("me=e-1
+syn match foxproFunc "\<isbl\%[ank]\>\s*("me=e-1
+syn match foxproFunc "\<isco\%[lor]\>\s*("me=e-1
+syn match foxproFunc "\<isdi\%[git]\>\s*("me=e-1
+syn match foxproFunc "\<islo\%[wer]\>\s*("me=e-1
+syn match foxproFunc "\<isre\%[adonly]\>\s*("me=e-1
+syn match foxproFunc "\<isup\%[per]\>\s*("me=e-1
+syn match foxproFunc "\<key\>\s*("me=e-1
+syn match foxproFunc "\<keym\%[atch]\>\s*("me=e-1
+syn match foxproFunc "\<last\%[key]\>\s*("me=e-1
+syn match foxproFunc "\<left\>\s*("me=e-1
+syn match foxproFunc "\<len\>\s*("me=e-1
+syn match foxproFunc "\<like\>\s*("me=e-1
+syn match foxproFunc "\<line\%[no]\>\s*("me=e-1
+syn match foxproFunc "\<locf\%[ile]\>\s*("me=e-1
+syn match foxproFunc "\<lock\>\s*("me=e-1
+syn match foxproFunc "\<log\>\s*("me=e-1
+syn match foxproFunc "\<log1\%[0]\>\s*("me=e-1
+syn match foxproFunc "\<look\%[up]\>\s*("me=e-1
+syn match foxproFunc "\<lowe\%[r]\>\s*("me=e-1
+syn match foxproFunc "\<ltri\%[m]\>\s*("me=e-1
+syn match foxproFunc "\<lupd\%[ate]\>\s*("me=e-1
+syn match foxproFunc "\<max\>\s*("me=e-1
+syn match foxproFunc "\<mcol\>\s*("me=e-1
+syn match foxproFunc "\<mdow\%[n]\>\s*("me=e-1
+syn match foxproFunc "\<mdx\>\s*("me=e-1
+syn match foxproFunc "\<mdy\>\s*("me=e-1
+syn match foxproFunc "\<meml\%[ines]\>\s*("me=e-1
+syn match foxproFunc "\<memo\%[ry]\>\s*("me=e-1
+syn match foxproFunc "\<menu\>\s*("me=e-1
+syn match foxproFunc "\<mess\%[age]\>\s*("me=e-1
+syn match foxproFunc "\<min\>\s*("me=e-1
+syn match foxproFunc "\<mlin\%[e]\>\s*("me=e-1
+syn match foxproFunc "\<mod\>\s*("me=e-1
+syn match foxproFunc "\<mont\%[h]\>\s*("me=e-1
+syn match foxproFunc "\<mrkb\%[ar]\>\s*("me=e-1
+syn match foxproFunc "\<mrkp\%[ad]\>\s*("me=e-1
+syn match foxproFunc "\<mrow\>\s*("me=e-1
+syn match foxproFunc "\<mwin\%[dow]\>\s*("me=e-1
+syn match foxproFunc "\<ndx\>\s*("me=e-1
+syn match foxproFunc "\<norm\%[alize]\>\s*("me=e-1
+syn match foxproFunc "\<numl\%[ock]\>\s*("me=e-1
+syn match foxproFunc "\<objn\%[um]\>\s*("me=e-1
+syn match foxproFunc "\<objv\%[ar]\>\s*("me=e-1
+syn match foxproFunc "\<occu\%[rs]\>\s*("me=e-1
+syn match foxproFunc "\<oemt\%[oansi]\>\s*("me=e-1
+syn match foxproFunc "\<on\>\s*("me=e-1
+syn match foxproFunc "\<orde\%[r]\>\s*("me=e-1
+syn match foxproFunc "\<os\>\s*("me=e-1
+syn match foxproFunc "\<pad\>\s*("me=e-1
+syn match foxproFunc "\<padc\>\s*("me=e-1
+syn match foxproFunc "\<padl\>\s*("me=e-1
+syn match foxproFunc "\<padr\>\s*("me=e-1
+syn match foxproFunc "\<para\%[meters]\>\s*("me=e-1
+syn match foxproFunc "\<paym\%[ent]\>\s*("me=e-1
+syn match foxproFunc "\<pcol\>\s*("me=e-1
+syn match foxproFunc "\<pi\>\s*("me=e-1
+syn match foxproFunc "\<popu\%[p]\>\s*("me=e-1
+syn match foxproFunc "\<prin\%[tstatus]\>\s*("me=e-1
+syn match foxproFunc "\<prmb\%[ar]\>\s*("me=e-1
+syn match foxproFunc "\<prmp\%[ad]\>\s*("me=e-1
+syn match foxproFunc "\<prog\%[ram]\>\s*("me=e-1
+syn match foxproFunc "\<prom\%[pt]\>\s*("me=e-1
+syn match foxproFunc "\<prop\%[er]\>\s*("me=e-1
+syn match foxproFunc "\<prow\>\s*("me=e-1
+syn match foxproFunc "\<prti\%[nfo]\>\s*("me=e-1
+syn match foxproFunc "\<putf\%[ile]\>\s*("me=e-1
+syn match foxproFunc "\<pv\>\s*("me=e-1
+syn match foxproFunc "\<rand\>\s*("me=e-1
+syn match foxproFunc "\<rat\>\s*("me=e-1
+syn match foxproFunc "\<ratl\%[ine]\>\s*("me=e-1
+syn match foxproFunc "\<rdle\%[vel]\>\s*("me=e-1
+syn match foxproFunc "\<read\%[key]\>\s*("me=e-1
+syn match foxproFunc "\<recc\%[ount]\>\s*("me=e-1
+syn match foxproFunc "\<recn\%[o]\>\s*("me=e-1
+syn match foxproFunc "\<recs\%[ize]\>\s*("me=e-1
+syn match foxproFunc "\<rela\%[tion]\>\s*("me=e-1
+syn match foxproFunc "\<repl\%[icate]\>\s*("me=e-1
+syn match foxproFunc "\<rgbs\%[cheme]\>\s*("me=e-1
+syn match foxproFunc "\<righ\%[t]\>\s*("me=e-1
+syn match foxproFunc "\<rloc\%[k]\>\s*("me=e-1
+syn match foxproFunc "\<roun\%[d]\>\s*("me=e-1
+syn match foxproFunc "\<row\>\s*("me=e-1
+syn match foxproFunc "\<rtod\>\s*("me=e-1
+syn match foxproFunc "\<rtri\%[m]\>\s*("me=e-1
+syn match foxproFunc "\<sche\%[me]\>\s*("me=e-1
+syn match foxproFunc "\<scol\%[s]\>\s*("me=e-1
+syn match foxproFunc "\<seco\%[nds]\>\s*("me=e-1
+syn match foxproFunc "\<seek\>\s*("me=e-1
+syn match foxproFunc "\<sele\%[ct]\>\s*("me=e-1
+syn match foxproFunc "\<set\>\s*("me=e-1
+syn match foxproFunc "\<sign\>\s*("me=e-1
+syn match foxproFunc "\<sin\>\s*("me=e-1
+syn match foxproFunc "\<skpb\%[ar]\>\s*("me=e-1
+syn match foxproFunc "\<skpp\%[ad]\>\s*("me=e-1
+syn match foxproFunc "\<soun\%[dex]\>\s*("me=e-1
+syn match foxproFunc "\<spac\%[e]\>\s*("me=e-1
+syn match foxproFunc "\<sqrt\>\s*("me=e-1
+syn match foxproFunc "\<srow\%[s]\>\s*("me=e-1
+syn match foxproFunc "\<str\>\s*("me=e-1
+syn match foxproFunc "\<strt\%[ran]\>\s*("me=e-1
+syn match foxproFunc "\<stuf\%[f]\>\s*("me=e-1
+syn match foxproFunc "\<subs\%[tr]\>\s*("me=e-1
+syn match foxproFunc "\<sysm\%[etric]\>\s*("me=e-1
+syn match foxproFunc "\<sys\>\s*("me=e-1
+syn match foxproFunc "\<tag\>\s*("me=e-1
+syn match foxproFunc "\<tagc\%[ount]\>\s*("me=e-1
+syn match foxproFunc "\<tagn\%[o]\>\s*("me=e-1
+syn match foxproFunc "\<tan\>\s*("me=e-1
+syn match foxproFunc "\<targ\%[et]\>\s*("me=e-1
+syn match foxproFunc "\<time\>\s*("me=e-1
+syn match foxproFunc "\<tran\%[sform]\>\s*("me=e-1
+syn match foxproFunc "\<trim\>\s*("me=e-1
+syn match foxproFunc "\<txtw\%[idth]\>\s*("me=e-1
+syn match foxproFunc "\<type\>\s*("me=e-1
+syn match foxproFunc "\<uniq\%[ue]\>\s*("me=e-1
+syn match foxproFunc "\<upda\%[ted]\>\s*("me=e-1
+syn match foxproFunc "\<uppe\%[r]\>\s*("me=e-1
+syn match foxproFunc "\<used\>\s*("me=e-1
+syn match foxproFunc "\<val\>\s*("me=e-1
+syn match foxproFunc "\<varr\%[ead]\>\s*("me=e-1
+syn match foxproFunc "\<vers\%[ion]\>\s*("me=e-1
+syn match foxproFunc "\<wbor\%[der]\>\s*("me=e-1
+syn match foxproFunc "\<wchi\%[ld]\>\s*("me=e-1
+syn match foxproFunc "\<wcol\%[s]\>\s*("me=e-1
+syn match foxproFunc "\<wexi\%[st]\>\s*("me=e-1
+syn match foxproFunc "\<wfon\%[t]\>\s*("me=e-1
+syn match foxproFunc "\<wlas\%[t]\>\s*("me=e-1
+syn match foxproFunc "\<wlco\%[l]\>\s*("me=e-1
+syn match foxproFunc "\<wlro\%[w]\>\s*("me=e-1
+syn match foxproFunc "\<wmax\%[imum]\>\s*("me=e-1
+syn match foxproFunc "\<wmin\%[imum]\>\s*("me=e-1
+syn match foxproFunc "\<wont\%[op]\>\s*("me=e-1
+syn match foxproFunc "\<wout\%[put]\>\s*("me=e-1
+syn match foxproFunc "\<wpar\%[ent]\>\s*("me=e-1
+syn match foxproFunc "\<wrea\%[d]\>\s*("me=e-1
+syn match foxproFunc "\<wrow\%[s]\>\s*("me=e-1
+syn match foxproFunc "\<wtit\%[le]\>\s*("me=e-1
+syn match foxproFunc "\<wvis\%[ible]\>\s*("me=e-1
+syn match foxproFunc "\<year\>\s*("me=e-1
+
+" Commands
+syn match foxproCmd "^\s*\<acce\%[pt]\>"
+syn match foxproCmd "^\s*\<acti\%[vate]\>\s*\<menu\>"
+syn match foxproCmd "^\s*\<acti\%[vate]\>\s*\<popu\%[p]\>"
+syn match foxproCmd "^\s*\<acti\%[vate]\>\s*\<scre\%[en]\>"
+syn match foxproCmd "^\s*\<acti\%[vate]\>\s*\<wind\%[ow]\>"
+syn match foxproCmd "^\s*\<appe\%[nd]\>"
+syn match foxproCmd "^\s*\<appe\%[nd]\>\s*\<from\>"
+syn match foxproCmd "^\s*\<appe\%[nd]\>\s*\<from\>\s*\<arra\%[y]\>"
+syn match foxproCmd "^\s*\<appe\%[nd]\>\s*\<gene\%[ral]\>"
+syn match foxproCmd "^\s*\<appe\%[nd]\>\s*\<memo\>"
+syn match foxproCmd "^\s*\<assi\%[st]\>"
+syn match foxproCmd "^\s*\<aver\%[age]\>"
+syn match foxproCmd "^\s*\<blan\%[k]\>"
+syn match foxproCmd "^\s*\<brow\%[se]\>"
+syn match foxproCmd "^\s*\<buil\%[d]\>\s*\<app\>"
+syn match foxproCmd "^\s*\<buil\%[d]\>\s*\<exe\>"
+syn match foxproCmd "^\s*\<buil\%[d]\>\s*\<proj\%[ect]\>"
+syn match foxproCmd "^\s*\<calc\%[ulate]\>"
+syn match foxproCmd "^\s*\<call\>"
+syn match foxproCmd "^\s*\<canc\%[el]\>"
+syn match foxproCmd "^\s*\<chan\%[ge]\>"
+syn match foxproCmd "^\s*\<clea\%[r]\>"
+syn match foxproCmd "^\s*\<clos\%[e]\>"
+syn match foxproCmd "^\s*\<clos\%[e]\>\s*\<memo\>"
+syn match foxproCmd "^\s*\<comp\%[ile]\>"
+syn match foxproCmd "^\s*\<cont\%[inue]\>"
+syn match foxproCmd "^\s*\<copy\>\s*\<file\>"
+syn match foxproCmd "^\s*\<copy\>\s*\<inde\%[xes]\>"
+syn match foxproCmd "^\s*\<copy\>\s*\<memo\>"
+syn match foxproCmd "^\s*\<copy\>\s*\<stru\%[cture]\>"
+syn match foxproCmd "^\s*\<copy\>\s*\<stru\%[cture]\>\s*\<exte\%[nded]\>"
+syn match foxproCmd "^\s*\<copy\>\s*\<tag\>"
+syn match foxproCmd "^\s*\<copy\>\s*\<to\>"
+syn match foxproCmd "^\s*\<copy\>\s*\<to\>\s*\<arra\%[y]\>"
+syn match foxproCmd "^\s*\<coun\%[t]\>"
+syn match foxproCmd "^\s*\<crea\%[te]\>"
+syn match foxproCmd "^\s*\<crea\%[te]\>\s*\<colo\%[r]\>\s*\<set\>"
+syn match foxproCmd "^\s*\<crea\%[te]\>\s*\<curs\%[or]\>"
+syn match foxproCmd "^\s*\<crea\%[te]\>\s*\<from\>"
+syn match foxproCmd "^\s*\<crea\%[te]\>\s*\<labe\%[l]\>"
+syn match foxproCmd "^\s*\<crea\%[te]\>\s*\<menu\>"
+syn match foxproCmd "^\s*\<crea\%[te]\>\s*\<proj\%[ect]\>"
+syn match foxproCmd "^\s*\<crea\%[te]\>\s*\<quer\%[y]\>"
+syn match foxproCmd "^\s*\<crea\%[te]\>\s*\<repo\%[rt]\>"
+syn match foxproCmd "^\s*\<crea\%[te]\>\s*\<scre\%[en]\>"
+syn match foxproCmd "^\s*\<crea\%[te]\>\s*\<tabl\%[e]\>"
+syn match foxproCmd "^\s*\<crea\%[te]\>\s*\<view\>"
+syn match foxproCmd "^\s*\<dde\>"
+syn match foxproCmd "^\s*\<deac\%[tivate]\>\s*\<menu\>"
+syn match foxproCmd "^\s*\<deac\%[tivate]\>\s*\<popu\%[p]\>"
+syn match foxproCmd "^\s*\<deac\%[tivate]\>\s*\<wind\%[ow]\>"
+syn match foxproCmd "^\s*\<decl\%[are]\>"
+syn match foxproCmd "^\s*\<defi\%[ne]\>\s*\<bar\>"
+syn match foxproCmd "^\s*\<defi\%[ne]\>\s*\<box\>"
+syn match foxproCmd "^\s*\<defi\%[ne]\>\s*\<menu\>"
+syn match foxproCmd "^\s*\<defi\%[ne]\>\s*\<pad\>"
+syn match foxproCmd "^\s*\<defi\%[ne]\>\s*\<popu\%[p]\>"
+syn match foxproCmd "^\s*\<defi\%[ne]\>\s*\<wind\%[ow]\>"
+syn match foxproCmd "^\s*\<dele\%[te]\>"
+syn match foxproCmd "^\s*\<dele\%[te]\>\s*\<file\>"
+syn match foxproCmd "^\s*\<dele\%[te]\>\s*\<tag\>"
+syn match foxproCmd "^\s*\<dime\%[nsion]\>"
+syn match foxproCmd "^\s*\<dire\%[ctory]\>"
+syn match foxproCmd "^\s*\<disp\%[lay]\>"
+syn match foxproCmd "^\s*\<disp\%[lay]\>\s*\<file\%[s]\>"
+syn match foxproCmd "^\s*\<disp\%[lay]\>\s*\<memo\%[ry]\>"
+syn match foxproCmd "^\s*\<disp\%[lay]\>\s*\<stat\%[us]\>"
+syn match foxproCmd "^\s*\<disp\%[lay]\>\s*\<stru\%[cture]\>"
+syn match foxproCmd "^\s*\<do\>"
+syn match foxproCmd "^\s*\<edit\>"
+syn match foxproCmd "^\s*\<ejec\%[t]\>"
+syn match foxproCmd "^\s*\<ejec\%[t]\>\s*\<page\>"
+syn match foxproCmd "^\s*\<eras\%[e]\>"
+syn match foxproCmd "^\s*\<exit\>"
+syn match foxproCmd "^\s*\<expo\%[rt]\>"
+syn match foxproCmd "^\s*\<exte\%[rnal]\>"
+syn match foxproCmd "^\s*\<file\%[r]\>"
+syn match foxproCmd "^\s*\<find\>"
+syn match foxproCmd "^\s*\<flus\%[h]\>"
+syn match foxproCmd "^\s*\<func\%[tion]\>"
+syn match foxproCmd "^\s*\<gath\%[er]\>"
+syn match foxproCmd "^\s*\<gete\%[xpr]\>"
+syn match foxproCmd "^\s*\<go\>"
+syn match foxproCmd "^\s*\<goto\>"
+syn match foxproCmd "^\s*\<help\>"
+syn match foxproCmd "^\s*\<hide\>\s*\<menu\>"
+syn match foxproCmd "^\s*\<hide\>\s*\<popu\%[p]\>"
+syn match foxproCmd "^\s*\<hide\>\s*\<wind\%[ow]\>"
+syn match foxproCmd "^\s*\<impo\%[rt]\>"
+syn match foxproCmd "^\s*\<inde\%[x]\>"
+syn match foxproCmd "^\s*\<inpu\%[t]\>"
+syn match foxproCmd "^\s*\<inse\%[rt]\>"
+syn match foxproCmd "^\s*\<join\>"
+syn match foxproCmd "^\s*\<keyb\%[oard]\>"
+syn match foxproCmd "^\s*\<labe\%[l]\>"
+syn match foxproCmd "^\s*\<list\>"
+syn match foxproCmd "^\s*\<load\>"
+syn match foxproCmd "^\s*\<loca\%[te]\>"
+syn match foxproCmd "^\s*\<loop\>"
+syn match foxproCmd "^\s*\<menu\>"
+syn match foxproCmd "^\s*\<menu\>\s*\<to\>"
+syn match foxproCmd "^\s*\<modi\%[fy]\>\s*\<comm\%[and]\>"
+syn match foxproCmd "^\s*\<modi\%[fy]\>\s*\<file\>"
+syn match foxproCmd "^\s*\<modi\%[fy]\>\s*\<gene\%[ral]\>"
+syn match foxproCmd "^\s*\<modi\%[fy]\>\s*\<labe\%[l]\>"
+syn match foxproCmd "^\s*\<modi\%[fy]\>\s*\<memo\>"
+syn match foxproCmd "^\s*\<modi\%[fy]\>\s*\<menu\>"
+syn match foxproCmd "^\s*\<modi\%[fy]\>\s*\<proj\%[ect]\>"
+syn match foxproCmd "^\s*\<modi\%[fy]\>\s*\<quer\%[y]\>"
+syn match foxproCmd "^\s*\<modi\%[fy]\>\s*\<repo\%[rt]\>"
+syn match foxproCmd "^\s*\<modi\%[fy]\>\s*\<scre\%[en]\>"
+syn match foxproCmd "^\s*\<modi\%[fy]\>\s*\<stru\%[cture]\>"
+syn match foxproCmd "^\s*\<modi\%[fy]\>\s*\<wind\%[ow]\>"
+syn match foxproCmd "^\s*\<move\>\s*\<popu\%[p]\>"
+syn match foxproCmd "^\s*\<move\>\s*\<wind\%[ow]\>"
+syn match foxproCmd "^\s*\<note\>"
+syn match foxproCmd "^\s*\<on\>\s*\<apla\%[bout]\>"
+syn match foxproCmd "^\s*\<on\>\s*\<bar\>"
+syn match foxproCmd "^\s*\<on\>\s*\<erro\%[r]\>"
+syn match foxproCmd "^\s*\<on\>\s*\<esca\%[pe]\>"
+syn match foxproCmd "^\s*\<on\>\s*\<exit\>\s*\<bar\>"
+syn match foxproCmd "^\s*\<on\>\s*\<exit\>\s*\<menu\>"
+syn match foxproCmd "^\s*\<on\>\s*\<exit\>\s*\<pad\>"
+syn match foxproCmd "^\s*\<on\>\s*\<exit\>\s*\<popu\%[p]\>"
+syn match foxproCmd "^\s*\<on\>\s*\<key\>"
+syn match foxproCmd "^\s*\<on\>\s*\<key\>\s*\<=\>"
+syn match foxproCmd "^\s*\<on\>\s*\<key\>\s*\<labe\%[l]\>"
+syn match foxproCmd "^\s*\<on\>\s*\<mach\%[elp]\>"
+syn match foxproCmd "^\s*\<on\>\s*\<pad\>"
+syn match foxproCmd "^\s*\<on\>\s*\<page\>"
+syn match foxproCmd "^\s*\<on\>\s*\<read\%[error]\>"
+syn match foxproCmd "^\s*\<on\>\s*\<sele\%[ction]\>\s*\<bar\>"
+syn match foxproCmd "^\s*\<on\>\s*\<sele\%[ction]\>\s*\<menu\>"
+syn match foxproCmd "^\s*\<on\>\s*\<sele\%[ction]\>\s*\<pad\>"
+syn match foxproCmd "^\s*\<on\>\s*\<sele\%[ction]\>\s*\<popu\%[p]\>"
+syn match foxproCmd "^\s*\<on\>\s*\<shut\%[down]\>"
+syn match foxproCmd "^\s*\<pack\>"
+syn match foxproCmd "^\s*\<para\%[meters]\>"
+syn match foxproCmd "^\s*\<play\>\s*\<macr\%[o]\>"
+syn match foxproCmd "^\s*\<pop\>\s*\<key\>"
+syn match foxproCmd "^\s*\<pop\>\s*\<menu\>"
+syn match foxproCmd "^\s*\<pop\>\s*\<popu\%[p]\>"
+syn match foxproCmd "^\s*\<priv\%[ate]\>"
+syn match foxproCmd "^\s*\<proc\%[edure]\>"
+syn match foxproCmd "^\s*\<publ\%[ic]\>"
+syn match foxproCmd "^\s*\<push\>\s*\<key\>"
+syn match foxproCmd "^\s*\<push\>\s*\<menu\>"
+syn match foxproCmd "^\s*\<push\>\s*\<popu\%[p]\>"
+syn match foxproCmd "^\s*\<quit\>"
+syn match foxproCmd "^\s*\<read\>"
+syn match foxproCmd "^\s*\<read\>\s*\<menu\>"
+syn match foxproCmd "^\s*\<reca\%[ll]\>"
+syn match foxproCmd "^\s*\<rein\%[dex]\>"
+syn match foxproCmd "^\s*\<rele\%[ase]\>"
+syn match foxproCmd "^\s*\<rele\%[ase]\>\s*\<modu\%[le]\>"
+syn match foxproCmd "^\s*\<rena\%[me]\>"
+syn match foxproCmd "^\s*\<repl\%[ace]\>"
+syn match foxproCmd "^\s*\<repl\%[ace]\>\s*\<from\>\s*\<arra\%[y]\>"
+syn match foxproCmd "^\s*\<repo\%[rt]\>"
+syn match foxproCmd "^\s*\<rest\%[ore]\>\s*\<from\>"
+syn match foxproCmd "^\s*\<rest\%[ore]\>\s*\<macr\%[os]\>"
+syn match foxproCmd "^\s*\<rest\%[ore]\>\s*\<scre\%[en]\>"
+syn match foxproCmd "^\s*\<rest\%[ore]\>\s*\<wind\%[ow]\>"
+syn match foxproCmd "^\s*\<resu\%[me]\>"
+syn match foxproCmd "^\s*\<retr\%[y]\>"
+syn match foxproCmd "^\s*\<retu\%[rn]\>"
+syn match foxproCmd "^\s*\<run\>"
+syn match foxproCmd "^\s*\<run\>\s*\/n"
+syn match foxproCmd "^\s*\<runs\%[cript]\>"
+syn match foxproCmd "^\s*\<save\>\s*\<macr\%[os]\>"
+syn match foxproCmd "^\s*\<save\>\s*\<scre\%[en]\>"
+syn match foxproCmd "^\s*\<save\>\s*\<to\>"
+syn match foxproCmd "^\s*\<save\>\s*\<wind\%[ows]\>"
+syn match foxproCmd "^\s*\<scat\%[ter]\>"
+syn match foxproCmd "^\s*\<scro\%[ll]\>"
+syn match foxproCmd "^\s*\<seek\>"
+syn match foxproCmd "^\s*\<sele\%[ct]\>"
+syn match foxproCmd "^\s*\<set\>"
+syn match foxproCmd "^\s*\<set\>\s*\<alte\%[rnate]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<ansi\>"
+syn match foxproCmd "^\s*\<set\>\s*\<apla\%[bout]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<auto\%[save]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<bell\>"
+syn match foxproCmd "^\s*\<set\>\s*\<blin\%[k]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<bloc\%[ksize]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<bord\%[er]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<brst\%[atus]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<carr\%[y]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<cent\%[ury]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<clea\%[r]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<cloc\%[k]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<coll\%[ate]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<colo\%[r]\>\s*\<of\>"
+syn match foxproCmd "^\s*\<set\>\s*\<colo\%[r]\>\s*\<of\>\s*\<sche\%[me]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<colo\%[r]\>\s*\<set\>"
+syn match foxproCmd "^\s*\<set\>\s*\<colo\%[r]\>\s*\<to\>"
+syn match foxproCmd "^\s*\<set\>\s*\<comp\%[atible]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<conf\%[irm]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<cons\%[ole]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<curr\%[ency]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<curs\%[or]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<date\>"
+syn match foxproCmd "^\s*\<set\>\s*\<debu\%[g]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<deci\%[mals]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<defa\%[ult]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<dele\%[ted]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<deli\%[miters]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<deve\%[lopment]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<devi\%[ce]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<disp\%[lay]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<dohi\%[story]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<echo\>"
+syn match foxproCmd "^\s*\<set\>\s*\<esca\%[pe]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<exac\%[t]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<excl\%[usive]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<fiel\%[ds]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<filt\%[er]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<fixe\%[d]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<form\%[at]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<full\%[path]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<func\%[tion]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<head\%[ings]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<help\>"
+syn match foxproCmd "^\s*\<set\>\s*\<help\%[filter]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<hour\%[s]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<inde\%[x]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<inte\%[nsity]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<key\>"
+syn match foxproCmd "^\s*\<set\>\s*\<keyc\%[omp]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<libr\%[ary]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<lock\>"
+syn match foxproCmd "^\s*\<set\>\s*\<loge\%[rrors]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<macd\%[esktop]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<mach\%[elp]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<mack\%[ey]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<marg\%[in]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<mark\>\s*\<of\>"
+syn match foxproCmd "^\s*\<set\>\s*\<mark\>\s*\<to\>"
+syn match foxproCmd "^\s*\<set\>\s*\<memo\%[width]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<mess\%[age]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<mous\%[e]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<mult\%[ilocks]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<near\>"
+syn match foxproCmd "^\s*\<set\>\s*\<nocp\%[trans]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<noti\%[fy]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<odom\%[eter]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<opti\%[mize]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<orde\%[r]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<pale\%[tte]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<path\>"
+syn match foxproCmd "^\s*\<set\>\s*\<pdse\%[tup]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<poin\%[t]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<prin\%[ter]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<proc\%[edure]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<read\%[border]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<refr\%[esh]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<rela\%[tion]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<rela\%[tion]\>\s*\<off\>"
+syn match foxproCmd "^\s*\<set\>\s*\<repr\%[ocess]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<reso\%[urce]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<safe\%[ty]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<scor\%[eboard]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<sepa\%[rator]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<shad\%[ows]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<skip\>"
+syn match foxproCmd "^\s*\<set\>\s*\<skip\>\s*\<of\>"
+syn match foxproCmd "^\s*\<set\>\s*\<spac\%[e]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<stat\%[us]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<stat\%[us]\>\s*\<bar\>"
+syn match foxproCmd "^\s*\<set\>\s*\<step\>"
+syn match foxproCmd "^\s*\<set\>\s*\<stic\%[ky]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<sysm\%[enu]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<talk\>"
+syn match foxproCmd "^\s*\<set\>\s*\<text\%[merge]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<text\%[merge]\>\s*\<deli\%[miters]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<topi\%[c]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<trbe\%[tween]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<type\%[ahead]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<udfp\%[arms]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<uniq\%[ue]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<view\>"
+syn match foxproCmd "^\s*\<set\>\s*\<volu\%[me]\>"
+syn match foxproCmd "^\s*\<set\>\s*\<wind\%[ow]\>\s*\<of\>\s*\<memo\>"
+syn match foxproCmd "^\s*\<set\>\s*\<xcmd\%[file]\>"
+syn match foxproCmd "^\s*\<show\>\s*\<get\>"
+syn match foxproCmd "^\s*\<show\>\s*\<gets\>"
+syn match foxproCmd "^\s*\<show\>\s*\<menu\>"
+syn match foxproCmd "^\s*\<show\>\s*\<obje\%[ct]\>"
+syn match foxproCmd "^\s*\<show\>\s*\<popu\%[p]\>"
+syn match foxproCmd "^\s*\<show\>\s*\<wind\%[ow]\>"
+syn match foxproCmd "^\s*\<size\>\s*\<popu\%[p]\>"
+syn match foxproCmd "^\s*\<skip\>"
+syn match foxproCmd "^\s*\<sort\>"
+syn match foxproCmd "^\s*\<stor\%[e]\>"
+syn match foxproCmd "^\s*\<sum\>"
+syn match foxproCmd "^\s*\<susp\%[end]\>"
+syn match foxproCmd "^\s*\<tota\%[l]\>"
+syn match foxproCmd "^\s*\<type\>"
+syn match foxproCmd "^\s*\<unlo\%[ck]\>"
+syn match foxproCmd "^\s*\<upda\%[te]\>"
+syn match foxproCmd "^\s*\<use\>"
+syn match foxproCmd "^\s*\<wait\>"
+syn match foxproCmd "^\s*\<zap\>"
+syn match foxproCmd "^\s*\<zoom\>\s*\<wind\%[ow]\>"
+
+" Enclosed Block
+syn match foxproEnBlk "^\s*\<do\>\s*\<case\>"
+syn match foxproEnBlk "^\s*\<case\>"
+syn match foxproEnBlk "^\s*\<othe\%[rwise]\>"
+syn match foxproEnBlk "^\s*\<endc\%[ase]\>"
+syn match foxproEnBlk "^\s*\<do\>\s*\<whil\%[e]\>"
+syn match foxproEnBlk "^\s*\<endd\%[o]\>"
+syn match foxproEnBlk "^\s*\<for\>"
+syn match foxproEnBlk "^\s*\<endf\%[or]\>"
+syn match foxproEnBlk "^\s*\<next\>"
+syn match foxproEnBlk "^\s*\<if\>"
+syn match foxproEnBlk "^\s*\<else\>"
+syn match foxproEnBlk "^\s*\<endi\%[f]\>"
+syn match foxproEnBlk "^\s*\<prin\%[tjob]\>"
+syn match foxproEnBlk "^\s*\<endp\%[rintjob]\>"
+syn match foxproEnBlk "^\s*\<scan\>"
+syn match foxproEnBlk "^\s*\<ends\%[can]\>"
+syn match foxproEnBlk "^\s*\<text\>"
+syn match foxproEnBlk "^\s*\<endt\%[ext]\>"
+
+" System Variables
+syn keyword foxproSysVar _alignment _assist _beautify _box _calcmem _calcvalue
+syn keyword foxproSysVar _cliptext _curobj _dblclick _diarydate _dos _foxdoc
+syn keyword foxproSysVar _foxgraph _gengraph _genmenu _genpd _genscrn _genxtab
+syn keyword foxproSysVar _indent _lmargin _mac _mline _padvance _pageno _pbpage
+syn keyword foxproSysVar _pcolno _pcopies _pdriver _pdsetup _pecode _peject _pepage
+syn keyword foxproSysVar _plength _plineno _ploffset _ppitch _pquality _pretext
+syn keyword foxproSysVar _pscode _pspacing _pwait _rmargin _shell _spellchk
+syn keyword foxproSysVar _startup _tabs _tally _text _throttle _transport _unix
+syn keyword foxproSysVar _windows _wrap
+
+" Strings
+syn region foxproString start=+"+ end=+"+ oneline
+syn region foxproString start=+'+ end=+'+ oneline
+syn region foxproString start=+\[+ end=+\]+ oneline
+
+" Constants
+syn match foxproConst "\.t\."
+syn match foxproConst "\.f\."
+
+"integer number, or floating point number without a dot and with "f".
+syn match foxproNumber "\<[0-9]\+\>"
+"floating point number, with dot, optional exponent
+syn match foxproFloat "\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=\>"
+"floating point number, starting with a dot, optional exponent
+syn match foxproFloat "\.[0-9]\+\(e[-+]\=[0-9]\+\)\=\>"
+"floating point number, without dot, with exponent
+syn match foxproFloat "\<[0-9]\+e[-+]\=[0-9]\+\>"
+
+syn match foxproComment "^\s*\*.*"
+syn match foxproComment "&&.*"
+
+"catch errors caused by wrong parenthesis
+syn region foxproParen transparent start='(' end=')' contains=ALLBUT,foxproParenErr
+syn match foxproParenErr ")"
+
+syn sync minlines=1 maxlines=3
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link foxproSpecial Special
+hi def link foxproAtSymbol Special
+hi def link foxproAtCmd Statement
+hi def link foxproPreProc PreProc
+hi def link foxproFunc Identifier
+hi def link foxproCmd Statement
+hi def link foxproEnBlk Type
+hi def link foxproSysVar String
+hi def link foxproString String
+hi def link foxproConst Constant
+hi def link foxproNumber Number
+hi def link foxproFloat Float
+hi def link foxproComment Comment
+hi def link foxproParenErr Error
+hi def link foxproCBConst PreProc
+hi def link foxproCBField Special
+hi def link foxproCBVar Identifier
+hi def link foxproCBWin Special
+hi def link foxproCBObject Identifier
+
+
+let b:current_syntax = "foxpro"
diff --git a/runtime/syntax/fpcmake.vim b/runtime/syntax/fpcmake.vim
new file mode 100644
index 0000000..bbc6f1d
--- /dev/null
+++ b/runtime/syntax/fpcmake.vim
@@ -0,0 +1,58 @@
+" Vim syntax file
+" Language: Free Pascal Makefile Definition Files
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2021 Apr 23
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/make.vim
+
+" NOTE: using start-of-line anchored syn-match groups is simpler than other
+" alternatives when interacting with the sourced make.vim syntax groups
+
+" Sections
+syn region fpcmakeSection matchgroup=fpcmakeSectionDelimiter start="^\s*\[" end="]" contains=fpcmakeSectionName
+
+syn keyword fpcmakeSectionName contained clean compiler default dist install
+syn keyword fpcmakeSectionName contained lib package prerules require rules
+syn keyword fpcmakeSectionName contained shared target
+
+" [clean]
+syn match fpcmakeRule "^\s*\(units\|files\)\>"
+" [compiler]
+syn match fpcmakeRule "^\s*\(options\|version\|unitdir\|librarydir\|objectdir\)\>"
+syn match fpcmakeRule "^\s*\(targetdir\|sourcedir\|unittargetdir\|includedir\)\>"
+" [default]
+syn match fpcmakeRule "^\s*\(cpu\|dir\|fpcdir\|rule\|target\)\>"
+" [dist]
+syn match fpcmakeRule "^\s*\(destdir\|zipname\|ziptarget\)\>"
+" [install]
+syn match fpcmakeRule "^\s*\(basedir\|datadir\|fpcpackage\|files\|prefix\)\>"
+syn match fpcmakeRule "^\s*\(units\)\>"
+" [package]
+syn match fpcmakeRule "^\s*\(name\|version\|main\)\>"
+" [requires]
+syn match fpcmakeRule "^\s*\(fpcmake\|packages\|libc\|nortl\|unitdir\)\>"
+syn match fpcmakeRule "^\s*\(packagedir\|tools\)\>"
+" [shared]
+syn match fpcmakeRule "^\s*\(build\|libname\|libversion\|libunits\)\>"
+" [target]
+syn match fpcmakeRule "^\s*\(dirs\|exampledirs\|examples\|loaders\|programs\)\>"
+syn match fpcmakeRule "^\s*\(rsts\|units\)\>"
+
+" Comments
+syn keyword fpcmakeTodo TODO FIXME XXX contained
+syn match fpcmakeComment "#.*" contains=fpcmakeTodo,@Spell
+
+" Default highlighting
+hi def link fpcmakeSectionDelimiter Delimiter
+hi def link fpcmakeSectionName Type
+hi def link fpcmakeComment Comment
+hi def link fpcmakeTodo Todo
+hi def link fpcmakeRule Identifier
+
+let b:current_syntax = "fpcmake"
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/syntax/framescript.vim b/runtime/syntax/framescript.vim
new file mode 100644
index 0000000..8b16d04
--- /dev/null
+++ b/runtime/syntax/framescript.vim
@@ -0,0 +1,491 @@
+" Vim syntax file
+" Language: FrameScript v4.0
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-02-22
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match framescriptOperator
+ \ '[+*/%=-]\|[><]=\=\|#[&|]'
+
+syn keyword framescriptTodo
+ \ contained
+ \ TODO FIXME XXX NOTE
+
+syn cluster framescriptCommentGroup
+ \ contains=
+ \ framescriptTodo,
+ \ @Spell
+
+syn match framescriptComment
+ \ display
+ \ contains=@framescriptCommentGroup
+ \ '//.*$'
+
+syn region framescriptComment
+ \ contains=@framescriptCommentGroup
+ \ matchgroup=framescriptCommentStart
+ \ start='/\*'
+ \ end='\*/'
+
+syn case ignore
+
+syn match framescriptInclude
+ \ display
+ \ contains=framescriptIncluded
+ \ "^\s*<#Include\>\s*'"
+
+syn region framescriptIncluded
+ \ contained
+ \ display
+ \ start=+'+
+ \ skip=+\\\\\|\\'+
+ \ end=+'+
+
+syn match framescriptNumbers
+ \ display
+ \ transparent
+ \ contains=
+ \ framescriptInteger,
+ \ framescriptReal,
+ \ framescriptMetric,
+ \ framescriptCharacter
+ \ '\<\d\|\.\d'
+
+syn keyword framescriptBoolean
+ \ True False
+
+syn match framescriptInteger
+ \ contained
+ \ display
+ \ '\d\+\>'
+
+syn match framescriptInteger
+ \ contained
+ \ display
+ \ '\x\+H\>'
+
+syn match framescriptInteger
+ \ contained
+ \ display
+ \ '[01]\+B\>'
+
+syn match framescriptReal
+ \ contained
+ \ display
+ \ '\d\+\.\d*\|\.\d\+\>'
+
+syn match framescriptMetric
+ \ contained
+ \ display
+ \ '\%(\d\+\%(\.\d*\)\=\|\.\d\+\)\%(pts\|in\|"\|cm\|mm\|pica\)\>'
+
+syn match framescriptCharacter
+ \ contained
+ \ display
+ \ '\d\+S\>'
+
+syn region framescriptString
+ \ contains=framescriptStringSpecialChar,@Spell
+ \ start=+'+
+ \ skip=+\\\\\|\\'+
+ \ end=+'+
+
+syn match framescriptStringSpecialChar
+ \ contained
+ \ display
+ \ "\\[\\']"
+
+syn keyword framescriptConstant
+ \ BackSlash
+ \ CharCR
+ \ CharLF
+ \ CharTAB
+ \ ClientDir
+ \ ClientName
+ \ FslVersionMajor
+ \ FslVersionMinor
+ \ InstallName
+ \ InstalledScriptList
+ \ MainScript
+ \ NULL
+ \ ObjEndOffset
+ \ ProductRevision
+ \ Quote
+ \ ThisScript
+
+syn keyword framescriptOperator
+ \ not
+ \ and
+ \ or
+
+syn keyword framescriptSessionVariables
+ \ ErrorCode
+ \ ErrorMsg
+ \ DeclareVarMode
+ \ PlatformEncodingMode
+
+syn keyword framescriptStructure
+ \ Event
+ \ EndEvent
+
+syn keyword framescriptStatement
+ \ Sub
+ \ EndSub
+ \ Run
+ \ Function
+ \ EndFunction
+ \ Set
+ \ Add
+ \ Apply
+ \ CallClient
+ \ Close
+ \ Copy
+ \ Cut
+ \ DialogBox
+ \ Delete
+ \ Demote
+ \ Display
+ \ DocCompare
+ \ Export
+ \ Find
+ \ LeaveLoop
+ \ LeaveScript
+ \ LeaveSub
+ \ LoopNext
+ \ Merge
+ \ MsgBox
+ \ Paste
+ \ PopClipboard
+ \ PushClipboard
+ \ Read
+ \ Replace
+ \ Return
+ \ Sort
+ \ Split
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptApplySubStatement skipwhite skipempty
+ \ Apply
+
+syn keyword framescriptApplySubStatement
+ \ contained
+ \ Pagelayout
+ \ TextProperties
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptClearSubStatement skipwhite skipempty
+ \ Clear
+
+syn keyword framescriptClearSubStatement
+ \ contained
+ \ ChangeBars
+ \ Text
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptCloseSubStatement skipwhite skipempty
+ \ Close
+
+syn keyword framescriptCloseSubStatement
+ \ contained
+ \ Book
+ \ Document
+ \ TextFile
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptExecSubStatement skipwhite skipempty
+ \ Exec
+
+syn keyword framescriptExecSubStatement
+ \ contained
+ \ Compile
+ \ Script
+ \ Wait
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptExecuteSubStatement skipwhite skipempty
+ \ Execute
+
+syn keyword framescriptExecuteSubStatement
+ \ contained
+ \ FrameCommand
+ \ Hypertext
+ \ StartUndoCheckPoint
+ \ EndUndoCheckPoint
+ \ ClearUndoHistory
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptGenerateSubStatement skipwhite skipempty
+ \ Generate
+
+syn keyword framescriptGenerateSubStatement
+ \ contained
+ \ Bookfile
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptGetSubStatement skipwhite skipempty
+ \ Get
+
+syn keyword framescriptGetSubStatement
+ \ contained
+ \ Member
+ \ Object
+ \ String
+ \ TextList
+ \ TextProperties
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptImportSubStatement skipwhite skipempty
+ \ Import
+
+syn keyword framescriptImportSubStatement
+ \ contained
+ \ File
+ \ Formats
+ \ ElementDefs
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptInstallSubStatement skipwhite skipempty
+ \ Install
+ \ Uninstall
+
+syn keyword framescriptInstallSubStatement
+ \ contained
+ \ ChangeBars
+ \ Text
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptNewSubStatement skipwhite skipempty
+ \ New
+
+syn keyword framescriptNewSubStatement
+ \ contained
+ \ AFrame
+ \ Footnote
+ \ Marker
+ \ TiApiClient
+ \ Variable
+ \ XRef
+ \ FormatChangeList
+ \ FormatRule
+ \ FmtRuleClause
+ \ Arc
+ \ Ellipse
+ \ Flow
+ \ Group
+ \ Inset
+ \ Line
+ \ Math
+ \ Polygon
+ \ Polyline
+ \ Rectangle
+ \ RoundRect
+ \ TextFrame
+ \ Textline
+ \ UnanchoredFrame
+ \ Command
+ \ Menu
+ \ MenuItemSeparator
+ \ Book
+ \ CharacterFormat
+ \ Color
+ \ ConditionFormat
+ \ ElementDef
+ \ FormatChangeList
+ \ MarkerType
+ \ MasterPage
+ \ ParagraphFormat
+ \ PgfFmt
+ \ ReferencePAge
+ \ RulingFormat
+ \ TableFormat
+ \ VariableFormat
+ \ XRefFormat
+ \ BodyPage
+ \ BookComponent
+ \ Paragraph
+ \ Element
+ \ Attribute
+ \ AttributeDef
+ \ AttributeList
+ \ AttributeDefList
+ \ ElementLoc
+ \ ElementRange
+ \ Table
+ \ TableRows
+ \ TableCols
+ \ Text
+ \ Integer
+ \ Real
+ \ Metric
+ \ String
+ \ Object
+ \ TextLoc
+ \ TextRange
+ \ IntList
+ \ UIntList
+ \ MetricList
+ \ StringList
+ \ PointList
+ \ TabList
+ \ PropertyList
+ \ LibVar
+ \ ScriptVar
+ \ SubVar
+ \ TextFile
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptOpenSubStatement skipwhite skipempty
+ \ Open
+
+syn keyword framescriptOpenSubStatement
+ \ contained
+ \ Document
+ \ Book
+ \ TextFile
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptPrintSubStatement skipwhite skipempty
+ \ Print
+
+syn keyword framescriptPrintSubStatement
+ \ contained
+ \ Document
+ \ Book
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptQuitSubStatement skipwhite skipempty
+ \ Quit
+
+syn keyword framescriptQuitSubStatement
+ \ contained
+ \ Session
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptRemoveSubStatement skipwhite skipempty
+ \ Remove
+
+syn keyword framescriptRemoveSubStatement
+ \ contained
+ \ Attribute
+ \ CommandObject
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptSaveSubStatement skipwhite skipempty
+ \ Save
+
+syn keyword framescriptSaveSubStatement
+ \ contained
+ \ Document
+ \ Book
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptSelectSubStatement skipwhite skipempty
+ \ Select
+
+syn keyword framescriptSelectSubStatement
+ \ contained
+ \ TableCells
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptStraddleSubStatement skipwhite skipempty
+ \ Straddle
+
+syn keyword framescriptStraddleSubStatement
+ \ contained
+ \ TableCells
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptUpdateSubStatement skipwhite skipempty
+ \ Update
+
+syn keyword framescriptUpdateSubStatement
+ \ contained
+ \ ReDisplay
+ \ Formatting
+ \ Hyphenating
+ \ ResetEquationsSettings
+ \ ResetRefFrames
+ \ RestartPgfNums
+ \ TextInset
+ \ Variables
+ \ XRefs
+ \ Book
+
+syn keyword framescriptStatement
+ \ nextgroup=framescriptWriteSubStatement skipwhite skipempty
+ \ Write
+
+syn keyword framescriptUpdateSubStatement
+ \ contained
+ \ Console
+ \ Display
+
+syn keyword framescriptRepeat
+ \ Loop
+ \ EndLoop
+
+syn keyword framescriptConditional
+ \ If
+ \ ElseIf
+ \ Else
+ \ EndIf
+
+syn keyword framescriptType
+ \ Local
+ \ GlobalVar
+
+let b:framescript_minlines = exists("framescript_minlines")
+ \ ? framescript_minlines : 15
+exec "syn sync ccomment framescriptComment minlines=" . b:framescript_minlines
+
+hi def link framescriptTodo Todo
+hi def link framescriptComment Comment
+hi def link framescriptCommentStart framescriptComment
+hi def link framescriptInclude Include
+hi def link framescriptIncluded String
+hi def link framescriptBoolean Boolean
+hi def link framescriptNumber Number
+hi def link framescriptInteger framescriptNumber
+hi def link framescriptReal framescriptNumber
+hi def link framescriptMetric framescriptNumber
+hi def link framescriptCharacter framescriptNumber
+hi def link framescriptString String
+hi def link framescriptStringSpecialChar SpecialChar
+hi def link framescriptConstant Constant
+hi def link framescriptOperator None
+hi def link framescriptSessionVariables PreProc
+hi def link framescriptStructure Structure
+hi def link framescriptStatement Statement
+hi def link framescriptSubStatement Type
+hi def link framescriptApplySubStatement framescriptSubStatement
+hi def link framescriptClearSubStatement framescriptSubStatement
+hi def link framescriptCloseSubStatement framescriptSubStatement
+hi def link framescriptExecSubStatement framescriptSubStatement
+hi def link framescriptExecuteSubStatement framescriptSubStatement
+hi def link framescriptGenerateSubStatement framescriptSubStatement
+hi def link framescriptGetSubStatement framescriptSubStatement
+hi def link framescriptImportSubStatement framescriptSubStatement
+hi def link framescriptInstallSubStatement framescriptSubStatement
+hi def link framescriptNewSubStatement framescriptSubStatement
+hi def link framescriptOpenSubStatement framescriptSubStatement
+hi def link framescriptPrintSubStatement framescriptSubStatement
+hi def link framescriptQuitSubStatement framescriptSubStatement
+hi def link framescriptRemoveSubStatement framescriptSubStatement
+hi def link framescriptSaveSubStatement framescriptSubStatement
+hi def link framescriptSelectSubStatement framescriptSubStatement
+hi def link framescriptStraddleSubStatement framescriptSubStatement
+hi def link framescriptUpdateSubStatement framescriptSubStatement
+hi def link framescriptRepeat Repeat
+hi def link framescriptConditional Conditional
+hi def link framescriptType Type
+
+let b:current_syntax = "framescript"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/freebasic.vim b/runtime/syntax/freebasic.vim
new file mode 100644
index 0000000..7549d02
--- /dev/null
+++ b/runtime/syntax/freebasic.vim
@@ -0,0 +1,674 @@
+" Vim syntax file
+" Language: FreeBASIC
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Mark Manning <markem@sim1.us>
+" Last Change: 2022 Jun 26
+"
+" Description:
+"
+" Based originally on the work done by Allan Kelly <Allan.Kelly@ed.ac.uk>
+" Updated by Mark Manning <markem@sim1.us>
+" Applied FreeBASIC support to the already excellent support
+" for standard basic syntax (like QB).
+"
+" First version based on Micro$soft QBASIC circa
+" 1989, as documented in 'Learn BASIC Now' by
+" Halvorson&Rygmyr. Microsoft Press 1989. This syntax file
+" not a complete implementation yet. Send suggestions to
+" the maintainer.
+"
+" TODO: split this into separate dialect-based files, possibly with a common base
+"
+" Quit when a (custom) syntax file was already loaded (Taken from c.vim)
+"
+if exists("b:current_syntax")
+ finish
+endif
+"
+" Dialect detection
+"
+let s:lang = freebasic#GetDialect()
+"
+" Whitespace Errors
+"
+if exists("freebasic_space_errors")
+ if !exists("freebasic_no_trail_space_error")
+ syn match freebasicSpaceError display excludenl "\s\+$"
+ endif
+ if !exists("freebasic_no_tab_space_error")
+ syn match freebasicSpaceError display " \+\t"me=e-1
+ endif
+endif
+"
+" Be sure to turn on the "case ignore" since current versions
+" of freebasic support both upper as well as lowercase
+" letters. - MEM 10/1/2006
+"
+syn case ignore
+"
+" Do the Basic variables names first. This is because it
+" is the most inclusive of the tests. Later on we change
+" this so the identifiers are split up into the various
+" types of identifiers like functions, basic commands and
+" such. MEM 9/9/2006
+"
+if s:lang =~# '\<\%(qb\|fblite\)\>'
+ syn iskeyword @,48-57,_,192-255,.
+ syn match freebasicIdentifier "\<\h\%(\w\|\.\)*\>"
+ syn match freebasicGenericFunction "\<\h\%(\w\|\.\)*\>\ze\s*("
+else
+ syn iskeyword @,48-57,_,192-255
+ syn match freebasicIdentifier "\<\h\w*\>"
+ syn match freebasicGenericFunction "\<\h\w*\>\ze\s*("
+endif
+"
+" This list of keywords is taken directly from the FreeBASIC
+" user's guide as presented by the FreeBASIC online site.
+"
+syn keyword freebasicArrays ERASE LBOUND PRESERVE REDIM UBOUND
+
+" array.bi
+syn keyword freebasicArrays ARRAYLEN ARRAYSIZE
+if s:lang == "fb"
+ syn keyword freebasicArrays ArrayConstDescriptorPtr ArrayDescriptorPtr FBARRAY
+endif
+
+if s:lang == "qb"
+ syn keyword freebasicAsm __ASM
+ syn match freebasicAsm "\<end\s\+__asm\>"
+else
+ syn keyword freebasicAsm ASM
+ syn match freebasicAsm "\<end\s\+asm\>"
+endif
+
+if s:lang == "qb"
+ syn keyword freebasicBitManipulation __BIT __BITRESET __BITSET __HIBYTE __HIWORD __LOBYTE __LOWORD
+else
+ syn keyword freebasicBitManipulation BIT BITRESET BITSET HIBYTE HIWORD LOBYTE LOWORD
+endif
+
+if s:lang != "fb"
+ syn keyword freebasicCompilerSwitches DEFDBL DEFINT DEFLNG DEFSNG DEFSTR
+endif
+if s:lang == "qb"
+ syn keyword freebasicCompilerSwitches __DEFBYTE __DEFLONGINT __DEFSHORT __DEFUBYTE __DEFUINT __DEFULONGINT __DEFUSHORT
+elseif s:lang == "fblite" || s:lang == "deprecated"
+ syn keyword freebasicCompilerSwitches DEFBYTE DEFLONGINT DEFSHORT DEFUBYTE DEFUINT DEFUILONGINT DEFUSHORT
+endif
+
+syn match freebasicCompilerSwitches "\<option\s\+\%(BASE\|BYVAL\|DYNAMIC\|ESCAPE\|EXPLICIT\|GOSUB\|NOGOSUB\)\>"
+syn match freebasicCompilerSwitches "\<option\s\+\%(NOKEYWORD\|PRIVATE\|STATIC\)\>"
+
+syn keyword freebasicData DATA READ RESTORE
+
+syn keyword freebasicProgramFlow EXIT GOTO RETURN SLEEP
+syn match freebasicProgramFlow "\<end\>"
+if s:lang == "qb"
+ syn keyword freebasicProgramFlow __SLEEP
+endif
+if s:lang == "fblite" || s:lang == "qb"
+ syn keyword freebasicProgramFlow GOSUB
+endif
+if s:lang == "fb" || s:lang == "deprecated"
+ syn keyword freebasicProgramFlow SCOPE
+ syn match freebasicProgramFlow "\<end\s\+scope\>"
+endif
+
+if s:lang == "fblite" || s:lang == "qb"
+ syn region freebasicConditional matchgroup=freebasicConditional start="\<on\>" end="\<gosub\>" transparent
+ syn region freebasicConditional matchgroup=freebasicConditional start="\<on\>" end="\<goto\>" transparent
+endif
+syn keyword freebasicConditional IF THEN ELSE ELSEIF
+if s:lang == "qb"
+ syn keyword freebasicConditional __IIF __WITH
+ syn match freebasicConditional "\<end\s\+__with\>"
+else
+ syn keyword freebasicConditional IIF WITH
+ syn match freebasicConditional "\<end\s\+with\>"
+endif
+syn match freebasicConditional "\<end\s\+if\>"
+syn match freebasicConditional "\<select\s\+case\>"
+syn match freebasicConditional "\<case\>"
+syn match freebasicConditional "\<case\s\+is\>"
+syn match freebasicConditional "\<end\s\+select\>"
+
+syn keyword freebasicConsole BEEP CLS CSRLIN LOCATE PRINT POS SPC TAB USING VIEW WIDTH
+syn match freebasicConsole "?"
+
+syn keyword freebasicDataTypes SINGLE DOUBLE INTEGER LONG
+syn match freebasicDataTypes "\<string\>"
+syn keyword freebasicDataTypes AS DIM CONST ENUM SHARED TYPE
+syn match freebasicDataTypes "\<end\s\+enum\>"
+syn match freebasicDataTypes "\<end\s\+type\>"
+if s:lang == "qb"
+ syn keyword freebasicDataTypes __BOOLEAN __BYTE __LONGINT __SHORT __UBYTE __UINTEGER __ULONG __ULONGINT __UNSIGNED __USHORT __ZSTRING
+ syn match freebasicDataTypes "\<__WSTRING\>"
+ syn keyword freebasicDataTypes __EXPLICIT __EXTENDS __IMPLEMENTS __OBJECT __POINTER __PTR __SIZEOF __TYPEOF
+ syn keyword freebasicDataTypes __UNION
+ syn match freebasicDataTypes "\<end\s\+__union\>"
+else
+ syn keyword freebasicDataTypes BOOLEAN BYTE LONGINT SHORT UBYTE UINTEGER ULONG ULONGINT UNSIGNED USHORT ZSTRING
+ syn match freebasicDataTypes "\<WSTRING\>"
+ syn keyword freebasicDataTypes EXPLICIT EXTENDS IMPLEMENTS OBJECT POINTER PTR SIZEOF TYPEOF
+ syn keyword freebasicDataTypes UNION
+ syn match freebasicDataTypes "\<end\s\+union\>"
+endif
+if s:lang == "fb"
+ syn keyword freebasicDataTypes BASE CLASS THIS VAR
+endif
+
+if s:lang == "qb"
+ syn match freebasicDateTime "\<\%(date\|time\)\$"
+elseif s:lang == "fblite" || s:lang == "deprecated"
+ syn match freebasicDateTime "\<\%(date\|time\)\>\$\="
+else " fb
+ syn keyword freebasicDateTime DATE TIME
+endif
+syn keyword freebasicDateTime SETDATE SETTIME
+
+" datetime.bi
+syn keyword freebasicDateTime DATEADD DATEDIFF DATEPART DATESERIAL DATEVALUE DAY HOUR ISDATE MINUTE
+syn keyword freebasicDateTime MONTH MONTHNAME NOW SECOND TIMESERIAL TIMEVALUE
+syn keyword freebasicDateTime TIMER YEAR WEEKDAY WEEKDAYNAME
+
+syn keyword freebasicDebug STOP
+if s:lang == "qb"
+ syn keyword freebasicDebug __ASSERT __ASSERTWARN
+else
+ syn keyword freebasicDebug ASSERT ASSERTWARN
+endif
+
+syn keyword freebasicErrorHandling ERR ERL ERROR
+if s:lang == "qb"
+ syn keyword freebasicErrorHandling __ERFN __ERMN
+ syn match freebasicErrorHandling "\<on\s\+error\>"
+else
+ syn keyword freebasicErrorHandling ERFN ERMN
+ syn match freebasicErrorHandling "\<on\s\+\%(local\s\+\)\=error\>"
+endif
+if s:lang != "fb"
+ syn match freebasicErrorHandling "\<resume\%(\s\+next\)\=\>"
+endif
+
+syn match freebasicFiles "\<get\s\+#\>"
+syn match freebasicFiles "\<input\s\+#\>"
+syn match freebasicFiles "\<line\s\+input\s\+#\>"
+syn match freebasicFiles "\<put\s\+#\>"
+syn keyword freebasicFiles ACCESS APPEND BINARY CLOSE EOF FREEFILE INPUT LOC
+syn keyword freebasicFiles LOCK LOF OUTPUT RANDOM RESET SEEK UNLOCK WRITE
+syn match freebasicFiles "\<open\>"
+if s:lang == "qb"
+ syn keyword freebasicFiles __ENCODING
+else
+ syn keyword freebasicFiles ENCODING WINPUT
+ syn match freebasicFiles "\<open\s\+\%(cons\|err\|pipe\|scrn\)\>"
+endif
+
+" file.bi
+syn keyword freebasicFiles FILEATTR FILECOPY FILEDATETIME FILEEXISTS FILEFLUSH FILELEN FILESETEOF
+
+syn keyword freebasicFunctions ALIAS BYREF BYVAL CDECL DECLARE LIB NAKED PASCAL STATIC STDCALL
+syn match freebasicFunctions "\<option\ze\s*("
+
+if s:lang == "qb"
+ syn keyword freebasicFunctions __CVA_ARG __CVA_COPY __CVA_END __CVA_LIST __CVA_START
+ syn keyword freebasicFunctions __VA_ARG __VA_FIRST __VA_NEXT
+else
+ syn keyword freebasicFunctions CVA_ARG CVA_COPY CVA_END CVA_LIST CVA_START
+ syn keyword freebasicFunctions VA_ARG VA_FIRST VA_NEXT
+ syn keyword freebasicFunctions ANY OVERLOAD
+endif
+
+syn keyword freebasicFunctions FUNCTION SUB
+syn match freebasicFunctions "\<end\s\+function\>"
+syn match freebasicFunctions "\<end\s\+sub\>"
+
+if s:lang == "fb"
+ syn keyword freebasicFunctions ABSTRACT OVERRIDE VIRTUAL __THISCALL
+ syn keyword freebasicFunctions CONSTRUCTOR DESTRUCTOR OPERATOR PROPERTY
+ syn match freebasicFunctions "\<end\s\+constructor\>"
+ syn match freebasicFunctions "\<end\s\+destructor\>"
+ syn match freebasicFunctions "\<end\s\+operator\>"
+ syn match freebasicFunctions "\<end\s\+property\>"
+else
+ syn keyword freebasicFunctions CALL
+endif
+
+syn match freebasicGraphics "\<palette\s\+get\>"
+syn keyword freebasicGraphics ADD ALPHA BLOAD BSAVE CIRCLE CLS COLOR DRAW GET
+syn keyword freebasicGraphics LINE PAINT PALETTE PCOPY PMAP POINT
+syn keyword freebasicGraphics PRESET PSET PUT SCREEN
+syn keyword freebasicGraphics TRANS WINDOW
+if s:lang == "qb"
+ syn keyword freebasicGraphics __FLIP __IMAGECONVERTROW __IMAGECREATE __IMAGEDESTROY __IMAGEINFO __POINTCOORD
+ syn keyword freebasicGraphics __RGB __RGBA __SCREENCOPY __SCREENCONTROL __SCREENEVENT __SCREENGLPROC __SCREENINFO
+ syn keyword freebasicGraphics __SCREENLIST __SCREENLOCK __SCREENPTR __SCREENRES __SCREENSET __SCREENSYNC
+ syn keyword freebasicGraphics __SCREENUNLOCK __WINDOWTITLE
+else
+ syn keyword freebasicGraphics CUSTOM
+ syn keyword freebasicGraphics FLIP IMAGECONVERTROW IMAGECREATE IMAGEDESTROY IMAGEINFO POINTCOORD
+ syn keyword freebasicGraphics RGB RGBA SCREENCOPY SCREENCONTROL SCREENEVENT SCREENGLPROC SCREENINFO
+ syn keyword freebasicGraphics SCREENLIST SCREENLOCK SCREENPTR SCREENRES SCREENSET SCREENSYNC
+ syn keyword freebasicGraphics SCREENUNLOCK WINDOWTITLE
+endif
+
+if s:lang != "qb"
+ syn match freebasicHardware "\<open\s\+\%(com\|lpt\)\>"
+endif
+syn keyword freebasicHardware INP OUT WAIT LPOS LPRINT
+
+syn keyword freebasicMath ABS ATN COS EXP FIX FRAC INT LOG MOD RANDOMIZE RND SGN SIN SQR TAN
+
+if s:lang == "qb"
+ syn keyword freebasicMath __ACOS __ASIN __ATAN2
+else
+ syn keyword freebasicMath ACOS ASIN ATAN2
+endif
+
+if s:lang == "qb"
+ syn keyword freebasicMemory __ALLOCATE __CALLOCATE __DEALLOCATE __REALLOCATE
+else
+ syn keyword freebasicMemory ALLOCATE CALLOCATE DEALLOCATE REALLOCATE
+ syn keyword freebasicMemory PEEK POKE CLEAR FB_MEMCOPY FB_MEMCOPYCLEAR FB_MEMMOVE SWAP SADD
+ syn keyword freebasicMemory FIELD FRE
+endif
+
+syn keyword freebasicMisc LET TO
+if s:lang == "qb"
+ syn keyword freebasicMisc __OFFSETOF
+else
+ syn keyword freebasicMisc OFFSETOF
+endif
+
+syn keyword freebasicModularizing CHAIN COMMON
+if s:lang == "fb"
+ syn keyword freebasicModularizing EXTERN
+ syn match freebasicModularizing "\<end\s\+extern\>"
+ syn keyword freebasicModularizing PROTECTED
+endif
+if s:lang == "qb"
+ syn keyword freebasicModularizing __EXPORT __IMPORT __DYLIBFREE __DYLIBLOAD __DYLIBSYMBOL
+else
+ syn keyword freebasicModularizing EXPORT IMPORT DYLIBFREE DYLIBLOAD DYLIBSYMBOL
+ syn keyword freebasicModularizing PRIVATE PUBLIC
+ syn keyword freebasicModularizing NAMESPACE
+ syn match freebasicModularizing "\<end\s\+namespace\>"
+endif
+
+if s:lang != "qb"
+ syn keyword freebasicMultithreading MUTEXCREATE MUTEXDESTROY MUTEXLOCK MUTEXUNLOCK THREADCREATE THREADWAIT
+ syn keyword freebasicMultithreading CONDBROADCAST CONDCREATE CONDDESTROY CONDSIGNAL CONDWAIT
+ syn keyword freebasicMultithreading THREADCALL THREADDETACH THREADSELF
+endif
+
+syn keyword freebasicShell CHDIR KILL NAME MKDIR RMDIR RUN SETENVIRON
+if s:lang == "qb"
+ syn keyword freebasicShell __CURDIR __DIR __EXEC __EXEPATH
+ syn match freebasicString "\<\%(command\|environ\)\$"
+else
+ " fbio.bi
+ syn keyword freebasicShell ISREDIRECTED
+ syn keyword freebasicShell CURDIR DIR EXEC EXEPATH
+ syn match freebasicString "\<\%(command\|environ\)\>\$\="
+endif
+
+syn keyword freebasicEnviron SHELL SYSTEM
+
+syn keyword freebasicLoops FOR LOOP WHILE WEND DO STEP UNTIL NEXT
+if s:lang == "qb"
+ syn keyword freebasicLoops __CONTINUE
+else
+ syn keyword freebasicLoops CONTINUE
+endif
+"
+" File numbers
+"
+syn match freebasicFilenumber "#\d\+"
+syn match freebasicFilenumber "#\a[[:alpha:].]*[%&!#]\="
+
+syn match freebasicMetacommand "$\s*\%(dynamic\|static\)"
+syn match freebasicMetacommand "$\s*include\s*\%(once\)\=\s*:\s*'[^']\+'"
+syn match freebasicMetacommand '$\s*include\s*\%(once\)\=\s*:\s*"[^"]\+"'
+syn match freebasicMetacommand '$\s*lang\s*:\s*"[^"]\+"'
+"
+" Intrinsic defines
+"
+syn keyword freebasicPredefined __DATE__ __DATE_ISO__
+syn keyword freebasicPredefined __FB_64BIT__ __FB_ARGC__ __FB_ARG_COUNT__ __FB_ARG_EXTRACT__ __FB_ARG_LEFTOF__
+syn keyword freebasicPredefined __FB_ARG_RIGHTOF__ __FB_ARGV__ __FB_ARM__ __FB_ASM__ __FB_BACKEND__
+syn keyword freebasicPredefined __FB_BIGENDIAN__ __FB_BUILD_DATE__ __FB_BUILD_DATE_ISO__ __FB_BUILD_SHA1__
+syn keyword freebasicPredefined __FB_CYGWIN__ __FB_DARWIN__ __FB_DEBUG__ __FB_DOS__ __FB_ERR__ __FB_EVAL__
+syn keyword freebasicPredefined __FB_FPMODE__ __FB_FPU__ __FB_FREEBSD__ __FB_GCC__ __FB_GUI__ __FB_JOIN__
+syn keyword freebasicPredefined __FB_LANG__ __FB_LINUX__ __FB_MAIN__ __FB_MIN_VERSION__ __FB_MT__ __FB_NETBSD__
+syn keyword freebasicPredefined __FB_OPENBSD__ __FB_OPTIMIZE__ __FB_OPTION_BYVAL__ __FB_OPTION_DYNAMIC__
+syn keyword freebasicPredefined __FB_OPTION_ESCAPE__ __FB_OPTION_EXPLICIT__ __FB_OPTION_GOSUB__
+syn keyword freebasicPredefined __FB_OPTION_PRIVATE__ __FB_OUT_DLL__ __FB_OUT_EXE__ __FB_OUT_LIB__ __FB_OUT_OBJ__
+syn keyword freebasicPredefined __FB_PCOS__ __FB_PPC__ __FB_QUOTE__ __FB_SIGNATURE__ __FB_SSE__ __FB_UNIQUEID__
+syn keyword freebasicPredefined __FB_UNIQUEID_POP__ __FB_UNIQUEID_PUSH__ __FB_UNIX__ __FB_UNQUOTE__
+syn keyword freebasicPredefined __FB_VECTORIZE__ __FB_VER_MAJOR__ __FB_VER_MINOR__ __FB_VER_PATCH__ __FB_VERSION__
+syn keyword freebasicPredefined __FB_WIN32__ __FB_X86__ __FB_XBOX__
+syn keyword freebasicPredefined __FILE__ __FILE_NQ__ __FUNCTION__ __FUNCTION_NQ__
+syn keyword freebasicPredefined __LINE__ __PATH__ __TIME__
+"
+" Preprocessor directives
+"
+syn match freebasicInclude "#\s*\%(inclib\|include\%(\s\+once\)\=\|libpath\)\>"
+
+syn match freebasicPreProcessor "#\s*assert\>"
+syn match freebasicPreProcessor "#\s*cmdline\>"
+syn match freebasicPreProcessor "#\s*\%(define\|undef\)\>"
+syn match freebasicPreProcessor "#\s*\%(if\|ifdef\|ifndef\|else\|elseif\|endif\)\>"
+syn match freebasicPreProcessor "#\s*\%(macro\|endmacro\)\>"
+syn match freebasicPreProcessor "#\s*error\>"
+syn match freebasicPreProcessor "#\s*lang\>"
+syn match freebasicPreProcessor "#\s*line\>"
+syn match freebasicPreProcessor "#\s*pragma\%(\s\+reserve\)\=\>"
+syn match freebasicPreProcessor "#\s*\%(print\|dynamic\|static\)\>"
+syn keyword freebasicPreProcessor DEFINED
+
+syn keyword freebasicString LEN
+syn keyword freebasicString ASC
+" string.bi
+syn keyword freebasicString FORMAT
+syn keyword freebasicString VAL
+syn keyword freebasicString CVD CVI CVL CVS
+syn keyword freebasicString INSTR
+syn keyword freebasicString LSET RSET
+
+if s:lang == "qb"
+ syn match freebasicString "\<string\$\ze\s*("
+ syn match freebasicString "\<__wstring\ze\s*("
+ syn match freebasicString "\<space\$"
+ syn keyword freebasicString __WSPACE
+ syn match freebasicString "\<chr\$"
+ syn keyword freebasicString __WCHR
+ syn keyword freebasicString __WBIN __WHEX __WOCT __WSTR
+ syn match freebasicString "\<\%(bin\|hex\|oct\|str\)\$"
+ syn keyword freebasicString __VALLNG __VALINT __VALUINT __VALULNG
+ syn match freebasicString "\<\%(mkd\|mki\|mkl\|mks\)\$"
+ syn keyword freebasicString __MKLONGINT __MKSHORT
+ syn keyword freebasicString __CVLONGINT __CVSHORT
+ syn match freebasicString "\<\%(left\|mid\|right\|lcase\|ucase\|ltrim\|rtrim\)\$"
+ syn keyword freebasicString __TRIM
+ syn keyword freebasicString __INSTRREV
+else
+ syn match freebasicString "\<string\$\=\ze\s*("
+ syn match freebasicString "\<wstring\ze\s*("
+ syn match freebasicString "\<space\>\$\="
+ syn keyword freebasicString WSPACE
+ syn match freebasicString "\<chr\>\$\="
+ syn keyword freebasicString WCHR
+ syn keyword freebasicString WBIN WHEX WOCT WSTR
+ syn match freebasicString "\<\%(bin\|hex\|oct\|str\)\>\$\="
+ syn keyword freebasicString VALLNG VALINT VALUINT VALULNG
+ syn match freebasicString "\<\%(mkd\|mki\|mkl\|mks\)\>\$\="
+ syn match freebasicString "\<\%(mklongint\|mkshort\)\>\$\="
+ syn keyword freebasicString CVLONGINT CVSHORT
+ syn match freebasicString "\<\%(left\|mid\|right\|lcase\|ucase\|ltrim\|rtrim\)\>\$\="
+ syn match freebasicString "\<trim\>\$\="
+ syn keyword freebasicString INSTRREV
+endif
+
+syn keyword freebasicTypeCasting CDBL CINT CLNG CSNG
+if s:lang == "qb"
+ syn keyword freebasicTypeCasting __CAST __CBOOL __CBYTE __CLNGINT __CPTR __CSHORT __CSIGN __CYBTE __CUINT __CULNG
+ syn keyword freebasicTypeCasting __CULNGINT __CUNSG __CUSHORT
+else
+ syn keyword freebasicTypeCasting CAST CBOOL CBYTE CLNGINT CPTR CSHORT CSIGN CUBYTE CUINT CULNG CULNGINT CUNSG CUSHORT
+endif
+
+syn match freebasicUserInput "\<line\s\+input\>"
+syn keyword freebasicUserInput INKEY INPUT
+if s:lang == "qb"
+ syn keyword freebasicUserInput __GETJOYSTICK __GETKEY __GETMOUSE __MULTIKEY __SETMOUSE STICK STRIG
+else
+ syn keyword freebasicUserInput GETJOYSTICK GETKEY GETMOUSE MULTIKEY SETMOUSE
+endif
+"
+" Operators
+"
+" TODO: make these context sensitive to remove the overlap of common operators
+" : alpha operators should probably always be highlighted
+" -- DJK 20/11/19
+if s:lang == "qb"
+ syn match freebasicArithmeticOperator "\<\%(MOD\|__SHL\|__SHR\)\>"
+else
+ syn match freebasicArithmeticOperator "\<\%(MOD\|SHL\|SHR\)\>"
+endif
+syn match freebasicBitwiseOperator "\<\%(AND\|EQV\|IMP\|NOT\|OR\|XOR\)\>" " freebaseLogical?
+if s:lang == "qb"
+ syn match freebasicAssignmentOperator "\<\%(MOD\|AND\|EQV\|IMP\|OR\|XOR\|__SHL\|__SHR\)=\@=" " exclude trailing '='
+else
+ syn match freebasicAssignmentOperator "\<\%(MOD\|AND\|EQV\|IMP\|OR\|XOR\|SHL\|SHR\)=\@="
+endif
+syn match freebasicShortcircuitOperator "\<\%(ANDALSO\|ORELSE\)\>"
+if s:lang == "fb"
+ syn match freebasicMemoryOperator '\<\%(new\|delete\)\>'
+endif
+syn keyword freebasicPointerOperator STRPTR VARPTR
+if s:lang == "qb"
+ syn keyword freebasicPointerOperator __PROCPTR
+else
+ syn keyword freebasicPointerOperator PROCPTR
+endif
+syn match freebasicTypeOperator '\<is\>'
+syn match freebasicTypeOperator '\.' nextgroup=freebasicIdentifier skipwhite
+if s:lang == "fb"
+ syn match freebasicTypeOperator '->' nextgroup=freebasicIdentifier skipwhite
+endif
+
+if exists("freebasic_operators")
+ syn match freebasicAssignmentOperator "=>\=\|[-+&/\\*^]="
+ if s:lang == "qb"
+ syn match freebasicAssignmentOperator "\<\%(MOD\|AND\|EQV\|IMP\|OR\|XOR\|__SHL\|__SHR\)=" " include trailing '='
+ else
+ syn match freebasicAssignmentOperator "\<\%(MOD\|AND\|EQV\|IMP\|OR\|XOR\|SHL\|SHR\)="
+ endif
+ syn match freebasicArithmeticOperator "[-+&/\\*^]"
+ " syn match freebasicIndexingOperator "[[\]()]" " FIXME
+ syn match freebasicRelationalOperator "=\|<>\|<=\|<\|>=\|>"
+ syn match freebasicPreprocessorOperator '\%(^\s*\)\@<!\%(##\|#\)\|[$!]"\@='
+ syn match freebasicPointerOperator '[@*]'
+ syn match freebasicTypeOperator '\.' nextgroup=freebasicIdentifier skipwhite
+ if s:lang == "fb"
+ syn match freebasicTypeOperator '->' nextgroup=freebasicIdentifier skipwhite
+ endif
+endif
+
+syn cluster freebasicOperator contains=freebasic.*Operator
+"
+" Catch errors caused by wrong parenthesis
+"
+" syn region freebasicParen transparent start='(' end=')' contains=ALLBUT,@freebasicParenGroup
+" syn match freebasicParenError ")"
+" syn match freebasicInParen contained "[{}]"
+" syn cluster freebasicParenGroup contains=freebasicParenError,freebasicSpecial,freebasicTodo,freebasicUserCont,freebasicUserLabel,freebasicBitField
+"
+" Integer number
+"
+syn match freebasicHexError "&h\w*\>"
+syn match freebasicOctalError "&o\w*\>"
+syn match freebasicBinaryError "&b\w*\>"
+syn match freebasicHex "&h\x\+\%([%L&U]\|UL\|LL\|ULL\)\=\>"
+syn match freebasicOctal "&o\o\+\%([%L&U]\|UL\|LL\|ULL\)\=\>"
+syn match freebasicBinary "&b[10]\+\%([%L&U]\|UL\|LL\|ULL\)\=\>"
+syn match freebasicInteger "\<\d\+\%([%L&U]\|UL\|LL\|ULL\)\=\>"
+"
+" Floating point
+" See: https://www.freebasic.net/forum/viewtopic.php?t=20323
+"
+" Floating point number, with dot, optional exponent, optional suffix
+"
+syn match freebasicFloat "\<\d\+\.\d*\%([de][-+]\=\d*\)\=[f!#]\="
+"
+" Floating point number, starting with a dot, optional exponent, optional suffix
+"
+syn match freebasicFloat "\.\d\+\%([de][-+]\=\d*\)\=[f!#]\="
+"
+" Floating point number, without dot, with optional exponent, optional suffix
+"
+syn match freebasicFloat "\<\d\+\%([de][-+]\=\d*\)[f!#]\="
+"
+" Floating point number, without dot, without exponent, with suffix
+"
+syn match freebasicFloat "\<\d\+[f!#]"
+"
+" Create the clusters
+"
+syn cluster freebasicNumber contains=freebasicHex,freebasicOctal,freebasicBinary,freebasicInteger,freebasicFloat
+syn cluster freebasicNumberError contains=freebasicHexError,freebasicOctalError,freebasicBinaryError
+"
+" Booleans
+"
+if s:lang != "qb"
+ syn keyword freebasicBoolean TRUE FALSE
+endif
+"
+"
+" String and escape sequences
+"
+syn match freebasicSpecial contained "\\."
+syn match freebasicSpecial contained "\\\d\{1,3}"
+syn match freebasicSpecial contained "\\&h\x\{1,2}"
+syn match freebasicSpecial contained "\\&o\o\{1,3}"
+syn match freebasicSpecial contained "\\&b[01]\{1,8}"
+syn match freebasicSpecial contained "\\u\x\{1,4}"
+syn region freebasicString start='"' end='"' " TODO: Toggle contains on Option Escape in fblite and qb? -- DJK 20/11/19
+syn region freebasicString start='!\zs"' end='"' contains=freebasicSpecial
+syn region freebasicString start='$\zs"' end='"'
+"
+" Line labels
+"
+if s:lang =~# '\<\%(qb\|fblite\)\>'
+ syn match freebasicLineLabel "^\s*\zs\h\%(\w\|\.\)*\ze\s*:"
+else
+ syn match freebasicLineLabel "^\s*\zs\h\w*\ze\s*:"
+endif
+syn match freebasicLineNumber "^\s*\zs\d\+"
+"
+" Line continuations
+"
+" syn match freebasicLineContinuation "\<_\>" nextgroup=freebasicComment,freebasicPostLineContinuation skipwhite
+syn keyword freebasicLineContinuation _ nextgroup=freebasicComment,freebasicPostLineContinuation skipwhite
+syn match freebasicPostLineContinuation ".*" contained
+"
+"
+" Type suffixes
+if exists("freebasic_type_suffixes") && s:lang =~# '\<\%(qb\|fblite\)\>'
+ syn match freebasicTypeSuffix "\h\%(\w\|.\)*\zs[$%&!#]"
+endif
+"
+" Comments
+"
+syn keyword freebasicTodo TODO FIXME XXX NOTE contained
+syn region freebasicComment start="\<rem\>" end="$" contains=freebasicTodo,@Spell,freebasicMetacommand
+syn region freebasicComment start="'" end="$" contains=freebasicTodo,@Spell,freebasicMetacommand
+syn region freebasicDoubleComment start="''" end="$" contains=freebasicTodo,@Spell
+
+if !exists("freebasic_no_comment_fold")
+ syn region freebasicMultilineComment start="/'" end="'/" contains=freebasicTodo,@Spell,freeBasicMultilineComment fold keepend extend
+ syn region freebasicMultilineComment2 start="^\s*'.*\n\%(\s*'\)\@=" end="^\s*'.*\n\%(\s*'\)\@!" contains=freebasicComment,freebasicDoubleComment keepend fold
+else
+ syn region freebasicMultilineComment start="/'" end="'/" contains=freebasicTodo,@Spell,freeBasicMultilineComment
+endif
+
+syn case match
+
+syn sync linebreaks=1
+
+"
+" The default methods for highlighting. Can be overridden later
+"
+hi def link freebasicArrays StorageClass
+hi def link freebasicAsm Special
+hi def link freebasicBitManipulation Operator
+hi def link freebasicBoolean Boolean
+if s:lang == "fb"
+ hi def link freebasicCompilerSwitches freebasicUnsupportedError
+else
+ hi def link freebasicCompilerSwitches PreCondit
+endif
+hi def link freebasicConsole Special
+hi def link freebasicData Special
+hi def link freebasicDataTypes Type
+hi def link freebasicDateTime Type
+hi def link freebasicDebug Special
+hi def link freebasicErrorHandling Special
+hi def link freebasicFilenumber Special
+hi def link freebasicFiles Special
+hi def link freebasicFunctions Function
+hi def link freebasicGraphics Function
+hi def link freebasicHardware Special
+hi def link freebasicLoops Repeat
+hi def link freebasicMath Function
+if s:lang == "fb"
+ hi def link freebasicMetacommand freebasicUnsupportedError
+else
+ hi def link freebasicMetacommand SpecialComment
+endif
+hi def link freebasicMemory Function
+hi def link freebasicMisc Special
+hi def link freebasicModularizing Special
+hi def link freebasicMultithreading Special
+hi def link freebasicShell Special
+hi def link freebasicEnviron Special
+hi def link freebasicPointer Special
+hi def link freebasicPredefined PreProc
+hi def link freebasicPreProcessor PreProc
+hi def link freebasicProgramFlow Statement
+hi def link freebasicString String
+hi def link freebasicTypeCasting Type
+hi def link freebasicUserInput Statement
+hi def link freebasicComment Comment
+hi def link freebasicDoubleComment Comment
+hi def link freebasicMultilineComment Comment
+hi def link freebasicConditional Conditional
+hi def link freebasicError Error
+hi def link freebasicIdentifier Identifier
+hi def link freebasicInclude Include
+hi def link freebasicGenericFunction Function
+hi def link freebasicLineContinuation Special
+hi def link freebasicLineLabel LineNr
+if s:lang == "fb"
+ hi def link freebasicLineNumber freebasicUnsupportedError
+else
+ hi def link freebasicLineNumber LineNr
+endif
+hi def link freebasicMathOperator Operator
+
+hi def link freebasicHex Number
+hi def link freebasicOctal Number
+hi def link freebasicBinary Number
+hi def link freebasicInteger Number
+hi def link freebasicFloat Float
+
+hi def link freebasicHexError Error
+hi def link freebasicOctalError Error
+hi def link freebasicBinaryError Error
+
+hi def link freebasicAssignmentOperator Operator
+hi def link freebasicArithmeticOperator Operator
+hi def link freebasicIndexingOperator Operator
+hi def link freebasicRelationalOperator Operator
+hi def link freebasicBitwiseOperator Operator
+hi def link freebasicShortcircuitOperator Operator
+hi def link freebasicPreprocessorOperator Operator
+hi def link freebasicPointerOperator Operator
+if exists("freebasic_operators")
+ hi def link freebasicTypeOperator Operator
+endif
+hi def link freebasicMemoryOperator Operator
+
+hi def link freebasicSpaceError Error
+
+hi def link freebasicSpecial Special
+hi def link freebasicTodo Todo
+
+hi def link freebasicUnsupported freebasicUnsupportedError
+hi def link freebasicUnsupportedError Error
+
+unlet s:lang
+
+let b:current_syntax = "freebasic"
+
+" vim: ts=8 tw=132 fdm=marker
diff --git a/runtime/syntax/fstab.vim b/runtime/syntax/fstab.vim
new file mode 100644
index 0000000..91150bc
--- /dev/null
+++ b/runtime/syntax/fstab.vim
@@ -0,0 +1,494 @@
+" Vim syntax file
+" Language: fstab file
+" Maintainer: Radu Dineiu <radu.dineiu@gmail.com>
+" URL: https://raw.github.com/rid9/vim-fstab/master/syntax/fstab.vim
+" Last Change: 2023 Feb 19
+" Version: 1.6.3
+"
+" Credits:
+" David Necas (Yeti) <yeti@physics.muni.cz>
+" Stefano Zacchiroli <zack@debian.org>
+" Georgi Georgiev <chutz@gg3.net>
+" James Vega <jamessan@debian.org>
+" Elias Probst <mail@eliasprobst.eu>
+
+" Options:
+" let fstab_unknown_fs_errors = 1
+" highlight unknown filesystems as errors
+"
+" let fstab_unknown_device_errors = 0
+" do not highlight unknown devices as errors
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" General
+syn cluster fsGeneralCluster contains=fsComment
+syn match fsComment /\s*#.*/ contains=@Spell
+syn match fsOperator /[,=:#]/
+
+" Device
+syn cluster fsDeviceCluster contains=fsOperator,fsDeviceKeyword,fsDeviceError
+syn match fsDeviceError /\%([^a-zA-Z0-9_\/#@:\.-]\|^\w\{-}\ze\W\)/ contained
+syn keyword fsDeviceKeyword contained none proc linproc tmpfs devpts devtmpfs sysfs usbfs
+syn keyword fsDeviceKeyword contained LABEL nextgroup=fsDeviceLabel
+syn keyword fsDeviceKeyword contained UUID nextgroup=fsDeviceUUID
+syn keyword fsDeviceKeyword contained PARTLABEL nextgroup=fsDevicePARTLABEL
+syn keyword fsDeviceKeyword contained PARTUUID nextgroup=fsDevicePARTUUID
+syn keyword fsDeviceKeyword contained sshfs nextgroup=fsDeviceSshfs
+syn match fsDeviceKeyword contained /^[a-zA-Z0-9.\-]\+\ze:/
+syn match fsDeviceLabel contained /=[^ \t]\+/hs=s+1 contains=fsOperator
+syn match fsDeviceUUID contained /=[^ \t]\+/hs=s+1 contains=fsOperator
+syn match fsDevicePARTLABEL contained /=[^ \t]\+/hs=s+1 contains=fsOperator
+syn match fsDevicePARTUUID contained /=[^ \t]\+/hs=s+1 contains=fsOperator
+syn match fsDeviceSshfs contained /#[_=[:alnum:]\.\/+-]\+@[a-z0-9._-]\+\a\{2}:[^ \t]\+/hs=s+1 contains=fsOperator
+
+" Mount Point
+syn cluster fsMountPointCluster contains=fsMountPointKeyword,fsMountPointError
+syn match fsMountPointError /\%([^ \ta-zA-Z0-9_\/#@\.-]\|\s\+\zs\w\{-}\ze\s\)/ contained
+syn keyword fsMountPointKeyword contained none swap
+
+" Type
+syn cluster fsTypeCluster contains=fsTypeKeyword,fsTypeUnknown
+syn match fsTypeUnknown /\s\+\zs\w\+/ contained
+syn keyword fsTypeKeyword contained adfs ados affs anon_inodefs atfs audiofs auto autofs bdev befs bfs btrfs binfmt_misc cd9660 ceph cfs cgroup cifs coda coherent configfs cpuset cramfs debugfs devfs devpts devtmpfs dlmfs e2compr ecryptfs efivarfs efs erofs exfat ext2 ext2fs ext3 ext4 f2fs fdesc ffs filecore fuse fuseblk fusectl gfs2 hfs hfsplus hpfs hugetlbfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix mqueue msdos ncpfs nfs nfs4 nfsd nilfs2 none ntfs ntfs3 null nwfs ocfs2 omfs overlay ovlfs pipefs portal proc procfs pstore ptyfs pvfs2 qnx4 qnx6 reiserfs ramfs romfs rpc_pipefs securityfs shm smbfs spufs squashfs sockfs sshfs std subfs swap sysfs sysv tcfs tmpfs ubifs udf ufs umap umsdos union usbfs userfs v9fs vfat virtiofs vs3fs vxfs wrapfs wvfs xenfs xenix xfs zisofs zonefs
+
+" Options
+" -------
+" Options: General
+syn cluster fsOptionsCluster contains=fsOperator,fsOptionsGeneral,fsOptionsKeywords,fsTypeUnknown
+syn match fsOptionsNumber /\d\+/
+syn match fsOptionsNumberSigned /[-+]\?\d\+/
+syn match fsOptionsNumberOctal /[0-8]\+/
+syn match fsOptionsString /[a-zA-Z0-9_-]\+/
+syn keyword fsOptionsTrueFalse true false
+syn keyword fsOptionsYesNo yes no
+syn keyword fsOptionsYN y n
+syn keyword fsOptions01 0 1
+syn cluster fsOptionsCheckCluster contains=fsOptionsExt2Check,fsOptionsFatCheck
+syn keyword fsOptionsSize 512 1024 2048
+syn keyword fsOptionsGeneral async atime auto bind current defaults dev devgid devmode devmtime devuid dirsync exec force fstab kudzu loop managed mand move noatime noauto noclusterr noclusterw nodev nodevmtime nodiratime noexec nomand norelatime nosuid nosymfollow nouser owner pamconsole rbind rdonly relatime remount ro rq rw suid suiddir supermount sw sync union update user users wxallowed xx nofail failok lazytime
+syn match fsOptionsGeneral /_netdev/
+
+syn match fsOptionsKeywords contained /\<x-systemd\.\%(requires\|before\|after\|wanted-by\|required-by\|requires-mounts-for\|idle-timeout\|device-timeout\|mount-timeout\)=/ nextgroup=fsOptionsString
+syn match fsOptionsKeywords contained /\<x-systemd\.\%(device-bound\|automount\|makefs\|growfs\|rw-only\)/
+syn match fsOptionsKeywords contained /\<x-initrd\.mount/
+
+syn match fsOptionsKeywords contained /\<cache=/ nextgroup=fsOptionsCache
+syn keyword fsOptionsCache yes no none strict loose fscache mmap
+
+syn match fsOptionsKeywords contained /\<dax=/ nextgroup=fsOptionsDax
+syn keyword fsOptionsDax inode never always
+
+syn match fsOptionsKeywords contained /\<errors=/ nextgroup=fsOptionsErrors
+syn keyword fsOptionsErrors contained continue panic withdraw remount-ro recover zone-ro zone-offline repair
+
+syn match fsOptionsKeywords contained /\<\%(sec\)=/ nextgroup=fsOptionsSecurityMode
+syn keyword fsOptionsSecurityMode contained none krb5 krb5i ntlm ntlmi ntlmv2 ntlmv2i ntlmssp ntlmsspi sys lkey lkeyi lkeyp spkm spkmi spkmp
+
+" Options: adfs
+syn match fsOptionsKeywords contained /\<\%([ug]id\|o\%(wn\|th\)mask\)=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<ftsuffix=/ nextgroup=fsOptions01
+
+" Options: affs
+syn match fsOptionsKeywords contained /\<mode=/ nextgroup=fsOptionsString
+syn match fsOptionsKeywords contained /\<\%(set[ug]id\|reserved\)=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<\%(prefix\|volume\|root\)=/ nextgroup=fsOptionsString
+syn match fsOptionsKeywords contained /\<bs=/ nextgroup=fsOptionsSize
+syn keyword fsOptionsKeywords contained protect usemp verbose nofilenametruncate mufs
+
+" Options: btrfs
+syn match fsOptionsKeywords contained /\<\%(subvol\|subvolid\|subvolrootid\|device\|compress\|compress-force\|check_int_print_mask\|space_cache\)=/ nextgroup=fsOptionsString
+syn match fsOptionsKeywords contained /\<\%(max_inline\|alloc_start\|thread_pool\|metadata_ratio\|check_int_print_mask\)=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<discard=/ nextgroup=fsOptionsBtrfsDiscard
+syn keyword fsOptionsBtrfsDiscard sync async
+syn match fsOptionsKeywords contained /\<fatal_errors=/ nextgroup=fsOptionsBtrfsFatalErrors
+syn keyword fsOptionsBtrfsFatalErrors bug panic
+syn match fsOptionsKeywords contained /\<fragment=/ nextgroup=fsOptionsBtrfsFragment
+syn keyword fsOptionsBtrfsFragment data metadata all
+syn keyword fsOptionsKeywords contained degraded datasum nodatasum datacow nodatacow barrier nobarrier ssd ssd_spread nossd nossd_spread noacl treelog notreelog flushoncommit noflushoncommit space_cache nospace_cache clear_cache user_subvol_rm_allowed autodefrag noautodefrag inode_cache noinode_cache enospc_debug noenospc_debug recovery check_int check_int_data skip_balance discard nodiscard compress compress-force nologreplay rescan_uuid_tree rescue usebackuproot
+
+" Options: cd9660
+syn keyword fsOptionsKeywords contained extatt gens norrip nostrictjoilet
+
+" Options: ceph
+syn match fsOptionsKeywords contained /\<\%(mon_addr\|fsid\|rasize\|mount_timeout\|caps_max\)=/ nextgroup=fsOptionsString
+syn keyword fsOptionsKeywords contained rbytes norbytes nocrc dcache nodcache noasyncreaddir noquotadf nocopyfrom
+syn match fsOptionsKeywords contained /\<recover_session=/ nextgroup=fsOptionsCephRecoverSession
+syn keyword fsOptionsCephRecoverSession contained no clean
+
+" Options: cifs
+syn match fsOptionsKeywords contained /\<\%(user\|password\|credentials\|servernetbiosname\|servern\|netbiosname\|file_mode\|dir_mode\|ip\|domain\|prefixpath\)=/ nextgroup=fsOptionsString
+syn match fsOptionsKeywords contained /\<\%(cruid\|backupuid\|backupgid\)=/ nextgroup=fsOptionsNumber
+syn keyword fsOptionsKeywords contained forceuid forcegid guest setuids nosetuids perm noperm dynperm strictcache rwpidforward mapchars nomapchars cifsacl nocase ignorecase nobrl sfu serverino noserverino nounix fsc multiuser posixpaths noposixpaths
+
+" Options: devpts
+" -- everything already defined
+
+" Options: ecryptfs
+syn match fsOptionsKeywords contained /\<\%(ecryptfs_\%(sig\|fnek_sig\|cipher\|key_bytes\)\|key\)=/ nextgroup=fsOptionsString
+syn keyword fsOptionsKeywords contained ecryptfs_passthrough no_sig_cache ecryptfs_encrypted_view ecryptfs_xattr
+syn match fsOptionsKeywords contained /\<ecryptfs_enable_filename_crypto=/ nextgroup=fsOptionsYN
+syn match fsOptionsKeywords contained /\<verbosity=/ nextgroup=fsOptions01
+
+" Options: erofs
+syn match fsOptionsKeywords contained /\<cache_strategy=/ nextgroup=fsOptionsEroCacheStrategy
+syn keyword fsOptionsEroCacheStrategy contained disabled readahead readaround
+
+" Options: ext2
+syn match fsOptionsKeywords contained /\<check=*/ nextgroup=@fsOptionsCheckCluster
+syn match fsOptionsKeywords contained /\<\%(res[gu]id\|sb\)=/ nextgroup=fsOptionsNumber
+syn keyword fsOptionsExt2Check contained none normal strict
+syn match fsOptionsErrors contained /\<remount-ro\>/
+syn keyword fsOptionsKeywords contained acl bsddf minixdf debug grpid bsdgroups minixdf nocheck nogrpid oldalloc orlov sysvgroups nouid32 nobh user_xattr nouser_xattr
+
+" Options: ext3
+syn match fsOptionsKeywords contained /\<journal=/ nextgroup=fsOptionsExt3Journal
+syn match fsOptionsKeywords contained /\<data=/ nextgroup=fsOptionsExt3Data
+syn match fsOptionsKeywords contained /\<data_err=/ nextgroup=fsOptionsExt3DataErr
+syn match fsOptionsKeywords contained /\<commit=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<jqfmt=/ nextgroup=fsOptionsExt3Jqfmt
+syn match fsOptionsKeywords contained /\<\%(usrjquota\|grpjquota\)=/ nextgroup=fsOptionsString
+syn keyword fsOptionsExt3Journal contained update inum
+syn keyword fsOptionsExt3Data contained journal ordered writeback
+syn keyword fsOptionsExt3DataErr contained ignore abort
+syn keyword fsOptionsExt3Jqfmt contained vfsold vfsv0 vfsv1
+syn keyword fsOptionsKeywords contained noload user_xattr nouser_xattr acl
+
+" Options: ext4
+syn match fsOptionsKeywords contained /\<journal=/ nextgroup=fsOptionsExt4Journal
+syn match fsOptionsKeywords contained /\<data=/ nextgroup=fsOptionsExt4Data
+syn match fsOptionsKeywords contained /\<barrier=/ nextgroup=fsOptions01
+syn match fsOptionsKeywords contained /\<journal_dev=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<resuid=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<resgid=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<sb=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<\%(commit\|inode_readahead_blks\|stripe\|max_batch_time\|min_batch_time\|init_itable\|max_dir_size_kb\)=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<journal_ioprio=/ nextgroup=fsOptionsExt4JournalIoprio
+syn keyword fsOptionsExt4Journal contained update inum
+syn keyword fsOptionsExt4Data contained journal ordered writeback
+syn keyword fsOptionsExt4JournalIoprio contained 0 1 2 3 4 5 6 7
+syn keyword fsOptionsKeywords contained noload extents orlov oldalloc user_xattr nouser_xattr acl noacl reservation noreservation bsddf minixdf check=none nocheck debug grpid nogroupid sysvgroups bsdgroups quota noquota grpquota usrquota bh nobh journal_checksum nojournal_checksum journal_async_commit delalloc nodelalloc auto_da_alloc noauto_da_alloc noinit_itable block_validity noblock_validity dioread_lock dioread_nolock i_version nombcache prjquota
+
+" Options: fat
+syn match fsOptionsKeywords contained /\<blocksize=/ nextgroup=fsOptionsSize
+syn match fsOptionsKeywords contained /\<\%([dfu]mask\|codepage\)=/ nextgroup=fsOptionsNumberOctal
+syn match fsOptionsKeywords contained /\%(cvf_\%(format\|option\)\|iocharset\)=/ nextgroup=fsOptionsString
+syn match fsOptionsKeywords contained /\<check=/ nextgroup=@fsOptionsCheckCluster
+syn match fsOptionsKeywords contained /\<conv=*/ nextgroup=fsOptionsConv
+syn match fsOptionsKeywords contained /\<fat=/ nextgroup=fsOptionsFatType
+syn match fsOptionsKeywords contained /\<dotsOK=/ nextgroup=fsOptionsYesNo
+syn keyword fsOptionsFatCheck contained r n s relaxed normal strict
+syn keyword fsOptionsConv contained b t a binary text auto
+syn keyword fsOptionsFatType contained 12 16 32
+syn keyword fsOptionsKeywords contained quiet sys_immutable showexec dots nodots
+
+" Options: fuse
+syn match fsOptionsKeywords contained /\<\%(fd\|user_id\|group_id\|blksize\)=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<\%(rootmode\)=/ nextgroup=fsOptionsString
+
+" Options: hfs
+syn match fsOptionsKeywords contained /\<\%(creator\|type\)=/ nextgroup=fsOptionsString
+syn match fsOptionsKeywords contained /\<\%(dir\|file\|\)_umask=/ nextgroup=fsOptionsNumberOctal
+syn match fsOptionsKeywords contained /\<\%(session\|part\)=/ nextgroup=fsOptionsNumber
+
+" Options: hfsplus
+syn match fsOptionsKeywords contained /\<nls=/ nextgroup=fsOptionsString
+syn keyword fsOptionsKeywords contained decompose nodecompose
+
+" Options: f2fs
+syn match fsOptionsKeywords contained /\<background_gc=/ nextgroup=fsOptionsF2fsBackgroundGc
+syn keyword fsOptionsF2fsBackgroundGc contained on off sync
+syn match fsOptionsKeywords contained /\<active_logs=/ nextgroup=fsOptionsF2fsActiveLogs
+syn keyword fsOptionsF2fsActiveLogs contained 2 4 6
+syn match fsOptionsKeywords contained /\<alloc_mode=/ nextgroup=fsOptionsF2fsAllocMode
+syn keyword fsOptionsF2fsAllocMode contained reuse default
+syn match fsOptionsKeywords contained /\<fsync_mode=/ nextgroup=fsOptionsF2fsFsyncMode
+syn keyword fsOptionsF2fsFsyncMode contained posix strict nobarrier
+syn match fsOptionsKeywords contained /\<compress_mode=/ nextgroup=fsOptionsF2fsCompressMode
+syn keyword fsOptionsF2fsCompressMode contained fs user
+syn match fsOptionsKeywords contained /\<discard_unit=/ nextgroup=fsOptionsF2fsDiscardUnit
+syn keyword fsOptionsF2fsDiscardUnit contained block segment section
+syn match fsOptionsKeywords contained /\<memory=/ nextgroup=fsOptionsF2fsMemory
+syn keyword fsOptionsF2fsMemory contained normal low
+syn match fsOptionsKeywords contained /\<\%(inline_xattr_size\|reserve_root\|fault_injection\|fault_type\|io_bits\|compress_log_size\)=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<\%(prjjquota\|test_dummy_encryption\|checkpoint\|compress_algorithm\|compress_extension\|nocompress_extension\)=/ nextgroup=fsOptionsString
+syn keyword fsOptionsKeyWords contained gc_merge nogc_merge disable_roll_forward no_heap disable_ext_identify inline_xattr noinline_xattr inline_data noinline_data inline_dentry noinline_dentry flush_merge fastboot extent_cache noextent_cache data_flush offusrjquota offgrpjquota offprjjquota test_dummy_encryption checkpoint_merge nocheckpoint_merge compress_chksum compress_cache inlinecrypt atgc
+
+" Options: ffs
+syn keyword fsOptionsKeyWords contained noperm softdep
+
+" Options: gfs2
+syn match fsOptionsKeywords contained /\<\%(lockproto\|locktable\)=/ nextgroup=fsOptionsString
+syn match fsOptionsKeywords contained /\<\%(quota_quantum\|statfs_quantum\|statfs_percent\)=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<quota=/ nextgroup=fsOptionsGfs2Quota
+syn keyword fsOptionsGfs2Quota contained off account on
+syn keyword fsOptionsKeywords contained localcaching localflocks ignore_local_fs upgrade spectator meta
+
+" Options: hpfs
+syn match fsOptionsKeywords contained /\<case=/ nextgroup=fsOptionsHpfsCase
+syn keyword fsOptionsHpfsCase contained lower asis
+syn match fsOptionsKeywords contained /\<chkdsk=/ nextgroup=fsOptionsHpfsChkdsk
+syn keyword fsOptionsHpfsChkdsk contained no errors always
+syn match fsOptionsKeywords contained /\<eas=/ nextgroup=fsOptionsHpfsEas
+syn keyword fsOptionsHpfsEas contained no ro rw
+syn match fsOptionsKeywords contained /\<timeshift=/ nextgroup=fsOptionsNumberSigned
+
+" Options: iso9660
+syn match fsOptionsKeywords contained /\<map=/ nextgroup=fsOptionsIsoMap
+syn match fsOptionsKeywords contained /\<block=/ nextgroup=fsOptionsSize
+syn match fsOptionsKeywords contained /\<\%(session\|sbsector\|dmode\)=/ nextgroup=fsOptionsNumber
+syn keyword fsOptionsIsoMap contained n o a normal off acorn
+syn keyword fsOptionsKeywords contained norock nojoliet hide unhide cruft overriderockperm showassoc
+syn keyword fsOptionsConv contained m mtext
+
+" Options: jfs
+syn keyword fsOptionsKeywords nointegrity integrity
+
+" Options: nfs
+syn match fsOptionsKeywords contained /\<lookupcache=/ nextgroup=fsOptionsNfsLookupCache
+syn keyword fsOptionsNfsLookupCache contained all none pos positive
+syn match fsOptionsKeywords contained /\<local_lock=/ nextgroup=fsOptionsNfsLocalLock
+syn keyword fsOptionsNfsLocalLock contained all flock posix none
+syn match fsOptionsKeywords contained /\<\%(mounthost\|mountprog\|nfsprog\|namelen\|proto\|mountproto\|clientaddr\)=/ nextgroup=fsOptionsString
+syn match fsOptionsKeywords contained /\<\%(timeo\|retrans\|[rw]size\|acregmin\|acregmax\|acdirmin\|acdirmax\|actimeo\|retry\|port\|mountport\|mountvers\|namlen\|nfsvers\|vers\|minorversion\)=/ nextgroup=fsOptionsNumber
+syn keyword fsOptionsKeywords contained bg fg soft hard intr cto ac tcp udp lock nobg nofg nosoft nohard nointr noposix nocto noac notcp noudp nolock sharecache nosharecache resvport noresvport rdirplus nordirplus
+
+" Options: nilfs2
+syn match fsOptionsKeywords contained /\<order=/ nextgroup=fsOptionsNilfs2Order
+syn keyword fsOptionsNilfs2Order contained relaxed strict
+syn match fsOptionsKeywords contained /\<\%([cp]p\)=/ nextgroup=fsOptionsNumber
+syn keyword fsOptionsKeywords contained nogc
+
+" Options: ntfs
+syn match fsOptionsKeywords contained /\<mft_zone_multiplier=/ nextgroup=fsOptionsNtfsMftZoneMultiplier
+syn keyword fsOptionsNtfsMftZoneMultiplier contained 1 2 3 4
+syn match fsOptionsKeywords contained /\<\%(posix=*\|uni_xlate=\)/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<\%(sloppy\|show_sys_files\|case_sensitive\|disable_sparse\)=/ nextgroup=fsOptionsTrueFalse
+syn keyword fsOptionsKeywords contained utf8
+
+" Options: ntfs3
+syn keyword fsOptionsKeywords contained noacsrules nohidden sparse showmeta prealloc
+
+" Options: ntfs-3g
+syn match fsOptionsKeywords contained /\<\%(usermapping\|locale\|streams_interface\)=/ nextgroup=fsOptionsString
+syn keyword fsOptionsKeywords contained permissions inherit recover norecover ignore_case remove_hiberfile hide_hid_files hide_dot_files windows_names silent no_def_opts efs_raw compression nocompression no_detach
+
+" Options: ocfs2
+syn match fsOptionsKeywords contained /\<\%(resv_level\|dir_resv_level\)=/ nextgroup=fsOptionsOcfs2ResvLevel
+syn keyword fsOptionsOcfs2ResvLevel contained 0 1 2 3 4 5 6 7 8
+syn match fsOptionsKeywords contained /\<coherency=/ nextgroup=fsOptionsOcfs2Coherency
+syn keyword fsOptionsOcfs2Coherency contained full buffered
+syn match fsOptionsKeywords contained /\<\%(atime_quantum\|preferred_slot\|localalloc\)=/ nextgroup=fsOptionsNumber
+syn keyword fsOptionsKeywords contained strictatime inode64
+
+" Options: overlay
+syn match fsOptionsKeywords contained /\<redirect_dir=/ nextgroup=fsOptionsOverlayRedirectDir
+syn keyword fsOptionsOverlayRedirectDir contained on follow off nofollow
+
+" Options: proc
+syn match fsOptionsKeywords contained /\<\%(hidepid\|subset\)=/ nextgroup=fsOptionsString
+
+" Options: qnx4
+syn match fsOptionsKeywords contained /\<bitmap=/ nextgroup=fsOptionsQnx4Bitmap
+syn keyword fsOptionsQnx4Bitmap contained always lazy nonrmv
+syn keyword fsOptionsKeywords contained grown noembed overalloc unbusy
+
+" Options: qnx6
+syn match fsOptionsKeywords contained /\<hold=/ nextgroup=fsOptionsQnx6Hold
+syn keyword fsOptionsQnx6Hold contained allow root deny
+syn match fsOptionsKeywords contained /\<sync=/ nextgroup=fsOptionsQnx6Sync
+syn keyword fsOptionsQnx6Sync contained mandatory optional none
+syn match fsOptionsKeywords contained /\<snapshot=/ nextgroup=fsOptionsNumber
+syn keyword fsOptionsKeywords contained alignio
+
+" Options: reiserfs
+syn match fsOptionsKeywords contained /\<hash=/ nextgroup=fsOptionsReiserHash
+syn match fsOptionsKeywords contained /\<resize=/ nextgroup=fsOptionsNumber
+syn keyword fsOptionsReiserHash contained rupasov tea r5 detect
+syn keyword fsOptionsKeywords contained hashed_relocation noborder nolog notail no_unhashed_relocation replayonly
+
+" Options: sshfs
+syn match fsOptionsKeywords contained /\<\%(BatchMode\|ChallengeResponseAuthentication\|CheckHostIP\|ClearAllForwardings\|Compression\|EnableSSHKeysign\|ForwardAgent\|ForwardX11\|ForwardX11Trusted\|GatewayPorts\|GSSAPIAuthentication\|GSSAPIDelegateCredentials\|HashKnownHosts\|HostbasedAuthentication\|IdentitiesOnly\|NoHostAuthenticationForLocalhost\|PasswordAuthentication\|PubkeyAuthentication\|RhostsRSAAuthentication\|RSAAuthentication\|TCPKeepAlive\|UsePrivilegedPort\)=/ nextgroup=fsOptionsYesNo
+syn match fsOptionsKeywords contained /\<\%(ControlMaster\|StrictHostKeyChecking\|VerifyHostKeyDNS\)=/ nextgroup=fsOptionsSshYesNoAsk
+syn match fsOptionsKeywords contained /\<\%(AddressFamily\|BindAddress\|Cipher\|Ciphers\|ControlPath\|DynamicForward\|EscapeChar\|GlobalKnownHostsFile\|HostKeyAlgorithms\|HostKeyAlias\|HostName\|IdentityFile\|KbdInteractiveDevices\|LocalForward\|LogLevel\|MACs\|PreferredAuthentications\|Protocol\|ProxyCommand\|RemoteForward\|RhostsAuthentication\|SendEnv\|SmartcardDevice\|User\|UserKnownHostsFile\|XAuthLocation\|comment\|workaround\|idmap\|ssh_command\|sftp_server\|fsname\)=/ nextgroup=fsOptionsString
+syn match fsOptionsKeywords contained /\<\%(CompressionLevel\|ConnectionAttempts\|ConnectTimeout\|NumberOfPasswordPrompts\|Port\|ServerAliveCountMax\|ServerAliveInterval\|cache_timeout\|cache_X_timeout\|ssh_protocol\|directport\|max_read\|umask\|uid\|gid\|entry_timeout\|negative_timeout\|attr_timeout\)=/ nextgroup=fsOptionsNumber
+syn keyword fsOptionsKeywords contained reconnect sshfs_sync no_readahead sshfs_debug transform_symlinks allow_other allow_root nonempty default_permissions large_read hard_remove use_ino readdir_ino direct_io kernel_cache
+syn keyword fsOptionsSshYesNoAsk contained yes no ask
+
+" Options: subfs
+syn match fsOptionsKeywords contained /\<fs=/ nextgroup=fsOptionsString
+syn keyword fsOptionsKeywords contained procuid
+
+" Options: swap
+syn match fsOptionsKeywords contained /\<pri=/ nextgroup=fsOptionsNumber
+
+" Options: ubifs
+syn match fsOptionsKeywords contained /\<\%(compr\|auth_key\|auth_hash_name\)=/ nextgroup=fsOptionsString
+syn keyword fsOptionsKeywords contained bulk_read no_bulk_read chk_data_crc no_chk_data_crc
+
+" Options: tmpfs
+syn match fsOptionsKeywords contained /\<huge=/ nextgroup=fsOptionsTmpfsHuge
+syn keyword fsOptionsTmpfsHuge contained never always within_size advise deny force
+syn match fsOptionsKeywords contained /\<\%(size\|mpol\)=/ nextgroup=fsOptionsString
+syn match fsOptionsKeywords contained /\<nr_\%(blocks\|inodes\)=/ nextgroup=fsOptionsNumber
+
+" Options: udf
+syn match fsOptionsKeywords contained /\<\%(anchor\|partition\|lastblock\|fileset\|rootdir\)=/ nextgroup=fsOptionsString
+syn keyword fsOptionsKeywords contained unhide undelete strict nostrict novrs adinicb noadinicb shortad longad
+
+" Options: ufs
+syn match fsOptionsKeywords contained /\<ufstype=/ nextgroup=fsOptionsUfsType
+syn match fsOptionsKeywords contained /\<onerror=/ nextgroup=fsOptionsUfsError
+syn keyword fsOptionsUfsType contained old hp 44bsd sun sunx86 nextstep openstep
+syn match fsOptionsUfsType contained /\<nextstep-cd\>/
+syn keyword fsOptionsUfsError contained panic lock umount repair
+
+" Options: usbfs
+syn match fsOptionsKeywords contained /\<\%(dev\|bus\|list\)\%(id\|gid\)=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<\%(dev\|bus\|list\)mode=/ nextgroup=fsOptionsNumberOctal
+
+" Options: v9fs
+syn match fsOptionsKeywords contained /\<\%(trans\)=/ nextgroup=fsOptionsV9Trans
+syn keyword fsOptionsV9Trans unix tcp fd virtio rdma
+syn match fsOptionsKeywords contained /\<debug=/ nextgroup=fsOptionsV9Debug
+syn keyword fsOptionsV9Debug 0x01 0x02 0x04 0x08 0x10 0x20 0x40 0x80 0x100 0x200 0x400 0x800
+syn match fsOptionsKeywords contained /\<version=/ nextgroup=fsOptionsV9Version
+syn keyword fsOptionsV9Version 9p2000 9p2000.u 9p2000.L
+syn match fsOptionsKeywords contained /\<\%([ua]name\|[rw]fdno\|access\)=/ nextgroup=fsOptionsString
+syn match fsOptionsKeywords contained /\<msize=/ nextgroup=fsOptionsNumber
+syn keyword fsOptionsKeywords contained noextend dfltuid dfltgid afid nodevmap cachetag
+
+" Options: vfat
+syn match fsOptionsKeywords contained /\<shortname=/ nextgroup=fsOptionsVfatShortname
+syn keyword fsOptionsVfatShortname contained lower win95 winnt mixed
+syn match fsOptionsKeywords contained /\<nfs=/ nextgroup=fsOptionsVfatNfs
+syn keyword fsOptionsVfatNfs contained stale_rw nostale_ro
+syn match fsOptionsKeywords contained /\<\%(tz\|dos1xfloppy\)=/ nextgroup=fsOptionsString
+syn match fsOptionsKeywords contained /\<\%(allow_utime\|codepage\)=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<time_offset=/ nextgroup=fsOptionsNumberSigned
+syn keyword fsOptionsKeywords contained nonumtail posix utf8 usefree flush rodir
+
+" Options: xfs
+syn match fsOptionsKeywords contained /\<logbufs=/ nextgroup=fsOptionsXfsLogBufs
+syn keyword fsOptionsXfsLogBufs contained 2 3 4 5 6 7 8
+syn match fsOptionsKeywords contained /\%(allocsize\|biosize\|logbsize\|logdev\|rtdev\|sunit\|swidth\)=/ nextgroup=fsOptionsString
+syn keyword fsOptionsKeywords contained dmapi xdsm noalign noatime noquota norecovery osyncisdsync quota usrquota uqnoenforce grpquota gqnoenforce attr2 noattr2 filestreams ikeep noikeep inode32 inode64 largeio nolargeio nouuid uquota qnoenforce gquota pquota pqnoenforce swalloc wsync
+
+" Frequency / Pass No.
+syn cluster fsFreqPassCluster contains=fsFreqPassNumber,fsFreqPassError
+syn match fsFreqPassError /\s\+\zs\%(\D.*\|\S.*\|\d\+\s\+[^012]\)\ze/ contained
+syn match fsFreqPassNumber /\d\+\s\+[012]\s*/ contained
+
+" Groups
+syn match fsDevice /^\s*\zs.\{-1,}\s/me=e-1 nextgroup=fsMountPoint contains=@fsDeviceCluster,@fsGeneralCluster
+syn match fsMountPoint /\s\+.\{-}\s/me=e-1 nextgroup=fsType contains=@fsMountPointCluster,@fsGeneralCluster contained
+syn match fsType /\s\+.\{-}\s/me=e-1 nextgroup=fsOptions contains=@fsTypeCluster,@fsGeneralCluster contained
+syn match fsOptions /\s\+.\{-}\%(\s\|$\)/ nextgroup=fsFreqPass contains=@fsOptionsCluster,@fsGeneralCluster contained
+syn match fsFreqPass /\s\+.\{-}$/ contains=@fsFreqPassCluster,@fsGeneralCluster contained
+
+" Whole line comments
+syn match fsCommentLine /^#.*$/ contains=@Spell
+
+hi def link fsOperator Operator
+hi def link fsComment Comment
+hi def link fsCommentLine Comment
+
+hi def link fsTypeKeyword Type
+hi def link fsDeviceKeyword Identifier
+hi def link fsDeviceLabel String
+hi def link fsDeviceUUID String
+hi def link fsDevicePARTLABEL String
+hi def link fsDevicePARTUUID String
+hi def link fsDeviceSshfs String
+hi def link fsFreqPassNumber Number
+
+if exists('fstab_unknown_fs_errors') && fstab_unknown_fs_errors == 1
+ hi def link fsTypeUnknown Error
+endif
+
+if !exists('fstab_unknown_device_errors') || fstab_unknown_device_errors == 1
+ hi def link fsDeviceError Error
+endif
+
+hi def link fsMountPointError Error
+hi def link fsMountPointKeyword Keyword
+hi def link fsFreqPassError Error
+
+hi def link fsOptionsBtrfsDiscard String
+hi def link fsOptionsBtrfsFatalErrors String
+hi def link fsOptionsBtrfsFragment String
+hi def link fsOptionsCache String
+hi def link fsOptionsCephRecoverSession String
+hi def link fsOptionsConv String
+hi def link fsOptionsDax String
+hi def link fsOptionsEroCacheStrategy String
+hi def link fsOptionsErrors String
+hi def link fsOptionsExt2Check String
+hi def link fsOptionsExt3Data String
+hi def link fsOptionsExt3DataErr String
+hi def link fsOptionsExt3Journal String
+hi def link fsOptionsExt3Jqfmt String
+hi def link fsOptionsExt4Data String
+hi def link fsOptionsExt4Journal String
+hi def link fsOptionsExt4JournalIoprio Number
+hi def link fsOptionsF2fsActiveLogs Number
+hi def link fsOptionsF2fsAllocMode String
+hi def link fsOptionsF2fsBackgroundGc String
+hi def link fsOptionsF2fsCompressMode String
+hi def link fsOptionsF2fsDiscardUnit String
+hi def link fsOptionsF2fsFsyncMode String
+hi def link fsOptionsF2fsMemory String
+hi def link fsOptionsFatCheck String
+hi def link fsOptionsFatType Number
+hi def link fsOptionsGeneral Type
+hi def link fsOptionsGfs2Quota String
+hi def link fsOptionsHpfsCase String
+hi def link fsOptionsHpfsChkdsk String
+hi def link fsOptionsHpfsEas String
+hi def link fsOptionsIsoMap String
+hi def link fsOptionsKeywords Keyword
+hi def link fsOptionsNfsLocalLock String
+hi def link fsOptionsNfsLookupCache String
+hi def link fsOptionsNilfs2Order String
+hi def link fsOptionsNtfsMftZoneMultiplier Number
+hi def link fsOptionsNumber Number
+hi def link fsOptionsNumberOctal Number
+hi def link fsOptionsNumberSigned Number
+hi def link fsOptionsOcfs2Coherency String
+hi def link fsOptionsOcfs2ResvLevel Number
+hi def link fsOptionsOverlayRedirectDir String
+hi def link fsOptionsQnx4Bitmap String
+hi def link fsOptionsQnx6Hold String
+hi def link fsOptionsQnx6Sync String
+hi def link fsOptionsReiserHash String
+hi def link fsOptionsSecurityMode String
+hi def link fsOptionsSize Number
+hi def link fsOptionsSshYesNoAsk String
+hi def link fsOptionsString String
+hi def link fsOptionsTmpfsHuge String
+hi def link fsOptionsUfsError String
+hi def link fsOptionsUfsType String
+hi def link fsOptionsV9Debug String
+hi def link fsOptionsV9Trans String
+hi def link fsOptionsV9Version String
+hi def link fsOptionsVfatNfs String
+hi def link fsOptionsVfatShortname String
+hi def link fsOptionsXfsLogBufs Number
+
+hi def link fsOptionsTrueFalse Boolean
+hi def link fsOptionsYesNo String
+hi def link fsOptionsYN String
+hi def link fsOptions01 Number
+
+let b:current_syntax = "fstab"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 noet ft=vim
diff --git a/runtime/syntax/fvwm.vim b/runtime/syntax/fvwm.vim
new file mode 100644
index 0000000..2f96bab
--- /dev/null
+++ b/runtime/syntax/fvwm.vim
@@ -0,0 +1,642 @@
+" Vim syntax file for Fvwm-2.5.22
+" Language: Fvwm{1,2} configuration file
+" Maintainer: Gautam Iyer <gi1242@users.sourceforge.net>
+" Previous Maintainer: Haakon Riiser <hakonrk@fys.uio.no>
+" Last Change: Sat 29 Sep 2007 11:08:34 AM PDT
+"
+" Thanks to David Necas (Yeti) for adding Fvwm 2.4 support.
+"
+" 2006-05-09 gi1242: Rewrote fvwm2 syntax completely. Also since fvwm1 is now
+" mostly obsolete, made the syntax file pick fvwm2 syntax by default.
+
+if exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+" Fvwm configuration files are case insensitive
+syn case ignore
+
+" Identifiers in Fvwm can contain most characters, so we only
+" include the most common ones here.
+setlocal iskeyword=_,-,+,.,a-z,A-Z,48-57
+
+" Syntax items common to fvwm1 and fvwm2 config files
+syn cluster fvwmConstants contains=fvwmEnvVar,fvwmNumber
+syn match fvwmEnvVar "\$\w\+"
+syn match fvwmNumber '\v<(\d+|0x[0-9a-f]+)>'
+
+syn match fvwmModConf nextgroup=fvwmModArg "\v^\s*\*\a+"
+syn region fvwmModArg contained contains=fvwmString,fvwmRGBValue
+ \ start='.' skip='\\$' end='$'
+
+syn region fvwmString contains=fvwmBackslash start='"'
+ \ matchgroup=fvwmBackslash skip='\v\\"' end='"'
+syn region fvwmString contains=fvwmBackslash start='`'
+ \ matchgroup=fvwmBackslash skip='\v\\`' end='`'
+syn region fvwmString contains=fvwmBackslash start="'"
+ \ matchgroup=fvwmBackslash skip="\v\\'" end="'"
+syn match fvwmBackslash contained '\\[^"'`]'
+
+syn match fvwmRGBValue "#\x\{3}"
+syn match fvwmRGBValue "#\x\{6}"
+syn match fvwmRGBValue "#\x\{9}"
+syn match fvwmRGBValue "#\x\{12}"
+syn match fvwmRGBValue "rgb:\x\{1,4}/\x\{1,4}/\x\{1,4}"
+
+syn region fvwmComment contains=@Spell
+ \ start='^\s*#\s' skip='\\$' end='$'
+syn region fvwmComment start="\v^\s*#(\S|$)" skip='\\$' end='$'
+
+if (exists("b:fvwm_version") && b:fvwm_version == 1)
+ \ || (exists("use_fvwm_1") && use_fvwm_1)
+
+ "
+ " Syntax highlighting for Fvwm1 files.
+ "
+
+ " Moved from common syntax items
+ syn match fvwmModule "\<Module\s\+\w\+"he=s+6
+ syn keyword fvwmExec Exec
+ syn match fvwmPath "\<IconPath\s.*$"lc=8 contains=fvwmEnvVar
+ syn match fvwmPath "\<ModulePath\s.*$"lc=10 contains=fvwmEnvVar
+ syn match fvwmPath "\<PixmapPath\s.*$"lc=10 contains=fvwmEnvVar
+ syn match fvwmKey "\<Key\s\+\w\+"he=s+3
+
+ " fvwm1 specific items
+ syn match fvwmEnvVar "\$(\w\+)"
+ syn match fvwmWhitespace contained "\s\+"
+ syn region fvwmStyle oneline keepend
+ \ contains=fvwmString,fvwmKeyword,fvwmWhiteSpace
+ \ matchgroup=fvwmFunction
+ \ start="^\s*Style\>"hs=e-5 end="$"
+
+ syn keyword fvwmFunction AppsBackingStore AutoRaise BackingStore Beep
+ \ BoundaryWidth ButtonStyle CenterOnCirculate
+ \ CirculateDown CirculateHit CirculateSkip
+ \ CirculateSkipIcons CirculateUp ClickTime
+ \ ClickToFocus Close Cursor CursorMove
+ \ DecorateTransients Delete Desk DeskTopScale
+ \ DeskTopSize Destroy DontMoveOff
+ \ EdgeResistance EdgeScroll EndFunction
+ \ EndMenu EndPopup Focus Font Function
+ \ GotoPage HiBackColor HiForeColor Icon
+ \ IconBox IconFont Iconify IconPath Key
+ \ Lenience Lower Maximize MenuBackColor
+ \ MenuForeColor MenuStippleColor Module
+ \ ModulePath Mouse Move MWMBorders MWMButtons
+ \ MWMDecorHints MWMFunctionHints
+ \ MWMHintOverride MWMMenus NoBorder
+ \ NoBoundaryWidth Nop NoPPosition NoTitle
+ \ OpaqueMove OpaqueResize Pager PagerBackColor
+ \ PagerFont PagerForeColor PagingDefault
+ \ PixmapPath Popup Quit Raise RaiseLower
+ \ RandomPlacement Refresh Resize Restart
+ \ SaveUnders Scroll SloppyFocus SmartPlacement
+ \ StartsOnDesk StaysOnTop StdBackColor
+ \ StdForeColor Stick Sticky StickyBackColor
+ \ StickyForeColor StickyIcons
+ \ StubbornIconPlacement StubbornIcons
+ \ StubbornPlacement SuppressIcons Title
+ \ TogglePage Wait Warp WindowFont WindowList
+ \ WindowListSkip WindowsDesk WindowShade
+ \ XORvalue
+
+ " These keywords are only used after the "Style" command. To avoid
+ " name collision with several commands, they are contained.
+ syn keyword fvwmKeyword contained
+ \ BackColor BorderWidth BoundaryWidth Button
+ \ CirculateHit CirculateSkip Color DoubleClick
+ \ ForeColor Handles HandleWidth Icon IconTitle
+ \ NoBorder NoBoundaryWidth NoButton NoHandles
+ \ NoIcon NoIconTitle NoTitle Slippery
+ \ StartIconic StartNormal StartsAnyWhere
+ \ StartsOnDesk StaysOnTop StaysPut Sticky
+ \ Title WindowListHit WindowListSkip
+
+" elseif (exists("b:fvwm_version") && b:fvwm_version == 2)
+" \ || (exists("use_fvwm_2") && use_fvwm_2)
+else
+
+ "
+ " Syntax highlighting for fvwm2 files.
+ "
+ syn match fvwmEnvVar "\${\w\+}"
+ syn match fvwmEnvVar "\$\[[^]]\+\]"
+ syn match fvwmEnvVar "\$[$0-9*]"
+
+ syn match fvwmDef contains=fvwmMenuString,fvwmWhitespace
+ \ '^\s*+\s*".\{-}"'
+ syn region fvwmMenuString contains=fvwmIcon,fvwmShortcutKey
+ \ start='^\s*+\s*\zs"' skip='\v\\\\|\\\"' end='"'
+ syn region fvwmIcon contained start='\v\%\%@!' end='%'
+ syn match fvwmShortcutKey contained "&."
+
+ syn keyword fvwmModuleName FvwmAnimate FvwmAudio FvwmAuto FvwmBacker
+ \ FvwmBanner FvwmButtons FvwmCascade
+ \ FvwmCommandS FvwmConsole FvwmConsoleC
+ \ FvwmCpp FvwmDebug FvwmDragWell FvwmEvent
+ \ FvwmForm FvwmGtkDebug FvwmIconBox
+ \ FvwmIconMan FvwmIdent FvwmM4 FvwmPager
+ \ FvwmPerl FvwmProxy FvwmRearrange FvwmSave
+ \ FvwmSaveDesk FvwmScript FvwmScroll FvwmTabs
+ \ FvwmTalk FvwmTaskBar FvwmTheme FvwmTile
+ \ FvwmWharf FvwmWindowMenu FvwmWinList
+
+ " Obsolete fvwmModuleName: FvwmTheme
+
+ syn keyword fvwmKeyword AddToMenu ChangeMenuStyle CopyMenuStyle
+ \ DestroyMenu DestroyMenuStyle Menu
+ \ Popup TearMenuOff Title BugOpts BusyCursor
+ \ ClickTime ColorLimit ColormapFocus
+ \ DefaultColors DefaultColorset DefaultFont
+ \ DefaultIcon DefaultLayers Deschedule Emulate
+ \ EscapeFunc FakeClick FakeKeypress GlobalOpts
+ \ HilightColor HilightColorset IconFont
+ \ PrintInfo Repeat Schedule State WindowFont
+ \ XSync XSynchronize AnimatedMove
+ \ HideGeometryWindow Layer Lower Move
+ \ MoveToDesk MoveThreshold MoveToPage
+ \ MoveToScreen OpaqueMoveSize PlaceAgain Raise
+ \ RaiseLower ResizeMaximize ResizeMove
+ \ ResizeMoveMaximize RestackTransients
+ \ SetAnimation SnapAttraction SnapGrid
+ \ WindowsDesk XorPixmap XorValue CursorMove
+ \ FlipFocus Focus WarpToWindow Close Delete
+ \ Destroy Iconify Recapture RecaptureWindow
+ \ Refresh RefreshWindow Stick StickAcrossPages
+ \ StickAcrossDesks WindowShade
+ \ WindowShadeAnimate IgnoreModifiers
+ \ EdgeCommand EdgeLeaveCommand GnomeButton
+ \ Stroke StrokeFunc FocusStyle DestroyStyle
+ \ DestroyWindowStyle UpdateStyles AddToDecor
+ \ BorderStyle ChangeDecor DestroyDecor
+ \ UpdateDecor DesktopName DeskTopSize
+ \ EdgeResistance EdgeScroll EdgeThickness
+ \ EwmhBaseStruts EWMHNumberOfDesktops
+ \ GotoDeskAndPage GotoPage Scroll Xinerama
+ \ XineramaPrimaryScreen XineramaSls
+ \ XineramaSlsSize XineramaSlsScreens AddToFunc
+ \ Beep DestroyFunc Echo Exec ExecUseShell
+ \ Function Nop PipeRead Read SetEnv Silent
+ \ UnsetEnv Wait DestroyModuleConfig KillModule
+ \ Module ModuleListenOnly ModuleSynchronous
+ \ ModuleTimeout SendToModule Quit QuitScreen
+ \ QuitSession Restart SaveSession
+ \ SaveQuitSession KeepRc NoWindow Break
+ \ CleanupColorsets EchoFuncDefinition
+
+ " Conditional commands
+ syn keyword fvwmKeyword nextgroup=fvwmCondition skipwhite
+ \ All Any Current Next None Pick PointerWindow
+ \ Prev ThisWindow
+ syn keyword fvwmKeyword nextgroup=fvwmDirection skipwhite
+ \ Direction
+ syn keyword fvwmDirection contained nextgroup=fvwmDirection skipwhite
+ \ FromPointer
+ syn keyword fvwmDirection contained nextgroup=fvwmCondition skipwhite
+ \ North Northeast East Southeast South
+ \ Southwest West Northwest Center
+ syn region fvwmCondition contained contains=fvwmCondNames,fvwmString
+ \ matchgroup=fvwmKeyword start='(' skip=','
+ \ end=')'
+ syn keyword fvwmCondNames contained
+ \ AcceptsFocus AnyScreen CirculateHit
+ \ CirculateHitIcon CirculateHitShaded Closable
+ \ CurrentDesk CurrentGlobalPage
+ \ CurrentGlobalPageAnyDesk CurrentPage
+ \ CurrentPageAnyDesk CurrentScreen FixedSize
+ \ Focused HasHandles HasPointer Iconic
+ \ Iconifiable Maximizable Maximized
+ \ Overlapped PlacedByButton PlacedByButton3
+ \ PlacedByFvwm Raised Shaded Sticky
+ \ StickyAcrossDesks StickyAcrossPages
+ \ Transient Visible StickyIcon
+ \ StickyAcrossPagesIcon StickyAcrossDesksIcon
+
+ syn keyword fvwmCondNames contained skipwhite nextgroup=@fvwmConstants
+ \ State Layer
+
+ " Test
+ syn keyword fvwmKeyword nextgroup=fvwmTCond skipwhite
+ \ Test
+ syn region fvwmTCond contained contains=fvwmTCNames,fvwmString
+ \ matchgroup=fvwmKeyword start='(' end=')'
+ syn keyword fvwmTCNames contained
+ \ Version EnvIsSet EnvMatch EdgeHasPointer
+ \ EdgeIsActive Start Init Restart Exit Quit
+ \ ToRestart True False F R W X I
+
+ " TestRc
+ syn keyword fvwmKeyword nextgroup=fvwmTRCond skipwhite
+ \ TestRc
+ syn region fvwmTRCond contained contains=fvwmTRNames,fvwmNumber
+ \ matchgroup=fvwmKeyword start='(' end=')'
+ syn keyword fvwmTRNames contained NoMatch Match Error Break
+
+ " Colorsets
+ syn keyword fvwmKeyword nextgroup=fvwmCSArgs skipwhite
+ \ ColorSet
+ syn region fvwmCSArgs contained transparent contains=fvwmCSNames,@fvwmConstants,fvwmString,fvwmRGBValue,fvwmGradient
+ \ start='.' skip='\\$' end='$'
+ syn keyword fvwmCSNames contained
+ \ fg Fore Foreground bg Back Background hi
+ \ Hilite Hilight sh Shade Shadow fgsh Pixmap
+ \ TiledPixmap AspectPixmap RootTransparent
+ \ Shape TiledShape AspectShape Tint fgTint
+ \ bgTint Alpha fgAlpha Dither IconTint
+ \ IconAlpha NoShape Plain Translucent
+ syn match fvwmCSNames contained '\v<Transparent>'
+ syn match fvwmGradient contained '\v<[HVDBSCRY]Gradient>'
+
+ " Styles
+ syn keyword fvwmKeyword nextgroup=fvwmStyleArgs skipwhite
+ \ Style WindowStyle
+ syn region fvwmStyleArgs contained transparent contains=fvwmStyleNames,@fvwmConstants,fvwmString,fvwmRGBValue
+ \ start='.' skip='\\$' end='$'
+ syn keyword fvwmStyleNames contained
+ \ BorderWidth HandleWidth NoIcon Icon MiniIcon
+ \ IconBox IconGrid IconFill IconSize NoTitle
+ \ Title TitleAtBottom TitleAtLeft TitleAtRight
+ \ TitleAtTop LeftTitleRotatedCW
+ \ LeftTitleRotatedCCW RightTitleRotatedCCW
+ \ RightTitleRotatedCW TopTitleRotated
+ \ TopTitleNotRotated BottomTitleRotated
+ \ BottomTitleNotRotated UseTitleDecorRotation
+ \ StippledTitle StippledTitleOff
+ \ IndexedWindowName ExactWindowName
+ \ IndexedIconName ExactIconName Borders
+ \ NoHandles Handles WindowListSkip
+ \ WindowListHit CirculateSkip CirculateHit
+ \ CirculateSkipShaded CirculateHitShaded Layer
+ \ StaysOnTop StaysOnBottom StaysPut Sticky
+ \ Slippery StickyAcrossPages StickyAcrossDesks
+ \ StartIconic StartNormal Color ForeColor
+ \ BackColor Colorset HilightFore HilightBack
+ \ HilightColorset BorderColorset
+ \ HilightBorderColorset IconTitleColorset
+ \ HilightIconTitleColorset
+ \ IconBackgroundColorset IconTitleRelief
+ \ IconBackgroundRelief IconBackgroundPadding
+ \ Font IconFont StartsOnDesk StartsOnPage
+ \ StartsAnyWhere StartsOnScreen
+ \ ManualPlacementHonorsStartsOnPage
+ \ ManualPlacementIgnoresStartsOnPage
+ \ CaptureHonorsStartsOnPage
+ \ CaptureIgnoresStartsOnPage
+ \ RecaptureHonorsStartsOnPage
+ \ RecaptureIgnoresStartsOnPage
+ \ StartsOnPageIncludesTransients
+ \ StartsOnPageIgnoresTransients IconTitle
+ \ NoIconTitle MwmButtons FvwmButtons MwmBorder
+ \ FvwmBorder MwmDecor NoDecorHint MwmFunctions
+ \ NoFuncHint HintOverride NoOverride NoButton
+ \ Button ResizeHintOverride NoResizeOverride
+ \ OLDecor NoOLDecor GNOMEUseHints
+ \ GNOMEIgnoreHints StickyIcon SlipperyIcon
+ \ StickyAcrossPagesIcon StickyAcrossDesksIcon
+ \ ManualPlacement CascadePlacement
+ \ MinOverlapPlacement
+ \ MinOverlapPercentPlacement
+ \ TileManualPlacement TileCascadePlacement
+ \ MinOverlapPlacementPenalties
+ \ MinOverlapPercentPlacementPenalties
+ \ DecorateTransient NakedTransient
+ \ DontRaiseTransient RaiseTransient
+ \ DontLowerTransient LowerTransient
+ \ DontStackTransientParent
+ \ StackTransientParent SkipMapping ShowMapping
+ \ ScatterWindowGroups KeepWindowGroupsOnDesk
+ \ UseDecor UseStyle NoPPosition UsePPosition
+ \ NoUSPosition UseUSPosition
+ \ NoTransientPPosition UseTransientPPosition
+ \ NoTransientUSPosition UseTransientUSPosition
+ \ NoIconPosition UseIconPosition Lenience
+ \ NoLenience ClickToFocus SloppyFocus
+ \ MouseFocus FocusFollowsMouse NeverFocus
+ \ ClickToFocusPassesClickOff
+ \ ClickToFocusPassesClick
+ \ ClickToFocusRaisesOff ClickToFocusRaises
+ \ MouseFocusClickRaises
+ \ MouseFocusClickRaisesOff GrabFocus
+ \ GrabFocusOff GrabFocusTransientOff
+ \ GrabFocusTransient FPFocusClickButtons
+ \ FPFocusClickModifiers
+ \ FPSortWindowlistByFocus FPClickRaisesFocused
+ \ FPClickDecorRaisesFocused
+ \ FPClickIconRaisesFocused
+ \ FPClickRaisesUnfocused
+ \ FPClickDecorRaisesUnfocused
+ \ FPClickIconRaisesUnfocused FPClickToFocus
+ \ FPClickDecorToFocus FPClickIconToFocus
+ \ FPEnterToFocus FPLeaveToUnfocus
+ \ FPFocusByProgram FPFocusByFunction
+ \ FPFocusByFunctionWarpPointer FPLenient
+ \ FPPassFocusClick FPPassRaiseClick
+ \ FPIgnoreFocusClickMotion
+ \ FPIgnoreRaiseClickMotion
+ \ FPAllowFocusClickFunction
+ \ FPAllowRaiseClickFunction FPGrabFocus
+ \ FPGrabFocusTransient FPOverrideGrabFocus
+ \ FPReleaseFocus FPReleaseFocusTransient
+ \ FPOverrideReleaseFocus StartsLowered
+ \ StartsRaised IgnoreRestack AllowRestack
+ \ FixedPosition VariablePosition
+ \ FixedUSPosition VariableUSPosition
+ \ FixedPPosition VariablePPosition FixedSize
+ \ VariableSize FixedUSSize VariableUSSize
+ \ FixedPSize VariablePSize Closable
+ \ Iconifiable Maximizable
+ \ AllowMaximizeFixedSize IconOverride
+ \ NoIconOverride NoActiveIconOverride
+ \ DepressableBorder FirmBorder MaxWindowSize
+ \ IconifyWindowGroups IconifyWindowGroupsOff
+ \ ResizeOpaque ResizeOutline BackingStore
+ \ BackingStoreOff BackingStoreWindowDefault
+ \ Opacity ParentalRelativity SaveUnder
+ \ SaveUnderOff WindowShadeShrinks
+ \ WindowShadeScrolls WindowShadeSteps
+ \ WindowShadeAlwaysLazy WindowShadeBusy
+ \ WindowShadeLazy EWMHDonateIcon
+ \ EWMHDontDonateIcon EWMHDonateMiniIcon
+ \ EWMHDontDonateMiniIcon EWMHMiniIconOverride
+ \ EWMHNoMiniIconOverride
+ \ EWMHUseStackingOrderHints
+ \ EWMHIgnoreStackingOrderHints
+ \ EWMHIgnoreStateHints EWMHUseStateHints
+ \ EWMHIgnoreStrutHints EWMHIgnoreWindowType
+ \ EWMHUseStrutHints
+ \ EWMHMaximizeIgnoreWorkingArea
+ \ EWMHMaximizeUseWorkingArea
+ \ EWMHMaximizeUseDynamicWorkingArea
+ \ EWMHPlacementIgnoreWorkingArea
+ \ EWMHPlacementUseWorkingArea
+ \ EWMHPlacementUseDynamicWorkingArea
+ \ MoveByProgramMethod Unmanaged State
+ \ StippledIconTitle StickyStippledTitle
+ \ StickyStippledIconTitle
+ \ PositionPlacement
+ \ UnderMousePlacementHonorsStartsOnPage
+ \ UnderMousePlacementIgnoresStartsOnPage
+ \ MinOverlapPlacementPenalties
+ \ MinOverlapPercentPlacementPenalties
+ \ MinWindowSize StartShaded
+
+ " Cursor styles
+ syn keyword fvwmKeyword nextgroup=fvwmCursorStyle skipwhite
+ \ CursorStyle
+ syn case match
+ syn keyword fvwmCursorStyle contained
+ \ POSITION TITLE DEFAULT SYS MOVE RESIZE WAIT
+ \ MENU SELECT DESTROY TOP RIGHT BOTTOM LEFT
+ \ TOP_LEFT TOP_RIGHT BOTTOM_LEFT BOTTOM_RIGHT
+ \ TOP_EDGE RIGHT_EDGE BOTTOM_EDGE LEFT_EDGE
+ \ ROOT STROKE
+ syn case ignore
+
+ " Menu style
+ syn keyword fvwmKeyword nextgroup=fvwmMStyleArgs skipwhite
+ \ MenuStyle
+ syn region fvwmMStyleArgs contained transparent contains=fvwmMStyleNames,@fvwmConstants,fvwmString,fvwmGradient,fvwmRGBValue
+ \ start='.' skip='\\$' end='$'
+ syn keyword fvwmMStyleNames contained
+ \ Fvwm Mwm Win BorderWidth Foreground
+ \ Background Greyed HilightBack HilightBackOff
+ \ ActiveFore ActiveForeOff MenuColorset
+ \ ActiveColorset GreyedColorset Hilight3DThick
+ \ Hilight3DThin Hilight3DOff
+ \ Hilight3DThickness Animation AnimationOff
+ \ Font MenuFace PopupDelay PopupOffset
+ \ TitleWarp TitleWarpOff TitleUnderlines0
+ \ TitleUnderlines1 TitleUnderlines2
+ \ SeparatorsLong SeparatorsShort
+ \ TrianglesSolid TrianglesRelief
+ \ PopupImmediately PopupDelayed
+ \ PopdownImmediately PopdownDelayed
+ \ PopupActiveArea DoubleClickTime SidePic
+ \ SideColor PopupAsRootMenu PopupAsSubmenu
+ \ PopupIgnore PopupClose RemoveSubmenus
+ \ HoldSubmenus SubmenusRight SubmenusLeft
+ \ SelectOnRelease ItemFormat
+ \ VerticalItemSpacing VerticalTitleSpacing
+ \ AutomaticHotkeys AutomaticHotkeysOff
+ \ TitleFont TitleColorset HilightTitleBack
+
+ " Button style
+ syn keyword fvwmKeyword nextgroup=fvwmBNum skipwhite
+ \ ButtonStyle AddButtonStyle
+ syn match fvwmBNum contained
+ \ nextgroup=fvwmBState,fvwmBStyleArgs skipwhite
+ \ '\v<([0-9]|All|Left|Right|Reset)>'
+ syn keyword fvwmBState contained nextgroup=fvwmBStyleArgs skipwhite
+ \ ActiveUp ActiveDown InactiveUp InactiveDown
+ \ Active Inactive ToggledActiveUp
+ \ ToggledActiveDown ToggledInactiveUp
+ \ ToggledInactiveDown ToggledActive
+ \ ToggledInactive AllNormal AllToggled
+ \ AllActive AllInactive AllUp AllDown
+ syn region fvwmBStyleArgs contained contains=fvwmBStyleFlags,fvwmBStyleNames,fvwmGradient,fvwmRGBValue,@fvwmConstants,fvwmString
+ \ start='\S' skip='\\$' end='$'
+ syn keyword fvwmBStyleNames contained
+ \ Simple Default Solid Colorset Vector Pixmap
+ \ AdjustedPixmap ShrunkPixmap StretchedPixmap
+ \ TiledPixmap MiniIcon
+ syn keyword fvwmBStyleFlags contained
+ \ Raised Sunk Flat UseTitleStyle
+ \ UseBorderStyle
+
+ " Border style
+ syn keyword fvwmKeyword skipwhite nextgroup=fvwmBdState,fvwmBdStyleArgs
+ \ BorderStyle
+ syn keyword fvwmBdState contained skipwhite nextgroup=fvwmBdStyleArgs
+ \ Active Inactive
+ syn region fvwmBdStyleArgs contained contains=fvwmBdStyNames,fvwmBdStyFlags
+ \ start='\S' skip='\\$' end='$'
+ syn keyword fvwmBdStyNames contained
+ \ TiledPixmap Colorset
+ syn keyword fvwmBdStyFlags contained
+ \ HiddenHandles NoInset Raised Sunk Flat
+
+ " Title styles
+ syn keyword fvwmKeyword skipwhite nextgroup=fvwmTState,fvwmTStyleArgs
+ \ TitleStyle AddTitleStyle
+ syn keyword fvwmTState contained skipwhite nextgroup=fvwmTStyleArgs
+ \ ActiveUp ActiveDown InactiveUp InactiveDown
+ \ Active Inactive ToggledActiveUp
+ \ ToggledActiveDown ToggledInactiveUp
+ \ ToggledInactiveDown ToggledActive
+ \ ToggledInactive AllNormal AllToggled
+ \ AllActive AllInactive AllUp AllDown
+ syn region fvwmTStyleArgs contained contains=fvwmBStyleNames,fvwmTStyleNames,fvwmMPmapNames,fvwmTStyleFlags,fvwmGradient,fvwmRGBValue,@fvwmConstants
+ \ start='\S' skip='\\$' end='$'
+ syn keyword fvwmTStyleNames contained
+ \ MultiPixmap
+ syn keyword fvwmTStyleNames contained
+ \ LeftJustified Centered RightJustified Height
+ \ MinHeight
+ syn keyword fvwmMPmapNames contained
+ \ Main LeftMain RightMain UnderText LeftOfText
+ \ RightOfText LeftEnd RightEnd Buttons
+ \ LeftButtons RightButtons
+ syn keyword fvwmTStyleFlags contained
+ \ Raised Flat Sunk
+
+ " Button state
+ syn keyword fvwmKeyword nextgroup=fvwmBStateArgs
+ \ ButtonState
+ syn region fvwmBStateArgs contained contains=fvwmBStateTF,fvwmBStateNames
+ \ start='.' skip='\\$' end='$'
+ syn keyword fvwmBStateNames contained ActiveDown Inactive InactiveDown
+ syn keyword fvwmBStateTF contained True False
+
+ " Paths
+ syn keyword fvwmKeyword nextgroup=fvwmPath skipwhite
+ \ IconPath ImagePath LocalePath PixmapPath
+ \ ModulePath
+ syn match fvwmPath contained contains=fvwmEnvVar '\v.+$'
+
+ " Window list command
+ syn keyword fvwmKeyword nextgroup=fvwmWLArgs skipwhite
+ \ WindowList
+ syn region fvwmWLArgs contained
+ \ contains=fvwmCondition,@fvwmConstants,fvwmString,fvwmWLOpts
+ \ start='.' skip='\\$' end='$'
+ syn keyword fvwmWLOpts contained
+ \ Geometry NoGeometry NoGeometryWithInfo
+ \ NoDeskNum NoNumInDeskTitle
+ \ NoCurrentDeskTitle MaxLabelWidth width
+ \ TitleForAllDesks Function funcname Desk
+ \ desknum CurrentDesk NoIcons Icons OnlyIcons
+ \ NoNormal Normal OnlyNormal NoSticky Sticky
+ \ OnlySticky NoStickyAcrossPages
+ \ StickyAcrossPages OnlyStickyAcrossPages
+ \ NoStickyAcrossDesks StickyAcrossDesks
+ \ OnlyStickyAcrossDesks NoOnTop OnTop
+ \ OnlyOnTop NoOnBottom OnBottom OnlyOnBottom
+ \ Layer UseListSkip OnlyListSkip NoDeskSort
+ \ ReverseOrder CurrentAtEnd IconifiedAtEnd
+ \ UseIconName Alphabetic NotAlphabetic
+ \ SortByResource SortByClass NoHotkeys
+ \ SelectOnRelease
+
+ syn keyword fvwmSpecialFn StartFunction InitFunction RestartFunction
+ \ ExitFunction SessionInitFunction
+ \ SessionRestartFunction SessionExitFunction
+ \ MissingSubmenuFunction WindowListFunc
+
+ syn keyword fvwmKeyword skipwhite nextgroup=fvwmKeyWin,fvwmKeyName
+ \ Key PointerKey
+ syn region fvwmKeyWin contained skipwhite nextgroup=fvwmKeyName
+ \ start='(' end=')'
+ syn case match
+ syn match fvwmKeyName contained skipwhite nextgroup=fvwmKeyContext
+ \ '\v<([a-zA-Z0-9]|F\d+|KP_\d)>'
+ syn keyword fvwmKeyName contained skipwhite nextgroup=fvwmKeyContext
+ \ BackSpace Begin Break Cancel Clear Delete
+ \ Down End Escape Execute Find Help Home
+ \ Insert KP_Add KP_Begin KP_Decimal KP_Delete
+ \ KP_Divide KP_Down KP_End KP_Enter KP_Equal
+ \ KP_Home KP_Insert KP_Left KP_Multiply
+ \ KP_Next KP_Page_Down KP_Page_Up KP_Prior
+ \ KP_Right KP_Separator KP_Space KP_Subtract
+ \ KP_Tab KP_Up Left Linefeed Menu Mode_switch
+ \ Next Num_Lock Page_Down Page_Up Pause Print
+ \ Prior Redo Return Right script_switch
+ \ Scroll_Lock Select Sys_Req Tab Undo Up space
+ \ exclam quotedbl numbersign dollar percent
+ \ ampersand apostrophe quoteright parenleft
+ \ parenright asterisk plus comma minus period
+ \ slash colon semicolon less equal greater
+ \ question at bracketleft backslash
+ \ bracketright asciicircum underscore grave
+ \ quoteleft braceleft bar braceright
+ \ asciitilde
+
+ syn match fvwmKeyContext contained skipwhite nextgroup=fvwmKeyMods
+ \ '\v<[][RWDTS_F<^>vI0-9AM-]+>'
+ syn match fvwmKeyMods contained '\v[NCSMLA1-5]+'
+ syn case ignore
+
+ syn keyword fvwmKeyword skipwhite nextgroup=fvwmMouseWin,fvwmMouseButton
+ \ Mouse
+ syn region fvwmMouseWin contained skipwhite nextgroup=fvwmMouseButton
+ \ start='(' end=')'
+ syn match fvwmMouseButton contained skipwhite nextgroup=fvwmKeyContext
+ \ '[0-5]'
+endif
+
+" Define syntax highlighting groups
+
+"
+" Common highlighting groups
+"
+hi def link fvwmComment Comment
+hi def link fvwmEnvVar Macro
+hi def link fvwmNumber Number
+hi def link fvwmKeyword Keyword
+hi def link fvwmPath Constant
+hi def link fvwmModConf Macro
+hi def link fvwmRGBValue Constant
+hi def link fvwmString String
+hi def link fvwmBackslash SpecialChar
+
+
+"
+" Highlighting groups for fvwm1 specific items
+"
+hi def link fvwmExec fvwmKeyword
+hi def link fvwmKey fvwmKeyword
+hi def link fvwmModule fvwmKeyword
+hi def link fvwmFunction Function
+
+"
+" Highlighting groups for fvwm2 specific items
+"
+hi def link fvwmSpecialFn Type
+hi def link fvwmCursorStyle fvwmStyleNames
+hi def link fvwmStyleNames Identifier
+hi def link fvwmMStyleNames fvwmStyleNames
+hi def link fvwmCSNames fvwmStyleNames
+hi def link fvwmGradient fvwmStyleNames
+hi def link fvwmCondNames fvwmStyleNames
+hi def link fvwmTCNames fvwmStyleNames
+hi def link fvwmTRNames fvwmStyleNames
+hi def link fvwmWLOpts fvwmStyleNames
+
+hi def link fvwmBNum Number
+hi def link fvwmBState Type
+hi def link fvwmBStyleNames fvwmStyleNames
+hi def link fvwmBStyleFlags Special
+
+hi def link fvwmBStateTF Constant
+hi def link fvwmBStateNames fvwmStyleNames
+
+hi def link fvwmBdState fvwmBState
+hi def link fvwmBdStyNames fvwmStyleNames
+hi def link fvwmBdStyFlags fvwmBStyleFlags
+
+hi def link fvwmTState fvwmBState
+hi def link fvwmTStyleNames fvwmStyleNames
+hi def link fvwmMPmapNames fvwmBStyleFlags
+hi def link fvwmTStyleFlags fvwmBStyleFlags
+
+hi def link fvwmDirection fvwmBStyleFlags
+
+hi def link fvwmKeyWin Constant
+hi def link fvwmMouseWin fvwmKeyWin
+hi def link fvwmKeyName Special
+hi def link fvwmKeyContext fvwmKeyName
+hi def link fvwmKeyMods fvwmKeyName
+hi def link fvwmMouseButton fvwmKeyName
+
+hi def link fvwmMenuString String
+hi def link fvwmIcon Type
+hi def link fvwmShortcutKey SpecialChar
+
+hi def link fvwmModuleName Function
+
+let b:current_syntax = "fvwm"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/runtime/syntax/fvwm2m4.vim b/runtime/syntax/fvwm2m4.vim
new file mode 100644
index 0000000..e296273
--- /dev/null
+++ b/runtime/syntax/fvwm2m4.vim
@@ -0,0 +1,32 @@
+" Vim syntax file
+" Language: FvwmM4 preprocessed Fvwm2 configuration files
+" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
+" Last Change: 2002-06-02
+" URI: http://physics.muni.cz/~yeti/download/syntax/fvwmm4.vim
+
+" Setup
+" quit when a syntax file was already loaded
+if exists('b:current_syntax')
+ finish
+endif
+
+" Let included files know they are included
+if !exists('main_syntax')
+ let main_syntax = 'fvwm2m4'
+endif
+
+" Include M4 syntax
+runtime! syntax/m4.vim
+unlet b:current_syntax
+
+" Include Fvwm2 syntax (Fvwm1 doesn't have M4 preprocessor)
+runtime! syntax/fvwm.vim
+unlet b:current_syntax
+
+" That's all!
+let b:current_syntax = 'fvwm2m4'
+
+if main_syntax == 'fvwm2m4'
+ unlet main_syntax
+endif
+
diff --git a/runtime/syntax/gdb.vim b/runtime/syntax/gdb.vim
new file mode 100644
index 0000000..c820ba4
--- /dev/null
+++ b/runtime/syntax/gdb.vim
@@ -0,0 +1,104 @@
+" Vim syntax file
+" Language: GDB command files
+" Maintainer: Claudio Fleiner <claudio@fleiner.com>
+" URL: http://www.fleiner.com/vim/syntax/gdb.vim
+" Last Change: 2021 Nov 15
+" Additional changes by Simon Sobisch
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword gdbInfo contained address architecture args breakpoints catch common copying dcache
+syn keyword gdbInfo contained display files float frame functions handle line
+syn keyword gdbInfo contained locals program registers scope set sharedlibrary signals
+syn keyword gdbInfo contained source sources stack symbol target terminal threads
+syn keyword gdbInfo contained syn keyword tracepoints types udot variables warranty watchpoints
+syn match gdbInfo contained "all-registers"
+
+
+syn keyword gdbStatement contained actions apply attach awatch backtrace break bt call catch cd clear collect commands
+syn keyword gdbStatement contained complete condition continue delete detach directory disable disas[semble] disp[lay] down
+syn keyword gdbStatement contained echo else enable end file finish frame handle hbreak help if ignore
+syn keyword gdbStatement contained inspect jump kill list load maintenance make next nexti ni output overlay
+syn keyword gdbStatement contained passcount path print printf ptype python pwd quit rbreak remote return run rwatch
+syn keyword gdbStatement contained search section set sharedlibrary shell show si signal skip source step stepi stepping
+syn keyword gdbStatement contained stop target tbreak tdump tfind thbreak thread tp trace tstart tstatus tstop
+syn keyword gdbStatement contained tty und[isplay] unset until up watch whatis where while ws x
+syn match gdbFuncDef "\<define\>.*"
+syn match gdbStatmentContainer "^\s*\S\+" contains=gdbStatement,gdbFuncDef
+syn match gdbStatement "^\s*info" nextgroup=gdbInfo skipwhite skipempty
+
+" some commonly used abbreviations
+syn keyword gdbStatement c cont p py
+
+syn region gdbDocument matchgroup=gdbFuncDef start="\<document\>.*$" matchgroup=gdbFuncDef end="^end\s*$"
+
+syn match gdbStatement "\<add-shared-symbol-files\>"
+syn match gdbStatement "\<add-symbol-file\>"
+syn match gdbStatement "\<core-file\>"
+syn match gdbStatement "\<dont-repeat\>"
+syn match gdbStatement "\<down-silently\>"
+syn match gdbStatement "\<exec-file\>"
+syn match gdbStatement "\<forward-search\>"
+syn match gdbStatement "\<reverse-search\>"
+syn match gdbStatement "\<save-tracepoints\>"
+syn match gdbStatement "\<select-frame\>"
+syn match gdbStatement "\<symbol-file\>"
+syn match gdbStatement "\<up-silently\>"
+syn match gdbStatement "\<while-stepping\>"
+
+syn keyword gdbSet annotate architecture args check complaints confirm editing endian
+syn keyword gdbSet environment gnutarget height history language listsize print prompt
+syn keyword gdbSet radix remotebaud remotebreak remotecache remotedebug remotedevice remotelogbase
+syn keyword gdbSet remotelogfile remotetimeout remotewritesize targetdebug variable verbose
+syn keyword gdbSet watchdog width write
+syn match gdbSet "\<auto-solib-add\>"
+syn match gdbSet "\<solib-absolute-prefix\>"
+syn match gdbSet "\<solib-search-path\>"
+syn match gdbSet "\<stop-on-solib-events\>"
+syn match gdbSet "\<symbol-reloading\>"
+syn match gdbSet "\<input-radix\>"
+syn match gdbSet "\<demangle-style\>"
+syn match gdbSet "\<output-radix\>"
+
+syn match gdbComment "^\s*#.*" contains=@Spell
+
+syn match gdbVariable "\$\K\k*"
+
+" Strings and constants
+syn region gdbString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
+syn match gdbCharacter "'[^']*'" contains=gdbSpecialChar,gdbSpecialCharError
+syn match gdbCharacter "'\\''" contains=gdbSpecialChar
+syn match gdbCharacter "'[^\\]'"
+syn match gdbNumber "\<[0-9_]\+\>"
+syn match gdbNumber "\<0x[0-9a-fA-F_]\+\>"
+
+
+if !exists("gdb_minlines")
+ let gdb_minlines = 10
+endif
+exec "syn sync ccomment gdbComment minlines=" . gdb_minlines
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link gdbFuncDef Function
+hi def link gdbComment Comment
+hi def link gdbStatement Statement
+hi def link gdbString String
+hi def link gdbCharacter Character
+hi def link gdbVariable Identifier
+hi def link gdbSet Constant
+hi def link gdbInfo Type
+hi def link gdbDocument Special
+hi def link gdbNumber Number
+
+let b:current_syntax = "gdb"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/gdmo.vim b/runtime/syntax/gdmo.vim
new file mode 100644
index 0000000..009f402
--- /dev/null
+++ b/runtime/syntax/gdmo.vim
@@ -0,0 +1,83 @@
+" Vim syntax file
+" Language: GDMO
+" (ISO-10165-4; Guidelines for the Definition of Managed Object)
+" Maintainer: Gyuman (Chester) Kim <violkim@gmail.com>
+" URL: http://classicalprogrammer.wikidot.com/local--files/vim-syntax-file-for-gdmo/gdmo.vim
+" Last change: 8th June, 2011
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" keyword definitions
+syn match gdmoCategory "MANAGED\s\+OBJECT\s\+CLASS"
+syn keyword gdmoCategory NOTIFICATION ATTRIBUTE BEHAVIOUR PACKAGE ACTION
+syn match gdmoCategory "NAME\s\+BINDING"
+syn match gdmoRelationship "DERIVED\s\+FROM"
+syn match gdmoRelationship "SUPERIOR\s\+OBJECT\s\+CLASS"
+syn match gdmoRelationship "SUBORDINATE\s\+OBJECT\s\+CLASS"
+syn match gdmoExtension "AND\s\+SUBCLASSES"
+syn match gdmoDefinition "DEFINED\s\+AS"
+syn match gdmoDefinition "REGISTERED\s\+AS"
+syn match gdmoExtension "ORDER\s\+BY"
+syn match gdmoReference "WITH\s\+ATTRIBUTE"
+syn match gdmoReference "WITH\s\+INFORMATION\s\+SYNTAX"
+syn match gdmoReference "WITH\s\+REPLY\s\+SYNTAX"
+syn match gdmoReference "WITH\s\+ATTRIBUTE\s\+SYNTAX"
+syn match gdmoExtension "AND\s\+ATTRIBUTE\s\+IDS"
+syn match gdmoExtension "MATCHES\s\+FOR"
+syn match gdmoReference "CHARACTERIZED\s\+BY"
+syn match gdmoReference "CONDITIONAL\s\+PACKAGES"
+syn match gdmoExtension "PRESENT\s\+IF"
+syn match gdmoExtension "DEFAULT\s\+VALUE"
+syn match gdmoExtension "PERMITTED\s\+VALUES"
+syn match gdmoExtension "REQUIRED\s\+VALUES"
+syn match gdmoExtension "NAMED\s\+BY"
+syn keyword gdmoReference ATTRIBUTES NOTIFICATIONS ACTIONS
+syn keyword gdmoExtension DELETE CREATE
+syn keyword gdmoExtension EQUALITY SUBSTRINGS ORDERING
+syn match gdmoExtension "REPLACE-WITH-DEFAULT"
+syn match gdmoExtension "GET"
+syn match gdmoExtension "GET-REPLACE"
+syn match gdmoExtension "ADD-REMOVE"
+syn match gdmoExtension "WITH-REFERENCE-OBJECT"
+syn match gdmoExtension "WITH-AUTOMATIC-INSTANCE-NAMING"
+syn match gdmoExtension "ONLY-IF-NO-CONTAINED-OBJECTS"
+
+
+" Strings and constants
+syn match gdmoSpecial contained "\\\d\d\d\|\\."
+syn region gdmoString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=gdmoSpecial
+syn match gdmoCharacter "'[^\\]'"
+syn match gdmoSpecialCharacter "'\\.'"
+syn match gdmoNumber "0[xX][0-9a-fA-F]\+\>"
+syn match gdmoLineComment "--.*"
+syn match gdmoLineComment "--.*--"
+
+syn match gdmoDefinition "^\s*[a-zA-Z][-a-zA-Z0-9_.\[\] \t{}]* *::="me=e-3
+syn match gdmoBraces "[{}]"
+
+syn sync ccomment gdmoComment
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link gdmoCategory Structure
+hi def link gdmoRelationship Macro
+hi def link gdmoDefinition Statement
+hi def link gdmoReference Type
+hi def link gdmoExtension Operator
+hi def link gdmoBraces Function
+hi def link gdmoSpecial Special
+hi def link gdmoString String
+hi def link gdmoCharacter Character
+hi def link gdmoSpecialCharacter gdmoSpecial
+hi def link gdmoComment Comment
+hi def link gdmoLineComment gdmoComment
+hi def link gdmoType Type
+
+
+let b:current_syntax = "gdmo"
+
+" vim: ts=8
diff --git a/runtime/syntax/gdresource.vim b/runtime/syntax/gdresource.vim
new file mode 100644
index 0000000..7e1a251
--- /dev/null
+++ b/runtime/syntax/gdresource.vim
@@ -0,0 +1,65 @@
+" Vim syntax file for Godot resource (scenes)
+" Language: gdresource
+" Maintainer: Maxim Kim <habamax@gmail.com>
+" Filenames: *.tscn, *.tres
+" Website: https://github.com/habamax/vim-gdscript
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:keepcpo = &cpo
+set cpo&vim
+
+syn match gdResourceNumber "\<0x\%(_\=\x\)\+\>"
+syn match gdResourceNumber "\<0b\%(_\=[01]\)\+\>"
+syn match gdResourceNumber "\<\d\%(_\=\d\)*\>"
+syn match gdResourceNumber "\<\d\%(_\=\d\)*\%(e[+-]\=\d\%(_\=\d\)*\)\=\>"
+syn match gdResourceNumber "\<\d\%(_\=\d\)*\.\%(e[+-]\=\d\%(_\=\d\)*\)\=\%(\W\|$\)\@="
+syn match gdResourceNumber "\%(^\|\W\)\@1<=\%(\d\%(_\=\d\)*\)\=\.\d\%(_\=\d\)*\%(e[+-]\=\d\%(_\=\d\)*\)\=\>"
+
+syn keyword gdResourceKeyword true false
+
+syn region gdResourceString
+ \ start=+[uU]\="+ end='"' skip='\\\\\|\\"'
+ \ contains=@Spell keepend
+
+" Section
+syn region gdResourceSection matchgroup=gdResourceSectionDelimiter
+ \ start='^\[' end=']\s*$'
+ \ oneline keepend
+ \ contains=gdResourceSectionName,gdResourceSectionAttribute
+
+syn match gdResourceSectionName '\[\@<=\S\+' contained skipwhite
+syn match gdResourceSectionAttribute '\S\+\s*=\s*\S\+'
+ \ skipwhite keepend contained
+ \ contains=gdResourceSectionAttributeName,gdResourceSectionAttributeValue
+syn match gdResourceSectionAttributeName '\S\+\ze\(\s*=\)' skipwhite contained
+syn match gdResourceSectionAttributeValue '\(=\s*\)\zs\S\+\ze' skipwhite
+ \ contained
+ \ contains=gdResourceString,gdResourceNumber,gdResourceKeyword
+
+
+" Section body
+syn match gdResourceAttribute '^\s*\S\+\s*=.*$'
+ \ skipwhite keepend
+ \ contains=gdResourceAttributeName,gdResourceAttributeValue
+
+syn match gdResourceAttributeName '\S\+\ze\(\s*=\)' skipwhite contained
+syn match gdResourceAttributeValue '\(=\s*\)\zs.*$' skipwhite
+ \ contained
+ \ contains=gdResourceString,gdResourceNumber,gdResourceKeyword
+
+
+hi def link gdResourceNumber Constant
+hi def link gdResourceKeyword Constant
+hi def link gdResourceSectionName Statement
+hi def link gdResourceSectionDelimiter Delimiter
+hi def link gdResourceSectionAttributeName Type
+hi def link gdResourceAttributeName Identifier
+hi def link gdResourceString String
+
+let b:current_syntax = "gdresource"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/runtime/syntax/gdscript.vim b/runtime/syntax/gdscript.vim
new file mode 100644
index 0000000..48af153
--- /dev/null
+++ b/runtime/syntax/gdscript.vim
@@ -0,0 +1,103 @@
+" Vim syntax file for Godot gdscript
+" Language: gdscript
+" Maintainer: Maxim Kim <habamax@gmail.com>
+" Website: https://github.com/habamax/vim-gdscript
+" Filenames: *.gd
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:keepcpo = &cpo
+set cpo&vim
+
+syntax sync maxlines=100
+
+syn keyword gdscriptConditional if else elif match
+syn keyword gdscriptRepeat for while break continue
+
+syn keyword gdscriptOperator is as not and or in
+
+syn match gdscriptBlockStart ":\s*$"
+
+syn keyword gdscriptKeyword null self owner parent tool
+syn keyword gdscriptBoolean false true
+
+syn keyword gdscriptStatement remote master puppet remotesync mastersync puppetsync sync
+syn keyword gdscriptStatement return pass
+syn keyword gdscriptStatement static const enum
+syn keyword gdscriptStatement breakpoint assert
+syn keyword gdscriptStatement onready
+syn keyword gdscriptStatement class_name extends
+
+syn keyword gdscriptType void bool int float String contained
+syn match gdscriptType ":\s*\zs\h\w*" contained
+syn match gdscriptType "->\s*\zs\h\w*" contained
+
+syn keyword gdscriptStatement var nextgroup=gdscriptTypeDecl skipwhite
+syn keyword gdscriptStatement const nextgroup=gdscriptTypeDecl skipwhite
+syn match gdscriptTypeDecl "\h\w*\s*:\s*\h\w*" contains=gdscriptType contained skipwhite
+syn match gdscriptTypeDecl "->\s*\h\w*" contains=gdscriptType skipwhite
+
+syn keyword gdscriptStatement export nextgroup=gdscriptExportTypeDecl skipwhite
+syn match gdscriptExportTypeDecl "(.\{-}[,)]" contains=gdscriptOperator,gdscriptType contained skipwhite
+
+syn keyword gdscriptStatement setget nextgroup=gdscriptSetGet,gdscriptSetGetSeparator skipwhite
+syn match gdscriptSetGet "\h\w*" nextgroup=gdscriptSetGetSeparator display contained skipwhite
+syn match gdscriptSetGetSeparator "," nextgroup=gdscriptSetGet display contained skipwhite
+
+syn keyword gdscriptStatement class func signal nextgroup=gdscriptFunctionName skipwhite
+syn match gdscriptFunctionName "\h\w*" nextgroup=gdscriptFunctionParams display contained skipwhite
+syn match gdscriptFunctionParams "(.*)" contains=gdscriptTypeDecl display contained skipwhite
+
+syn match gdscriptNode "\$\h\w*\%(/\h\w*\)*"
+
+syn match gdscriptComment "#.*$" contains=@Spell,gdscriptTodo
+
+syn region gdscriptString matchgroup=gdscriptQuotes
+ \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
+ \ contains=gdscriptEscape,@Spell
+
+syn region gdscriptString matchgroup=gdscriptTripleQuotes
+ \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend
+ \ contains=gdscriptEscape,@Spell
+
+syn match gdscriptEscape +\\[abfnrtv'"\\]+ contained
+syn match gdscriptEscape "\\$"
+
+" Numbers
+syn match gdscriptNumber "\<0x\%(_\=\x\)\+\>"
+syn match gdscriptNumber "\<0b\%(_\=[01]\)\+\>"
+syn match gdscriptNumber "\<\d\%(_\=\d\)*\>"
+syn match gdscriptNumber "\<\d\%(_\=\d\)*\%(e[+-]\=\d\%(_\=\d\)*\)\=\>"
+syn match gdscriptNumber "\<\d\%(_\=\d\)*\.\%(e[+-]\=\d\%(_\=\d\)*\)\=\%(\W\|$\)\@="
+syn match gdscriptNumber "\%(^\|\W\)\@1<=\%(\d\%(_\=\d\)*\)\=\.\d\%(_\=\d\)*\%(e[+-]\=\d\%(_\=\d\)*\)\=\>"
+
+" XXX, TODO, etc
+syn keyword gdscriptTodo TODO XXX FIXME HACK NOTE BUG contained
+
+hi def link gdscriptStatement Statement
+hi def link gdscriptKeyword Keyword
+hi def link gdscriptConditional Conditional
+hi def link gdscriptBoolean Boolean
+hi def link gdscriptOperator Operator
+hi def link gdscriptRepeat Repeat
+hi def link gdscriptSetGet Function
+hi def link gdscriptFunctionName Function
+hi def link gdscriptBuiltinStruct Typedef
+hi def link gdscriptComment Comment
+hi def link gdscriptString String
+hi def link gdscriptQuotes String
+hi def link gdscriptTripleQuotes String
+hi def link gdscriptEscape Special
+hi def link gdscriptNode PreProc
+hi def link gdscriptType Type
+hi def link gdscriptNumber Number
+hi def link gdscriptBlockStart Special
+hi def link gdscriptTodo Todo
+
+
+let b:current_syntax = "gdscript"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/runtime/syntax/gdshader.vim b/runtime/syntax/gdshader.vim
new file mode 100644
index 0000000..f0d9f7e
--- /dev/null
+++ b/runtime/syntax/gdshader.vim
@@ -0,0 +1,57 @@
+" Vim syntax file for Godot shading language
+" Language: gdshader
+" Maintainer: Maxim Kim <habamax@gmail.com>
+" Filenames: *.gdshader
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn keyword gdshaderConditional if else switch case default
+syn keyword gdshaderRepeat for while do
+syn keyword gdshaderStatement return discard
+syn keyword gdshaderBoolean true false
+
+syn keyword gdshaderKeyword shader_type render_mode
+syn keyword gdshaderKeyword in out inout
+syn keyword gdshaderKeyword lowp mediump highp
+syn keyword gdshaderKeyword uniform varying const
+syn keyword gdshaderKeyword flat smooth
+
+syn keyword gdshaderType float vec2 vec3 vec4
+syn keyword gdshaderType uint uvec2 uvec3 uvec4
+syn keyword gdshaderType int ivec2 ivec3 ivec4
+syn keyword gdshaderType void bool
+syn keyword gdshaderType bvec2 bvec3 bvec4
+syn keyword gdshaderType mat2 mat3 mat4
+syn keyword gdshaderType sampler2D isampler2D usampler2D samplerCube
+
+syn match gdshaderMember "\v<(\.)@<=[a-z_]+\w*>"
+syn match gdshaderBuiltin "\v<[A-Z_]+[A-Z0-9_]*>"
+syn match gdshaderFunction "\v<\w*>(\()@="
+
+syn match gdshaderNumber "\v<\d+(\.)@!>"
+syn match gdshaderFloat "\v<\d*\.\d+(\.)@!>"
+syn match gdshaderFloat "\v<\d*\.=\d+(e-=\d+)@="
+syn match gdshaderExponent "\v(\d*\.=\d+)@<=e-=\d+>"
+
+syn match gdshaderComment "\v//.*$" contains=@Spell
+syn region gdshaderComment start="/\*" end="\*/" contains=@Spell
+syn keyword gdshaderTodo TODO FIXME XXX NOTE BUG HACK OPTIMIZE containedin=gdshaderComment
+
+hi def link gdshaderConditional Conditional
+hi def link gdshaderRepeat Repeat
+hi def link gdshaderStatement Statement
+hi def link gdshaderBoolean Boolean
+hi def link gdshaderKeyword Keyword
+hi def link gdshaderMember Identifier
+hi def link gdshaderBuiltin Identifier
+hi def link gdshaderFunction Function
+hi def link gdshaderType Type
+hi def link gdshaderNumber Number
+hi def link gdshaderFloat Float
+hi def link gdshaderExponent Special
+hi def link gdshaderComment Comment
+hi def link gdshaderTodo Todo
+
+let b:current_syntax = "gdshader"
diff --git a/runtime/syntax/gedcom.vim b/runtime/syntax/gedcom.vim
new file mode 100644
index 0000000..cd09e0f
--- /dev/null
+++ b/runtime/syntax/gedcom.vim
@@ -0,0 +1,53 @@
+" Vim syntax file
+" Language: Gedcom
+" Maintainer: Paul Johnson (pjcj@transeda.com)
+" Version 1.059 - 23rd December 1999
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syntax case match
+
+syntax keyword gedcom_record ABBR ADDR ADOP ADR1 ADR2 AFN AGE AGNC ALIA ANCE
+syntax keyword gedcom_record ANCI ANUL ASSO AUTH BAPL BAPM BARM BASM BIRT BLES
+syntax keyword gedcom_record BLOB BURI CALN CAST CAUS CENS CHAN CHAR CHIL CHR
+syntax keyword gedcom_record CHRA CITY CONC CONF CONL CONT COPR CORP CREM CTRY
+syntax keyword gedcom_record DATA DEAT DESC DESI DEST DIV DIVF DSCR EDUC EMIG
+syntax keyword gedcom_record ENDL ENGA EVEN FAM FAMC FAMF FAMS FCOM FILE FORM
+syntax keyword gedcom_record GEDC GIVN GRAD HEAD HUSB IDNO IMMI INDI LANG MARB
+syntax keyword gedcom_record MARC MARL MARR MARS MEDI NATI NATU NCHI NICK NMR
+syntax keyword gedcom_record NOTE NPFX NSFX OBJE OCCU ORDI ORDN PAGE PEDI PHON
+syntax keyword gedcom_record PLAC POST PROB PROP PUBL QUAY REFN RELA RELI REPO
+syntax keyword gedcom_record RESI RESN RETI RFN RIN ROLE SEX SLGC SLGS SOUR
+syntax keyword gedcom_record SPFX SSN STAE STAT SUBM SUBN SURN TEMP TEXT TIME
+syntax keyword gedcom_record TITL TRLR TYPE VERS WIFE WILL
+syntax keyword gedcom_record DATE nextgroup=gedcom_date
+syntax keyword gedcom_record NAME nextgroup=gedcom_name
+
+syntax case ignore
+
+syntax region gedcom_id start="@" end="@" oneline contains=gedcom_ii, gedcom_in
+syntax match gedcom_ii "\I\+" contained nextgroup=gedcom_in
+syntax match gedcom_in "\d\+" contained
+syntax region gedcom_name start="" end="$" skipwhite oneline contains=gedcom_cname, gedcom_surname contained
+syntax match gedcom_cname "\i\+" contained
+syntax match gedcom_surname "/\(\i\|\s\)*/" contained
+syntax match gedcom_date "\d\{1,2}\s\+\(jan\|feb\|mar\|apr\|may\|jun\|jul\|aug\|sep\|oct\|nov\|dec\)\s\+\d\+"
+syntax match gedcom_date ".*" contained
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link gedcom_record Statement
+hi def link gedcom_id Comment
+hi def link gedcom_ii PreProc
+hi def link gedcom_in Type
+hi def link gedcom_name PreProc
+hi def link gedcom_cname Type
+hi def link gedcom_surname Identifier
+hi def link gedcom_date Constant
+
+
+let b:current_syntax = "gedcom"
diff --git a/runtime/syntax/gemtext.vim b/runtime/syntax/gemtext.vim
new file mode 100644
index 0000000..8c2bd29
--- /dev/null
+++ b/runtime/syntax/gemtext.vim
@@ -0,0 +1,24 @@
+" Vim syntax file
+" Language: Gemtext markup language
+" Maintainer: Suneel Freimuth <suneelfreimuth1@gmail.com>
+" Latest Revision: 2020-11-21
+" Filenames: *.gmi
+
+if exists('b:current_syntax')
+ finish
+endif
+
+syntax match Heading /^#\{1,3}.\+$/
+syntax match List /^\* /
+syntax match LinkURL /^=>\s*\S\+/
+syntax match Quote /^>.\+/
+syntax region Preformatted start=/^```/ end=/```/
+
+highlight default link Heading Special
+highlight default link List Statement
+highlight default link LinkURL Underlined
+highlight default link Quote Constant
+highlight default link Preformatted Identifier
+
+let b:current_syntax = 'gemtext'
+
diff --git a/runtime/syntax/gift.vim b/runtime/syntax/gift.vim
new file mode 100644
index 0000000..3f8d631
--- /dev/null
+++ b/runtime/syntax/gift.vim
@@ -0,0 +1,216 @@
+" Vim syntax file
+"
+" Language: Moodle GIFT (General Import Format Template)
+" Maintainer: Selim Temizer (http://selimtemizer.com)
+" Creation: November 28, 2020
+" Latest Revision: December 21, 2020
+" Note: The order of entities in this file is important!
+
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+
+setlocal conceallevel=1
+
+"-----------------------------------------------
+" GIFT entities
+
+syn match giftS "\~" contained "GIFT special characters
+syn match giftS "=" contained
+syn match giftS "#" contained
+syn match giftS "{" contained
+syn match giftS "}" contained
+syn match giftS ":" contained
+
+syn match giftES "\\\~" contained conceal cchar=~ "GIFT escaped special characters
+syn match giftES "\\=" contained conceal cchar==
+syn match giftES "\\#" contained conceal cchar=#
+syn match giftES "\\{" contained conceal cchar={
+syn match giftES "\\}" contained conceal cchar=}
+syn match giftES "\\:" contained conceal cchar=:
+
+syn match giftEN "\\n" contained conceal cchar=n "GIFT escaped newline
+
+syn match giftFormat "\[html]" contained "GIFT formats
+syn match giftFormat "\[plain]" contained
+syn match giftFormat "\[moodle]" contained
+syn match giftFormat "\[markdown]" contained
+
+"--------------------------------------------------------
+" HTML entities
+
+syn match giftH "<" contained "HTML characters that might need to be handled/escaped
+syn match giftH ">" contained
+syn match giftH "&" contained
+
+syn match giftEH "&lt;" contained conceal cchar=< "HTML escaped characters
+syn match giftEH "&gt;" contained conceal cchar=>
+syn match giftEH "&amp;" contained conceal cchar=&
+syn match giftEH "&nbsp;" contained conceal cchar=_
+
+"-------------------------------------------------------
+" Answer components: Feedback and general feedback
+
+syn match giftFB "#\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|#\|####\|}\)" contained contains=giftF "Feedback block
+syn match giftF "#\zs\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|#\|####\|}\)" contained contains=@giftCEF "Feedback
+
+syn match giftGFB "####\_.\{-}\(\_^\|[^\\]\)\ze}" contained contains=giftGF "General feedback block
+syn match giftGF "####\zs\_.\{-}\(\_^\|[^\\]\)\ze}" contained contains=@giftCEF "General feedback
+
+"------------------------------------------------------
+" Answer components: Other components
+
+syn keyword giftTF T TRUE F FALSE contained
+
+syn match giftNum1 "[-+]\=[.0-9]\+" contained "Something matching a number
+
+syn match giftNum2 "[-+]\=[.0-9]\+\s*:\s*[-+]\=[.0-9]\+" contained contains=giftNum2D "Number with error margin
+syn match giftNum2D ":" contained "Associated delimiter
+
+syn match giftNum3 "[-+]\=[.0-9]\+\s*\.\.\s*[-+]\=[.0-9]\+" contained contains=giftNum3D "Number as min/max range
+syn match giftNum3D "\.\." contained "Associated delimiter
+
+syn match giftWeightB "%-*[0-9]\{1,2}\.\?[0-9]*%" contained contains=giftWeight "Weight block
+syn match giftWeight "%\zs-*[0-9]\{1,2}\.\?[0-9]*\ze%" contained "Weight
+
+"-----------------------------------------------------
+" Answer choices
+
+syn match giftWrongNum "\~\zs\_.\{-}\(\_^\|[^\\]\)\ze\(####\|}\)" contained contains=@giftCEFF "Wrong numeric choice
+syn match giftRightNum "=\zs\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)" contained contains=@giftCEFFW,@giftNums "Right numeric choice
+
+syn match giftWrong "\~\zs\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)" contained contains=@giftCEFFW "Wrong choice
+syn match giftRight "=\zs\_.\{-}\(\ze->\|\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)\)" contained contains=@giftCEFFW "Right choice
+syn match giftMatchB "->\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)" contained contains=giftMatch "Match choice block
+syn match giftMatch "->\zs\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)" contained contains=@giftCE "Match choice
+
+"----------------------------------------------------
+" Answer
+
+syn match giftAnswer "{\_.\{-}\(\_^\|[^\\]\)}" contained keepend contains=@giftA "General answer
+syn match giftAnswer "{}" contained "Minimal answer
+
+syn match giftAnswerNum "{\_[[:space:]]*#\_[^#]\_.\{-}\(\_^\|[^\\]\)}" contained keepend contains=@giftANum "Numeric answer
+syn match giftAnswerNumD "{\zs\_[[:space:]]*#" contained "Associated delimiter
+
+"---------------------------------------------------
+" Question
+
+" The first pattern matches the last question at the end of the file (in case there is no empty line coming after).
+" However, it slows down parsing (and especially scrolling up), therefore it is commented out.
+
+"syn match giftQuestion "[^{[:space:]]\_.\{-}\%$" keepend contains=@giftCEF,giftAnswer,giftAnswerNum
+ syn match giftQuestion "[^{[:space:]]\_.\{-}\n\(\s*\n\)\+" keepend contains=@giftCEF,giftAnswer,giftAnswerNum
+
+"--------------------------------------------------
+" Question name
+
+syn match giftName "::\_.\{-}::" contains=@giftCE,giftNameD "Question name
+syn match giftNameD "::" contained "Associated delimiter
+
+"-------------------------------------------------
+" Category
+
+syn match giftCategoryB "^\s*\$CATEGORY:.*\n\+" contains=giftCategory "Category block
+syn match giftCategory "^\s*\$CATEGORY:\zs.*\ze\n" contained "Category
+
+"------------------------------------------------
+" Comments (may need to be the last entity)
+
+syn keyword giftTodo FIXME TODO NOTE FIX XXX contained
+
+syn match giftIdB "\[id:\(\\]\|[^][:cntrl:]]\)\+]" contained contains=giftId "Id block
+syn match giftId "\[id:\zs\(\\]\|[^][:cntrl:]]\)\+\ze]" contained "Id
+
+syn match giftTagB "\[tag:\(\\]\|[^]<>`[:cntrl:]]\)\+]" contained contains=giftTag "Tag block
+syn match giftTag "\[tag:\zs\(\\]\|[^]<>`[:cntrl:]]\)\+\ze]" contained "Tag
+
+syn match giftComment "^\s*//.*" contains=giftTodo,giftIdB,giftTagB
+
+"-----------------------------------------------
+" Clusters
+
+"Comments and entities (to be escaped)
+syn cluster giftCE contains=giftComment,giftS,giftES,giftEN,giftH,giftEH
+
+"The above plus format
+syn cluster giftCEF contains=@giftCE,giftFormat
+
+"The above plus feedback block
+syn cluster giftCEFF contains=@giftCEF,giftFB
+
+"The above plus weight block
+syn cluster giftCEFFW contains=@giftCEFF,giftWeightB
+
+"Possible numerical representations
+syn cluster giftNums contains=giftNum1,giftNum2,giftNum3
+
+"Possible contents of answers
+syn cluster giftA contains=giftComment,giftTF,giftWrong,giftRight,giftMatchB,giftFB,giftGFB
+
+"Possible contents of numerical answers
+syn cluster giftANum contains=giftAnswerNumD,giftComment,@giftNums,giftWrongNum,giftRightNum,giftFB,giftGFB
+
+"-----------------------------------------------
+
+let b:current_syntax = "gift"
+
+"-----------------------------------------------
+
+hi Conceal ctermbg=NONE ctermfg=Blue guibg=NONE guifg=Blue
+hi Feedback ctermbg=NONE ctermfg=DarkCyan guibg=NONE guifg=DarkCyan
+hi GFeedback ctermbg=NONE ctermfg=DarkGreen guibg=NONE guifg=DarkGreen
+hi WeightB ctermbg=NONE ctermfg=DarkYellow guibg=NONE guifg=DarkYellow
+
+"-----------------------------------------------
+
+hi def link giftS Error
+hi def link giftES Conceal
+hi def link giftEN Conceal
+hi def link giftFormat LineNr
+
+hi def link giftH Error
+hi def link giftEH Conceal
+
+hi def link giftFB PreProc
+hi def link giftF Feedback
+hi def link giftGFB Title
+hi def link giftGF GFeedback
+
+hi def link giftTF Question
+hi def link giftNum1 Question
+hi def link giftNum2 Question
+hi def link giftNum2D Special
+hi def link giftNum3 Question
+hi def link giftNum3D Special
+hi def link giftWeightB WeightB
+hi def link giftWeight Identifier
+
+hi def link giftWrongNum Constant
+hi def link giftRightNum Question
+hi def link giftWrong Constant
+hi def link giftRight Question
+hi def link giftMatchB ModeMsg
+hi def link giftMatch Constant
+
+hi def link giftAnswer MoreMsg
+hi def link giftAnswerNum MoreMsg
+hi def link giftAnswerNumD Identifier
+
+hi def link giftQuestion Identifier
+
+hi def link giftName PreProc
+hi def link giftNameD Directory
+
+hi def link giftCategoryB LineNr
+hi def link giftCategory Directory
+
+hi def link giftTodo Todo
+hi def link giftIdB LineNr
+hi def link giftId Title
+hi def link giftTagB LineNr
+hi def link giftTag Constant
+hi def link giftComment Comment
diff --git a/runtime/syntax/git.vim b/runtime/syntax/git.vim
new file mode 100644
index 0000000..bf013ce
--- /dev/null
+++ b/runtime/syntax/git.vim
@@ -0,0 +1,111 @@
+" Vim syntax file
+" Language: generic git output
+" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
+" Last Change: 2022 Jan 05
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+syn sync minlines=50
+
+syn include @gitDiff syntax/diff.vim
+
+syn region gitHead start=/\%^\%(tag \|tree \|object \)\@=/ end=/^$/ contains=@NoSpell
+syn region gitHead start=/\%(^commit\%( \x\{4,\}\)\{1,\}\%(\s*(.*)\)\=$\)\@=/ end=/^$/ contains=@NoSpell
+" git log --oneline
+" minimize false positives by verifying contents of buffer
+if getline(1) =~# '^\x\{7,\} ' && getline('$') =~# '^\x\{7,\} '
+ syn match gitHashAbbrev /^\x\{7,\} \@=/ contains=@NoSpell
+elseif getline(1) =~# '^[|\/\\_ ]\{-\}\*[|\/\\_ ]\{-\} \x\{7,\} '
+ syn match gitHashAbbrev /^[|\/\\_ ]\{-\}\*[|\/\\_ ]\{-\} \zs\x\{7,\} \@=/ contains=@NoSpell
+endif
+" git log --graph
+syn region gitGraph start=/\%(^[|\/\\_ ]*\*[|\/\\_ ]\{-\} commit\%( \x\{4,\}\)\{1,\}\%(\s*(.*)\)\=$\)\@=/ end=/^\%([|\/\\_ ]*$\)\@=/ contains=@NoSpell
+" git blame --porcelain
+syn region gitHead start=/\%(^\x\{40,\} \d\+ \d\+\%( \d\+\)\=$\)\@=/ end=/^\t\@=/ contains=@NoSpell
+" git ls-tree
+syn match gitMode /^\d\{6\}\%( \%(blob\|tree\) \x\{4,\}\t\)\@=/ nextgroup=gitType skipwhite contains=@NoSpell
+" git ls-files --stage
+syn match gitMode /^\d\{6\}\%( \x\{4,\} [0-3]\t\)\@=/ nextgroup=gitHashStage skipwhite contains=@NoSpell
+" .git/HEAD, .git/refs/
+syn match gitKeyword /\%^ref: \@=/ nextgroup=gitReference skipwhite contains=@NoSpell
+syn match gitHash /\%^\x\{40,}\%$/ skipwhite contains=@NoSpell
+" .git/logs/
+syn match gitReflog /^\x\{40,\} \x\{40,\} .\{-\}\d\+\s-\d\{4\}\t.*/ skipwhite contains=@NoSpell,gitReflogOld
+
+syn region gitDiff start=/^\%(diff --git \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff fold
+syn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --\%(git\|cc\|combined\) \|$\)\@=/ contains=@gitDiff
+
+syn region gitDiffMerge start=/^\%(diff --\%(cc\|combined\) \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
+syn region gitDiffMerge start=/^\%(@@@@* -\)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
+syn match gitDiffAdded "^ \++.*" contained containedin=gitDiffMerge
+syn match gitDiffAdded "{+[^}]*+}" contained containedin=gitDiff
+syn match gitDiffRemoved "^ \+-.*" contained containedin=gitDiffMerge
+syn match gitDiffRemoved "\[-[^]]*-\]" contained containedin=gitDiff
+
+syn match gitKeyword /^commit \@=/ contained containedin=gitHead nextgroup=gitHashAbbrev skipwhite contains=@NoSpell
+syn match gitKeyword /^\%(object\|tree\|parent\|encoding\|gpgsig\%(-\w\+\)\=\|previous\) \@=/ contained containedin=gitHead nextgroup=gitHash skipwhite contains=@NoSpell
+syn match gitKeyword /^Merge:/ contained containedin=gitHead nextgroup=gitHashAbbrev skipwhite contains=@NoSpell
+syn match gitIdentityKeyword /^\%(author\|committer\|tagger\) \@=/ contained containedin=gitHead nextgroup=gitIdentity skipwhite contains=@NoSpell
+syn match gitIdentityHeader /^\%(Author\|Commit\|Tagger\):/ contained containedin=gitHead nextgroup=gitIdentity skipwhite contains=@NoSpell
+syn match gitDateHeader /^\%(AuthorDate\|CommitDate\|Date\):/ contained containedin=gitHead nextgroup=gitDate skipwhite contains=@NoSpell
+
+syn match gitKeyword /^[*|\/\\_ ]\+\zscommit \@=/ contained containedin=gitGraph nextgroup=gitHashAbbrev skipwhite contains=@NoSpell
+syn match gitKeyword /^[|\/\\_ ]\+\zs\%(object\|tree\|parent\|encoding\|gpgsig\%(-\w\+\)\=\|previous\) \@=/ contained containedin=gitGraph nextgroup=gitHash skipwhite contains=@NoSpell
+syn match gitKeyword /^[|\/\\_ ]\+\zsMerge:/ contained containedin=gitGraph nextgroup=gitHashAbbrev skipwhite contains=@NoSpell
+syn match gitIdentityKeyword /^[|\/\\_ ]\+\zs\%(author\|committer\|tagger\) \@=/ contained containedin=gitGraph nextgroup=gitIdentity skipwhite contains=@NoSpell
+syn match gitIdentityHeader /^[|\/\\_ ]\+\zs\%(Author\|Commit\|Tagger\):/ contained containedin=gitGraph nextgroup=gitIdentity skipwhite contains=@NoSpell
+syn match gitDateHeader /^[|\/\\_ ]\+\zs\%(AuthorDate\|CommitDate\|Date\):/ contained containedin=gitGraph nextgroup=gitDate skipwhite contains=@NoSpell
+
+syn match gitKeyword /^type \@=/ contained containedin=gitHead nextgroup=gitType skipwhite contains=@NoSpell
+syn match gitKeyword /^\%(summary\|boundary\|filename\|\%(author\|committer\)-\%(time\|tz\)\) \@=/ contained containedin=gitHead skipwhite contains=@NoSpell
+syn match gitKeyword /^tag \@=/ contained containedin=gitHead nextgroup=gitReference skipwhite contains=@NoSpell
+syn match gitIdentityKeyword /^\%(author\|committer\)-mail \@=/ contained containedin=gitHead nextgroup=gitEmail skipwhite contains=@NoSpell
+syn match gitReflogHeader /^Reflog:/ contained containedin=gitHead nextgroup=gitReflogMiddle skipwhite contains=@NoSpell
+syn match gitReflogHeader /^Reflog message:/ contained containedin=gitHead skipwhite contains=@NoSpell
+syn match gitReflogMiddle /\S\+@{\d\+} (/he=e-2 nextgroup=gitIdentity contains=@NoSpell
+
+syn match gitIdentity /\S.\{-\} <[^>]*>/ contained nextgroup=gitDate skipwhite contains=@NoSpell
+syn region gitEmail matchgroup=gitEmailDelimiter start=/</ end=/>/ keepend oneline contained containedin=gitIdentity contains=@NoSpell
+syn match gitDate /\<\u\l\l \u\l\l \d\=\d \d\d:\d\d:\d\d \d\d\d\d [+-]\d\d\d\d/ contained contains=@NoSpell
+syn match gitDate /-\=\d\+ [+-]\d\d\d\d\>/ contained contains=@NoSpell
+syn match gitDate /\<\d\+ \l\+ ago\>/ contained contains=@NoSpell
+syn match gitType /\<\%(tag\|commit\|tree\|blob\)\>/ contained nextgroup=gitHashAbbrev skipwhite contains=@NoSpell
+syn match gitReference /\S\+\S\@!/ contained contains=@NoSpell
+syn match gitHash /\<\x\{40,\}\>/ contained nextgroup=gitIdentity,gitHash skipwhite contains=@NoSpell
+syn match gitReflogOld /^\x\{40,\} \@=/ contained nextgroup=gitReflogNew skipwhite contains=@NoSpell
+syn match gitReflogNew /\<\x\{40,\} \@=/ contained nextgroup=gitIdentity skipwhite contains=@NoSpell
+syn match gitHashAbbrev /\<\x\{4,\}\>/ contained nextgroup=gitHashAbbrev skipwhite contains=@NoSpell
+syn match gitHashAbbrev /\<\x\{4,39\}\.\.\./he=e-3 contained nextgroup=gitHashAbbrev skipwhite contains=@NoSpell
+syn match gitHashStage /\<\x\{4,\}\>/ contained nextgroup=gitStage skipwhite contains=@NoSpell
+syn match gitStage /\<\d\t\@=/ contained contains=@NoSpell
+
+
+syn match gitNotesHeader /^Notes:\ze\n /
+
+hi def link gitDateHeader gitIdentityHeader
+hi def link gitIdentityHeader gitIdentityKeyword
+hi def link gitIdentityKeyword Label
+hi def link gitNotesHeader gitKeyword
+hi def link gitReflogHeader gitKeyword
+hi def link gitKeyword Keyword
+hi def link gitIdentity String
+hi def link gitEmailDelimiter Delimiter
+hi def link gitEmail Special
+hi def link gitDate Number
+hi def link gitMode Number
+hi def link gitHashStage gitHash
+hi def link gitHashAbbrev gitHash
+hi def link gitReflogOld gitHash
+hi def link gitReflogNew gitHash
+hi def link gitHash Identifier
+hi def link gitReflogMiddle gitReference
+hi def link gitReference Function
+hi def link gitStage gitType
+hi def link gitType Type
+hi def link gitDiffAdded diffAdded
+hi def link gitDiffRemoved diffRemoved
+
+let b:current_syntax = "git"
diff --git a/runtime/syntax/gitattributes.vim b/runtime/syntax/gitattributes.vim
new file mode 100644
index 0000000..b6d997f
--- /dev/null
+++ b/runtime/syntax/gitattributes.vim
@@ -0,0 +1,63 @@
+" Vim syntax file
+" Language: git attributes
+" Maintainer: ObserverOfTime <chronobserver@disroot.org>
+" Filenames: .gitattributes, *.git/info/attributes
+" Last Change: 2022 Sep 09
+
+if exists('b:current_syntax')
+ finish
+endif
+
+let s:cpo_save = &cpoptions
+set cpoptions&vim
+
+" Comment
+syn keyword gitattributesTodo contained TODO FIXME XXX
+syn match gitattributesComment /^\s*#.*/ contains=gitattributesTodo
+
+" Pattern
+syn match gitattributesPattern /^\s*#\@!\(".\+"\|\S\+\)/ skipwhite
+ \ nextgroup=gitattributesAttrPrefixed,gitattributesAttrAssigned skipwhite
+ \ contains=gitattributesGlob,gitattributesRange,gitattributesSeparator
+syn match gitattributesGlob /\\\@1<![?*]/ contained
+syn match gitattributesRange /\\\@1<!\[.\{-}\]/ contained
+syn match gitattributesSeparator '/' contained
+
+" Attribute
+syn match gitattributesAttrPrefixed /[!-]\?[A-Za-z0-9_.][-A-Za-z0-9_.]*/
+ \ transparent contained skipwhite
+ \ nextgroup=gitattributesAttrPrefixed,gitattributesAttrAssigned
+ \ contains=gitattributesPrefix,gitattributesName
+syn match gitattributesAttrAssigned /[A-Za-z0-9_.][-A-Za-z0-9_.]*=\S\+/
+ \ transparent contained skipwhite
+ \ nextgroup=gitattributesAttrPrefixed,gitattributesAttrAssigned
+ \ contains=gitattributesName,gitattributesAssign,gitattributesBoolean,gitattributesString
+syn match gitattributesName /[A-Za-z0-9_.][-A-Za-z0-9_.]*/
+ \ contained nextgroup=gitattributesAssign
+syn match gitattributesPrefix /[!-]/ contained
+ \ nextgroup=gitAttributesName
+syn match gitattributesAssign '=' contained
+ \ nextgroup=gitattributesBoolean,gitattributesString
+syn match gitattributesString /=\@1<=\S\+/ contained
+syn keyword gitattributesBoolean true false contained
+
+" Macro
+syn match gitattributesMacro /^\s*\[attr\]\s*\S\+/
+ \ nextgroup=gitattributesAttribute skipwhite
+
+hi def link gitattributesAssign Operator
+hi def link gitattributesBoolean Boolean
+hi def link gitattributesComment Comment
+hi def link gitattributesGlob Special
+hi def link gitattributesMacro Define
+hi def link gitattributesName Identifier
+hi def link gitattributesPrefix SpecialChar
+hi def link gitattributesRange Special
+hi def link gitattributesSeparator Delimiter
+hi def link gitattributesString String
+hi def link gitattributesTodo Todo
+
+let b:current_syntax = 'gitattributes'
+
+let &cpoptions = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/gitcommit.vim b/runtime/syntax/gitcommit.vim
new file mode 100644
index 0000000..42c8d44
--- /dev/null
+++ b/runtime/syntax/gitcommit.vim
@@ -0,0 +1,107 @@
+" Vim syntax file
+" Language: git commit file
+" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
+" Filenames: *.git/COMMIT_EDITMSG
+" Last Change: 2022 Jan 05
+
+if exists("b:current_syntax")
+ finish
+endif
+
+scriptencoding utf-8
+
+syn case match
+syn sync minlines=50
+syn sync linebreaks=1
+
+if has("spell")
+ syn spell toplevel
+endif
+
+syn include @gitcommitDiff syntax/diff.vim
+syn region gitcommitDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^\%(diff --\|$\|@@\@!\|[^[:alnum:]\ +-]\S\@!\)\@=/ fold contains=@gitcommitDiff
+
+syn match gitcommitSummary "^.*\%<51v." contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell
+syn match gitcommitOverflow ".*" contained contains=@Spell
+syn match gitcommitBlank "^.\+" contained contains=@Spell
+syn match gitcommitFirstLine "\%^.*" nextgroup=gitcommitBlank,gitcommitComment skipnl
+
+let s:scissors = 0
+let s:l = search('^[#;@!$%^&|:] -\{24,\} >8 -\{24,\}$', 'cnW', '', 100)
+if s:l == 0
+ let s:l = line('$')
+elseif getline(s:l)[0] !=# getline(s:l - 1)[0]
+ let s:scissors = 1
+endif
+let s:comment = escape((matchstr(getline(s:l), '^[#;@!$%^&|:]\S\@!') . '#')[0], '^$.*[]~\"/')
+
+if s:scissors
+ let s:comment .= ' -\{24,\} >8 -\{24,\}$'
+ exe 'syn region gitcommitComment start="^' . s:comment . '" end="\%$" contains=gitcommitDiff'
+else
+ exe 'syn match gitcommitComment "^' . s:comment . '.*"'
+endif
+exe 'syn match gitcommitTrailers "\n\@<=\n\%([[:alnum:]-]\+\s*:.*\|(cherry picked from commit .*\)\%(\n\s.*\|\n[[:alnum:]-]\+\s*:.*\|\n(cherry picked from commit .*\)*\%(\n\n*\%(' . s:comment . '\)\|\n*\%$\)\@="'
+
+unlet s:l s:comment s:scissors
+
+syn match gitcommitTrailerToken "^[[:alnum:]-]\+\s*:" contained containedin=gitcommitTrailers
+
+syn match gitcommitHash "\<\x\{40,}\>" contains=@NoSpell display
+syn match gitcommitOnBranch "\%(^. \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite
+syn match gitcommitOnBranch "\%(^. \)\@<=Your branch .\{-\} '" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite
+syn match gitcommitBranch "[^ ']\+" contained
+syn match gitcommitNoBranch "\%(^. \)\@<=Not currently on any branch." contained containedin=gitcommitComment
+syn match gitcommitHeader "\%(^. \)\@<=\S.*[::]\%(\n^$\)\@!$" contained containedin=gitcommitComment
+syn region gitcommitAuthor matchgroup=gitCommitHeader start=/\%(^. \)\@<=\%(Author\|Committer\|Date\):/ end=/$/ keepend oneline contained containedin=gitcommitComment transparent
+syn match gitcommitHeader "\%(^. \)\@<=commit\%( \x\{40,\}$\)\@=" contained containedin=gitcommitComment nextgroup=gitcommitHash skipwhite
+syn match gitcommitNoChanges "\%(^. \)\@<=No changes$" contained containedin=gitcommitComment
+
+syn match gitcommitType "\%(^.\t\)\@<=[^[:punct:][:space:]][^/::]*[^[:punct:][:space:]][::]\ze "he=e-1 contained containedin=gitcommitComment nextgroup=gitcommitFile skipwhite
+syn match gitcommitFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitArrow
+syn match gitcommitArrow " -> " contained nextgroup=gitcommitFile
+syn match gitcommitUntrackedFile "\%(^.\t\)\@<=[^::/]*\%(/.*\)\=$" contained containedin=gitcommitComment
+
+syn region gitcommitUntracked start=/^\z(.\) Untracked files:$/ end=/^\z1\=$\|^\z1\@!/ contains=gitcommitHeader containedin=gitcommitComment containedin=gitcommitComment contained transparent fold
+syn region gitcommitDiscarded start=/^\z(.\) Change\%(s not staged for commit\|d but not updated\):$/ end=/^\z1\=$\|^\z1\@!/ contains=gitcommitHeader,gitcommitDiscardedType containedin=gitcommitComment containedin=gitcommitComment contained transparent fold
+syn region gitcommitSelected start=/^\z(.\) Changes to be committed:$/ end=/^\z1$\|^\z1\@!/ contains=gitcommitHeader,gitcommitSelectedType containedin=gitcommitComment containedin=gitcommitComment contained transparent fold
+syn region gitcommitUnmerged start=/^\z(.\) Unmerged paths:$/ end=/^\z1\=$\|^\z1\@!/ contains=gitcommitHeader,gitcommitUnmergedType containedin=gitcommitComment containedin=gitcommitComment contained transparent fold
+
+syn match gitcommitUntrackedFile "\%(^.\t\)\@<=.*" contained containedin=gitcommitUntracked
+
+syn match gitcommitDiscardedType "\%(^.\t\)\@<=[^[:punct:][:space:]][^/::]*[^[:punct:][:space:]][::]\ze "he=e-1 contained nextgroup=gitcommitDiscardedFile skipwhite
+syn match gitcommitSelectedType "\%(^.\t\)\@<=[^[:punct:][:space:]][^/::]*[^[:punct:][:space:]][::]\ze "he=e-1 contained nextgroup=gitcommitSelectedFile skipwhite
+syn match gitcommitUnmergedType "\%(^.\t\)\@<=[^[:punct:][:space:]][^/::]*[^[:punct:][:space:]][::]\ze "he=e-1 contained nextgroup=gitcommitUnmergedFile skipwhite
+syn match gitcommitDiscardedFile "\S.\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitDiscardedArrow
+syn match gitcommitSelectedFile "\S.\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow
+syn match gitcommitUnmergedFile "\S.\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitUnmergedArrow
+syn match gitcommitDiscardedArrow " -> " contained nextgroup=gitcommitDiscardedFile
+syn match gitcommitSelectedArrow " -> " contained nextgroup=gitcommitSelectedFile
+syn match gitcommitUnmergedArrow " -> " contained nextgroup=gitcommitUnmergedFile
+
+hi def link gitcommitSummary Keyword
+hi def link gitcommitTrailerToken Label
+hi def link gitcommitComment Comment
+hi def link gitcommitHash Identifier
+hi def link gitcommitOnBranch Comment
+hi def link gitcommitBranch Special
+hi def link gitcommitNoBranch gitCommitBranch
+hi def link gitcommitDiscardedType gitcommitType
+hi def link gitcommitSelectedType gitcommitType
+hi def link gitcommitUnmergedType gitcommitType
+hi def link gitcommitType Type
+hi def link gitcommitNoChanges gitcommitHeader
+hi def link gitcommitHeader PreProc
+hi def link gitcommitUntrackedFile gitcommitFile
+hi def link gitcommitDiscardedFile gitcommitFile
+hi def link gitcommitSelectedFile gitcommitFile
+hi def link gitcommitUnmergedFile gitcommitFile
+hi def link gitcommitFile Constant
+hi def link gitcommitDiscardedArrow gitcommitArrow
+hi def link gitcommitSelectedArrow gitcommitArrow
+hi def link gitcommitUnmergedArrow gitcommitArrow
+hi def link gitcommitArrow gitcommitComment
+"hi def link gitcommitOverflow Error
+hi def link gitcommitBlank Error
+
+let b:current_syntax = "gitcommit"
diff --git a/runtime/syntax/gitconfig.vim b/runtime/syntax/gitconfig.vim
new file mode 100644
index 0000000..e5eaf10
--- /dev/null
+++ b/runtime/syntax/gitconfig.vim
@@ -0,0 +1,36 @@
+" Vim syntax file
+" Language: git config file
+" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
+" Filenames: gitconfig, .gitconfig, *.git/config
+" Last Change: 2019 Dec 05
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+syn sync minlines=10
+
+syn match gitconfigComment "[#;].*" contains=@Spell
+syn match gitconfigSection "\%(^\s*\)\@<=\[[a-z0-9.-]\+\]"
+syn match gitconfigSection '\%(^\s*\)\@<=\[[a-z0-9.-]\+ \+\"\%([^\\"]\|\\.\)*"\]'
+syn match gitconfigVariable "\%(^\s*\)\@<=\a[a-z0-9-]*\%(\s*\%([=#;]\|$\)\)\@=" nextgroup=gitconfigAssignment skipwhite
+syn region gitconfigAssignment matchgroup=gitconfigNone start=+=\s*+ skip=+\\+ end=+\s*$+ contained contains=gitconfigBoolean,gitconfigNumber,gitConfigString,gitConfigEscape,gitConfigError,gitconfigComment keepend
+syn keyword gitconfigBoolean true false yes no contained
+syn match gitconfigNumber "\<\d\+\>" contained
+syn region gitconfigString matchgroup=gitconfigDelim start=+"+ skip=+\\+ end=+"+ matchgroup=gitconfigError end=+[^\\"]\%#\@!$+ contained contains=gitconfigEscape,gitconfigEscapeError
+syn match gitconfigError +\\.+ contained
+syn match gitconfigEscape +\\[\\"ntb]+ contained
+syn match gitconfigEscape +\\$+ contained
+
+hi def link gitconfigComment Comment
+hi def link gitconfigSection Keyword
+hi def link gitconfigVariable Identifier
+hi def link gitconfigBoolean Boolean
+hi def link gitconfigNumber Number
+hi def link gitconfigString String
+hi def link gitconfigDelim Delimiter
+hi def link gitconfigEscape Special
+hi def link gitconfigError Error
+
+let b:current_syntax = "gitconfig"
diff --git a/runtime/syntax/gitignore.vim b/runtime/syntax/gitignore.vim
new file mode 100644
index 0000000..8e6d098
--- /dev/null
+++ b/runtime/syntax/gitignore.vim
@@ -0,0 +1,29 @@
+" Vim syntax file
+" Language: git ignore
+" Maintainer: ObserverOfTime <chronobserver@disroot.org>
+" Filenames: .gitignore, *.git/info/exclude
+" Last Change: 2022 Sep 10
+
+if exists('b:current_syntax')
+ finish
+endif
+
+" Comment
+syn keyword gitignoreTodo contained TODO FIXME XXX
+syn match gitignoreComment /^#.*/ contains=gitignoreTodo
+
+" Pattern
+syn match gitignorePattern /^#\@!.*$/ contains=gitignoreNegation,gitignoreGlob,gitignoreRange,gitignoreSeparator
+syn match gitignoreNegation /^!/ contained
+syn match gitignoreGlob /\\\@1<![?*]/ contained
+syn match gitignoreRange /\\\@1<!\[.\{-}\]/ contained
+syn match gitignoreSeparator '/' contained
+
+hi def link gitignoreComment Comment
+hi def link gitignoreGlob Special
+hi def link gitignoreNegation SpecialChar
+hi def link gitignoreRange Special
+hi def link gitignoreSeparator Delimiter
+hi def link gitignoreTodo Todo
+
+let b:current_syntax = 'gitignore'
diff --git a/runtime/syntax/gitolite.vim b/runtime/syntax/gitolite.vim
new file mode 100644
index 0000000..3a6da26
--- /dev/null
+++ b/runtime/syntax/gitolite.vim
@@ -0,0 +1,94 @@
+" Vim syntax file
+" Language: gitolite configuration
+" URL: https://github.com/sitaramc/gitolite/blob/master/contrib/vim/syntax/gitolite.vim
+" (https://raw.githubusercontent.com/sitaramc/gitolite/master/contrib/vim/syntax/gitolite.vim)
+" Maintainer: Sitaram Chamarty <sitaramc@gmail.com>
+" (former Maintainer: Teemu Matilainen <teemu.matilainen@iki.fi>)
+" Last Change: 2017 Oct 05
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" this seems to be the best way, for now.
+syntax sync fromstart
+
+" ---- common stuff
+
+syn match gitoliteGroup '@\S\+'
+
+syn match gitoliteComment '#.*' contains=gitoliteTodo
+syn keyword gitoliteTodo TODO FIXME XXX NOT contained
+
+" ---- main section
+
+" catch template-data syntax appearing outside template-data section
+syn match gitoliteRepoError '^\s*repo.*='
+syn match gitoliteRepoError '^\s*\S\+\s*=' " this gets overridden later when first word is a perm, don't worry
+
+" normal gitolite group and repo lines
+syn match gitoliteGroupLine '^\s*@\S\+\s*=\s*\S.*$' contains=gitoliteGroup,gitoliteComment
+syn match gitoliteRepoLine '^\s*repo\s\+[^=]*$' contains=gitoliteRepo,gitoliteGroup,gitoliteComment
+syn keyword gitoliteRepo repo contained
+
+syn keyword gitoliteSpecialRepo CREATOR
+
+" normal gitolite rule lines
+syn match gitoliteRuleLine '^\s*\(-\|C\|R\|RW+\?C\?D\?\)\s[^#]*' contains=gitoliteRule,gitoliteCreateRule,gitoliteDenyRule,gitoliteRefex,gitoliteUsers,gitoliteGroup
+syn match gitoliteRule '\(^\s*\)\@<=\(-\|C\|R\|RW+\?C\?D\?\)\s\@=' contained
+syn match gitoliteRefex '\(^\s*\(-\|R\|RW+\?C\?D\?\)\s\+\)\@<=\S.\{-}\(\s*=\)\@=' contains=gitoliteSpecialRefex
+syn match gitoliteSpecialRefex 'NAME/'
+syn match gitoliteSpecialRefex '/USER/'
+syn match gitoliteCreateRule '\(^\s*C\s.*=\s*\)\@<=\S[^#]*[^# ]' contained contains=gitoliteGroup
+syn match gitoliteDenyRule '\(^\s*-\s.*=\s*\)\@<=\S[^#]*[^# ]' contained
+
+" normal gitolite config (and similar) lines
+syn match gitoliteConfigLine '^\s*\(config\|option\|include\|subconf\)\s[^#]*' contains=gitoliteConfigKW,gitoliteConfigKey,gitoliteConfigVal,gitoliteComment
+syn keyword gitoliteConfigKW config option include subconf contained
+syn match gitoliteConfigKey '\(\(config\|option\)\s\+\)\@<=[^ =]*' contained
+syn match gitoliteConfigVal '\(=\s*\)\@<=\S.*' contained
+
+" ---- template-data section
+
+syn region gitoliteTemplateLine matchgroup=PreProc start='^=begin template-data$' end='^=end$' contains=gitoliteTplRepoLine,gitoliteTplRoleLine,gitoliteGroup,gitoliteComment,gitoliteTplError
+
+syn match gitoliteTplRepoLine '^\s*repo\s\+\S.*=.*' contained contains=gitoliteTplRepo,gitoliteTplTemplates,gitoliteGroup
+syn keyword gitoliteTplRepo repo contained
+syn match gitoliteTplTemplates '\(=\s*\)\@<=\S.*' contained contains=gitoliteGroup,gitoliteComment
+
+syn match gitoliteTplRoleLine '^\s*\S\+\s*=\s*.*' contained contains=gitoliteTplRole,gitoliteGroup,gitoliteComment
+syn match gitoliteTplRole '\S\+\s*='he=e-1 contained
+
+" catch normal gitolite rules appearing in template-data section
+syn match gitoliteTplError '^\s*repo[^=]*$' contained
+syn match gitoliteTplError '^\s*\(-\|R\|RW+\?C\?D\?\)\s'he=e-1 contained
+syn match gitoliteTplError '^\s*\(config\|option\|include\|subconf\)\s'he=e-1 contained
+syn match gitoliteTplError '^\s*@\S\+\s*=' contained contains=NONE
+
+hi def link gitoliteGroup Identifier
+hi def link gitoliteComment Comment
+hi def link gitoliteTodo ToDo
+hi def link gitoliteRepoError Error
+hi def link gitoliteGroupLine PreProc
+hi def link gitoliteRepo Keyword
+hi def link gitoliteSpecialRepo PreProc
+hi def link gitoliteRule Keyword
+hi def link gitoliteCreateRule PreProc
+hi def link gitoliteDenyRule WarningMsg
+hi def link gitoliteRefex Constant
+hi def link gitoliteSpecialRefex PreProc
+hi def link gitoliteConfigKW Keyword
+hi def link gitoliteConfigKey Identifier
+hi def link gitoliteConfigVal String
+hi def link gitoliteTplRepo Keyword
+hi def link gitoliteTplTemplates Constant
+hi def link gitoliteTplRole Constant
+hi def link gitoliteTplError Error
+
+let b:current_syntax = "gitolite"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/gitrebase.vim b/runtime/syntax/gitrebase.vim
new file mode 100644
index 0000000..13f157b
--- /dev/null
+++ b/runtime/syntax/gitrebase.vim
@@ -0,0 +1,62 @@
+" Vim syntax file
+" Language: git rebase --interactive
+" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
+" Filenames: git-rebase-todo
+" Last Change: 2022 Jan 05
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+let s:c = escape((matchstr(getline('$'), '^[#;@!$%^&|:]\S\@!') . '#')[0], '^$.*[]~\"/')
+
+syn match gitrebaseHash "\v<\x{7,}>" contained contains=@NoSpell
+syn match gitrebaseCommit "\v<\x{7,}>" nextgroup=gitrebaseSummary skipwhite contains=@NoSpell
+syn match gitrebasePick "\v^p%(ick)=>" nextgroup=gitrebaseCommit skipwhite
+syn match gitrebaseReword "\v^r%(eword)=>" nextgroup=gitrebaseCommit skipwhite
+syn match gitrebaseEdit "\v^e%(dit)=>" nextgroup=gitrebaseCommit skipwhite
+syn match gitrebaseSquash "\v^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite
+syn match gitrebaseFixup "\v^f%(ixup)=>" nextgroup=gitrebaseCommit skipwhite
+syn match gitrebaseExec "\v^%(x|exec)>" nextgroup=gitrebaseCommand skipwhite
+syn match gitrebaseBreak "\v^b%(reak)=>"
+syn match gitrebaseDrop "\v^d%(rop)=>" nextgroup=gitrebaseCommit skipwhite
+syn match gitrebaseNoop "\v^noop>"
+syn match gitrebaseMerge "\v^m(erge)=>" nextgroup=gitrebaseMergeOption,gitrebaseName skipwhite
+syn match gitrebaseLabel "\v^l(abel)=>" nextgroup=gitrebaseName skipwhite
+syn match gitrebaseReset "\v^(t|reset)=>" nextgroup=gitrebaseName skipwhite
+syn match gitrebaseSummary ".*" contains=gitrebaseHash contained
+syn match gitrebaseCommand ".*" contained
+exe 'syn match gitrebaseComment " \@<=' . s:c . ' empty$" containedin=gitrebaseSummary contained'
+exe 'syn match gitrebaseComment "^\s*' . s:c . '.*" contains=gitrebaseHash'
+syn match gitrebaseSquashError "\v%^%(s%(quash)=>|f%(ixup)=>)" nextgroup=gitrebaseCommit skipwhite
+syn match gitrebaseMergeOption "\v-[Cc]>" nextgroup=gitrebaseMergeCommit skipwhite contained
+syn match gitrebaseMergeCommit "\v<\x{7,}>" nextgroup=gitrebaseName skipwhite contained
+syn match gitrebaseName "\v[^[:space:].*?i:^~/-]\S+" nextgroup=gitrebaseMergeComment skipwhite contained
+exe 'syn match gitrebaseMergeComment "' . s:c . '" nextgroup=gitrebaseSummary skipwhite contained'
+
+unlet s:c
+
+hi def link gitrebaseCommit gitrebaseHash
+hi def link gitrebaseHash Identifier
+hi def link gitrebasePick Type
+hi def link gitrebaseReword Conditional
+hi def link gitrebaseEdit PreProc
+hi def link gitrebaseSquash Statement
+hi def link gitrebaseFixup Repeat
+hi def link gitrebaseExec Operator
+hi def link gitrebaseBreak Macro
+hi def link gitrebaseDrop Comment
+hi def link gitrebaseNoop Comment
+hi def link gitrebaseMerge Exception
+hi def link gitrebaseLabel Label
+hi def link gitrebaseReset Keyword
+hi def link gitrebaseSummary String
+hi def link gitrebaseComment Comment
+hi def link gitrebaseSquashError Error
+hi def link gitrebaseMergeCommit gitrebaseCommit
+hi def link gitrebaseMergeComment gitrebaseComment
+hi def link gitrebaseName Tag
+
+let b:current_syntax = "gitrebase"
diff --git a/runtime/syntax/gitsendemail.vim b/runtime/syntax/gitsendemail.vim
new file mode 100644
index 0000000..8fdf683
--- /dev/null
+++ b/runtime/syntax/gitsendemail.vim
@@ -0,0 +1,23 @@
+" Vim syntax file
+" Language: git send-email message
+" Maintainer: Tim Pope
+" Filenames: .gitsendemail.*
+" Last Change: 2016 Aug 29
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/mail.vim
+unlet! b:current_syntax
+syn include @gitsendemailDiff syntax/diff.vim
+syn region gitsendemailDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^-- %/ fold contains=@gitsendemailDiff
+
+syn case match
+
+syn match gitsendemailComment "\%^From.*#.*"
+syn match gitsendemailComment "^GIT:.*"
+
+hi def link gitsendemailComment Comment
+
+let b:current_syntax = "gitsendemail"
diff --git a/runtime/syntax/gkrellmrc.vim b/runtime/syntax/gkrellmrc.vim
new file mode 100644
index 0000000..f005ca2
--- /dev/null
+++ b/runtime/syntax/gkrellmrc.vim
@@ -0,0 +1,75 @@
+" Vim syntax file
+" This is a GENERATED FILE. Please always refer to source file at the URI below.
+" Language: gkrellm theme files `gkrellmrc'
+" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
+" Last Change: 2003-04-30
+" URL: http://trific.ath.cx/Ftp/vim/syntax/gkrellmrc.vim
+
+" Setup
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=_,-,a-z,A-Z,48-57
+
+syn case match
+
+" Base constructs
+syn match gkrellmrcComment "#.*$" contains=gkrellmrcFixme
+syn keyword gkrellmrcFixme FIXME TODO XXX NOT contained
+syn region gkrellmrcString start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline
+syn match gkrellmrcNumber "^-\=\(\d\+\)\=\.\=\d\+"
+syn match gkrellmrcNumber "\W-\=\(\d\+\)\=\.\=\d\+"lc=1
+syn keyword gkrellmrcConstant none
+syn match gkrellmrcRGBColor "#\(\x\{12}\|\x\{9}\|\x\{6}\|\x\{3}\)\>"
+
+" Keywords
+syn keyword gkrellmrcBuiltinExt cpu_nice_color cpu_nice_grid_color krell_depth krell_expand krell_left_margin krell_right_margin krell_x_hot krell_yoff mem_krell_buffers_depth mem_krell_buffers_expand mem_krell_buffers_x_hot mem_krell_buffers_yoff mem_krell_cache_depth mem_krell_cache_expand mem_krell_cache_x_hot mem_krell_cache_yoff sensors_bg_volt timer_bg_timer
+syn keyword gkrellmrcGlobal allow_scaling author chart_width_ref theme_alternatives
+syn keyword gkrellmrcSetCmd set_image_border set_integer set_string
+syn keyword gkrellmrcGlobal bg_slider_meter_border bg_slider_panel_border
+syn keyword gkrellmrcGlobal frame_bottom_height frame_left_width frame_right_width frame_top_height frame_left_chart_overlap frame_right_chart_overlap frame_left_panel_overlap frame_right_panel_overlap frame_left_spacer_overlap frame_right_spacer_overlap spacer_overlap_off cap_images_off
+syn keyword gkrellmrcGlobal frame_bottom_border frame_left_border frame_right_border frame_top_border spacer_top_border spacer_bottom_border frame_left_chart_border frame_right_chart_border frame_left_panel_border frame_right_panel_border
+syn keyword gkrellmrcGlobal chart_in_color chart_in_color_grid chart_out_color chart_out_color_grid
+syn keyword gkrellmrcGlobal bg_separator_height bg_grid_mode
+syn keyword gkrellmrcGlobal rx_led_x rx_led_y tx_led_x tx_led_y
+syn keyword gkrellmrcGlobal decal_mail_frames decal_mail_delay
+syn keyword gkrellmrcGlobal decal_alarm_frames decal_warn_frames
+syn keyword gkrellmrcGlobal krell_slider_depth krell_slider_expand krell_slider_x_hot
+syn keyword gkrellmrcGlobal button_panel_border button_meter_border
+syn keyword gkrellmrcGlobal large_font normal_font small_font
+syn keyword gkrellmrcGlobal spacer_bottom_height spacer_top_height spacer_bottom_height_chart spacer_top_height_chart spacer_bottom_height_meter spacer_top_height_meter
+syn keyword gkrellmrcExpandMode left right bar-mode left-scaled right-scaled bar-mode-scaled
+syn keyword gkrellmrcMeterName apm cal clock fs host mail mem swap timer sensors uptime
+syn keyword gkrellmrcChartName cpu proc disk inet and net
+syn match gkrellmrcSpecialClassName "\*"
+syn keyword gkrellmrcStyleCmd StyleMeter StyleChart StylePanel
+syn keyword gkrellmrcStyleItem textcolor alt_textcolor font alt_font transparency border label_position margin margins left_margin right_margin top_margin bottom_margin krell_depth krell_yoff krell_x_hot krell_expand krell_left_margin krell_right_margin
+
+" Define the default highlighting
+
+hi def link gkrellmrcComment Comment
+hi def link gkrellmrcFixme Todo
+
+hi def link gkrellmrcString gkrellmrcConstant
+hi def link gkrellmrcNumber gkrellmrcConstant
+hi def link gkrellmrcRGBColor gkrellmrcConstant
+hi def link gkrellmrcExpandMode gkrellmrcConstant
+hi def link gkrellmrcConstant Constant
+
+hi def link gkrellmrcMeterName gkrellmrcClass
+hi def link gkrellmrcChartName gkrellmrcClass
+hi def link gkrellmrcSpecialClassName gkrellmrcClass
+hi def link gkrellmrcClass Type
+
+hi def link gkrellmrcGlobal gkrellmrcItem
+hi def link gkrellmrcBuiltinExt gkrellmrcItem
+hi def link gkrellmrcStyleItem gkrellmrcItem
+hi def link gkrellmrcItem Function
+
+hi def link gkrellmrcSetCmd Special
+hi def link gkrellmrcStyleCmd Statement
+
+
+let b:current_syntax = "gkrellmrc"
diff --git a/runtime/syntax/gnash.vim b/runtime/syntax/gnash.vim
new file mode 100644
index 0000000..cce522d
--- /dev/null
+++ b/runtime/syntax/gnash.vim
@@ -0,0 +1,96 @@
+" Vim syntax file
+" Maintainer: Thilo Six
+" Contact: <vim-dev at vim dot org>
+" http://www.vim.org/maillist.php#vim-dev
+"
+" Description: highlight gnash configuration files
+" http://www.gnu.org/software/gnash/manual/gnashuser.html#gnashrc
+" File: runtime/syntax/gnash.vim
+" Last Change: 2012 May 19
+" Modeline: vim: ts=8:sw=2:sts=2:
+"
+" Credits: derived from Nikolai Weibulls readline.vim
+"
+" License: VIM License
+" Vim is Charityware, see ":help Uganda"
+"
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax") || &compatible
+ finish
+endif
+
+syn case match
+syn keyword GnashTodo contained TODO FIXME XXX NOTE
+
+" Comments
+syn match GnashComment "^#.*$" contains=@Spell,GnashTodo
+syn match GnashComment "\s#.*$" contains=@Spell,GnashTodo
+
+syn match GnashNumber display '\<\d\+\>'
+
+syn case ignore
+syn keyword GnashOn ON YES TRUE
+syn keyword GnashOff OFF NO FALSE
+
+syn match GnashSet '^\s*set\>'
+syn match GnashSet '^\s*append\>'
+
+syn match GnashKeyword '\<CertDir\>'
+syn match GnashKeyword '\<ASCodingErrorsVerbosity\>'
+syn match GnashKeyword '\<CertFile\>'
+syn match GnashKeyword '\<EnableExtensions\>'
+syn match GnashKeyword '\<HWAccel\>'
+syn match GnashKeyword '\<LCShmKey\>'
+syn match GnashKeyword '\<LocalConnection\>'
+syn match GnashKeyword '\<MalformedSWFVerbosity\>'
+syn match GnashKeyword '\<Renderer\>'
+syn match GnashKeyword '\<RootCert\>'
+syn match GnashKeyword '\<SOLReadOnly\>'
+syn match GnashKeyword '\<SOLSafeDir\>'
+syn match GnashKeyword '\<SOLreadonly\>'
+syn match GnashKeyword '\<SOLsafedir\>'
+syn match GnashKeyword '\<StartStopped\>'
+syn match GnashKeyword '\<StreamsTimeout\>'
+syn match GnashKeyword '\<URLOpenerFormat\>'
+syn match GnashKeyword '\<XVideo\>'
+syn match GnashKeyword '\<actionDump\>'
+syn match GnashKeyword '\<blacklist\>'
+syn match GnashKeyword '\<debugger\>'
+syn match GnashKeyword '\<debuglog\>'
+syn match GnashKeyword '\<delay\>'
+syn match GnashKeyword '\<enableExtensions\>'
+syn match GnashKeyword '\<flashSystemManufacturer\>'
+syn match GnashKeyword '\<flashSystemOS\>'
+syn match GnashKeyword '\<flashVersionString\>'
+syn match GnashKeyword '\<ignoreFSCommand\>'
+syn match GnashKeyword '\<ignoreShowMenu\>'
+syn match GnashKeyword '\<insecureSSL\>'
+syn match GnashKeyword '\<localSandboxPath\>'
+syn match GnashKeyword '\<localdomain\>'
+syn match GnashKeyword '\<localhost\>'
+syn match GnashKeyword '\<microphoneDevice\>'
+syn match GnashKeyword '\<parserDump\>'
+syn match GnashKeyword '\<pluginsound\>'
+syn match GnashKeyword '\<quality\>'
+syn match GnashKeyword '\<solLocalDomain\>'
+syn match GnashKeyword '\<sound\>'
+syn match GnashKeyword '\<splashScreen\>'
+syn match GnashKeyword '\<startStopped\>'
+syn match GnashKeyword '\<streamsTimeout\>'
+syn match GnashKeyword '\<urlOpenerFormat\>'
+syn match GnashKeyword '\<verbosity\>'
+syn match GnashKeyword '\<webcamDevice\>'
+syn match GnashKeyword '\<whitelist\>'
+syn match GnashKeyword '\<writelog\>'
+
+hi def link GnashOn Identifier
+hi def link GnashOff Preproc
+hi def link GnashComment Comment
+hi def link GnashTodo Todo
+hi def link GnashNumber Type
+hi def link GnashSet String
+hi def link GnashKeyword Keyword
+
+let b:current_syntax = "gnash"
+
diff --git a/runtime/syntax/gnuplot.vim b/runtime/syntax/gnuplot.vim
new file mode 100644
index 0000000..b5092d7
--- /dev/null
+++ b/runtime/syntax/gnuplot.vim
@@ -0,0 +1,549 @@
+" Vim syntax file
+" Language: gnuplot 4.7.0
+" Maintainer: Josh Wainwright <wainwright DOT ja AT gmail DOT com>
+" Last Maintainer: Andrew Rasmussen andyras@users.sourceforge.net
+" Original Maintainer: John Hoelzel johnh51@users.sourceforge.net
+" Last Change: 2021 Nov 16
+" additional changes from PR #8949
+" Filenames: *.gnu *.plt *.gpi *.gih *.gp *.gnuplot scripts: #!*gnuplot
+" URL: http://www.vim.org/scripts/script.php?script_id=4873
+" Original URL: http://johnh51.get.to/vim/syntax/gnuplot.vim
+
+" thanks to "David Necas (Yeti)" <yeti@physics.muni.cz>
+
+" credit also to Jim Eberle <jim.eberle@fastnlight.com>
+" for the script http://www.vim.org/scripts/script.php?script_id=1737
+
+" some shortened names to make demo files look clean... jeh. 11/2000
+" demos -> 3.8i ... jeh. 5/2003 - a work in progress...
+" added current commands, keywords, variables, todos, macros... amr 2014-02-24
+
+" For vim version 5.x: Clear all syntax items
+" For vim version 6.x: Quit when a syntax file was already loaded
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" ---- Special characters ---- "
+
+" no harm in just matching any \[char] within double quotes, right?
+syn match gnuplotSpecial "\\." contained
+" syn match gnuplotSpecial "\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[a-z\\]" contained
+
+" measurements in the units in, cm and pt are special
+syn match gnuplotUnit "\d+in"
+syn match gnuplotUnit "\d+cm"
+syn match gnuplotUnit "\d+pt"
+
+" external (shell) commands are special
+syn region gnuplotExternal start="^\s*!" end="$"
+
+" ---- Comments ---- "
+
+syn region gnuplotComment start="#" end="$" contains=gnuplotTodo,@Spell
+
+" ---- Constants ---- "
+
+" strings
+syn region gnuplotString start=+"+ skip=+\\"+ end=+"+ contains=gnuplotSpecial,@Spell
+syn region gnuplotString start="'" end="'" contains=@Spell
+
+" built-in variables
+syn keyword gnuplotNumber GNUTERM GPVAL_TERM GPVAL_TERMOPTIONS GPVAL_SPLOT
+syn keyword gnuplotNumber GPVAL_OUTPUT GPVAL_ENCODING GPVAL_VERSION
+syn keyword gnuplotNumber GPVAL_PATCHLEVEL GPVAL_COMPILE_OPTIONS
+syn keyword gnuplotNumber GPVAL_MULTIPLOT GPVAL_PLOT GPVAL_VIEW_ZSCALE
+syn keyword gnuplotNumber GPVAL_TERMINALS GPVAL_pi GPVAL_NaN
+syn keyword gnuplotNumber GPVAL_ERRNO GPVAL_ERRMSG GPVAL_PWD
+syn keyword gnuplotNumber pi NaN GPVAL_LAST_PLOT GPVAL_TERM_WINDOWID
+syn keyword gnuplotNumber GPVAL_X_MIN GPVAL_X_MAX GPVAL_X_LOG
+syn keyword gnuplotNumber GPVAL_DATA_X_MIN GPVAL_DATA_X_MAX GPVAL_Y_MIN
+syn keyword gnuplotNumber GPVAL_Y_MAX GPVAL_Y_LOG GPVAL_DATA_Y_MIN
+syn keyword gnuplotNumber GPVAL_DATA_Y_MAX GPVAL_X2_MIN GPVAL_X2_MAX
+syn keyword gnuplotNumber GPVAL_X2_LOG GPVAL_DATA_X2_MIN GPVAL_DATA_X2_MAX
+syn keyword gnuplotNumber GPVAL_Y2_MIN GPVAL_Y2_MAX GPVAL_Y2_LOG
+syn keyword gnuplotNumber GPVAL_DATA_Y2_MIN GPVAL_DATA_Y2_MAX GPVAL_Z_MIN
+syn keyword gnuplotNumber GPVAL_Z_MAX GPVAL_Z_LOG GPVAL_DATA_Z_MIN
+syn keyword gnuplotNumber GPVAL_DATA_Z_MAX GPVAL_CB_MIN GPVAL_CB_MAX
+syn keyword gnuplotNumber GPVAL_CB_LOG GPVAL_DATA_CB_MIN GPVAL_DATA_CB_MAX
+syn keyword gnuplotNumber GPVAL_T_MIN GPVAL_T_MAX GPVAL_T_LOG GPVAL_U_MIN
+syn keyword gnuplotNumber GPVAL_U_MAX GPVAL_U_LOG GPVAL_V_MIN GPVAL_V_MAX
+syn keyword gnuplotNumber GPVAL_V_LOG GPVAL_R_MIN GPVAL_R_LOG
+syn keyword gnuplotNumber GPVAL_TERM_XMIN GPVAL_TERM_XMAX GPVAL_TERM_YMIN
+syn keyword gnuplotNumber GPVAL_TERM_YMAX GPVAL_TERM_XSIZE
+syn keyword gnuplotNumber GPVAL_TERM_YSIZE GPVAL_VIEW_MAP GPVAL_VIEW_ROT_X
+syn keyword gnuplotNumber GPVAL_VIEW_ROT_Z GPVAL_VIEW_SCALE
+
+" function name variables
+syn match gnuplotNumber "GPFUN_\h*"
+
+" stats variables
+syn keyword gnuplotNumber STATS_records STATS_outofrange STATS_invalid
+syn keyword gnuplotNumber STATS_blank STATS_blocks STATS_columns STATS_min
+syn keyword gnuplotNumber STATS_max STATS_index_min STATS_index_max
+syn keyword gnuplotNumber STATS_lo_quartile STATS_median STATS_up_quartile
+syn keyword gnuplotNumber STATS_mean STATS_stddev STATS_sum STATS_sumsq
+syn keyword gnuplotNumber STATS_correlation STATS_slope STATS_intercept
+syn keyword gnuplotNumber STATS_sumxy STATS_pos_min_y STATS_pos_max_y
+syn keyword gnuplotNumber STATS_mean STATS_stddev STATS_mean_x STATS_sum_x
+syn keyword gnuplotNumber STATS_stddev_x STATS_sumsq_x STATS_min_x
+syn keyword gnuplotNumber STATS_max_x STATS_median_x STATS_lo_quartile_x
+syn keyword gnuplotNumber STATS_up_quartile_x STATS_index_min_x
+syn keyword gnuplotNumber STATS_index_max_x STATS_mean_y STATS_stddev_y
+syn keyword gnuplotNumber STATS_sum_y STATS_sumsq_y STATS_min_y
+syn keyword gnuplotNumber STATS_max_y STATS_median_y STATS_lo_quartile_y
+syn keyword gnuplotNumber STATS_up_quartile_y STATS_index_min_y
+syn keyword gnuplotNumber STATS_index_max_y STATS_correlation STATS_sumxy
+
+" deprecated fit variables
+syn keyword gnuplotError FIT_LIMIT FIT_MAXITER FIT_START_LAMBDA
+syn keyword gnuplotError FIT_LAMBDA_FACTOR FIT_LOG FIT_SCRIPT
+
+" numbers, from c.vim
+
+" integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match gnuplotNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"
+
+" floating point number, with dot, optional exponent
+syn match gnuplotFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
+
+" floating point number, starting with a dot, optional exponent
+syn match gnuplotFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+
+" floating point number, without dot, with exponent
+syn match gnuplotFloat "\<\d\+e[-+]\=\d\+[fl]\=\>"
+
+" hex number
+syn match gnuplotNumber "\<0x\x\+\(u\=l\=\|lu\)\>"
+syn case match
+
+" flag an octal number with wrong digits by not highlighting
+syn match gnuplotOctalError "\<0\o*[89]"
+
+" ---- Identifiers: Functions ---- "
+
+" numerical functions
+syn keyword gnuplotFunc abs acos acosh airy arg asin asinh atan atan2
+syn keyword gnuplotFunc atanh EllipticK EllipticE EllipticPi besj0 besj1
+syn keyword gnuplotFunc besy0 besy1 ceil cos cosh erf erfc exp expint
+syn keyword gnuplotFunc floor gamma ibeta inverf igamma imag invnorm int
+syn keyword gnuplotFunc lambertw lgamma log log10 norm rand real sgn sin
+syn keyword gnuplotFunc sin sinh sqrt tan tanh voigt
+
+" string functions
+syn keyword gnuplotFunc gprintf sprintf strlen strstrt substr strftime
+syn keyword gnuplotFunc strptime system word words
+
+" other functions
+syn keyword gnuplotFunc column columnhead columnheader defined exists
+syn keyword gnuplotFunc hsv2rgb stringcolumn timecolumn tm_hour tm_mday
+syn keyword gnuplotFunc tm_min tm_mon tm_sec tm_wday tm_yday tm_year
+syn keyword gnuplotFunc time valid value
+
+" ---- Statements ---- "
+
+" common (builtin) variable names
+syn keyword gnuplotKeyword x y t u v z s
+
+" conditionals
+syn keyword gnuplotConditional if else
+
+" repeats
+syn keyword gnuplotRepeat do for while
+
+" operators
+syn match gnuplotOperator "[-+*/^|&?:]"
+syn match gnuplotOperator "\*\*"
+syn match gnuplotOperator "&&"
+syn match gnuplotOperator "||"
+
+" Keywords
+
+" keywords for 'fit' command
+syn keyword gnuplotKeyword via z x:z x:z:s x:y:z:s
+syn keyword gnuplotKeyword x:y:t:z:s x:y:t:u:z:s x:y:t:u:v:z:s
+
+" keywords for 'plot' command
+" 'axes' keyword
+syn keyword gnuplotKeyword axes x1y1 x1y2 x2y1 x2y2
+" 'binary' keyword
+syn keyword gnuplotKeyword binary matrix general array record format endian
+syn keyword gnuplotKeyword filetype avs edf png scan transpose dx dy dz
+syn keyword gnuplotKeyword flipx flipy flipz origin center rotate using
+syn keyword gnuplotKeyword perpendicular skip every
+" datafile keywords
+syn keyword gnuplotKeyword binary nonuniform matrix index every using
+syn keyword gnuplotKeyword smooth volatile noautoscale every index
+" 'smooth' keywords
+syn keyword gnuplotKeyword unique frequency cumulative cnormal kdensity
+syn keyword gnuplotKeyword csplines acsplines bezer sbezier
+" deprecated 'thru' keyword
+syn keyword gnuplotError thru
+" 'using' keyword
+syn keyword gnuplotKeyword using u xticlabels yticlabels zticlabels
+syn keyword gnuplotKeyword x2ticlabels y2ticlabels xtic ytic ztic
+" 'errorbars' keywords
+syn keyword gnuplotKeyword errorbars xerrorbars yerrorbars xyerrorbars
+" 'errorlines' keywords
+syn keyword gnuplotKeyword errorlines xerrorlines yerrorlines xyerrorlines
+" 'title' keywords
+syn keyword gnuplotKeyword title t tit notitle columnheader at beginning
+syn keyword gnuplotKeyword end
+" 'with' keywords
+syn keyword gnuplotKeyword with w linestyle ls linetype lt linewidth
+syn keyword gnuplotKeyword lw linecolor lc pointtype pt pointsize ps
+syn keyword gnuplotKeyword fill fs nohidden3d nocontours nosurface palette
+" styles for 'with'
+syn keyword gnuplotKeyword lines l points p linespoints lp surface dots
+syn keyword gnuplotKeyword impulses labels vectors steps fsteps histeps
+syn keyword gnuplotKeyword errorbars errorlines financebars xerrorbars
+syn keyword gnuplotKeyword xerrorlines xyerrorbars yerrorbars yerrorlines
+syn keyword gnuplotKeyword boxes boxerrorbars boxxyerrorbars boxplot
+syn keyword gnuplotKeyword candlesticks circles ellipses filledcurves
+syn keyword gnuplotKeyword histogram image rgbimage rgbalpha pm3d variable
+
+" keywords for 'save' command
+syn keyword gnuplotKeyword save functions func variables all var terminal
+syn keyword gnuplotKeyword term set
+
+" keywords for 'set/show' command
+" set angles
+syn keyword gnuplotKeyword angles degrees deg radians rad
+" set arrow
+syn keyword gnuplotKeyword arrow from to rto length angle arrowstyle as
+syn keyword gnuplotKeyword nohead head backhead heads size filled empty
+syn keyword gnuplotKeyword nofilled front back linestyle linetype linewidth
+" set autoscale
+" TODO regexp here
+syn keyword gnuplotKeyword autoscale x y z cb x2 y2 zy min max fixmin
+syn keyword gnuplotKeyword fixmax fix keepfix noextend
+" set bars
+syn keyword gnuplotKeyword bars small large fullwidth front back
+" set bind
+syn keyword gnuplotKeyword bind
+" set margins
+" TODO regexp
+syn keyword gnuplotKeyword margin bmargin lmargin rmargin tmargin
+" set border
+syn keyword gnuplotKeyword border front back
+" set boxwidth
+syn keyword gnuplotKeyword boxwidth absolute relative
+" deprecated set clabel
+syn keyword gnuplotError clabel
+" set clip
+syn keyword gnuplotKeyword clip points one two
+" set cntrlabel
+syn keyword gnuplotKeyword cntrlabel format font start interval onecolor
+" set cntrparam
+syn keyword gnuplotKeyword cntrparam linear cubicspline bspline points
+syn keyword gnuplotKeyword order levels auto discrete incremental
+" set colorbox
+syn keyword gnuplotKeyword colorbox vertical horizontal default user origin
+syn keyword gnuplotKeyword size front back noborder bdefault border
+" show colornames
+syn keyword gnuplotKeyword colornames
+" set contour
+syn keyword gnuplotKeyword contour base surface both
+" set datafile
+syn keyword gnuplotKeyword datafile fortran nofpe_trap missing separator
+syn keyword gnuplotKeyword whitespace tab comma commentschars binary
+" set decimalsign
+syn keyword gnuplotKeyword decimalsign locale
+" set dgrid3d
+syn keyword gnuplotKeyword dgrid3d splines qnorm gauss cauchy exp box hann
+syn keyword gnuplotKeyword kdensity
+" set dummy
+syn keyword gnuplotKeyword dummy
+" set encoding
+syn keyword gnuplotKeyword encoding default iso_8859_1 iso_8859_15
+syn keyword gnuplotKeyword iso_8859_2 iso_8859_9 koi8r koi8u cp437 cp850
+syn keyword gnuplotKeyword cp852 cp950 cp1250 cp1251 cp1254 sjis utf8
+" set fit
+syn keyword gnuplotKeyword fit logfile default quiet noquiet results brief
+syn keyword gnuplotKeyword verbose errorvariables noerrorvariables
+syn keyword gnuplotKeyword errorscaling noerrorscaling prescale noprescale
+syn keyword gnuplotKeyword maxiter none limit limit_abs start-lambda script
+syn keyword gnuplotKeyword lambda-factor
+" set fontpath
+syn keyword gnuplotKeyword fontpath
+" set format
+syn keyword gnuplotKeyword format
+" show functions
+syn keyword gnuplotKeyword functions
+" set grid
+syn keyword gnuplotKeyword grid polar layerdefault xtics ytics ztics x2tics
+syn keyword gnuplotKeyword y2tics cbtics mxtics mytics mztics mx2tics
+syn keyword gnuplotKeyword my2tics mcbtics xmtics ymtics zmtics x2mtics
+syn keyword gnuplotKeyword y2mtics cbmtics noxtics noytics noztics nox2tics
+syn keyword gnuplotKeyword noy2tics nocbtics nomxtics nomytics nomztics
+syn keyword gnuplotKeyword nomx2tics nomy2tics nomcbtics
+" set hidden3d
+syn keyword gnuplotKeyword hidden3d offset trianglepattern undefined
+syn keyword gnuplotKeyword altdiagonal noaltdiagonal bentover nobentover
+syn keyword gnuplotKeyword noundefined
+" set historysize
+syn keyword gnuplotKeyword historysize
+" set isosamples
+syn keyword gnuplotKeyword isosamples
+" set key
+syn keyword gnuplotKeyword key on off inside outside at left right center
+syn keyword gnuplotKeyword top bottom vertical horizontal Left Right
+syn keyword gnuplotKeyword opaque noopaque reverse noreverse invert maxrows
+syn keyword gnuplotKeyword noinvert samplen spacing width height autotitle
+syn keyword gnuplotKeyword noautotitle title enhanced noenhanced font
+syn keyword gnuplotKeyword textcolor box nobox linetype linewidth maxcols
+" set label
+syn keyword gnuplotKeyword label left center right rotate norotate by font
+syn keyword gnuplotKeyword front back textcolor point nopoint offset boxed
+syn keyword gnuplotKeyword hypertext
+" set linetype
+syn keyword gnuplotKeyword linetype
+" set link
+syn keyword gnuplotKeyword link via inverse
+" set loadpath
+syn keyword gnuplotKeyword loadpath
+" set locale
+syn keyword gnuplotKeyword locale
+" set logscale
+syn keyword gnuplotKeyword logscale log
+" set macros
+syn keyword gnuplotKeyword macros
+" set mapping
+syn keyword gnuplotKeyword mapping cartesian spherical cylindrical
+" set mouse
+syn keyword gnuplotKeyword mouse doubleclick nodoubleclick zoomcoordinates
+syn keyword gnuplotKeyword nozoomcoordinates ruler noruler at polardistance
+syn keyword gnuplotKeyword nopolardistance deg tan format clipboardformat
+syn keyword gnuplotKeyword mouseformat labels nolabels zoomjump nozoomjump
+syn keyword gnuplotKeyword verbose noverbose
+" set multiplot
+syn keyword gnuplotKeyword multiplot title font layout rowsfirst downwards
+syn keyword gnuplotKeyword downwards upwards scale offset
+" set object
+syn keyword gnuplotKeyword object behind fillcolor fc fs rectangle ellipse
+syn keyword gnuplotKeyword circle polygon at center size units xy xx yy to
+syn keyword gnuplotKeyword from
+" set offsets
+syn keyword gnuplotKeyword offsets
+" set origin
+syn keyword gnuplotKeyword origin
+" set output
+syn keyword gnuplotKeyword output
+" set parametric
+syn keyword gnuplotKeyword parametric
+" show plot
+syn keyword gnuplotKeyword plot add2history
+" set pm3d
+syn keyword gnuplotKeyword hidden3d interpolate scansautomatic scansforward
+syn keyword gnuplotKeyword scansbackward depthorder flush begin center end
+syn keyword gnuplotKeyword ftriangles noftriangles clip1in clip4in mean map
+syn keyword gnuplotKeyword corners2color geomean harmean rms median min max
+syn keyword gnuplotKeyword c1 c2 c3 c4 pm3d at nohidden3d implicit explicit
+" set palette
+syn keyword gnuplotKeyword palette gray color gamma rgbformulae defined
+syn keyword gnuplotKeyword file functions cubehelix start cycles saturation
+syn keyword gnuplotKeyword model RGB HSV CMY YIQ XYZ positive negative
+syn keyword gnuplotKeyword nops_allcF ps_allcF maxcolors float int gradient
+syn keyword gnuplotKeyword fit2rgbformulae rgbformulae
+" set pointintervalbox
+syn keyword gnuplotKeyword pointintervalbox
+" set pointsize
+syn keyword gnuplotKeyword pointsize
+" set polar
+syn keyword gnuplotKeyword polar
+" set print
+syn keyword gnuplotKeyword print append
+" set psdir
+syn keyword gnuplotKeyword psdir
+" set raxis
+syn keyword gnuplotKeyword raxis rrange rtics
+" set samples
+syn keyword gnuplotKeyword samples
+" set size
+syn keyword gnuplotKeyword size square nosquare ratio noratio
+" set style
+syn keyword gnuplotKeyword style arrow auto back border boxplot
+syn keyword gnuplotKeyword candlesticks circle clustered columnstacked data
+syn keyword gnuplotKeyword default ellipse empty fill[ed] financebars
+syn keyword gnuplotKeyword fraction front function gap graph head[s]
+syn keyword gnuplotKeyword histogram increment labels lc line linecolor
+syn keyword gnuplotKeyword linetype linewidth lt lw noborder nofilled
+syn keyword gnuplotKeyword nohead nooutliers nowedge off opaque outliers
+syn keyword gnuplotKeyword palette pattern pi pointinterval pointsize
+syn keyword gnuplotKeyword pointtype ps pt radius range rectangle
+syn keyword gnuplotKeyword rowstacked screen separation size solid sorted
+syn keyword gnuplotKeyword textbox units unsorted userstyles wedge
+syn keyword gnuplotKeyword x x2 xx xy yy
+" set surface
+syn keyword gnuplotKeyword surface implicit explicit
+" set table
+syn keyword gnuplotKeyword table
+" set terminal (list of terminals)
+syn keyword gnuplotKeyword terminal term push pop aed512 aed767 aifm aqua
+syn keyword gnuplotKeyword be cairo cairolatex canvas cgm context corel
+syn keyword gnuplotKeyword debug dumb dxf dxy800a eepic emf emxvga epscairo
+syn keyword gnuplotKeyword epslatex epson_180dpi excl fig ggi gif gpic hpgl
+syn keyword gnuplotKeyword grass hp2623a hp2648 hp500c hpljii hppj imagen
+syn keyword gnuplotKeyword jpeg kyo latex linux lua mf mif mp next openstep
+syn keyword gnuplotKeyword pbm pdf pdfcairo pm png pngcairo postscript
+syn keyword gnuplotKeyword pslatex pstex pstricks qms qt regis sun svg svga
+syn keyword gnuplotKeyword tek40 tek410x texdraw tgif tikz tkcanvas tpic
+syn keyword gnuplotKeyword vgagl vws vx384 windows wx wxt x11 xlib
+" keywords for 'set terminal'
+syn keyword gnuplotKeyword color monochrome dashlength dl eps pdf fontscale
+syn keyword gnuplotKeyword standalone blacktext colortext colourtext header
+syn keyword gnuplotKeyword noheader mono color solid dashed notransparent
+syn keyword gnuplotKeyword crop crop background input rounded butt square
+syn keyword gnuplotKeyword size fsize standalone name jsdir defaultsize
+syn keyword gnuplotKeyword timestamp notimestamp colour mitered beveled
+syn keyword gnuplotKeyword round squared palfuncparam blacktext nec_cp6
+syn keyword gnuplotKeyword mppoints inlineimages externalimages defaultfont
+syn keyword gnuplotKeyword aspect feed nofeed rotate small tiny standalone
+syn keyword gnuplotKeyword oldstyle newstyle level1 leveldefault level3
+syn keyword gnuplotKeyword background nobackground solid clip noclip
+syn keyword gnuplotKeyword colortext colourtext epson_60dpi epson_lx800
+syn keyword gnuplotKeyword okidata starc tandy_60dpi dpu414 nec_cp6 draft
+syn keyword gnuplotKeyword medium large normal landscape portrait big
+syn keyword gnuplotKeyword inches pointsmax textspecial texthidden
+syn keyword gnuplotKeyword thickness depth version acceleration giant
+syn keyword gnuplotKeyword delay loop optimize nooptimize pspoints
+syn keyword gnuplotKeyword FNT9X17 FNT13X25 interlace nointerlace courier
+syn keyword gnuplotKeyword originreset nooriginreset gparrows nogparrows
+syn keyword gnuplotKeyword picenvironment nopicenvironment tightboundingbox
+syn keyword gnuplotKeyword notightboundingbox charsize gppoints nogppoints
+syn keyword gnuplotKeyword fontscale textscale fulldoc nofulldoc standalone
+syn keyword gnuplotKeyword preamble header tikzplot tikzarrows notikzarrows
+syn keyword gnuplotKeyword cmykimages externalimages noexternalimages
+syn keyword gnuplotKeyword polyline vectors magnification psnfss nopsnfss
+syn keyword gnuplotKeyword psnfss-version7 prologues a4paper amstex fname
+syn keyword gnuplotKeyword fsize server persist widelines interlace
+syn keyword gnuplotKeyword truecolor notruecolor defaultplex simplex duplex
+syn keyword gnuplotKeyword nofontfiles adobeglyphnames noadobeglyphnames
+syn keyword gnuplotKeyword nostandalone metric textrigid animate nopspoints
+syn keyword gnuplotKeyword hpdj FNT5X9 roman emtex rgbimages bitmap
+syn keyword gnuplotKeyword nobitmap providevars nointerlace add delete
+syn keyword gnuplotKeyword auxfile hacktext unit raise palfuncparam
+syn keyword gnuplotKeyword noauxfile nohacktext nounit noraise ctrl noctrl
+syn keyword gnuplotKeyword close widget fixed dynamic tek40xx vttek
+syn keyword gnuplotKeyword kc-tek40xx km-tek40xx bitgraph perltk
+syn keyword gnuplotKeyword interactive red green blue interpolate mode
+syn keyword gnuplotKeyword position ctrlq replotonresize position noctrlq
+syn keyword gnuplotKeyword noreplotonresize
+" set termoption
+syn keyword gnuplotKeyword termoption font fontscale solid dashed
+" set tics
+syn keyword gnuplotKeyword tics add axis border mirror nomirror in out
+syn keyword gnuplotKeyword scale rotate norotate by offset nooffset left
+syn keyword gnuplotKeyword autojustify format font textcolor right center
+" deprecated set ticslevel
+syn keyword gnuplotError ticslevel ticscale
+" set timestamp
+syn keyword gnuplotKeyword timestamp top bottom offset font
+" set timefmt
+syn keyword gnuplotKeyword timefmt
+" set title
+syn keyword gnuplotKeyword title offset font textcolor tc
+" set ranges
+syn keyword gnuplotKeyword trange urange vrange
+" show variables
+syn keyword gnuplotKeyword variables
+" show version
+syn keyword gnuplotKeyword version
+" set view
+syn keyword gnuplotKeyword view map equal noequal xy xyz
+" set x2data
+syn keyword gnuplotKeyword xdata ydata zdata x2data y2data cbdata xdtics
+syn keyword gnuplotKeyword ydtics zdtics x2dtics y2dtics cbdtics xzeroaxis
+syn keyword gnuplotKeyword yzeroaxis zzeroaxis x2zeroaxis y2zeroaxis
+syn keyword gnuplotKeyword cbzeroaxis time geographic
+" set label
+syn keyword gnuplotKeyword xlabel ylabel zlabel x2label y2label cblabel
+syn keyword gnuplotKeyword offset font textcolor by parallel
+" set range
+syn keyword gnuplotKeyword xrange yrange zrange x2range y2range cbrange
+" set xyplane
+syn keyword gnuplotKeyword xyplane
+" set zeroaxis
+" set zero
+syn keyword gnuplotKeyword zero
+" set zeroaxis
+syn keyword gnuplotKeyword zeroaxis
+
+" keywords for 'stats' command
+syn keyword gnuplotKeyword nooutput
+
+" keywords for 'test' command
+syn keyword gnuplotKeyword terminal palette rgb rbg grb gbr brg bgr
+
+" The transparent gnuplot keyword cannot use 'syn keyword' as transparent
+" has a special meaning in :syntax commands.
+syn match gnuplotKeyword "\<transparent\>"
+
+" ---- Macros ---- "
+
+syn match gnuplotMacro "@\w*"
+
+" ---- Todos ---- "
+
+syn keyword gnuplotTodo contained TODO FIXME XXX
+
+" ---- Types: gnuplot commands ---- "
+
+" I set the commands as Types to distinguish them visually from keywords for the
+" commands. This comes at the end of the syntax file because some commands
+" are redundant with keywords. It's probably too much trouble to go and
+" create special regions for each redundant keyword/command pair, which means
+" that some keywords (e.g. 'p') will be highlighted as commands.
+
+syn keyword gnuplotStatement cd call clear evaluate exit fit help history
+syn keyword gnuplotStatement load lower pause plot p print pwd quit raise
+syn keyword gnuplotStatement refresh replot rep reread reset save set show
+syn keyword gnuplotStatement shell splot spstats stats system test undefine
+syn keyword gnuplotStatement unset update
+
+" ---- Define the default highlighting ---- "
+" Only when an item doesn't have highlighting yet
+
+" ---- Comments ---- "
+hi def link gnuplotComment Comment
+
+" ---- Constants ---- "
+hi def link gnuplotString String
+hi def link gnuplotNumber Number
+hi def link gnuplotFloat Float
+
+" ---- Identifiers ---- "
+hi def link gnuplotIdentifier Identifier
+
+" ---- Statements ---- "
+hi def link gnuplotConditional Conditional
+hi def link gnuplotRepeat Repeat
+hi def link gnuplotKeyword Keyword
+hi def link gnuplotOperator Operator
+
+" ---- PreProcs ---- "
+hi def link gnuplotMacro Macro
+
+" ---- Types ---- "
+hi def link gnuplotStatement Type
+hi def link gnuplotFunc Identifier
+
+" ---- Specials ---- "
+hi def link gnuplotSpecial Special
+hi def link gnuplotUnit Special
+hi def link gnuplotExternal Special
+
+" ---- Errors ---- "
+hi def link gnuplotError Error
+hi def link gnuplotOctalError Error
+
+" ---- Todos ---- "
+hi def link gnuplotTodo Todo
+
+
+let b:current_syntax = "gnuplot"
+
+" vim: ts=8
diff --git a/runtime/syntax/go.vim b/runtime/syntax/go.vim
new file mode 100644
index 0000000..bf967fd
--- /dev/null
+++ b/runtime/syntax/go.vim
@@ -0,0 +1,550 @@
+" Copyright 2009 The Go Authors. All rights reserved.
+" Use of this source code is governed by a BSD-style
+" license that can be found in the LICENSE file.
+"
+" go.vim: Vim syntax file for Go.
+" Language: Go
+" Maintainer: Billie Cleek <bhcleek@gmail.com>
+" Latest Revision: 2023-02-19
+" License: BSD-style. See LICENSE file in source repository.
+" Repository: https://github.com/fatih/vim-go
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:keepcpo = &cpo
+set cpo&vim
+
+function! s:FoldEnable(...) abort
+ if a:0 > 0
+ return index(s:FoldEnable(), a:1) > -1
+ endif
+ return get(g:, 'go_fold_enable', ['block', 'import', 'varconst', 'package_comment'])
+endfunction
+
+function! s:HighlightArrayWhitespaceError() abort
+ return get(g:, 'go_highlight_array_whitespace_error', 0)
+endfunction
+
+function! s:HighlightChanWhitespaceError() abort
+ return get(g:, 'go_highlight_chan_whitespace_error', 0)
+endfunction
+
+function! s:HighlightExtraTypes() abort
+ return get(g:, 'go_highlight_extra_types', 0)
+endfunction
+
+function! s:HighlightSpaceTabError() abort
+ return get(g:, 'go_highlight_space_tab_error', 0)
+endfunction
+
+function! s:HighlightTrailingWhitespaceError() abort
+ return get(g:, 'go_highlight_trailing_whitespace_error', 0)
+endfunction
+
+function! s:HighlightOperators() abort
+ return get(g:, 'go_highlight_operators', 0)
+endfunction
+
+function! s:HighlightFunctions() abort
+ return get(g:, 'go_highlight_functions', 0)
+endfunction
+
+function! s:HighlightFunctionParameters() abort
+ return get(g:, 'go_highlight_function_parameters', 0)
+endfunction
+
+function! s:HighlightFunctionCalls() abort
+ return get(g:, 'go_highlight_function_calls', 0)
+endfunction
+
+function! s:HighlightFields() abort
+ return get(g:, 'go_highlight_fields', 0)
+endfunction
+
+function! s:HighlightTypes() abort
+ return get(g:, 'go_highlight_types', 0)
+endfunction
+
+function! s:HighlightBuildConstraints() abort
+ return get(g:, 'go_highlight_build_constraints', 0)
+endfunction
+
+function! s:HighlightStringSpellcheck() abort
+ return get(g:, 'go_highlight_string_spellcheck', 1)
+endfunction
+
+function! s:HighlightFormatStrings() abort
+ return get(g:, 'go_highlight_format_strings', 1)
+endfunction
+
+function! s:HighlightGenerateTags() abort
+ return get(g:, 'go_highlight_generate_tags', 0)
+endfunction
+
+function! s:HighlightVariableAssignments() abort
+ return get(g:, 'go_highlight_variable_assignments', 0)
+endfunction
+
+function! s:HighlightVariableDeclarations() abort
+ return get(g:, 'go_highlight_variable_declarations', 0)
+endfunction
+
+syn case match
+
+syn keyword goPackage package
+syn keyword goImport import contained
+syn keyword goVar var contained
+syn keyword goConst const contained
+
+hi def link goPackage Statement
+hi def link goImport Statement
+hi def link goVar Keyword
+hi def link goConst Keyword
+hi def link goDeclaration Keyword
+
+" Keywords within functions
+syn keyword goStatement defer go goto return break continue fallthrough
+syn keyword goConditional if else switch select
+syn keyword goLabel case default
+syn keyword goRepeat for range
+
+hi def link goStatement Statement
+hi def link goConditional Conditional
+hi def link goLabel Label
+hi def link goRepeat Repeat
+
+" Predefined types
+syn keyword goType chan map bool string error any comparable
+syn keyword goSignedInts int int8 int16 int32 int64 rune
+syn keyword goUnsignedInts byte uint uint8 uint16 uint32 uint64 uintptr
+syn keyword goFloats float32 float64
+syn keyword goComplexes complex64 complex128
+
+hi def link goType Type
+hi def link goSignedInts Type
+hi def link goUnsignedInts Type
+hi def link goFloats Type
+hi def link goComplexes Type
+
+" Predefined functions and values
+syn keyword goBuiltins append cap close complex copy delete imag len
+syn keyword goBuiltins make new panic print println real recover
+syn keyword goBoolean true false
+syn keyword goPredefinedIdentifiers nil iota
+
+hi def link goBuiltins Identifier
+hi def link goPredefinedIdentifiers Constant
+" Boolean links to Constant by default by vim: goBoolean and goPredefinedIdentifiers
+" will be highlighted the same, but having the separate groups allows users to
+" have separate highlighting for them if they desire.
+hi def link goBoolean Boolean
+
+" Comments; their contents
+syn keyword goTodo contained TODO FIXME XXX BUG
+syn cluster goCommentGroup contains=goTodo
+
+syn region goComment start="//" end="$" contains=goGenerate,@goCommentGroup,@Spell
+if s:FoldEnable('comment')
+ syn region goComment start="/\*" end="\*/" contains=@goCommentGroup,@Spell fold
+ syn match goComment "\v(^\s*//.*\n)+" contains=goGenerate,@goCommentGroup,@Spell fold
+else
+ syn region goComment start="/\*" end="\*/" contains=@goCommentGroup,@Spell
+endif
+
+hi def link goComment Comment
+hi def link goTodo Todo
+
+if s:HighlightGenerateTags()
+ syn match goGenerateVariables contained /\%(\$GOARCH\|\$GOOS\|\$GOFILE\|\$GOLINE\|\$GOPACKAGE\|\$DOLLAR\)\>/
+ syn region goGenerate start="^\s*//go:generate" end="$" contains=goGenerateVariables
+ hi def link goGenerate PreProc
+ hi def link goGenerateVariables Special
+endif
+
+" Go escapes
+syn match goEscapeOctal display contained "\\[0-7]\{3}"
+syn match goEscapeC display contained +\\[abfnrtv\\'"]+
+syn match goEscapeX display contained "\\x\x\{2}"
+syn match goEscapeU display contained "\\u\x\{4}"
+syn match goEscapeBigU display contained "\\U\x\{8}"
+syn match goEscapeError display contained +\\[^0-7xuUabfnrtv\\'"]+
+
+hi def link goEscapeOctal goSpecialString
+hi def link goEscapeC goSpecialString
+hi def link goEscapeX goSpecialString
+hi def link goEscapeU goSpecialString
+hi def link goEscapeBigU goSpecialString
+hi def link goSpecialString Special
+hi def link goEscapeError Error
+
+" Strings and their contents
+syn cluster goStringGroup contains=goEscapeOctal,goEscapeC,goEscapeX,goEscapeU,goEscapeBigU,goEscapeError
+if s:HighlightStringSpellcheck()
+ syn region goString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@goStringGroup,@Spell
+ syn region goRawString start=+`+ end=+`+ contains=@Spell
+else
+ syn region goString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@goStringGroup
+ syn region goRawString start=+`+ end=+`+
+endif
+
+syn match goImportString /^\%(\s\+\|import \)\(\h\w* \)\?\zs"[^"]\+"$/ contained containedin=goImport
+
+if s:HighlightFormatStrings()
+ " [n] notation is valid for specifying explicit argument indexes
+ " 1. Match a literal % not preceded by a %.
+ " 2. Match any number of -, #, 0, space, or +
+ " 3. Match * or [n]* or any number or nothing before a .
+ " 4. Match * or [n]* or any number or nothing after a .
+ " 5. Match [n] or nothing before a verb
+ " 6. Match a formatting verb
+ syn match goFormatSpecifier /\
+ \%([^%]\%(%%\)*\)\
+ \@<=%[-#0 +]*\
+ \%(\%(\%(\[\d\+\]\)\=\*\)\|\d\+\)\=\
+ \%(\.\%(\%(\%(\[\d\+\]\)\=\*\)\|\d\+\)\=\)\=\
+ \%(\[\d\+\]\)\=[vTtbcdoqxXUeEfFgGspw]/ contained containedin=goString,goRawString
+ hi def link goFormatSpecifier goSpecialString
+endif
+
+hi def link goImportString String
+hi def link goString String
+hi def link goRawString String
+
+" Characters; their contents
+syn cluster goCharacterGroup contains=goEscapeOctal,goEscapeC,goEscapeX,goEscapeU,goEscapeBigU
+syn region goCharacter start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@goCharacterGroup
+
+hi def link goCharacter Character
+
+" Regions
+syn region goParen start='(' end=')' transparent
+if s:FoldEnable('block')
+ syn region goBlock start="{" end="}" transparent fold
+else
+ syn region goBlock start="{" end="}" transparent
+endif
+
+" import
+if s:FoldEnable('import')
+ syn region goImport start='import (' end=')' transparent fold contains=goImport,goImportString,goComment
+else
+ syn region goImport start='import (' end=')' transparent contains=goImport,goImportString,goComment
+endif
+
+" var, const
+if s:FoldEnable('varconst')
+ syn region goVar start='var (' end='^\s*)$' transparent fold
+ \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goParamName,goParamType,goSimpleParams,goPointerOperator
+ syn region goConst start='const (' end='^\s*)$' transparent fold
+ \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goParamName,goParamType,goSimpleParams,goPointerOperator
+else
+ syn region goVar start='var (' end='^\s*)$' transparent
+ \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goParamName,goParamType,goSimpleParams,goPointerOperator
+ syn region goConst start='const (' end='^\s*)$' transparent
+ \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goParamName,goParamType,goSimpleParams,goPointerOperator
+endif
+
+" Single-line var, const, and import.
+syn match goSingleDecl /\%(import\|var\|const\) [^(]\@=/ contains=goImport,goVar,goConst
+
+" Integers
+syn match goDecimalInt "\<-\=\%(0\|\%(\d\|\d_\d\)\+\)\>"
+syn match goHexadecimalInt "\<-\=0[xX]_\?\%(\x\|\x_\x\)\+\>"
+syn match goOctalInt "\<-\=0[oO]\?_\?\%(\o\|\o_\o\)\+\>"
+syn match goBinaryInt "\<-\=0[bB]_\?\%([01]\|[01]_[01]\)\+\>"
+
+hi def link goDecimalInt Integer
+hi def link goDecimalError Error
+hi def link goHexadecimalInt Integer
+hi def link goHexadecimalError Error
+hi def link goOctalInt Integer
+hi def link goOctalError Error
+hi def link goBinaryInt Integer
+hi def link goBinaryError Error
+hi def link Integer Number
+
+" Floating point
+"float_lit = decimal_float_lit | hex_float_lit .
+"
+"decimal_float_lit = decimal_digits "." [ decimal_digits ] [ decimal_exponent ] |
+" decimal_digits decimal_exponent |
+" "." decimal_digits [ decimal_exponent ] .
+"decimal_exponent = ( "e" | "E" ) [ "+" | "-" ] decimal_digits .
+"
+"hex_float_lit = "0" ( "x" | "X" ) hex_mantissa hex_exponent .
+"hex_mantissa = [ "_" ] hex_digits "." [ hex_digits ] |
+" [ "_" ] hex_digits |
+" "." hex_digits .
+"hex_exponent = ( "p" | "P" ) [ "+" | "-" ] decimal_digits .
+" decimal floats with a decimal point
+syn match goFloat "\<-\=\%(0\|\%(\d\|\d_\d\)\+\)\.\%(\%(\%(\d\|\d_\d\)\+\)\=\%([Ee][-+]\=\%(\d\|\d_\d\)\+\)\=\>\)\="
+syn match goFloat "\s\zs-\=\.\%(\d\|\d_\d\)\+\%(\%([Ee][-+]\=\%(\d\|\d_\d\)\+\)\>\)\="
+" decimal floats without a decimal point
+syn match goFloat "\<-\=\%(0\|\%(\d\|\d_\d\)\+\)[Ee][-+]\=\%(\d\|\d_\d\)\+\>"
+" hexadecimal floats with a decimal point
+syn match goHexadecimalFloat "\<-\=0[xX]\%(_\x\|\x\)\+\.\%(\%(\x\|\x_\x\)\+\)\=\%([Pp][-+]\=\%(\d\|\d_\d\)\+\)\=\>"
+syn match goHexadecimalFloat "\<-\=0[xX]\.\%(\x\|\x_\x\)\+\%([Pp][-+]\=\%(\d\|\d_\d\)\+\)\=\>"
+" hexadecimal floats without a decimal point
+syn match goHexadecimalFloat "\<-\=0[xX]\%(_\x\|\x\)\+[Pp][-+]\=\%(\d\|\d_\d\)\+\>"
+
+hi def link goFloat Float
+hi def link goHexadecimalFloat Float
+
+" Imaginary literals
+syn match goImaginaryDecimal "\<-\=\%(0\|\%(\d\|\d_\d\)\+\)i\>"
+syn match goImaginaryHexadecimal "\<-\=0[xX]_\?\%(\x\|\x_\x\)\+i\>"
+syn match goImaginaryOctal "\<-\=0[oO]\?_\?\%(\o\|\o_\o\)\+i\>"
+syn match goImaginaryBinary "\<-\=0[bB]_\?\%([01]\|[01]_[01]\)\+i\>"
+
+" imaginary decimal floats with a decimal point
+syn match goImaginaryFloat "\<-\=\%(0\|\%(\d\|\d_\d\)\+\)\.\%(\%(\%(\d\|\d_\d\)\+\)\=\%([Ee][-+]\=\%(\d\|\d_\d\)\+\)\=\)\=i\>"
+syn match goImaginaryFloat "\s\zs-\=\.\%(\d\|\d_\d\)\+\%([Ee][-+]\=\%(\d\|\d_\d\)\+\)\=i\>"
+" imaginary decimal floats without a decimal point
+syn match goImaginaryFloat "\<-\=\%(0\|\%(\d\|\d_\d\)\+\)[Ee][-+]\=\%(\d\|\d_\d\)\+i\>"
+" imaginary hexadecimal floats with a decimal point
+syn match goImaginaryHexadecimalFloat "\<-\=0[xX]\%(_\x\|\x\)\+\.\%(\%(\x\|\x_\x\)\+\)\=\%([Pp][-+]\=\%(\d\|\d_\d\)\+\)\=i\>"
+syn match goImaginaryHexadecimalFloat "\<-\=0[xX]\.\%(\x\|\x_\x\)\+\%([Pp][-+]\=\%(\d\|\d_\d\)\+\)\=i\>"
+" imaginary hexadecimal floats without a decimal point
+syn match goImaginaryHexadecimalFloat "\<-\=0[xX]\%(_\x\|\x\)\+[Pp][-+]\=\%(\d\|\d_\d\)\+i\>"
+
+hi def link goImaginaryDecimal Number
+hi def link goImaginaryHexadecimal Number
+hi def link goImaginaryOctal Number
+hi def link goImaginaryBinary Number
+hi def link goImaginaryFloat Float
+hi def link goImaginaryHexadecimalFloat Float
+
+" Spaces after "[]"
+if s:HighlightArrayWhitespaceError()
+ syn match goSpaceError display "\%(\[\]\)\@<=\s\+"
+endif
+
+" Spacing errors around the 'chan' keyword
+if s:HighlightChanWhitespaceError()
+ " receive-only annotation on chan type
+ "
+ " \(\<chan\>\)\@<!<- (only pick arrow when it doesn't come after a chan)
+ " this prevents picking up 'chan<- chan<-' but not '<- chan'
+ syn match goSpaceError display "\%(\%(\<chan\>\)\@<!<-\)\@<=\s\+\%(\<chan\>\)\@="
+
+ " send-only annotation on chan type
+ "
+ " \(<-\)\@<!\<chan\> (only pick chan when it doesn't come after an arrow)
+ " this prevents picking up '<-chan <-chan' but not 'chan <-'
+ syn match goSpaceError display "\%(\%(<-\)\@<!\<chan\>\)\@<=\s\+\%(<-\)\@="
+
+ " value-ignoring receives in a few contexts
+ syn match goSpaceError display "\%(\%(^\|[={(,;]\)\s*<-\)\@<=\s\+"
+endif
+
+" Extra types commonly seen
+if s:HighlightExtraTypes()
+ syn match goExtraType /\<bytes\.\%(Buffer\)\>/
+ syn match goExtraType /\<context\.\%(Context\)\>/
+ syn match goExtraType /\<io\.\%(Reader\|ReadSeeker\|ReadWriter\|ReadCloser\|ReadWriteCloser\|Writer\|WriteCloser\|Seeker\)\>/
+ syn match goExtraType /\<reflect\.\%(Kind\|Type\|Value\)\>/
+ syn match goExtraType /\<unsafe\.Pointer\>/
+endif
+
+" Space-tab error
+if s:HighlightSpaceTabError()
+ syn match goSpaceError display " \+\t"me=e-1
+endif
+
+" Trailing white space error
+if s:HighlightTrailingWhitespaceError()
+ syn match goSpaceError display excludenl "\s\+$"
+endif
+
+hi def link goExtraType Type
+hi def link goSpaceError Error
+
+
+
+" included from: https://github.com/athom/more-colorful.vim/blob/master/after/syntax/go.vim
+"
+" Comments; their contents
+syn keyword goTodo contained NOTE
+hi def link goTodo Todo
+
+syn match goVarArgs /\.\.\./
+
+" Operators;
+if s:HighlightOperators()
+ " match single-char operators: - + % < > ! & | ^ * =
+ " and corresponding two-char operators: -= += %= <= >= != &= |= ^= *= ==
+ syn match goOperator /[-+%<>!&|^*=]=\?/
+ " match / and /=
+ syn match goOperator /\/\%(=\|\ze[^/*]\)/
+ " match two-char operators: << >> &^
+ " and corresponding three-char operators: <<= >>= &^=
+ syn match goOperator /\%(<<\|>>\|&^\)=\?/
+ " match remaining two-char operators: := && || <- ++ --
+ syn match goOperator /:=\|||\|<-\|++\|--/
+ " match ~
+ syn match goOperator /\~/
+ " match ...
+
+ hi def link goPointerOperator goOperator
+ hi def link goVarArgs goOperator
+endif
+hi def link goOperator Operator
+
+" -> type constraint opening bracket
+" |-> start non-counting group
+" || -> any word character
+" || | -> at least one, as many as possible
+" || | | -> start non-counting group
+" || | | | -> match ~
+" || | | | | -> at most once
+" || | | | | | -> allow a slice type
+" || | | | | | | -> any word character
+" || | | | | | | | -> start a non-counting group
+" || | | | | | | | | -> that matches word characters and |
+" || | | | | | | | | | -> close the non-counting group
+" || | | | | | | | | | | -> close the non-counting group
+" || | | | | | | | | | | |-> any number of matches
+" || | | | | | | | | | | || -> start a non-counting group
+" || | | | | | | | | | | || | -> a comma and whitespace
+" || | | | | | | | | | | || | | -> at most once
+" || | | | | | | | | | | || | | | -> close the non-counting group
+" || | | | | | | | | | | || | | | | -> at least one of those non-counting groups, as many as possible
+" || | | | | | -------- | | | | || | | | | | -> type constraint closing bracket
+" || | | | | || | | | | | || | | | | | |
+syn match goTypeParams /\[\%(\w\+\s\+\%(\~\?\%(\[]\)\?\w\%(\w\||\)\)*\%(,\s*\)\?\)\+\]/ nextgroup=goSimpleParams,goDeclType contained
+
+" Functions;
+if s:HighlightFunctions() || s:HighlightFunctionParameters()
+ syn match goDeclaration /\<func\>/ nextgroup=goReceiver,goFunction,goSimpleParams skipwhite skipnl
+ syn match goReceiverDecl /(\s*\zs\%(\%(\w\+\s\+\)\?\*\?\w\+\%(\[\%(\%(\[\]\)\?\w\+\%(,\s*\)\?\)\+\]\)\?\)\ze\s*)/ contained contains=goReceiverVar,goReceiverType,goPointerOperator
+ syn match goReceiverVar /\w\+\ze\s\+\%(\w\|\*\)/ nextgroup=goPointerOperator,goReceiverType skipwhite skipnl contained
+ syn match goPointerOperator /\*/ nextgroup=goReceiverType contained skipwhite skipnl
+ syn match goFunction /\w\+/ nextgroup=goSimpleParams,goTypeParams contained skipwhite skipnl
+ syn match goReceiverType /\w\+\%(\[\%(\%(\[\]\)\?\w\+\%(,\s*\)\?\)\+\]\)\?\ze\s*)/ contained
+ if s:HighlightFunctionParameters()
+ syn match goSimpleParams /(\%(\w\|\_s\|[*\.\[\],\{\}<>-]\)*)/ contained contains=goParamName,goType nextgroup=goFunctionReturn skipwhite skipnl
+ syn match goFunctionReturn /(\%(\w\|\_s\|[*\.\[\],\{\}<>-]\)*)/ contained contains=goParamName,goType skipwhite skipnl
+ syn match goParamName /\w\+\%(\s*,\s*\w\+\)*\ze\s\+\%(\w\|\.\|\*\|\[\)/ contained nextgroup=goParamType skipwhite skipnl
+ syn match goParamType /\%([^,)]\|\_s\)\+,\?/ contained nextgroup=goParamName skipwhite skipnl
+ \ contains=goVarArgs,goType,goSignedInts,goUnsignedInts,goFloats,goComplexes,goDeclType,goBlock
+ hi def link goReceiverVar goParamName
+ hi def link goParamName Identifier
+ endif
+ syn match goReceiver /(\s*\%(\w\+\s\+\)\?\*\?\s*\w\+\%(\[\%(\%(\[\]\)\?\w\+\%(,\s*\)\?\)\+\]\)\?\s*)\ze\s*\w/ contained nextgroup=goFunction contains=goReceiverDecl skipwhite skipnl
+else
+ syn keyword goDeclaration func
+endif
+hi def link goFunction Function
+
+" Function calls;
+if s:HighlightFunctionCalls()
+ syn match goFunctionCall /\w\+\ze\%(\[\%(\%(\[]\)\?\w\+\(,\s*\)\?\)\+\]\)\?(/ contains=goBuiltins,goDeclaration
+endif
+hi def link goFunctionCall Type
+
+" Fields;
+if s:HighlightFields()
+ " 1. Match a sequence of word characters coming after a '.'
+ " 2. Require the following but dont match it: ( \@= see :h E59)
+ " - The symbols: / - + * % OR
+ " - The symbols: [] {} <> ) OR
+ " - The symbols: \n \r space OR
+ " - The symbols: , : .
+ " 3. Have the start of highlight (hs) be the start of matched
+ " pattern (s) offsetted one to the right (+1) (see :h E401)
+ syn match goField /\.\w\+\
+ \%(\%([\/\-\+*%]\)\|\
+ \%([\[\]{}<\>\)]\)\|\
+ \%([\!=\^|&]\)\|\
+ \%([\n\r\ ]\)\|\
+ \%([,\:.]\)\)\@=/hs=s+1
+endif
+hi def link goField Identifier
+
+" Structs & Interfaces;
+if s:HighlightTypes()
+ syn match goTypeConstructor /\<\w\+{\@=/
+ syn match goTypeDecl /\<type\>/ nextgroup=goTypeName skipwhite skipnl
+ syn match goTypeName /\w\+/ contained nextgroup=goDeclType,goTypeParams skipwhite skipnl
+ syn match goDeclType /\<\%(interface\|struct\)\>/ skipwhite skipnl
+ hi def link goReceiverType Type
+else
+ syn keyword goDeclType struct interface
+ syn keyword goDeclaration type
+endif
+hi def link goTypeConstructor Type
+hi def link goTypeName Type
+hi def link goTypeDecl Keyword
+hi def link goDeclType Keyword
+
+" Variable Assignments
+if s:HighlightVariableAssignments()
+ syn match goVarAssign /\v[_.[:alnum:]]+(,\s*[_.[:alnum:]]+)*\ze(\s*([-^+|^\/%&]|\*|\<\<|\>\>|\&\^)?\=[^=])/
+ hi def link goVarAssign Special
+endif
+
+" Variable Declarations
+if s:HighlightVariableDeclarations()
+ syn match goVarDefs /\v\w+(,\s*\w+)*\ze(\s*:\=)/
+ hi def link goVarDefs Special
+endif
+
+" Build Constraints
+if s:HighlightBuildConstraints()
+ syn match goBuildKeyword display contained "+build\|go:build"
+ " Highlight the known values of GOOS, GOARCH, and other +build options.
+ syn keyword goBuildDirectives contained
+ \ android darwin dragonfly freebsd linux nacl netbsd openbsd plan9
+ \ solaris windows 386 amd64 amd64p32 arm armbe arm64 arm64be ppc64
+ \ ppc64le mips mipsle mips64 mips64le mips64p32 mips64p32le ppc
+ \ s390 s390x sparc sparc64 cgo ignore race
+
+ " Other words in the build directive are build tags not listed above, so
+ " avoid highlighting them as comments by using a matchgroup just for the
+ " start of the comment.
+ " The rs=s+2 option lets the \s*+build portion be part of the inner region
+ " instead of the matchgroup so it will be highlighted as a goBuildKeyword.
+ syn region goBuildComment matchgroup=goBuildCommentStart
+ \ start="//\(\s*+build\s\|go:build\)"rs=s+2 end="$"
+ \ contains=goBuildKeyword,goBuildDirectives
+ hi def link goBuildCommentStart Comment
+ hi def link goBuildDirectives Type
+ hi def link goBuildKeyword PreProc
+endif
+
+if s:HighlightBuildConstraints() || s:FoldEnable('package_comment')
+ " One or more line comments that are followed immediately by a "package"
+ " declaration are treated like package documentation, so these must be
+ " matched as comments to avoid looking like working build constraints.
+ " The he, me, and re options let the "package" itself be highlighted by
+ " the usual rules.
+ exe 'syn region goPackageComment start=/\v(\/\/.*\n)+\s*package/'
+ \ . ' end=/\v\n\s*package/he=e-7,me=e-7,re=e-7'
+ \ . ' contains=@goCommentGroup,@Spell'
+ \ . (s:FoldEnable('package_comment') ? ' fold' : '')
+ exe 'syn region goPackageComment start=/\v^\s*\/\*.*\n(.*\n)*\s*\*\/\npackage/'
+ \ . ' end=/\v\*\/\n\s*package/he=e-7,me=e-7,re=e-7'
+ \ . ' contains=@goCommentGroup,@Spell'
+ \ . (s:FoldEnable('package_comment') ? ' fold' : '')
+ hi def link goPackageComment Comment
+endif
+
+" :GoCoverage commands
+hi def link goCoverageNormalText Comment
+
+" Search backwards for a global declaration to start processing the syntax.
+"syn sync match goSync grouphere NONE /^\(const\|var\|type\|func\)\>/
+
+" There's a bug in the implementation of grouphere. For now, use the
+" following as a more expensive/less precise workaround.
+syn sync minlines=500
+
+let b:current_syntax = "go"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim: sw=2 sts=2 et
diff --git a/runtime/syntax/godoc.vim b/runtime/syntax/godoc.vim
new file mode 100644
index 0000000..0603f51
--- /dev/null
+++ b/runtime/syntax/godoc.vim
@@ -0,0 +1,19 @@
+" Vim syntax file
+" Language: Godoc (generated documentation for go)
+" Maintainer: David Barnett (https://github.com/google/vim-ft-go)
+" Last Change: 2014 Aug 16
+
+if exists('b:current_syntax')
+ finish
+endif
+
+syn case match
+syn match godocTitle "^\([A-Z][A-Z ]*\)$"
+
+
+hi def link godocTitle Title
+
+
+let b:current_syntax = 'godoc'
+
+" vim: sw=2 sts=2 et
diff --git a/runtime/syntax/gp.vim b/runtime/syntax/gp.vim
new file mode 100644
index 0000000..aecf7df
--- /dev/null
+++ b/runtime/syntax/gp.vim
@@ -0,0 +1,83 @@
+" Vim syntax file
+" Language: gp (version 2.5)
+" Maintainer: Karim Belabas <Karim.Belabas@math.u-bordeaux.fr>
+" Last change: 2012 Jan 08
+" URL: http://pari.math.u-bordeaux.fr
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" control statements
+syntax keyword gpStatement break return next
+syntax keyword gpConditional if
+syntax keyword gpRepeat until while for fordiv forell forprime
+syntax keyword gpRepeat forsubgroup forstep forvec
+" storage class
+syntax keyword gpScope my local global
+" defaults
+syntax keyword gpInterfaceKey breakloop colors compatible
+syntax keyword gpInterfaceKey datadir debug debugfiles debugmem
+syntax keyword gpInterfaceKey echo factor_add_primes factor_proven format
+syntax keyword gpInterfaceKey graphcolormap graphcolors
+syntax keyword gpInterfaceKey help histfile histsize
+syntax keyword gpInterfaceKey lines linewrap log logfile new_galois_format
+syntax keyword gpInterfaceKey output parisize path prettyprinter primelimit
+syntax keyword gpInterfaceKey prompt prompt_cont psfile
+syntax keyword gpInterfaceKey readline realprecision recover
+syntax keyword gpInterfaceKey secure seriesprecision simplify strictmatch
+syntax keyword gpInterfaceKey TeXstyle timer
+
+syntax match gpInterface "^\s*\\[a-z].*"
+syntax keyword gpInterface default
+syntax keyword gpInput read input
+
+" functions
+syntax match gpFunRegion "^\s*[a-zA-Z][_a-zA-Z0-9]*(.*)\s*=\s*[^ \t=]"me=e-1 contains=gpFunction,gpArgs
+syntax match gpFunRegion "^\s*[a-zA-Z][_a-zA-Z0-9]*(.*)\s*=\s*$" contains=gpFunction,gpArgs
+syntax match gpArgs contained "[a-zA-Z][_a-zA-Z0-9]*"
+syntax match gpFunction contained "^\s*[a-zA-Z][_a-zA-Z0-9]*("me=e-1
+
+" String and Character constants
+" Highlight special (backslash'ed) characters differently
+syntax match gpSpecial contained "\\[ent\\]"
+syntax region gpString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=gpSpecial
+
+"comments
+syntax region gpComment start="/\*" end="\*/" contains=gpTodo
+syntax match gpComment "\\\\.*" contains=gpTodo
+syntax keyword gpTodo contained TODO
+syntax sync ccomment gpComment minlines=10
+
+"catch errors caused by wrong parenthesis
+syntax region gpParen transparent start='(' end=')' contains=ALLBUT,gpParenError,gpTodo,gpFunction,gpArgs,gpSpecial
+syntax match gpParenError ")"
+syntax match gpInParen contained "[{}]"
+
+
+hi def link gpConditional Conditional
+hi def link gpRepeat Repeat
+hi def link gpError Error
+hi def link gpParenError gpError
+hi def link gpInParen gpError
+hi def link gpStatement Statement
+hi def link gpString String
+hi def link gpComment Comment
+hi def link gpInterface Type
+hi def link gpInput Type
+hi def link gpInterfaceKey Statement
+hi def link gpFunction Function
+hi def link gpScope Type
+" contained ones
+hi def link gpSpecial Special
+hi def link gpTodo Todo
+hi def link gpArgs Type
+
+let b:current_syntax = "gp"
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/gpg.vim b/runtime/syntax/gpg.vim
new file mode 100644
index 0000000..57f712b
--- /dev/null
+++ b/runtime/syntax/gpg.vim
@@ -0,0 +1,107 @@
+" Vim syntax file
+" Language: gpg(1) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2010-10-14
+" Updated: 2023-01-23 @ObserverOfTime: added a couple of keywords
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword+=-
+
+syn keyword gpgTodo contained FIXME TODO XXX NOTE
+
+syn region gpgComment contained display oneline start='#' end='$'
+ \ contains=gpgTodo,gpgID,@Spell
+
+syn match gpgID contained display '\<\(0x\)\=\x\{8,}\>'
+
+syn match gpgBegin display '^' skipwhite nextgroup=gpgComment,gpgOption,gpgCommand
+
+syn keyword gpgCommand contained skipwhite nextgroup=gpgArg
+ \ check-sigs decrypt decrypt-files delete-key
+ \ delete-secret-and-public-key delete-secret-key
+ \ edit-key encrypt-files export export-all
+ \ export-ownertrust export-secret-keys
+ \ export-secret-subkeys fast-import fingerprint
+ \ gen-prime gen-random import import-ownertrust
+ \ list-keys list-public-keys list-secret-keys
+ \ list-sigs lsign-key nrsign-key print-md print-mds
+ \ recv-keys search-keys send-keys sign-key verify
+ \ verify-files
+syn keyword gpgCommand contained skipwhite nextgroup=gpgArgError
+ \ check-trustdb clearsign desig-revoke detach-sign
+ \ encrypt gen-key gen-revoke help list-packets
+ \ rebuild-keydb-caches sign store symmetric
+ \ update-trustdb version warranty
+
+syn keyword gpgOption contained skipwhite nextgroup=gpgArg
+ \ attribute-fd cert-digest-algo charset cipher-algo
+ \ command-fd comment completes-needed compress
+ \ compress-algo debug default-cert-check-level
+ \ default-key default-preference-list
+ \ default-recipient digest-algo disable-cipher-algo
+ \ disable-pubkey-algo encrypt-to exec-path
+ \ export-options group homedir import-options
+ \ keyring keyserver keyserver-options load-extension
+ \ local-user logger-fd marginals-needed max-cert-depth
+ \ notation-data options output override-session-key
+ \ passphrase-fd personal-cipher-preferences
+ \ personal-compress-preferences
+ \ personal-digest-preferences photo-viewer
+ \ recipient s2k-cipher-algo s2k-digest-algo s2k-mode
+ \ secret-keyring set-filename set-policy-url status-fd
+ \ trusted-key verify-options keyid-format list-options
+ \ default-new-key-algo weak-digest
+syn keyword gpgOption contained skipwhite nextgroup=gpgArgError
+ \ allow-freeform-uid allow-non-selfsigned-uid
+ \ allow-secret-key-import always-trust
+ \ armor ask-cert-expire ask-sig-expire
+ \ auto-check-trustdb batch debug-all default-comment
+ \ default-recipient-self dry-run emit-version
+ \ emulate-md-encode-bug enable-special-filenames
+ \ escape-from-lines expert fast-list-mode
+ \ fixed-list-mode for-your-eyes-only
+ \ force-mdc force-v3-sigs force-v4-certs
+ \ gpg-agent-info ignore-crc-error ignore-mdc-error
+ \ ignore-time-conflict ignore-valid-from interactive
+ \ list-only lock-multiple lock-never lock-once
+ \ merge-only no no-allow-non-selfsigned-uid
+ \ no-armor no-ask-cert-expire no-ask-sig-expire
+ \ no-auto-check-trustdb no-batch no-comment
+ \ no-default-keyring no-default-recipient
+ \ no-encrypt-to no-expensive-trust-checks
+ \ no-expert no-for-your-eyes-only no-force-v3-sigs
+ \ no-force-v4-certs no-greeting no-literal
+ \ no-mdc-warning no-options no-permission-warning
+ \ no-pgp2 no-pgp6 no-pgp7 no-random-seed-file
+ \ no-secmem-warning no-show-notation no-show-photos
+ \ no-show-policy-url no-sig-cache no-sig-create-check
+ \ no-sk-comments no-tty no-utf8-strings no-verbose
+ \ no-version not-dash-escaped openpgp pgp2
+ \ pgp6 pgp7 preserve-permissions quiet rfc1991
+ \ set-filesize show-keyring show-notation show-photos
+ \ show-policy-url show-session-key simple-sk-checksum
+ \ sk-comments skip-verify textmode throw-keyid
+ \ try-all-secrets use-agent use-embedded-filename
+ \ utf8-strings verbose with-colons with-fingerprint
+ \ with-key-data yes
+
+syn match gpgArg contained display '\S\+\(\s\+\S\+\)*' contains=gpgID
+syn match gpgArgError contained display '\S\+\(\s\+\S\+\)*'
+
+hi def link gpgComment Comment
+hi def link gpgTodo Todo
+hi def link gpgID Number
+hi def link gpgOption Keyword
+hi def link gpgCommand Error
+hi def link gpgArgError Error
+
+let b:current_syntax = "gpg"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/gprof.vim b/runtime/syntax/gprof.vim
new file mode 100644
index 0000000..d2c5cb4
--- /dev/null
+++ b/runtime/syntax/gprof.vim
@@ -0,0 +1,70 @@
+" Vim syntax file
+" Language: Syntax for Gprof Output
+" Maintainer: Dominique Pelle <dominique.pelle@gmail.com>
+" Last Change: 2021 Sep 19
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+syn spell notoplevel
+syn case match
+syn sync minlines=100
+
+" Flat profile
+syn match gprofFlatProfileTitle
+ \ "^Flat profile:$"
+syn region gprofFlatProfileHeader
+ \ start="^Each sample counts as.*"
+ \ end="^ time.*name\s*$"
+syn region gprofFlatProfileTrailer
+ \ start="^\s*%\s\+the percentage of the total running time.*"
+ \ end="^\s*the gprof listing if it were to be printed\."
+
+" Call graph
+syn match gprofCallGraphTitle "Call graph (explanation follows)"
+syn region gprofCallGraphHeader
+ \ start="^granularity: each sample hit covers.*"
+ \ end="^\s*index % time\s\+self\s\+children\s\+called\s\+name$"
+syn match gprofCallGraphFunction "\<\(\d\+\.\d\+\s\+\)\{3}\([0-9+]\+\)\?\s\+[a-zA-Z_<].*\ze\["
+syn match gprofCallGraphSeparator "^-\+$"
+syn region gprofCallGraphTrailer
+ \ start="This table describes the call tree of the program"
+ \ end="^\s*the cycle\.$"
+
+" Index
+syn region gprofIndex
+ \ start="^Index by function name$"
+ \ end="\%$"
+
+syn match gprofIndexFunctionTitle "^Index by function name$"
+
+syn match gprofNumbers "^\s*[0-9 ./+]\+"
+syn match gprofFunctionIndex "\[\d\+\]"
+syn match gprofSpecial "<\(spontaneous\|cycle \d\+\)>"
+
+hi def link gprofFlatProfileTitle Title
+hi def link gprofFlatProfileHeader Comment
+hi def link gprofFlatProfileFunction Number
+hi def link gprofFlatProfileTrailer Comment
+
+hi def link gprofCallGraphTitle Title
+hi def link gprofCallGraphHeader Comment
+hi def link gprofFlatProfileFunction Number
+hi def link gprofCallGraphFunction Special
+hi def link gprofCallGraphTrailer Comment
+hi def link gprofCallGraphSeparator Label
+
+hi def link gprofFunctionIndex Label
+hi def link gprofSpecial SpecialKey
+hi def link gprofNumbers Number
+
+hi def link gprofIndexFunctionTitle Title
+
+let b:current_syntax = "gprof"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/runtime/syntax/grads.vim b/runtime/syntax/grads.vim
new file mode 100644
index 0000000..50be14b
--- /dev/null
+++ b/runtime/syntax/grads.vim
@@ -0,0 +1,73 @@
+" Vim syntax file
+" Language: grads (GrADS scripts)
+" Maintainer: Stefan Fronzek (sfronzek at gmx dot net)
+" Last change: 13 Feb 2004
+
+" Grid Analysis and Display System (GrADS); http://grads.iges.org/grads
+" This syntax file defines highlighting for only very few features of
+" the GrADS scripting language.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" GrADS is entirely case-insensitive.
+syn case ignore
+
+" The keywords
+
+syn keyword gradsStatement if else endif break exit return
+syn keyword gradsStatement while endwhile say prompt pull function
+syn keyword gradsStatement subwrd sublin substr read write close
+" String
+
+syn region gradsString start=+'+ end=+'+
+
+" Integer number
+syn match gradsNumber "[+-]\=\<[0-9]\+\>"
+
+" Operator
+
+"syn keyword gradsOperator | ! % & != >=
+"syn match gradsOperator "[^\.]not[^a-zA-Z]"
+
+" Variables
+
+syn keyword gradsFixVariables lat lon lev result rec rc
+syn match gradsglobalVariables "_[a-zA-Z][a-zA-Z0-9]*"
+syn match gradsVariables "[a-zA-Z][a-zA-Z0-9]*"
+syn match gradsConst "#[A-Z][A-Z_]+"
+
+" Comments
+
+syn match gradsComment "\*.*"
+
+" Typical Typos
+
+" for C programmers:
+" syn match gradsTypos "=="
+" syn match gradsTypos "!="
+
+" Define the default highlighting.
+" Only when an item doesn't hgs highlighting+yet
+
+hi def link gradsStatement Statement
+
+hi def link gradsString String
+hi def link gradsNumber Number
+
+hi def link gradsFixVariables Special
+hi def link gradsVariables Identifier
+hi def link gradsglobalVariables Special
+hi def link gradsConst Special
+
+hi def link gradsClassMethods Function
+
+hi def link gradsOperator Operator
+hi def link gradsComment Comment
+
+hi def link gradsTypos Error
+
+
+let b:current_syntax = "grads"
diff --git a/runtime/syntax/gretl.vim b/runtime/syntax/gretl.vim
new file mode 100644
index 0000000..671142a
--- /dev/null
+++ b/runtime/syntax/gretl.vim
@@ -0,0 +1,85 @@
+" Vim syntax file
+" Language: gretl (http://gretl.sf.net)
+" Maintainer: Vaidotas Zemlys <zemlys@gmail.com>
+" Last Change: 2006 Apr 30
+" Filenames: *.inp *.gretl
+" URL: http://uosis.mif.vu.lt/~zemlys/vim-syntax/gretl.vim
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=@,48-57,_,.
+
+syn case match
+
+" Constant
+" string enclosed in double quotes
+syn region gString start=/"/ skip=/\\\\\|\\"/ end=/"/
+" number with no fractional part or exponent
+syn match gNumber /\d\+/
+" floating point number with integer and fractional parts and optional exponent
+syn match gFloat /\d\+\.\d*\([Ee][-+]\=\d\+\)\=/
+" floating point number with no integer part and optional exponent
+syn match gFloat /\.\d\+\([Ee][-+]\=\d\+\)\=/
+" floating point number with no fractional part and optional exponent
+syn match gFloat /\d\+[Ee][-+]\=\d\+/
+
+" Gretl commands
+syn keyword gCommands add addobs addto adf append ar arch arma break boxplot chow coeffsum coint coint2 corc corr corrgm criteria critical cusum data delete diff else end endif endloop eqnprint equation estimate fcast fcasterr fit freq function funcerr garch genr gnuplot graph hausman hccm help hilu hsk hurst if import include info kpss label labels lad lags ldiff leverage lmtest logistic logit logs loop mahal meantest mle modeltab mpols multiply nls nulldata ols omit omitfrom open outfile panel pca pergm plot poisson pooled print printf probit pvalue pwe quit remember rename reset restrict rhodiff rmplot run runs scatters sdiff set setobs setmiss shell sim smpl spearman square store summary system tabprint testuhat tobit transpos tsls var varlist vartest vecm vif wls
+
+"Gretl genr functions
+syn keyword gGenrFunc log exp sin cos tan atan diff ldiff sdiff mean sd min max sort int ln coeff abs rho sqrt sum nobs firstobs lastobs normal uniform stderr cum missing ok misszero corr vcv var sst cov median zeromiss pvalue critical obsnum mpow dnorm cnorm gamma lngamma resample hpfilt bkfilt fracdiff varnum isvector islist nelem
+
+" Identifier
+" identifier with leading letter and optional following keyword characters
+syn match gIdentifier /\a\k*/
+
+" Variable with leading $
+syn match gVariable /\$\k*/
+" Arrow
+syn match gArrow /<-/
+
+" Special
+syn match gDelimiter /[,;:]/
+
+" Error
+syn region gRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError,gBCstart,gBCend
+syn region gRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError
+syn region gRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError
+syn match gError /[)\]}]/
+syn match gBraceError /[)}]/ contained
+syn match gCurlyError /[)\]]/ contained
+syn match gParenError /[\]}]/ contained
+
+" Comment
+syn match gComment /#.*/
+syn match gBCstart /(\*/
+syn match gBCend /\*)/
+
+syn region gBlockComment matchgroup=gCommentStart start="(\*" end="\*)"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link gComment Comment
+hi def link gCommentStart Comment
+hi def link gBlockComment Comment
+hi def link gString String
+hi def link gNumber Number
+hi def link gBoolean Boolean
+hi def link gFloat Float
+hi def link gCommands Repeat
+hi def link gGenrFunc Type
+hi def link gDelimiter Delimiter
+hi def link gError Error
+hi def link gBraceError Error
+hi def link gCurlyError Error
+hi def link gParenError Error
+hi def link gIdentifier Normal
+hi def link gVariable Identifier
+hi def link gArrow Repeat
+
+let b:current_syntax="gretl"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/groff.vim b/runtime/syntax/groff.vim
new file mode 100644
index 0000000..c076c8d
--- /dev/null
+++ b/runtime/syntax/groff.vim
@@ -0,0 +1,10 @@
+" VIM syntax file
+" Language: groff
+" Maintainer: John Marshall <jmarshall@hey.com>
+" Previous Maintainer: Pedro Alejandro López-Valencia <palopezv@gmail.com>
+" Last Change: 2003-05-08-12:41:13 GMT-5.
+
+" This uses the nroff.vim syntax file.
+let b:main_syntax = "nroff"
+let b:nroff_is_groff = 1
+runtime! syntax/nroff.vim
diff --git a/runtime/syntax/groovy.vim b/runtime/syntax/groovy.vim
new file mode 100644
index 0000000..41495e6
--- /dev/null
+++ b/runtime/syntax/groovy.vim
@@ -0,0 +1,451 @@
+" Vim syntax file
+" Language: Groovy
+" Original Author: Alessio Pace <billy.corgan AT tiscali.it>
+" Maintainer: Tobias Rapp <yahuxo+vim AT mailbox.org>
+" Version: 0.1.18
+" URL: http://www.vim.org/scripts/script.php?script_id=945
+" Last Change: 2021 Feb 03
+
+" THE ORIGINAL AUTHOR'S NOTES:
+"
+" This is my very first vim script, I hope to have
+" done it the right way.
+"
+" I must directly or indirectly thank the author of java.vim and ruby.vim:
+" I copied from them most of the stuff :-)
+"
+" Relies on html.vim
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+"
+" HOWTO USE IT (INSTALL) when not part of the distribution:
+"
+" 1) copy the file in the (global or user's $HOME/.vim/syntax/) syntax folder
+"
+" 2) add this line to recognize groovy files by filename extension:
+"
+" au BufNewFile,BufRead *.groovy setf groovy
+" in the global vim filetype.vim file or inside $HOME/.vim/filetype.vim
+"
+" 3) add this part to recognize by content groovy script (no extension needed :-)
+"
+" if did_filetype()
+" finish
+" endif
+" if getline(1) =~ '^#!.*[/\\]groovy\>'
+" setf groovy
+" endif
+"
+" in the global scripts.vim file or in $HOME/.vim/scripts.vim
+"
+" 4) open/write a .groovy file or a groovy script :-)
+"
+" Let me know if you like it or send me patches, so that I can improve it
+" when I have time
+
+" quit when a syntax file was already loaded
+if !exists("main_syntax")
+ if exists("b:current_syntax")
+ finish
+ endif
+ " we define it here so that included files can test for it
+ let main_syntax='groovy'
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" ##########################
+" Java stuff taken from java.vim
+" some characters that cannot be in a groovy program (outside a string)
+" syn match groovyError "[\\@`]"
+"syn match groovyError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/"
+"syn match groovyOK "\.\.\."
+
+" keyword definitions
+syn keyword groovyExternal native package
+syn match groovyExternal "\<import\>\(\s\+static\>\)\?"
+syn keyword groovyError goto const
+syn keyword groovyConditional if else switch
+syn keyword groovyRepeat while for do
+syn keyword groovyBoolean true false
+syn keyword groovyConstant null
+syn keyword groovyTypedef this super
+syn keyword groovyOperator new instanceof
+syn keyword groovyType boolean char byte short int long float double
+syn keyword groovyType void
+syn keyword groovyType Integer Double Date Boolean Float String Array Vector List
+syn keyword groovyStatement return
+syn keyword groovyStorageClass static synchronized transient volatile final strictfp serializable
+syn keyword groovyExceptions throw try catch finally
+syn keyword groovyAssert assert
+syn keyword groovyMethodDecl synchronized throws
+syn keyword groovyClassDecl extends implements interface
+" to differentiate the keyword class from MyClass.class we use a match here
+syn match groovyTypedef "\.\s*\<class\>"ms=s+1
+syn keyword groovyClassDecl enum
+syn match groovyClassDecl "^class\>"
+syn match groovyClassDecl "[^.]\s*\<class\>"ms=s+1
+syn keyword groovyBranch break continue nextgroup=groovyUserLabelRef skipwhite
+syn match groovyUserLabelRef "\k\+" contained
+syn keyword groovyScopeDecl public protected private abstract
+
+
+if exists("groovy_highlight_groovy_lang_ids") || exists("groovy_highlight_groovy_lang") || exists("groovy_highlight_all")
+ " groovy.lang.*
+ syn keyword groovyLangClass Closure MetaMethod GroovyObject
+
+ syn match groovyJavaLangClass "\<System\>"
+ syn keyword groovyJavaLangClass Cloneable Comparable Runnable Serializable Boolean Byte Class Object
+ syn keyword groovyJavaLangClass Character CharSequence ClassLoader Compiler
+ " syn keyword groovyJavaLangClass Integer Double Float Long
+ syn keyword groovyJavaLangClass InheritableThreadLocal Math Number Object Package Process
+ syn keyword groovyJavaLangClass Runtime RuntimePermission InheritableThreadLocal
+ syn keyword groovyJavaLangClass SecurityManager Short StrictMath StackTraceElement
+ syn keyword groovyJavaLangClass StringBuffer Thread ThreadGroup
+ syn keyword groovyJavaLangClass ThreadLocal Throwable Void ArithmeticException
+ syn keyword groovyJavaLangClass ArrayIndexOutOfBoundsException AssertionError
+ syn keyword groovyJavaLangClass ArrayStoreException ClassCastException
+ syn keyword groovyJavaLangClass ClassNotFoundException
+ syn keyword groovyJavaLangClass CloneNotSupportedException Exception
+ syn keyword groovyJavaLangClass IllegalAccessException
+ syn keyword groovyJavaLangClass IllegalArgumentException
+ syn keyword groovyJavaLangClass IllegalMonitorStateException
+ syn keyword groovyJavaLangClass IllegalStateException
+ syn keyword groovyJavaLangClass IllegalThreadStateException
+ syn keyword groovyJavaLangClass IndexOutOfBoundsException
+ syn keyword groovyJavaLangClass InstantiationException InterruptedException
+ syn keyword groovyJavaLangClass NegativeArraySizeException NoSuchFieldException
+ syn keyword groovyJavaLangClass NoSuchMethodException NullPointerException
+ syn keyword groovyJavaLangClass NumberFormatException RuntimeException
+ syn keyword groovyJavaLangClass SecurityException StringIndexOutOfBoundsException
+ syn keyword groovyJavaLangClass UnsupportedOperationException
+ syn keyword groovyJavaLangClass AbstractMethodError ClassCircularityError
+ syn keyword groovyJavaLangClass ClassFormatError Error ExceptionInInitializerError
+ syn keyword groovyJavaLangClass IllegalAccessError InstantiationError
+ syn keyword groovyJavaLangClass IncompatibleClassChangeError InternalError
+ syn keyword groovyJavaLangClass LinkageError NoClassDefFoundError
+ syn keyword groovyJavaLangClass NoSuchFieldError NoSuchMethodError
+ syn keyword groovyJavaLangClass OutOfMemoryError StackOverflowError
+ syn keyword groovyJavaLangClass ThreadDeath UnknownError UnsatisfiedLinkError
+ syn keyword groovyJavaLangClass UnsupportedClassVersionError VerifyError
+ syn keyword groovyJavaLangClass VirtualMachineError
+
+ syn keyword groovyJavaLangObject clone equals finalize getClass hashCode
+ syn keyword groovyJavaLangObject notify notifyAll toString wait
+
+ hi def link groovyLangClass groovyConstant
+ hi def link groovyJavaLangClass groovyExternal
+ hi def link groovyJavaLangObject groovyConstant
+ syn cluster groovyTop add=groovyJavaLangObject,groovyJavaLangClass,groovyLangClass
+ syn cluster groovyClasses add=groovyJavaLangClass,groovyLangClass
+endif
+
+
+" Groovy stuff
+syn match groovyOperator "\.\."
+syn match groovyOperator "<\{2,3}"
+syn match groovyOperator ">\{2,3}"
+syn match groovyOperator "->"
+syn match groovyLineComment '^\%1l#!.*' " Shebang line
+syn match groovyExceptions "\<Exception\>\|\<[A-Z]\{1,}[a-zA-Z0-9]*Exception\>"
+
+" Groovy JDK stuff
+syn keyword groovyJDKBuiltin as def in
+syn keyword groovyJDKOperOverl div minus plus abs round power multiply
+syn keyword groovyJDKMethods each call inject sort print println
+syn keyword groovyJDKMethods getAt putAt size push pop toList getText writeLine eachLine readLines
+syn keyword groovyJDKMethods withReader withStream withWriter withPrintWriter write read leftShift
+syn keyword groovyJDKMethods withWriterAppend readBytes splitEachLine
+syn keyword groovyJDKMethods newInputStream newOutputStream newPrintWriter newReader newWriter
+syn keyword groovyJDKMethods compareTo next previous isCase
+syn keyword groovyJDKMethods times step toInteger upto any collect dump every find findAll grep
+syn keyword groovyJDKMethods inspect invokeMethods join
+syn keyword groovyJDKMethods getErr getIn getOut waitForOrKill
+syn keyword groovyJDKMethods count tokenize asList flatten immutable intersect reverse reverseEach
+syn keyword groovyJDKMethods subMap append asWritable eachByte eachLine eachFile
+syn cluster groovyTop add=groovyJDKBuiltin,groovyJDKOperOverl,groovyJDKMethods
+
+" no useful I think, so I comment it..
+"if filereadable(expand("<sfile>:p:h")."/groovyid.vim")
+ " source <sfile>:p:h/groovyid.vim
+"endif
+
+if exists("groovy_space_errors")
+ if !exists("groovy_no_trail_space_error")
+ syn match groovySpaceError "\s\+$"
+ endif
+ if !exists("groovy_no_tab_space_error")
+ syn match groovySpaceError " \+\t"me=e-1
+ endif
+endif
+
+" it is a better case construct than java.vim to match groovy syntax
+syn region groovyLabelRegion transparent matchgroup=groovyLabel start="\<case\>" matchgroup=NONE end=":\|$" contains=groovyNumber,groovyString,groovyLangClass,groovyJavaLangClass
+syn match groovyUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=groovyLabel
+syn keyword groovyLabel default
+
+if !exists("groovy_allow_cpp_keywords")
+ syn keyword groovyError auto delete extern friend inline redeclared
+ syn keyword groovyError register signed sizeof struct template typedef union
+ syn keyword groovyError unsigned operator
+endif
+
+" The following cluster contains all groovy groups except the contained ones
+syn cluster groovyTop add=groovyExternal,groovyError,groovyError,groovyBranch,groovyLabelRegion,groovyLabel,groovyConditional,groovyRepeat,groovyBoolean,groovyConstant,groovyTypedef,groovyOperator,groovyType,groovyType,groovyStatement,groovyStorageClass,groovyAssert,groovyExceptions,groovyMethodDecl,groovyClassDecl,groovyClassDecl,groovyClassDecl,groovyScopeDecl,groovyError,groovyError2,groovyUserLabel,groovyLangObject
+
+
+" Comments
+syn keyword groovyTodo contained TODO FIXME XXX
+if exists("groovy_comment_strings")
+ syn region groovyCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=groovySpecial,groovyCommentStar,groovySpecialChar,@Spell
+ syn region groovyComment2String contained start=+"+ end=+$\|"+ contains=groovySpecial,groovySpecialChar,@Spell
+ syn match groovyCommentCharacter contained "'\\[^']\{1,6\}'" contains=groovySpecialChar
+ syn match groovyCommentCharacter contained "'\\''" contains=groovySpecialChar
+ syn match groovyCommentCharacter contained "'[^\\]'"
+ syn cluster groovyCommentSpecial add=groovyCommentString,groovyCommentCharacter,groovyNumber
+ syn cluster groovyCommentSpecial2 add=groovyComment2String,groovyCommentCharacter,groovyNumber
+endif
+syn region groovyComment start="/\*" end="\*/" contains=@groovyCommentSpecial,groovyTodo,@Spell
+syn match groovyCommentStar contained "^\s*\*[^/]"me=e-1
+syn match groovyCommentStar contained "^\s*\*$"
+syn match groovyLineComment "//.*" contains=@groovyCommentSpecial2,groovyTodo,@Spell
+hi def link groovyCommentString groovyString
+hi def link groovyComment2String groovyString
+hi def link groovyCommentCharacter groovyCharacter
+
+syn cluster groovyTop add=groovyComment,groovyLineComment
+
+if !exists("groovy_ignore_groovydoc") && main_syntax != 'jsp'
+ syntax case ignore
+ " syntax coloring for groovydoc comments (HTML)
+ " syntax include @groovyHtml <sfile>:p:h/html.vim
+ syntax include @groovyHtml runtime! syntax/html.vim
+ unlet b:current_syntax
+ syntax spell default " added by Bram
+ syn region groovyDocComment start="/\*\*" end="\*/" keepend contains=groovyCommentTitle,@groovyHtml,groovyDocTags,groovyTodo,@Spell
+ syn region groovyCommentTitle contained matchgroup=groovyDocComment start="/\*\*" matchgroup=groovyCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@groovyHtml,groovyCommentStar,groovyTodo,@Spell,groovyDocTags
+
+ syn region groovyDocTags contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
+ syn match groovyDocTags contained "@\(see\|param\|exception\|throws\|since\)\s\+\S\+" contains=groovyDocParam
+ syn match groovyDocParam contained "\s\S\+"
+ syn match groovyDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
+ syntax case match
+endif
+
+" match the special comment /**/
+syn match groovyComment "/\*\*/"
+
+" Strings and constants
+syn match groovySpecialError contained "\\."
+syn match groovySpecialCharError contained "[^']"
+syn match groovySpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\|\$\)"
+syn match groovyRegexChar contained "\\."
+syn region groovyString start=+"+ end=+"+ end=+$+ contains=groovySpecialChar,groovySpecialError,@Spell,groovyELExpr
+syn region groovyString start=+'+ end=+'+ end=+$+ contains=groovySpecialChar,groovySpecialError,@Spell
+syn region groovyString start=+"""+ end=+"""+ contains=groovySpecialChar,groovySpecialError,@Spell,groovyELExpr
+syn region groovyString start=+'''+ end=+'''+ contains=groovySpecialChar,groovySpecialError,@Spell
+if exists("groovy_regex_strings")
+ " regex strings interfere with the division operator and thus are disabled
+ " by default
+ syn region groovyString start='/[^/*]' end='/' contains=groovySpecialChar,groovyRegexChar,groovyELExpr
+endif
+" syn region groovyELExpr start=+${+ end=+}+ keepend contained
+syn match groovyELExpr /\${.\{-}}/ contained
+" Fix: force use of the NFA regexp engine (2), see GitHub issue #7280
+syn match groovyELExpr /\%#=2\$[a-zA-Z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE_][a-zA-Z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE0-9_.]*/ contained
+hi def link groovyELExpr Identifier
+
+" TODO: better matching. I am waiting to understand how it really works in groovy
+" syn region groovyClosureParamsBraces start=+|+ end=+|+ contains=groovyClosureParams
+" syn match groovyClosureParams "[ a-zA-Z0-9_*]\+" contained
+" hi def link groovyClosureParams Identifier
+
+" next line disabled, it can cause a crash for a long line
+"syn match groovyStringError +"\([^"\\]\|\\.\)*$+
+
+" disabled: in groovy strings or characters are written the same
+" syn match groovyCharacter "'[^']*'" contains=groovySpecialChar,groovySpecialCharError
+" syn match groovyCharacter "'\\''" contains=groovySpecialChar
+" syn match groovyCharacter "'[^\\]'"
+syn match groovyNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
+syn match groovyNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
+syn match groovyNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
+syn match groovyNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
+
+" unicode characters
+syn match groovySpecial "\\u\d\{4\}"
+
+syn cluster groovyTop add=groovyString,groovyCharacter,groovyNumber,groovySpecial,groovyStringError
+
+if exists("groovy_highlight_functions")
+ if groovy_highlight_functions == "indent"
+ syn match groovyFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=groovyScopeDecl,groovyType,groovyStorageClass,@groovyClasses
+ syn region groovyFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=groovyScopeDecl,groovyType,groovyStorageClass,@groovyClasses
+ syn match groovyFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=groovyScopeDecl,groovyType,groovyStorageClass,@groovyClasses
+ syn region groovyFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=groovyScopeDecl,groovyType,groovyStorageClass,@groovyClasses
+ else
+ " This line catches method declarations at any indentation>0, but it assumes
+ " two things:
+ " 1. class names are always capitalized (ie: Button)
+ " 2. method names are never capitalized (except constructors, of course)
+ syn region groovyFuncDef start=+^\s\+\(\(public\|protected\|private\|static\|abstract\|final\|native\|synchronized\)\s\+\)*\(\(void\|boolean\|char\|byte\|short\|int\|long\|float\|double\|\([A-Za-z_][A-Za-z0-9_$]*\.\)*[A-Z][A-Za-z0-9_$]*\)\(<[^>]*>\)\=\(\[\]\)*\s\+[a-z][A-Za-z0-9_$]*\|[A-Z][A-Za-z0-9_$]*\)\s*([^0-9]+ end=+)+ contains=groovyScopeDecl,groovyType,groovyStorageClass,groovyComment,groovyLineComment,@groovyClasses
+ endif
+ syn match groovyBraces "[{}]"
+ syn cluster groovyTop add=groovyFuncDef,groovyBraces
+endif
+
+if exists("groovy_highlight_debug")
+
+ " Strings and constants
+ syn match groovyDebugSpecial contained "\\\d\d\d\|\\."
+ syn region groovyDebugString contained start=+"+ end=+"+ contains=groovyDebugSpecial
+ syn match groovyDebugStringError +"\([^"\\]\|\\.\)*$+
+ syn match groovyDebugCharacter contained "'[^\\]'"
+ syn match groovyDebugSpecialCharacter contained "'\\.'"
+ syn match groovyDebugSpecialCharacter contained "'\\''"
+ syn match groovyDebugNumber contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
+ syn match groovyDebugNumber contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
+ syn match groovyDebugNumber contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
+ syn match groovyDebugNumber contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
+ syn keyword groovyDebugBoolean contained true false
+ syn keyword groovyDebugType contained null this super
+ syn region groovyDebugParen start=+(+ end=+)+ contained contains=groovyDebug.*,groovyDebugParen
+
+ " to make this work you must define the highlighting for these groups
+ syn match groovyDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=groovyDebug.* nextgroup=groovyDebugParen
+ syn match groovyDebug "\<p\s*("me=e-1 contains=groovyDebug.* nextgroup=groovyDebugParen
+ syn match groovyDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=groovyDebug.* nextgroup=groovyDebugParen
+ syn match groovyDebug "\<trace[SL]\=\s*("me=e-1 contains=groovyDebug.* nextgroup=groovyDebugParen
+
+ syn cluster groovyTop add=groovyDebug
+
+ hi def link groovyDebug Debug
+ hi def link groovyDebugString DebugString
+ hi def link groovyDebugStringError groovyError
+ hi def link groovyDebugType DebugType
+ hi def link groovyDebugBoolean DebugBoolean
+ hi def link groovyDebugNumber Debug
+ hi def link groovyDebugSpecial DebugSpecial
+ hi def link groovyDebugSpecialCharacter DebugSpecial
+ hi def link groovyDebugCharacter DebugString
+ hi def link groovyDebugParen Debug
+
+ hi def link DebugString String
+ hi def link DebugSpecial Special
+ hi def link DebugBoolean Boolean
+ hi def link DebugType Type
+endif
+
+" Match all Exception classes
+syn match groovyExceptions "\<Exception\>\|\<[A-Z]\{1,}[a-zA-Z0-9]*Exception\>"
+
+
+if !exists("groovy_minlines")
+ let groovy_minlines = 10
+endif
+exec "syn sync ccomment groovyComment minlines=" . groovy_minlines
+
+
+" ###################
+" Groovy stuff
+" syn match groovyOperator "|[ ,a-zA-Z0-9_*]\+|"
+
+" All groovy valid tokens
+" syn match groovyTokens ";\|,\|<=>\|<>\|:\|:=\|>\|>=\|=\|==\|<\|<=\|!=\|/\|/=\|\.\.|\.\.\.\|\~=\|\~=="
+" syn match groovyTokens "\*=\|&\|&=\|\*\|->\|\~\|+\|-\|/\|?\|<<<\|>>>\|<<\|>>"
+
+" Must put explicit these ones because groovy.vim mark them as errors otherwise
+" syn match groovyTokens "<=>\|<>\|==\~"
+"syn cluster groovyTop add=groovyTokens
+
+" Mark these as operators
+
+" Hightlight brackets
+" syn match groovyBraces "[{}]"
+" syn match groovyBraces "[\[\]]"
+" syn match groovyBraces "[\|]"
+
+if exists("groovy_mark_braces_in_parens_as_errors")
+ syn match groovyInParen contained "[{}]"
+ hi def link groovyInParen groovyError
+ syn cluster groovyTop add=groovyInParen
+endif
+
+" catch errors caused by wrong parenthesis
+syn region groovyParenT transparent matchgroup=groovyParen start="(" end=")" contains=@groovyTop,groovyParenT1
+syn region groovyParenT1 transparent matchgroup=groovyParen1 start="(" end=")" contains=@groovyTop,groovyParenT2 contained
+syn region groovyParenT2 transparent matchgroup=groovyParen2 start="(" end=")" contains=@groovyTop,groovyParenT contained
+syn match groovyParenError ")"
+hi def link groovyParenError groovyError
+
+" catch errors caused by wrong square parenthesis
+syn region groovyParenT transparent matchgroup=groovyParen start="\[" end="\]" contains=@groovyTop,groovyParenT1
+syn region groovyParenT1 transparent matchgroup=groovyParen1 start="\[" end="\]" contains=@groovyTop,groovyParenT2 contained
+syn region groovyParenT2 transparent matchgroup=groovyParen2 start="\[" end="\]" contains=@groovyTop,groovyParenT contained
+syn match groovyParenError "\]"
+
+" ###############################
+" java.vim default highlighting
+hi def link groovyFuncDef Function
+hi def link groovyBraces Function
+hi def link groovyBranch Conditional
+hi def link groovyUserLabelRef groovyUserLabel
+hi def link groovyLabel Label
+hi def link groovyUserLabel Label
+hi def link groovyConditional Conditional
+hi def link groovyRepeat Repeat
+hi def link groovyExceptions Exception
+hi def link groovyAssert Statement
+hi def link groovyStorageClass StorageClass
+hi def link groovyMethodDecl groovyStorageClass
+hi def link groovyClassDecl groovyStorageClass
+hi def link groovyScopeDecl groovyStorageClass
+hi def link groovyBoolean Boolean
+hi def link groovySpecial Special
+hi def link groovySpecialError Error
+hi def link groovySpecialCharError Error
+hi def link groovyString String
+hi def link groovyRegexChar String
+hi def link groovyCharacter Character
+hi def link groovySpecialChar SpecialChar
+hi def link groovyNumber Number
+hi def link groovyError Error
+hi def link groovyStringError Error
+hi def link groovyStatement Statement
+hi def link groovyOperator Operator
+hi def link groovyComment Comment
+hi def link groovyDocComment Comment
+hi def link groovyLineComment Comment
+hi def link groovyConstant Constant
+hi def link groovyTypedef Typedef
+hi def link groovyTodo Todo
+
+hi def link groovyCommentTitle SpecialComment
+hi def link groovyDocTags Special
+hi def link groovyDocParam Function
+hi def link groovyCommentStar groovyComment
+
+hi def link groovyType Type
+hi def link groovyExternal Include
+
+hi def link htmlComment Special
+hi def link htmlCommentPart Special
+hi def link groovySpaceError Error
+hi def link groovyJDKBuiltin Special
+hi def link groovyJDKOperOverl Operator
+hi def link groovyJDKMethods Function
+
+
+let b:current_syntax = "groovy"
+if main_syntax == 'groovy'
+ unlet main_syntax
+endif
+
+let b:spell_options="contained"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8
diff --git a/runtime/syntax/group.vim b/runtime/syntax/group.vim
new file mode 100644
index 0000000..f62a4a1
--- /dev/null
+++ b/runtime/syntax/group.vim
@@ -0,0 +1,52 @@
+" Vim syntax file
+" Language: group(5) user group file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2012-08-05
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match groupBegin display '^' nextgroup=groupName
+
+syn match groupName contained display '[^:]\+'
+ \ nextgroup=groupPasswordColon
+
+syn match groupPasswordColon contained display ':'
+ \ nextgroup=groupPassword,groupShadow
+
+syn match groupPassword contained display '[^:]*'
+ \ nextgroup=groupGIDColon
+
+syn match groupShadow contained display '[x*]' nextgroup=groupGIDColon
+
+syn match groupGIDColon contained display ':' nextgroup=groupGID
+
+syn match groupGID contained display '\d*'
+ \ nextgroup=groupUserListColon
+
+syn match groupUserListColon contained display ':' nextgroup=groupUserList
+
+syn match groupUserList contained '[^,]\+'
+ \ nextgroup=groupUserListSep
+
+syn match groupUserListSep contained display ',' nextgroup=groupUserList
+
+hi def link groupDelimiter Normal
+hi def link groupName Identifier
+hi def link groupPasswordColon groupDelimiter
+hi def link groupPassword Number
+hi def link groupShadow Special
+hi def link groupGIDColon groupDelimiter
+hi def link groupGID Number
+hi def link groupUserListColon groupDelimiter
+hi def link groupUserList Identifier
+hi def link groupUserListSep groupDelimiter
+
+let b:current_syntax = "group"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/grub.vim b/runtime/syntax/grub.vim
new file mode 100644
index 0000000..3743ae3
--- /dev/null
+++ b/runtime/syntax/grub.vim
@@ -0,0 +1,93 @@
+" Vim syntax file
+" Language: grub(8) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword grubTodo contained TODO FIXME XXX NOTE
+
+syn region grubComment display oneline start='^#' end='$'
+ \ contains=grubTodo,@Spell
+
+syn match grubDevice display
+ \ '(\([fh]d\d\|\d\+\|0x\x\+\)\(,\d\+\)\=\(,\l\)\=)'
+
+syn match grubBlock display '\(\d\+\)\=+\d\+\(,\(\d\+\)\=+\d\+\)*'
+
+syn match grubNumbers display '+\=\<\d\+\|0x\x\+\>'
+
+syn match grubBegin display '^'
+ \ nextgroup=@grubCommands,grubComment skipwhite
+
+syn cluster grubCommands contains=grubCommand,grubTitleCommand
+
+syn keyword grubCommand contained default fallback hiddenmenu timeout
+
+syn keyword grubTitleCommand contained title nextgroup=grubTitle skipwhite
+
+syn match grubTitle contained display '.*'
+
+syn keyword grubCommand contained bootp color device dhcp hide ifconfig
+ \ pager partnew parttype password rarp serial setkey
+ \ terminal tftpserver unhide blocklist boot cat
+ \ chainloader cmp configfile debug displayapm
+ \ displaymem embed find fstest geometry halt help
+ \ impsprobe initrd install ioprobe kernel lock
+ \ makeactive map md5crypt module modulenounzip pause
+ \ quit reboot read root rootnoverify savedefault setup
+ \ testload testvbe uppermem vbeprobe
+
+syn keyword grubSpecial saved
+
+syn match grubBlink display 'blink-'
+syn keyword grubBlack black
+syn keyword grubBlue blue
+syn keyword grubGreen green
+syn keyword grubRed red
+syn keyword grubMagenta magenta
+syn keyword grubBrown brown yellow
+syn keyword grubWhite white
+syn match grubLightGray display 'light-gray'
+syn match grubLightBlue display 'light-blue'
+syn match grubLightGreen display 'light-green'
+syn match grubLightCyan display 'light-cyan'
+syn match grubLightRed display 'light-red'
+syn match grubLightMagenta display 'light-magenta'
+syn match grubDarkGray display 'dark-gray'
+
+hi def link grubComment Comment
+hi def link grubTodo Todo
+hi def link grubNumbers Number
+hi def link grubDevice Identifier
+hi def link grubBlock Identifier
+hi def link grubCommand Keyword
+hi def link grubTitleCommand grubCommand
+hi def link grubTitle String
+hi def link grubSpecial Special
+
+hi def grubBlink cterm=inverse
+hi def grubBlack ctermfg=Black ctermbg=White guifg=Black guibg=White
+hi def grubBlue ctermfg=DarkBlue guifg=DarkBlue
+hi def grubGreen ctermfg=DarkGreen guifg=DarkGreen
+hi def grubRed ctermfg=DarkRed guifg=DarkRed
+hi def grubMagenta ctermfg=DarkMagenta guifg=DarkMagenta
+hi def grubBrown ctermfg=Brown guifg=Brown
+hi def grubWhite ctermfg=White ctermbg=Black guifg=White guibg=Black
+hi def grubLightGray ctermfg=LightGray guifg=LightGray
+hi def grubLightBlue ctermfg=LightBlue guifg=LightBlue
+hi def grubLightGreen ctermfg=LightGreen guifg=LightGreen
+hi def grubLightCyan ctermfg=LightCyan guifg=LightCyan
+hi def grubLightRed ctermfg=LightRed guifg=LightRed
+hi def grubLightMagenta ctermfg=LightMagenta guifg=LightMagenta
+hi def grubDarkGray ctermfg=DarkGray guifg=DarkGray
+
+let b:current_syntax = "grub"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/gsp.vim b/runtime/syntax/gsp.vim
new file mode 100644
index 0000000..6270b2a
--- /dev/null
+++ b/runtime/syntax/gsp.vim
@@ -0,0 +1,54 @@
+" Vim syntax file
+" Language: GSP - GNU Server Pages (v. 0.86)
+" Created By: Nathaniel Harward nharward@yahoo.com
+" Last Changed: 2012 Jan 08 by Thilo Six
+" Filenames: *.gsp
+" URL: http://www.constructicon.com/~nharward/vim/syntax/gsp.vim
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'gsp'
+endif
+
+" Source HTML syntax
+runtime! syntax/html.vim
+unlet b:current_syntax
+
+syn case match
+
+" Include Java syntax
+syn include @gspJava syntax/java.vim
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Add <java> as an HTML tag name along with its args
+syn keyword htmlTagName contained java
+syn keyword htmlArg contained type file page
+
+" Redefine some HTML things to include (and highlight) gspInLine code in
+" places where it's likely to be found
+syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,gspInLine
+syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,gspInLine
+syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=javaScriptExpression,@htmlPreproc,gspInLine
+syn region htmlEndTag start=+</+ end=+>+ contains=htmlTagN,htmlTagError,gspInLine
+syn region htmlTag start=+<[^/]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster,gspInLine
+syn match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster,gspInLine
+syn match htmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster,gspInLine
+
+" Define the GSP java code blocks
+syn region gspJavaBlock start="<java\>[^>]*\>" end="</java>"me=e-7 contains=@gspJava,htmlTag
+syn region gspInLine matchgroup=htmlError start="`" end="`" contains=@gspJava
+
+let b:current_syntax = "gsp"
+
+if main_syntax == 'gsp'
+ unlet main_syntax
+endif
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/gtkrc.vim b/runtime/syntax/gtkrc.vim
new file mode 100644
index 0000000..9c1bc2a
--- /dev/null
+++ b/runtime/syntax/gtkrc.vim
@@ -0,0 +1,126 @@
+" Vim syntax file
+" This is a GENERATED FILE. Please always refer to source file at the URI below.
+" Language: Gtk+ theme files `gtkrc'
+" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
+" Last Change: 2002-10-31
+" URL: http://trific.ath.cx/Ftp/vim/syntax/gtkrc.vim
+
+" Setup
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=_,-,a-z,A-Z,48-57
+
+syn case match
+
+" Base constructs
+syn match gtkrcComment "#.*$" contains=gtkrcFixme
+syn keyword gtkrcFixme FIXME TODO XXX NOT contained
+syn region gtkrcACString start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline contains=gtkrcWPathSpecial,gtkrcClassName,gtkrcClassNameGnome contained
+syn region gtkrcBString start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline contains=gtkrcKeyMod contained
+syn region gtkrcString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=gtkrcStockName,gtkrcPathSpecial,gtkrcRGBColor
+syn match gtkrcPathSpecial "<parent>" contained
+syn match gtkrcWPathSpecial "[*?.]" contained
+syn match gtkrcNumber "^\(\d\+\)\=\.\=\d\+"
+syn match gtkrcNumber "\W\(\d\+\)\=\.\=\d\+"lc=1
+syn match gtkrcRGBColor "#\(\x\{12}\|\x\{9}\|\x\{6}\|\x\{3}\)" contained
+syn cluster gtkrcPRIVATE add=gtkrcFixme,gtkrcPathSpecial,gtkrcWPathSpecial,gtkrcRGBColor,gtkrcACString
+
+" Keywords
+syn keyword gtkrcInclude include
+syn keyword gtkrcPathSet module_path pixmap_path
+syn keyword gtkrcTop binding style
+syn keyword gtkrcTop widget widget_class nextgroup=gtkrcACString skipwhite
+syn keyword gtkrcTop class nextgroup=gtkrcACString skipwhite
+syn keyword gtkrcBind bind nextgroup=gtkrcBString skipwhite
+syn keyword gtkrcStateName NORMAL INSENSITIVE PRELIGHT ACTIVE SELECTED
+syn keyword gtkrcPriorityName HIGHEST RC APPLICATION GTK LOWEST
+syn keyword gtkrcPriorityName highest rc application gtk lowest
+syn keyword gtkrcTextDirName LTR RTL
+syn keyword gtkrcStyleKeyword fg bg fg_pixmap bg_pixmap bg_text base font font_name fontset stock text
+syn match gtkrcKeyMod "<\(alt\|ctrl\|control\|mod[1-5]\|release\|shft\|shift\)>" contained
+syn cluster gtkrcPRIVATE add=gtkrcKeyMod
+
+" Enums and engine words
+syn keyword gtkrcKeyword engine image
+syn keyword gtkrcImage arrow_direction border detail file gap_border gap_end_border gap_end_file gap_file gap_side gap_side gap_start_border gap_start_file orientation overlay_border overlay_file overlay_stretch recolorable shadow state stretch thickness
+syn keyword gtkrcConstant TRUE FALSE NONE IN OUT LEFT RIGHT TOP BOTTOM UP DOWN VERTICAL HORIZONTAL ETCHED_IN ETCHED_OUT
+syn keyword gtkrcFunction function nextgroup=gtkrcFunctionEq skipwhite
+syn match gtkrcFunctionEq "=" nextgroup=gtkrcFunctionName contained skipwhite
+syn keyword gtkrcFunctionName ARROW BOX BOX_GAP CHECK CROSS DIAMOND EXTENSION FLAT_BOX FOCUS HANDLE HLINE OPTION OVAL POLYGON RAMP SHADOW SHADOW_GAP SLIDER STRING TAB VLINE contained
+syn cluster gtkrcPRIVATE add=gtkrcFunctionName,gtkrcFunctionEq
+
+" Class names
+syn keyword gtkrcClassName GtkAccelLabel GtkAdjustment GtkAlignment GtkArrow GtkAspectFrame GtkBin GtkBox GtkButton GtkButtonBox GtkCList GtkCTree GtkCalendar GtkCheckButton GtkCheckMenuItem GtkColorSelection GtkColorSelectionDialog GtkCombo GtkContainer GtkCurve GtkData GtkDialog GtkDrawingArea GtkEditable GtkEntry GtkEventBox GtkFileSelection GtkFixed GtkFontSelection GtkFontSelectionDialog GtkFrame GtkGammaCurve GtkHBox GtkHButtonBox GtkHPaned GtkHRuler GtkHScale GtkHScrollbar GtkHSeparator GtkHandleBox GtkImage GtkImageMenuItem GtkInputDialog GtkInvisible GtkItem GtkItemFactory GtkLabel GtkLayout GtkList GtkListItem GtkMenu GtkMenuBar GtkMenuItem GtkMenuShell GtkMessageDialog GtkMisc GtkNotebook GtkObject GtkOptionMenu GtkPacker GtkPaned GtkPixmap GtkPlug GtkPreview GtkProgress GtkProgressBar GtkRadioButton GtkRadioMenuItem GtkRange GtkRuler GtkScale GtkScrollbar GtkScrolledWindow GtkSeparatorMenuItem GtkSocket GtkSpinButton GtkStatusbar GtkTable GtkTearoffMenuItem GtkText GtkTextBuffer GtkTextMark GtkTextTag GtkTextView GtkTipsQuery GtkToggleButton GtkToolbar GtkTooltips GtkTree GtkTreeView GtkTreeItem GtkVBox GtkVButtonBox GtkVPaned GtkVRuler GtkVScale GtkVScrollbar GtkVSeparator GtkViewport GtkWidget GtkWindow GtkWindowGroup contained
+syn keyword gtkrcClassName AccelLabel Adjustment Alignment Arrow AspectFrame Bin Box Button ButtonBox CList CTree Calendar CheckButton CheckMenuItem ColorSelection ColorSelectionDialog Combo Container Curve Data Dialog DrawingArea Editable Entry EventBox FileSelection Fixed FontSelection FontSelectionDialog Frame GammaCurve HBox HButtonBox HPaned HRuler HScale HScrollbar HSeparator HandleBox Image ImageMenuItem InputDialog Invisible Item ItemFactory Label Layout List ListItem Menu MenuBar MenuItem MenuShell MessageDialog Misc Notebook Object OptionMenu Packer Paned Pixmap Plug Preview Progress ProgressBar RadioButton RadioMenuItem Range Ruler Scale Scrollbar ScrolledWindow SeparatorMenuItem Socket SpinButton Statusbar Table TearoffMenuItem Text TextBuffer TextMark TextTag TextView TipsQuery ToggleButton Toolbar Tooltips Tree TreeView TreeItem VBox VButtonBox VPaned VRuler VScale VScrollbar VSeparator Viewport Widget Window WindowGroup contained
+syn keyword gtkrcClassNameGnome GnomeAbout GnomeAnimator GnomeApp GnomeAppBar GnomeCalculator GnomeCanvas GnomeCanvasEllipse GnomeCanvasGroup GnomeCanvasImage GnomeCanvasItem GnomeCanvasLine GnomeCanvasPolygon GnomeCanvasRE GnomeCanvasRect GnomeCanvasText GnomeCanvasWidget GnomeClient GnomeColorPicker GnomeDEntryEdit GnomeDateEdit GnomeDialog GnomeDock GnomeDockBand GnomeDockItem GnomeDockLayout GnomeDruid GnomeDruidPage GnomeDruidPageFinish GnomeDruidPageStandard GnomeDruidPageStart GnomeEntry GnomeFileEntry GnomeFontPicker GnomeFontSelector GnomeHRef GnomeIconEntry GnomeIconList GnomeIconSelection GnomeIconTextItem GnomeLess GnomeMDI GnomeMDIChild GnomeMDIGenericChild GnomeMessageBox GnomeNumberEntry GnomePaperSelector GnomePixmap GnomePixmapEntry GnomeProcBar GnomePropertyBox GnomeScores GnomeSpell GnomeStock GtkClock GtkDial GtkPixmapMenuItem GtkTed contained
+syn cluster gtkrcPRIVATE add=gtkrcClassName,gtkrcClassNameGnome
+
+" Stock item names
+syn keyword gtkrcStockName gtk-add gtk-apply gtk-bold gtk-cancel gtk-cdrom gtk-clear gtk-close gtk-convert gtk-copy gtk-cut gtk-delete gtk-dialog-error gtk-dialog-info gtk-dialog-question gtk-dialog-warning gtk-dnd gtk-dnd-multiple gtk-execute gtk-find gtk-find-and-replace gtk-floppy gtk-goto-bottom gtk-goto-first gtk-goto-last gtk-goto-top gtk-go-back gtk-go-down gtk-go-forward gtk-go-up gtk-help gtk-home gtk-index gtk-italic gtk-jump-to gtk-justify-center gtk-justify-fill gtk-justify-left gtk-justify-right gtk-missing-image gtk-new gtk-no gtk-ok gtk-open gtk-paste gtk-preferences gtk-print gtk-print-preview gtk-properties gtk-quit gtk-redo gtk-refresh gtk-remove gtk-revert-to-saved gtk-save gtk-save-as gtk-select-color gtk-select-font gtk-sort-ascending gtk-sort-descending gtk-spell-check gtk-stop gtk-strikethrough gtk-undelete gtk-underline gtk-undo gtk-yes gtk-zoom-100 gtk-zoom-fit gtk-zoom-in gtk-zoom-out contained
+syn cluster gtkrcPRIVATE add=gtkrcStockName
+
+" Gtk Settings
+syn keyword gtkrcSettingsName gtk-double-click-time gtk-cursor-blink gtk-cursor-blink-time gtk-split-cursor gtk-theme-name gtk-key-theme-name gtk-menu-bar-accel gtk-dnd-drag-threshold gtk-font-name gtk-color-palette gtk-entry-select-on-focus gtk-can-change-accels gtk-toolbar-style gtk-toolbar-icon-size
+syn cluster gtkrcPRIVATE add=gtkrcSettingsName
+
+" Catch errors caused by wrong parenthesization
+syn region gtkrcParen start='(' end=')' transparent contains=ALLBUT,gtkrcParenError,@gtkrcPRIVATE
+syn match gtkrcParenError ")"
+syn region gtkrcBrace start='{' end='}' transparent contains=ALLBUT,gtkrcBraceError,@gtkrcPRIVATE
+syn match gtkrcBraceError "}"
+syn region gtkrcBracket start='\[' end=']' transparent contains=ALLBUT,gtkrcBracketError,@gtkrcPRIVATE
+syn match gtkrcBracketError "]"
+
+" Synchronization
+syn sync minlines=50
+syn sync match gtkrcSyncClass groupthere NONE "^\s*class\>"
+
+" Define the default highlighting
+
+hi def link gtkrcComment Comment
+hi def link gtkrcFixme Todo
+
+hi def link gtkrcInclude Preproc
+
+hi def link gtkrcACString gtkrcString
+hi def link gtkrcBString gtkrcString
+hi def link gtkrcString String
+hi def link gtkrcNumber Number
+hi def link gtkrcStateName gtkrcConstant
+hi def link gtkrcPriorityName gtkrcConstant
+hi def link gtkrcTextDirName gtkrcConstant
+hi def link gtkrcSettingsName Function
+hi def link gtkrcStockName Function
+hi def link gtkrcConstant Constant
+
+hi def link gtkrcPathSpecial gtkrcSpecial
+hi def link gtkrcWPathSpecial gtkrcSpecial
+hi def link gtkrcRGBColor gtkrcSpecial
+hi def link gtkrcKeyMod gtkrcSpecial
+hi def link gtkrcSpecial Special
+
+hi def link gtkrcTop gtkrcKeyword
+hi def link gtkrcPathSet gtkrcKeyword
+hi def link gtkrcStyleKeyword gtkrcKeyword
+hi def link gtkrcFunction gtkrcKeyword
+hi def link gtkrcBind gtkrcKeyword
+hi def link gtkrcKeyword Keyword
+
+hi def link gtkrcClassNameGnome gtkrcGtkClass
+hi def link gtkrcClassName gtkrcGtkClass
+hi def link gtkrcFunctionName gtkrcGtkClass
+hi def link gtkrcGtkClass Type
+
+hi def link gtkrcImage gtkrcOtherword
+hi def link gtkrcOtherword Function
+
+hi def link gtkrcParenError gtkrcError
+hi def link gtkrcBraceError gtkrcError
+hi def link gtkrcBracketError gtkrcError
+hi def link gtkrcError Error
+
+
+let b:current_syntax = "gtkrc"
diff --git a/runtime/syntax/gvpr.vim b/runtime/syntax/gvpr.vim
new file mode 100644
index 0000000..a737891
--- /dev/null
+++ b/runtime/syntax/gvpr.vim
@@ -0,0 +1,85 @@
+" Vim syntax file
+" Language: Graphviz program
+" Maintainer: Matthew Fernandez <matthew.fernandez@gmail.com>
+" Last Change: Tue, 28 Jul 2020 17:20:44 -0700
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword gvArg ARGC ARGV
+syn keyword gvBeg BEGIN BEG_G N E END END_G
+syn keyword gvFunc
+ \ graph fstsubg isDirect isStrict isSubg nEdges nNodes nxtsubg subg
+ \ degreeOf fstnode indegreeOf isNode isSubnode node nxtnode nxtnode_sg
+ \ outDegreeOf subnode
+ \ edge edge_sg fstedge fstedge_sg fstin fstin_sg fstout fstout_sg isEdge
+ \ isEdge_sg isSubedge nxtedge nxtedge_sg nxtin nxtin_sg nxtout nxtout_sg opp
+ \ subedge
+ \ freadG fwriteG readG write[] writeG
+ \ aget aset clone cloneG compOf copy[] copyA delete[] fstAttr getDflt hasAttr
+ \ induce isAttr isIn kindOf lock[] nxtAttr setDflt
+ \ canon gsub html index ishtml length llOf match[] rindex split[] sprintf
+ \ sscanf strcmp sub substr tokens tolower toupper urOf xOf yOf
+ \ closeF openF print[] printf scanf readL
+ \ atan2 cos exp log MAX MIN pow sin[] sqrt
+ \ in[] unset
+ \ colorx exit[] rand srand system
+syn keyword gvCons
+ \ NULL TV_bfs TV_dfs TV_en TV_flat TV_fwd TV_ne TV_prepostdfs TV_prepostfwd
+ \ TV_prepostrev TV_postdfs TV_postfwd tv_postrev TV_rev
+syn keyword gvType char double float int long unsigned void
+ \ string
+ \ edge_t graph_t node_t obj_t
+syn match gvVar
+ \ "\$\(\(F\|G\|NG\|O\|T\|tgtname\|tvedge\|tvnext\|tvroot\|tvtype\)\>\)\?\(\<\)\@!"
+syn keyword gvWord break continue else for forr if return switch while
+
+" numbers adapted from c.vim's cNumbers and friends
+syn match gvNums transparent "\<\d\|\.\d" contains=gvNumber,gvFloat,gvOctal
+syn match gvNumber contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
+syn match gvNumber contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+syn match gvOctal contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=gvOctalZero
+syn match gvOctalZero contained "\<0"
+syn match gvFloat contained "\d\+f"
+syn match gvFloat contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+syn match gvFloat contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+syn match gvFloat contained "\d\+e[-+]\=\d\+[fl]\=\>"
+
+syn region gvString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=gvFormat,gvSpecial extend
+syn region gvString start="'" skip="\\\\\|\\'" end="'" contains=gvFormat,gvSpecial extend
+
+" adapted from c.vim's cFormat for c_no_c99
+syn match gvFormat "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
+
+syn match gvSpecial "\\." contained
+
+syn region gvCComment start="//" skip="\\$" end="$" keepend
+syn region gvCPPComment start="#" skip="\\$" end="$" keepend
+syn region gvCXXComment start="/\*" end="\*/" fold
+
+hi def link gvArg Identifier
+hi def link gvBeg Keyword
+hi def link gvFloat Number
+hi def link gvFunc Identifier
+hi def link gvCons Number
+hi def link gvNumber Number
+hi def link gvType Type
+hi def link gvVar Statement
+hi def link gvWord Keyword
+
+hi def link gvString String
+hi def link gvFormat Special
+hi def link gvSpecial Special
+
+hi def link gvCComment Comment
+hi def link gvCPPComment Comment
+hi def link gvCXXComment Comment
+
+let b:current_syntax = "gvpr"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/gyp.vim b/runtime/syntax/gyp.vim
new file mode 100644
index 0000000..14c07b8
--- /dev/null
+++ b/runtime/syntax/gyp.vim
@@ -0,0 +1,49 @@
+" Vim syntax file
+" Language: GYP
+" Maintainer: ObserverOfTime <chronobserver@disroot.org>
+" Filenames: *.gyp,*.gypi
+" Last Change: 2022 Sep 27
+
+if !exists('g:main_syntax')
+ if exists('b:current_syntax') && b:current_syntax ==# 'gyp'
+ finish
+ endif
+ let g:main_syntax = 'gyp'
+endif
+
+" Based on JSON syntax
+runtime! syntax/json.vim
+
+" Single quotes are allowed
+syn clear jsonStringSQError
+
+syn match jsonKeywordMatch /'\([^']\|\\\'\)\+'[[:blank:]\r\n]*\:/ contains=jsonKeyword
+if has('conceal') && (!exists('g:vim_json_conceal') || g:vim_json_conceal==1)
+ syn region jsonKeyword matchgroup=jsonQuote start=/'/ end=/'\ze[[:blank:]\r\n]*\:/ concealends contained
+else
+ syn region jsonKeyword matchgroup=jsonQuote start=/'/ end=/'\ze[[:blank:]\r\n]*\:/ contained
+endif
+
+syn match jsonStringMatch /'\([^']\|\\\'\)\+'\ze[[:blank:]\r\n]*[,}\]]/ contains=jsonString
+if has('conceal') && (!exists('g:vim_json_conceal') || g:vim_json_conceal==1)
+ syn region jsonString oneline matchgroup=jsonQuote start=/'/ skip=/\\\\\|\\'/ end=/'/ concealends contains=jsonEscape contained
+else
+ syn region jsonString oneline matchgroup=jsonQuote start=/'/ skip=/\\\\\|\\'/ end=/'/ contains=jsonEscape contained
+endif
+
+" Trailing commas are allowed
+if !exists('g:vim_json_warnings') || g:vim_json_warnings==1
+ syn clear jsonTrailingCommaError
+endif
+
+" Python-style comments are allowed
+syn match jsonComment /#.*$/ contains=jsonTodo,@Spell
+syn keyword jsonTodo FIXME NOTE TODO XXX TBD contained
+
+hi def link jsonComment Comment
+hi def link jsonTodo Todo
+
+let b:current_syntax = 'gyp'
+if g:main_syntax ==# 'gyp'
+ unlet g:main_syntax
+endif
diff --git a/runtime/syntax/haml.vim b/runtime/syntax/haml.vim
new file mode 100644
index 0000000..c14b88f
--- /dev/null
+++ b/runtime/syntax/haml.vim
@@ -0,0 +1,109 @@
+" Vim syntax file
+" Language: Haml
+" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
+" Filenames: *.haml
+" Last Change: 2019 Dec 05
+
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'haml'
+endif
+let b:ruby_no_expensive = 1
+
+runtime! syntax/html.vim
+unlet! b:current_syntax
+silent! syn include @hamlSassTop syntax/sass.vim
+unlet! b:current_syntax
+syn include @hamlRubyTop syntax/ruby.vim
+
+syn case match
+
+syn region rubyCurlyBlock start="{" end="}" contains=@hamlRubyTop contained
+syn cluster hamlRubyTop add=rubyCurlyBlock
+
+syn cluster hamlComponent contains=hamlAttributes,hamlAttributesHash,hamlClassChar,hamlIdChar,hamlObject,hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable
+syn cluster hamlEmbeddedRuby contains=hamlAttributesHash,hamlObject,hamlRuby,hamlRubyFilter
+syn cluster hamlTop contains=hamlBegin,hamlPlainFilter,hamlRubyFilter,hamlSassFilter,hamlComment,hamlHtmlComment
+
+syn match hamlBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=hamlTag,hamlClassChar,hamlIdChar,hamlRuby,hamlPlainChar,hamlInterpolatable
+
+syn match hamlTag "%\w\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@hamlComponent
+syn region hamlAttributes matchgroup=hamlAttributesDelimiter start="(" end=")" contained contains=htmlArg,hamlAttributeString,hamlAttributeVariable,htmlEvent,htmlCssDefinition nextgroup=@hamlComponent
+syn region hamlAttributesHash matchgroup=hamlAttributesDelimiter start="{" end="}" contained contains=@hamlRubyTop nextgroup=@hamlComponent
+syn region hamlObject matchgroup=hamlObjectDelimiter start="\[" end="\]" contained contains=@hamlRubyTop nextgroup=@hamlComponent
+syn match hamlDespacer "[<>]" contained nextgroup=hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable
+syn match hamlSelfCloser "/" contained
+syn match hamlClassChar "\." contained nextgroup=hamlClass
+syn match hamlIdChar "#{\@!" contained nextgroup=hamlId
+syn match hamlClass "\%(\w\|-\|\:\)\+" contained nextgroup=@hamlComponent
+syn match hamlId "\%(\w\|-\)\+" contained nextgroup=@hamlComponent
+syn region hamlDocType start="^\s*!!!" end="$"
+
+syn region hamlRuby matchgroup=hamlRubyOutputChar start="[!&]\==\|\~" skip=",\s*$" end="$" contained contains=@hamlRubyTop keepend
+syn region hamlRuby matchgroup=hamlRubyChar start="-" skip=",\s*$" end="$" contained contains=@hamlRubyTop keepend
+syn match hamlPlainChar "\\" contained
+syn region hamlInterpolatable matchgroup=hamlInterpolatableChar start="!\===\|!=\@!" end="$" keepend contained contains=hamlInterpolation,hamlInterpolationEscape,@hamlHtmlTop
+syn region hamlInterpolatable matchgroup=hamlInterpolatableChar start="&==\|&=\@!" end="$" keepend contained contains=hamlInterpolation,hamlInterpolationEscape
+syn region hamlInterpolation matchgroup=hamlInterpolationDelimiter start="#{" end="}" contains=@hamlRubyTop containedin=javascriptStringS,javascriptStringD
+syn match hamlInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)"
+syn region hamlErbInterpolation matchgroup=hamlInterpolationDelimiter start="<%[=-]\=" end="-\=%>" contained contains=@hamlRubyTop
+
+syn region hamlAttributeString start=+\%(=\s*\)\@<='+ skip=+\%(\\\\\)*\\'+ end=+'+ contains=hamlInterpolation,hamlInterpolationEscape
+syn region hamlAttributeString start=+\%(=\s*\)\@<="+ skip=+\%(\\\\\)*\\"+ end=+"+ contains=hamlInterpolation,hamlInterpolationEscape
+syn match hamlAttributeVariable "\%(=\s*\)\@<=\%(@@\=\|\$\)\=\w\+" contained
+
+syn match hamlHelper "\<action_view?\|\<block_is_haml?\|\<is_haml?\|\.\@<!\<flatten" contained containedin=@hamlEmbeddedRuby,@hamlRubyTop
+syn keyword hamlHelper capture_haml escape_once find_and_preserve haml_concat haml_indent haml_tag html_attrs html_esape init_haml_helpers list_of non_haml precede preserve succeed surround tab_down tab_up page_class contained containedin=@hamlEmbeddedRuby,@hamlRubyTop
+
+syn cluster hamlHtmlTop contains=@htmlTop,htmlBold,htmlItalic,htmlUnderline
+syn region hamlPlainFilter matchgroup=hamlFilter start="^\z(\s*\):\%(plain\|preserve\|redcloth\|textile\|markdown\|maruku\)\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlHtmlTop,hamlInterpolation
+syn region hamlEscapedFilter matchgroup=hamlFilter start="^\z(\s*\):\%(escaped\|cdata\)\s*$" end="^\%(\z1 \| *$\)\@!" contains=hamlInterpolation
+syn region hamlErbFilter matchgroup=hamlFilter start="^\z(\s*\):erb\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlHtmlTop,hamlErbInterpolation
+syn region hamlRubyFilter matchgroup=hamlFilter start="^\z(\s*\):ruby\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlRubyTop
+syn region hamlJavascriptFilter matchgroup=hamlFilter start="^\z(\s*\):javascript\s*$" end="^\%(\z1 \| *$\)\@!" contains=@htmlJavaScript,hamlInterpolation keepend
+syn region hamlCSSFilter matchgroup=hamlFilter start="^\z(\s*\):css\s*$" end="^\%(\z1 \| *$\)\@!" contains=@htmlCss,hamlInterpolation keepend
+syn region hamlSassFilter matchgroup=hamlFilter start="^\z(\s*\):sass\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlSassTop
+
+syn region hamlJavascriptBlock start="^\z(\s*\)%script\%((type=[\"']text/javascript[\"'])\)\=\s*$" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,@htmlJavaScript keepend
+syn region hamlCssBlock start="^\z(\s*\)%style" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,@htmlCss keepend
+syn match hamlError "\$" contained
+
+syn region hamlComment start="^\z(\s*\)-#" end="^\%(\z1 \| *$\)\@!" contains=rubyTodo
+syn region hamlHtmlComment start="^\z(\s*\)/" end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,rubyTodo
+syn match hamlIEConditional "\%(^\s*/\)\@<=\[if\>[^]]*]" contained containedin=hamlHtmlComment
+
+hi def link hamlSelfCloser Special
+hi def link hamlDespacer Special
+hi def link hamlClassChar Special
+hi def link hamlIdChar Special
+hi def link hamlTag Special
+hi def link hamlClass Type
+hi def link hamlId Identifier
+hi def link hamlPlainChar Special
+hi def link hamlInterpolatableChar hamlRubyChar
+hi def link hamlRubyOutputChar hamlRubyChar
+hi def link hamlRubyChar Special
+hi def link hamlInterpolationDelimiter Delimiter
+hi def link hamlInterpolationEscape Special
+hi def link hamlAttributeString String
+hi def link hamlAttributeVariable Identifier
+hi def link hamlDocType PreProc
+hi def link hamlFilter PreProc
+hi def link hamlAttributesDelimiter Delimiter
+hi def link hamlObjectDelimiter Delimiter
+hi def link hamlHelper Function
+hi def link hamlHtmlComment hamlComment
+hi def link hamlComment Comment
+hi def link hamlIEConditional SpecialComment
+hi def link hamlError Error
+
+let b:current_syntax = "haml"
+
+if main_syntax == "haml"
+ unlet main_syntax
+endif
+
+" vim:set sw=2:
diff --git a/runtime/syntax/hamster.vim b/runtime/syntax/hamster.vim
new file mode 100644
index 0000000..975562d
--- /dev/null
+++ b/runtime/syntax/hamster.vim
@@ -0,0 +1,370 @@
+" Vim syntax file
+" Language: Hamster Scripting Language
+" Maintainer: David Fishburn <fishburn@ianywhere.com>
+" Last Change: Sun Oct 24 2004 7:11:50 PM
+" Version: 2.0.6.0
+
+" Description: Hamster Classic
+" Hamster is a local server for news and mail. It's a windows-32-bit-program.
+" It allows the use of multiple news- and mailserver and combines them to one
+" mail- and newsserver for the news/mail-client. It load faster than a normal
+" newsreader because many threads can run simultaneous. It contains scorefile
+" for news and mail, a built-in script language, the GUI allows translation to
+" other languages, it can be used in a network and that's not all features...
+"
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+syn keyword hamsterSpecial abs
+syn keyword hamsterSpecial artaddheader
+syn keyword hamsterSpecial artalloc
+syn keyword hamsterSpecial artdelheader
+syn keyword hamsterSpecial artfree
+syn keyword hamsterSpecial artgetbody
+syn keyword hamsterSpecial artgetheader
+syn keyword hamsterSpecial artgetheaders
+syn keyword hamsterSpecial artgettext
+syn keyword hamsterSpecial artheaderexists
+syn keyword hamsterSpecial artload
+syn keyword hamsterSpecial artsave
+syn keyword hamsterSpecial artsetbody
+syn keyword hamsterSpecial artsetheader
+syn keyword hamsterSpecial artsetheaders
+syn keyword hamsterSpecial artsettext
+syn keyword hamsterSpecial assert
+syn keyword hamsterSpecial atadd
+syn keyword hamsterSpecial atclear
+syn keyword hamsterSpecial atcount
+syn keyword hamsterSpecial ateverymins
+syn keyword hamsterSpecial atexecute
+syn keyword hamsterSpecial atfrom
+syn keyword hamsterSpecial atondays
+syn keyword hamsterSpecial atsubfunction
+syn keyword hamsterSpecial atuntil
+syn keyword hamsterSpecial beep
+syn keyword hamsterSpecial break
+syn keyword hamsterSpecial chr
+syn keyword hamsterSpecial clearxcounter
+syn keyword hamsterSpecial clipread
+syn keyword hamsterSpecial clipwrite
+syn keyword hamsterSpecial const
+syn keyword hamsterSpecial constenum
+syn keyword hamsterSpecial continue
+syn keyword hamsterSpecial copy
+syn keyword hamsterSpecial debug
+syn keyword hamsterSpecial dec
+syn keyword hamsterSpecial decodebase64
+syn keyword hamsterSpecial decodeqp
+syn keyword hamsterSpecial decodetime
+syn keyword hamsterSpecial decxcounter
+syn keyword hamsterSpecial delete
+syn keyword hamsterSpecial deletehostsentry
+syn keyword hamsterSpecial digest
+syn keyword hamsterSpecial dirchange
+syn keyword hamsterSpecial dircurrent
+syn keyword hamsterSpecial direxists
+syn keyword hamsterSpecial dirmake
+syn keyword hamsterSpecial dirremove
+syn keyword hamsterSpecial dirsystem
+syn keyword hamsterSpecial dirwindows
+syn keyword hamsterSpecial diskfreekb
+syn keyword hamsterSpecial dllcall
+syn keyword hamsterSpecial dllfree
+syn keyword hamsterSpecial dlllasterror
+syn keyword hamsterSpecial dllload
+syn keyword hamsterSpecial dump
+syn keyword hamsterSpecial encodetime
+syn keyword hamsterSpecial entercontext
+syn keyword hamsterSpecial errcatch
+syn keyword hamsterSpecial errline
+syn keyword hamsterSpecial errlineno
+syn keyword hamsterSpecial errmodule
+syn keyword hamsterSpecial errmsg
+syn keyword hamsterSpecial errnum
+syn keyword hamsterSpecial error
+syn keyword hamsterSpecial errsender
+syn keyword hamsterSpecial eval
+syn keyword hamsterSpecial eventclose
+syn keyword hamsterSpecial eventcreate
+syn keyword hamsterSpecial eventmultiplewait
+syn keyword hamsterSpecial eventpulse
+syn keyword hamsterSpecial eventreset
+syn keyword hamsterSpecial eventset
+syn keyword hamsterSpecial eventwait
+syn keyword hamsterSpecial execute
+syn keyword hamsterSpecial false
+syn keyword hamsterSpecial filecopy
+syn keyword hamsterSpecial filedelete
+syn keyword hamsterSpecial fileexists
+syn keyword hamsterSpecial filemove
+syn keyword hamsterSpecial filerename
+syn keyword hamsterSpecial filesize
+syn keyword hamsterSpecial filetime
+syn keyword hamsterSpecial getenv
+syn keyword hamsterSpecial getprocessidentifier
+syn keyword hamsterSpecial getuptimedays
+syn keyword hamsterSpecial getuptimehours
+syn keyword hamsterSpecial getuptimemins
+syn keyword hamsterSpecial getuptimesecs
+syn keyword hamsterSpecial gosub
+syn keyword hamsterSpecial goto
+syn keyword hamsterSpecial hex
+syn keyword hamsterSpecial icase
+syn keyword hamsterSpecial iif
+syn keyword hamsterSpecial inc
+syn keyword hamsterSpecial incxcounter
+syn keyword hamsterSpecial inidelete
+syn keyword hamsterSpecial inierasesection
+syn keyword hamsterSpecial iniread
+syn keyword hamsterSpecial iniwrite
+syn keyword hamsterSpecial inputbox
+syn keyword hamsterSpecial inputpw
+syn keyword hamsterSpecial int
+syn keyword hamsterSpecial isint
+syn keyword hamsterSpecial isstr
+syn keyword hamsterSpecial leavecontext
+syn keyword hamsterSpecial len
+syn keyword hamsterSpecial listadd
+syn keyword hamsterSpecial listalloc
+syn keyword hamsterSpecial listappend
+syn keyword hamsterSpecial listbox
+syn keyword hamsterSpecial listclear
+syn keyword hamsterSpecial listcount
+syn keyword hamsterSpecial listdelete
+syn keyword hamsterSpecial listdirs
+syn keyword hamsterSpecial listexists
+syn keyword hamsterSpecial listfiles
+syn keyword hamsterSpecial listfiles
+syn keyword hamsterSpecial listfree
+syn keyword hamsterSpecial listget
+syn keyword hamsterSpecial listgetkey
+syn keyword hamsterSpecial listgettag
+syn keyword hamsterSpecial listgettext
+syn keyword hamsterSpecial listindexof
+syn keyword hamsterSpecial listinsert
+syn keyword hamsterSpecial listload
+syn keyword hamsterSpecial listrasentries
+syn keyword hamsterSpecial listsave
+syn keyword hamsterSpecial listset
+syn keyword hamsterSpecial listsetkey
+syn keyword hamsterSpecial listsettag
+syn keyword hamsterSpecial listsettext
+syn keyword hamsterSpecial listsort
+syn keyword hamsterSpecial localhostaddr
+syn keyword hamsterSpecial localhostname
+syn keyword hamsterSpecial lookuphostaddr
+syn keyword hamsterSpecial lookuphostname
+syn keyword hamsterSpecial lowercase
+syn keyword hamsterSpecial memalloc
+syn keyword hamsterSpecial memforget
+syn keyword hamsterSpecial memfree
+syn keyword hamsterSpecial memgetint
+syn keyword hamsterSpecial memgetstr
+syn keyword hamsterSpecial memsetint
+syn keyword hamsterSpecial memsetstr
+syn keyword hamsterSpecial memsize
+syn keyword hamsterSpecial memvarptr
+syn keyword hamsterSpecial msgbox
+syn keyword hamsterSpecial ord
+syn keyword hamsterSpecial paramcount
+syn keyword hamsterSpecial paramstr
+syn keyword hamsterSpecial popupbox
+syn keyword hamsterSpecial pos
+syn keyword hamsterSpecial print
+syn keyword hamsterSpecial quit
+syn keyword hamsterSpecial random
+syn keyword hamsterSpecial randomize
+syn keyword hamsterSpecial rasdial
+syn keyword hamsterSpecial rasgetconnection
+syn keyword hamsterSpecial rasgetip
+syn keyword hamsterSpecial rashangup
+syn keyword hamsterSpecial rasisconnected
+syn keyword hamsterSpecial re_extract
+syn keyword hamsterSpecial re_match
+syn keyword hamsterSpecial re_parse
+syn keyword hamsterSpecial re_split
+syn keyword hamsterSpecial replace
+syn keyword hamsterSpecial return
+syn keyword hamsterSpecial runscript
+syn keyword hamsterSpecial scriptpriority
+syn keyword hamsterSpecial set
+syn keyword hamsterSpecial sethostsentry_byaddr
+syn keyword hamsterSpecial sethostsentry_byname
+syn keyword hamsterSpecial setxcounter
+syn keyword hamsterSpecial sgn
+syn keyword hamsterSpecial shell
+syn keyword hamsterSpecial sleep
+syn keyword hamsterSpecial stopthread
+syn keyword hamsterSpecial str
+syn keyword hamsterSpecial syserrormessage
+syn keyword hamsterSpecial testmailfilterline
+syn keyword hamsterSpecial testnewsfilterline
+syn keyword hamsterSpecial ticks
+syn keyword hamsterSpecial time
+syn keyword hamsterSpecial timegmt
+syn keyword hamsterSpecial trace
+syn keyword hamsterSpecial trim
+syn keyword hamsterSpecial true
+syn keyword hamsterSpecial uppercase
+syn keyword hamsterSpecial utf7toucs16
+syn keyword hamsterSpecial utf8toucs32
+syn keyword hamsterSpecial var
+syn keyword hamsterSpecial varset
+syn keyword hamsterSpecial warning
+syn keyword hamsterSpecial xcounter
+
+" common functions
+syn keyword hamsterFunction addlog
+syn keyword hamsterFunction decodemimeheaderstring
+syn keyword hamsterFunction decodetolocalcharset
+syn keyword hamsterFunction gettasksactive
+syn keyword hamsterFunction gettasksrun
+syn keyword hamsterFunction gettaskswait
+syn keyword hamsterFunction hamaddgroup
+syn keyword hamsterFunction hamaddlog
+syn keyword hamsterFunction hamaddpull
+syn keyword hamsterFunction hamartcount
+syn keyword hamsterFunction hamartdeletemid
+syn keyword hamsterFunction hamartdeletemidingroup
+syn keyword hamsterFunction hamartdeletenringroup
+syn keyword hamsterFunction hamartimport
+syn keyword hamsterFunction hamartlocatemid
+syn keyword hamsterFunction hamartlocatemidingroup
+syn keyword hamsterFunction hamartnomax
+syn keyword hamsterFunction hamartnomin
+syn keyword hamsterFunction hamarttext
+syn keyword hamsterFunction hamarttextexport
+syn keyword hamsterFunction hamchangepassword
+syn keyword hamsterFunction hamcheckpurge
+syn keyword hamsterFunction hamdelgroup
+syn keyword hamsterFunction hamdelpull
+syn keyword hamsterFunction hamdialogaddpull
+syn keyword hamsterFunction hamdialogeditdirs
+syn keyword hamsterFunction hamdialogmailkillfilelog
+syn keyword hamsterFunction hamdialognewskillfilelog
+syn keyword hamsterFunction hamdialogscripts
+syn keyword hamsterFunction hamenvelopefrom
+syn keyword hamsterFunction hamexepath
+syn keyword hamsterFunction hamfetchmail
+syn keyword hamsterFunction hamflush
+syn keyword hamsterFunction hamgetstatus
+syn keyword hamsterFunction hamgroupclose
+syn keyword hamsterFunction hamgroupcount
+syn keyword hamsterFunction hamgroupindex
+syn keyword hamsterFunction hamgroupname
+syn keyword hamsterFunction hamgroupnamebyhandle
+syn keyword hamsterFunction hamgroupopen
+syn keyword hamsterFunction hamgroupspath
+syn keyword hamsterFunction hamhscpath
+syn keyword hamsterFunction hamhsmpath
+syn keyword hamsterFunction hamimapserver
+syn keyword hamsterFunction hamisidle
+syn keyword hamsterFunction hamlogspath
+syn keyword hamsterFunction hammailexchange
+syn keyword hamsterFunction hammailpath
+syn keyword hamsterFunction hammailsoutpath
+syn keyword hamsterFunction hammainfqdn
+syn keyword hamsterFunction hammainwindow
+syn keyword hamsterFunction hammessage
+syn keyword hamsterFunction hammidfqdn
+syn keyword hamsterFunction hamnewmail
+syn keyword hamsterFunction hamnewserrpath
+syn keyword hamsterFunction hamnewsjobsadd
+syn keyword hamsterFunction hamnewsjobscheckactive
+syn keyword hamsterFunction hamnewsjobsclear
+syn keyword hamsterFunction hamnewsjobsdelete
+syn keyword hamsterFunction hamnewsjobsfeed
+syn keyword hamsterFunction hamnewsjobsgetcounter
+syn keyword hamsterFunction hamnewsjobsgetparam
+syn keyword hamsterFunction hamnewsjobsgetpriority
+syn keyword hamsterFunction hamnewsjobsgetserver
+syn keyword hamsterFunction hamnewsjobsgettype
+syn keyword hamsterFunction hamnewsjobspost
+syn keyword hamsterFunction hamnewsjobspostdef
+syn keyword hamsterFunction hamnewsjobspull
+syn keyword hamsterFunction hamnewsjobspulldef
+syn keyword hamsterFunction hamnewsjobssetpriority
+syn keyword hamsterFunction hamnewsjobsstart
+syn keyword hamsterFunction hamnewsoutpath
+syn keyword hamsterFunction hamnewspost
+syn keyword hamsterFunction hamnewspull
+syn keyword hamsterFunction hamnntpserver
+syn keyword hamsterFunction hampassreload
+syn keyword hamsterFunction hampath
+syn keyword hamsterFunction hampop3server
+syn keyword hamsterFunction hampostmaster
+syn keyword hamsterFunction hampurge
+syn keyword hamsterFunction hamrasdial
+syn keyword hamsterFunction hamrashangup
+syn keyword hamsterFunction hamrcpath
+syn keyword hamsterFunction hamrebuildgloballists
+syn keyword hamsterFunction hamrebuildhistory
+syn keyword hamsterFunction hamrecoserver
+syn keyword hamsterFunction hamreloadconfig
+syn keyword hamsterFunction hamreloadipaccess
+syn keyword hamsterFunction hamresetcounters
+syn keyword hamsterFunction hamrotatelog
+syn keyword hamsterFunction hamscorelist
+syn keyword hamsterFunction hamscoretest
+syn keyword hamsterFunction hamsendmail
+syn keyword hamsterFunction hamsendmailauth
+syn keyword hamsterFunction hamserverpath
+syn keyword hamsterFunction hamsetlogin
+syn keyword hamsterFunction hamshutdown
+syn keyword hamsterFunction hamsmtpserver
+syn keyword hamsterFunction hamstopalltasks
+syn keyword hamsterFunction hamthreadcount
+syn keyword hamsterFunction hamtrayicon
+syn keyword hamsterFunction hamusenetacc
+syn keyword hamsterFunction hamversion
+syn keyword hamsterFunction hamwaitidle
+syn keyword hamsterFunction raslasterror
+syn keyword hamsterFunction rfctimezone
+syn keyword hamsterFunction settasklimiter
+
+syn keyword hamsterStatement if
+syn keyword hamsterStatement else
+syn keyword hamsterStatement elseif
+syn keyword hamsterStatement endif
+syn keyword hamsterStatement do
+syn keyword hamsterStatement loop
+syn keyword hamsterStatement while
+syn keyword hamsterStatement endwhile
+syn keyword hamsterStatement repeat
+syn keyword hamsterStatement until
+syn keyword hamsterStatement for
+syn keyword hamsterStatement endfor
+syn keyword hamsterStatement sub
+syn keyword hamsterStatement endsub
+syn keyword hamsterStatement label
+
+
+" Strings and characters:
+syn region hamsterString start=+"+ end=+"+ contains=@Spell
+syn region hamsterString start=+'+ end=+'+ contains=@Spell
+
+" Numbers:
+syn match hamsterNumber "-\=\<\d*\.\=[0-9_]\>"
+
+" Comments:
+syn region hamsterHashComment start=/#/ end=/$/ contains=@Spell
+syn cluster hamsterComment contains=hamsterHashComment
+syn sync ccomment hamsterHashComment
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link hamsterHashComment Comment
+hi def link hamsterSpecial Special
+hi def link hamsterStatement Statement
+hi def link hamsterString String
+hi def link hamsterFunction Function
+
+
+let b:current_syntax = "hamster"
+
+" vim:sw=4
diff --git a/runtime/syntax/hare.vim b/runtime/syntax/hare.vim
new file mode 100644
index 0000000..07cf33f
--- /dev/null
+++ b/runtime/syntax/hare.vim
@@ -0,0 +1,133 @@
+" PRELUDE {{{1
+" Vim syntax file
+" Language: Hare
+" Maintainer: Amelia Clarke <me@rsaihe.dev>
+" Last Change: 2022-09-21
+
+if exists("b:current_syntax")
+ finish
+endif
+let b:current_syntax = "hare"
+
+" SYNTAX {{{1
+syn case match
+
+" KEYWORDS {{{2
+syn keyword hareConditional if else match switch
+syn keyword hareKeyword break continue return yield
+syn keyword hareKeyword defer
+syn keyword hareKeyword fn
+syn keyword hareKeyword let
+syn keyword hareLabel case
+syn keyword hareOperator as is
+syn keyword hareRepeat for
+syn keyword hareStorageClass const def export nullable static
+syn keyword hareStructure enum struct union
+syn keyword hareTypedef type
+
+" C ABI.
+syn keyword hareKeyword vastart vaarg vaend
+
+" BUILTINS {{{2
+syn keyword hareBuiltin abort
+syn keyword hareBuiltin alloc free
+syn keyword hareBuiltin append delete insert
+syn keyword hareBuiltin assert
+syn keyword hareBuiltin len offset
+
+" TYPES {{{2
+syn keyword hareType bool
+syn keyword hareType char str
+syn keyword hareType f32 f64
+syn keyword hareType u8 u16 u32 u64 i8 i16 i32 i64
+syn keyword hareType uint int
+syn keyword hareType rune
+syn keyword hareType uintptr
+syn keyword hareType void
+
+" C ABI.
+syn keyword hareType valist
+
+" LITERALS {{{2
+syn keyword hareBoolean true false
+syn keyword hareNull null
+
+" Number literals.
+syn match hareNumber "\v(\.@1<!|\.\.)\zs<\d+([Ee][+-]?\d+)?(z|[iu](8|16|32|64)?)?>" display
+syn match hareNumber "\v(\.@1<!|\.\.)\zs<0b[01]+(z|[iu](8|16|32|64)?)?>" display
+syn match hareNumber "\v(\.@1<!|\.\.)\zs<0o\o+(z|[iu](8|16|32|64)?)?>" display
+syn match hareNumber "\v(\.@1<!|\.\.)\zs<0x\x+(z|[iu](8|16|32|64)?)?>" display
+
+" Floating-point number literals.
+syn match hareFloat "\v<\d+\.\d+([Ee][+-]?\d+)?(f32|f64)?>" display
+syn match hareFloat "\v<\d+([Ee][+-]?\d+)?(f32|f64)>" display
+
+" String and rune literals.
+syn match hareEscape "\\[\\'"0abfnrtv]" contained display
+syn match hareEscape "\v\\(x\x{2}|u\x{4}|U\x{8})" contained display
+syn match hareFormat "\v\{\d*(\%\d*|(:[ 0+-]?\d*(\.\d+)?[Xbox]?))?}" contained display
+syn match hareFormat "\({{\|}}\)" contained display
+syn region hareRune start="'" end="'\|$" skip="\\'" contains=hareEscape display extend
+syn region hareString start=+"+ end=+"\|$+ skip=+\\"+ contains=hareEscape,hareFormat display extend
+syn region hareString start="`" end="`\|$" contains=hareFormat display
+
+" MISCELLANEOUS {{{2
+syn keyword hareTodo FIXME TODO XXX contained
+
+" Attributes.
+syn match hareAttribute "@[a-z]*"
+
+" Blocks.
+syn region hareBlock start="{" end="}" fold transparent
+
+" Comments.
+syn region hareComment start="//" end="$" contains=hareCommentDoc,hareTodo,@Spell display keepend
+syn region hareCommentDoc start="\[\[" end="]]\|\ze\_s" contained display
+
+" The size keyword can be either a builtin or a type.
+syn match hareBuiltin "\v<size>\ze(\_s*//.*\_$)*\_s*\(" contains=hareComment
+syn match hareType "\v<size>((\_s*//.*\_$)*\_s*\()@!" contains=hareComment
+
+" Trailing whitespace.
+syn match hareSpaceError "\v\s+$" display excludenl
+syn match hareSpaceError "\v\zs +\ze\t" display
+
+" Use statement.
+syn region hareUse start="\v^\s*\zsuse>" end=";" contains=hareComment display
+
+syn match hareErrorAssertion "\v(^([^/]|//@!)*\)\_s*)@<=!\=@!"
+syn match hareQuestionMark "?"
+
+" DEFAULT HIGHLIGHTING {{{1
+hi def link hareAttribute Keyword
+hi def link hareBoolean Boolean
+hi def link hareBuiltin Function
+hi def link hareComment Comment
+hi def link hareCommentDoc SpecialComment
+hi def link hareConditional Conditional
+hi def link hareEscape SpecialChar
+hi def link hareFloat Float
+hi def link hareFormat SpecialChar
+hi def link hareKeyword Keyword
+hi def link hareLabel Label
+hi def link hareNull Constant
+hi def link hareNumber Number
+hi def link hareOperator Operator
+hi def link hareQuestionMark Special
+hi def link hareRepeat Repeat
+hi def link hareRune Character
+hi def link hareStorageClass StorageClass
+hi def link hareString String
+hi def link hareStructure Structure
+hi def link hareTodo Todo
+hi def link hareType Type
+hi def link hareTypedef Typedef
+hi def link hareUse PreProc
+
+hi def link hareSpaceError Error
+autocmd InsertEnter * hi link hareSpaceError NONE
+autocmd InsertLeave * hi link hareSpaceError Error
+
+hi def hareErrorAssertion ctermfg=red cterm=bold guifg=red gui=bold
+
+" vim: tabstop=8 shiftwidth=2 expandtab
diff --git a/runtime/syntax/haskell.vim b/runtime/syntax/haskell.vim
new file mode 100644
index 0000000..1b70b93
--- /dev/null
+++ b/runtime/syntax/haskell.vim
@@ -0,0 +1,191 @@
+" Vim syntax file
+" Language: Haskell
+" Maintainer: Haskell Cafe mailinglist <haskell-cafe@haskell.org>
+" Last Change: 2020 Oct 4 by Marcin Szamotulski <profunctor@pm.me>
+" Original Author: John Williams <jrw@pobox.com>
+"
+" Thanks to Ryan Crumley for suggestions and John Meacham for
+" pointing out bugs. Also thanks to Ian Lynagh and Donald Bruce Stewart
+" for providing the inspiration for the inclusion of the handling
+" of C preprocessor directives, and for pointing out a bug in the
+" end-of-line comment handling.
+"
+" Options-assign a value to these variables to turn the option on:
+"
+" hs_highlight_delimiters - Highlight delimiter characters--users
+" with a light-colored background will
+" probably want to turn this on.
+" hs_highlight_boolean - Treat True and False as keywords.
+" hs_highlight_types - Treat names of primitive types as keywords.
+" hs_highlight_more_types - Treat names of other common types as keywords.
+" hs_highlight_debug - Highlight names of debugging functions.
+" hs_allow_hash_operator - Don't highlight seemingly incorrect C
+" preprocessor directives but assume them to be
+" operators
+"
+" 2004 Feb 19: Added C preprocessor directive handling, corrected eol comments
+" cleaned away literate haskell support (should be entirely in
+" lhaskell.vim)
+" 2004 Feb 20: Cleaned up C preprocessor directive handling, fixed single \
+" in eol comment character class
+" 2004 Feb 23: Made the leading comments somewhat clearer where it comes
+" to attribution of work.
+" 2008 Dec 15: Added comments as contained element in import statements
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" (Qualified) identifiers (no default highlighting)
+syn match ConId "\(\<[A-Z][a-zA-Z0-9_']*\.\)*\<[A-Z][a-zA-Z0-9_']*\>" contains=@NoSpell
+syn match VarId "\(\<[A-Z][a-zA-Z0-9_']*\.\)*\<[a-z][a-zA-Z0-9_']*\>" contains=@NoSpell
+
+" Infix operators--most punctuation characters and any (qualified) identifier
+" enclosed in `backquotes`. An operator starting with : is a constructor,
+" others are variables (e.g. functions).
+syn match hsVarSym "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[-!#$%&\*\+/<=>\?@\\^|~.][-!#$%&\*\+/<=>\?@\\^|~:.]*"
+syn match hsConSym "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=:[-!#$%&\*\+./<=>\?@\\^|~:]*"
+syn match hsVarSym "`\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[a-z][a-zA-Z0-9_']*`"
+syn match hsConSym "`\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[A-Z][a-zA-Z0-9_']*`"
+
+" (Non-qualified) identifiers which start with # are labels
+syn match hsLabel "#[a-z][a-zA-Z0-9_']*\>"
+
+" Reserved symbols--cannot be overloaded.
+syn match hsDelimiter "(\|)\|\[\|\]\|,\|;\|{\|}"
+
+" Strings and constants
+syn match hsSpecialChar contained "\\\([0-9]\+\|o[0-7]\+\|x[0-9a-fA-F]\+\|[\"\\'&\\abfnrtv]\|^[A-Z^_\[\\\]]\)"
+syn match hsSpecialChar contained "\\\(NUL\|SOH\|STX\|ETX\|EOT\|ENQ\|ACK\|BEL\|BS\|HT\|LF\|VT\|FF\|CR\|SO\|SI\|DLE\|DC1\|DC2\|DC3\|DC4\|NAK\|SYN\|ETB\|CAN\|EM\|SUB\|ESC\|FS\|GS\|RS\|US\|SP\|DEL\)"
+syn match hsSpecialCharError contained "\\&\|'''\+"
+syn region hsString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=hsSpecialChar,@NoSpell
+syn match hsCharacter "[^a-zA-Z0-9_']'\([^\\]\|\\[^']\+\|\\'\)'"lc=1 contains=hsSpecialChar,hsSpecialCharError
+syn match hsCharacter "^'\([^\\]\|\\[^']\+\|\\'\)'" contains=hsSpecialChar,hsSpecialCharError
+syn match hsNumber "\v<[0-9]%(_*[0-9])*>|<0[xX]_*[0-9a-fA-F]%(_*[0-9a-fA-F])*>|<0[oO]_*%(_*[0-7])*>|<0[bB]_*[01]%(_*[01])*>"
+syn match hsFloat "\v<[0-9]%(_*[0-9])*\.[0-9]%(_*[0-9])*%(_*[eE][-+]?[0-9]%(_*[0-9])*)?>|<[0-9]%(_*[0-9])*_*[eE][-+]?[0-9]%(_*[0-9])*>|<0[xX]_*[0-9a-fA-F]%(_*[0-9a-fA-F])*\.[0-9a-fA-F]%(_*[0-9a-fA-F])*%(_*[pP][-+]?[0-9]%(_*[0-9])*)?>|<0[xX]_*[0-9a-fA-F]%(_*[0-9a-fA-F])*_*[pP][-+]?[0-9]%(_*[0-9])*>"
+
+" Keyword definitions.
+syn keyword hsModule module
+syn match hsImportGroup "\<import\>.*" contains=hsImport,hsImportModuleName,hsImportMod,hsLineComment,hsBlockComment,hsImportList,@NoSpell nextgroup=hsImport
+syn keyword hsImport import contained nextgroup=hsImportModuleName
+syn match hsImportModuleName '\<[A-Z][A-Za-z.]*' contained
+syn region hsImportList start='(' skip='([^)]\{-})' end=')' keepend contained contains=ConId,VarId,hsDelimiter,hsBlockComment,hsTypedef,@NoSpell
+
+syn keyword hsImportMod contained as qualified hiding
+syn keyword hsInfix infix infixl infixr
+syn keyword hsStructure class data deriving instance default where
+syn keyword hsTypedef type
+syn keyword hsNewtypedef newtype
+syn keyword hsTypeFam family
+syn keyword hsStatement mdo do case of let in
+syn keyword hsConditional if then else
+
+" Not real keywords, but close.
+if exists("hs_highlight_boolean")
+ " Boolean constants from the standard prelude.
+ syn keyword hsBoolean True False
+endif
+if exists("hs_highlight_types")
+ " Primitive types from the standard prelude and libraries.
+ syn keyword hsType Int Integer Char Bool Float Double IO Void Addr Array String
+endif
+if exists("hs_highlight_more_types")
+ " Types from the standard prelude libraries.
+ syn keyword hsType Maybe Either Ratio Complex Ordering IOError IOResult ExitCode
+ syn keyword hsMaybe Nothing
+ syn keyword hsExitCode ExitSuccess
+ syn keyword hsOrdering GT LT EQ
+endif
+if exists("hs_highlight_debug")
+ " Debugging functions from the standard prelude.
+ syn keyword hsDebug undefined error trace
+endif
+
+
+" Comments
+syn match hsLineComment "---*\([^-!#$%&\*\+./<=>\?@\\^|~].*\)\?$" contains=@Spell
+syn region hsBlockComment start="{-" end="-}" contains=hsBlockComment,@Spell
+syn region hsPragma start="{-#" end="#-}"
+
+" C Preprocessor directives. Shamelessly ripped from c.vim and trimmed
+" First, see whether to flag directive-like lines or not
+if (!exists("hs_allow_hash_operator"))
+ syn match cError display "^\s*\(%:\|#\).*$"
+endif
+" Accept %: for # (C99)
+syn region cPreCondit start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=cComment,cCppString,cCommentError
+syn match cPreCondit display "^\s*\(%:\|#\)\s*\(else\|endif\)\>"
+syn region cCppOut start="^\s*\(%:\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=cCppOut2
+syn region cCppOut2 contained start="0" end="^\s*\(%:\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=cCppSkip
+syn region cCppSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cCppSkip
+syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match cIncluded display contained "<[^>]*>"
+syn match cInclude display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded
+syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cCppOut,cCppOut2,cCppSkip,cCommentStartError
+syn region cDefine matchgroup=cPreCondit start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$"
+syn region cPreProc matchgroup=cPreCondit start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend
+
+syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=cCommentStartError,cSpaceError contained
+syntax match cCommentError display "\*/" contained
+syntax match cCommentStartError display "/\*"me=e-1 contained
+syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial contained
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link hsModule hsStructure
+hi def link hsImport Include
+hi def link hsImportMod hsImport
+hi def link hsInfix PreProc
+hi def link hsStructure Structure
+hi def link hsStatement Statement
+hi def link hsConditional Conditional
+hi def link hsSpecialChar SpecialChar
+hi def link hsTypedef Typedef
+hi def link hsNewtypedef Typedef
+hi def link hsVarSym hsOperator
+hi def link hsConSym hsOperator
+hi def link hsOperator Operator
+hi def link hsTypeFam Structure
+if exists("hs_highlight_delimiters")
+" Some people find this highlighting distracting.
+hi def link hsDelimiter Delimiter
+endif
+hi def link hsSpecialCharError Error
+hi def link hsString String
+hi def link hsCharacter Character
+hi def link hsNumber Number
+hi def link hsFloat Float
+hi def link hsConditional Conditional
+hi def link hsLiterateComment hsComment
+hi def link hsBlockComment hsComment
+hi def link hsLineComment hsComment
+hi def link hsComment Comment
+hi def link hsPragma SpecialComment
+hi def link hsBoolean Boolean
+hi def link hsType Type
+hi def link hsMaybe hsEnumConst
+hi def link hsOrdering hsEnumConst
+hi def link hsEnumConst Constant
+hi def link hsDebug Debug
+hi def link hsLabel Special
+
+hi def link cCppString hsString
+hi def link cCommentStart hsComment
+hi def link cCommentError hsError
+hi def link cCommentStartError hsError
+hi def link cInclude Include
+hi def link cPreProc PreProc
+hi def link cDefine Macro
+hi def link cIncluded hsString
+hi def link cError Error
+hi def link cPreCondit PreCondit
+hi def link cComment Comment
+hi def link cCppSkip cCppOut
+hi def link cCppOut2 cCppOut
+hi def link cCppOut Comment
+
+let b:current_syntax = "haskell"
+
+" Options for vi: ts=8 sw=2 sts=2 nowrap noexpandtab ft=vim
diff --git a/runtime/syntax/haste.vim b/runtime/syntax/haste.vim
new file mode 100644
index 0000000..79e9f5e
--- /dev/null
+++ b/runtime/syntax/haste.vim
@@ -0,0 +1,142 @@
+" Vim syntax file
+" Language: HASTE - a language for VLSI IC programming
+" Maintainer: M. Tranchero - maurizio.tranchero?gmail.com
+" Credits: some parts have been taken from vhdl, verilog, and C syntax
+" files
+" Version: 0.9
+" Last Change: 0.9 improvement of haste numbers detection
+" Change: 0.8 error matching for wrong hierarchical connections
+" Change: 0.7 added more rules to highlight pre-processor directives
+
+" HASTE
+if exists("b:current_syntax")
+ finish
+endif
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" case is significant
+syn case match
+
+" HASTE keywords
+syn keyword hasteStatement act alias arb array begin bitvec
+syn keyword hasteStatement bitwidth boolvec broad case
+syn keyword hasteStatement cast chan const dataprobe do edge
+syn keyword hasteStatement else end export false ff fi file
+syn keyword hasteStatement fit for forever func if import
+syn keyword hasteStatement inprobe is les main narb narrow
+syn keyword hasteStatement negedge od of or outprobe pas
+syn keyword hasteStatement posedge probe proc ram ramreg
+syn keyword hasteStatement repeat rom romreg sample sel si
+syn keyword hasteStatement sign sizeof skip stop then true
+syn keyword hasteStatement type until var wait wire
+syn keyword hasteFutureExt Z ffe partial
+syn keyword hasteVerilog buf reg while
+
+" Special match for "if", "or", and "else" since "else if"
+" and other "else+if" combination shouldn't be highlighted.
+" The right keyword is "or"
+syn match hasteStatement "\<\(if\|then\|else\|fi\)\>"
+syn match hasteNone "\<else\s\+if\>$"
+syn match hasteNone "\<else\s\+if\>\s"
+syn match hasteNone "\<elseif\>\s"
+syn match hasteNone "\<elsif\>\s"
+syn match hasteStatement "\<\(case\|is\|si\)\>"
+syn match hasteStatement "\<\(repeat\|until\)\>"
+syn match hasteStatement "\<\(forever\|do\|od\)\>"
+syn match hasteStatement "\<\(for\|do\|od\)\>"
+syn match hasteStatement "\<\(do\|or\|od\)\>"
+syn match hasteStatement "\<\(sel\|les\)\>"
+syn match hasteError "\<\d\+[_a-zA-Z]\+\>"
+syn match hasteError "\(\([[:alnum:]]\+\s*(\s\+\|)\s*,\)\)\s*\([[:alnum:]]\+\s*(\)"
+
+" Predifined Haste types
+syn keyword hasteType bool
+
+" Values for standard Haste types
+" syn match hasteVector "\'[0L1HXWZU\-\?]\'"
+
+syn match hasteVector "0b\"[01_]\+\""
+syn match hasteVector "0x\"[0-9a-f_]\+\""
+syn match hasteCharacter "'.'"
+" syn region hasteString start=+"+ end=+"+
+syn match hasteIncluded display contained "<[^>]*>"
+syn match hasteIncluded display contained "<[^"]*>"
+syn region hasteInclude start="^\s*#include\>\s*" end="$" contains=hasteIncluded,hasteString
+
+" integer numbers
+syn match hasteNumber "\d\+\^[[:alnum:]]*[-+]\{0,1\}[[:alnum:]]*"
+syn match hasteNumber "-\=\<\d\+\(\^[+\-]\=\d\+\)\>"
+syn match hasteNumber "-\=\<\d\+\>"
+" syn match hasteNumber "0*2#[01_]\+#\(\^[+\-]\=\d\+\)\="
+" syn match hasteNumber "0*16#[0-9a-f_]\+#\(\^[+\-]\=\d\+\)\="
+" operators
+syn keyword hasteSeparators & , . \|
+syn keyword hasteExecution \|\| ; @
+syn keyword hasteOperator := ? ! :
+syn keyword hasteTypeConstr "[" << >> .. "]" ~
+syn keyword hasteExprOp < <= >= > = # <> + - * == ##
+syn keyword hasteMisc ( ) 0x 0b
+"
+syn match hasteSeparators "[&:\|,.]"
+syn match hasteOperator ":="
+syn match hasteOperator ":"
+syn match hasteOperator "?"
+syn match hasteOperator "!"
+syn match hasteExecution "||"
+syn match hasteExecution ";"
+syn match hasteExecution "@"
+syn match hasteType "\[\["
+syn match hasteType "\]\]"
+syn match hasteType "<<"
+syn match hasteType ">>"
+syn match hasteExprOp "<"
+syn match hasteExprOp "<="
+syn match hasteExprOp ">="
+syn match hasteExprOp ">"
+syn match hasteExprOp "<>"
+syn match hasteExprOp "="
+syn match hasteExprOp "=="
+syn match hasteExprOp "##"
+" syn match hasteExprOp "#"
+syn match hasteExprOp "*"
+syn match hasteExprOp "+"
+
+syn region hasteComment start="/\*" end="\*/" contains=@Spell
+syn region hasteComment start="{" end="}" contains=@Spell
+syn match hasteComment "//.*" contains=@Spell
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link hasteSpecial Special
+hi def link hasteStatement Statement
+hi def link hasteCharacter String
+hi def link hasteString String
+hi def link hasteVector String
+hi def link hasteBoolean String
+hi def link hasteComment Comment
+hi def link hasteNumber String
+hi def link hasteTime String
+hi def link hasteType Type
+hi def link hasteGlobal Error
+hi def link hasteError Error
+hi def link hasteAttribute Type
+"
+hi def link hasteSeparators Special
+hi def link hasteExecution Special
+hi def link hasteTypeConstr Special
+hi def link hasteOperator Type
+hi def link hasteExprOp Type
+hi def link hasteMisc String
+hi def link hasteFutureExt Error
+hi def link hasteVerilog Error
+hi def link hasteDefine Macro
+hi def link hasteInclude Include
+" hi def link hastePreProc Preproc
+" hi def link hastePreProcVar Special
+
+let b:current_syntax = "haste"
+
+" vim: ts=8
diff --git a/runtime/syntax/hastepreproc.vim b/runtime/syntax/hastepreproc.vim
new file mode 100644
index 0000000..f08bf3f
--- /dev/null
+++ b/runtime/syntax/hastepreproc.vim
@@ -0,0 +1,38 @@
+" Vim syntax file
+" Language: Haste preprocessor files
+" Maintainer: M. Tranchero - maurizio.tranchero@gmail.com
+" Credits: some parts have been taken from vhdl, verilog, and C syntax
+" files
+" Version: 0.5
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+" Read the haste syntax to start with
+runtime! syntax/haste.vim
+unlet b:current_syntax
+
+" case is significant
+syn case match
+
+" C pre-processor directives
+syn match hastepreprocVar display "\$[[:alnum:]_]*"
+syn region hastepreprocVar start="\${" end="}" contains=hastepreprocVar
+"
+"syn region hastepreproc start="#\[\s*tg[:alnum:]*" end="]#" contains=hastepreprocVar,hastepreproc,hastepreprocError,@Spell
+syn region hastepreproc start="#\[\s*\(\|tgfor\|tgif\)" end="$" contains=hastepreprocVar,hastepreproc,@Spell
+syn region hastepreproc start="}\s\(else\)\s{" end="$" contains=hastepreprocVar,hastepreproc,@Spell
+syn region hastepreproc start="^\s*#\s*\(ifndef\|ifdef\|else\|endif\)\>" end="$" contains=@hastepreprocGroup,@Spell
+syn region hastepreproc start="\s*##\s*\(define\|undef\)\>" end="$" contains=@hastepreprocGroup,@Spell
+syn match hastepreproc "}\{0,1}\s*]#"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link hastepreproc Preproc
+hi def link hastepreprocVar Special
+hi def link hastepreprocError Error
+
+let b:current_syntax = "hastepreproc"
+
+" vim: ts=8
diff --git a/runtime/syntax/hb.vim b/runtime/syntax/hb.vim
new file mode 100644
index 0000000..7bff1df
--- /dev/null
+++ b/runtime/syntax/hb.vim
@@ -0,0 +1,89 @@
+" Vim syntax file
+" Language: Hyper Builder
+" Maintainer: Alejandro Forero Cuervo
+" URL: http://bachue.com/hb/vim/syntax/hb.vim
+" Last Change: 2012 Jan 08 by Thilo Six
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Read the HTML syntax to start with
+"syn include @HTMLStuff <sfile>:p:h/htmlhb.vim
+
+"this would be nice but we are supposed not to do it
+"set mps=<:>
+
+"syn region HBhtmlString contained start=+"+ end=+"+ contains=htmlSpecialChar
+"syn region HBhtmlString contained start=+'+ end=+'+ contains=htmlSpecialChar
+
+"syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"
+
+syn match htmlSpecialChar "&[^;]*;" contained
+
+syn match HBhtmlTagSk contained "[A-Za-z]*"
+
+syn match HBhtmlTagS contained "<\s*\(hb\s*\.\s*\(sec\|min\|hour\|day\|mon\|year\|input\|html\|time\|getcookie\|streql\|url-enc\)\|wall\s*\.\s*\(show\|info\|id\|new\|rm\|count\)\|auth\s*\.\s*\(chk\|add\|find\|user\)\|math\s*\.\s*exp\)\s*\([^.A-Za-z0-9]\|$\)" contains=HBhtmlTagSk transparent
+
+syn match HBhtmlTagN contained "[A-Za-z0-9\/\-]\+"
+
+syn match HBhtmlTagB contained "<\s*[A-Za-z0-9\/\-]\+\(\s*\.\s*[A-Za-z0-9\/\-]\+\)*" contains=HBhtmlTagS,HBhtmlTagN
+
+syn region HBhtmlTag contained start=+<+ end=+>+ contains=HBhtmlTagB,HBDirectiveError
+
+syn match HBFileName ".*" contained
+
+syn match HBDirectiveKeyword ":\s*\(include\|lib\|set\|out\)\s\+" contained
+
+syn match HBDirectiveError "^:.*$" contained
+
+"syn match HBDirectiveBlockEnd "^:\s*$" contained
+
+"syn match HBDirectiveOutHead "^:\s*out\s\+\S\+.*" contained contains=HBDirectiveKeyword,HBFileName
+
+"syn match HBDirectiveSetHead "^:\s*set\s\+\S\+.*" contained contains=HBDirectiveKeyword,HBFileName
+
+syn match HBInvalidLine "^.*$"
+
+syn match HBDirectiveInclude "^:\s*include\s\+\S\+.*$" contains=HBFileName,HBDirectiveKeyword
+
+syn match HBDirectiveLib "^:\s*lib\s\+\S\+.*$" contains=HBFileName,HBDirectiveKeyword
+
+syn region HBText matchgroup=HBDirectiveKeyword start=/^:\(set\|out\)\s*\S\+.*$/ end=/^:\s*$/ contains=HBDirectiveError,htmlSpecialChar,HBhtmlTag keepend
+
+"syn match HBLine "^:.*$" contains=HBDirectiveInclude,HBDirectiveLib,HBDirectiveError,HBDirectiveSet,HBDirectiveOut
+
+syn match HBComment "^#.*$"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link HBhtmlString String
+hi def link HBhtmlTagN Function
+hi def link htmlSpecialChar String
+
+hi def link HBInvalidLine Error
+hi def link HBFoobar Comment
+hi HBFileName guibg=lightgray guifg=black
+hi def link HBDirectiveError Error
+hi def link HBDirectiveBlockEnd HBDirectiveKeyword
+hi HBDirectiveKeyword guibg=lightgray guifg=darkgreen
+hi def link HBComment Comment
+hi def link HBhtmlTagSk Statement
+
+
+syn sync match Normal grouphere NONE "^:\s*$"
+syn sync match Normal grouphere NONE "^:\s*lib\s\+[^ \t]\+$"
+syn sync match Normal grouphere NONE "^:\s*include\s\+[^ \t]\+$"
+"syn sync match Block grouphere HBDirectiveSet "^#:\s*set\s\+[^ \t]\+"
+"syn sync match Block grouphere HBDirectiveOut "^#:\s*out\s\+[^ \t]\+"
+
+let b:current_syntax = "hb"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/help.vim b/runtime/syntax/help.vim
new file mode 100644
index 0000000..a2fddbb
--- /dev/null
+++ b/runtime/syntax/help.vim
@@ -0,0 +1,229 @@
+" Vim syntax file
+" Language: Vim help file
+" Maintainer: Bram Moolenaar (Bram@vim.org)
+" Last Change: 2022 Nov 13
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match helpHeadline "^[A-Z.][-A-Z0-9 .,()_']*?\=\ze\(\s\+\*\|$\)"
+syn match helpSectionDelim "^===.*===$"
+syn match helpSectionDelim "^---.*--$"
+if has("conceal")
+ syn region helpExample matchgroup=helpIgnore start=" >$" start="^>$" end="^[^ \t]"me=e-1 end="^<" concealends
+else
+ syn region helpExample matchgroup=helpIgnore start=" >$" start="^>$" end="^[^ \t]"me=e-1 end="^<"
+endif
+if has("ebcdic")
+ syn match helpHyperTextJump "\\\@<!|[^"*|]\+|" contains=helpBar
+ syn match helpHyperTextEntry "\*[^"*|]\+\*\s"he=e-1 contains=helpStar
+ syn match helpHyperTextEntry "\*[^"*|]\+\*$" contains=helpStar
+else
+ syn match helpHyperTextJump "\\\@<!|[#-)!+-~]\+|" contains=helpBar
+ syn match helpHyperTextEntry "\*[#-)!+-~]\+\*\s"he=e-1 contains=helpStar
+ syn match helpHyperTextEntry "\*[#-)!+-~]\+\*$" contains=helpStar
+endif
+if has("conceal")
+ syn match helpBar contained "|" conceal
+ syn match helpBacktick contained "`" conceal
+ syn match helpStar contained "\*" conceal
+else
+ syn match helpBar contained "|"
+ syn match helpBacktick contained "`"
+ syn match helpStar contained "\*"
+endif
+syn match helpNormal "|.*====*|"
+syn match helpNormal "|||"
+syn match helpNormal ":|vim:|" " for :help modeline
+syn match helpVim "\<Vim version [0-9][0-9.a-z]*"
+syn match helpVim "VIM REFERENCE.*"
+syn match helpOption "'[a-z]\{2,\}'"
+syn match helpOption "'t_..'"
+syn match helpNormal "'ab'"
+syn match helpCommand "`[^` \t]\+`"hs=s+1,he=e-1 contains=helpBacktick
+syn match helpCommand "\(^\|[^a-z"[]\)\zs`[^`]\+`\ze\([^a-z\t."']\|$\)"hs=s+1,he=e-1 contains=helpBacktick
+syn match helpHeader "\s*\zs.\{-}\ze\s\=\~$" nextgroup=helpIgnore
+syn match helpGraphic ".* \ze`$" nextgroup=helpIgnore
+if has("conceal")
+ syn match helpIgnore "." contained conceal
+else
+ syn match helpIgnore "." contained
+endif
+syn keyword helpNote note Note NOTE note: Note: NOTE: Notes Notes:
+syn keyword helpWarning WARNING WARNING: Warning:
+syn keyword helpDeprecated DEPRECATED DEPRECATED: Deprecated:
+syn match helpSpecial "\<N\>"
+syn match helpSpecial "\<N\.$"me=e-1
+syn match helpSpecial "\<N\.\s"me=e-2
+syn match helpSpecial "(N\>"ms=s+1
+
+syn match helpSpecial "\[N]"
+" avoid highlighting N N in help.txt
+syn match helpSpecial "N N"he=s+1
+syn match helpSpecial "Nth"me=e-2
+syn match helpSpecial "N-1"me=e-2
+syn match helpSpecial "{[-a-zA-Z0-9'"*+/:%#=[\]<>.,]\+}"
+syn match helpSpecial "\s\[[-a-z^A-Z0-9_]\{2,}]"ms=s+1
+syn match helpSpecial "<[-a-zA-Z0-9_]\+>"
+syn match helpSpecial "<[SCM]-.>"
+syn match helpNormal "<---*>"
+syn match helpSpecial "\[range]"
+syn match helpSpecial "\[line]"
+syn match helpSpecial "\[count]"
+syn match helpSpecial "\[offset]"
+syn match helpSpecial "\[cmd]"
+syn match helpNormal "vim9\[cmd]"
+syn match helpSpecial "\[num]"
+syn match helpSpecial "\[+num]"
+syn match helpSpecial "\[-num]"
+syn match helpSpecial "\[+cmd]"
+syn match helpSpecial "\[++opt]"
+syn match helpSpecial "\[arg]"
+syn match helpSpecial "\[arguments]"
+syn match helpSpecial "\[ident]"
+syn match helpSpecial "\[addr]"
+syn match helpSpecial "\[group]"
+" Don't highlight [converted] and others that do not have a tag
+syn match helpNormal "\[\(readonly\|fifo\|socket\|converted\|crypted\)]"
+
+syn match helpSpecial "CTRL-."
+syn match helpSpecial "CTRL-SHIFT-."
+syn match helpSpecial "CTRL-Break"
+syn match helpSpecial "CTRL-PageUp"
+syn match helpSpecial "CTRL-PageDown"
+syn match helpSpecial "CTRL-Insert"
+syn match helpSpecial "CTRL-Del"
+syn match helpSpecial "CTRL-{char}"
+syn region helpNotVi start="{Vi[: ]" start="{not" start="{only" end="}" contains=helpLeadBlank,helpHyperTextJump
+syn match helpLeadBlank "^\s\+" contained
+
+" Highlight group items in their own color.
+syn match helpComment "\t[* ]Comment\t\+[a-z].*"
+syn match helpConstant "\t[* ]Constant\t\+[a-z].*"
+syn match helpString "\t[* ]String\t\+[a-z].*"
+syn match helpCharacter "\t[* ]Character\t\+[a-z].*"
+syn match helpNumber "\t[* ]Number\t\+[a-z].*"
+syn match helpBoolean "\t[* ]Boolean\t\+[a-z].*"
+syn match helpFloat "\t[* ]Float\t\+[a-z].*"
+syn match helpIdentifier "\t[* ]Identifier\t\+[a-z].*"
+syn match helpFunction "\t[* ]Function\t\+[a-z].*"
+syn match helpStatement "\t[* ]Statement\t\+[a-z].*"
+syn match helpConditional "\t[* ]Conditional\t\+[a-z].*"
+syn match helpRepeat "\t[* ]Repeat\t\+[a-z].*"
+syn match helpLabel "\t[* ]Label\t\+[a-z].*"
+syn match helpOperator "\t[* ]Operator\t\+["a-z].*"
+syn match helpKeyword "\t[* ]Keyword\t\+[a-z].*"
+syn match helpException "\t[* ]Exception\t\+[a-z].*"
+syn match helpPreProc "\t[* ]PreProc\t\+[a-z].*"
+syn match helpInclude "\t[* ]Include\t\+[a-z].*"
+syn match helpDefine "\t[* ]Define\t\+[a-z].*"
+syn match helpMacro "\t[* ]Macro\t\+[a-z].*"
+syn match helpPreCondit "\t[* ]PreCondit\t\+[a-z].*"
+syn match helpType "\t[* ]Type\t\+[a-z].*"
+syn match helpStorageClass "\t[* ]StorageClass\t\+[a-z].*"
+syn match helpStructure "\t[* ]Structure\t\+[a-z].*"
+syn match helpTypedef "\t[* ]Typedef\t\+[Aa-z].*"
+syn match helpSpecial "\t[* ]Special\t\+[a-z].*"
+syn match helpSpecialChar "\t[* ]SpecialChar\t\+[a-z].*"
+syn match helpTag "\t[* ]Tag\t\+[a-z].*"
+syn match helpDelimiter "\t[* ]Delimiter\t\+[a-z].*"
+syn match helpSpecialComment "\t[* ]SpecialComment\t\+[a-z].*"
+syn match helpDebug "\t[* ]Debug\t\+[a-z].*"
+syn match helpUnderlined "\t[* ]Underlined\t\+[a-z].*"
+syn match helpError "\t[* ]Error\t\+[a-z].*"
+syn match helpTodo "\t[* ]Todo\t\+[a-z].*"
+
+syn match helpURL `\v<(((https?|ftp|gopher)://|(mailto|file|news):)[^' <>"]+|(www|web|w3)[a-z0-9_-]*\.[a-z0-9._-]+\.[^' <>"]+)[a-zA-Z0-9/]`
+
+" Additionally load a language-specific syntax file "help_ab.vim".
+let s:i = match(expand("%"), '\.\a\ax$')
+if s:i > 0
+ exe "runtime syntax/help_" . strpart(expand("%"), s:i + 1, 2) . ".vim"
+endif
+
+" Italian
+if v:lang =~ '\<IT\>' || v:lang =~ '_IT\>' || v:lang =~? "italian"
+ syn keyword helpNote nota Nota NOTA nota: Nota: NOTA: notare Notare NOTARE notare: Notare: NOTARE:
+ syn match helpSpecial "Nma"me=e-2
+ syn match helpSpecial "Nme"me=e-2
+ syn match helpSpecial "Nmi"me=e-2
+ syn match helpSpecial "Nmo"me=e-2
+ syn match helpSpecial "\[interv.]"
+ syn region helpNotVi start="{non" start="{solo" start="{disponibile" end="}" contains=helpLeadBlank,helpHyperTextJump
+endif
+
+syn sync minlines=40
+
+
+" Define the default highlighting.
+" Only used when an item doesn't have highlighting yet
+hi def link helpIgnore Ignore
+hi def link helpHyperTextJump Identifier
+hi def link helpBar Ignore
+hi def link helpBacktick Ignore
+hi def link helpStar Ignore
+hi def link helpHyperTextEntry String
+hi def link helpHeadline Statement
+hi def link helpHeader PreProc
+hi def link helpSectionDelim PreProc
+hi def link helpVim Identifier
+hi def link helpCommand Comment
+hi def link helpExample Comment
+hi def link helpOption Type
+hi def link helpNotVi Special
+hi def link helpSpecial Special
+hi def link helpNote Todo
+hi def link helpWarning Todo
+hi def link helpDeprecated Todo
+
+hi def link helpComment Comment
+hi def link helpConstant Constant
+hi def link helpString String
+hi def link helpCharacter Character
+hi def link helpNumber Number
+hi def link helpBoolean Boolean
+hi def link helpFloat Float
+hi def link helpIdentifier Identifier
+hi def link helpFunction Function
+hi def link helpStatement Statement
+hi def link helpConditional Conditional
+hi def link helpRepeat Repeat
+hi def link helpLabel Label
+hi def link helpOperator Operator
+hi def link helpKeyword Keyword
+hi def link helpException Exception
+hi def link helpPreProc PreProc
+hi def link helpInclude Include
+hi def link helpDefine Define
+hi def link helpMacro Macro
+hi def link helpPreCondit PreCondit
+hi def link helpType Type
+hi def link helpStorageClass StorageClass
+hi def link helpStructure Structure
+hi def link helpTypedef Typedef
+hi def link helpSpecialChar SpecialChar
+hi def link helpTag Tag
+hi def link helpDelimiter Delimiter
+hi def link helpSpecialComment SpecialComment
+hi def link helpDebug Debug
+hi def link helpUnderlined Underlined
+hi def link helpError Error
+hi def link helpTodo Todo
+hi def link helpURL String
+
+if has('textprop') && expand('%:p') =~ '[/\\]doc[/\\]syntax.txt'
+ " highlight groups with their respective color
+ import 'dist/vimhelp.vim'
+ call vimhelp.HighlightGroups()
+endif
+
+let b:current_syntax = "help"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/help_ru.vim b/runtime/syntax/help_ru.vim
new file mode 100644
index 0000000..67df7e1
--- /dev/null
+++ b/runtime/syntax/help_ru.vim
@@ -0,0 +1,65 @@
+" Vim syntax file
+" Language: Russian Vim program help files *.rux
+" Maintainer: Restorer (restorers@users.sourceforge.net DEFUNCT)
+" Last Change: 04 Aprl 2017
+"
+
+" ПроверÑем Ñзык локали и уÑтановки опции 'helplang'
+" ЕÑли не руÑÑкий, то выходим из Ñкрипта.
+if (v:lang !~? 'ru' || v:lang !~? 'russian') && &helplang !~? 'ru'
+ finish
+endif
+
+" ПодÑветка руÑÑких гиперÑÑылок
+syntax match helpHyperTextJump "\\\@<!|[^"*~# |]\+|" contains=helpBar
+syntax match helpHyperTextEntry "\*[^"*|]\+\*\s"he=e-1 contains=helpStar
+syntax match helpHyperTextEntry "\*[^"*|]\+\*$" contains=helpStar
+
+" Заголовок Ñтатьи, раздела и Ñ‚. п.
+syntax match helpHeadline "^[Ð-ЯÐ]\{2}[ .]\=[-,Ð-ЯÐA-Z0-9 .()]*"
+
+" Ðаименование Ñправочника
+" новый заголовок
+" syntax match helpVim "\<СПРÐВОЧÐИК ПО РЕДÐКТОРУ VIM\>"
+"Ñтарый заголовок
+syntax match helpVim "\<СПРÐВОЧÐИК ПО .*"
+" новый заголовок
+"syntax match helpVim "\<РУКОВОДСТВО ПОЛЬЗОВÐТЕЛЯ РЕДÐКТОРОМ VIM\>"
+"syntax match helpVim "\<автор\%[ы:] .*$"
+"Ñтарый заголовок
+syntax match helpVim "\<РУКОВОДСТВО ПОЛЬЗОВÐТЕЛЯ .*"
+" ПодÑветка примечаний в текÑте, начала примеров и Ñ‚.п.
+syntax keyword helpNote Примечание. Совет. Пример. Примеры:
+syntax keyword helpWarning Внимание!
+" в Ñтарой верÑии документации
+syntax keyword helpNote Замечание:
+" в Ñтарой верÑии документации
+syntax keyword helpWarning Ð’ÐИМÐÐИЕ! Предупреждение:
+" ПодÑветка Ex-команд в документации Vim
+syntax match helpCommand "\":[A-Za-z!]\+\""hs=s+1,he=e-1
+" ПодÑветка Ñпециальных обозначений
+syntax match helpSpecial "{[-а-ÑÑ‘Ð-ЯÐ0-9'":%#=[\]<>.,]\+}"
+syntax match helpSpecial "{[-а-ÑÑ‘Ð-ЯÐ0-9'"*+/:%#=[\]<>.,]\+}"
+syntax match helpSpecial "\s\[[-а-ÑÑ‘^Ð-ЯÐ0-9_]\{2,}]"ms=s+1
+syntax match helpSpecial "<[-а-ÑÑ‘Ð-ЯÐ0-9_]\+>"
+syntax match helpSpecial "\[диапазон]"
+syntax match helpSpecial "\[Ñчётчик]"
+syntax match helpSpecial "\[чиÑло]"
+syntax match helpSpecial "\[+чиÑло]"
+syntax match helpSpecial "\[-чиÑло]"
+syntax match helpSpecial "\[кол-во]"
+syntax match helpSpecial "\[Ñтрока]"
+syntax match helpSpecial "\[Ñмещение]"
+syntax match helpSpecial "\[параметр]"
+syntax match helpSpecial "\[параметры]"
+syntax match helpSpecial "CTRL-{Ñимвол}"
+syntax region helpNotVi start="{ДоÑтупно только" start="{Ð’ редкторе Vim" start="{Ð’ редакторе Vi" end="}" contains=helpLeadBlank,helpHyperTextJump
+" ПодÑветка примечаний переводчика
+syntax region helpTrnsNote start="\[Прим. перевод." end="]" contains=helpComment
+" Определение группы подÑветки Ex-команд в документации Vim
+"hi def link helpCommand vimCommand
+" Определение группы подÑветки примечаний переводчика
+hi def link helpTrnsNote Comment
+" hi def link helpTrnsNote Comment
+"
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/hercules.vim b/runtime/syntax/hercules.vim
new file mode 100644
index 0000000..d305707
--- /dev/null
+++ b/runtime/syntax/hercules.vim
@@ -0,0 +1,119 @@
+" Vim syntax file
+" Language: Hercules
+" Maintainer: Dana Edwards <Dana_Edwards@avanticorp.com>
+" Extensions: *.vc,*.ev,*.rs
+" Last change: Nov. 9, 2001
+" Comment: Hercules physical IC design verification software ensures
+" that an IC's physical design matches its logical design and
+" satisfies manufacturing rules.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Ignore case
+syn case ignore
+
+" Hercules runset sections
+syn keyword herculesType header assign_property alias assign
+syn keyword herculesType options preprocess_options
+syn keyword herculesType explode_options technology_options
+syn keyword herculesType drc_options database_options
+syn keyword herculesType text_options lpe_options evaccess_options
+syn keyword herculesType check_point compare_group environment
+syn keyword herculesType grid_check include layer_stats load_group
+syn keyword herculesType restart run_only self_intersect set snap
+syn keyword herculesType system variable waiver
+
+" Hercules commands
+syn keyword herculesStatement attach_property boolean cell_extent
+syn keyword herculesStatement common_hierarchy connection_points
+syn keyword herculesStatement copy data_filter alternate delete
+syn keyword herculesStatement explode explode_all fill_pattern find_net
+syn keyword herculesStatement flatten
+syn keyword herculesStatement level negate polygon_features push
+syn keyword herculesStatement rectangles relocate remove_overlap reverse select
+syn keyword herculesStatement select_cell select_contains select_edge select_net size
+syn keyword herculesStatement text_polygon text_property vertex area cut
+syn keyword herculesStatement density enclose external inside_edge
+syn keyword herculesStatement internal notch vectorize center_to_center
+syn keyword herculesStatement length mask_align moscheck rescheck
+syn keyword herculesStatement analysis buildsub init_lpe_db capacitor
+syn keyword herculesStatement device gendev nmos pmos diode npn pnp
+syn keyword herculesStatement resistor set_param save_property
+syn keyword herculesStatement connect disconnect text text_boolean
+syn keyword herculesStatement replace_text create_ports label graphics
+syn keyword herculesStatement save_netlist_database lpe_stats netlist
+syn keyword herculesStatement spice graphics_property graphics_netlist
+syn keyword herculesStatement write_milkyway multi_rule_enclose
+syn keyword herculesStatement if error_property equate compare
+syn keyword herculesStatement antenna_fix c_thru dev_connect_check
+syn keyword herculesStatement dev_net_count device_count net_filter
+syn keyword herculesStatement net_path_check ratio process_text_opens
+
+" Hercules keywords
+syn keyword herculesStatement black_box_file block compare_dir equivalence
+syn keyword herculesStatement format gdsin_dir group_dir group_dir_usage
+syn keyword herculesStatement inlib layout_path outlib output_format
+syn keyword herculesStatement output_layout_path schematic schematic_format
+syn keyword herculesStatement scheme_file output_block else
+syn keyword herculesStatement and or not xor andoverlap inside outside by to
+syn keyword herculesStatement with connected connected_all texted_with texted
+syn keyword herculesStatement by_property cutting edge_touch enclosing inside
+syn keyword herculesStatement inside_hole interact touching vertex
+
+" Hercules comments
+syn region herculesComment start="/\*" skip="/\*" end="\*/" contains=herculesTodo
+syn match herculesComment "//.*" contains=herculesTodo
+
+" Preprocessor directives
+syn match herculesPreProc "^#.*"
+syn match herculesPreProc "^@.*"
+syn match herculesPreProc "macros"
+
+" Hercules COMMENT option
+syn match herculesCmdCmnt "comment.*=.*"
+
+" Spacings, Resolutions, Ranges, Ratios, etc.
+syn match herculesNumber "-\=\<[0-9]\+L\=\>\|0[xX][0-9]\+\>"
+
+" Parenthesis sanity checker
+syn region herculesZone matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" transparent contains=ALLBUT,herculesError,herculesBraceError,herculesCurlyError
+syn region herculesZone matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" transparent contains=ALLBUT,herculesError,herculesBraceError,herculesParenError
+syn region herculesZone matchgroup=Delimiter start="\[" matchgroup=Delimiter end="]" transparent contains=ALLBUT,herculesError,herculesCurlyError,herculesParenError
+syn match herculesError "[)\]}]"
+syn match herculesBraceError "[)}]" contained
+syn match herculesCurlyError "[)\]]" contained
+syn match herculesParenError "[\]}]" contained
+
+" Hercules output format
+"syn match herculesOutput "([0-9].*)"
+"syn match herculesOutput "([0-9].*\;.*)"
+syn match herculesOutput "perm\s*=.*(.*)"
+syn match herculesOutput "temp\s*=\s*"
+syn match herculesOutput "error\s*=\s*(.*)"
+
+"Modify the following as needed. The trade-off is performance versus functionality.
+syn sync lines=100
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link herculesStatement Statement
+hi def link herculesType Type
+hi def link herculesComment Comment
+hi def link herculesPreProc PreProc
+hi def link herculesTodo Todo
+hi def link herculesOutput Include
+hi def link herculesCmdCmnt Identifier
+hi def link herculesNumber Number
+hi def link herculesBraceError herculesError
+hi def link herculesCurlyError herculesError
+hi def link herculesParenError herculesError
+hi def link herculesError Error
+
+
+let b:current_syntax = "hercules"
+
+" vim: ts=8
diff --git a/runtime/syntax/hex.vim b/runtime/syntax/hex.vim
new file mode 100644
index 0000000..35edf08
--- /dev/null
+++ b/runtime/syntax/hex.vim
@@ -0,0 +1,89 @@
+" Vim syntax file
+" Language: Intel HEX
+" Maintainer: Markus Heidelberg <markus.heidelberg@web.de>
+" Previous version: Sams Ricahrd <sams@ping.at>
+" Last Change: 2015 Feb 24
+
+" Each record (line) is built as follows:
+"
+" field digits states
+"
+" +----------+
+" | start | 1 (':') hexRecStart
+" +----------+
+" | count | 2 hexDataByteCount
+" +----------+
+" | address | 4 hexNoAddress, hexDataAddress, (hexAddressFieldUnknown)
+" +----------+
+" | type | 2 hexRecType, (hexRecTypeUnknown)
+" +----------+
+" | data | 0..510 hexDataOdd, hexDataEven, hexExtendedAddress, hexStartAddress, (hexDataFieldUnknown, hexDataUnexpected)
+" +----------+
+" | checksum | 2 hexChecksum
+" +----------+
+"
+" States in parentheses in the upper format description indicate that they
+" should not appear in a valid file.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match hexRecStart "^:"
+
+syn match hexDataByteCount "^:[0-9a-fA-F]\{2}" contains=hexRecStart nextgroup=hexAddress
+
+syn match hexAddress "[0-9a-fA-F]\{4}" transparent contained nextgroup=hexRecTypeUnknown,hexRecType
+" The address field groups include the record type field in the last 2
+" characters, the proper match for highlighting follows below.
+syn match hexAddressFieldUnknown "^:[0-9a-fA-F]\{8}" contains=hexDataByteCount nextgroup=hexDataFieldUnknown,hexChecksum
+syn match hexDataAddress "^:[0-9a-fA-F]\{6}00" contains=hexDataByteCount nextgroup=hexDataOdd,hexChecksum
+syn match hexNoAddress "^:[0-9a-fA-F]\{6}01" contains=hexDataByteCount nextgroup=hexDataUnexpected,hexChecksum
+syn match hexNoAddress "^:[0-9a-fA-F]\{6}0[24]" contains=hexDataByteCount nextgroup=hexExtendedAddress
+syn match hexNoAddress "^:[0-9a-fA-F]\{6}0[35]" contains=hexDataByteCount nextgroup=hexStartAddress
+
+syn match hexRecTypeUnknown "[0-9a-fA-F]\{2}" contained
+syn match hexRecType "0[0-5]" contained
+
+syn match hexDataFieldUnknown "[0-9a-fA-F]\{2}" contained nextgroup=hexDataFieldUnknown,hexChecksum
+" alternating highlight per byte for easier reading
+syn match hexDataOdd "[0-9a-fA-F]\{2}" contained nextgroup=hexDataEven,hexChecksum
+syn match hexDataEven "[0-9a-fA-F]\{2}" contained nextgroup=hexDataOdd,hexChecksum
+" data bytes which should not exist
+syn match hexDataUnexpected "[0-9a-fA-F]\{2}" contained nextgroup=hexDataUnexpected,hexChecksum
+" Data digit pair regex usage also results in only highlighting the checksum
+" if the number of data characters is even.
+
+" special data fields
+syn match hexExtendedAddress "[0-9a-fA-F]\{4}" contained nextgroup=hexDataUnexpected,hexChecksum
+syn match hexStartAddress "[0-9a-fA-F]\{8}" contained nextgroup=hexDataUnexpected,hexChecksum
+
+syn match hexChecksum "[0-9a-fA-F]\{2}$" contained
+
+" Folding Data Records below an Extended Segment/Linear Address Record
+syn region hexExtAdrBlock start="^:[0-9a-fA-F]\{7}[24]" skip="^:[0-9a-fA-F]\{7}0" end="^:"me=s-1 fold transparent
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later
+hi def link hexRecStart hexRecType
+hi def link hexDataByteCount Constant
+hi def hexAddressFieldUnknown term=italic cterm=italic gui=italic
+hi def link hexDataAddress Comment
+hi def link hexNoAddress DiffAdd
+hi def link hexRecTypeUnknown hexRecType
+hi def link hexRecType WarningMsg
+hi def hexDataFieldUnknown term=italic cterm=italic gui=italic
+hi def hexDataOdd term=bold cterm=bold gui=bold
+hi def hexDataEven term=NONE cterm=NONE gui=NONE
+hi def link hexDataUnexpected Error
+hi def link hexExtendedAddress hexDataAddress
+hi def link hexStartAddress hexDataAddress
+hi def link hexChecksum DiffChange
+
+
+let b:current_syntax = "hex"
+
+" vim: ts=8
diff --git a/runtime/syntax/hgcommit.vim b/runtime/syntax/hgcommit.vim
new file mode 100644
index 0000000..e9f31be
--- /dev/null
+++ b/runtime/syntax/hgcommit.vim
@@ -0,0 +1,30 @@
+" Vim syntax file
+" Language: hg/sl (Mercurial / Sapling) commit file
+" Maintainer: Ken Takata <kentkt at csc dot jp>
+" Max Coplan <mchcopl@gmail.com>
+" Last Change: 2022-12-08
+" License: VIM License
+" URL: https://github.com/k-takata/hg-vim
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match hgcommitComment "^\%(SL\|HG\): .*$" contains=@NoSpell
+syn match hgcommitUser "^\%(SL\|HG\): user: \zs.*$" contains=@NoSpell contained containedin=hgcommitComment
+syn match hgcommitBranch "^\%(SL\|HG\): branch \zs.*$" contains=@NoSpell contained containedin=hgcommitComment
+syn match hgcommitAdded "^\%(SL\|HG\): \zsadded .*$" contains=@NoSpell contained containedin=hgcommitComment
+syn match hgcommitChanged "^\%(SL\|HG\): \zschanged .*$" contains=@NoSpell contained containedin=hgcommitComment
+syn match hgcommitRemoved "^\%(SL\|HG\): \zsremoved .*$" contains=@NoSpell contained containedin=hgcommitComment
+
+syn region hgcommitDiff start=/\%(^\(SL\|HG\): diff --\%(git\|cc\|combined\) \)\@=/ end=/^\%(diff --\|$\|@@\@!\|[^[:alnum:]\ +-]\S\@!\)\@=/ fold contains=@hgcommitDiff
+syn include @hgcommitDiff syntax/shared/hgcommitDiff.vim
+
+hi def link hgcommitComment Comment
+hi def link hgcommitUser String
+hi def link hgcommitBranch String
+hi def link hgcommitAdded Identifier
+hi def link hgcommitChanged Special
+hi def link hgcommitRemoved Constant
+
+let b:current_syntax = "hgcommit"
diff --git a/runtime/syntax/hitest.vim b/runtime/syntax/hitest.vim
new file mode 100644
index 0000000..9d60cec
--- /dev/null
+++ b/runtime/syntax/hitest.vim
@@ -0,0 +1,149 @@
+" Vim syntax file
+" Language: none; used to see highlighting
+" Maintainer: Ronald Schild <rs@scutum.de>
+" Last Change: 2019 Jun 06
+" Version: 5.4n.1
+" Additional Changes By: Lifepillar, Bram
+
+" To see your current highlight settings, do
+" :so $VIMRUNTIME/syntax/hitest.vim
+
+" save global options and registers
+let s:hidden = &hidden
+let s:lazyredraw = &lazyredraw
+let s:more = &more
+let s:report = &report
+let s:whichwrap = &whichwrap
+let s:shortmess = &shortmess
+let s:wrapscan = &wrapscan
+let s:register_a = @a
+let s:register_se = @/
+
+" set global options
+set hidden lazyredraw nomore report=99999 shortmess=aoOstTW wrapscan
+set whichwrap&
+
+" print current highlight settings into register a
+redir @a
+silent highlight
+redir END
+
+" Open a new window if the current one isn't empty
+if line("$") != 1 || getline(1) != ""
+ new
+endif
+
+" edit temporary file
+edit Highlight\ test
+
+" set local options
+setlocal autoindent noexpandtab formatoptions=t shiftwidth=18 noswapfile tabstop=18
+let &textwidth=&columns
+
+" insert highlight settings
+% delete
+put a
+
+" remove cleared groups
+silent! g/ cleared$/d
+
+" remove the colored xxx items
+g/xxx /s///e
+
+" remove color settings (not needed here)
+global! /links to/ substitute /\s.*$//e
+
+" Move split 'links to' lines to the same line
+% substitute /^\(\w\+\)\n\s*\(links to.*\)/\1\t\2/e
+
+" move linked groups to the end of file
+global /links to/ move $
+
+" move linked group names to the matching preferred groups
+" TODO: this fails if the group linked to isn't defined
+% substitute /^\(\w\+\)\s*\(links to\)\s*\(\w\+\)$/\3\t\2 \1/e
+silent! global /links to/ normal mz3ElD0#$p'zdd
+
+" delete empty lines
+global /^ *$/ delete
+
+" precede syntax command
+% substitute /^[^ ]*/syn keyword &\t&/
+
+" execute syntax commands
+syntax clear
+% yank a
+@a
+
+" remove syntax commands again
+% substitute /^syn keyword //
+
+" pretty formatting
+global /^/ exe "normal Wi\<CR>\t\eAA\ex"
+global /^\S/ join
+
+" find out first syntax highlighting
+let b:various = &highlight.',:Normal,:Cursor,:,'
+let b:i = 1
+while b:various =~ ':'.substitute(getline(b:i), '\s.*$', ',', '')
+ let b:i = b:i + 1
+ if b:i > line("$") | break | endif
+endwhile
+
+" insert headlines
+call append(0, "Highlighting groups for various occasions")
+call append(1, "-----------------------------------------")
+
+if b:i < line("$")-1
+ let b:synhead = "Syntax highlighting groups"
+ if exists("hitest_filetypes")
+ redir @a
+ let
+ redir END
+ let @a = substitute(@a, 'did_\(\w\+\)_syn\w*_inits\s*#1', ', \1', 'g')
+ let @a = substitute(@a, "\n\\w[^\n]*", '', 'g')
+ let @a = substitute(@a, "\n", '', 'g')
+ let @a = substitute(@a, '^,', '', 'g')
+ if @a != ""
+ let b:synhead = b:synhead." - filetype"
+ if @a =~ ','
+ let b:synhead = b:synhead."s"
+ endif
+ let b:synhead = b:synhead.":".@a
+ endif
+ endif
+ call append(b:i+1, "")
+ call append(b:i+2, b:synhead)
+ call append(b:i+3, substitute(b:synhead, '.', '-', 'g'))
+endif
+
+" remove 'hls' highlighting
+nohlsearch
+normal 0
+
+" we don't want to save this temporary file
+set nomodified
+
+" the following trick avoids the "Press RETURN ..." prompt
+0 append
+.
+
+" restore global options and registers
+let &hidden = s:hidden
+let &lazyredraw = s:lazyredraw
+let &more = s:more
+let &report = s:report
+let &shortmess = s:shortmess
+let &whichwrap = s:whichwrap
+let &wrapscan = s:wrapscan
+let @a = s:register_a
+
+" restore last search pattern
+call histdel("search", -1)
+let @/ = s:register_se
+
+" remove variables
+unlet s:hidden s:lazyredraw s:more s:report s:shortmess
+unlet s:whichwrap s:wrapscan s:register_a s:register_se
+
+" vim: ts=8
diff --git a/runtime/syntax/hlsplaylist.vim b/runtime/syntax/hlsplaylist.vim
new file mode 100644
index 0000000..245eee2
--- /dev/null
+++ b/runtime/syntax/hlsplaylist.vim
@@ -0,0 +1,120 @@
+" Vim syntax file
+" Language: HLS Playlist
+" Maintainer: Benoît Ryder <benoit@ryder.fr>
+" Latest Revision: 2022-09-23
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Comment line
+syn match hlsplaylistComment "^#\(EXT\)\@!.*$"
+" Segment URL
+syn match hlsplaylistUrl "^[^#].*$"
+
+" Unknown tags, assume an attribute list or nothing
+syn match hlsplaylistTagUnknown "^#EXT[^:]*$"
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagUnknown start="^#EXT[^:]*\ze:" end="$" keepend contains=hlsplaylistAttributeList
+
+" Basic Tags
+syn match hlsplaylistTagHeader "^#EXTM3U$"
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagHeader start="^#EXT-X-VERSION\ze:" end="$" keepend contains=hlsplaylistValueInt
+
+" Media or Multivariant Playlist Tags
+syn match hlsplaylistTagHeader "^#EXT-X-INDEPENDENT-SEGMENTS$"
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagDelimiter start="^#EXT-X-START\ze:" end="$" keepend contains=hlsplaylistAttributeList
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard start="^#EXT-X-DEFINE\ze:" end="$" keepend contains=hlsplaylistAttributeList
+
+" Media Playlist Tags
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagHeader start="^#EXT-X-TARGETDURATION\ze:" end="$" keepend contains=hlsplaylistValueFloat
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagHeader start="^#EXT-X-MEDIA-SEQUENCE\ze:" end="$" keepend contains=hlsplaylistValueInt
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagHeader start="^#EXT-X-DISCONTINUITY-SEQUENCE\ze:" end="$" keepend contains=hlsplaylistValueInt
+syn match hlsplaylistTagDelimiter "^#EXT-X-ENDLIST$"
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagHeader start="^#EXT-X-PLAYLIST-TYPE\ze:" end="$" keepend contains=hlsplaylistAttributeEnum
+syn match hlsplaylistTagStandard "^#EXT-X-I-FRAME-ONLY$"
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagHeader start="^#EXT-X-PART-INF\ze:" end="$" keepend contains=hlsplaylistAttributeList
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagHeader start="^#EXT-X-SERVER-CONTROL\ze:" end="$" keepend contains=hlsplaylistAttributeList
+
+" Media Segment Tags
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStatement start="^#EXTINF\ze:" end="$" keepend contains=hlsplaylistValueFloat,hlsplaylistExtInfDesc
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard start="^#EXT-X-BYTERANGE\ze:" end="$" keepend contains=hlsplaylistValueInt
+syn match hlsplaylistTagDelimiter "^#EXT-X-DISCONTINUITY$"
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard start="^#EXT-X-KEY\ze:" end="$" keepend contains=hlsplaylistAttributeList
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard start="^#EXT-X-MAP\ze:" end="$" keepend contains=hlsplaylistAttributeList
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard start="^#EXT-X-PROGRAM-DATE-TIME\ze:" end="$" keepend contains=hlsplaylistValueDateTime
+syn match hlsplaylistTagDelimiter "^#EXT-X-GAP$"
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard start="^#EXT-X-BITRATE\ze:" end="$" keepend contains=hlsplaylistValueFloat
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStatement start="^#EXT-X-PART\ze:" end="$" keepend contains=hlsplaylistAttributeList
+
+" Media Metadata Tags
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard start="^#EXT-X-DATERANGE\ze:" end="$" keepend contains=hlsplaylistAttributeList
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard start="^#EXT-X-SKIP\ze:" end="$" keepend contains=hlsplaylistAttributeList
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStatement start="^#EXT-X-PRELOAD-HINT\ze:" end="$" keepend contains=hlsplaylistAttributeList
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStatement start="^#EXT-X-RENDITION-REPORT\ze:" end="$" keepend contains=hlsplaylistAttributeList
+
+" Multivariant Playlist Tags
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard start="^#EXT-X-MEDIA\ze:" end="$" keepend contains=hlsplaylistAttributeList
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStatement start="^#EXT-X-STREAM-INF\ze:" end="$" keepend contains=hlsplaylistAttributeList
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStatement start="^#EXT-X-I-FRAME-STREAM-INF\ze:" end="$" keepend contains=hlsplaylistAttributeList
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard start="^#EXT-X-SESSION-DATA\ze:" end="$" keepend contains=hlsplaylistAttributeList
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard start="^#EXT-X-SESSION-KEY\ze:" end="$" keepend contains=hlsplaylistAttributeList
+syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard start="^#EXT-X-CONTENT-STEERING\ze:" end="$" keepend contains=hlsplaylistAttributeList
+
+" Attributes
+syn region hlsplaylistAttributeList start=":" end="$" keepend contained
+ \ contains=hlsplaylistAttributeName,hlsplaylistAttributeInt,hlsplaylistAttributeHex,hlsplaylistAttributeFloat,hlsplaylistAttributeString,hlsplaylistAttributeEnum,hlsplaylistAttributeResolution,hlsplaylistAttributeUri
+" Common attributes
+syn match hlsplaylistAttributeName "[A-Za-z-]\+\ze=" contained
+syn match hlsplaylistAttributeEnum "=\zs[A-Za-z][A-Za-z0-9-_]*" contained
+syn match hlsplaylistAttributeString +=\zs"[^"]*"+ contained
+syn match hlsplaylistAttributeInt "=\zs\d\+" contained
+syn match hlsplaylistAttributeFloat "=\zs-\?\d*\.\d*" contained
+syn match hlsplaylistAttributeHex "=\zs0[xX]\d*" contained
+syn match hlsplaylistAttributeResolution "=\zs\d\+x\d\+" contained
+" Allow different highligting for URI attributes
+syn region hlsplaylistAttributeUri matchgroup=hlsplaylistAttributeName start="\zsURI\ze" end="\(,\|$\)" contained contains=hlsplaylistUriQuotes
+syn region hlsplaylistUriQuotes matchgroup=hlsplaylistAttributeString start=+"+ end=+"+ keepend contained contains=hlsplaylistUriValue
+syn match hlsplaylistUriValue /[^" ]\+/ contained
+" Individual values
+syn match hlsplaylistValueInt "[0-9]\+" contained
+syn match hlsplaylistValueFloat "\(\d\+\|\d*\.\d*\)" contained
+syn match hlsplaylistExtInfDesc ",\zs.*$" contained
+syn match hlsplaylistValueDateTime "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d\(\.\d*\)\?\(Z\|\d\d:\?\d\d\)$" contained
+
+
+" Define default highlighting
+
+hi def link hlsplaylistComment Comment
+hi def link hlsplaylistUrl NONE
+
+hi def link hlsplaylistTagHeader Special
+hi def link hlsplaylistTagStandard Define
+hi def link hlsplaylistTagDelimiter Delimiter
+hi def link hlsplaylistTagStatement Statement
+hi def link hlsplaylistTagUnknown Special
+
+hi def link hlsplaylistUriQuotes String
+hi def link hlsplaylistUriValue Underlined
+hi def link hlsplaylistAttributeQuotes String
+hi def link hlsplaylistAttributeName Identifier
+hi def link hlsplaylistAttributeInt Number
+hi def link hlsplaylistAttributeHex Number
+hi def link hlsplaylistAttributeFloat Float
+hi def link hlsplaylistAttributeString String
+hi def link hlsplaylistAttributeEnum Constant
+hi def link hlsplaylistAttributeResolution Constant
+hi def link hlsplaylistValueInt Number
+hi def link hlsplaylistValueFloat Float
+hi def link hlsplaylistExtInfDesc String
+hi def link hlsplaylistValueDateTime Constant
+
+
+let b:current_syntax = "hlsplaylist"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: sts=2 sw=2 et
diff --git a/runtime/syntax/hog.vim b/runtime/syntax/hog.vim
new file mode 100644
index 0000000..24aa203
--- /dev/null
+++ b/runtime/syntax/hog.vim
@@ -0,0 +1,208 @@
+" Vim syntax file
+" Language: hog (Snort.conf + .rules)
+" Maintainer: Victor Roemer, <vroemer@badsec.org>.
+" Last Change: 2019 Sep 22
+" 2012 Oct 24 -> Originalish release
+" 2019 Sep 22 -> included PR 3069
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword-=:
+setlocal iskeyword+=-
+syn case ignore
+
+" Hog ruletype crap
+syn keyword HogRuleType ruletype nextgroup=HogRuleTypeName skipwhite
+syn match HogRuleTypeName "[[:alnum:]_]\+" contained nextgroup=HogRuleTypeBody skipwhite
+syn region HogRuleTypeBody start="{" end="}" contained contains=HogRuleTypeType,HogOutput fold
+syn keyword HogRuleTypeType type contained
+
+" Hog Configurables
+syn keyword HogPreproc preprocessor nextgroup=HogConfigName skipwhite
+syn keyword HogConfig config nextgroup=HogConfigName skipwhite
+syn keyword HogOutput output nextgroup=HogConfigName skipwhite
+syn match HogConfigName "[[:alnum:]_-]\+" contained nextgroup=HogConfigOpts skipwhite
+syn region HogConfigOpts start=":" skip="\\.\{-}$\|^\s*#.\{-}$\|^\s*$" end="$" fold keepend contained contains=HogSpecial,HogNumber,HogIPAddr,HogVar,HogComment
+
+" Event filter's and threshold's
+syn region HogEvFilter start="event_filter\|threshold" skip="\\.\{-}$\|^\s*#.\{-}$\|^\s*$" end="$" fold transparent keepend contains=HogEvFilterKeyword,HogEvFilterOptions,HogComment
+syn keyword HogEvFilterKeyword skipwhite event_filter threshold
+syn keyword HogEvFilterOptions skipwhite type nextgroup=HogEvFilterTypes
+syn keyword HogEvFilterTypes skipwhite limit threshold both contained
+syn keyword HogEvFilterOptions skipwhite track nextgroup=HogEvFilterTrack
+syn keyword HogEvFilterTrack skipwhite by_src by_dst contained
+syn keyword HogEvFilterOptions skipwhite gen_id sig_id count seconds nextgroup=HogNumber
+
+" Suppressions
+syn region HogEvFilter start="suppress" skip="\\.\{-}$\|^\s*#.\{-}$\|^\s*$" end="$" fold transparent keepend contains=HogSuppressKeyword,HogComment
+syn keyword HogSuppressKeyword skipwhite suppress
+syn keyword HogSuppressOptions skipwhite gen_id sig_id nextgroup=HogNumber
+syn keyword HogSuppressOptions skipwhite track nextgroup=HogEvFilterTrack
+syn keyword HogSuppressOptions skipwhite ip nextgroup=HogIPAddr
+
+" Attribute table
+syn keyword HogAttribute attribute_table nextgroup=HogAttributeFile
+syn match HogAttributeFile contained ".*$" contains=HogVar,HogAttributeType,HogComment
+syn keyword HogAttributeType filename
+
+" Hog includes
+syn keyword HogInclude include nextgroup=HogIncludeFile skipwhite
+syn match HogIncludeFile ".*$" contained contains=HogVar,HogComment
+
+" Hog dynamic libraries
+syn keyword HogDylib dynamicpreprocessor dynamicengine dynamicdetection nextgroup=HogDylibFile skipwhite
+syn match HogDylibFile "\s.*$" contained contains=HogVar,HogDylibType,HogComment
+syn keyword HogDylibType directory file contained
+
+" Variable dereferenced with '$'
+syn match HogVar "\$[[:alnum:]_]\+"
+
+", Variables declared with 'var'
+syn keyword HogVarType var nextgroup=HogVarSet skipwhite
+syn match HogVarSet "[[:alnum:]_]\+" display contained nextgroup=HogVarValue skipwhite
+syn match HogVarValue ".*$" contained contains=HogString,HogNumber,HogVar,HogComment
+
+" Variables declared with 'ipvar'
+syn keyword HogIPVarType ipvar nextgroup=HogIPVarSet skipwhite
+syn match HogIPVarSet "[[:alnum:]_]\+" display contained nextgroup=HogIPVarList,HogSpecial skipwhite
+syn region HogIPVarList start="\[" end="]" contains=HogIPVarList,HogIPAddr,HogVar,HogOpNot
+
+" Variables declared with 'portvar'
+syn keyword HogPortVarType portvar nextgroup=HogPortVarSet skipwhite
+syn match HogPortVarSet "[[:alnum:]_]\+" display contained nextgroup=HogPortVarList,HogPort,HogOpRange,HogOpNot,HogSpecial skipwhite
+syn region HogPortVarList start="\[" end="]" contains=HogPortVarList,HogVar,HogOpNot,HogPort,HogOpRange,HogOpNot
+syn match HogPort "\<\%(\d\+\|any\)\>" display contains=HogOpRange nextgroup=HogOpRange
+
+" Generic stuff
+syn match HogIPAddr contained "\<\%(\d\{1,3}\(\.\d\{1,3}\)\{3}\|any\)\>" nextgroup=HogIPCidr
+syn match HogIPAddr contained "\<\d\{1,3}\(\.\d\{1,3}\)\{3}\>" nextgroup=HogIPCidr
+syn match HogIPCidr contained "\/\([0-2][0-9]\=\|3[0-2]\=\)"
+syn region HogHexEsc contained start='|' end='|' oneline
+syn region HogString contained start='"' end='"' extend oneline contains=HogHexEsc
+syn match HogNumber contained display "\<\d\+\>"
+syn match HogNumber contained display "\<\d\+\>"
+syn match HogNumber contained display "0x\x\+\>"
+syn keyword HogSpecial contained true false yes no default all any
+syn keyword HogSpecialAny contained any
+syn match HogOpNot "!" contained
+syn match HogOpRange ":" contained
+
+" Rules
+syn keyword HogRuleAction activate alert drop block dynamic log pass reject sdrop sblock skipwhite nextgroup=HogRuleProto,HogRuleBlock
+syn keyword HogRuleProto ip tcp tcp-pkt tcp-stream udp icmp http ftp tls smb dns dcerpc ssh smtp imap msn modbus dnp3 enip nfs ikev2 ntp skipwhite contained nextgroup=HogRuleSrcIP
+syn match HogRuleSrcIP "\S\+" transparent skipwhite contained contains=HogIPVarList,HogIPAddr,HogVar,HogOpNot nextgroup=HogRuleSrcPort
+syn match HogRuleSrcPort "\S\+" transparent skipwhite contained contains=HogPortVarList,HogVar,HogPort,HogOpRange,HogOpNot nextgroup=HogRuleDir
+syn match HogRuleDir "->\|<>" skipwhite contained nextgroup=HogRuleDstIP
+syn match HogRuleDstIP "\S\+" transparent skipwhite contained contains=HogIPVarList,HogIPAddr,HogVar,HogOpNot nextgroup=HogRuleDstPort
+syn match HogRuleDstPort "\S\+" transparent skipwhite contained contains=HogPortVarList,HogVar,HogPort,HogOpRange,HogOpNot nextgroup=HogRuleBlock
+syn region HogRuleBlock start="(" end=")" transparent skipwhite contained contains=HogRuleOption,HogComment fold
+",HogString,HogComment,HogVar,HogOptNot
+"syn region HogRuleOption start="\<gid\|sid\|rev\|depth\|offset\|distance\|within\>" end="\ze;" skipwhite contained contains=HogNumber
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP msg gid sid rev classtype priority metadata target content nocase rawbytes
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP depth startswith offset distance within http_client_body http_cookie http_raw_cookie http_header
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP http_raw_header http_request_line http_method http_uri http_raw_uri http_protocol http_response_line http_stat_code http_stat_msg
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP http_user_agent http_accept http_accept_enc http_accept_lang http_connection http_content_type http_content_len
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP http_referer http_start http_header_names http_server_body http_host http_raw_host
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP filename fileext filemagic filestore filemd5 filesha1 filesha256 filesize
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP dns_query tls_cert_subject tls_cert_issuer tls_cert_serial tls_cert_fingerprint
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP tls_sni tls_cert_notbefore tls_cert_notafter tls_cert_expired tls_cert_valid
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP tls.version tls.subject tls.issuerdn tls.fingerprint tls.store ja3_hash ja3_string
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP modbus dnp3_func dnp3_ind dnp3_obj dnp3_data enip_command cip_service
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP app-layer-protocol app-layer-event xbits iprep lua luajit
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP fast_pattern prefilter uricontent urilen isdataat pcre pkt_data file_data base64_decode base64_data
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP byte_test byte_jump byte_extract ftpdata_command ftpbounce asn1 cvs dce_iface dce_opnum dce_stub_data
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP sip_method sip_stat_code sip_header sip_body gtp_type gtp_info gtp_version ssl_version
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP ssl_state fragoffset ttl tos id ipopts geoip fragbits dsize flags flow flowbits flowint seq ack window
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP itype icode icmp_id icmp_seq rpc ip_proto sameip stream_reassemble stream_size
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP logto session resp react tag activates activated_by count replace detection_filter
+syn keyword HogRuleOption skipwhite contained nextgroup=HogRuleSROP threshold reference sd_pattern file_type file_group
+
+syn region HogRuleSROP start=':' end=";" transparent keepend contained contains=HogRuleChars,HogString,HogNumber
+syn match HogRuleChars "\%(\k\|\.\|?\|=\|/\|%\|&\)\+" contained
+syn match HogURLChars "\%(\.\|?\|=\)\+" contained
+
+" Hog File Type Rules
+syn match HogFileType /^\s*file.*$/ transparent contains=HogFileTypeOpt,HogFileFROP
+syn keyword HogFileTypeOpt skipwhite contained nextgroup=HogRuleFROP file type ver category id rev content offset msg group
+syn region HogFileFROP start=':' end=";" transparent keepend contained contains=NotASemicoln
+syn match NotASemiColn ".*$" contained
+
+
+" Comments
+syn keyword HogTodo XXX TODO NOTE contained
+syn match HogTodo "Step\s\+#\=\d\+" contained
+syn region HogComment start="#" end="$" contains=HogTodo,@Spell
+
+syn case match
+
+if !exists("hog_minlines")
+ let hog_minlines = 100
+endif
+exec "syn sync minlines=" . hog_minlines
+
+hi link HogRuleType Statement
+hi link HogRuleTypeName Type
+hi link HogRuleTypeType Keyword
+
+hi link HogPreproc Statement
+hi link HogConfig Statement
+hi link HogOutput Statement
+hi link HogConfigName Type
+
+"hi link HogEvFilter
+hi link HogEvFilterKeyword Statement
+hi link HogSuppressKeyword Statement
+hi link HogEvFilterTypes Constant
+hi link HogEvFilterTrack Constant
+
+hi link HogAttribute Statement
+hi link HogAttributeFile String
+hi link HogAttributeType Statement
+
+hi link HogInclude Statement
+hi link HogIncludeFile String
+
+hi link HogDylib Statement
+hi link HogDylibType Statement
+hi link HogDylibFile String
+
+" Variables
+" var
+hi link HogVar Identifier
+hi link HogVarType Keyword
+hi link HogVarSet Identifier
+hi link HogVarValue String
+" ipvar
+hi link HogIPVarType Keyword
+hi link HogIPVarSet Identifier
+" portvar
+hi link HogPortVarType Keyword
+hi link HogPortVarSet Identifier
+hi link HogPort Constant
+
+hi link HogTodo Todo
+hi link HogComment Comment
+hi link HogString String
+hi link HogHexEsc PreProc
+hi link HogNumber Number
+hi link HogSpecial Constant
+hi link HogSpecialAny Constant
+hi link HogIPAddr Constant
+hi link HogIPCidr Constant
+hi link HogOpNot Operator
+hi link HogOpRange Operator
+
+hi link HogRuleAction Statement
+hi link HogRuleProto Identifier
+hi link HogRuleDir Operator
+hi link HogRuleOption Keyword
+hi link HogRuleChars String
+
+hi link HogFileType HogRuleAction
+hi link HogFileTypeOpt HogRuleOption
+hi link NotASemiColn HogRuleChars
+
+let b:current_syntax = "hog"
diff --git a/runtime/syntax/hollywood.vim b/runtime/syntax/hollywood.vim
new file mode 100644
index 0000000..fcd03a6
--- /dev/null
+++ b/runtime/syntax/hollywood.vim
@@ -0,0 +1,180 @@
+" Vim syntax file
+" Language: Hollywood 9.1
+" Maintainer: Ola Söder <rolfkopman@gmail.com>
+" First Author: Tom Crecelius <holly@net-eclipse.net>
+" Last Change: 2022 Nov 09
+" Highlighting Issues:
+" Depending on your colour schema, Strings or Comments might be highlighted in
+" a way, you don't like. If so, try one of the following settings after
+" opening a hollywood script:
+"
+" :hi link hwString MoreMsg
+" :hi link hwString NonText
+" :hi link hwString String
+"
+" and for comments:
+"
+" :hi link hwComment MoreMsg
+" :hi link hwComment NonText
+" :hi link hwComment Comment
+"
+" Remember the setting you like and change the corresponding definition at
+" the bottom of this file.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+if !exists("hw_version")
+ let hw_version = 9
+ let hw_subversion = 0
+elseif !exists("hw_subversion")
+ let hw_subversion = 0
+endif
+
+syn case match
+
+" syncing method
+syn sync minlines=100
+
+" catch errors caused by wrong parenthesis and wrong curly brackets or
+" keywords placed outside their respective blocks
+syn region hwParen transparent start='(' end=')' contains=ALLBUT,hwParenError,hwTodo,hwSpecial,hwIfEndIf,hwElseIf,hwElse,hwBlock,hwLoopBlock,hwIn,hwStatement,hwStep,hwFallThrough,hwLineStatement
+syn region hwTableBlock transparent matchgroup=hwTable start="{" end="}" contains=ALLBUT,hwBraceError,hwTodo,hwSpecial,hwIfEndIf,hwElseIf,hwElse,hwBlock,hwLoopBlock,hwIn,hwStatement,hwStep,hwFallThrough,hwLineStatement
+
+syn match hwParenError ")"
+syn match hwBraceError "}"
+syn match hwError "\<\%(If\|End\|Else\|ElseIf\|Then\|Until\|In\|EndIf\|EndSwitch\|FallThrough\|Case\|Default\|Wend\|Until\|Forever\)\>"
+
+" Function ... End
+syn region hwFunctionBlock transparent matchgroup=hwFunction start="\<Function\>" end="\<EndFunction\>" contains=ALLBUT,hwTodo,hwSpecial,hwElseIf,hwElse,hwIn,hwStep,hwFallThrough,hwLineStatement
+
+" If .. Then
+syn region hwIfThen transparent matchgroup=hwCond start="\<If\>" end="\<Then\>\{-}"me=e-4 skipwhite skipempty
+" Then ... Else
+syn region hwThenElse transparent matchgroup=hwCond start="\<Then\>" end="$" end="\<Else\>" contains=ALLBUT,hwTodo,hwSpecial,hwIn,hwStep,hwLineStatement,hwIfEndIf,hwElseEndif,hwIfThen,hwThenElse skipwhite skipempty
+
+" If .. EndIf
+syn region hwIfEndIf transparent matchgroup=hwCond start="\<If\>\(\(.\{-}Then.\{-}\)\@!\)" end="\<EndIf\>" contains=ALLBUT,hwTodo,hwSpecial,hwIn,hwStep,hwLineStatement skipwhite skipempty
+" Else ... EndIf
+syn region hwElseEndIf contained transparent matchgroup=hwCond start="\<Else\>" end="\<EndIf\>"me=e-5 contains=ALLBUT,hwTodo,hwSpecial,hwElseIf,hwElseEndIf,hwIn,hwStep,hwFallThrough,hwLineStatement
+
+" Then
+"syn keyword hwLineStatement Then contained
+" Forever
+syn keyword hwLineStatement Forever contained
+" Do
+syn keyword hwLineStatement Do contained
+" ElseIf
+syn keyword hwElseIf ElseIf contained
+
+
+" Switch ... EndSwitch
+syn region hwSwitchEnd transparent matchgroup=hwCond start="\<Switch\>" end="\<EndSwitch\>" contains=hwCase,hwDefCase skipwhite skipempty
+
+" Case ... :
+syn region hwCase transparent matchgroup=hwCond start="\<Case\>" end="\<EndSwitch\>"me=e-9 end="\<Default\>:"me=e-8 end="\<Case\>"me=e-4 contains=ALLBUT,hwTodo,hwSpecial,hwElseIf,hwElseEndIf,hwLineStatement,hwIn,hwStep skipwhite skipempty
+" Default:
+syn region hwDefCase transparent matchgroup=hwCond start="\<Default\>" end="\<EndSwitch\>"me=e-9 contains=ALLBUT,hwTodo,hwSpecial,hwElseIf,hwElseEndIf,hwIn,hwStep,hwCase,hwDefCase,hwFallThrough,hwLineStatement skipwhite skipempty
+
+syn keyword hwFallThrough contained FallThrough
+
+" Block ... EndBlock
+syn region hwBlock transparent matchgroup=hwStatement start="\<Block\>" end="\<EndBlock\>" contains=ALLBUT,hwTodo,hwSpecial,hwElseIf,hwElse,hwIn,hwStep,hwLineStatement
+
+" Repeat ... Until/Forever
+syn region hwLoopBlock transparent matchgroup=hwRepeat start="\<Repeat\>" end="\<Forever\>" end="\<Until\>" contains=ALLBUT,hwTodo,hwSpecial,hwElseIf,hwElse,hwIn,hwStep,hwLineStatement
+
+" While ... Wend/Do
+syn region hwLoopBlock transparent matchgroup=hwRepeat start="\<While\>" end="\<Do\>" end="\<Wend\>" contains=ALLBUT,hwTodo,hwSpecial,hwElseIf,hwElse,hwIn,hwStep,hwLineStatement skipwhite skipempty
+
+" For .. To
+syn region hwForTo transparent matchgroup=hwRepeat start="\<For\>" end="\<To\>"me=e-2 skipwhite skipempty nextgroup=hwToNext
+
+" To .. Next
+syn region hwToNext transparent matchgroup=hwRepeat start="\<To\>" end="\<Next\>" contains=ALLBUT,hwTodo,hwSpecial,hwElseIf,hwElse,hwIn,hwLineStatement skipwhite skipempty
+
+syn keyword hwStep contained Step
+syn keyword hwIn contained In
+
+" other keywords
+syn keyword hwStatement Return Break Continue
+syn keyword hwStatement Goto Gosub Dim DimStr Const Local Global
+syn match hwLabel "::\I\i*::"
+syn match hwOperator "\%(&\|\*\|+\|-\|\.\||\|//\|/\|:\|<\|=\|>\|<>\|<=\|=>\|\^\|\~\|\\\|\<And\>\|\<Not\>\|\<Or\>\)"
+syn keyword hwConstant Nil
+syn keyword hwConstant True False
+" predefined preprocessing commands
+syn match hwPreProcessor "@\<\%(ANIM\|APPAUTHOR\|APPCOPYRIGHT\|APPDESCRIPTION\|APPICON\|APPIDENTIFIER\|APPTITLE\|APPVERSION\|BACKFILL\|BGPIC\|BRUSH\|CATALOG\|DIRECTORY\|DISPLAY\|ELSE\|ELSEIF\|ENDIF\|ERROR\|FILE\|FONT\|ICON\|IF\|INCLUDE\|LINKER\|MENU\|MUSIC\|OPTIONS\|PALETTE\|REQUIRE\|SAMPLE\|SCREEN\|SPRITE\|VERSION\|VIDEO\|WARNING\)\>"ms=s+1
+" predefined constants
+syn match hwConstant "#\<\%(ACTIVEWINDOW\|ADF_ANIM\|ADF_FX\|ADF_MOVEOBJECT\|ALL\|ALPHABETICAL\|ALPHACHANNEL\|ALPHANUMERICAL\|AMIGAICON_DEVICE\|AMIGAICON_DISK\|AMIGAICON_DRAWER\|AMIGAICON_GARBAGE\|AMIGAICON_HIDE\|AMIGAICON_KICKSTART\|AMIGAICON_NONE\|AMIGAICON_PROJECT\|AMIGAICON_SETPOSITION\|AMIGAICON_SETTITLE\|AMIGAICON_SHOW\|AMIGAICON_TOOL\|ANIM\|ANIMSTREAM\|ANIMTYPE_RASTER\|ANIMTYPE_VECTOR\|ANMFMT_GIF\|ANMFMT_IFF\|ANMFMT_MJPEG\|ANTIALIAS\|AQUA\|ARC\|ASYNCDRAW\|ASYNCOBJ\|ATTRACTIVE\|ATTRADAPTER\|ATTRALPHAINTENSITY\|ATTRBGPIC\|ATTRBITRATE\|ATTRBORDERBOTTOM\|ATTRBORDERLEFT\|ATTRBORDERLESS\|ATTRBORDERPEN\|ATTRBORDERRIGHT\|ATTRBORDERTOP\|ATTRBULLETPEN\|ATTRCANSEEK\|ATTRCLIPREGION\|ATTRCOUNT\|ATTRCURFRAME\|ATTRCURSORX\|ATTRCURSORY\|ATTRCURSUBSONG\|ATTRCYCLE\|ATTRDENSITY\|ATTRDEPTH\|ATTRDISPLAY\|ATTRDITHERMODE\|ATTRDOUBLEBUFFER\|ATTRDRIVER\|ATTRDURATION\|ATTRELAPSE\|ATTRENCODING\|ATTRFIXED\|ATTRFONTAA\|ATTRFONTASCENDER\|ATTRFONTCHARMAP\|ATTRFONTDEPTH\|ATTRFONTDESCENDER\|ATTRFONTENGINE\|ATTRFONTNAME\|ATTRFONTPALETTE\|ATTRFONTSCALABLE\|ATTRFONTSIZE\|ATTRFONTTRANSPARENTPEN\|ATTRFONTTYPE\|ATTRFORMAT\|ATTRFRAMEDELAY\|ATTRFUNCTION\|ATTRGROUP\|ATTRHARDWARE\|ATTRHASALPHA\|ATTRHASMASK\|ATTRHEIGHT\|ATTRHOSTDEPTH\|ATTRHOSTHEIGHT\|ATTRHOSTMONITORS\|ATTRHOSTSCALE\|ATTRHOSTSCALEX\|ATTRHOSTSCALEY\|ATTRHOSTTASKBAR\|ATTRHOSTTITLEBARHEIGHT\|ATTRHOSTWIDTH\|ATTRID\|ATTRIMMERSIVEMODE\|ATTRINTERPOLATE\|ATTRKEYBOARD\|ATTRLAYERID\|ATTRLAYERS\|ATTRLAYERSON\|ATTRLOADER\|ATTRMARGINLEFT\|ATTRMARGINRIGHT\|ATTRMASKMODE\|ATTRMAXHEIGHT\|ATTRMAXIMIZED\|ATTRMAXWIDTH\|ATTRMENU\|ATTRMODE\|ATTRMONITOR\|ATTRNOCLOSE\|ATTRNOHIDE\|ATTRNOMODESWITCH\|ATTRNUMENTRIES\|ATTRNUMFRAMES\|ATTRNUMSUBSONGS\|ATTRONSCREEN\|ATTRORIENTATION\|ATTROUTPUTDEVICE\|ATTRPALETTE\|ATTRPALETTEMODE\|ATTRPAUSED\|ATTRPEN\|ATTRPITCH\|ATTRPLAYING\|ATTRPOINTER\|ATTRPOSITION\|ATTRPUBSCREEN\|ATTRRAWHEIGHT\|ATTRRAWWIDTH\|ATTRRAWXPOS\|ATTRRAWYPOS\|ATTRSCALEHEIGHT\|ATTRSCALEMODE\|ATTRSCALESWITCH\|ATTRSCALEWIDTH\|ATTRSHADOWPEN\|ATTRSIZE\|ATTRSIZEABLE\|ATTRSPRITES\|ATTRSTANDARD\|ATTRSTATE\|ATTRSYSTEMBARS\|ATTRTEXT\|ATTRTITLE\|ATTRTRANSPARENTCOLOR\|ATTRTRANSPARENTPEN\|ATTRTYPE\|ATTRUSERDATA\|ATTRVISIBLE\|ATTRWIDTH\|ATTRXDPI\|ATTRXPOS\|ATTRXSERVER\|ATTRYDPI\|ATTRYPOS\|ATTRZPOS\|BARS\|BAUD_115200\|BAUD_1200\|BAUD_19200\|BAUD_2400\|BAUD_300\|BAUD_38400\|BAUD_460800\|BAUD_4800\|BAUD_57600\|BAUD_600\|BAUD_9600\|BEEPERROR\|BEEPINFORMATION\|BEEPQUESTION\|BEEPSYSTEM\|BEEPWARNING\|BGPIC\|BGPICPART\|BIGENDIAN\|BIGSINE\|BITMAP_DEFAULT\|BLACK\|BLEND\|BLUE\|BOLD\|BOOLEAN\|BORDER\|BOTTOM\|BOTTOMOUT\|BOUNCE\|BOX\|BRUSH\|BRUSH_VS_BOX\|BRUSHPART\|BULLET_ARROW\|BULLET_BOX\|BULLET_CHECKMARK\|BULLET_CIRCLE\|BULLET_CROSS\|BULLET_DASH\|BULLET_DIAMOND\|BULLET_LALPHA\|BULLET_LALPHADOUBLE\|BULLET_LALPHASINGLE\|BULLET_LROMAN\|BULLET_LROMANDOUBLE\|BULLET_LROMANSINGLE\|BULLET_NONE\|BULLET_NUMERIC\|BULLET_NUMERICDOUBLE\|BULLET_NUMERICSINGLE\|BULLET_UALPHA\|BULLET_UALPHADOUBLE\|BULLET_UALPHASINGLE\|BULLET_UROMAN\|BULLET_UROMANDOUBLE\|BULLET_UROMANSINGLE\|BYTE\|CAPBUTT\|CAPROUND\|CAPSQUARE\|CARDBOTTOM\|CARDTOP\|CENTER\|CHARMAP_ADOBECUSTOM\|CHARMAP_ADOBEEXPERT\|CHARMAP_ADOBELATIN1\|CHARMAP_ADOBESTANDARD\|CHARMAP_APPLEROMAN\|CHARMAP_BIG5\|CHARMAP_DEFAULT\|CHARMAP_JOHAB\|CHARMAP_MSSYMBOL\|CHARMAP_OLDLATIN2\|CHARMAP_SJIS\|CHARMAP_UNICODE\|CHARMAP_WANSUNG\|CHIPMEMORY\|CIRCLE\|CLIENT\|CLIPBOARD_EMPTY\|CLIPBOARD_IMAGE\|CLIPBOARD_SOUND\|CLIPBOARD_TEXT\|CLIPBOARD_UNKNOWN\|CLIPREGION\|CLOCKWIPE\|CLOSEWINDOW\|CONICAL\|COPYFILE_FAILED\|COPYFILE_OVERWRITE\|COPYFILE_STATUS\|COPYFILE_UNPROTECT\|COUNTBOTH\|COUNTDIRECTORIES\|COUNTFILES\|COUNTRY_AFGHANISTAN\|COUNTRY_ALANDISLANDS\|COUNTRY_ALBANIA\|COUNTRY_ALGERIA\|COUNTRY_AMERICANSAMOA\|COUNTRY_ANDORRA\|COUNTRY_ANGOLA\|COUNTRY_ANGUILLA\|COUNTRY_ANTARCTICA\|COUNTRY_ANTIGUAANDBARBUDA\|COUNTRY_ARGENTINA\|COUNTRY_ARMENIA\|COUNTRY_ARUBA\|COUNTRY_AUSTRALIA\|COUNTRY_AUSTRIA\|COUNTRY_AZERBAIJAN\|COUNTRY_BAHAMAS\|COUNTRY_BAHRAIN\|COUNTRY_BANGLADESH\|COUNTRY_BARBADOS\|COUNTRY_BELARUS\|COUNTRY_BELGIUM\|COUNTRY_BELIZE\|COUNTRY_BENIN\|COUNTRY_BERMUDA\|COUNTRY_BESISLANDS\|COUNTRY_BHUTAN\|COUNTRY_BOLIVIA\|COUNTRY_BOSNIAANDHERZEGOVINA\|COUNTRY_BOTSWANA\|COUNTRY_BOUVETISLAND\|COUNTRY_BRAZIL\|COUNTRY_BRUNEI\|COUNTRY_BULGARIA\|COUNTRY_BURKINAFASO\|COUNTRY_BURUNDI\|COUNTRY_CAMBODIA\|COUNTRY_CAMEROON\|COUNTRY_CANADA\|COUNTRY_CAPEVERDE\|COUNTRY_CAYMANISLANDS\|COUNTRY_CENTRALAFRICANREPUBLIC\|COUNTRY_CHAD\|COUNTRY_CHILE\|COUNTRY_CHINA\|COUNTRY_CHRISTMASISLAND\|COUNTRY_COCOSISLANDS\|COUNTRY_COLOMBIA\|COUNTRY_COMOROS\|COUNTRY_CONGO\|COUNTRY_COOKISLANDS\|COUNTRY_COSTARICA\|COUNTRY_CROATIA\|COUNTRY_CUBA\|COUNTRY_CURACAO\|COUNTRY_CYPRUS\|COUNTRY_CZECHREPUBLIC\|COUNTRY_DENMARK\|COUNTRY_DJIBOUTI\|COUNTRY_DOMINICA\|COUNTRY_DOMINICANREPUBLIC\|COUNTRY_DRCONGO\|COUNTRY_ECUADOR\|COUNTRY_EGYPT\|COUNTRY_ELSALVADOR\|COUNTRY_EQUATORIALGUINEA\|COUNTRY_ERITREA\|COUNTRY_ESTONIA\|COUNTRY_ETHIOPIA\|COUNTRY_FALKLANDISLANDS\|COUNTRY_FAROEISLANDS\|COUNTRY_FIJI\|COUNTRY_FINLAND\|COUNTRY_FRANCE\|COUNTRY_FRENCHGUIANA\|COUNTRY_FRENCHPOLYNESIA\|COUNTRY_GABON\|COUNTRY_GAMBIA\|COUNTRY_GEORGIA\|COUNTRY_GERMANY\|COUNTRY_GHANA\|COUNTRY_GIBRALTAR\|COUNTRY_GREECE\|COUNTRY_GREENLAND\|COUNTRY_GRENADA\|COUNTRY_GUADELOUPE\|COUNTRY_GUAM\|COUNTRY_GUATEMALA\|COUNTRY_GUERNSEY\|COUNTRY_GUINEA\|COUNTRY_GUINEABISSAU\|COUNTRY_GUYANA\|COUNTRY_HAITI\|COUNTRY_HOLYSEE\|COUNTRY_HONDURAS\|COUNTRY_HONGKONG\|COUNTRY_HUNGARY\|COUNTRY_ICELAND\|COUNTRY_INDIA\|COUNTRY_INDONESIA\|COUNTRY_IRAN\|COUNTRY_IRAQ\|COUNTRY_IRELAND\|COUNTRY_ISLEOFMAN\|COUNTRY_ISRAEL\|COUNTRY_ITALY\|COUNTRY_IVORYCOAST\|COUNTRY_JAMAICA\|COUNTRY_JAPAN\|COUNTRY_JERSEY\|COUNTRY_JORDAN\|COUNTRY_KAZAKHSTAN\|COUNTRY_KENYA\|COUNTRY_KIRIBATI\|COUNTRY_KUWAIT\|COUNTRY_KYRGYZSTAN\|COUNTRY_LAOS\|COUNTRY_LATVIA\|COUNTRY_LEBANON\|COUNTRY_LESOTHO\|COUNTRY_LIBERIA\|COUNTRY_LIBYA\|COUNTRY_LIECHTENSTEIN\|COUNTRY_LITHUANIA\|COUNTRY_LUXEMBOURG\|COUNTRY_MACAO\|COUNTRY_MACEDONIA\|COUNTRY_MADAGASCAR\|COUNTRY_MALAWI\|COUNTRY_MALAYSIA\|COUNTRY_MALDIVES\|COUNTRY_MALI\|COUNTRY_MALTA\|COUNTRY_MARSHALLISLANDS\|COUNTRY_MARTINIQUE\|COUNTRY_MAURITANIA\|COUNTRY_MAURITIUS\|COUNTRY_MAYOTTE\|COUNTRY_MEXICO\|COUNTRY_MICRONESIA\|COUNTRY_MOLDOVA\|COUNTRY_MONACO\|COUNTRY_MONGOLIA\|COUNTRY_MONTENEGRO\|COUNTRY_MONTSERRAT\|COUNTRY_MOROCCO\|COUNTRY_MOZAMBIQUE\|COUNTRY_MYANMAR\|COUNTRY_NAMIBIA\|COUNTRY_NAURU\|COUNTRY_NEPAL\|COUNTRY_NETHERLANDS\|COUNTRY_NEWCALEDONIA\|COUNTRY_NEWZEALAND\|COUNTRY_NICARAGUA\|COUNTRY_NIGER\|COUNTRY_NIGERIA\|COUNTRY_NIUE\|COUNTRY_NORFOLKISLAND\|COUNTRY_NORTHKOREA\|COUNTRY_NORWAY\|COUNTRY_OMAN\|COUNTRY_PAKISTAN\|COUNTRY_PALAU\|COUNTRY_PALESTINE\|COUNTRY_PANAMA\|COUNTRY_PAPUANEWGUINEA\|COUNTRY_PARAGUAY\|COUNTRY_PERU\|COUNTRY_PHILIPPINES\|COUNTRY_PITCAIRN\|COUNTRY_POLAND\|COUNTRY_PORTUGAL\|COUNTRY_PUERTORICO\|COUNTRY_QATAR\|COUNTRY_REUNION\|COUNTRY_ROMANIA\|COUNTRY_RUSSIA\|COUNTRY_RWANDA\|COUNTRY_SAINTBARTHELEMY\|COUNTRY_SAINTHELENA\|COUNTRY_SAINTKITTSANDNEVIS\|COUNTRY_SAINTLUCIA\|COUNTRY_SAINTVINCENT\|COUNTRY_SAMOA\|COUNTRY_SANMARINO\|COUNTRY_SAOTOMEANDPRINCIPE\|COUNTRY_SAUDIARABIA\|COUNTRY_SENEGAL\|COUNTRY_SERBIA\|COUNTRY_SEYCHELLES\|COUNTRY_SIERRALEONE\|COUNTRY_SINGAPORE\|COUNTRY_SLOVAKIA\|COUNTRY_SLOVENIA\|COUNTRY_SOLOMONISLANDS\|COUNTRY_SOMALIA\|COUNTRY_SOUTHAFRICA\|COUNTRY_SOUTHKOREA\|COUNTRY_SOUTHSUDAN\|COUNTRY_SPAIN\|COUNTRY_SRILANKA\|COUNTRY_SUDAN\|COUNTRY_SURINAME\|COUNTRY_SWAZILAND\|COUNTRY_SWEDEN\|COUNTRY_SWITZERLAND\|COUNTRY_SYRIA\|COUNTRY_TAIWAN\|COUNTRY_TAJIKISTAN\|COUNTRY_TANZANIA\|COUNTRY_THAILAND\|COUNTRY_TIMOR\|COUNTRY_TOGO\|COUNTRY_TONGA\|COUNTRY_TRINIDADANDTOBAGO\|COUNTRY_TUNISIA\|COUNTRY_TURKEY\|COUNTRY_TURKMENISTAN\|COUNTRY_TUVALU\|COUNTRY_UAE\|COUNTRY_UGANDA\|COUNTRY_UK\|COUNTRY_UKRAINE\|COUNTRY_UNKNOWN\|COUNTRY_URUGUAY\|COUNTRY_USA\|COUNTRY_UZBEKISTAN\|COUNTRY_VANUATU\|COUNTRY_VENEZUELA\|COUNTRY_VIETNAM\|COUNTRY_YEMEN\|COUNTRY_ZAMBIA\|COUNTSEPARATE\|CR_DEAD\|CR_RUNNING\|CR_SUSPENDED\|CROSSFADE\|CRUSHBOTTOM\|CRUSHLEFT\|CRUSHRIGHT\|CRUSHTOP\|DAMPED\|DATA_5\|DATA_6\|DATA_7\|DATA_8\|DATEDAY\|DATELOCAL\|DATELOCALNATIVE\|DATEMONTH\|DATETIME\|DATEUTC\|DATEYEAR\|DEFAULTICON\|DEFAULTSPEED\|DEINTERLACE_DEFAULT\|DEINTERLACE_DOUBLE\|DELETEFILE_FAILED\|DELETEFILE_STATUS\|DELETEFILE_UNPROTECT\|DENSITY_HIGH\|DENSITY_LOW\|DENSITY_MEDIUM\|DENSITY_NONE\|DIAGONAL\|DIRECTORY\|DIRMONITOR_ADD\|DIRMONITOR_CHANGE\|DIRMONITOR_REMOVE\|DISPLAY\|DISPMODE_ASK\|DISPMODE_FAKEFULLSCREEN\|DISPMODE_FULLSCREEN\|DISPMODE_FULLSCREENSCALE\|DISPMODE_MODEREQUESTER\|DISPMODE_MODESWITCH\|DISPMODE_SYSTEMSCALE\|DISPMODE_WINDOWED\|DISPSTATE_CLOSED\|DISPSTATE_MINIMIZED\|DISPSTATE_OPEN\|DISSOLVE\|DITHERMODE_FLOYDSTEINBERG\|DITHERMODE_NONE\|DOSTYPE_DIRECTORY\|DOSTYPE_FILE\|DOUBLE\|DOUBLEBUFFER\|DOWNLOADFILE_STATUS\|DTR_OFF\|DTR_ON\|DURATION_LONG\|DURATION_SHORT\|EDGE\|ELLIPSE\|ENCODING_AMIGA\|ENCODING_ISO8859_1\|ENCODING_RAW\|ENCODING_UTF8\|EOF\|ERR_8OR16BITONLY\|ERR_ACCELERATOR\|ERR_ADDAPPICON\|ERR_ADDAPPWIN\|ERR_ADDSYSEVENT\|ERR_ADDTASK\|ERR_ADFFREEDISP\|ERR_ADFWRONGDISP\|ERR_AFILEPROP\|ERR_AHI\|ERR_ALLOCALPHA\|ERR_ALLOCCHANNEL\|ERR_ALLOCCHUNKY\|ERR_ALLOCMASK\|ERR_ALRDYDECLRD\|ERR_ALREADYASYNC\|ERR_ALSAPCM\|ERR_AMIGAGUIDE\|ERR_ANIMDISK\|ERR_ANIMFRAME\|ERR_ANTIALIAS\|ERR_APPLET\|ERR_APPLETVERSION\|ERR_APPLICATION\|ERR_ARGS\|ERR_ARRAYDECLA\|ERR_ASSERTFAILED\|ERR_ATSUI\|ERR_AUDIOCONVERTER\|ERR_BACKFILL\|ERR_BAD8SVX\|ERR_BADBASE64\|ERR_BADBYTECODE\|ERR_BADCALLBACKRET\|ERR_BADCONSTANT\|ERR_BADDIMENSIONS\|ERR_BADENCODING\|ERR_BADINTEGER\|ERR_BADIP\|ERR_BADLAYERTYPE\|ERR_BADPLATFORM\|ERR_BADSIGNATURE\|ERR_BADUPVALUES\|ERR_BADURL\|ERR_BADWAVE\|ERR_BADYIELD\|ERR_BEGINREFRESH\|ERR_BGPICBUTTON\|ERR_BGPICPALETTE\|ERR_BGPICTYPE\|ERR_BITMAP\|ERR_BLKWOENDBLK\|ERR_BRACECLOSE\|ERR_BRACEOPEN\|ERR_BRACKETCLOSE\|ERR_BRACKETOPEN\|ERR_BRUSHLINK\|ERR_BRUSHSIZE\|ERR_BRUSHTYPE\|ERR_CACHEERROR\|ERR_CASECST\|ERR_CHANGEDIR\|ERR_CHANNELRANGE\|ERR_CHRCSTEMPTY\|ERR_CHRCSTLEN\|ERR_CLIPFORMAT\|ERR_CLIPOPEN\|ERR_CLIPREAD\|ERR_CLIPWRITE\|ERR_CLOSEDDISPLAY\|ERR_CLOSEFILE\|ERR_CMDASVAR\|ERR_CMPUNSUPPORTED\|ERR_COLORSPACE\|ERR_COMMENTSTRUCT\|ERR_COMMODITY\|ERR_COMPLEXEXPR\|ERR_COMPLEXPATTERN\|ERR_COMPLEXWHILE\|ERR_CONCAT\|ERR_CONFIG\|ERR_CONFIG2\|ERR_CONITEMS\|ERR_CONSOLEARG\|ERR_CONTEXTMENU\|ERR_COORDSRANGE\|ERR_COREFOUNDATION\|ERR_CORETEXT\|ERR_CREATEDIR\|ERR_CREATEDOCKY\|ERR_CREATEEVENT\|ERR_CREATEGC\|ERR_CREATEICON\|ERR_CREATEMENU\|ERR_CREATEPORT\|ERR_CREATESHORTCUT\|ERR_CSTDOUBLEDEF\|ERR_CTRLSTRUCT\|ERR_CYIELD\|ERR_DATATYPEALPHA\|ERR_DATATYPESAVE\|ERR_DATATYPESAVE2\|ERR_DBLENCODING\|ERR_DBPALETTE\|ERR_DBTRANSWIN\|ERR_DBVIDEOLAYER\|ERR_DDAUTOSCALE\|ERR_DDMOBILE\|ERR_DDRECVIDEO\|ERR_DEADRESUME\|ERR_DEFFONT\|ERR_DELETEFILE\|ERR_DEMO\|ERR_DEMO2\|ERR_DEMO3\|ERR_DEPTHMISMATCH\|ERR_DEPTHRANGE\|ERR_DESERIALIZE\|ERR_DIFFDEPTH\|ERR_DIFFENCODING\|ERR_DINPUT\|ERR_DIRECTSHOW\|ERR_DIRLOCK\|ERR_DISPLAYADAPTERSUPPORT\|ERR_DISPLAYDESKTOP\|ERR_DISPLAYDESKTOPPAL\|ERR_DISPLAYSIZE\|ERR_DISPMINIMIZED\|ERR_DLOPEN\|ERR_DOUBLEDECLA\|ERR_DOUBLEMENU\|ERR_DRAWPATH\|ERR_DSOUNDNOTIFY\|ERR_DSOUNDNOTIPOS\|ERR_DSOUNDPLAY\|ERR_ELSEIFAFTERELSE\|ERR_ELSETWICE\|ERR_ELSEWOIF\|ERR_EMPTYMENUTREE\|ERR_EMPTYOBJ\|ERR_EMPTYPATH\|ERR_EMPTYSCRIPT\|ERR_EMPTYTABLE\|ERR_ENDBLKWOBLK\|ERR_ENDDOUBLEBUFFER\|ERR_ENDFUNCWOFUNC\|ERR_ENDIFWOIF\|ERR_ENDSWCHWOSWCH\|ERR_ENDWITHWOWITH\|ERR_EQUALEXPECTED\|ERR_ERRORCALLED\|ERR_ESCREPLACE\|ERR_EVNTEXPCTED\|ERR_EXAMINE\|ERR_EXECUTE\|ERR_EXETYPE\|ERR_FGRABVIDSTATE\|ERR_FIELDINIT\|ERR_FILEEXIST\|ERR_FILEFORMAT\|ERR_FILENOTFOUND\|ERR_FILESIZE\|ERR_FINDACTIVITY\|ERR_FINDANIM\|ERR_FINDANIMSTREAM\|ERR_FINDAPPLICATION\|ERR_FINDARRAY\|ERR_FINDASYNCDRAW\|ERR_FINDASYNCOBJ\|ERR_FINDBGPIC\|ERR_FINDBRUSH\|ERR_FINDBUTTON\|ERR_FINDCLIENT\|ERR_FINDCLIPREGION\|ERR_FINDCST\|ERR_FINDDIR\|ERR_FINDDISPLAY\|ERR_FINDFILE\|ERR_FINDFONT\|ERR_FINDFONT2\|ERR_FINDICON\|ERR_FINDINTERVAL\|ERR_FINDLAYER\|ERR_FINDLAYERDATA\|ERR_FINDMEMBLK\|ERR_FINDMENU\|ERR_FINDMENUITEM\|ERR_FINDMONITOR\|ERR_FINDMOVE\|ERR_FINDMUSIC\|ERR_FINDOBJECTDATA\|ERR_FINDPALETTE\|ERR_FINDPATH\|ERR_FINDPLUGIN\|ERR_FINDPOINTER\|ERR_FINDPORT\|ERR_FINDSAMPLE\|ERR_FINDSELECTOR\|ERR_FINDSERIAL\|ERR_FINDSERVER\|ERR_FINDSPRITE\|ERR_FINDTEXTOBJECT\|ERR_FINDTIMEOUT\|ERR_FINDTIMER\|ERR_FINDUDPOBJECT\|ERR_FINDVIDEO\|ERR_FIRSTPREPROC\|ERR_FONTFORMAT\|ERR_FONTPATH\|ERR_FONTPATH2\|ERR_FORBIDMODAL\|ERR_FOREVERWOREPEAT\|ERR_FORWONEXT\|ERR_FRAMEGRABBER\|ERR_FREEABGPIC\|ERR_FREEADISPLAY\|ERR_FREECURPOINTER\|ERR_FT2\|ERR_FTPAUTH\|ERR_FTPERROR\|ERR_FULLSCREEN\|ERR_FUNCARGS\|ERR_FUNCDECLA\|ERR_FUNCEXPECTED\|ERR_FUNCJMP\|ERR_FUNCREMOVED\|ERR_FUNCTABLEARG\|ERR_FUNCWOENDFUNC\|ERR_GETDISKOBJ\|ERR_GETIFADDRS\|ERR_GETMONITORINFO\|ERR_GETSHORTCUT\|ERR_GRABSCREEN\|ERR_GROUPNAMEUSED\|ERR_GTK\|ERR_GUIGFX\|ERR_HEXPOINT\|ERR_HOSTNAME\|ERR_HTTPERROR\|ERR_HTTPTE\|ERR_HWBMCLOSEDISP\|ERR_HWBRUSH\|ERR_HWBRUSHFUNC\|ERR_HWDBFREEDISP\|ERR_ICONDIMS\|ERR_ICONENTRY\|ERR_ICONPARMS\|ERR_ICONSIZE\|ERR_ICONSTANDARD\|ERR_ICONVECTOR\|ERR_IFWOENDIF\|ERR_IMAGEERROR\|ERR_INCOMPATBRUSH\|ERR_INISYNTAX\|ERR_INITSERIAL\|ERR_INTERNAL\|ERR_INTERNAL1\|ERR_INTEXPECTED\|ERR_INVALIDDATE\|ERR_INVALIDUTF8\|ERR_INVALIDUTF8ARG\|ERR_INVCAPIDX\|ERR_INVINSERT\|ERR_INVNEXTKEY\|ERR_INVPATCAP\|ERR_INVREPLACE\|ERR_JAVA\|ERR_JAVAMETHOD\|ERR_JOYSTICK\|ERR_KEYFILE\|ERR_KEYNOTFOUND\|ERR_KEYWORD\|ERR_KICKSTART\|ERR_LABELDECLA\|ERR_LABELDOUBLE\|ERR_LABINFOR\|ERR_LABINFUNC\|ERR_LABINIF\|ERR_LABINWHILE\|ERR_LABMAINBLK\|ERR_LAYERRANGE\|ERR_LAYERSOFF\|ERR_LAYERSON\|ERR_LAYERSUPPORT\|ERR_LAYERSUPPORT2\|ERR_LAYERSWITCH\|ERR_LEGACYPTMOD\|ERR_LFSYNTAX\|ERR_LINKFONT\|ERR_LINKPLUGIN\|ERR_LOADFRAME\|ERR_LOADICON\|ERR_LOADPICTURE\|ERR_LOADPICTURE2\|ERR_LOADPLUGIN\|ERR_LOADSOUND\|ERR_LOADVIDEO\|ERR_LOCK\|ERR_LOCK2\|ERR_LOCKBMAP\|ERR_LOCKEDOBJ\|ERR_LOOPRANGE\|ERR_LOWFREQ\|ERR_MAGICKEY\|ERR_MALFORMPAT1\|ERR_MALFORMPAT2\|ERR_MASKNALPHA\|ERR_MAXLINES\|ERR_MAXLOCALS\|ERR_MAXPARAMS\|ERR_MAXUPVALS\|ERR_MEDIAFOUNDATION\|ERR_MEM\|ERR_MEMCODE\|ERR_MEMCST\|ERR_MEMRANGE\|ERR_MENUATTACHED\|ERR_MENUCOMPLEXITY\|ERR_MISSINGBRACKET\|ERR_MISSINGFIELD\|ERR_MISSINGOPBRACK\|ERR_MISSINGPARAMTR\|ERR_MISSINGSEPARTR\|ERR_MIXMUSMOD\|ERR_MOBILE\|ERR_MODIFYAANIM\|ERR_MODIFYABG\|ERR_MODIFYABGPIC\|ERR_MODIFYABR\|ERR_MODIFYPSMP\|ERR_MODIFYSPRITE\|ERR_MODIFYSPRITE2\|ERR_MONITORDIR\|ERR_MONITORFULLSCREEN\|ERR_MONITORRANGE\|ERR_MOVEFILE\|ERR_MSGPORT\|ERR_MULDISMOBILE\|ERR_MULTIBGPIC\|ERR_MULTIDISPLAYS\|ERR_MUSFMTSUPPORT\|ERR_MUSNOTPAUSED\|ERR_MUSNOTPLYNG\|ERR_MUSNOTPLYNG2\|ERR_MUSPAUSED\|ERR_MUSPLAYING\|ERR_NAMETOOLONG\|ERR_NAMEUSED\|ERR_NEEDAPPLICATION\|ERR_NEEDCOMPOSITE\|ERR_NEEDMORPHOS2\|ERR_NEEDOS41\|ERR_NEEDPALETTEIMAGE\|ERR_NEGCOORDS\|ERR_NEWHWPLUGIN\|ERR_NEXTWOFOR\|ERR_NOABSPATH\|ERR_NOACCESS\|ERR_NOALPHA\|ERR_NOANMLAYER\|ERR_NOAPPLET\|ERR_NOARGBVISUAL\|ERR_NOBLOCKBREAK\|ERR_NOCALLBACK\|ERR_NOCHANNEL\|ERR_NOCHAR\|ERR_NOCLIPREG\|ERR_NOCOLON\|ERR_NOCOMMA\|ERR_NOCOMPRESS\|ERR_NOCONSTANTS\|ERR_NOCONTEXTMENU\|ERR_NOCOORDCST\|ERR_NODIRPATTERN\|ERR_NODISLAYERS\|ERR_NODISPMODES\|ERR_NODOUBLEBUFFER\|ERR_NOFALLTHROUGH\|ERR_NOFILTERNAME\|ERR_NOFMBHANDLER\|ERR_NOFUNCTION\|ERR_NOHWFUNC\|ERR_NOJOYATPORT\|ERR_NOKEYWORDS\|ERR_NOLAYERS\|ERR_NOLOOP\|ERR_NOLOOPCONT\|ERR_NOMASKBRUSH\|ERR_NOMENU\|ERR_NOMIMEVIEWER\|ERR_NOMUSICCB\|ERR_NONE\|ERR_NONSUSPENDEDRESUME\|ERR_NOPALETTE\|ERR_NOPALETTEIMAGE\|ERR_NOPALETTEMODE\|ERR_NORETVAL\|ERR_NOREXX\|ERR_NOSPRITES\|ERR_NOTADIR\|ERR_NOTENOUGHPIXELS\|ERR_NOTIGER\|ERR_NOTPROTRACKER\|ERR_NOTRANSPARENCY\|ERR_NOTXTLAYER\|ERR_NUMBEREXPECTED\|ERR_NUMCALLBACK\|ERR_NUMCONCAT\|ERR_NUMEXPECTED\|ERR_NUMSTRCMP\|ERR_NUMTABLEARG\|ERR_OLDAPPLET\|ERR_OPENANIM\|ERR_OPENANIM2\|ERR_OPENAUDIO\|ERR_OPENFONT\|ERR_OPENLIB\|ERR_OPENSERIAL\|ERR_OPENSOCKET\|ERR_OPENSOUND\|ERR_OPENSOUND2\|ERR_OUTOFRANGE\|ERR_PAKFORMAT\|ERR_PALETTEFILL\|ERR_PALETTEMODE\|ERR_PALSCREEN\|ERR_PEERNAME\|ERR_PENRANGE\|ERR_PERCENTFORMAT\|ERR_PERCENTFORMATSTR\|ERR_PIPE\|ERR_PIXELFORMAT\|ERR_PIXELRANGE\|ERR_PLAYERCOMP\|ERR_PLAYVIDEO\|ERR_PLUGINARCH\|ERR_PLUGINDOUBLET\|ERR_PLUGINSUPPORT\|ERR_PLUGINSYMBOL\|ERR_PLUGINTYPE\|ERR_PLUGINVER\|ERR_POINTERFORMAT\|ERR_POINTERIMG\|ERR_PORTNOTAVAIL\|ERR_PREPROCSYM\|ERR_PROTMETATABLE\|ERR_PUBSCREEN\|ERR_QUICKTIME\|ERR_RADIOTOGGLEMENU\|ERR_RANDOMIZE\|ERR_READ\|ERR_READFILE\|ERR_READFUNC\|ERR_READONLY\|ERR_READRANGE\|ERR_READTABLE\|ERR_READVIDEOPIXELS\|ERR_RECVCLOSED\|ERR_RECVTIMEOUT\|ERR_RECVUNKNOWN\|ERR_REGCLASS\|ERR_REGISTRYREAD\|ERR_REGISTRYWRITE\|ERR_REMADLAYER\|ERR_RENAME\|ERR_RENDER\|ERR_RENDERADLAYER\|ERR_RENDERCALLBACK\|ERR_RENDERER\|ERR_REPEATWOUNTIL\|ERR_REQAUTH\|ERR_REQUIREFIELD\|ERR_REQUIREPLUGIN\|ERR_REQUIRETAGFMT\|ERR_RETWOGOSUB\|ERR_REVDWORD\|ERR_REWINDDIR\|ERR_REXXERR\|ERR_SATELLITE\|ERR_SATFREEDISP\|ERR_SAVEANIM\|ERR_SAVEICON\|ERR_SAVEIMAGE\|ERR_SAVEPNG\|ERR_SAVERALPHA\|ERR_SAVESAMPLE\|ERR_SCALEBGPIC\|ERR_SCREEN\|ERR_SCREENMODE\|ERR_SCREENSIZE\|ERR_SCRPIXFMT\|ERR_SEEK\|ERR_SEEKFILE\|ERR_SEEKFORMAT\|ERR_SEEKRANGE\|ERR_SELECTALPHACHANNEL\|ERR_SELECTANIM\|ERR_SELECTBG\|ERR_SELECTBGPIC\|ERR_SELECTBGPIC2\|ERR_SELECTBRUSH\|ERR_SELECTMASK\|ERR_SEMAPHORE\|ERR_SENDDATA\|ERR_SENDMESSAGE\|ERR_SENDTIMEOUT\|ERR_SENDUNKNOWN\|ERR_SERIALIO\|ERR_SERIALIZE\|ERR_SERIALIZETYPE\|ERR_SETADAPTER\|ERR_SETENV\|ERR_SETFILEATTR\|ERR_SETFILECOMMENT\|ERR_SETFILEDATE\|ERR_SETMENU\|ERR_SHORTIF\|ERR_SIGNAL\|ERR_SMODEALPHA\|ERR_SMPRANGE\|ERR_SOCKET\|ERR_SOCKNAME\|ERR_SOCKOPT\|ERR_SORTFUNC\|ERR_SPRITELINK\|ERR_SPRITEONSCREEN\|ERR_SPRITEONSCREEN2\|ERR_SQBRACKETCLOSE\|ERR_SQBRACKETOPEN\|ERR_STACK\|ERR_STAT\|ERR_STRCALLBACK\|ERR_STREAMASSAMPLE\|ERR_STREXPECTED\|ERR_STRINGCST\|ERR_STRINGEXPECTED\|ERR_STRORNUM\|ERR_STRTABLEARG\|ERR_STRTOOSHORT\|ERR_SURFACE\|ERR_SWCHWOENDSWCH\|ERR_SYNTAXERROR\|ERR_SYNTAXLEVELS\|ERR_SYSBUTTON\|ERR_SYSIMAGE\|ERR_SYSTOOOLD\|ERR_TABCALLBACK\|ERR_TABEXPECTED\|ERR_TABEXPECTED2\|ERR_TABEXPECTED3\|ERR_TABLEDECLA\|ERR_TABLEINDEX\|ERR_TABLEORNIL\|ERR_TABLEOVERFLOW\|ERR_TAGEXPECTED\|ERR_TASKSETUP\|ERR_TEXTARG\|ERR_TEXTCONVERT\|ERR_TEXTCONVERT2\|ERR_TEXTSYNTAX\|ERR_TEXTURE\|ERR_TFIMAGE\|ERR_TFVANIM\|ERR_TFVBGPICBRUSH\|ERR_TFVBRUSH\|ERR_TFVBRUSHBGPIC\|ERR_THREAD\|ERR_THREADEXPECTED\|ERR_TIMER\|ERR_TOKENEXPECTED\|ERR_TOOMANYARGS\|ERR_TOOMANYCAPTURES\|ERR_TOOSMALL2\|ERR_TRANSBGMOBILE\|ERR_TRANSBRUSH\|ERR_TRAYICON\|ERR_TRIALCOMPILE\|ERR_TRIALINCLUDE\|ERR_TRIALLIMIT\|ERR_TRIALSAVEVID\|ERR_UDEXPECTED\|ERR_UNBALANCEDPAT\|ERR_UNEXPECTEDEOF\|ERR_UNEXPECTEDSYM\|ERR_UNFINISHEDCAPTURE\|ERR_UNIMPLCMD\|ERR_UNKNOWN\|ERR_UNKNOWNANMOUT\|ERR_UNKNOWNATTR\|ERR_UNKNOWNCMD\|ERR_UNKNOWNCOND\|ERR_UNKNOWNFILTER\|ERR_UNKNOWNICNOUT\|ERR_UNKNOWNIMGOUT\|ERR_UNKNOWNMIMETYPE\|ERR_UNKNOWNMUSFMT\|ERR_UNKNOWNPALETTE\|ERR_UNKNOWNSEC\|ERR_UNKNOWNSEQ\|ERR_UNKNOWNSMPOUT\|ERR_UNKNOWNTAG\|ERR_UNKNUMFMT\|ERR_UNKPROTOCOL\|ERR_UNKTEXTFMT\|ERR_UNMPARENTHESES\|ERR_UNSETENV\|ERR_UNSUPPORTEDFEAT\|ERR_UNTERMINTDSTR\|ERR_UNTILWOREPEAT\|ERR_UPDATEICON\|ERR_UPLOADFORBIDDEN\|ERR_USERABORT\|ERR_VALUEEXPECTED\|ERR_VAREXPECTED\|ERR_VARLENGTH\|ERR_VARSYNTAX\|ERR_VECGFXPLUGIN\|ERR_VECTORANIM\|ERR_VECTORBRUSH\|ERR_VERSION\|ERR_VFONT\|ERR_VFONTTYPE\|ERR_VIDATTACHED\|ERR_VIDEOFRAME\|ERR_VIDEOINIT\|ERR_VIDEOLAYER\|ERR_VIDEOLAYERDRV\|ERR_VIDEOSTRATEGY\|ERR_VIDEOTRANS\|ERR_VIDLAYERFUNC\|ERR_VIDNOTPAUSED\|ERR_VIDNOTPLAYING\|ERR_VIDPAUSED\|ERR_VIDPLAYING\|ERR_VIDRECMULTI\|ERR_VIDRECTRANS\|ERR_VIDSTOPPED\|ERR_VISUALINFO\|ERR_VMMISMATCH\|ERR_WARPOS\|ERR_WENDWOWHILE\|ERR_WHILEWOWEND\|ERR_WINDOW\|ERR_WITHWOENDWITH\|ERR_WRITE\|ERR_WRITEFILE\|ERR_WRITEJPEG\|ERR_WRITEONLY\|ERR_WRONGCLIPREG\|ERR_WRONGCMDRECVIDEO\|ERR_WRONGDTYPE\|ERR_WRONGFLOAT\|ERR_WRONGHEX\|ERR_WRONGID\|ERR_WRONGOP\|ERR_WRONGOPCST\|ERR_WRONGSPRITESIZE\|ERR_WRONGUSAGE\|ERR_WRONGVSTRATEGY\|ERR_XCURSOR\|ERR_XDISPLAY\|ERR_XF86VIDMODEEXT\|ERR_XFIXES\|ERR_YIELD\|ERR_ZERODIVISION\|ERR_ZLIBDATA\|ERR_ZLIBIO\|ERR_ZLIBSTREAM\|ERR_ZLIBVERSION\|EVENTHANDLER\|FADE\|FASTMEMORY\|FASTSPEED\|FILE\|FILEATTR_ARCHIVE\|FILEATTR_DELETE_USR\|FILEATTR_EXECUTE_GRP\|FILEATTR_EXECUTE_OTH\|FILEATTR_EXECUTE_USR\|FILEATTR_HIDDEN\|FILEATTR_NORMAL\|FILEATTR_PURE\|FILEATTR_READ_GRP\|FILEATTR_READ_OTH\|FILEATTR_READ_USR\|FILEATTR_READONLY\|FILEATTR_SCRIPT\|FILEATTR_SYSTEM\|FILEATTR_WRITE_GRP\|FILEATTR_WRITE_OTH\|FILEATTR_WRITE_USR\|FILETYPE_ANIM\|FILETYPE_ICON\|FILETYPE_IMAGE\|FILETYPE_SOUND\|FILETYPE_VIDEO\|FILETYPEFLAGS_ALPHA\|FILETYPEFLAGS_FPS\|FILETYPEFLAGS_QUALITY\|FILETYPEFLAGS_SAVE\|FILLCOLOR\|FILLGRADIENT\|FILLNONE\|FILLRULEEVENODD\|FILLRULEWINDING\|FILLTEXTURE\|FLOAT\|FLOW_HARDWARE\|FLOW_OFF\|FLOW_XON_XOFF\|FONT\|FONTENGINE_INBUILT\|FONTENGINE_NATIVE\|FONTSLANT_ITALIC\|FONTSLANT_OBLIQUE\|FONTSLANT_ROMAN\|FONTTYPE_BITMAP\|FONTTYPE_COLOR\|FONTTYPE_VECTOR\|FONTWEIGHT_BLACK\|FONTWEIGHT_BOLD\|FONTWEIGHT_BOOK\|FONTWEIGHT_DEMIBOLD\|FONTWEIGHT_EXTRABLACK\|FONTWEIGHT_EXTRABOLD\|FONTWEIGHT_EXTRALIGHT\|FONTWEIGHT_HEAVY\|FONTWEIGHT_LIGHT\|FONTWEIGHT_MEDIUM\|FONTWEIGHT_NORMAL\|FONTWEIGHT_REGULAR\|FONTWEIGHT_SEMIBOLD\|FONTWEIGHT_THIN\|FONTWEIGHT_ULTRABLACK\|FONTWEIGHT_ULTRABOLD\|FONTWEIGHT_ULTRALIGHT\|FRAMEMODE_FULL\|FRAMEMODE_SINGLE\|FREESPACE\|FTPASCII\|FTPBINARY\|FUCHSIA\|FUNCTION\|GRAY\|GREEN\|HBLINDS128\|HBLINDS16\|HBLINDS32\|HBLINDS64\|HBLINDS8\|HCLOSECURTAIN\|HCLOSEGATE\|HEXNUMERICAL\|HFLIPCOIN\|HFLOWBOTTOM\|HFLOWTOP\|HIDEBRUSH\|HIDELAYER\|HKEY_CLASSES_ROOT\|HKEY_CURRENT_CONFIG\|HKEY_CURRENT_USER\|HKEY_LOCAL_MACHINE\|HKEY_USERS\|HLINES\|HLINES2\|HLOWFLIPCOIN\|HOLLYWOOD\|HOPENCURTAIN\|HOPENGATE\|HSPLIT\|HSTRANGEPUSH\|HSTRETCHCENTER\|HSTRIPES\|HSTRIPES16\|HSTRIPES2\|HSTRIPES32\|HSTRIPES4\|HSTRIPES64\|HSTRIPES8\|HW_64BIT\|HW_AMIGA\|HW_AMIGAOS3\|HW_AMIGAOS4\|HW_ANDROID\|HW_AROS\|HW_IOS\|HW_LINUX\|HW_LITTLE_ENDIAN\|HW_MACOS\|HW_MORPHOS\|HW_REVISION\|HW_VERSION\|HW_WARPOS\|HW_WINDOWS\|ICNFMT_HOLLYWOOD\|ICON\|IMAGETYPE_RASTER\|IMAGETYPE_VECTOR\|IMGFMT_BMP\|IMGFMT_GIF\|IMGFMT_ILBM\|IMGFMT_JPEG\|IMGFMT_NATIVE\|IMGFMT_PLUGIN\|IMGFMT_PNG\|IMGFMT_TIFF\|IMGFMT_UNKNOWN\|IMMERSIVE_LEANBACK\|IMMERSIVE_NONE\|IMMERSIVE_NORMAL\|IMMERSIVE_STICKY\|INACTIVEWINDOW\|INF\|INSERTBRUSH\|INTEGER\|INTERVAL\|IO_BUFFERED\|IO_FAKE64\|IO_LITTLEENDIAN\|IO_SIGNED\|IO_UNBUFFERED\|IO_UNSIGNED\|IPAUTO\|IPUNKNOWN\|IPV4\|IPV6\|ITALIC\|JOINBEVEL\|JOINMITER\|JOINROUND\|JOYDOWN\|JOYDOWNLEFT\|JOYDOWNRIGHT\|JOYLEFT\|JOYNODIR\|JOYRIGHT\|JOYUP\|JOYUPLEFT\|JOYUPRIGHT\|JUSTIFIED\|KEEPASPRAT\|KEEPPOSITION\|LANGUAGE_ABKHAZIAN\|LANGUAGE_AFAR\|LANGUAGE_AFRIKAANS\|LANGUAGE_AKAN\|LANGUAGE_ALBANIAN\|LANGUAGE_AMHARIC\|LANGUAGE_ARABIC\|LANGUAGE_ARAGONESE\|LANGUAGE_ARMENIAN\|LANGUAGE_ASSAMESE\|LANGUAGE_AVARIC\|LANGUAGE_AVESTAN\|LANGUAGE_AYMARA\|LANGUAGE_AZERBAIJANI\|LANGUAGE_BAMBARA\|LANGUAGE_BASHKIR\|LANGUAGE_BASQUE\|LANGUAGE_BELARUSIAN\|LANGUAGE_BENGALI\|LANGUAGE_BIHARI\|LANGUAGE_BISLAMA\|LANGUAGE_BOSNIAN\|LANGUAGE_BRETON\|LANGUAGE_BULGARIAN\|LANGUAGE_BURMESE\|LANGUAGE_CATALAN\|LANGUAGE_CENTRALKHMER\|LANGUAGE_CHAMORRO\|LANGUAGE_CHECHEN\|LANGUAGE_CHICHEWA\|LANGUAGE_CHINESE\|LANGUAGE_CHURCHSLAVIC\|LANGUAGE_CHUVASH\|LANGUAGE_CORNISH\|LANGUAGE_CORSICAN\|LANGUAGE_CREE\|LANGUAGE_CROATIAN\|LANGUAGE_CZECH\|LANGUAGE_DANISH\|LANGUAGE_DIVEHI\|LANGUAGE_DUTCH\|LANGUAGE_DZONGKHA\|LANGUAGE_ENGLISH\|LANGUAGE_ESPERANTO\|LANGUAGE_ESTONIAN\|LANGUAGE_EWE\|LANGUAGE_FAROESE\|LANGUAGE_FIJIAN\|LANGUAGE_FINNISH\|LANGUAGE_FRENCH\|LANGUAGE_FULAH\|LANGUAGE_GAELIC\|LANGUAGE_GALICIAN\|LANGUAGE_GANDA\|LANGUAGE_GEORGIAN\|LANGUAGE_GERMAN\|LANGUAGE_GREEK\|LANGUAGE_GREENLANDIC\|LANGUAGE_GUARANI\|LANGUAGE_GUJARATI\|LANGUAGE_HAITIAN\|LANGUAGE_HAUSA\|LANGUAGE_HEBREW\|LANGUAGE_HERERO\|LANGUAGE_HINDI\|LANGUAGE_HIRIMOTU\|LANGUAGE_HUNGARIAN\|LANGUAGE_ICELANDIC\|LANGUAGE_IDO\|LANGUAGE_IGBO\|LANGUAGE_INDONESIAN\|LANGUAGE_INTERLINGUA\|LANGUAGE_INTERLINGUE\|LANGUAGE_INUKTITUT\|LANGUAGE_INUPIAQ\|LANGUAGE_IRISH\|LANGUAGE_ITALIAN\|LANGUAGE_JAPANESE\|LANGUAGE_JAVANESE\|LANGUAGE_KANNADA\|LANGUAGE_KANURI\|LANGUAGE_KASHMIRI\|LANGUAGE_KAZAKH\|LANGUAGE_KIKUYU\|LANGUAGE_KINYARWANDA\|LANGUAGE_KIRGHIZ\|LANGUAGE_KOMI\|LANGUAGE_KONGO\|LANGUAGE_KOREAN\|LANGUAGE_KUANYAMA\|LANGUAGE_KURDISH\|LANGUAGE_LAO\|LANGUAGE_LATIN\|LANGUAGE_LATVIAN\|LANGUAGE_LIMBURGAN\|LANGUAGE_LINGALA\|LANGUAGE_LITHUANIAN\|LANGUAGE_LUBAKATANGA\|LANGUAGE_LUXEMBOURGISH\|LANGUAGE_MACEDONIAN\|LANGUAGE_MALAGASY\|LANGUAGE_MALAY\|LANGUAGE_MALAYALAM\|LANGUAGE_MALTESE\|LANGUAGE_MANX\|LANGUAGE_MAORI\|LANGUAGE_MARATHI\|LANGUAGE_MARSHALLESE\|LANGUAGE_MONGOLIAN\|LANGUAGE_NAURU\|LANGUAGE_NAVAJO\|LANGUAGE_NDONGA\|LANGUAGE_NEPALI\|LANGUAGE_NORTHERNSAMI\|LANGUAGE_NORTHNDEBELE\|LANGUAGE_NORWEGIAN\|LANGUAGE_NORWEGIANBOKMAL\|LANGUAGE_NORWEGIANNYNORSK\|LANGUAGE_OCCITAN\|LANGUAGE_OJIBWA\|LANGUAGE_ORIYA\|LANGUAGE_OROMO\|LANGUAGE_OSSETIAN\|LANGUAGE_PALI\|LANGUAGE_PANJABI\|LANGUAGE_PASHTO\|LANGUAGE_PERSIAN\|LANGUAGE_POLISH\|LANGUAGE_PORTUGUESE\|LANGUAGE_QUECHUA\|LANGUAGE_ROMANIAN\|LANGUAGE_ROMANSH\|LANGUAGE_RUNDI\|LANGUAGE_RUSSIAN\|LANGUAGE_SAMOAN\|LANGUAGE_SANGO\|LANGUAGE_SANSKRIT\|LANGUAGE_SARDINIAN\|LANGUAGE_SERBIAN\|LANGUAGE_SHONA\|LANGUAGE_SICHUANYI\|LANGUAGE_SINDHI\|LANGUAGE_SINHALA\|LANGUAGE_SLOVAK\|LANGUAGE_SLOVENIAN\|LANGUAGE_SOMALI\|LANGUAGE_SOUTHERNSOTHO\|LANGUAGE_SOUTHNDEBELE\|LANGUAGE_SPANISH\|LANGUAGE_SUNDANESE\|LANGUAGE_SWAHILI\|LANGUAGE_SWATI\|LANGUAGE_SWEDISH\|LANGUAGE_TAGALOG\|LANGUAGE_TAHITIAN\|LANGUAGE_TAJIK\|LANGUAGE_TAMIL\|LANGUAGE_TATAR\|LANGUAGE_TELUGU\|LANGUAGE_THAI\|LANGUAGE_TIBETAN\|LANGUAGE_TIGRINYA\|LANGUAGE_TONGA\|LANGUAGE_TSONGA\|LANGUAGE_TSWANA\|LANGUAGE_TURKISH\|LANGUAGE_TURKMEN\|LANGUAGE_TWI\|LANGUAGE_UIGHUR\|LANGUAGE_UKRAINIAN\|LANGUAGE_UNKNOWN\|LANGUAGE_URDU\|LANGUAGE_UZBEK\|LANGUAGE_VENDA\|LANGUAGE_VIETNAMESE\|LANGUAGE_WALLOON\|LANGUAGE_WELSH\|LANGUAGE_WESTERNFRISIAN\|LANGUAGE_WOLOF\|LANGUAGE_XHOSA\|LANGUAGE_YIDDISH\|LANGUAGE_YORUBA\|LANGUAGE_ZHUANG\|LANGUAGE_ZULU\|LAYER\|LAYER_VS_BOX\|LAYERBUTTON\|LEFT\|LEFTOUT\|LIGHTUSERDATA\|LIME\|LINE\|LINEAR\|LITTLEENDIAN\|LONG\|LOWERCURVE\|MAROON\|MASK\|MASKAND\|MASKINVISIBLE\|MASKOR\|MASKVANILLACOPY\|MASKVISIBLE\|MASKXOR\|MEMORY\|MENU\|MENUITEM_DISABLED\|MENUITEM_RADIO\|MENUITEM_SELECTED\|MENUITEM_TOGGLE\|MILLISECONDS\|MODE_READ\|MODE_READWRITE\|MODE_WRITE\|MODLALT\|MODLCOMMAND\|MODLCONTROL\|MODLSHIFT\|MODRALT\|MODRCOMMAND\|MODRCONTROL\|MODRSHIFT\|MONO16\|MONO8\|MONOSPACE\|MOVEFILE_COPY\|MOVEFILE_COPYFAILED\|MOVEFILE_DELETE\|MOVEFILE_DELETEFAILED\|MOVEFILE_UNPROTECT\|MOVELIST\|MOVEWINDOW\|MUSIC\|NAN\|NATIVE\|NATIVEENDIAN\|NAVY\|NETWORKCONNECTION\|NETWORKSERVER\|NETWORKUDP\|NEXTFRAME\|NEXTFRAME2\|NIL\|NOCOLOR\|NONE\|NOPEN\|NORMAL\|NORMALSPEED\|NOTRANSPARENCY\|NUMBER\|NUMERICAL\|OLIVE\|ONBUTTONCLICK\|ONBUTTONCLICKALL\|ONBUTTONOVER\|ONBUTTONOVERALL\|ONBUTTONRIGHTCLICK\|ONBUTTONRIGHTCLICKALL\|ONKEYDOWN\|ONKEYDOWNALL\|ORIENTATION_LANDSCAPE\|ORIENTATION_LANDSCAPEREV\|ORIENTATION_NONE\|ORIENTATION_PORTRAIT\|ORIENTATION_PORTRAITREV\|PALETTE\|PALETTE_AGA\|PALETTE_CGA\|PALETTE_DEFAULT\|PALETTE_EGA\|PALETTE_GRAY128\|PALETTE_GRAY16\|PALETTE_GRAY256\|PALETTE_GRAY32\|PALETTE_GRAY4\|PALETTE_GRAY64\|PALETTE_GRAY8\|PALETTE_MACINTOSH\|PALETTE_MONOCHROME\|PALETTE_OCS\|PALETTE_WINDOWS\|PALETTE_WORKBENCH\|PALETTEMODE_PEN\|PALETTEMODE_REMAP\|PARITY_EVEN\|PARITY_NONE\|PARITY_ODD\|PERMREQ_READEXTERNAL\|PERMREQ_WRITEEXTERNAL\|PI\|PIXELZOOM1\|PIXELZOOM2\|PLOT\|PLUGINCAPS_ANIM\|PLUGINCAPS_AUDIOADAPTER\|PLUGINCAPS_CONVERT\|PLUGINCAPS_DIRADAPTER\|PLUGINCAPS_DISPLAYADAPTER\|PLUGINCAPS_EXTENSION\|PLUGINCAPS_FILEADAPTER\|PLUGINCAPS_ICON\|PLUGINCAPS_IMAGE\|PLUGINCAPS_IPCADAPTER\|PLUGINCAPS_LIBRARY\|PLUGINCAPS_NETWORKADAPTER\|PLUGINCAPS_REQUESTERADAPTER\|PLUGINCAPS_REQUIRE\|PLUGINCAPS_SAVEANIM\|PLUGINCAPS_SAVEICON\|PLUGINCAPS_SAVEIMAGE\|PLUGINCAPS_SAVESAMPLE\|PLUGINCAPS_SERIALIZE\|PLUGINCAPS_SOUND\|PLUGINCAPS_TIMERADAPTER\|PLUGINCAPS_VECTOR\|PLUGINCAPS_VIDEO\|POINTER\|POLYGON\|PRGTYPE_APPLET\|PRGTYPE_PROGRAM\|PRGTYPE_SCRIPT\|PRINT\|PURPLE\|PUSHBOTTOM\|PUSHLEFT\|PUSHRIGHT\|PUSHTOP\|PUZZLE\|QUADRECT\|QUARTERS\|RADIAL\|RANDOMEFFECT\|RANDOMPARAMETER\|RECEIVEALL\|RECEIVEBYTES\|RECEIVEDATA_PACKET\|RECEIVELINE\|RECTBACKCENTER\|RECTBACKEAST\|RECTBACKNORTH\|RECTBACKNORTHEAST\|RECTBACKNORTHWEST\|RECTBACKSOUTH\|RECTBACKSOUTHEAST\|RECTBACKSOUTHWEST\|RECTBACKWEST\|RECTCENTER\|RECTEAST\|RECTNORTH\|RECTNORTHEAST\|RECTNORTHWEST\|RECTSOUTH\|RECTSOUTHEAST\|RECTSOUTHWEST\|RECTWEST\|RED\|REMOVELAYER\|REQ_CAMERA\|REQ_GALLERY\|REQ_HIDEICONS\|REQ_MULTISELECT\|REQ_NORMAL\|REQ_SAVEMODE\|REQICON_ERROR\|REQICON_INFORMATION\|REQICON_NONE\|REQICON_QUESTION\|REQICON_WARNING\|REVEALBOTTOM\|REVEALLEFT\|REVEALRIGHT\|REVEALTOP\|RIGHT\|RIGHTOUT\|ROLLLEFT\|ROLLTOP\|RTS_OFF\|RTS_ON\|SAMPLE\|SANS\|SCALEMODE_AUTO\|SCALEMODE_LAYER\|SCALEMODE_NONE\|SCROLLBOTTOM\|SCROLLEAST\|SCROLLLEFT\|SCROLLNORTH\|SCROLLNORTHEAST\|SCROLLNORTHWEST\|SCROLLRIGHT\|SCROLLSOUTH\|SCROLLSOUTHEAST\|SCROLLSOUTHWEST\|SCROLLTOP\|SCROLLWEST\|SECONDS\|SEEK_BEGINNING\|SEEK_CURRENT\|SEEK_END\|SELMODE_COMBO\|SELMODE_LAYERS\|SELMODE_NORMAL\|SERIAL\|SERIF\|SERVER\|SHADOW\|SHAPE\|SHDWEAST\|SHDWNORTH\|SHDWNORTHEAST\|SHDWNORTHWEST\|SHDWSOUTH\|SHDWSOUTHEAST\|SHDWSOUTHWEST\|SHDWWEST\|SHORT\|SILVER\|SIMPLEBUTTON\|SINE\|SIZEWINDOW\|SLIDEBOTTOM\|SLIDELEFT\|SLIDERIGHT\|SLIDETOP\|SLOWSPEED\|SMOOTHOUT\|SMPFMT_WAVE\|SNAPDESKTOP\|SNAPDISPLAY\|SNAPWINDOW\|SPIRAL\|SPRITE\|SPRITE_VS_BOX\|SPRITE_VS_BRUSH\|STAR\|STDERR\|STDIN\|STDOUT\|STDPTR_BUSY\|STDPTR_CUSTOM\|STDPTR_SYSTEM\|STEREO16\|STEREO8\|STOP_1\|STOP_2\|STRETCHBOTTOM\|STRETCHLEFT\|STRETCHRIGHT\|STRETCHTOP\|STRING\|STRUDEL\|SUN\|SWISS\|TABLE\|TEAL\|TEXTOBJECT\|TEXTOUT\|THREAD\|TICKS\|TIMEOUT\|TIMER\|TOP\|TOPOUT\|TRUETYPE_DEFAULT\|TURNDOWNBOTTOM\|TURNDOWNLEFT\|TURNDOWNRIGHT\|TURNDOWNTOP\|UDPCLIENT\|UDPNONE\|UDPOBJECT\|UDPSERVER\|UNDERLINED\|UNDO\|UPLOADFILE_RESPONSE\|UPLOADFILE_STATUS\|UPNDOWN\|UPPERCURVE\|USEDSPACE\|USELAYERPOSITION\|USERDATA\|VANILLACOPY\|VBLINDS128\|VBLINDS16\|VBLINDS32\|VBLINDS64\|VBLINDS8\|VCLOSECURTAIN\|VCLOSEGATE\|VECTORPATH\|VFLIPCOIN\|VFLOWLEFT\|VFLOWRIGHT\|VIDDRV_HOLLYWOOD\|VIDDRV_OS\|VIDEO\|VIEWMODE_DATE\|VIEWMODE_ICONS\|VIEWMODE_NAME\|VIEWMODE_NONE\|VIEWMODE_SIZE\|VIEWMODE_TYPE\|VLINES\|VLINES2\|VLOWFLIPCOIN\|VOID\|VOPENCURTAIN\|VOPENGATE\|VSPLIT\|VSTRANGEPUSH\|VSTRETCHCENTER\|VSTRIPES\|VSTRIPES16\|VSTRIPES2\|VSTRIPES32\|VSTRIPES4\|VSTRIPES64\|VSTRIPES8\|WALLPAPERLEFT\|WALLPAPERTOP\|WATER1\|WATER2\|WATER3\|WATER4\|WHITE\|WORD\|YELLOW\|ZOOMCENTER\|ZOOMEAST\|ZOOMIN\|ZOOMNORTH\|ZOOMNORTHEAST\|ZOOMNORTHWEST\|ZOOMOUT\|ZOOMSOUTH\|ZOOMSOUTHEAST\|ZOOMSOUTHWEST\|ZOOMWEST\)\>"
+" Hollywood Functions
+syn keyword hwFunction Abs ACos ARGB ActivateDisplay Add AddArcToPath AddBoxToPath AddCircleToPath AddEllipseToPath AddFontPath AddIconImage AddMove AddStr AddTab AddTextToPath AllocMem AllocMemFromPointer AllocMemFromVirtualFile AppendPath ApplyPatch Arc ArcDistortBrush ArrayToStr Asc ASin Assert AsyncDrawFrame ATan ATan2 BarrelDistortBrush Base64Str Beep BeginAnimStream BeginDoubleBuffer BeginRefresh BGPicToBrush BinStr BitClear BitComplement BitSet BitTest BitXor Blue BlurBrush Box BreakEventHandler BreakWhileMouseOn BrushToBGPic BrushToGray BrushToMonochrome BrushToPenArray BrushToRGBArray ByteAsc ByteChr ByteLen ByteOffset ByteStrStr ByteVal CRC32 CRC32Str CallJavaMethod CancelAsyncDraw CancelAsyncOperation CanonizePath Cast Ceil ChangeApplicationIcon ChangeBrushTransparency ChangeDirectory ChangeDisplayMode ChangeDisplaySize ChangeInterval CharcoalBrush CharOffset CharWidth CheckEvent CheckEvents Chr Circle ClearClipboard ClearEvents ClearInterval ClearMove ClearObjectData ClearPath ClearScreen ClearSerialQueue ClearTimeout CloseAmigaGuide CloseAnim CloseAudio CloseCatalog CloseConnection CloseDirectory CloseDisplay CloseFile CloseFont CloseMusic ClosePath CloseResourceMonitor CloseSerialPort CloseServer CloseUDPObject CloseVideo Cls CollectGarbage Collision ColorRequest CompareDates CompareStr CompressFile Concat ConsolePrint ConsolePrintNR ConsolePrompt ContinueAsyncOperation ContrastBrush ContrastPalette ConvertStr ConvertToBrush CopyAnim CopyBGPic CopyBrush CopyFile CopyLayer CopyMem CopyObjectData CopyPalette CopyPath CopyPens CopySample CopySprite CopyTable CopyTextObject Cos CountDirectoryEntries CountJoysticks CountStr CreateAnim CreateBGPic CreateBorderBrush CreateBrush CreateButton CreateClipRegion CreateCoroutine CreateDisplay CreateGradientBGPic CreateGradientBrush CreateIcon CreateKeyDown CreateLayer CreateList CreateMenu CreateMusic CreatePalette CreatePointer CreatePort CreateRainbowBGPic CreateRexxPort CreateSample CreateServer CreateShadowBrush CreateShortcut CreateSprite CreateTextObject CreateTexturedBGPic CreateTexturedBrush CreateUDPObject CropBrush CtrlCQuit CurveTo CyclePalette DateToTimestamp DateToUTC DebugOutput DebugPrint DebugPrintNR DebugPrompt DebugStr DebugVal DecompressFile DecreasePointer DefineVirtualFile DefineVirtualFileFromString Deg DeleteAlphaChannel DeleteButton DeleteFile DeleteMask DeletePrefs DeselectMenuItem DeserializeTable DirectoryItems DisableButton DisableEvent DisableEventHandler DisableLayers DisableLineHook DisableMenuItem DisablePlugin DisablePrecalculation DisableVWait DisplayAnimFrame DisplayBGPic DisplayBGPicPart DisplayBGPicPartFX DisplayBrush DisplayBrushFX DisplayBrushPart DisplaySprite DisplayTextObject DisplayTextObjectFX DisplayTransitionFX DisplayVideoFrame Div DoMove DownloadFile DrawPath DumpButtons DumpLayers DumpMem DumpVideo DumpVideoTime EdgeBrush Ellipse EmbossBrush EmptyStr EnableButton EnableEventHandler EnableEvent EnableLayers EnableLineHook EnableMenuItem EnablePlugin EnablePrecalculation EnableVWait End EndDoubleBuffer EndianSwap EndRefresh EndSelect EndsWith Eof Error EscapeQuit Eval Execute Exists ExitOnError Exp ExtractPalette FileAttributes FileLength FileLines FilePart FilePos FileRequest FileSize FileToString FillMem FillMusicBuffer FindStr FinishAnimStream FinishAsyncDraw Flip FlipBrush FlipSprite FloodFill Floor FlushFile FlushMusicBuffer FlushSerialPort FontRequest ForcePathUse ForceSound ForceVideoDriver ForceVideoMode ForEach ForEachI FormatStr Frac FreeAnim FreeBGPic FreeBrush FreeClipRegion FreeDisplay FreeEventCache FreeGlyphCache FreeIcon FreeLayers FreeMem FreeMenu FreeModule FreePalette FreePath FreePointer FreeSample FreeSprite FreeTextObject FrExp FullPath GammaBrush GammaPalette GCInfo GetAnimFrame GetApplicationInfo GetApplicationList GetAsset GetAttribute GetAvailableFonts GetBaudRate GetBestPen GetBrushLink GetBrushPen GetBulletColor GetCatalogString GetChannels GetCharMaps GetClipboard GetCommandLine GetConnectionIP GetConnectionPort GetConnectionProtocol GetConstant GetCoroutineStatus GetCountryInfo GetCurrentDirectory GetCurrentPoint GetDash GetDataBits GetDate GetDateNum GetDefaultEncoding GetDirectoryEntry GetDisplayModes GetDTR GetEnv GetErrorName GetEventCode GetFileArgument GetFileAttributes GetFillRule GetFillStyle GetFlowControl GetFontColor GetFontStyle GetFormStyle GetFPSLimit GetFrontScreen GetHostName GetIconProperties GetItem GetKerningPair GetLanguageInfo GetLastError GetLayerAtPos GetLayerPen GetLayerStyle GetLineCap GetLineJoin GetLineWidth GetLocalInterfaces GetLocalIP GetLocalPort GetLocalProtocol GetMACAddress GetMemoryInfo GetMemPointer GetMemString GetMetaTable GetMiterLimit GetMonitors GetObjectData GetObjects GetObjectType GetPalettePen GetParity GetPathExtents GetPatternPosition GetPen GetPlugins GetProgramDirectory GetProgramInfo GetPubScreens GetRandomColor GetRandomFX GetRealColor GetRTS GetSampleData GetShortcutPath GetSongPosition GetStartDirectory GetStopBits GetSystemCountry GetSystemInfo GetSystemLanguage GetTempFileName GetTime GetTimer GetTimestamp GetTimeZone GetType GetVersion GetVideoFrame GetVolumeInfo GetVolumeName GetWeekday Gosub Goto GrabDesktop Green HaveFreeChannel HaveItem HaveObject HaveObjectData HavePlugin HaveVolume HexStr HideDisplay HideKeyboard HideLayer HideLayerFX HidePointer HideScreen Hypot IgnoreCase IIf ImageRequest IncreasePointer InKeyStr InsertItem InsertLayer InsertSample InsertStr InstallEventHandler Intersection Int InvertAlphaChannel InvertBrush InvertMask InvertPalette IPairs IsAbsolutePath IsAlNum IsAlpha IsAnim IsAnimPlaying IsBrushEmpty IsChannelPlaying IsCntrl IsDigit IsDirectory IsFinite IsGraph IsInf IsKeyDown IsLeftMouse IsLower IsMenuItemDisabled IsMenuItemSelected IsMidMouse IsModule IsMusicPlaying IsMusic IsNan IsNil IsOnline IsPathEmpty IsPicture IsPrint IsPunct IsRightMouse IsSamplePlaying IsSample IsSound IsSpace IsTableEmpty IsUnicode IsUpper IsVideo IsVideoPlaying IsXDigit JoyDir JoyFire Label LayerExists LayerToBack LayerToFront Ld LdExp LeftMouseQuit LeftStr LegacyControl Limit Line LineTo ListItems ListRequest Ln LoadAnim LoadAnimFrame LoadBGPic LoadBrush LoadIcon LoadModule LoadPalette LoadPlugin LoadPrefs LoadSample LoadSprite Locate Log LowerStr MakeButton MakeDate MakeDirectory MakeHostPath MatchPattern Max MD5 MD5Str MemToTable MidStr Min MixBrush MixRGB MixSample ModifyAnimFrames ModifyButton ModifyKeyDown ModifyLayerFrames ModulateBrush Mod ModulatePalette MonitorDirectory MouseX MouseY MoveAnim MoveBrush MoveDisplay MoveFile MoveLayer MovePointer MoveSprite MoveTextObject MoveTo Mul NextDirectoryEntry NextFrame NextItem NormalizePath NPrint OilPaintBrush OpenAmigaGuide OpenAnim OpenAudio OpenCatalog OpenConnection OpenDirectory OpenDisplay OpenFile OpenFont OpenMusic OpenResourceMonitor OpenSerialPort OpenURL OpenVideo Pack PadNum Pairs PaletteToGray ParseDate PathItems PathPart PathRequest PathToBrush PatternFindStr PatternFindStrDirect PatternFindStrShort PatternReplaceStr PauseLayer PauseModule PauseMusic PauseTimer PauseVideo PeekClipboard Peek PenArrayToBrush PerformSelector PermissionRequest PerspectiveDistortBrush Pi PixelateBrush PlayAnim PlayAnimDisk PlayLayer PlayModule PlayMusic PlaySample PlaySubsong PlayVideo Plot Poke PolarDistortBrush PollSerialQueue Polygon Pow Print QuantizeBrush Rad RaiseOnError RasterizeBrush RawDiv RawEqual RawGet RawSet ReadBrushPixel ReadByte ReadBytes ReadChr ReadDirectory ReadFloat ReadFunction ReadInt ReadLine ReadMem ReadPen ReadPixel ReadRegistryKey ReadSerialData ReadShort ReadString ReadTable ReceiveData ReceiveUDPData Red ReduceAlphaChannel RefreshDisplay RelCurveTo RelLineTo RelMoveTo RemapBrush RemoveBrushPalette RemoveButton RemoveIconImage RemoveItem RemoveKeyDown RemoveLayer RemoveLayerFX RemoveLayers RemoveSprite RemoveSprites Rename RepeatStr ReplaceColors ReplaceStr ResetKeyStates ResetTabs ResetTimer ResolveHostName ResumeCoroutine ResumeLayer ResumeModule ResumeMusic ResumeTimer ResumeVideo ReverseFindStr ReverseStr RewindDirectory RGB RGBArrayToBrush RightStr Rnd RndF RndStrong Rol Ror RotateBrush RotateLayer RotateTextObject Round Rt Run RunCallback RunRexxScript Sar SaveAnim SaveBrush SaveIcon SavePalette SavePrefs SaveSample SaveSnapshot ScaleAnim ScaleBGPic ScaleBrush ScaleLayer ScaleSprite ScaleTextObject Seek SeekLayer SeekMusic SeekVideo SelectAlphaChannel SelectAnim SelectBGPic SelectBrush SelectDisplay SelectLayer SelectMask SelectMenuItem SelectPalette SendApplicationMessage SendData SendMessage SendRexxCommand SendUDPData SepiaToneBrush SerializeTable SetAlphaIntensity SetAnimFrameDelay SetBaudRate SetBorderPen SetBrushDepth SetBrushPalette SetBrushPen SetBrushTransparency SetBrushTransparentPen SetBulletColor SetBulletPen SetChannelVolume SetClipboard SetClipRegion SetCycleTable SetDash SetDataBits SetDefaultEncoding SetDepth SetDisplayAttributes SetDitherMode SetDrawPen SetDrawTagsDefault SetDTR SetEnv SetEventTimeout SetFileAttributes SetFileEncoding SetFillRule SetFillStyle SetFlowControl SetFont SetFontColor SetFontStyle SetFormStyle SetFPSLimit SetGradientPalette SetIconProperties SetInterval SetIOMode SetLayerAnchor SetLayerBorder SetLayerDepth SetLayerFilter SetLayerLight SetLayerName SetLayerPalette SetLayerPen SetLayerShadow SetLayerStyle SetLayerTint SetLayerTransparency SetLayerTransparentPen SetLayerVolume SetLayerZPos SetLineCap SetLineJoin SetLineWidth SetListItems SetMargins SetMaskMode SetMasterVolume SetMetaTable SetMiterLimit SetMusicVolume SetNetworkProtocol SetNetworkTimeout SetObjectData SetPalette SetPaletteDepth SetPaletteMode SetPalettePen SetPaletteTransparentPen SetPanning SetParity SetPen SetPitch SetPointer SetRTS SetScreenTitle SetShadowPen SetSpriteZPos SetStandardIconImage SetStandardPalette SetStopBits SetSubtitle SetTimeout SetTimerElapse SetTitle SetTransparentPen SetTransparentThreshold SetTrayIcon SetVarType SetVectorEngine SetVideoPosition SetVideoSize SetVideoVolume SetVolume SetWBIcon Sgn SharpenBrush Shl ShowDisplay ShowKeyboard ShowLayer ShowLayerFX ShowNotification ShowPointer ShowRinghioMessage ShowScreen ShowToast Shr Sin SolarizeBrush SolarizePalette Sort SplitStr Sqrt StartPath StartSubPath StartTimer StartsWith StopAnim StopChannel StopLayer StopModule StopMusic StopSample StopTimer StopVideo StringRequest StringToFile StripStr StrLen StrStr StrToArray Sub SwapLayers SwirlBrush SystemRequest TableItems TableToMem Tan TextExtent TextHeight TextOut TextWidth TimerElapsed TimestampToDate TintBrush TintPalette ToHostName ToIP ToNumber ToString ToUserData TransformBrush TransformLayer TranslateLayer TranslatePath TrimBrush TrimStr UndefineVirtualStringFile Undo UndoFX UnleftStr UnmidStr Unpack UnrightStr UnsetEnv UploadFile UpperStr Usage UseCarriageReturn UseFont UTCToDate Val ValidateDate ValidateStr Vibrate VWait Wait WaitAnimEnd WaitEvent WaitKeyDown WaitLeftMouse WaitMidMouse WaitPatternPosition WaitRightMouse WaitSampleEnd WaitSongPosition WaitTimer WaterRippleBrush WhileKeyDown WhileMouseDown WhileMouseOn WhileRightMouseDown Wrap WriteAnimFrame WriteBrushPixel WriteByte WriteBytes WriteChr WriteFloat WriteFunction WriteInt WriteLine WriteMem WritePen WriteRegistryKey WriteSerialData WriteShort WriteString WriteTable YieldCoroutine
+
+" user-defined constants
+syn match hwUserConstant "#\<\u\+\>"
+" user-defined functions
+syn match hwUserFunction "\<p_\w\{-1,}\>("me=e-1
+
+" Comments
+syn keyword hwTodo contained TODO FIXME XXX
+syn match hwComment ";.*$" contains=hwTodo,@Spell
+syn region hwComment matchgroup=hwComment start="/\*" end="\*/" contains=hwTodo,@Spell
+
+
+" Strings
+syn match hwSpecial contained #\\[\\abfnrtvz'"]\|\\x[[:xdigit:]]\{2}\|\\[[:digit:]]\{,3}#
+syn region hwString start=+'+hs=s+1 end=+'+he=e-1 skip=+\\\\\|\\'+ contains=hwSpecial,@Spell
+syn region hwString start=+"+hs=s+1 end=+"+he=e-1 skip=+\\\\\|\\"+ contains=hwSpecial,@Spell
+
+" integer number
+syn match hwNumber "\<\d\+\>"
+" floating point number, with dot, optional exponent
+syn match hwNumber "\<\d\+\.\d*\%([eE][-+]\=\d\+\)\=\>"
+" floating point number, starting with a dot, optional exponent
+syn match hwNumber "\.\d\+\%([eE][-+]\=\d\+\)\=\>"
+" floating point number, without dot, with exponent
+syn match hwNumber "\<\d\+[eE][-+]\=\d\+\>"
+
+" hex numbers
+syn match hwNumber "\<0[xX]\x\+\>"
+syn match hwNumber "\<0[xX][[:xdigit:].]\+\%([pP][-+]\=\d\+\)\=\>"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link hwPreProcessor PreProc
+hi def link hwStatement Statement
+hi def link hwFallThrough Statement
+hi def link hwRepeat Repeat
+hi def link hwFor Repeat
+hi def link hwString PmenuSel
+hi def link hwNumber Number
+hi def link hwOperator Operator
+hi def link hwStep Operator
+hi def link hwIn Operator
+hi def link hwUserConstant Constant
+hi def link hwConstant Constant
+hi def link hwLineStatement Conditional
+hi def link hwCond Conditional
+hi def link hwElseIf Conditional
+hi def link hwFunction Function
+hi def link hwUserFunction Function
+hi def link hwComment MoreMsg
+hi def link hwTodo Todo
+hi def link hwTable Structure
+hi def link hwError Error
+hi def link hwParenError Error
+hi def link hwBraceError Error
+hi def link hwSpecial SpecialChar
+hi def link hwLabel Label
+
+
+let b:current_syntax = "hollywood"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: et ts=8 sw=2
diff --git a/runtime/syntax/hostconf.vim b/runtime/syntax/hostconf.vim
new file mode 100644
index 0000000..593ed72
--- /dev/null
+++ b/runtime/syntax/hostconf.vim
@@ -0,0 +1,147 @@
+" Vim syntax file
+" Language: host.conf(5) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-06-25
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword hostconfTodo
+ \ contained
+ \ TODO
+ \ FIXME
+ \ XXX
+ \ NOTE
+
+syn match hostconfComment
+ \ display
+ \ contained
+ \ '\s*#.*'
+ \ contains=hostconfTodo,
+ \ @Spell
+
+syn match hostconfBegin
+ \ display
+ \ '^'
+ \ nextgroup=hostconfComment,hostconfKeyword
+ \ skipwhite
+
+syn keyword hostconfKeyword
+ \ contained
+ \ order
+ \ nextgroup=hostconfLookupOrder
+ \ skipwhite
+
+let s:orders = ['bind', 'hosts', 'nis']
+
+function s:permute_suffixes(list)
+ if empty(a:list)
+ return []
+ elseif len(a:list) == 1
+ return a:list[0]
+ else
+ let i = 0
+ let n = len(a:list)
+ let sub_permutations = []
+ while i < n
+ let list_copy = copy(a:list)
+ let removed = list_copy[i]
+ call remove(list_copy, i)
+ call add(sub_permutations, [removed, s:permute_suffixes(list_copy)])
+ let i += 1
+ endwhile
+ return sub_permutations
+ endif
+endfunction
+
+function s:generate_suffix_groups(list_of_order_of_orders, context, trailing_context)
+ for order_of_orders in a:list_of_order_of_orders
+ let order = order_of_orders[0]
+ let trailing_context = a:trailing_context . toupper(order[0]) . order[1:]
+ let nextgroup = 'hostconfLookupOrder' . trailing_context
+ let nextgroup_delimiter = nextgroup . 'Delimiter'
+ let group = 'hostconfLookupOrder' . a:context
+ execute 'syn keyword' group 'contained' order 'nextgroup=' . nextgroup_delimiter 'skipwhite'
+ execute 'syn match' nextgroup_delimiter 'contained display "," nextgroup=' . nextgroup 'skipwhite'
+ if a:context != ""
+ execute 'hi def link' group 'hostconfLookupOrder'
+ endif
+ execute 'hi def link' nextgroup_delimiter 'hostconfLookupOrderDelimiter'
+ let context = trailing_context
+ if type(order_of_orders[1]) == type([])
+ call s:generate_suffix_groups(order_of_orders[1], context, trailing_context)
+ else
+ execute 'syn keyword hostconfLookupOrder' . context 'contained' order_of_orders[-1]
+ execute 'hi def link hostconfLookupOrder' . context 'hostconfLookupOrder'
+ endif
+ endfor
+endfunction
+
+call s:generate_suffix_groups(s:permute_suffixes(s:orders), "", "")
+
+delfunction s:generate_suffix_groups
+delfunction s:permute_suffixes
+
+syn keyword hostconfKeyword
+ \ contained
+ \ trim
+ \ nextgroup=hostconfDomain
+ \ skipwhite
+
+syn match hostconfDomain
+ \ contained
+ \ '\.[^:;,[:space:]]\+'
+ \ nextgroup=hostconfDomainDelimiter
+ \ skipwhite
+
+syn match hostconfDomainDelimiter
+ \ contained
+ \ display
+ \ '[:;,]'
+ \ nextgroup=hostconfDomain
+ \ skipwhite
+
+syn keyword hostconfKeyword
+ \ contained
+ \ multi
+ \ nospoof
+ \ spoofalert
+ \ reorder
+ \ nextgroup=hostconfBoolean
+ \ skipwhite
+
+syn keyword hostconfBoolean
+ \ contained
+ \ on
+ \ off
+
+syn keyword hostconfKeyword
+ \ contained
+ \ spoof
+ \ nextgroup=hostconfSpoofValue
+ \ skipwhite
+
+syn keyword hostconfSpoofValue
+ \ contained
+ \ off
+ \ nowarn
+ \ warn
+
+hi def link hostconfTodo Todo
+hi def link hostconfComment Comment
+hi def link hostconfKeyword Keyword
+hi def link hostconfLookupOrder Identifier
+hi def link hostconfLookupOrderDelimiter Delimiter
+hi def link hostconfDomain String
+hi def link hostconfDomainDelimiter Delimiter
+hi def link hostconfBoolean Boolean
+hi def link hostconfSpoofValue hostconfBoolean
+
+let b:current_syntax = "hostconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/hostsaccess.vim b/runtime/syntax/hostsaccess.vim
new file mode 100644
index 0000000..7201816
--- /dev/null
+++ b/runtime/syntax/hostsaccess.vim
@@ -0,0 +1,23 @@
+" Vim syntax file
+" Language: hosts.deny, hosts.allow configuration files
+" Maintainer: Thilo Six <T.Six@gmx.de>
+" Last Change: 2011 May 01
+" Derived From: conf.vim
+" Credits: Bram Moolenaar
+"
+" This file is there to get at least a minimal highlighting.
+" A later version may be improved.
+
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" For a starter we just use conf.vim for highlighting
+runtime! syntax/conf.vim
+unlet b:current_syntax
+
+
+let b:current_syntax = "hostsaccess"
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/html.vim b/runtime/syntax/html.vim
new file mode 100644
index 0000000..82c829a
--- /dev/null
+++ b/runtime/syntax/html.vim
@@ -0,0 +1,359 @@
+" Vim syntax file
+" Language: HTML
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainers: Jorge Maldonado Ventura <jorgesumle@freakspot.net>
+" Claudio Fleiner <claudio@fleiner.com>
+" Last Change: 2023 Feb 20
+
+" Please check :help html.vim for some comments and a description of the options
+
+" quit when a syntax file was already loaded
+if !exists("main_syntax")
+ if exists("b:current_syntax")
+ finish
+ endif
+ let main_syntax = 'html'
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syntax spell toplevel
+
+syn include @htmlXml syntax/xml.vim
+unlet b:current_syntax
+
+syn case ignore
+
+" mark illegal characters
+syn match htmlError "[<>&]"
+
+
+" tags
+syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
+syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
+syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=javaScriptExpression,@htmlPreproc
+syn region htmlEndTag start=+</+ end=+>+ contains=htmlTagN,htmlTagError
+syn region htmlTag start=+<[^/]+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
+syn match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
+syn match htmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
+syn match htmlTagError contained "[^>]<"ms=s+1
+
+
+" tag names
+syn keyword htmlTagName contained address applet area a base basefont
+syn keyword htmlTagName contained big blockquote br caption center
+syn keyword htmlTagName contained cite code dd dfn dir div dl dt font
+syn keyword htmlTagName contained form hr html img
+syn keyword htmlTagName contained input isindex kbd li link map menu
+syn keyword htmlTagName contained meta ol option param pre p samp span
+syn keyword htmlTagName contained select small strike sub sup
+syn keyword htmlTagName contained table td textarea th tr tt ul var xmp
+syn match htmlTagName contained "\<\%(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>"
+
+" new html 4.0 tags
+syn keyword htmlTagName contained abbr acronym bdo button col colgroup
+syn keyword htmlTagName contained del fieldset iframe ins label legend
+syn keyword htmlTagName contained object optgroup q s tbody tfoot thead
+
+" new html 5 tags
+syn keyword htmlTagName contained article aside audio bdi canvas data
+syn keyword htmlTagName contained datalist details dialog embed figcaption
+syn keyword htmlTagName contained figure footer header hgroup keygen main
+syn keyword htmlTagName contained mark menuitem meter nav output picture
+syn keyword htmlTagName contained progress rb rp rt rtc ruby section
+syn keyword htmlTagName contained slot source summary template time track
+syn keyword htmlTagName contained video wbr
+
+" svg and math tags
+syn keyword htmlMathTagName contained math
+syn keyword htmlSvgTagName contained svg
+
+syn region htmlMath start="<math>" end="</math>" contains=@htmlXml transparent keepend
+syn region htmlSvg start="<svg>" end="</svg>" contains=@htmlXml transparent keepend
+
+syn cluster xmlTagHook add=htmlMathTagName,htmlSvgTagName
+
+" legal arg names
+syn keyword htmlArg contained action
+syn keyword htmlArg contained align alink alt archive background bgcolor
+syn keyword htmlArg contained border bordercolor cellpadding
+syn keyword htmlArg contained cellspacing checked class clear code codebase color
+syn keyword htmlArg contained cols colspan content coords enctype face
+syn keyword htmlArg contained gutter height hspace id
+syn keyword htmlArg contained link lowsrc marginheight
+syn keyword htmlArg contained marginwidth maxlength method name prompt
+syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape
+syn keyword htmlArg contained size src start target text type url
+syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap
+syn match htmlArg contained "\<\%(http-equiv\|href\|title\)="me=e-1
+
+" aria attributes
+exe 'syn match htmlArg contained "\<aria-\%(' . join([
+ \ 'activedescendant', 'atomic', 'autocomplete', 'busy', 'checked', 'colcount',
+ \ 'colindex', 'colspan', 'controls', 'current', 'describedby', 'details',
+ \ 'disabled', 'dropeffect', 'errormessage', 'expanded', 'flowto', 'grabbed',
+ \ 'haspopup', 'hidden', 'invalid', 'keyshortcuts', 'label', 'labelledby', 'level',
+ \ 'live', 'modal', 'multiline', 'multiselectable', 'orientation', 'owns',
+ \ 'placeholder', 'posinset', 'pressed', 'readonly', 'relevant', 'required',
+ \ 'roledescription', 'rowcount', 'rowindex', 'rowspan', 'selected', 'setsize',
+ \ 'sort', 'valuemax', 'valuemin', 'valuenow', 'valuetext'
+ \ ], '\|') . '\)\>"'
+syn keyword htmlArg contained role
+
+" Netscape extensions
+syn keyword htmlTagName contained frame noframes frameset nobr blink
+syn keyword htmlTagName contained layer ilayer nolayer spacer
+syn keyword htmlArg contained frameborder noresize pagex pagey above below
+syn keyword htmlArg contained left top visibility clip id noshade
+syn match htmlArg contained "\<z-index\>"
+
+" Microsoft extensions
+syn keyword htmlTagName contained marquee
+
+" html 4.0 arg names
+syn match htmlArg contained "\<\%(accept-charset\|label\)\>"
+syn keyword htmlArg contained abbr accept accesskey axis char charoff charset
+syn keyword htmlArg contained cite classid codetype compact data datetime
+syn keyword htmlArg contained declare defer dir disabled for frame
+syn keyword htmlArg contained headers hreflang lang language longdesc
+syn keyword htmlArg contained multiple nohref nowrap object profile readonly
+syn keyword htmlArg contained rules scheme scope span standby style
+syn keyword htmlArg contained summary tabindex valuetype version
+
+" html 5 arg names
+syn keyword htmlArg contained allow autocapitalize as blocking decoding
+syn keyword htmlArg contained enterkeyhint imagesizes imagesrcset inert
+syn keyword htmlArg contained integrity is itemid itemprop itemref itemscope
+syn keyword htmlArg contained itemtype loading nomodule ping playsinline
+syn keyword htmlArg contained referrerpolicy slot allowfullscreen async
+syn keyword htmlArg contained autocomplete autofocus autoplay challenge
+syn keyword htmlArg contained contenteditable contextmenu controls crossorigin
+syn keyword htmlArg contained default dirname download draggable dropzone form
+syn keyword htmlArg contained formaction formenctype formmethod formnovalidate
+syn keyword htmlArg contained formtarget hidden high icon inputmode keytype
+syn keyword htmlArg contained kind list loop low max min minlength muted nonce
+syn keyword htmlArg contained novalidate open optimum pattern placeholder
+syn keyword htmlArg contained poster preload radiogroup required reversed
+syn keyword htmlArg contained sandbox spellcheck sizes srcset srcdoc srclang
+syn keyword htmlArg contained step title translate typemustmatch
+syn match htmlArg contained "\<data-\h\%(\w\|[-.]\)*\%(\_s*=\)\@="
+
+" special characters
+syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};"
+
+" Comments (the real ones or the old netscape ones)
+if exists("html_wrong_comments")
+ syn region htmlComment start=+<!--+ end=+--\s*>+ contains=@Spell
+else
+ " The HTML 5.2 syntax 8.2.4.41: bogus comment is parser error; browser skips until next &gt
+ syn region htmlComment start=+<!+ end=+>+ contains=htmlCommentError keepend
+ " Idem 8.2.4.42,51: Comment starts with <!-- and ends with -->
+ " Idem 8.2.4.43,44: Except <!--> and <!---> are parser errors
+ " Idem 8.2.4.52: dash-dash-bang (--!>) is error ignored by parser, also closes comment
+ syn region htmlComment matchgroup=htmlComment start=+<!--\%(-\?>\)\@!+ end=+--!\?>+ contains=htmlCommentNested,@htmlPreProc,@Spell keepend
+ " Idem 8.2.4.49: nested comment is parser error, except <!--> is all right
+ syn match htmlCommentNested contained "<!-->\@!"
+ syn match htmlCommentError contained "[^><!]"
+endif
+syn region htmlComment start=+<!DOCTYPE+ end=+>+ keepend
+
+" server-parsed commands
+syn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr
+syn match htmlPreStmt contained "<!--#\%(config\|echo\|exec\|fsize\|flastmod\|include\|printenv\|set\|if\|elif\|else\|endif\|geoguide\)\>"
+syn match htmlPreError contained "<!--#\S*"ms=s+4
+syn match htmlPreAttr contained "\w\+=[^"]\S\+" contains=htmlPreProcAttrError,htmlPreProcAttrName
+syn region htmlPreAttr contained start=+\w\+="+ skip=+\\\\\|\\"+ end=+"+ contains=htmlPreProcAttrName keepend
+syn match htmlPreProcAttrError contained "\w\+="he=e-1
+syn match htmlPreProcAttrName contained "\%(expr\|errmsg\|sizefmt\|timefmt\|var\|cgi\|cmd\|file\|virtual\|value\)="he=e-1
+
+if !exists("html_no_rendering")
+ " rendering
+ syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc
+
+ syn region htmlStrike start="<del\>" end="</del\_s*>"me=s-1 contains=@htmlTop
+ syn region htmlStrike start="<s\>" end="</s\_s*>"me=s-1 contains=@htmlTop
+ syn region htmlStrike start="<strike\>" end="</strike\_s*>"me=s-1 contains=@htmlTop
+
+ syn region htmlBold start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
+ syn region htmlBold start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
+ syn region htmlBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic
+ syn region htmlBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline
+ syn region htmlBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlBoldItalicUnderline
+ syn region htmlBoldUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop
+ syn region htmlBoldUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
+ syn region htmlBoldItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlBoldUnderlineItalic
+
+ syn region htmlUnderline start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic
+ syn region htmlUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic
+ syn region htmlUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineBoldItalic
+ syn region htmlUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold
+ syn region htmlUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop,htmlUnderlineItalicBold
+ syn region htmlUnderlineItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop
+ syn region htmlUnderlineItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop
+ syn region htmlUnderlineBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop
+ syn region htmlUnderlineBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
+
+ syn region htmlItalic start="<i\>" end="</i\_s*>"me=s-1 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline
+ syn region htmlItalic start="<em\>" end="</em\_s*>"me=s-1 contains=@htmlTop
+ syn region htmlItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline
+ syn region htmlItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop,htmlItalicBoldUnderline
+ syn region htmlItalicBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop
+ syn region htmlItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@htmlTop,htmlItalicUnderlineBold
+ syn region htmlItalicUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@htmlTop
+ syn region htmlItalicUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@htmlTop
+
+ syn match htmlLeadingSpace "^\s\+" contained
+ syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a\_s*>"me=s-1 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLeadingSpace,javaScript,@htmlPreproc
+ syn region htmlH1 start="<h1\>" end="</h1\_s*>"me=s-1 contains=@htmlTop
+ syn region htmlH2 start="<h2\>" end="</h2\_s*>"me=s-1 contains=@htmlTop
+ syn region htmlH3 start="<h3\>" end="</h3\_s*>"me=s-1 contains=@htmlTop
+ syn region htmlH4 start="<h4\>" end="</h4\_s*>"me=s-1 contains=@htmlTop
+ syn region htmlH5 start="<h5\>" end="</h5\_s*>"me=s-1 contains=@htmlTop
+ syn region htmlH6 start="<h6\>" end="</h6\_s*>"me=s-1 contains=@htmlTop
+ syn region htmlHead start="<head\>" end="</head\_s*>"me=s-1 end="<body\>"me=s-1 end="<h[1-6]\>"me=s-1 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,htmlTitle,javaScript,cssStyle,@htmlPreproc
+ syn region htmlTitle start="<title\>" end="</title\_s*>"me=s-1 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc
+endif
+
+syn keyword htmlTagName contained noscript
+syn keyword htmlSpecialTagName contained script style
+if main_syntax != 'java' || exists("java_javascript")
+ " JAVA SCRIPT
+ syn include @htmlJavaScript syntax/javascript.vim
+ unlet b:current_syntax
+ syn region javaScript start=+<script\>\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
+ syn region htmlScriptTag contained start=+<script+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent
+ hi def link htmlScriptTag htmlTag
+
+ " html events (i.e. arguments that include javascript commands)
+ if exists("html_extended_events")
+ syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ contains=htmlEventSQ
+ syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ contains=htmlEventDQ
+ else
+ syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ keepend contains=htmlEventSQ
+ syn region htmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ keepend contains=htmlEventDQ
+ endif
+ syn region htmlEventSQ contained start=+'+ms=s+1 end=+'+me=s-1 contains=@htmlJavaScript
+ syn region htmlEventDQ contained start=+"+ms=s+1 end=+"+me=s-1 contains=@htmlJavaScript
+ hi def link htmlEventSQ htmlEvent
+ hi def link htmlEventDQ htmlEvent
+
+ " a javascript expression is used as an arg value
+ syn region javaScriptExpression contained start=+&{+ keepend end=+};+ contains=@htmlJavaScript,@htmlPreproc
+endif
+
+if main_syntax != 'java' || exists("java_vb")
+ " VB SCRIPT
+ syn include @htmlVbScript syntax/vb.vim
+ unlet b:current_syntax
+ syn region javaScript start=+<script \_[^>]*language *=\_[^>]*vbscript\_[^>]*>+ keepend end=+</script\_[^>]*>+me=s-1 contains=@htmlVbScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
+endif
+
+syn cluster htmlJavaScript add=@htmlPreproc
+
+if main_syntax != 'java' || exists("java_css")
+ " embedded style sheets
+ syn keyword htmlArg contained media
+ syn include @htmlCss syntax/css.vim
+ unlet b:current_syntax
+ syn region cssStyle start=+<style+ keepend end=+</style>+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc
+ syn match htmlCssStyleComment contained "\%(<!--\|-->\)"
+ syn region htmlCssDefinition matchgroup=htmlArg start='style="' keepend matchgroup=htmlString end='"' contains=css.*Attr,css.*Prop,cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString,@htmlPreproc
+ hi def link htmlStyleArg htmlString
+endif
+
+if main_syntax == "html"
+ " synchronizing (does not always work if a comment includes legal
+ " html tags, but doing it right would mean to always start
+ " at the first line, which is too slow)
+ syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]"
+ syn sync match htmlHighlight groupthere javaScript "<script"
+ syn sync match htmlHighlightSkip "^.*['\"].*$"
+ syn sync minlines=10
+endif
+
+" Folding
+" Originally by Ingo Karkat and Marcus Zanona
+if get(g:, "html_syntax_folding", 0)
+ syn region htmlFold start="<\z(\<\%(area\|base\|br\|col\|command\|embed\|hr\|img\|input\|keygen\|link\|meta\|param\|source\|track\|wbr\>\)\@![a-z-]\+\>\)\%(\_s*\_[^/]\?>\|\_s\_[^>]*\_[^>/]>\)" end="</\z1\_s*>" fold transparent keepend extend containedin=htmlHead,htmlH\d
+ " fold comments (the real ones and the old Netscape ones)
+ if exists("html_wrong_comments")
+ syn region htmlComment start=+<!--+ end=+--\s*>\%(\n\s*<!--\)\@!+ contains=@Spell fold
+ endif
+endif
+
+" The default highlighting.
+hi def link htmlTag Function
+hi def link htmlEndTag Identifier
+hi def link htmlArg Type
+hi def link htmlTagName htmlStatement
+hi def link htmlSpecialTagName Exception
+hi def link htmlMathTagName htmlTagName
+hi def link htmlSvgTagName htmlTagName
+hi def link htmlValue String
+hi def link htmlSpecialChar Special
+
+if !exists("html_no_rendering")
+ hi def link htmlH1 Title
+ hi def link htmlH2 htmlH1
+ hi def link htmlH3 htmlH2
+ hi def link htmlH4 htmlH3
+ hi def link htmlH5 htmlH4
+ hi def link htmlH6 htmlH5
+ hi def link htmlHead PreProc
+ hi def link htmlTitle Title
+ hi def link htmlBoldItalicUnderline htmlBoldUnderlineItalic
+ hi def link htmlUnderlineBold htmlBoldUnderline
+ hi def link htmlUnderlineItalicBold htmlBoldUnderlineItalic
+ hi def link htmlUnderlineBoldItalic htmlBoldUnderlineItalic
+ hi def link htmlItalicUnderline htmlUnderlineItalic
+ hi def link htmlItalicBold htmlBoldItalic
+ hi def link htmlItalicBoldUnderline htmlBoldUnderlineItalic
+ hi def link htmlItalicUnderlineBold htmlBoldUnderlineItalic
+ hi def link htmlLink Underlined
+ hi def link htmlLeadingSpace None
+ if !exists("html_my_rendering")
+ hi def htmlBold term=bold cterm=bold gui=bold
+ hi def htmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline
+ hi def htmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic
+ hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
+ hi def htmlUnderline term=underline cterm=underline gui=underline
+ hi def htmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline
+ hi def htmlItalic term=italic cterm=italic gui=italic
+ if v:version > 800 || v:version == 800 && has("patch1038")
+ hi def htmlStrike term=strikethrough cterm=strikethrough gui=strikethrough
+ else
+ hi def htmlStrike term=underline cterm=underline gui=underline
+ endif
+ endif
+endif
+
+hi def link htmlPreStmt PreProc
+hi def link htmlPreError Error
+hi def link htmlPreProc PreProc
+hi def link htmlPreAttr String
+hi def link htmlPreProcAttrName PreProc
+hi def link htmlPreProcAttrError Error
+hi def link htmlString String
+hi def link htmlStatement Statement
+hi def link htmlComment Comment
+hi def link htmlCommentNested htmlError
+hi def link htmlCommentError htmlError
+hi def link htmlTagError htmlError
+hi def link htmlEvent javaScript
+hi def link htmlError Error
+
+hi def link javaScript Special
+hi def link javaScriptExpression javaScript
+hi def link htmlCssStyleComment Comment
+hi def link htmlCssDefinition Special
+
+let b:current_syntax = "html"
+
+if main_syntax == 'html'
+ unlet main_syntax
+endif
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/htmlcheetah.vim b/runtime/syntax/htmlcheetah.vim
new file mode 100644
index 0000000..0721c76
--- /dev/null
+++ b/runtime/syntax/htmlcheetah.vim
@@ -0,0 +1,24 @@
+" Vim syntax file
+" Language: HTML with Cheetah tags
+" Maintainer: Max Ischenko <mfi@ukr.net>
+" Last Change: 2003-05-11
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'html'
+endif
+
+runtime! syntax/cheetah.vim
+runtime! syntax/html.vim
+unlet b:current_syntax
+
+syntax cluster htmlPreproc add=cheetahPlaceHolder
+syntax cluster htmlString add=cheetahPlaceHolder
+
+let b:current_syntax = "htmlcheetah"
+
+
diff --git a/runtime/syntax/htmldjango.vim b/runtime/syntax/htmldjango.vim
new file mode 100644
index 0000000..07b1c37
--- /dev/null
+++ b/runtime/syntax/htmldjango.vim
@@ -0,0 +1,26 @@
+" Vim syntax file
+" Language: Django HTML template
+" Maintainer: Dave Hodder <dmh@dmh.org.uk>
+" Last Change: 2014 Jul 13
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'html'
+endif
+
+runtime! syntax/django.vim
+runtime! syntax/html.vim
+unlet b:current_syntax
+
+syn cluster djangoBlocks add=djangoTagBlock,djangoVarBlock,djangoComment,djangoComBlock
+
+syn region djangoTagBlock start="{%" end="%}" contains=djangoStatement,djangoFilter,djangoArgument,djangoTagError display containedin=ALLBUT,@djangoBlocks
+syn region djangoVarBlock start="{{" end="}}" contains=djangoFilter,djangoArgument,djangoVarError display containedin=ALLBUT,@djangoBlocks
+syn region djangoComment start="{%\s*comment\(\s\+.\{-}\)\?%}" end="{%\s*endcomment\s*%}" contains=djangoTodo containedin=ALLBUT,@djangoBlocks
+syn region djangoComBlock start="{#" end="#}" contains=djangoTodo containedin=ALLBUT,@djangoBlocks
+
+let b:current_syntax = "htmldjango"
diff --git a/runtime/syntax/htmlm4.vim b/runtime/syntax/htmlm4.vim
new file mode 100644
index 0000000..ee1f06e
--- /dev/null
+++ b/runtime/syntax/htmlm4.vim
@@ -0,0 +1,31 @@
+" Vim syntax file
+" Language: HTML and M4
+" Maintainer: Claudio Fleiner <claudio@fleiner.com>
+" URL: http://www.fleiner.com/vim/syntax/htmlm4.vim
+" Last Change: 2001 Apr 30
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" we define it here so that included files can test for it
+if !exists("main_syntax")
+ let main_syntax='htmlm4'
+endif
+
+runtime! syntax/html.vim
+unlet b:current_syntax
+syn case match
+
+runtime! syntax/m4.vim
+
+unlet b:current_syntax
+syn cluster htmlPreproc add=@m4Top
+syn cluster m4StringContents add=htmlTag,htmlEndTag
+
+let b:current_syntax = "htmlm4"
+
+if main_syntax == 'htmlm4'
+ unlet main_syntax
+endif
diff --git a/runtime/syntax/htmlos.vim b/runtime/syntax/htmlos.vim
new file mode 100644
index 0000000..b54ca7a
--- /dev/null
+++ b/runtime/syntax/htmlos.vim
@@ -0,0 +1,149 @@
+" Vim syntax file
+" Language: HTML/OS by Aestiva
+" Maintainer: Jason Rust <jrust@westmont.edu>
+" URL: http://www.rustyparts.com/vim/syntax/htmlos.vim
+" Info: http://www.rustyparts.com/scripts.php
+" Last Change: 2003 May 11
+"
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'htmlos'
+endif
+
+runtime! syntax/html.vim
+unlet b:current_syntax
+
+syn cluster htmlPreproc add=htmlosRegion
+
+syn case ignore
+
+" Function names
+syn keyword htmlosFunctions expand sleep getlink version system ascii getascii syslock sysunlock cr lf clean postprep listtorow split listtocol coltolist rowtolist tabletolist contained
+syn keyword htmlosFunctions cut \display cutall cutx cutallx length reverse lower upper proper repeat left right middle trim trimleft trimright count countx locate locatex replace replacex replaceall replaceallx paste pasteleft pasteleftx pasteleftall pasteleftallx pasteright pasterightall pasterightallx chopleft chopleftx chopright choprightx format concat contained
+syn keyword htmlosFunctions goto exitgoto contained
+syn keyword htmlosFunctions layout cols rows row items getitem putitem switchitems gettable delrow delrows delcol delcols append merge fillcol fillrow filltable pastetable getcol getrow fillindexcol insindexcol dups nodups maxtable mintable maxcol mincol maxrow minrow avetable avecol averow mediantable mediancol medianrow producttable productcol productrow sumtable sumcol sumrow sumsqrtable sumsqrcol sumsqrrow reversecols reverserows switchcols switchrows inscols insrows insfillcol sortcol reversesortcol sortcoln reversesortcoln sortrow sortrown reversesortrow reversesortrown getcoleq getcoleqn getcolnoteq getcolany getcolbegin getcolnotany getcolnotbegin getcolge getcolgt getcolle getcollt getcolgen getcolgtn getcollen getcoltn getcolend getcolnotend getrowend getrownotend getcolin getcolnotin getcolinbegin getcolnotinbegin getcolinend getcolnotinend getrowin getrownotin getrowinbegin getrownotinbegin getrowinend getrownotinend contained
+syn keyword htmlosFunctions dbcreate dbadd dbedit dbdelete dbsearch dbsearchsort dbget dbgetsort dbstatus dbindex dbimport dbfill dbexport dbsort dbgetrec dbremove dbpurge dbfind dbfindsort dbunique dbcopy dbmove dbkill dbtransfer dbpoke dbsearchx dbgetx contained
+syn keyword htmlosFunctions syshtmlosname sysstartname sysfixfile fileinfo filelist fileindex domainname page browser regdomain username usernum getenv httpheader copy file ts row sysls syscp sysmv sysmd sysrd filepush filepushlink dirname contained
+syn keyword htmlosFunctions mail to address subject netmail netmailopen netmailclose mailfilelist netweb netwebresults webpush netsockopen netsockread netsockwrite netsockclose contained
+syn keyword htmlosFunctions today time systime now yesterday tomorrow getday getmonth getyear getminute getweekday getweeknum getyearday getdate gettime getamorpm gethour addhours addminutes adddays timebetween timetill timefrom datetill datefrom mixedtimebetween mixeddatetill mixedtimetill mixedtimefrom mixeddatefrom nextdaybyweekfromdate nextdaybyweekfromtoday nextdaybymonthfromdate nextdaybymonthfromtoday nextdaybyyearfromdate nextdaybyyearfromtoday offsetdaybyweekfromdate offsetdaybyweekfromtoday offsetdaybymonthfromdate offsetdaybymonthfromtoday contained
+syn keyword htmlosFunctions isprivate ispublic isfile isdir isblank iserror iserror iseven isodd istrue isfalse islogical istext istag isnumber isinteger isdate istableeq istableeqx istableeqn isfuture ispast istoday isweekday isweekend issamedate iseq isnoteq isge isle ismod10 isvalidstring contained
+syn keyword htmlosFunctions celtof celtokel ftocel ftokel keltocel keltof cmtoin intocm fttom mtoft fttomile miletoft kmtomile miletokm mtoyd ydtom galtoltr ltrtogal ltrtoqt qttoltr gtooz oztog kgtolb lbtokg mttoton tontomt contained
+syn keyword htmlosFunctions max min abs sign inverse square sqrt cube roundsig round ceiling roundup floor rounddown roundeven rounddowneven roundupeven roundodd roundupodd rounddownodd random factorial summand fibonacci remainder mod radians degrees cos sin tan cotan secant cosecant acos asin atan exp power power10 ln log10 log sinh cosh tanh contained
+syn keyword htmlosFunctions xmldelete xmldeletex xmldeleteattr xmldeleteattrx xmledit xmleditx xmleditvalue xmleditvaluex xmleditattr xmleditattrx xmlinsertbefore xmlinsertbeforex smlinsertafter xmlinsertafterx xmlinsertattr xmlinsertattrx smlget xmlgetx xmlgetvalue xmlgetvaluex xmlgetattrvalue xmlgetattrvaluex xmlgetrec xmlgetrecx xmlgetrecattrvalue xmlgetrecattrvaluex xmlchopleftbefore xmlchopleftbeforex xmlchoprightbefore xmlchoprightbeforex xmlchopleftafter xmlchopleftafterx xmlchoprightafter xmlchoprightafterx xmllocatebefore xmllocatebeforex xmllocateafter xmllocateafterx contained
+
+" Type
+syn keyword htmlosType int str dol flt dat grp contained
+
+" StorageClass
+syn keyword htmlosStorageClass locals contained
+
+" Operator
+syn match htmlosOperator "[-=+/\*!]" contained
+syn match htmlosRelation "[~]" contained
+syn match htmlosRelation "[=~][&!]" contained
+syn match htmlosRelation "[!=<>]=" contained
+syn match htmlosRelation "[<>]" contained
+
+" Comment
+syn region htmlosComment start="#" end="/#" contained
+
+" Conditional
+syn keyword htmlosConditional if then /if to else elif contained
+syn keyword htmlosConditional and or nand nor xor not contained
+" Repeat
+syn keyword htmlosRepeat while do /while for /for contained
+
+" Keyword
+syn keyword htmlosKeyword name value step do rowname colname rownum contained
+
+" Repeat
+syn keyword htmlosLabel case matched /case switch contained
+
+" Statement
+syn keyword htmlosStatement break exit return continue contained
+
+" Identifier
+syn match htmlosIdentifier "\h\w*[\.]*\w*" contained
+
+" Special identifier
+syn match htmlosSpecialIdentifier "[\$@]" contained
+
+" Define
+syn keyword htmlosDefine function overlay contained
+
+" Boolean
+syn keyword htmlosBoolean true false contained
+
+" String
+syn region htmlosStringDouble keepend matchgroup=None start=+"+ end=+"+ contained
+syn region htmlosStringSingle keepend matchgroup=None start=+'+ end=+'+ contained
+
+" Number
+syn match htmlosNumber "-\=\<\d\+\>" contained
+
+" Float
+syn match htmlosFloat "\(-\=\<\d+\|-\=\)\.\d\+\>" contained
+
+" Error
+syn match htmlosError "ERROR" contained
+
+" Parent
+syn match htmlosParent "[({[\]})]" contained
+
+" Todo
+syn keyword htmlosTodo TODO Todo todo contained
+
+syn cluster htmlosInside contains=htmlosComment,htmlosFunctions,htmlosIdentifier,htmlosSpecialIdentifier,htmlosConditional,htmlosRepeat,htmlosLabel,htmlosStatement,htmlosOperator,htmlosRelation,htmlosStringSingle,htmlosStringDouble,htmlosNumber,htmlosFloat,htmlosError,htmlosKeyword,htmlosType,htmlosBoolean,htmlosParent
+
+syn cluster htmlosTop contains=@htmlosInside,htmlosDefine,htmlosError,htmlosStorageClass
+
+syn region htmlosRegion keepend matchgroup=Delimiter start="<<" skip=+".\{-}?>.\{-}"\|'.\{-}?>.\{-}'\|/\*.\{-}?>.\{-}\*/+ end=">>" contains=@htmlosTop
+syn region htmlosRegion keepend matchgroup=Delimiter start="\[\[" skip=+".\{-}?>.\{-}"\|'.\{-}?>.\{-}'\|/\*.\{-}?>.\{-}\*/+ end="\]\]" contains=@htmlosTop
+
+
+" sync
+if exists("htmlos_minlines")
+ exec "syn sync minlines=" . htmlos_minlines
+else
+ syn sync minlines=100
+endif
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later
+hi def link htmlosSpecialIdentifier Operator
+hi def link htmlosIdentifier Identifier
+hi def link htmlosStorageClass StorageClass
+hi def link htmlosComment Comment
+hi def link htmlosBoolean Boolean
+hi def link htmlosStringSingle String
+hi def link htmlosStringDouble String
+hi def link htmlosNumber Number
+hi def link htmlosFloat Float
+hi def link htmlosFunctions Function
+hi def link htmlosRepeat Repeat
+hi def link htmlosConditional Conditional
+hi def link htmlosLabel Label
+hi def link htmlosStatement Statement
+hi def link htmlosKeyword Statement
+hi def link htmlosType Type
+hi def link htmlosDefine Define
+hi def link htmlosParent Delimiter
+hi def link htmlosError Error
+hi def link htmlosTodo Todo
+hi def link htmlosOperator Operator
+hi def link htmlosRelation Operator
+
+let b:current_syntax = "htmlos"
+
+if main_syntax == 'htmlos'
+ unlet main_syntax
+endif
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/i3config.vim b/runtime/syntax/i3config.vim
new file mode 100644
index 0000000..caef244
--- /dev/null
+++ b/runtime/syntax/i3config.vim
@@ -0,0 +1,264 @@
+" Vim syntax file
+" Language: i3 config file
+" Original Author: Mohamed Boughaba <mohamed dot bgb at gmail dot com>
+" Maintainer: Quentin Hibon (github user hiqua)
+" Version: 0.4
+" Last Change: 2022 Jun 05
+
+" References:
+" http://i3wm.org/docs/userguide.html#configuring
+" http://vimdoc.sourceforge.net/htmldoc/syntax.html
+"
+"
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+scriptencoding utf-8
+
+" Error
+syn match i3ConfigError /.*/
+
+" Todo
+syn keyword i3ConfigTodo TODO FIXME XXX contained
+
+" Comment
+" Comments are started with a # and can only be used at the beginning of a line
+syn match i3ConfigComment /^\s*#.*$/ contains=i3ConfigTodo
+
+" Font
+" A FreeType font description is composed by:
+" a font family, a style, a weight, a variant, a stretch and a size.
+syn match i3ConfigFontSeparator /,/ contained
+syn match i3ConfigFontSeparator /:/ contained
+syn keyword i3ConfigFontKeyword font contained
+syn match i3ConfigFontNamespace /\w\+:/ contained contains=i3ConfigFontSeparator
+syn match i3ConfigFontContent /-\?\w\+\(-\+\|\s\+\|,\)/ contained contains=i3ConfigFontNamespace,i3ConfigFontSeparator,i3ConfigFontKeyword
+syn match i3ConfigFontSize /\s\=\d\+\(px\)\?\s\?$/ contained
+syn match i3ConfigFont /^\s*font\s\+.*$/ contains=i3ConfigFontContent,i3ConfigFontSeparator,i3ConfigFontSize,i3ConfigFontNamespace
+syn match i3ConfigFont /^\s*font\s\+.*\(\\\_.*\)\?$/ contains=i3ConfigFontContent,i3ConfigFontSeparator,i3ConfigFontSize,i3ConfigFontNamespace
+syn match i3ConfigFont /^\s*font\s\+.*\(\\\_.*\)\?[^\\]\+$/ contains=i3ConfigFontContent,i3ConfigFontSeparator,i3ConfigFontSize,i3ConfigFontNamespace
+syn match i3ConfigFont /^\s*font\s\+\(\(.*\\\_.*\)\|\(.*[^\\]\+$\)\)/ contains=i3ConfigFontContent,i3ConfigFontSeparator,i3ConfigFontSize,i3ConfigFontNamespace
+
+" variables
+syn match i3ConfigString /\(['"]\)\(.\{-}\)\1/ contained
+syn match i3ConfigColor /#\w\{6}/ contained
+syn match i3ConfigVariableModifier /+/ contained
+syn match i3ConfigVariableAndModifier /+\w\+/ contained contains=i3ConfigVariableModifier
+syn match i3ConfigVariable /\$\w\+\(\(-\w\+\)\+\)\?\(\s\|+\)\?/ contains=i3ConfigVariableModifier,i3ConfigVariableAndModifier
+syn keyword i3ConfigInitializeKeyword set contained
+syn match i3ConfigInitialize /^\s*set\s\+.*$/ contains=i3ConfigVariable,i3ConfigInitializeKeyword,i3ConfigColor,i3ConfigString
+
+" Include
+syn keyword i3ConfigIncludeKeyword include contained
+syn match i3ConfigInclude /^\s*include\s\+.*$/ contains=i3ConfigIncludeKeyword,i3ConfigString,i3ConfigVariable
+
+" Gaps
+syn keyword i3ConfigGapStyleKeyword inner outer horizontal vertical top right bottom left current all set plus minus toggle up down contained
+syn match i3ConfigGapStyle /^\s*\(gaps\)\s\+\(inner\|outer\|horizontal\|vertical\|left\|top\|right\|bottom\)\(\s\+\(current\|all\)\)\?\(\s\+\(set\|plus\|minus\|toggle\)\)\?\(\s\+\(-\?\d\+\|\$.*\)\)$/ contains=i3ConfigGapStyleKeyword,i3ConfigNumber,i3ConfigVariable
+syn keyword i3ConfigSmartGapKeyword on inverse_outer off contained
+syn match i3ConfigSmartGap /^\s*smart_gaps\s\+\(on\|inverse_outer\|off\)\s\?$/ contains=i3ConfigSmartGapKeyword
+syn keyword i3ConfigSmartBorderKeyword on no_gaps contained
+syn match i3ConfigSmartBorder /^\s*smart_borders\s\+\(on\|no_gaps\)\s\?$/ contains=i3ConfigSmartBorderKeyword
+
+" Keyboard bindings
+syn keyword i3ConfigAction toggle fullscreen restart key import kill shrink grow contained
+syn keyword i3ConfigAction focus move grow height width split layout resize restore reload mute unmute exit mode workspace container to contained
+syn match i3ConfigModifier /\w\++\w\+\(\(+\w\+\)\+\)\?/ contained contains=i3ConfigVariableModifier
+syn match i3ConfigNumber /\s\d\+/ contained
+syn match i3ConfigUnit /\sp\(pt\|x\)/ contained
+syn match i3ConfigUnitOr /\sor/ contained
+syn keyword i3ConfigBindKeyword bindsym bindcode exec gaps border contained
+syn match i3ConfigBindArgument /--\w\+\(\(-\w\+\)\+\)\?\s/ contained
+syn match i3ConfigBind /^\s*\(bindsym\|bindcode\)\s\+.*$/ contains=i3ConfigVariable,i3ConfigBindKeyword,i3ConfigVariableAndModifier,i3ConfigNumber,i3ConfigUnit,i3ConfigUnitOr,i3ConfigBindArgument,i3ConfigModifier,i3ConfigAction,i3ConfigString,i3ConfigGapStyleKeyword,i3ConfigBorderStyleKeyword
+
+" Floating
+syn keyword i3ConfigSizeSpecial x contained
+syn match i3ConfigNegativeSize /-/ contained
+syn match i3ConfigSize /-\?\d\+\s\?x\s\?-\?\d\+/ contained contains=i3ConfigSizeSpecial,i3ConfigNumber,i3ConfigNegativeSize
+syn match i3ConfigFloatingModifier /^\s*floating_modifier\s\+\$\w\+\d\?/ contains=i3ConfigVariable
+syn match i3ConfigFloating /^\s*floating_\(maximum\|minimum\)_size\s\+-\?\d\+\s\?x\s\?-\?\d\+/ contains=i3ConfigSize
+
+" Orientation
+syn keyword i3ConfigOrientationKeyword vertical horizontal auto contained
+syn match i3ConfigOrientation /^\s*default_orientation\s\+\(vertical\|horizontal\|auto\)\s\?$/ contains=i3ConfigOrientationKeyword
+
+" Layout
+syn keyword i3ConfigLayoutKeyword default stacking tabbed contained
+syn match i3ConfigLayout /^\s*workspace_layout\s\+\(default\|stacking\|tabbed\)\s\?$/ contains=i3ConfigLayoutKeyword
+
+" Border style
+syn keyword i3ConfigBorderStyleKeyword none normal pixel contained
+syn match i3ConfigBorderStyle /^\s*\(new_window\|new_float\|default_border\|default_floating_border\)\s\+\(none\|\(normal\|pixel\)\(\s\+\d\+\)\?\(\s\+\$\w\+\(\(-\w\+\)\+\)\?\(\s\|+\)\?\)\?\)\s\?$/ contains=i3ConfigBorderStyleKeyword,i3ConfigNumber,i3ConfigVariable
+
+" Hide borders and edges
+syn keyword i3ConfigEdgeKeyword none vertical horizontal both smart smart_no_gaps contained
+syn match i3ConfigEdge /^\s*hide_edge_borders\s\+\(none\|vertical\|horizontal\|both\|smart\|smart_no_gaps\)\s\?$/ contains=i3ConfigEdgeKeyword
+
+" Arbitrary commands for specific windows (for_window)
+syn keyword i3ConfigCommandKeyword for_window contained
+syn region i3ConfigWindowStringSpecial start=+"+ skip=+\\"+ end=+"+ contained contains=i3ConfigString
+syn region i3ConfigWindowCommandSpecial start="\[" end="\]" contained contains=i3ConfigWindowStringSpacial,i3ConfigString
+syn match i3ConfigArbitraryCommand /^\s*for_window\s\+.*$/ contains=i3ConfigWindowCommandSpecial,i3ConfigCommandKeyword,i3ConfigBorderStyleKeyword,i3ConfigLayoutKeyword,i3ConfigOrientationKeyword,Size,i3ConfigNumber
+
+" Disable focus open opening
+syn keyword i3ConfigNoFocusKeyword no_focus contained
+syn match i3ConfigDisableFocus /^\s*no_focus\s\+.*$/ contains=i3ConfigWindowCommandSpecial,i3ConfigNoFocusKeyword
+
+" Move client to specific workspace automatically
+syn keyword i3ConfigAssignKeyword assign contained
+syn match i3ConfigAssignSpecial /→/ contained
+syn match i3ConfigAssign /^\s*assign\s\+.*$/ contains=i3ConfigAssignKeyword,i3ConfigWindowCommandSpecial,i3ConfigAssignSpecial
+
+" X resources
+syn keyword i3ConfigResourceKeyword set_from_resource contained
+syn match i3ConfigResource /^\s*set_from_resource\s\+.*$/ contains=i3ConfigResourceKeyword,i3ConfigWindowCommandSpecial,i3ConfigColor,i3ConfigVariable
+
+" Auto start applications
+syn keyword i3ConfigExecKeyword exec exec_always contained
+syn match i3ConfigNoStartupId /--no-startup-id/ contained " We are not using i3ConfigBindArgument as only no-startup-id is supported here
+syn match i3ConfigExec /^\s*exec\(_always\)\?\s\+.*$/ contains=i3ConfigExecKeyword,i3ConfigNoStartupId,i3ConfigString
+
+" Automatically putting workspaces on specific screens
+syn keyword i3ConfigWorkspaceKeyword workspace contained
+syn keyword i3ConfigOutput output contained
+syn match i3ConfigWorkspace /^\s*workspace\s\+.*$/ contains=i3ConfigWorkspaceKeyword,i3ConfigNumber,i3ConfigString,i3ConfigOutput
+
+" Changing colors
+syn keyword i3ConfigClientColorKeyword client focused focused_inactive unfocused urgent placeholder background contained
+syn match i3ConfigClientColor /^\s*client.\w\+\s\+.*$/ contains=i3ConfigClientColorKeyword,i3ConfigColor,i3ConfigVariable
+
+syn keyword i3ConfigTitleAlignKeyword left center right contained
+syn match i3ConfigTitleAlign /^\s*title_align\s\+.*$/ contains=i3ConfigTitleAlignKeyword
+
+" Interprocess communication
+syn match i3ConfigInterprocessKeyword /ipc-socket/ contained
+syn match i3ConfigInterprocess /^\s*ipc-socket\s\+.*$/ contains=i3ConfigInterprocessKeyword
+
+" Mouse warping
+syn keyword i3ConfigMouseWarpingKeyword mouse_warping contained
+syn keyword i3ConfigMouseWarpingType output none contained
+syn match i3ConfigMouseWarping /^\s*mouse_warping\s\+\(output\|none\)\s\?$/ contains=i3ConfigMouseWarpingKeyword,i3ConfigMouseWarpingType
+
+" Focus follows mouse
+syn keyword i3ConfigFocusFollowsMouseKeyword focus_follows_mouse contained
+syn keyword i3ConfigFocusFollowsMouseType yes no contained
+syn match i3ConfigFocusFollowsMouse /^\s*focus_follows_mouse\s\+\(yes\|no\)\s\?$/ contains=i3ConfigFocusFollowsMouseKeyword,i3ConfigFocusFollowsMouseType
+
+" Popups during fullscreen mode
+syn keyword i3ConfigPopupOnFullscreenKeyword popup_during_fullscreen contained
+syn keyword i3ConfigPopuponFullscreenType smart ignore leave_fullscreen contained
+syn match i3ConfigPopupOnFullscreen /^\s*popup_during_fullscreen\s\+\w\+\s\?$/ contains=i3ConfigPopupOnFullscreenKeyword,i3ConfigPopupOnFullscreenType
+
+" Focus wrapping
+syn keyword i3ConfigFocusWrappingKeyword force_focus_wrapping focus_wrapping contained
+syn keyword i3ConfigFocusWrappingType yes no contained
+syn match i3ConfigFocusWrapping /^\s*\(force_\)\?focus_wrapping\s\+\(yes\|no\)\s\?$/ contains=i3ConfigFocusWrappingType,i3ConfigFocusWrappingKeyword
+
+" Forcing Xinerama
+syn keyword i3ConfigForceXineramaKeyword force_xinerama contained
+syn match i3ConfigForceXinerama /^\s*force_xinerama\s\+\(yes\|no\)\s\?$/ contains=i3ConfigFocusWrappingType,i3ConfigForceXineramaKeyword
+
+" Automatic back-and-forth when switching to the current workspace
+syn keyword i3ConfigAutomaticSwitchKeyword workspace_auto_back_and_forth contained
+syn match i3ConfigAutomaticSwitch /^\s*workspace_auto_back_and_forth\s\+\(yes\|no\)\s\?$/ contains=i3ConfigFocusWrappingType,i3ConfigAutomaticSwitchKeyword
+
+" Delay urgency hint
+syn keyword i3ConfigTimeUnit ms contained
+syn keyword i3ConfigDelayUrgencyKeyword force_display_urgency_hint contained
+syn match i3ConfigDelayUrgency /^\s*force_display_urgency_hint\s\+\d\+\s\+ms\s\?$/ contains=i3ConfigFocusWrappingType,i3ConfigDelayUrgencyKeyword,i3ConfigNumber,i3ConfigTimeUnit
+
+" Focus on window activation
+syn keyword i3ConfigFocusOnActivationKeyword focus_on_window_activation contained
+syn keyword i3ConfigFocusOnActivationType smart urgent focus none contained
+syn match i3ConfigFocusOnActivation /^\s*focus_on_window_activation\s\+\(smart\|urgent\|focus\|none\)\s\?$/ contains=i3ConfigFocusOnActivationKeyword,i3ConfigFocusOnActivationType
+
+" Automatic back-and-forth when switching to the current workspace
+syn keyword i3ConfigDrawingMarksKeyword show_marks contained
+syn match i3ConfigDrawingMarks /^\s*show_marks\s\+\(yes\|no\)\s\?$/ contains=i3ConfigFocusWrappingType,i3ConfigDrawingMarksKeyword
+
+" Group mode/bar
+syn keyword i3ConfigBlockKeyword mode bar colors i3bar_command status_command position exec mode hidden_state modifier id position output background statusline tray_output tray_padding separator separator_symbol workspace_min_width workspace_buttons strip_workspace_numbers binding_mode_indicator focused_workspace active_workspace inactive_workspace urgent_workspace binding_mode contained
+syn region i3ConfigBlock start=+^\s*[^#]*s\?{$+ end=+^\s*[^#]*}$+ contains=i3ConfigBlockKeyword,i3ConfigString,i3ConfigBind,i3ConfigComment,i3ConfigFont,i3ConfigFocusWrappingType,i3ConfigColor,i3ConfigVariable transparent keepend extend
+
+" Line continuation
+syn region i3ConfigLineCont start=/^.*\\$/ end=/^.*$/ contains=i3ConfigBlockKeyword,i3ConfigString,i3ConfigBind,i3ConfigComment,i3ConfigFont,i3ConfigFocusWrappingType,i3ConfigColor,i3ConfigVariable transparent keepend extend
+
+" Define the highlighting.
+hi def link i3ConfigError Error
+hi def link i3ConfigTodo Todo
+hi def link i3ConfigComment Comment
+hi def link i3ConfigFontContent Type
+hi def link i3ConfigFocusOnActivationType Type
+hi def link i3ConfigPopupOnFullscreenType Type
+hi def link i3ConfigOrientationKeyword Type
+hi def link i3ConfigMouseWarpingType Type
+hi def link i3ConfigFocusFollowsMouseType Type
+hi def link i3ConfigGapStyleKeyword Type
+hi def link i3ConfigTitleAlignKeyword Type
+hi def link i3ConfigSmartGapKeyword Type
+hi def link i3ConfigSmartBorderKeyword Type
+hi def link i3ConfigLayoutKeyword Type
+hi def link i3ConfigBorderStyleKeyword Type
+hi def link i3ConfigEdgeKeyword Type
+hi def link i3ConfigAction Type
+hi def link i3ConfigCommand Type
+hi def link i3ConfigOutput Type
+hi def link i3ConfigWindowCommandSpecial Type
+hi def link i3ConfigFocusWrappingType Type
+hi def link i3ConfigUnitOr Type
+hi def link i3ConfigFontSize Constant
+hi def link i3ConfigColor Constant
+hi def link i3ConfigNumber Constant
+hi def link i3ConfigUnit Constant
+hi def link i3ConfigVariableAndModifier Constant
+hi def link i3ConfigTimeUnit Constant
+hi def link i3ConfigModifier Constant
+hi def link i3ConfigString Constant
+hi def link i3ConfigNegativeSize Constant
+hi def link i3ConfigInclude Constant
+hi def link i3ConfigFontSeparator Special
+hi def link i3ConfigVariableModifier Special
+hi def link i3ConfigSizeSpecial Special
+hi def link i3ConfigWindowSpecial Special
+hi def link i3ConfigAssignSpecial Special
+hi def link i3ConfigFontNamespace PreProc
+hi def link i3ConfigBindArgument PreProc
+hi def link i3ConfigNoStartupId PreProc
+hi def link i3ConfigIncludeKeyword Identifier
+hi def link i3ConfigFontKeyword Identifier
+hi def link i3ConfigBindKeyword Identifier
+hi def link i3ConfigOrientation Identifier
+hi def link i3ConfigGapStyle Identifier
+hi def link i3ConfigTitleAlign Identifier
+hi def link i3ConfigSmartGap Identifier
+hi def link i3ConfigSmartBorder Identifier
+hi def link i3ConfigLayout Identifier
+hi def link i3ConfigBorderStyle Identifier
+hi def link i3ConfigEdge Identifier
+hi def link i3ConfigFloating Identifier
+hi def link i3ConfigFloatingModifier Identifier
+hi def link i3ConfigCommandKeyword Identifier
+hi def link i3ConfigNoFocusKeyword Identifier
+hi def link i3ConfigInitializeKeyword Identifier
+hi def link i3ConfigAssignKeyword Identifier
+hi def link i3ConfigResourceKeyword Identifier
+hi def link i3ConfigExecKeyword Identifier
+hi def link i3ConfigWorkspaceKeyword Identifier
+hi def link i3ConfigClientColorKeyword Identifier
+hi def link i3ConfigInterprocessKeyword Identifier
+hi def link i3ConfigMouseWarpingKeyword Identifier
+hi def link i3ConfigFocusFollowsMouseKeyword Identifier
+hi def link i3ConfigPopupOnFullscreenKeyword Identifier
+hi def link i3ConfigFocusWrappingKeyword Identifier
+hi def link i3ConfigForceXineramaKeyword Identifier
+hi def link i3ConfigAutomaticSwitchKeyword Identifier
+hi def link i3ConfigDelayUrgencyKeyword Identifier
+hi def link i3ConfigFocusOnActivationKeyword Identifier
+hi def link i3ConfigDrawingMarksKeyword Identifier
+hi def link i3ConfigBlockKeyword Identifier
+hi def link i3ConfigVariable Statement
+hi def link i3ConfigArbitraryCommand Type
+
+let b:current_syntax = "i3config"
diff --git a/runtime/syntax/ia64.vim b/runtime/syntax/ia64.vim
new file mode 100644
index 0000000..2ff4606
--- /dev/null
+++ b/runtime/syntax/ia64.vim
@@ -0,0 +1,293 @@
+" Vim syntax file
+" Language: IA-64 (Itanium) assembly language
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Parth Malwankar <pmalwankar@yahoo.com>
+" File Version: 0.8
+" Last Change: 2020 Sep 25
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+"ignore case for assembly
+syn case ignore
+
+syn sync minlines=5
+
+" Read the MASM syntax to start with
+" This is needed as both IA-64 as well as IA-32 instructions are supported
+source <sfile>:p:h/masm.vim
+
+" Identifier Keyword characters (defines \k)
+syn iskeyword @,48-57,#,$,.,:,?,@-@,_,~
+
+syn region ia64Comment start="//" end="$" contains=ia64Todo
+syn region ia64Comment start="/\*" end="\*/" contains=ia64Todo
+
+syn match ia64Identifier "[a-zA-Z_$][a-zA-Z0-9_$]*"
+syn match ia64Directive "\.[a-zA-Z_$][a-zA-Z_$.]\+"
+syn match ia64Label "[a-zA-Z_$.][a-zA-Z0-9_$.]*\s\=:\>"he=e-1
+syn match ia64Label "[a-zA-Z_$.][a-zA-Z0-9_$.]*\s\=::\>"he=e-2
+syn match ia64Label "[a-zA-Z_$.][a-zA-Z0-9_$.]*\s\=#\>"he=e-1
+syn region ia64string start=+L\="+ skip=+\\\\\|\\"+ end=+"+
+syn match ia64Octal "0[0-7_]*\>"
+syn match ia64Binary "0[bB][01_]*\>"
+syn match ia64Hex "0[xX][0-9a-fA-F_]*\>"
+syn match ia64Decimal "[1-9_][0-9_]*\>"
+syn match ia64Float "[0-9_]*\.[0-9_]*\([eE][+-]\=[0-9_]*\)\=\>"
+
+"simple instructions
+syn keyword ia64opcode add adds addl addp4 alloc and andcm cover epc
+syn keyword ia64opcode fabs fand fandcm fc flushrs fneg fnegabs for
+syn keyword ia64opcode fpabs fpack fpneg fpnegabs fselect fand fabdcm
+syn keyword ia64opcode fc fwb fxor loadrs movl mux1 mux2 or padd4
+syn keyword ia64opcode pavgsub1 pavgsub2 popcnt psad1 pshl2 pshl4 pshladd2
+syn keyword ia64opcode pshradd2 psub4 rfi rsm rum shl shladd shladdp4
+syn keyword ia64opcode shrp ssm sub sum sync.i tak thash
+syn keyword ia64opcode tpa ttag xor
+
+"put to override these being recognized as floats. They are orignally from masm.vim
+"put here to avoid confusion with float
+syn match ia64Directive "\.186"
+syn match ia64Directive "\.286"
+syn match ia64Directive "\.286c"
+syn match ia64Directive "\.286p"
+syn match ia64Directive "\.287"
+syn match ia64Directive "\.386"
+syn match ia64Directive "\.386c"
+syn match ia64Directive "\.386p"
+syn match ia64Directive "\.387"
+syn match ia64Directive "\.486"
+syn match ia64Directive "\.486c"
+syn match ia64Directive "\.486p"
+syn match ia64Directive "\.8086"
+syn match ia64Directive "\.8087"
+
+
+
+"delimiters
+syn match ia64delimiter ";;"
+
+"operators
+syn match ia64operators "[\[\]()#,]"
+syn match ia64operators "\(+\|-\|=\)"
+
+"TODO
+syn match ia64Todo "\(TODO\|XXX\|FIXME\|NOTE\)"
+
+"What follows is a long list of regular expressions for parsing the
+"ia64 instructions that use many completers
+
+"br
+syn match ia64opcode "br\(\(\.\(cond\|call\|ret\|ia\|cloop\|ctop\|cexit\|wtop\|wexit\)\)\=\(\.\(spnt\|dpnt\|sptk\|dptk\)\)\=\(\.few\|\.many\)\=\(\.clr\)\=\)\=\>"
+"break
+syn match ia64opcode "break\(\.[ibmfx]\)\=\>"
+"brp
+syn match ia64opcode "brp\(\.\(sptk\|dptk\|loop\|exit\)\)\(\.imp\)\=\>"
+syn match ia64opcode "brp\.ret\(\.\(sptk\|dptk\)\)\{1}\(\.imp\)\=\>"
+"bsw
+syn match ia64opcode "bsw\.[01]\>"
+"chk
+syn match ia64opcode "chk\.\(s\(\.[im]\)\=\)\>"
+syn match ia64opcode "chk\.a\.\(clr\|nc\)\>"
+"clrrrb
+syn match ia64opcode "clrrrb\(\.pr\)\=\>"
+"cmp/cmp4
+syn match ia64opcode "cmp4\=\.\(eq\|ne\|l[te]\|g[te]\|[lg]tu\|[lg]eu\)\(\.unc\)\=\>"
+syn match ia64opcode "cmp4\=\.\(eq\|[lgn]e\|[lg]t\)\.\(\(or\(\.andcm\|cm\)\=\)\|\(and\(\(\.or\)\=cm\)\=\)\)\>"
+"cmpxchg
+syn match ia64opcode "cmpxchg[1248]\.\(acq\|rel\)\(\.nt1\|\.nta\)\=\>"
+"czx
+syn match ia64opcode "czx[12]\.[lr]\>"
+"dep
+syn match ia64opcode "dep\(\.z\)\=\>"
+"extr
+syn match ia64opcode "extr\(\.u\)\=\>"
+"fadd
+syn match ia64opcode "fadd\(\.[sd]\)\=\(\.s[0-3]\)\=\>"
+"famax/famin
+syn match ia64opcode "fa\(max\|min\)\(\.s[0-3]\)\=\>"
+"fchkf/fmax/fmin
+syn match ia64opcode "f\(chkf\|max\|min\)\(\.s[0-3]\)\=\>"
+"fclass
+syn match ia64opcode "fclass\(\.n\=m\)\(\.unc\)\=\>"
+"fclrf/fpamax
+syn match ia64opcode "f\(clrf\|pamax\|pamin\)\(\.s[0-3]\)\=\>"
+"fcmp
+syn match ia64opcode "fcmp\.\(n\=[lg][te]\|n\=eq\|\(un\)\=ord\)\(\.unc\)\=\(\.s[0-3]\)\=\>"
+"fcvt/fcvt.xf/fcvt.xuf.pc.sf
+syn match ia64opcode "fcvt\.\(\(fxu\=\(\.trunc\)\=\(\.s[0-3]\)\=\)\|\(xf\|xuf\(\.[sd]\)\=\(\.s[0-3]\)\=\)\)\>"
+"fetchadd
+syn match ia64opcode "fetchadd[48]\.\(acq\|rel\)\(\.nt1\|\.nta\)\=\>"
+"fma/fmpy/fms
+syn match ia64opcode "fm\([as]\|py\)\(\.[sd]\)\=\(\.s[0-3]\)\=\>"
+"fmerge/fpmerge
+syn match ia64opcode "fp\=merge\.\(ns\|se\=\)\>"
+"fmix
+syn match ia64opcode "fmix\.\(lr\|[lr]\)\>"
+"fnma/fnorm/fnmpy
+syn match ia64opcode "fn\(ma\|mpy\|orm\)\(\.[sd]\)\=\(\.s[0-3]\)\=\>"
+"fpcmp
+syn match ia64opcode "fpcmp\.\(n\=[lg][te]\|n\=eq\|\(un\)\=ord\)\(\.s[0-3]\)\=\>"
+"fpcvt
+syn match ia64opcode "fpcvt\.fxu\=\(\(\.trunc\)\=\(\.s[0-3]\)\=\)\>"
+"fpma/fpmax/fpmin/fpmpy/fpms/fpnma/fpnmpy/fprcpa/fpsqrta
+syn match ia64opcode "fp\(max\=\|min\|n\=mpy\|ms\|nma\|rcpa\|sqrta\)\(\.s[0-3]\)\=\>"
+"frcpa/frsqrta
+syn match ia64opcode "fr\(cpa\|sqrta\)\(\.s[0-3]\)\=\>"
+"fsetc/famin/fchkf
+syn match ia64opcode "f\(setc\|amin\|chkf\)\(\.s[0-3]\)\=\>"
+"fsub
+syn match ia64opcode "fsub\(\.[sd]\)\=\(\.s[0-3]\)\=\>"
+"fswap
+syn match ia64opcode "fswap\(\.n[lr]\=\)\=\>"
+"fsxt
+syn match ia64opcode "fsxt\.[lr]\>"
+"getf
+syn match ia64opcode "getf\.\([sd]\|exp\|sig\)\>"
+"invala
+syn match ia64opcode "invala\(\.[ae]\)\=\>"
+"itc/itr
+syn match ia64opcode "it[cr]\.[id]\>"
+"ld
+syn match ia64opcode "ld[1248]\>\|ld[1248]\(\.\(sa\=\|a\|c\.\(nc\|clr\(\.acq\)\=\)\|acq\|bias\)\)\=\(\.nt[1a]\)\=\>"
+syn match ia64opcode "ld8\.fill\(\.nt[1a]\)\=\>"
+"ldf
+syn match ia64opcode "ldf[sde8]\(\(\.\(sa\=\|a\|c\.\(nc\|clr\)\)\)\=\(\.nt[1a]\)\=\)\=\>"
+syn match ia64opcode "ldf\.fill\(\.nt[1a]\)\=\>"
+"ldfp
+syn match ia64opcode "ldfp[sd8]\(\(\.\(sa\=\|a\|c\.\(nc\|clr\)\)\)\=\(\.nt[1a]\)\=\)\=\>"
+"lfetch
+syn match ia64opcode "lfetch\(\.fault\(\.excl\)\=\|\.excl\)\=\(\.nt[12a]\)\=\>"
+"mf
+syn match ia64opcode "mf\(\.a\)\=\>"
+"mix
+syn match ia64opcode "mix[124]\.[lr]\>"
+"mov
+syn match ia64opcode "mov\(\.[im]\)\=\>"
+syn match ia64opcode "mov\(\.ret\)\=\(\(\.sptk\|\.dptk\)\=\(\.imp\)\=\)\=\>"
+"nop
+syn match ia64opcode "nop\(\.[ibmfx]\)\=\>"
+"pack
+syn match ia64opcode "pack\(2\.[su]ss\|4\.sss\)\>"
+"padd //padd4 added to keywords
+syn match ia64opcode "padd[12]\(\.\(sss\|uus\|uuu\)\)\=\>"
+"pavg
+syn match ia64opcode "pavg[12]\(\.raz\)\=\>"
+"pcmp
+syn match ia64opcode "pcmp[124]\.\(eq\|gt\)\>"
+"pmax/pmin
+syn match ia64opcode "pm\(ax\|in\)\(\(1\.u\)\|2\)\>"
+"pmpy
+syn match ia64opcode "pmpy2\.[rl]\>"
+"pmpyshr
+syn match ia64opcode "pmpyshr2\(\.u\)\=\>"
+"probe
+syn match ia64opcode "probe\.[rw]\>"
+syn match ia64opcode "probe\.\(\(r\|w\|rw\)\.fault\)\>"
+"pshr
+syn match ia64opcode "pshr[24]\(\.u\)\=\>"
+"psub
+syn match ia64opcode "psub[12]\(\.\(sss\|uu[su]\)\)\=\>"
+"ptc
+syn match ia64opcode "ptc\.\(l\|e\|ga\=\)\>"
+"ptr
+syn match ia64opcode "ptr\.\(d\|i\)\>"
+"setf
+syn match ia64opcode "setf\.\(s\|d\|exp\|sig\)\>"
+"shr
+syn match ia64opcode "shr\(\.u\)\=\>"
+"srlz
+syn match ia64opcode "srlz\(\.[id]\)\>"
+"st
+syn match ia64opcode "st[1248]\(\.rel\)\=\(\.nta\)\=\>"
+syn match ia64opcode "st8\.spill\(\.nta\)\=\>"
+"stf
+syn match ia64opcode "stf[1248]\(\.nta\)\=\>"
+syn match ia64opcode "stf\.spill\(\.nta\)\=\>"
+"sxt
+syn match ia64opcode "sxt[124]\>"
+"tbit/tnat
+syn match ia64opcode "t\(bit\|nat\)\(\.nz\|\.z\)\=\(\.\(unc\|or\(\.andcm\|cm\)\=\|and\(\.orcm\|cm\)\=\)\)\=\>"
+"unpack
+syn match ia64opcode "unpack[124]\.[lh]\>"
+"xchq
+syn match ia64opcode "xchg[1248]\(\.nt[1a]\)\=\>"
+"xma/xmpy
+syn match ia64opcode "xm\(a\|py\)\.[lh]u\=\>"
+"zxt
+syn match ia64opcode "zxt[124]\>"
+
+
+"The regex for different ia64 registers are given below
+
+"limits the rXXX and fXXX and cr suffix in the range 0-127
+syn match ia64registers "\([fr]\|cr\)\([0-9]\|[1-9][0-9]\|1[0-1][0-9]\|12[0-7]\)\{1}\>"
+"branch ia64registers
+syn match ia64registers "b[0-7]\>"
+"predicate ia64registers
+syn match ia64registers "p\([0-9]\|[1-5][0-9]\|6[0-3]\)\>"
+"application ia64registers
+syn match ia64registers "ar\.\(fpsr\|mat\|unat\|rnat\|pfs\|bsp\|bspstore\|rsc\|lc\|ec\|ccv\|itc\|k[0-7]\)\>"
+"ia32 AR's
+syn match ia64registers "ar\.\(eflag\|fcr\|csd\|ssd\|cflg\|fsr\|fir\|fdr\)\>"
+"sp/gp/pr/pr.rot/rp
+syn keyword ia64registers sp gp pr pr.rot rp ip tp
+"in/out/local
+syn match ia64registers "\(in\|out\|loc\)\([0-9]\|[1-8][0-9]\|9[0-5]\)\>"
+"argument ia64registers
+syn match ia64registers "farg[0-7]\>"
+"return value ia64registers
+syn match ia64registers "fret[0-7]\>"
+"psr
+syn match ia64registers "psr\(\.\(l\|um\)\)\=\>"
+"cr
+syn match ia64registers "cr\.\(dcr\|itm\|iva\|pta\|ipsr\|isr\|ifa\|iip\|itir\|iipa\|ifs\|iim\|iha\|lid\|ivr\|tpr\|eoi\|irr[0-3]\|itv\|pmv\|lrr[01]\|cmcv\)\>"
+"Indirect registers
+syn match ia64registers "\(cpuid\|dbr\|ibr\|pkr\|pmc\|pmd\|rr\|itr\|dtr\)\>"
+"MUX permutations for 8-bit elements
+syn match ia64registers "\(@rev\|@mix\|@shuf\|@alt\|@brcst\)\>"
+"floating point classes
+syn match ia64registers "\(@nat\|@qnan\|@snan\|@pos\|@neg\|@zero\|@unorm\|@norm\|@inf\)\>"
+"link relocation operators
+syn match ia64registers "\(@\(\(\(gp\|sec\|seg\|image\)rel\)\|ltoff\|fptr\|ptloff\|ltv\|section\)\)\>"
+
+"Data allocation syntax
+syn match ia64data "data[1248]\(\(\(\.ua\)\=\(\.msb\|\.lsb\)\=\)\|\(\(\.msb\|\.lsb\)\=\(\.ua\)\=\)\)\=\>"
+syn match ia64data "real\([48]\|1[06]\)\(\(\(\.ua\)\=\(\.msb\|\.lsb\)\=\)\|\(\(\.msb\|\.lsb\)\=\(\.ua\)\=\)\)\=\>"
+syn match ia64data "stringz\=\(\(\(\.ua\)\=\(\.msb\|\.lsb\)\=\)\|\(\(\.msb\|\.lsb\)\=\(\.ua\)\=\)\)\=\>"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+"put masm groups with our groups
+hi def link masmOperator ia64operator
+hi def link masmDirective ia64Directive
+hi def link masmOpcode ia64Opcode
+hi def link masmIdentifier ia64Identifier
+hi def link masmFloat ia64Float
+
+"ia64 specific stuff
+hi def link ia64Label Define
+hi def link ia64Comment Comment
+hi def link ia64Directive Type
+hi def link ia64opcode Statement
+hi def link ia64registers Operator
+hi def link ia64string String
+hi def link ia64Hex Number
+hi def link ia64Binary Number
+hi def link ia64Octal Number
+hi def link ia64Float Float
+hi def link ia64Decimal Number
+hi def link ia64Identifier Identifier
+hi def link ia64data Type
+hi def link ia64delimiter Delimiter
+hi def link ia64operator Operator
+hi def link ia64Todo Todo
+
+
+let b:current_syntax = "ia64"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/ibasic.vim b/runtime/syntax/ibasic.vim
new file mode 100644
index 0000000..75e5941
--- /dev/null
+++ b/runtime/syntax/ibasic.vim
@@ -0,0 +1,176 @@
+" Vim syntax file
+" Language: ibasic
+" Maintainer: Mark Manning <markem@airmail.net>
+" Originator: Allan Kelly <Allan.Kelly@ed.ac.uk>
+" Created: 10/1/2006
+" Updated: 10/21/2006
+" Description: A vim file to handle the IBasic file format.
+" Notes:
+" Updated by Mark Manning <markem@airmail.net>
+" Applied IBasic support to the already excellent support for standard
+" basic syntax (like QB).
+"
+" First version based on Micro$soft QBASIC circa 1989, as documented in
+" 'Learn BASIC Now' by Halvorson&Rygmyr. Microsoft Press 1989.
+" This syntax file not a complete implementation yet.
+" Send suggestions to the maintainer.
+"
+" This version is based upon the commands found in IBasic (www.pyxia.com).
+" MEM 10/6/2006
+"
+" Quit when a (custom) syntax file was already loaded (Taken from c.vim)
+"
+if exists("b:current_syntax")
+ finish
+endif
+"
+" Be sure to turn on the "case ignore" since current versions of basic
+" support both upper as well as lowercase letters.
+"
+syn case ignore
+"
+" A bunch of useful BASIC keywords
+"
+syn keyword ibasicStatement beep bload bsave call absolute chain chdir circle
+syn keyword ibasicStatement clear close cls color com common const data
+syn keyword ibasicStatement loop draw end environ erase error exit field
+syn keyword ibasicStatement files function get gosub goto
+syn keyword ibasicStatement input input# ioctl key kill let line locate
+syn keyword ibasicStatement lock unlock lprint using lset mkdir name
+syn keyword ibasicStatement on error open option base out paint palette pcopy
+syn keyword ibasicStatement pen play pmap poke preset print print# using pset
+syn keyword ibasicStatement put randomize read redim reset restore resume
+syn keyword ibasicStatement return rmdir rset run seek screen
+syn keyword ibasicStatement shared shell sleep sound static stop strig sub
+syn keyword ibasicStatement swap system timer troff tron type unlock
+syn keyword ibasicStatement view wait width window write
+syn keyword ibasicStatement date$ mid$ time$
+"
+" Do the basic variables names first. This is because it
+" is the most inclusive of the tests. Later on we change
+" this so the identifiers are split up into the various
+" types of identifiers like functions, basic commands and
+" such. MEM 9/9/2006
+"
+syn match ibasicIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
+syn match ibasicGenericFunction "\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1
+"
+" Function list
+"
+syn keyword ibasicBuiltInFunction abs asc atn cdbl cint clng cos csng csrlin cvd cvdmbf
+syn keyword ibasicBuiltInFunction cvi cvl cvs cvsmbf eof erdev erl err exp fileattr
+syn keyword ibasicBuiltInFunction fix fre freefile inp instr lbound len loc lof
+syn keyword ibasicBuiltInFunction log lpos mod peek pen point pos rnd sadd screen seek
+syn keyword ibasicBuiltInFunction setmem sgn sin spc sqr stick strig tab tan ubound
+syn keyword ibasicBuiltInFunction val valptr valseg varptr varseg
+syn keyword ibasicBuiltInFunction chr\$ command$ date$ environ$ erdev$ hex$ inkey$
+syn keyword ibasicBuiltInFunction input$ ioctl$ lcases$ laft$ ltrim$ mid$ mkdmbf$ mkd$
+syn keyword ibasicBuiltInFunction mki$ mkl$ mksmbf$ mks$ oct$ right$ rtrim$ space$
+syn keyword ibasicBuiltInFunction str$ string$ time$ ucase$ varptr$
+syn keyword ibasicTodo contained TODO
+syn cluster ibasicFunctionCluster contains=ibasicBuiltInFunction,ibasicGenericFunction
+
+syn keyword Conditional if else then elseif endif select case endselect
+syn keyword Repeat for do while next enddo endwhile wend
+
+syn keyword ibasicTypeSpecifier single double defdbl defsng
+syn keyword ibasicTypeSpecifier int integer uint uinteger int64 uint64 defint deflng
+syn keyword ibasicTypeSpecifier byte char string istring defstr
+syn keyword ibasicDefine dim def declare
+"
+"catch errors caused by wrong parenthesis
+"
+syn cluster ibasicParenGroup contains=ibasicParenError,ibasicIncluded,ibasicSpecial,ibasicTodo,ibasicUserCont,ibasicUserLabel,ibasicBitField
+syn region ibasicParen transparent start='(' end=')' contains=ALLBUT,@bParenGroup
+syn match ibasicParenError ")"
+syn match ibasicInParen contained "[{}]"
+"
+"integer number, or floating point number without a dot and with "f".
+"
+syn region ibasicHex start="&h" end="\W"
+syn region ibasicHexError start="&h\x*[g-zG-Z]" end="\W"
+syn match ibasicInteger "\<\d\+\(u\=l\=\|lu\|f\)\>"
+"
+"floating point number, with dot, optional exponent
+"
+syn match ibasicFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
+"
+"floating point number, starting with a dot, optional exponent
+"
+syn match ibasicFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"
+"floating point number, without dot, with exponent
+"
+syn match ibasicFloat "\<\d\+e[-+]\=\d\+[fl]\=\>"
+"
+"hex number
+"
+syn match ibasicIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
+syn match ibasicFunction "\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1
+syn case match
+syn match ibasicOctalError "\<0\o*[89]"
+"
+" String and Character contstants
+"
+syn region ibasicString start='"' end='"' contains=ibasicSpecial,ibasicTodo
+syn region ibasicString start="'" end="'" contains=ibasicSpecial,ibasicTodo
+"
+" Comments
+"
+syn match ibasicSpecial contained "\\."
+syn region ibasicComment start="^rem" end="$" contains=ibasicSpecial,ibasicTodo
+syn region ibasicComment start=":\s*rem" end="$" contains=ibasicSpecial,ibasicTodo
+syn region ibasicComment start="\s*'" end="$" contains=ibasicSpecial,ibasicTodo
+syn region ibasicComment start="^'" end="$" contains=ibasicSpecial,ibasicTodo
+"
+" Now do the comments and labels
+"
+syn match ibasicLabel "^\d"
+syn region ibasicLineNumber start="^\d" end="\s"
+"
+" Pre-compiler options : FreeBasic
+"
+syn region ibasicPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=ibasicString,ibasicCharacter,ibasicNumber,ibasicCommentError,ibasicSpaceError
+syn match ibasicInclude "^\s*#\s*include\s*"
+"
+" Create the clusters
+"
+syn cluster ibasicNumber contains=ibasicHex,ibasicInteger,ibasicFloat
+syn cluster ibasicError contains=ibasicHexError
+"
+" Used with OPEN statement
+"
+syn match ibasicFilenumber "#\d\+"
+"
+"syn sync ccomment ibasicComment
+"
+syn match ibasicMathOperator "[\+\-\=\|\*\/\>\<\%\()[\]]" contains=ibasicParen
+"
+" The default methods for highlighting. Can be overridden later
+"
+hi def link ibasicLabel Label
+hi def link ibasicConditional Conditional
+hi def link ibasicRepeat Repeat
+hi def link ibasicHex Number
+hi def link ibasicInteger Number
+hi def link ibasicFloat Number
+hi def link ibasicError Error
+hi def link ibasicHexError Error
+hi def link ibasicStatement Statement
+hi def link ibasicString String
+hi def link ibasicComment Comment
+hi def link ibasicLineNumber Comment
+hi def link ibasicSpecial Special
+hi def link ibasicTodo Todo
+hi def link ibasicGenericFunction Function
+hi def link ibasicBuiltInFunction Function
+hi def link ibasicTypeSpecifier Type
+hi def link ibasicDefine Type
+hi def link ibasicInclude Include
+hi def link ibasicIdentifier Identifier
+hi def link ibasicFilenumber ibasicTypeSpecifier
+hi def link ibasicMathOperator Operator
+
+let b:current_syntax = "ibasic"
+
+" vim: ts=8
diff --git a/runtime/syntax/icemenu.vim b/runtime/syntax/icemenu.vim
new file mode 100644
index 0000000..6513287
--- /dev/null
+++ b/runtime/syntax/icemenu.vim
@@ -0,0 +1,34 @@
+" Vim syntax file
+" Language: Icewm Menu
+" Maintainer: James Mahler <James.Mahler@gmail.com>
+" Last Change: Fri Apr 1 15:13:48 EST 2005
+" Extensions: ~/.icewm/menu
+" Comment: Icewm is a lightweight window manager. This adds syntax
+" highlighting when editing your user's menu file (~/.icewm/menu).
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" not case sensitive
+syntax case ignore
+
+" icons .xpm .png and .gif
+syntax match _icon /"\=\/.*\.xpm"\=/
+syntax match _icon /"\=\/.*\.png"\=/
+syntax match _icon /"\=\/.*\.gif"\=/
+syntax match _icon /"\-"/
+
+" separator
+syntax keyword _rules separator
+
+" prog and menu
+syntax keyword _ids menu prog
+
+" highlights
+highlight link _rules Underlined
+highlight link _ids Type
+highlight link _icon Special
+
+let b:current_syntax = "IceMenu"
diff --git a/runtime/syntax/icon.vim b/runtime/syntax/icon.vim
new file mode 100644
index 0000000..276bb58
--- /dev/null
+++ b/runtime/syntax/icon.vim
@@ -0,0 +1,211 @@
+" Vim syntax file
+" Language: Icon
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Wendell Turner <wendell@adsi-m4.com> (invalid last known address)
+" Last Change: 2022 Jun 16
+" Contributor: eschen@alumni.princeton.edu 2002.09.18
+
+" Prelude {{{1
+if exists("b:current_syntax")
+ finish
+endif
+
+syn iskeyword @,48-57,_,192-255,&
+
+" Not Top {{{1
+syn cluster iconNotTop contains=iconDocField,iconIncluded,iconStringSpecial,iconTodo,@Spell
+
+" Whitespace errors {{{1
+if exists("icon_space_errors")
+ if !exists("icon_no_trail_space_error")
+ syn match iconSpaceError "\s\+$" display excludenl
+ endif
+ if !exists("icon_no_tab_space_error")
+ syn match iconSpaceError " \+\t"me=e-1 display
+ endif
+endif
+
+" Reserved words {{{1
+syn keyword iconReserved break by case create default do else every fail if
+syn keyword iconReserved initial next not of repeat return suspend then to
+syn keyword iconReserved until while
+
+syn keyword iconStorageClass global static local record invocable
+
+syn keyword iconLink link
+
+" Procedure definitions {{{1
+if exists("icon_no_procedure_fold")
+ syn region iconProcedure matchgroup=iconReserved start="\<procedure\>" end="\<end\>" contains=ALLBUT,@iconNotTop
+else
+ syn region iconProcedure matchgroup=iconReserved start="\<procedure\>" end="\<end\>" contains=ALLBUT,@iconNotTop fold
+endif
+
+" Keywords {{{1
+syn keyword iconKeyword &allocated &ascii &clock &collections &cset &current
+syn keyword iconKeyword &date &dateline &digits &dump &e &error &errornumber
+syn keyword iconKeyword &errortext &errorvalue &errout &fail &features &file
+syn keyword iconKeyword &host &input &lcase &letters &level &line &main &null
+syn keyword iconKeyword &output &phi &pi &pos &progname &random &regions
+syn keyword iconKeyword &source &storage &subject &time &trace &ucase &version
+
+" Graphics keywords
+syn keyword iconKeyword &col &control &interval &ldrag &lpress &lrelease
+syn keyword iconKeyword &mdrag &meta &mpress &mrelease &rdrag &resize &row
+syn keyword iconKeyword &rpress &rrelease &shift &window &x &y
+
+" Functions {{{1
+syn keyword iconFunction abs acos any args asin atan bal callout center char
+syn keyword iconFunction chdir close collect copy cos cset delay delete detab
+syn keyword iconFunction display dtor entab errorclear exit exp find flush
+syn keyword iconFunction function get getch getche getenv iand icom image
+syn keyword iconFunction insert integer ior ishift ixor kbhit key left list
+syn keyword iconFunction loadfunc log many map match member move name numeric
+syn keyword iconFunction open ord pop pos proc pull push put read reads real
+syn keyword iconFunction remove rename repl reverse right rtod runerr save
+syn keyword iconFunction seek self seq serial set sin sort sortf sqrt stop
+syn keyword iconFunction string system tab table tan trim type upto variable
+syn keyword iconFunction where write writes
+
+" Graphics functions
+syn keyword iconFunction Active Alert Bg CenterString Clip Clone Color
+syn keyword iconFunction ColorDialog ColorValue CopyArea Couple DrawArc
+syn keyword iconFunction DrawCircle DrawCurve DrawImage DrawLine DrawPoint
+syn keyword iconFunction DrawPolygon DrawRectangle DrawSegment DrawString
+syn keyword iconFunction Enqueue EraseArea Event Fg FillArc FillCircle
+syn keyword iconFunction FillPolygon FillRectangle Font FreeColor GotoRC
+syn keyword iconFunction GotoXY LeftString Lower NewColor Notice OpenDialog
+syn keyword iconFunction PaletteChars PaletteColor PaletteGrays PaletteKey
+syn keyword iconFunction Pattern Pending Pixel Raise ReadImage RightString
+syn keyword iconFunction SaveDialog SelectDialog Shade TextDialog TextWidth
+syn keyword iconFunction ToggleDialog Uncouple WAttrib WClose WDefault WDelay
+syn keyword iconFunction WDone WFlush WOpen WQuit WRead WReads WriteImage
+syn keyword iconFunction WSync WWrite WWrites
+
+" String and character constants {{{1
+syn match iconStringSpecial "\\x\x\{2}\|\\\o\{3\}\|\\[bdeflnrtv\"\'\\]\|\\^[a-zA-Z0-9]" contained
+syn match iconStringSpecial "\\$" contained
+syn match iconStringSpecial "_\ze\s*$" contained
+
+syn region iconString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=iconStringSpecial
+syn region iconCset start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=iconStringSpecial
+
+" Bracket errors {{{1
+
+if !exists("icon_no_bracket_errors")
+ " catch errors caused by wrong brackets (ACE 2002.09.18)
+ syn cluster iconBracketGroup contains=iconBracketError,iconIncluded
+ syn region iconBracket start='\[' end='\]' contains=ALLBUT,@iconBracketGroup,@iconNotTop transparent
+ syn match iconBracketError "]"
+
+ "catch errors caused by wrong braces (ACE 2002.09.18)
+ syn cluster iconBraceGroup contains=iconBraceError,iconIncluded
+ syn region iconBrace start='{' end='}' contains=ALLBUT,@iconBraceGroup,@iconNotTop transparent
+ syn match iconBraceError "}"
+
+ "catch errors caused by wrong parenthesis
+ syn cluster iconParenGroup contains=iconParenError,iconIncluded
+ syn region iconParen start='(' end=')' contains=ALLBUT,@iconParenGroup,@iconNotTop transparent
+ syn match iconParenError ")"
+end
+
+" Numbers {{{1
+syn case ignore
+
+" integer
+syn match iconInteger "\<\d\+\>"
+syn match iconInteger "\<\d\{1,2}[rR][a-zA-Z0-9]\+\>"
+
+" real with trailing dot
+syn match iconReal "\<\d\+\."
+
+" real, with dot, optional exponent
+syn match iconReal "\<\d\+\.\d*\%(e[-+]\=\d\+\)\=\>"
+
+" real, with leading dot, optional exponent
+syn match iconReal "\.\d\+\%(e[-+]\=\d\+\)\=\>"
+
+" real, without dot, with exponent
+syn match iconReal "\<\d\+e[-+]\=\d\+\>"
+
+syn cluster iconNumber contains=iconInteger,iconReal
+
+syn case match
+
+" Comments {{{1
+syn keyword iconTodo TODO FIXME XXX BUG contained
+syn match iconComment "#.*" contains=iconTodo,iconSpaceError,@Spell
+syn match iconDocField "^#\s\+\zs\%(File\|Subject\|Authors\=\|Date\|Version\|Links\|Requires\|See also\):" contained
+
+if exists("icon_no_comment_fold")
+ syn region iconDocumentation start="\%^#\{2,}\%(\n#\+\%(\s\+.*\)\=\)\+" end="^#\+\n\s*$" contains=iconDocField keepend
+else
+ syn region iconMultilineComment start="^\s*#.*\n\%(^\s*#\)\@=" end="^\s*#.*\n\%(^\s*#\)\@!" contains=iconComment keepend fold transparent
+ syn region iconDocumentation start="\%^#\{2,}\%(\n#\)\+" end="^#\+\n\%([^#]\|$\)" contains=iconDocField keepend fold
+endif
+
+" Preprocessor {{{1
+syn match iconPreInclude '^\s*\zs$\s*include\>\ze\s*"' nextgroup=iconIncluded skipwhite
+syn match iconIncluded '"[^"]\+"' contained
+
+syn region iconPreDefine start="^\s*\zs$\s*\%(define\|undef\)\>" end="$" oneline contains=ALLBUT,@iconPreGroup
+syn region iconPreProc start="^\s*\zs$\s*\%(error\|line\)\>" end="$" oneline contains=ALLBUT,@iconPreGroup
+syn region iconPreConditional start="^\s*\zs$\s*\%(if\|ifdef\|ifndef\|elif\|else\|endif\)\>" end="$" oneline contains=iconComment,iconString,iconCset,iconNumber,iconSpaceError
+
+syn cluster iconPreGroup contains=iconPreCondit,iconPreInclude,iconIncluded,iconPreDefine
+
+syn match iconPreSymbol "_V\d\+"
+syn keyword iconPreSymbol _ACORN _AMIGA _ARM_FUNCTIONS _ASCII _CALLING
+syn keyword iconPreSymbol _CO_EXPRESSIONS _COMPILED _DIRECT_EXECUTION
+syn keyword iconPreSymbol _DOS_FUNCTIONS _EBCDIC _EVENT_MONITOR
+syn keyword iconPreSymbol _EXECUTABLE_IMAGES _EXTERNAL_FUNCTIONS
+syn keyword iconPreSymbol _EXTERNAL_VALUES _INTERPRETED _KEYBOARD_FUNCTIONS
+syn keyword iconPreSymbol _LARGE_INTEGERS _MACINTOSH _MEMORY_MONITOR _MSDOS
+syn keyword iconPreSymbol _MSDOS_386 _MULTIREGION _MULTITASKING _OS2 _PIPES
+syn keyword iconPreSymbol _PORT _PRESENTATION_MGR _RECORD_IO _STRING_INVOKE
+syn keyword iconPreSymbol _SYSTEM_FUNCTION _UNIX _VISUALIZATION _VMS
+syn keyword iconPreSymbol _WINDOW_FUNCTIONS _X_WINDOW_SYSTEM
+
+" Syncing {{{1
+if !exists("icon_minlines")
+ let icon_minlines = 250
+endif
+exec "syn sync ccomment iconComment minlines=" . icon_minlines
+
+" Default Highlighting {{{1
+
+hi def link iconParenError iconError
+hi def link iconBracketError iconError
+hi def link iconBraceError iconError
+hi def link iconSpaceError iconError
+hi def link iconError Error
+
+hi def link iconInteger Number
+hi def link iconReal Float
+hi def link iconString String
+hi def link iconCset String
+hi def link iconStringSpecial SpecialChar
+
+hi def link iconPreProc PreProc
+hi def link iconIncluded iconString
+hi def link iconPreInclude Include
+hi def link iconPreSymbol iconPreProc
+hi def link iconPreDefine Define
+hi def link iconPreConditional PreCondit
+
+hi def link iconStatement Statement
+hi def link iconStorageClass StorageClass
+hi def link iconFunction Function
+hi def link iconReserved Label
+hi def link iconLink Include
+hi def link iconKeyword Keyword
+
+hi def link iconComment Comment
+hi def link iconTodo Todo
+hi def link iconDocField SpecialComment
+hi def link iconDocumentation Comment
+
+" Postscript {{{1
+let b:current_syntax = "icon"
+
+" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
diff --git a/runtime/syntax/idl.vim b/runtime/syntax/idl.vim
new file mode 100644
index 0000000..2f20dec
--- /dev/null
+++ b/runtime/syntax/idl.vim
@@ -0,0 +1,324 @@
+" Vim syntax file
+" Language: IDL (Interface Description Language)
+" Created By: Jody Goldberg
+" Maintainer: Michael Geddes <vim@frog.wheelycreek.net>
+" Last Change: 2012 Jan 11
+
+
+" This is an experiment. IDL's structure is simple enough to permit a full
+" grammar based approach to rather than using a few heuristics. The result
+" is large and somewhat repetitive but seems to work.
+
+" There are some Microsoft extensions to idl files that are here. Some of
+" them are disabled by defining idl_no_ms_extensions.
+"
+" The more complex of the extensions are disabled by defining idl_no_extensions.
+"
+" History:
+" 2.0: Michael's new version
+" 2.1: Support for Vim 7 spell (Anduin Withers)
+"
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+try
+ set cpo&vim
+
+ if exists("idlsyntax_showerror")
+ syn match idlError +\S+ skipwhite skipempty nextgroup=idlError
+ endif
+
+ syn region idlCppQuote start='\<cpp_quote\s*(' end=')' contains=idlString
+
+ " Misc basic
+ syn match idlId contained "[a-zA-Z][a-zA-Z0-9_]*" skipwhite skipempty nextgroup=idlEnumComma,idlEnumNumber
+ syn match idlEnumComma contained ","
+ syn match idlEnumNumber contained "=" skipwhite skipempty nextgroup=idlString,idlLiteral
+ syn match idlSemiColon contained ";"
+ syn match idlCommaArg contained "," skipempty skipwhite nextgroup=idlSimpDecl
+ syn region idlArraySize1 contained start=:\[: end=:\]: skipempty skipwhite nextgroup=idlArraySize1,idlError,idlSemiColon,idlCommaArg contains=idlArraySize1,idlLiteral
+ syn match idlSimpDecl contained "[a-zA-Z][a-zA-Z0-9_]*" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlCommaArg,idlArraySize1
+ syn region idlString contained start=+"+ skip=+\\\(\\\\\)*"+ end=+"+ contains=@Spell
+ syn match idlLiteral contained "[1-9]\d*\(\.\d*\)\="
+ syn match idlLiteral contained "0"
+ syn match idlLiteral contained "\.\d\+"
+ syn match idlLiteral contained "0x[0-9A-Fa-f]\+"
+ syn match idlLiteral contained "0[0-7]\+"
+ syn keyword idlLiteral contained TRUE FALSE
+
+ " Comments
+ syn keyword idlTodo contained TODO FIXME XXX
+ syn region idlComment start="/\*" end="\*/" contains=idlTodo,@Spell
+ syn match idlComment "//.*" contains=idlTodo,@Spell
+ syn match idlCommentError "\*/"
+
+ " C style Preprocessor
+ syn region idlIncluded contained start=+"+ skip=+\\\(\\\\\)*"+ end=+"+
+ syn match idlIncluded contained "<[^>]*>"
+ syn match idlInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=idlIncluded,idlString
+ syn region idlPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=idlComment,idlCommentError
+ syn region idlDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=idlLiteral,idlString
+
+ " Constants
+ syn keyword idlConst const skipempty skipwhite nextgroup=idlBaseType,idlBaseTypeInt
+
+ " Attribute
+ syn keyword idlROAttr readonly skipempty skipwhite nextgroup=idlAttr
+ syn keyword idlAttr attribute skipempty skipwhite nextgroup=idlBaseTypeInt,idlBaseType
+
+ " Types
+ syn region idlD4 contained start="<" end=">" skipempty skipwhite nextgroup=idlSimpDecl contains=idlSeqType,idlBaseTypeInt,idlBaseType,idlLiteral
+ syn keyword idlSeqType contained sequence skipempty skipwhite nextgroup=idlD4
+ syn keyword idlBaseType contained float double char boolean octet any skipempty skipwhite nextgroup=idlSimpDecl
+ syn keyword idlBaseTypeInt contained short long skipempty skipwhite nextgroup=idlSimpDecl
+ syn keyword idlBaseType contained unsigned skipempty skipwhite nextgroup=idlBaseTypeInt
+ syn region idlD1 contained start="<" end=">" skipempty skipwhite nextgroup=idlSimpDecl contains=idlString,idlLiteral
+ syn keyword idlBaseType contained string skipempty skipwhite nextgroup=idlD1,idlSimpDecl
+ syn match idlBaseType contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlSimpDecl
+
+ " Modules
+ syn region idlModuleContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=idlUnion,idlStruct,idlEnum,idlInterface,idlComment,idlTypedef,idlConst,idlException,idlModule
+ syn match idlModuleName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlModuleContent,idlError,idlSemiColon
+ syn keyword idlModule module skipempty skipwhite nextgroup=idlModuleName
+
+ " Interfaces
+ syn cluster idlCommentable contains=idlComment
+ syn cluster idlContentCluster contains=idlUnion,idlStruct,idlEnum,idlROAttr,idlAttr,idlOp,idlOneWayOp,idlException,idlConst,idlTypedef,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlInterfaceSections
+
+ syn region idlInterfaceContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable
+ syn match idlInheritFrom2 contained "," skipempty skipwhite nextgroup=idlInheritFrom
+ syn match idlInheritFrom contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlInheritFrom2,idlInterfaceContent
+ syn match idlInherit contained ":" skipempty skipwhite nextgroup=idlInheritFrom
+ syn match idlInterfaceName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlInterfaceContent,idlInherit,idlError,idlSemiColon
+ syn keyword idlInterface interface dispinterface skipempty skipwhite nextgroup=idlInterfaceName
+ syn keyword idlInterfaceSections contained properties methods skipempty skipwhite nextgroup=idlSectionColon,idlError
+ syn match idlSectionColon contained ":"
+
+
+ syn match idlLibraryName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlLibraryContent,idlError,idlSemiColon
+ syn keyword idlLibrary library skipempty skipwhite nextgroup=idlLibraryName
+ syn region idlLibraryContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlCommentable,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlImportlib,idlCoclass,idlTypedef,idlInterface
+
+ syn keyword idlImportlib contained importlib skipempty skipwhite nextgroup=idlStringArg
+ syn region idlStringArg contained start="(" end=")" contains=idlString nextgroup=idlError,idlSemiColon,idlErrorBrace,idlErrorSquareBracket
+
+ syn keyword idlCoclass coclass contained skipempty skipwhite nextgroup=idlCoclassName
+ syn match idlCoclassName "[a-zA-Z0-9_]\+" contained skipempty skipwhite nextgroup=idlCoclassDefinition,idlError,idlSemiColon
+
+ syn region idlCoclassDefinition contained start="{" end="}" contains=idlCoclassAttributes,idlInterface,idlErrorBracket,idlErrorSquareBracket skipempty skipwhite nextgroup=idlError,idlSemiColon
+ syn region idlCoclassAttributes contained start=+\[+ end=+]+ skipempty skipwhite nextgroup=idlInterface contains=idlErrorBracket,idlErrorBrace,idlCoclassAttribute
+ syn keyword idlCoclassAttribute contained default source
+ "syn keyword idlInterface interface skipempty skipwhite nextgroup=idlInterfaceStubName
+
+ syn match idlImportString +"\f\+"+ skipempty skipwhite nextgroup=idlError,idlSemiColon
+ syn keyword idlImport import skipempty skipwhite nextgroup=idlImportString
+
+ syn region idlAttributes start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace,idlComment
+ syn keyword idlAttribute contained propput propget propputref id helpstring object uuid pointer_default
+ if !exists('idl_no_ms_extensions')
+ syn keyword idlAttribute contained nonextensible dual version aggregatable restricted hidden noncreatable oleautomation
+ endif
+ syn region idlAttributeParam contained start="(" end=")" contains=idlString,idlUuid,idlLiteral,idlErrorBrace,idlErrorSquareBracket
+ " skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral
+ syn match idlErrorBrace contained "}"
+ syn match idlErrorBracket contained ")"
+ syn match idlErrorSquareBracket contained "\]"
+
+ syn match idlUuid contained +[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}+
+
+ " Raises
+ syn keyword idlRaises contained raises skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon
+
+ " Context
+ syn keyword idlContext contained context skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon
+
+ " Operation
+ syn match idlParmList contained "," skipempty skipwhite nextgroup=idlOpParms
+ syn region idlArraySize contained start="\[" end="\]" skipempty skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral
+ syn match idlParmName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlParmList,idlArraySize
+ syn keyword idlParmInt contained short long skipempty skipwhite nextgroup=idlParmName
+ syn keyword idlParmType contained unsigned skipempty skipwhite nextgroup=idlParmInt
+ syn region idlD3 contained start="<" end=">" skipempty skipwhite nextgroup=idlParmName contains=idlString,idlLiteral
+ syn keyword idlParmType contained string skipempty skipwhite nextgroup=idlD3,idlParmName
+ syn keyword idlParmType contained void float double char boolean octet any skipempty skipwhite nextgroup=idlParmName
+ syn match idlParmType contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlParmName
+ syn keyword idlOpParms contained in out inout skipempty skipwhite nextgroup=idlParmType
+
+ if !exists('idl_no_ms_extensions')
+ syn keyword idlOpParms contained retval optional skipempty skipwhite nextgroup=idlParmType
+ syn match idlOpParms contained +\<\(iid_is\|defaultvalue\)\s*([^)]*)+ skipempty skipwhite nextgroup=idlParamType
+
+ syn keyword idlVariantType contained BSTR VARIANT VARIANT_BOOL long short unsigned double CURRENCY DATE
+ syn region idlSafeArray contained matchgroup=idlVariantType start=+SAFEARRAY(\s*+ end=+)+ contains=idlVariantType
+ endif
+
+ syn region idlOpContents contained start="(" end=")" skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon contains=idlOpParms,idlSafeArray,idlVariantType,@idlCommentable
+ syn match idlOpName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlOpContents
+ syn keyword idlOpInt contained short long skipempty skipwhite nextgroup=idlOpName
+ syn region idlD2 contained start="<" end=">" skipempty skipwhite nextgroup=idlOpName contains=idlString,idlLiteral
+ syn keyword idlOp contained unsigned skipempty skipwhite nextgroup=idlOpInt
+ syn keyword idlOp contained string skipempty skipwhite nextgroup=idlD2,idlOpName
+ syn keyword idlOp contained void float double char boolean octet any skipempty skipwhite nextgroup=idlOpName
+ syn match idlOp contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlOpName
+ syn keyword idlOp contained void skipempty skipwhite nextgroup=idlOpName
+ syn keyword idlOneWayOp contained oneway skipempty skipwhite nextgroup=idOp
+
+ " Enum
+ syn region idlEnumContents contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlId,idlAttributes,@idlCommentable
+ syn match idlEnumName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlEnumContents
+ syn keyword idlEnum enum skipempty skipwhite nextgroup=idlEnumName,idlEnumContents
+
+ " Typedef
+ syn keyword idlTypedef typedef skipempty skipwhite nextgroup=idlTypedefOtherTypeQualifier,idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError
+
+ if !exists('idl_no_extensions')
+ syn keyword idlTypedefOtherTypeQualifier contained struct enum interface nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError skipwhite
+
+ syn region idlDefAttributes contained start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace skipempty skipwhite nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlError
+
+ syn keyword idlDefBaseType contained float double char boolean octet any skipempty skipwhite nextgroup=idlTypedefDecl,idlError
+ syn keyword idlDefBaseTypeInt contained short long skipempty skipwhite nextgroup=idlTypedefDecl,idlError
+ syn match idlDefOtherType contained +\<\k\+\>+ skipempty nextgroup=idlTypedefDecl,idlError
+ " syn keyword idlDefSeqType contained sequence skipempty skipwhite nextgroup=idlD4
+
+ " Enum typedef
+ syn keyword idlDefEnum contained enum skipempty skipwhite nextgroup=idlDefEnumName,idlDefEnumContents
+ syn match idlDefEnumName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlDefEnumContents,idlTypedefDecl
+ syn region idlDefEnumContents contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlTypedefDecl contains=idlId,idlAttributes
+
+ syn match idlTypedefDecl contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlError,idlSemiColon
+ endif
+
+ " Struct
+ syn region idlStructContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlBaseType,idlBaseTypeInt,idlSeqType,@idlCommentable,idlEnum,idlUnion
+ syn match idlStructName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlStructContent
+ syn keyword idlStruct struct skipempty skipwhite nextgroup=idlStructName
+
+ " Exception
+ syn keyword idlException exception skipempty skipwhite nextgroup=idlStructName
+
+ " Union
+ syn match idlColon contained ":" skipempty skipwhite nextgroup=idlCase,idlSeqType,idlBaseType,idlBaseTypeInt
+ syn region idlCaseLabel contained start="" skip="::" end=":"me=e-1 skipempty skipwhite nextgroup=idlColon contains=idlLiteral,idlString
+ syn keyword idlCase contained case skipempty skipwhite nextgroup=idlCaseLabel
+ syn keyword idlCase contained default skipempty skipwhite nextgroup=idlColon
+ syn region idlUnionContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlCase
+ syn region idlSwitchType contained start="(" end=")" skipempty skipwhite nextgroup=idlUnionContent
+ syn keyword idlUnionSwitch contained switch skipempty skipwhite nextgroup=idlSwitchType
+ syn match idlUnionName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlUnionSwitch
+ syn keyword idlUnion union skipempty skipwhite nextgroup=idlUnionName
+
+ if !exists('idl_no_extensions')
+ syn sync match idlInterfaceSync grouphere idlInterfaceContent "\<\(disp\)\=interface\>\s\+\k\+\s*:\s*\k\+\_s*{" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable
+ syn sync maxlines=1000 minlines=100
+ else
+ syn sync lines=200
+ endif
+ " syn sync fromstart
+
+ if !exists("did_idl_syntax_inits")
+ let did_idl_syntax_inits = 1
+ " The default methods for highlighting. Can be overridden later
+
+ hi def link idlInclude Include
+ hi def link idlPreProc PreProc
+ hi def link idlPreCondit PreCondit
+ hi def link idlDefine Macro
+ hi def link idlIncluded String
+ hi def link idlString String
+ hi def link idlComment Comment
+ hi def link idlTodo Todo
+ hi def link idlLiteral Number
+ hi def link idlUuid Number
+ hi def link idlType Type
+ hi def link idlVariantType idlType
+
+ hi def link idlModule Keyword
+ hi def link idlInterface Keyword
+ hi def link idlEnum Keyword
+ hi def link idlStruct Keyword
+ hi def link idlUnion Keyword
+ hi def link idlTypedef Keyword
+ hi def link idlException Keyword
+ hi def link idlTypedefOtherTypeQualifier keyword
+
+ hi def link idlModuleName Typedef
+ hi def link idlInterfaceName Typedef
+ hi def link idlEnumName Typedef
+ hi def link idlStructName Typedef
+ hi def link idlUnionName Typedef
+
+ hi def link idlBaseTypeInt idlType
+ hi def link idlBaseType idlType
+ hi def link idlSeqType idlType
+ hi def link idlD1 Paren
+ hi def link idlD2 Paren
+ hi def link idlD3 Paren
+ hi def link idlD4 Paren
+ "hi def link idlArraySize Paren
+ "hi def link idlArraySize1 Paren
+ hi def link idlModuleContent Paren
+ hi def link idlUnionContent Paren
+ hi def link idlStructContent Paren
+ hi def link idlEnumContents Paren
+ hi def link idlInterfaceContent Paren
+
+ hi def link idlSimpDecl Identifier
+ hi def link idlROAttr StorageClass
+ hi def link idlAttr Keyword
+ hi def link idlConst StorageClass
+
+ hi def link idlOneWayOp StorageClass
+ hi def link idlOp idlType
+ hi def link idlParmType idlType
+ hi def link idlOpName Function
+ hi def link idlOpParms SpecialComment
+ hi def link idlParmName Identifier
+ hi def link idlInheritFrom Identifier
+ hi def link idlAttribute SpecialComment
+
+ hi def link idlId Constant
+ "hi def link idlCase Keyword
+ hi def link idlCaseLabel Constant
+
+ hi def link idlErrorBracket Error
+ hi def link idlErrorBrace Error
+ hi def link idlErrorSquareBracket Error
+
+ hi def link idlImport Keyword
+ hi def link idlImportString idlString
+ hi def link idlCoclassAttribute StorageClass
+ hi def link idlLibrary Keyword
+ hi def link idlImportlib Keyword
+ hi def link idlCoclass Keyword
+ hi def link idlLibraryName Typedef
+ hi def link idlCoclassName Typedef
+ " hi def link idlLibraryContent guifg=red
+ hi def link idlTypedefDecl Typedef
+ hi def link idlDefEnum Keyword
+ hi def link idlDefv1Enum Keyword
+ hi def link idlDefEnumName Typedef
+ hi def link idlDefEnumContents Paren
+ hi def link idlDefBaseTypeInt idlType
+ hi def link idlDefBaseType idlType
+ hi def link idlDefSeqType idlType
+ hi def link idlInterfaceSections Label
+
+ if exists("idlsyntax_showerror")
+ if exists("idlsyntax_showerror_soft")
+ hi default idlError guibg=#d0ffd0
+ else
+ hi def link idlError Error
+ endif
+ endif
+ endif
+
+ let b:current_syntax = "idl"
+finally
+ let &cpo = s:cpo_save
+ unlet s:cpo_save
+endtry
+" vim: sw=2 et
diff --git a/runtime/syntax/idlang.vim b/runtime/syntax/idlang.vim
new file mode 100644
index 0000000..14e976c
--- /dev/null
+++ b/runtime/syntax/idlang.vim
@@ -0,0 +1,240 @@
+" Interactive Data Language syntax file (IDL, too [:-)]
+" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
+" Last change: 2011 Apr 11
+" Created by: Hermann Rochholz <Hermann.Rochholz AT gmx.de>
+
+" Remove any old syntax stuff hanging around
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syntax case ignore
+
+syn match idlangStatement "^\s*pro\s"
+syn match idlangStatement "^\s*function\s"
+syn keyword idlangStatement return continue mod do break
+syn keyword idlangStatement compile_opt forward_function goto
+syn keyword idlangStatement begin common end of
+syn keyword idlangStatement inherits on_ioerror begin
+
+syn keyword idlangConditional if else then for while case switch
+syn keyword idlangConditional endcase endelse endfor endswitch
+syn keyword idlangConditional endif endrep endwhile repeat until
+
+syn match idlangOperator "\ and\ "
+syn match idlangOperator "\ eq\ "
+syn match idlangOperator "\ ge\ "
+syn match idlangOperator "\ gt\ "
+syn match idlangOperator "\ le\ "
+syn match idlangOperator "\ lt\ "
+syn match idlangOperator "\ ne\ "
+syn match idlangOperator /\(\ \|(\)not\ /hs=e-3
+syn match idlangOperator "\ or\ "
+syn match idlangOperator "\ xor\ "
+
+syn keyword idlangStop stop pause
+
+syn match idlangStrucvar "\h\w*\(\.\h\w*\)\+"
+syn match idlangStrucvar "[),\]]\(\.\h\w*\)\+"hs=s+1
+
+syn match idlangSystem "\!\a\w*\(\.\w*\)\="
+
+syn match idlangKeyword "\([(,]\s*\(\$\_s*\)\=\)\@<=/\h\w*"
+syn match idlangKeyword "\([(,]\s*\(\$\_s*\)\=\)\@<=\h\w*\s*="
+
+syn keyword idlangTodo contained TODO
+
+syn region idlangString start=+"+ end=+"+
+syn region idlangString start=+'+ end=+'+
+
+syn match idlangPreCondit "^\s*@\w*\(\.\a\{3}\)\="
+
+syn match idlangRealNumber "\<\d\+\(\.\=\d*e[+-]\=\d\+\|\.\d*d\|\.\d*\|d\)"
+syn match idlangRealNumber "\.\d\+\(d\|e[+-]\=\d\+\)\="
+
+syn match idlangNumber "\<\.\@!\d\+\.\@!\(b\|u\|us\|s\|l\|ul\|ll\|ull\)\=\>"
+
+syn match idlangComment "[\;].*$" contains=idlangTodo
+
+syn match idlangContinueLine "\$\s*\($\|;\)"he=s+1 contains=idlangComment
+syn match idlangContinueLine "&\s*\(\h\|;\)"he=s+1 contains=ALL
+
+syn match idlangDblCommaError "\,\s*\,"
+
+" List of standard routines as of IDL version 5.4.
+syn match idlangRoutine "EOS_\a*"
+syn match idlangRoutine "HDF_\a*"
+syn match idlangRoutine "CDF_\a*"
+syn match idlangRoutine "NCDF_\a*"
+syn match idlangRoutine "QUERY_\a*"
+syn match idlangRoutine "\<MAX\s*("he=e-1
+syn match idlangRoutine "\<MIN\s*("he=e-1
+
+syn keyword idlangRoutine A_CORRELATE ABS ACOS ADAPT_HIST_EQUAL ALOG ALOG10
+syn keyword idlangRoutine AMOEBA ANNOTATE ARG_PRESENT ARRAY_EQUAL ARROW
+syn keyword idlangRoutine ASCII_TEMPLATE ASIN ASSOC ATAN AXIS BAR_PLOT
+syn keyword idlangRoutine BESELI BESELJ BESELK BESELY BETA BILINEAR BIN_DATE
+syn keyword idlangRoutine BINARY_TEMPLATE BINDGEN BINOMIAL BLAS_AXPY BLK_CON
+syn keyword idlangRoutine BOX_CURSOR BREAK BREAKPOINT BROYDEN BYTARR BYTE
+syn keyword idlangRoutine BYTEORDER BYTSCL C_CORRELATE CALDAT CALENDAR
+syn keyword idlangRoutine CALL_EXTERNAL CALL_FUNCTION CALL_METHOD
+syn keyword idlangRoutine CALL_PROCEDURE CATCH CD CEIL CHEBYSHEV CHECK_MATH
+syn keyword idlangRoutine CHISQR_CVF CHISQR_PDF CHOLDC CHOLSOL CINDGEN
+syn keyword idlangRoutine CIR_3PNT CLOSE CLUST_WTS CLUSTER COLOR_CONVERT
+syn keyword idlangRoutine COLOR_QUAN COLORMAP_APPLICABLE COMFIT COMMON
+syn keyword idlangRoutine COMPLEX COMPLEXARR COMPLEXROUND
+syn keyword idlangRoutine COMPUTE_MESH_NORMALS COND CONGRID CONJ
+syn keyword idlangRoutine CONSTRAINED_MIN CONTOUR CONVERT_COORD CONVOL
+syn keyword idlangRoutine COORD2TO3 CORRELATE COS COSH CRAMER CREATE_STRUCT
+syn keyword idlangRoutine CREATE_VIEW CROSSP CRVLENGTH CT_LUMINANCE CTI_TEST
+syn keyword idlangRoutine CURSOR CURVEFIT CV_COORD CVTTOBM CW_ANIMATE
+syn keyword idlangRoutine CW_ANIMATE_GETP CW_ANIMATE_LOAD CW_ANIMATE_RUN
+syn keyword idlangRoutine CW_ARCBALL CW_BGROUP CW_CLR_INDEX CW_COLORSEL
+syn keyword idlangRoutine CW_DEFROI CW_FIELD CW_FILESEL CW_FORM CW_FSLIDER
+syn keyword idlangRoutine CW_LIGHT_EDITOR CW_LIGHT_EDITOR_GET
+syn keyword idlangRoutine CW_LIGHT_EDITOR_SET CW_ORIENT CW_PALETTE_EDITOR
+syn keyword idlangRoutine CW_PALETTE_EDITOR_GET CW_PALETTE_EDITOR_SET
+syn keyword idlangRoutine CW_PDMENU CW_RGBSLIDER CW_TMPL CW_ZOOM DBLARR
+syn keyword idlangRoutine DCINDGEN DCOMPLEX DCOMPLEXARR DEFINE_KEY DEFROI
+syn keyword idlangRoutine DEFSYSV DELETE_SYMBOL DELLOG DELVAR DERIV DERIVSIG
+syn keyword idlangRoutine DETERM DEVICE DFPMIN DIALOG_MESSAGE
+syn keyword idlangRoutine DIALOG_PICKFILE DIALOG_PRINTERSETUP
+syn keyword idlangRoutine DIALOG_PRINTJOB DIALOG_READ_IMAGE
+syn keyword idlangRoutine DIALOG_WRITE_IMAGE DIGITAL_FILTER DILATE DINDGEN
+syn keyword idlangRoutine DISSOLVE DIST DLM_LOAD DLM_REGISTER
+syn keyword idlangRoutine DO_APPLE_SCRIPT DOC_LIBRARY DOUBLE DRAW_ROI EFONT
+syn keyword idlangRoutine EIGENQL EIGENVEC ELMHES EMPTY ENABLE_SYSRTN EOF
+syn keyword idlangRoutine ERASE ERODE ERRORF ERRPLOT EXECUTE EXIT EXP EXPAND
+syn keyword idlangRoutine EXPAND_PATH EXPINT EXTRAC EXTRACT_SLICE F_CVF
+syn keyword idlangRoutine F_PDF FACTORIAL FFT FILE_CHMOD FILE_DELETE
+syn keyword idlangRoutine FILE_EXPAND_PATH FILE_MKDIR FILE_TEST FILE_WHICH
+syn keyword idlangRoutine FILEPATH FINDFILE FINDGEN FINITE FIX FLICK FLOAT
+syn keyword idlangRoutine FLOOR FLOW3 FLTARR FLUSH FORMAT_AXIS_VALUES
+syn keyword idlangRoutine FORWARD_FUNCTION FREE_LUN FSTAT FULSTR FUNCT
+syn keyword idlangRoutine FV_TEST FX_ROOT FZ_ROOTS GAMMA GAMMA_CT
+syn keyword idlangRoutine GAUSS_CVF GAUSS_PDF GAUSS2DFIT GAUSSFIT GAUSSINT
+syn keyword idlangRoutine GET_DRIVE_LIST GET_KBRD GET_LUN GET_SCREEN_SIZE
+syn keyword idlangRoutine GET_SYMBOL GETENV GOTO GRID_TPS GRID3 GS_ITER
+syn keyword idlangRoutine H_EQ_CT H_EQ_INT HANNING HEAP_GC HELP HILBERT
+syn keyword idlangRoutine HIST_2D HIST_EQUAL HISTOGRAM HLS HOUGH HQR HSV
+syn keyword idlangRoutine IBETA IDENTITY IDL_Container IDLanROI
+syn keyword idlangRoutine IDLanROIGroup IDLffDICOM IDLffDXF IDLffLanguageCat
+syn keyword idlangRoutine IDLffShape IDLgrAxis IDLgrBuffer IDLgrClipboard
+syn keyword idlangRoutine IDLgrColorbar IDLgrContour IDLgrFont IDLgrImage
+syn keyword idlangRoutine IDLgrLegend IDLgrLight IDLgrModel IDLgrMPEG
+syn keyword idlangRoutine IDLgrPalette IDLgrPattern IDLgrPlot IDLgrPolygon
+syn keyword idlangRoutine IDLgrPolyline IDLgrPrinter IDLgrROI IDLgrROIGroup
+syn keyword idlangRoutine IDLgrScene IDLgrSurface IDLgrSymbol
+syn keyword idlangRoutine IDLgrTessellator IDLgrText IDLgrView
+syn keyword idlangRoutine IDLgrViewgroup IDLgrVolume IDLgrVRML IDLgrWindow
+syn keyword idlangRoutine IGAMMA IMAGE_CONT IMAGE_STATISTICS IMAGINARY
+syn keyword idlangRoutine INDGEN INT_2D INT_3D INT_TABULATED INTARR INTERPOL
+syn keyword idlangRoutine INTERPOLATE INVERT IOCTL ISHFT ISOCONTOUR
+syn keyword idlangRoutine ISOSURFACE JOURNAL JULDAY KEYWORD_SET KRIG2D
+syn keyword idlangRoutine KURTOSIS KW_TEST L64INDGEN LABEL_DATE LABEL_REGION
+syn keyword idlangRoutine LADFIT LAGUERRE LEEFILT LEGENDRE LINBCG LINDGEN
+syn keyword idlangRoutine LINFIT LINKIMAGE LIVE_CONTOUR LIVE_CONTROL
+syn keyword idlangRoutine LIVE_DESTROY LIVE_EXPORT LIVE_IMAGE LIVE_INFO
+syn keyword idlangRoutine LIVE_LINE LIVE_LOAD LIVE_OPLOT LIVE_PLOT
+syn keyword idlangRoutine LIVE_PRINT LIVE_RECT LIVE_STYLE LIVE_SURFACE
+syn keyword idlangRoutine LIVE_TEXT LJLCT LL_ARC_DISTANCE LMFIT LMGR LNGAMMA
+syn keyword idlangRoutine LNP_TEST LOADCT LOCALE_GET LON64ARR LONARR LONG
+syn keyword idlangRoutine LONG64 LSODE LU_COMPLEX LUDC LUMPROVE LUSOL
+syn keyword idlangRoutine M_CORRELATE MACHAR MAKE_ARRAY MAKE_DLL MAP_2POINTS
+syn keyword idlangRoutine MAP_CONTINENTS MAP_GRID MAP_IMAGE MAP_PATCH
+syn keyword idlangRoutine MAP_PROJ_INFO MAP_SET MATRIX_MULTIPLY MD_TEST MEAN
+syn keyword idlangRoutine MEANABSDEV MEDIAN MEMORY MESH_CLIP MESH_DECIMATE
+syn keyword idlangRoutine MESH_ISSOLID MESH_MERGE MESH_NUMTRIANGLES MESH_OBJ
+syn keyword idlangRoutine MESH_SMOOTH MESH_SURFACEAREA MESH_VALIDATE
+syn keyword idlangRoutine MESH_VOLUME MESSAGE MIN_CURVE_SURF MK_HTML_HELP
+syn keyword idlangRoutine MODIFYCT MOMENT MORPH_CLOSE MORPH_DISTANCE
+syn keyword idlangRoutine MORPH_GRADIENT MORPH_HITORMISS MORPH_OPEN
+syn keyword idlangRoutine MORPH_THIN MORPH_TOPHAT MPEG_CLOSE MPEG_OPEN
+syn keyword idlangRoutine MPEG_PUT MPEG_SAVE MSG_CAT_CLOSE MSG_CAT_COMPILE
+syn keyword idlangRoutine MSG_CAT_OPEN MULTI N_ELEMENTS N_PARAMS N_TAGS
+syn keyword idlangRoutine NEWTON NORM OBJ_CLASS OBJ_DESTROY OBJ_ISA OBJ_NEW
+syn keyword idlangRoutine OBJ_VALID OBJARR ON_ERROR ON_IOERROR ONLINE_HELP
+syn keyword idlangRoutine OPEN OPENR OPENW OPLOT OPLOTERR P_CORRELATE
+syn keyword idlangRoutine PARTICLE_TRACE PCOMP PLOT PLOT_3DBOX PLOT_FIELD
+syn keyword idlangRoutine PLOTERR PLOTS PNT_LINE POINT_LUN POLAR_CONTOUR
+syn keyword idlangRoutine POLAR_SURFACE POLY POLY_2D POLY_AREA POLY_FIT
+syn keyword idlangRoutine POLYFILL POLYFILLV POLYSHADE POLYWARP POPD POWELL
+syn keyword idlangRoutine PRIMES PRINT PRINTF PRINTD PROFILE PROFILER
+syn keyword idlangRoutine PROFILES PROJECT_VOL PS_SHOW_FONTS PSAFM PSEUDO
+syn keyword idlangRoutine PTR_FREE PTR_NEW PTR_VALID PTRARR PUSHD QROMB
+syn keyword idlangRoutine QROMO QSIMP R_CORRELATE R_TEST RADON RANDOMN
+syn keyword idlangRoutine RANDOMU RANKS RDPIX READ READF READ_ASCII
+syn keyword idlangRoutine READ_BINARY READ_BMP READ_DICOM READ_IMAGE
+syn keyword idlangRoutine READ_INTERFILE READ_JPEG READ_PICT READ_PNG
+syn keyword idlangRoutine READ_PPM READ_SPR READ_SRF READ_SYLK READ_TIFF
+syn keyword idlangRoutine READ_WAV READ_WAVE READ_X11_BITMAP READ_XWD READS
+syn keyword idlangRoutine READU REBIN RECALL_COMMANDS RECON3 REDUCE_COLORS
+syn keyword idlangRoutine REFORM REGRESS REPLICATE REPLICATE_INPLACE
+syn keyword idlangRoutine RESOLVE_ALL RESOLVE_ROUTINE RESTORE RETALL RETURN
+syn keyword idlangRoutine REVERSE REWIND RK4 ROBERTS ROT ROTATE ROUND
+syn keyword idlangRoutine ROUTINE_INFO RS_TEST S_TEST SAVE SAVGOL SCALE3
+syn keyword idlangRoutine SCALE3D SEARCH2D SEARCH3D SET_PLOT SET_SHADING
+syn keyword idlangRoutine SET_SYMBOL SETENV SETLOG SETUP_KEYS SFIT
+syn keyword idlangRoutine SHADE_SURF SHADE_SURF_IRR SHADE_VOLUME SHIFT SHOW3
+syn keyword idlangRoutine SHOWFONT SIN SINDGEN SINH SIZE SKEWNESS SKIPF
+syn keyword idlangRoutine SLICER3 SLIDE_IMAGE SMOOTH SOBEL SOCKET SORT SPAWN
+syn keyword idlangRoutine SPH_4PNT SPH_SCAT SPHER_HARM SPL_INIT SPL_INTERP
+syn keyword idlangRoutine SPLINE SPLINE_P SPRSAB SPRSAX SPRSIN SPRSTP SQRT
+syn keyword idlangRoutine STANDARDIZE STDDEV STOP STRARR STRCMP STRCOMPRESS
+syn keyword idlangRoutine STREAMLINE STREGEX STRETCH STRING STRJOIN STRLEN
+syn keyword idlangRoutine STRLOWCASE STRMATCH STRMESSAGE STRMID STRPOS
+syn keyword idlangRoutine STRPUT STRSPLIT STRTRIM STRUCT_ASSIGN STRUCT_HIDE
+syn keyword idlangRoutine STRUPCASE SURFACE SURFR SVDC SVDFIT SVSOL
+syn keyword idlangRoutine SWAP_ENDIAN SWITCH SYSTIME T_CVF T_PDF T3D
+syn keyword idlangRoutine TAG_NAMES TAN TANH TAPRD TAPWRT TEK_COLOR
+syn keyword idlangRoutine TEMPORARY TETRA_CLIP TETRA_SURFACE TETRA_VOLUME
+syn keyword idlangRoutine THIN THREED TIME_TEST2 TIMEGEN TM_TEST TOTAL TRACE
+syn keyword idlangRoutine TRANSPOSE TRI_SURF TRIANGULATE TRIGRID TRIQL
+syn keyword idlangRoutine TRIRED TRISOL TRNLOG TS_COEF TS_DIFF TS_FCAST
+syn keyword idlangRoutine TS_SMOOTH TV TVCRS TVLCT TVRD TVSCL UINDGEN UINT
+syn keyword idlangRoutine UINTARR UL64INDGEN ULINDGEN ULON64ARR ULONARR
+syn keyword idlangRoutine ULONG ULONG64 UNIQ USERSYM VALUE_LOCATE VARIANCE
+syn keyword idlangRoutine VAX_FLOAT VECTOR_FIELD VEL VELOVECT VERT_T3D VOIGT
+syn keyword idlangRoutine VORONOI VOXEL_PROJ WAIT WARP_TRI WATERSHED WDELETE
+syn keyword idlangRoutine WEOF WF_DRAW WHERE WIDGET_BASE WIDGET_BUTTON
+syn keyword idlangRoutine WIDGET_CONTROL WIDGET_DRAW WIDGET_DROPLIST
+syn keyword idlangRoutine WIDGET_EVENT WIDGET_INFO WIDGET_LABEL WIDGET_LIST
+syn keyword idlangRoutine WIDGET_SLIDER WIDGET_TABLE WIDGET_TEXT WINDOW
+syn keyword idlangRoutine WRITE_BMP WRITE_IMAGE WRITE_JPEG WRITE_NRIF
+syn keyword idlangRoutine WRITE_PICT WRITE_PNG WRITE_PPM WRITE_SPR WRITE_SRF
+syn keyword idlangRoutine WRITE_SYLK WRITE_TIFF WRITE_WAV WRITE_WAVE WRITEU
+syn keyword idlangRoutine WSET WSHOW WTN WV_APPLET WV_CW_WAVELET WV_CWT
+syn keyword idlangRoutine WV_DENOISE WV_DWT WV_FN_COIFLET WV_FN_DAUBECHIES
+syn keyword idlangRoutine WV_FN_GAUSSIAN WV_FN_HAAR WV_FN_MORLET WV_FN_PAUL
+syn keyword idlangRoutine WV_FN_SYMLET WV_IMPORT_DATA WV_IMPORT_WAVELET
+syn keyword idlangRoutine WV_PLOT3D_WPS WV_PLOT_MULTIRES WV_PWT
+syn keyword idlangRoutine WV_TOOL_DENOISE XBM_EDIT XDISPLAYFILE XDXF XFONT
+syn keyword idlangRoutine XINTERANIMATE XLOADCT XMANAGER XMNG_TMPL XMTOOL
+syn keyword idlangRoutine XOBJVIEW XPALETTE XPCOLOR XPLOT3D XREGISTERED XROI
+syn keyword idlangRoutine XSQ_TEST XSURFACE XVAREDIT XVOLUME XVOLUME_ROTATE
+syn keyword idlangRoutine XVOLUME_WRITE_IMAGE XYOUTS ZOOM ZOOM_24
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link idlangConditional Conditional
+hi def link idlangRoutine Type
+hi def link idlangStatement Statement
+hi def link idlangContinueLine Todo
+hi def link idlangRealNumber Float
+hi def link idlangNumber Number
+hi def link idlangString String
+hi def link idlangOperator Operator
+hi def link idlangComment Comment
+hi def link idlangTodo Todo
+hi def link idlangPreCondit Identifier
+hi def link idlangDblCommaError Error
+hi def link idlangStop Error
+hi def link idlangStrucvar PreProc
+hi def link idlangSystem Identifier
+hi def link idlangKeyword Special
+
+
+let b:current_syntax = "idlang"
+" vim: ts=18
diff --git a/runtime/syntax/indent.vim b/runtime/syntax/indent.vim
new file mode 100644
index 0000000..b2a1a0c
--- /dev/null
+++ b/runtime/syntax/indent.vim
@@ -0,0 +1,153 @@
+" Vim syntax file
+" Language: indent(1) configuration file
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Last Change: 2021 Nov 17
+" indent_is_bsd: If exists, will change somewhat to match BSD implementation
+"
+" TODO: is the deny-all (a la lilo.vim nice or no?)...
+" irritating to be wrong to the last char...
+" would be sweet if right until one char fails
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword+=-,+
+
+syn match indentError '\S\+'
+
+syn keyword indentTodo contained TODO FIXME XXX NOTE
+
+syn region indentComment start='/\*' end='\*/'
+ \ contains=indentTodo,@Spell
+syn region indentComment start='//' skip='\\$' end='$'
+ \ contains=indentTodo,@Spell
+
+if !exists("indent_is_bsd")
+ syn match indentOptions '-i\|--indent-level\|-il\|--indent-label'
+ \ nextgroup=indentNumber skipwhite skipempty
+endif
+syn match indentOptions '-\%(bli\|c\%([bl]i\|[dip]\)\=\|di\=\|ip\=\|lc\=\|pp\=i\|sbi\|ts\|-\%(brace-indent\|comment-indentation\|case-brace-indentation\|declaration-comment-column\|continuation-indentation\|case-indentation\|else-endif-column\|line-comments-indentation\|declaration-indentation\|indent-level\|parameter-indentation\|line-length\|comment-line-length\|paren-indentation\|preprocessor-indentation\|struct-brace-indentation\|tab-size\)\)'
+ \ nextgroup=indentNumber skipwhite skipempty
+
+syn match indentNumber display contained '\d\+\>'
+
+syn match indentOptions '-T'
+ \ nextgroup=indentIdent skipwhite skipempty
+
+syn match indentIdent display contained '\h\w*\>'
+
+syn keyword indentOptions -bacc --blank-lines-after-ifdefs
+ \ -bad --blank-lines-after-declarations
+ \ -badp --blank-lines-after-procedure-declarations
+ \ -bap --blank-lines-after-procedures
+ \ -bbb --blank-lines-before-block-comments
+ \ -bbo --break-before-boolean-operator
+ \ -bc --blank-lines-after-commas
+ \ -bfda --break-function-decl-args
+ \ -bfde --break-function-decl-args-end
+ \ -bl --braces-after-if-line
+ \ -blf --braces-after-func-def-line
+ \ -bls --braces-after-struct-decl-line
+ \ -br --braces-on-if-line
+ \ -brf --braces-on-func-def-line
+ \ -brs --braces-on-struct-decl-line
+ \ -bs --Bill-Shannon --blank-before-sizeof
+ \ -c++ --c-plus-plus
+ \ -cdb --comment-delimiters-on-blank-lines
+ \ -cdw --cuddle-do-while
+ \ -ce --cuddle-else
+ \ -cs --space-after-cast
+ \ -dj --left-justify-declarations
+ \ -eei --extra-expression-indentation
+ \ -fc1 --format-first-column-comments
+ \ -fca --format-all-comments
+ \ -gnu --gnu-style
+ \ -h --help --usage
+ \ -hnl --honour-newlines
+ \ -kr --k-and-r-style --kernighan-and-ritchie --kernighan-and-ritchie-style
+ \ -lp --continue-at-parentheses
+ \ -lps --leave-preprocessor-space
+ \ -nbacc --no-blank-lines-after-ifdefs
+ \ -nbad --no-blank-lines-after-declarations
+ \ -nbadp --no-blank-lines-after-procedure-declarations
+ \ -nbap --no-blank-lines-after-procedures
+ \ -nbbb --no-blank-lines-before-block-comments
+ \ -nbbo --break-after-boolean-operator
+ \ -nbc --no-blank-lines-after-commas
+ \ -nbfda --dont-break-function-decl-args
+ \ -nbfde --dont-break-function-decl-args-end
+ \ -nbs --no-Bill-Shannon --no-blank-before-sizeof
+ \ -ncdb --no-comment-delimiters-on-blank-lines
+ \ -ncdw --dont-cuddle-do-while
+ \ -nce --dont-cuddle-else
+ \ -ncs --no-space-after-casts
+ \ -ndj --dont-left-justify-declarations
+ \ -neei --no-extra-expression-indentation
+ \ -nfc1 --dont-format-first-column-comments
+ \ -nfca --dont-format-comments
+ \ -nhnl --ignore-newlines
+ \ -nip --dont-indent-parameters --no-parameter-indentation
+ \ -nlp --dont-line-up-parentheses
+ \ -nlps --remove-preprocessor-space
+ \ -npcs --no-space-after-function-call-names
+ \ -npmt
+ \ -npro --ignore-profile
+ \ -nprs --no-space-after-parentheses
+ \ -npsl --dont-break-procedure-type
+ \ -nsaf --no-space-after-for
+ \ -nsai --no-space-after-if
+ \ -nsaw --no-space-after-while
+ \ -nsc --dont-star-comments
+ \ -nsob --leave-optional-blank-lines
+ \ -nss --dont-space-special-semicolon
+ \ -nut --no-tabs
+ \ -nv --no-verbosity
+ \ -o --output
+ \ -o --output-file
+ \ -orig --berkeley --berkeley-style --original --original-style
+ \ -pcs --space-after-procedure-calls
+ \ -pmt --preserve-mtime
+ \ -prs --space-after-parentheses
+ \ -psl --procnames-start-lines
+ \ -saf --space-after-for
+ \ -sai --space-after-if
+ \ -saw --space-after-while
+ \ -sc --start-left-side-of-comments
+ \ -sob --swallow-optional-blank-lines
+ \ -ss --space-special-semicolon
+ \ -st --standard-output
+ \ -ut --use-tabs
+ \ -v --verbose
+ \ -version --version
+ \ -linux --linux-style
+
+if exists("indent_is_bsd")
+ syn keyword indentOptions -ip -ei -nei
+endif
+
+if exists("c_minlines")
+ let b:c_minlines = c_minlines
+else
+ if !exists("c_no_if0")
+ let b:c_minlines = 50 " #if 0 constructs can be long
+ else
+ let b:c_minlines = 15 " mostly for () constructs
+ endif
+endif
+
+hi def link indentError Error
+hi def link indentComment Comment
+hi def link indentTodo Todo
+hi def link indentOptions Keyword
+hi def link indentNumber Number
+hi def link indentIdent Identifier
+
+let b:current_syntax = "indent"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/inform.vim b/runtime/syntax/inform.vim
new file mode 100644
index 0000000..e3e1b3e
--- /dev/null
+++ b/runtime/syntax/inform.vim
@@ -0,0 +1,392 @@
+" Vim syntax file
+" Language: Inform
+" Maintainer: Stephen Thomas (stephen@gowarthomas.com)
+" URL: http://www.gowarthomas.com/informvim
+" Last Change: 2006 April 20
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" A bunch of useful Inform keywords. First, case insensitive stuff
+
+syn case ignore
+
+syn keyword informDefine Constant
+
+syn keyword informType Array Attribute Class Nearby
+syn keyword informType Object Property String Routine
+syn match informType "\<Global\>"
+
+syn keyword informInclude Import Include Link Replace System_file
+
+syn keyword informPreCondit End Endif Ifdef Ifndef Iftrue Iffalse Ifv3 Ifv5
+syn keyword informPreCondit Ifnot
+
+syn keyword informPreProc Abbreviate Default Fake_action Lowstring
+syn keyword informPreProc Message Release Serial Statusline Stub Switches
+syn keyword informPreProc Trace Zcharacter
+
+syn region informGlobalRegion matchgroup=informType start="\<Global\>" matchgroup=NONE skip=+!.*$\|".*"\|'.*'+ end=";" contains=ALLBUT,informGramPreProc,informPredicate,informGrammar,informAsm,informAsmObsolete
+
+syn keyword informGramPreProc contained Verb Extend
+
+if !exists("inform_highlight_simple")
+ syn keyword informLibAttrib absent animate clothing concealed container
+ syn keyword informLibAttrib door edible enterable female general light
+ syn keyword informLibAttrib lockable locked male moved neuter on open
+ syn keyword informLibAttrib openable pluralname proper scenery scored
+ syn keyword informLibAttrib static supporter switchable talkable
+ syn keyword informLibAttrib visited workflag worn
+ syn match informLibAttrib "\<transparent\>"
+
+ syn keyword informLibProp e_to se_to s_to sw_to w_to nw_to n_to ne_to
+ syn keyword informLibProp u_to d_to in_to out_to before after life
+ syn keyword informLibProp door_to with_key door_dir invent plural
+ syn keyword informLibProp add_to_scope list_together react_before
+ syn keyword informLibProp react_after grammar orders initial when_open
+ syn keyword informLibProp when_closed when_on when_off description
+ syn keyword informLibProp describe article cant_go found_in time_left
+ syn keyword informLibProp number time_out daemon each_turn capacity
+ syn keyword informLibProp name short_name short_name_indef parse_name
+ syn keyword informLibProp articles inside_description
+ if !exists("inform_highlight_old")
+ syn keyword informLibProp compass_look before_implicit
+ syn keyword informLibProp ext_initialise ext_messages
+ endif
+
+ syn keyword informLibObj e_obj se_obj s_obj sw_obj w_obj nw_obj n_obj
+ syn keyword informLibObj ne_obj u_obj d_obj in_obj out_obj compass
+ syn keyword informLibObj thedark selfobj player location second actor
+ syn keyword informLibObj noun
+ if !exists("inform_highlight_old")
+ syn keyword informLibObj LibraryExtensions
+ endif
+
+ syn keyword informLibRoutine Achieved AfterRoutines AddToScope
+ syn keyword informLibRoutine AllowPushDir Banner ChangeDefault
+ syn keyword informLibRoutine ChangePlayer CommonAncestor DictionaryLookup
+ syn keyword informLibRoutine DisplayStatus DoMenu DrawStatusLine
+ syn keyword informLibRoutine EnglishNumber HasLightSource GetGNAOfObject
+ syn keyword informLibRoutine IndirectlyContains IsSeeThrough Locale
+ syn keyword informLibRoutine LoopOverScope LTI_Insert MoveFloatingObjects
+ syn keyword informLibRoutine NextWord NextWordStopped NounDomain
+ syn keyword informLibRoutine ObjectIsUntouchable OffersLight ParseToken
+ syn keyword informLibRoutine PlaceInScope PlayerTo PrintShortName
+ syn keyword informLibRoutine PronounNotice ScopeWithin SetPronoun SetTime
+ syn keyword informLibRoutine StartDaemon StartTimer StopDaemon StopTimer
+ syn keyword informLibRoutine TestScope TryNumber UnsignedCompare
+ syn keyword informLibRoutine WordAddress WordInProperty WordLength
+ syn keyword informLibRoutine WriteListFrom YesOrNo ZRegion RunRoutines
+ syn keyword informLibRoutine AfterLife AfterPrompt Amusing BeforeParsing
+ syn keyword informLibRoutine ChooseObjects DarkToDark DeathMessage
+ syn keyword informLibRoutine GamePostRoutine GamePreRoutine Initialise
+ syn keyword informLibRoutine InScope LookRoutine NewRoom ParseNoun
+ syn keyword informLibRoutine ParseNumber ParserError PrintRank PrintVerb
+ syn keyword informLibRoutine PrintTaskName TimePasses UnknownVerb
+ if exists("inform_highlight_glulx")
+ syn keyword informLibRoutine IdentifyGlkObject HandleGlkEvent
+ syn keyword informLibRoutine InitGlkWindow
+ endif
+ if !exists("inform_highlight_old")
+ syn keyword informLibRoutine KeyCharPrimitive KeyDelay ClearScreen
+ syn keyword informLibRoutine MoveCursor MainWindow StatusLineHeight
+ syn keyword informLibRoutine ScreenWidth ScreenHeight SetColour
+ syn keyword informLibRoutine DecimalNumber PrintToBuffer Length
+ syn keyword informLibRoutine UpperCase LowerCase PrintCapitalised
+ syn keyword informLibRoutine Cap Centre
+ if exists("inform_highlight_glulx")
+ syn keyword informLibRoutine PrintAnything PrintAnyToArray
+ endif
+ endif
+
+ syn keyword informLibAction Quit Restart Restore Verify Save
+ syn keyword informLibAction ScriptOn ScriptOff Pronouns Score
+ syn keyword informLibAction Fullscore LMode1 LMode2 LMode3
+ syn keyword informLibAction NotifyOn NotifyOff Version Places
+ syn keyword informLibAction Objects TraceOn TraceOff TraceLevel
+ syn keyword informLibAction ActionsOn ActionsOff RoutinesOn
+ syn keyword informLibAction RoutinesOff TimersOn TimersOff
+ syn keyword informLibAction CommandsOn CommandsOff CommandsRead
+ syn keyword informLibAction Predictable XPurloin XAbstract XTree
+ syn keyword informLibAction Scope Goto Gonear Inv InvTall InvWide
+ syn keyword informLibAction Take Drop Remove PutOn Insert Transfer
+ syn keyword informLibAction Empty Enter Exit GetOff Go Goin Look
+ syn keyword informLibAction Examine Search Give Show Unlock Lock
+ syn keyword informLibAction SwitchOn SwitchOff Open Close Disrobe
+ syn keyword informLibAction Wear Eat Yes No Burn Pray Wake
+ syn keyword informLibAction WakeOther Consult Kiss Think Smell
+ syn keyword informLibAction Listen Taste Touch Dig Cut Jump
+ syn keyword informLibAction JumpOver Tie Drink Fill Sorry Strong
+ syn keyword informLibAction Mild Attack Swim Swing Blow Rub Set
+ syn keyword informLibAction SetTo WaveHands Wave Pull Push PushDir
+ syn keyword informLibAction Turn Squeeze LookUnder ThrowAt Tell
+ syn keyword informLibAction Answer Buy Ask AskFor Sing Climb Wait
+ syn keyword informLibAction Sleep LetGo Receive ThrownAt Order
+ syn keyword informLibAction TheSame PluralFound Miscellany Prompt
+ syn keyword informLibAction ChangesOn ChangesOff Showverb Showobj
+ syn keyword informLibAction EmptyT VagueGo
+ if exists("inform_highlight_glulx")
+ syn keyword informLibAction GlkList
+ endif
+
+ syn keyword informLibVariable keep_silent deadflag action special_number
+ syn keyword informLibVariable consult_from consult_words etype verb_num
+ syn keyword informLibVariable verb_word the_time real_location c_style
+ syn keyword informLibVariable parser_one parser_two listing_together wn
+ syn keyword informLibVariable parser_action scope_stage scope_reason
+ syn keyword informLibVariable action_to_be menu_item item_name item_width
+ syn keyword informLibVariable lm_o lm_n inventory_style task_scores
+ syn keyword informLibVariable inventory_stage
+
+ syn keyword informLibConst AMUSING_PROVIDED DEBUG Headline MAX_CARRIED
+ syn keyword informLibConst MAX_SCORE MAX_TIMERS NO_PLACES NUMBER_TASKS
+ syn keyword informLibConst OBJECT_SCORE ROOM_SCORE SACK_OBJECT Story
+ syn keyword informLibConst TASKS_PROVIDED WITHOUT_DIRECTIONS
+ syn keyword informLibConst NEWLINE_BIT INDENT_BIT FULLINV_BIT ENGLISH_BIT
+ syn keyword informLibConst RECURSE_BIT ALWAYS_BIT TERSE_BIT PARTINV_BIT
+ syn keyword informLibConst DEFART_BIT WORKFLAG_BIT ISARE_BIT CONCEAL_BIT
+ syn keyword informLibConst PARSING_REASON TALKING_REASON EACHTURN_REASON
+ syn keyword informLibConst REACT_BEFORE_REASON REACT_AFTER_REASON
+ syn keyword informLibConst TESTSCOPE_REASON LOOPOVERSCOPE_REASON
+ syn keyword informLibConst STUCK_PE UPTO_PE NUMBER_PE CANTSEE_PE TOOLIT_PE
+ syn keyword informLibConst NOTHELD_PE MULTI_PE MMULTI_PE VAGUE_PE EXCEPT_PE
+ syn keyword informLibConst ANIMA_PE VERB_PE SCENERY_PE ITGONE_PE
+ syn keyword informLibConst JUNKAFTER_PE TOOFEW_PE NOTHING_PE ASKSCOPE_PE
+ if !exists("inform_highlight_old")
+ syn keyword informLibConst WORDSIZE TARGET_ZCODE TARGET_GLULX
+ syn keyword informLibConst LIBRARY_PARSER LIBRARY_VERBLIB LIBRARY_GRAMMAR
+ syn keyword informLibConst LIBRARY_ENGLISH NO_SCORE START_MOVE
+ syn keyword informLibConst CLR_DEFAULT CLR_BLACK CLR_RED CLR_GREEN
+ syn keyword informLibConst CLR_YELLOW CLR_BLUE CLR_MAGENTA CLR_CYAN
+ syn keyword informLibConst CLR_WHITE CLR_PURPLE CLR_AZURE
+ syn keyword informLibConst WIN_ALL WIN_MAIN WIN_STATUS
+ endif
+endif
+
+" Now the case sensitive stuff.
+
+syntax case match
+
+syn keyword informSysFunc child children elder indirect parent random
+syn keyword informSysFunc sibling younger youngest metaclass
+if exists("inform_highlight_glulx")
+ syn keyword informSysFunc glk
+endif
+
+syn keyword informSysConst adjectives_table actions_table classes_table
+syn keyword informSysConst identifiers_table preactions_table version_number
+syn keyword informSysConst largest_object strings_offset code_offset
+syn keyword informSysConst dict_par1 dict_par2 dict_par3
+syn keyword informSysConst actual_largest_object static_memory_offset
+syn keyword informSysConst array_names_offset readable_memory_offset
+syn keyword informSysConst cpv__start cpv__end ipv__start ipv__end
+syn keyword informSysConst array__start array__end lowest_attribute_number
+syn keyword informSysConst highest_attribute_number attribute_names_array
+syn keyword informSysConst lowest_property_number highest_property_number
+syn keyword informSysConst property_names_array lowest_action_number
+syn keyword informSysConst highest_action_number action_names_array
+syn keyword informSysConst lowest_fake_action_number highest_fake_action_number
+syn keyword informSysConst fake_action_names_array lowest_routine_number
+syn keyword informSysConst highest_routine_number routines_array
+syn keyword informSysConst routine_names_array routine_flags_array
+syn keyword informSysConst lowest_global_number highest_global_number globals_array
+syn keyword informSysConst global_names_array global_flags_array
+syn keyword informSysConst lowest_array_number highest_array_number arrays_array
+syn keyword informSysConst array_names_array array_flags_array lowest_constant_number
+syn keyword informSysConst highest_constant_number constants_array constant_names_array
+syn keyword informSysConst lowest_class_number highest_class_number class_objects_array
+syn keyword informSysConst lowest_object_number highest_object_number
+if !exists("inform_highlight_old")
+ syn keyword informSysConst sys_statusline_flag
+endif
+
+syn keyword informConditional default else if switch
+
+syn keyword informRepeat break continue do for objectloop until while
+
+syn keyword informStatement box font give inversion jump move new_line
+syn keyword informStatement print print_ret quit read remove restore return
+syn keyword informStatement rfalse rtrue save spaces string style
+
+syn keyword informOperator roman reverse bold underline fixed on off to
+syn keyword informOperator near from
+
+syn keyword informKeyword dictionary symbols objects verbs assembly
+syn keyword informKeyword expressions lines tokens linker on off alias long
+syn keyword informKeyword additive score time string table
+syn keyword informKeyword with private has class error fatalerror
+syn keyword informKeyword warning self
+if !exists("inform_highlight_old")
+ syn keyword informKeyword buffer
+endif
+
+syn keyword informMetaAttrib remaining create destroy recreate copy call
+syn keyword informMetaAttrib print_to_array
+
+syn keyword informPredicate has hasnt in notin ofclass or
+syn keyword informPredicate provides
+
+syn keyword informGrammar contained noun held multi multiheld multiexcept
+syn keyword informGrammar contained multiinside creature special number
+syn keyword informGrammar contained scope topic reverse meta only replace
+syn keyword informGrammar contained first last
+
+syn keyword informKeywordObsolete contained initial data initstr
+
+syn keyword informTodo contained TODO
+
+" Assembly language mnemonics must be preceded by a '@'.
+
+syn match informAsmContainer "@\s*\k*" contains=informAsm,informAsmObsolete
+
+if exists("inform_highlight_glulx")
+ syn keyword informAsm contained nop add sub mul div mod neg bitand bitor
+ syn keyword informAsm contained bitxor bitnot shiftl sshiftr ushiftr jump jz
+ syn keyword informAsm contained jnz jeq jne jlt jge jgt jle jltu jgeu jgtu
+ syn keyword informAsm contained jleu call return catch throw tailcall copy
+ syn keyword informAsm contained copys copyb sexs sexb aload aloads aloadb
+ syn keyword informAsm contained aloadbit astore astores astoreb astorebit
+ syn keyword informAsm contained stkcount stkpeek stkswap stkroll stkcopy
+ syn keyword informAsm contained streamchar streamnum streamstr gestalt
+ syn keyword informAsm contained debugtrap getmemsize setmemsize jumpabs
+ syn keyword informAsm contained random setrandom quit verify restart save
+ syn keyword informAsm contained restore saveundo restoreundo protect glk
+ syn keyword informAsm contained getstringtbl setstringtbl getiosys setiosys
+ syn keyword informAsm contained linearsearch binarysearch linkedsearch
+ syn keyword informAsm contained callf callfi callfii callfiii
+else
+ syn keyword informAsm contained je jl jg dec_chk inc_chk jin test or and
+ syn keyword informAsm contained test_attr set_attr clear_attr store
+ syn keyword informAsm contained insert_obj loadw loadb get_prop
+ syn keyword informAsm contained get_prop_addr get_next_prop add sub mul div
+ syn keyword informAsm contained mod call storew storeb put_prop sread
+ syn keyword informAsm contained print_num random push pull
+ syn keyword informAsm contained split_window set_window output_stream
+ syn keyword informAsm contained input_stream sound_effect jz get_sibling
+ syn keyword informAsm contained get_child get_parent get_prop_len inc dec
+ syn keyword informAsm contained remove_obj print_obj ret jump
+ syn keyword informAsm contained load not rtrue rfalse print
+ syn keyword informAsm contained print_ret nop save restore restart
+ syn keyword informAsm contained ret_popped pop quit new_line show_status
+ syn keyword informAsm contained verify call_2s call_vs aread call_vs2
+ syn keyword informAsm contained erase_window erase_line set_cursor get_cursor
+ syn keyword informAsm contained set_text_style buffer_mode read_char
+ syn keyword informAsm contained scan_table call_1s call_2n set_colour throw
+ syn keyword informAsm contained call_vn call_vn2 tokenise encode_text
+ syn keyword informAsm contained copy_table print_table check_arg_count
+ syn keyword informAsm contained call_1n catch piracy log_shift art_shift
+ syn keyword informAsm contained set_font save_undo restore_undo draw_picture
+ syn keyword informAsm contained picture_data erase_picture set_margins
+ syn keyword informAsm contained move_window window_size window_style
+ syn keyword informAsm contained get_wind_prop scroll_window pop_stack
+ syn keyword informAsm contained read_mouse mouse_window push_stack
+ syn keyword informAsm contained put_wind_prop print_form make_menu
+ syn keyword informAsm contained picture_table
+ if !exists("inform_highlight_old")
+ syn keyword informAsm contained check_unicode print_unicode
+ endif
+ syn keyword informAsmObsolete contained print_paddr print_addr print_char
+endif
+
+" Handling for different versions of VIM.
+
+setlocal iskeyword+=$
+command -nargs=+ SynDisplay syntax <args> display
+
+" Grammar sections.
+
+syn region informGrammarSection matchgroup=informGramPreProc start="\<Verb\|Extend\>" skip=+".*"+ end=";"he=e-1 contains=ALLBUT,informAsm
+
+" Special character forms.
+
+SynDisplay match informBadAccent contained "@[^{[:digit:]]\D"
+SynDisplay match informBadAccent contained "@{[^}]*}"
+SynDisplay match informAccent contained "@:[aouAOUeiyEI]"
+SynDisplay match informAccent contained "@'[aeiouyAEIOUY]"
+SynDisplay match informAccent contained "@`[aeiouAEIOU]"
+SynDisplay match informAccent contained "@\^[aeiouAEIOU]"
+SynDisplay match informAccent contained "@\~[anoANO]"
+SynDisplay match informAccent contained "@/[oO]"
+SynDisplay match informAccent contained "@ss\|@<<\|@>>\|@oa\|@oA\|@ae\|@AE\|@cc\|@cC"
+SynDisplay match informAccent contained "@th\|@et\|@Th\|@Et\|@LL\|@oe\|@OE\|@!!\|@??"
+SynDisplay match informAccent contained "@{\x\{1,4}}"
+SynDisplay match informBadStrUnicode contained "@@\D"
+SynDisplay match informStringUnicode contained "@@\d\+"
+SynDisplay match informStringCode contained "@\d\d"
+
+" String and Character constants. Ordering is important here.
+syn region informString start=+"+ skip=+\\\\+ end=+"+ contains=informAccent,informStringUnicode,informStringCode,informBadAccent,informBadStrUnicode
+syn region informDictString start="'" end="'" contains=informAccent,informBadAccent
+SynDisplay match informBadDictString "''"
+SynDisplay match informDictString "'''"
+
+" Integer numbers: decimal, hexadecimal and binary.
+SynDisplay match informNumber "\<\d\+\>"
+SynDisplay match informNumber "\<\$\x\+\>"
+SynDisplay match informNumber "\<\$\$[01]\+\>"
+
+" Comments
+syn match informComment "!.*" contains=informTodo
+
+" Syncronization
+syn sync match informSyncStringEnd grouphere NONE /"[;,]\s*$/
+syn sync match informSyncRoutineEnd grouphere NONE /][;,]\s*$/
+syn sync match informSyncCommentEnd grouphere NONE /^\s*!.*$/
+syn sync match informSyncRoutine groupthere informGrammarSection "\<Verb\|Extend\>"
+syn sync maxlines=500
+
+delcommand SynDisplay
+
+" The default highlighting.
+
+hi def link informDefine Define
+hi def link informType Type
+hi def link informInclude Include
+hi def link informPreCondit PreCondit
+hi def link informPreProc PreProc
+hi def link informGramPreProc PreProc
+hi def link informAsm Special
+if !exists("inform_suppress_obsolete")
+hi def link informAsmObsolete informError
+hi def link informKeywordObsolete informError
+else
+hi def link informAsmObsolete Special
+hi def link informKeywordObsolete Keyword
+endif
+hi def link informPredicate Operator
+hi def link informSysFunc Identifier
+hi def link informSysConst Identifier
+hi def link informConditional Conditional
+hi def link informRepeat Repeat
+hi def link informStatement Statement
+hi def link informOperator Operator
+hi def link informKeyword Keyword
+hi def link informGrammar Keyword
+hi def link informDictString String
+hi def link informNumber Number
+hi def link informError Error
+hi def link informString String
+hi def link informComment Comment
+hi def link informAccent Special
+hi def link informStringUnicode Special
+hi def link informStringCode Special
+hi def link informTodo Todo
+if !exists("inform_highlight_simple")
+hi def link informLibAttrib Identifier
+hi def link informLibProp Identifier
+hi def link informLibObj Identifier
+hi def link informLibRoutine Identifier
+hi def link informLibVariable Identifier
+hi def link informLibConst Identifier
+hi def link informLibAction Identifier
+endif
+hi def link informBadDictString informError
+hi def link informBadAccent informError
+hi def link informBadStrUnicode informError
+
+
+let b:current_syntax = "inform"
+
+" vim: ts=8
diff --git a/runtime/syntax/initex.vim b/runtime/syntax/initex.vim
new file mode 100644
index 0000000..564a6e0
--- /dev/null
+++ b/runtime/syntax/initex.vim
@@ -0,0 +1,376 @@
+" Vim syntax file
+" Language: TeX (core definition)
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" This follows the grouping (sort of) found at
+" http: //www.tug.org/utilities/plain/cseq.html#top-fam
+
+syn keyword initexTodo TODO FIXME XXX NOTE
+
+syn match initexComment display contains=initexTodo
+ \ '\\\@<!\%(\\\\\)*\zs%.*$'
+
+syn match initexDimension display contains=@NoSpell
+ \ '[+-]\=\s*\%(\d\+\%([.,]\d*\)\=\|[.,]\d\+\)\s*\%(true\)\=\s*\%(p[tc]\|in\|bp\|c[mc]\|m[mu]\|dd\|sp\|e[mx]\)\>'
+
+syn cluster initexBox
+ \ contains=initexBoxCommand,initexBoxInternalQuantity,
+ \ initexBoxParameterDimen,initexBoxParameterInteger,
+ \ initexBoxParameterToken
+
+syn cluster initexCharacter
+ \ contains=initexCharacterCommand,initexCharacterInternalQuantity,
+ \ initexCharacterParameterInteger
+
+syn cluster initexDebugging
+ \ contains=initexDebuggingCommand,initexDebuggingParameterInteger,
+ \ initexDebuggingParameterToken
+
+syn cluster initexFileIO
+ \ contains=initexFileIOCommand,initexFileIOInternalQuantity,
+ \ initexFileIOParameterToken
+
+syn cluster initexFonts
+ \ contains=initexFontsCommand,initexFontsInternalQuantity
+
+syn cluster initexGlue
+ \ contains=initexGlueCommand,initexGlueDerivedCommand
+
+syn cluster initexHyphenation
+ \ contains=initexHyphenationCommand,initexHyphenationDerivedCommand,
+ \ initexHyphenationInternalQuantity,initexHyphenationParameterInteger
+
+syn cluster initexInserts
+ \ contains=initexInsertsCommand,initexInsertsParameterDimen,
+ \ initexInsertsParameterGlue,initexInsertsParameterInteger
+
+syn cluster initexJob
+ \ contains=initexJobCommand,initexJobInternalQuantity,
+ \ initexJobParameterInteger
+
+syn cluster initexKern
+ \ contains=initexKernCommand,initexKernInternalQuantity
+
+syn cluster initexLogic
+ \ contains=initexLogicCommand
+
+syn cluster initexMacro
+ \ contains=initexMacroCommand,initexMacroDerivedCommand,
+ \ initexMacroParameterInteger
+
+syn cluster initexMarks
+ \ contains=initexMarksCommand
+
+syn cluster initexMath
+ \ contains=initexMathCommand,initexMathDerivedCommand,
+ \ initexMathInternalQuantity,initexMathParameterDimen,
+ \ initexMathParameterGlue,initexMathParameterInteger,
+ \ initexMathParameterMuglue,initexMathParameterToken
+
+syn cluster initexPage
+ \ contains=initexPageInternalQuantity,initexPageParameterDimen,
+ \ initexPageParameterGlue
+
+syn cluster initexParagraph
+ \ contains=initexParagraphCommand,initexParagraphInternalQuantity,
+ \ initexParagraphParameterDimen,initexParagraphParameterGlue,
+ \ initexParagraphParameterInteger,initexParagraphParameterToken
+
+syn cluster initexPenalties
+ \ contains=initexPenaltiesCommand,initexPenaltiesInternalQuantity,
+ \ initexPenaltiesParameterInteger
+
+syn cluster initexRegisters
+ \ contains=initexRegistersCommand,initexRegistersInternalQuantity
+
+syn cluster initexTables
+ \ contains=initexTablesCommand,initexTablesParameterGlue,
+ \ initexTablesParameterToken
+
+syn cluster initexCommand
+ \ contains=initexBoxCommand,initexCharacterCommand,
+ \ initexDebuggingCommand,initexFileIOCommand,
+ \ initexFontsCommand,initexGlueCommand,
+ \ initexHyphenationCommand,initexInsertsCommand,
+ \ initexJobCommand,initexKernCommand,initexLogicCommand,
+ \ initexMacroCommand,initexMarksCommand,initexMathCommand,
+ \ initexParagraphCommand,initexPenaltiesCommand,initexRegistersCommand,
+ \ initexTablesCommand
+
+syn match initexBoxCommand display contains=@NoSpell
+ \ '\\\%([hv]\=box\|[cx]\=leaders\|copy\|[hv]rule\|lastbox\|setbox\|un[hv]\%(box\|copy\)\|vtop\)\>'
+syn match initexCharacterCommand display contains=@NoSpell
+ \ '\\\%([] ]\|\%(^^M\|accent\|char\|\%(lower\|upper\)case\|number\|romannumeral\|string\)\>\)'
+syn match initexDebuggingCommand display contains=@NoSpell
+ \ '\\\%(\%(batch\|\%(non\|error\)stop\|scroll\)mode\|\%(err\)\=message\|meaning\|show\%(box\%(breadth\|depth\)\=\|lists\|the\)\)\>'
+syn match initexFileIOCommand display contains=@NoSpell
+ \ '\\\%(\%(close\|open\)\%(in\|out\)\|endinput\|immediate\|input\|read\|shipout\|special\|write\)\>'
+syn match initexFontsCommand display contains=@NoSpell
+ \ '\\\%(/\|fontname\)\>'
+syn match initexGlueCommand display contains=@NoSpell
+ \ '\\\%([hv]\|un\)skip\>'
+syn match initexHyphenationCommand display contains=@NoSpell
+ \ '\\\%(discretionary\|hyphenation\|patterns\|setlanguage\)\>'
+syn match initexInsertsCommand display contains=@NoSpell
+ \ '\\\%(insert\|split\%(bot\|first\)mark\|vsplit\)\>'
+syn match initexJobCommand display contains=@NoSpell
+ \ '\\\%(dump\|end\|jobname\)\>'
+syn match initexKernCommand display contains=@NoSpell
+ \ '\\\%(kern\|lower\|move\%(left\|right\)\|raise\|unkern\)\>'
+syn match initexLogicCommand display contains=@NoSpell
+ \ '\\\%(else\|fi\|if[a-zA-Z@]\+\|or\)\>'
+" \ '\\\%(else\|fi\|if\%(case\|cat\|dim\|eof\|false\|[hv]box\|[hmv]mode\|inner\|num\|odd\|true\|void\|x\)\=\|or\)\>'
+syn match initexMacroCommand display contains=@NoSpell
+ \ '\\\%(after\%(assignment\|group\)\|\%(begin\|end\)group\|\%(end\)\=csname\|e\=def\|expandafter\|futurelet\|global\|let\|long\|noexpand\|outer\|relax\|the\)\>'
+syn match initexMarksCommand display contains=@NoSpell
+ \ '\\\%(bot\|first\|top\)\=mark\>'
+syn match initexMathCommand display contains=@NoSpell
+ \ '\\\%(abovewithdelims\|delimiter\|display\%(limits\|style\)\|l\=eqno\|left\|\%(no\)\=limits\|math\%(accent\|bin\|char\|choice\|close\|code\|inner\|op\|open\|ord\|punct\|rel\)\|mkern\|mskip\|muskipdef\|nonscript\|\%(over\|under\)line\|radical\|right\|\%(\%(script\)\{1,2}\|text\)style\|vcenter\)\>'
+syn match initexParagraphCommand display contains=@NoSpell
+ \ '\\\%(ignorespaces\|indent\|no\%(boundary\|indent\)\|par\|vadjust\)\>'
+syn match initexPenaltiesCommand display contains=@NoSpell
+ \ '\\\%(un\)\=penalty\>'
+syn match initexRegistersCommand display contains=@NoSpell
+ \ '\\\%(advance\|\%(count\|dimen\|skip\|toks\)def\|divide\|multiply\)\>'
+syn match initexTablesCommand display contains=@NoSpell
+ \ '\\\%(cr\|crcr\|[hv]align\|noalign\|omit\|span\)\>'
+
+syn cluster initexDerivedCommand
+ \ contains=initexGlueDerivedCommand,initexHyphenationDerivedCommand,
+ \ initexMacroDerivedCommand,initexMathDerivedCommand
+
+syn match initexGlueDerivedCommand display contains=@NoSpell
+ \ '\\\%([hv]fil\%(l\|neg\)\=\|[hv]ss\)\>'
+syn match initexHyphenationDerivedCommand display contains=@NoSpell
+ \ '\\-'
+syn match initexMacroDerivedCommand display contains=@NoSpell
+ \ '\\[gx]def\>'
+syn match initexMathDerivedCommand display contains=@NoSpell
+ \ '\\\%(above\|atop\%(withdelims\)\=\|mathchardef\|over\|overwithdelims\)\>'
+
+syn cluster initexInternalQuantity
+ \ contains=initexBoxInternalQuantity,initexCharacterInternalQuantity,
+ \ initexFileIOInternalQuantity,initexFontsInternalQuantity,
+ \ initexHyphenationInternalQuantity,initexJobInternalQuantity,
+ \ initexKernInternalQuantity,initexMathInternalQuantity,
+ \ initexPageInternalQuantity,initexParagraphInternalQuantity,
+ \ initexPenaltiesInternalQuantity,initexRegistersInternalQuantity
+
+syn match initexBoxInternalQuantity display contains=@NoSpell
+ \ '\\\%(badness\|dp\|ht\|prevdepth\|wd\)\>'
+syn match initexCharacterInternalQuantity display contains=@NoSpell
+ \ '\\\%(catcode\|chardef\|\%([ul]c\|sf\)code\)\>'
+syn match initexFileIOInternalQuantity display contains=@NoSpell
+ \ '\\inputlineno\>'
+syn match initexFontsInternalQuantity display contains=@NoSpell
+ \ '\\\%(font\%(dimen\)\=\|nullfont\)\>'
+syn match initexHyphenationInternalQuantity display contains=@NoSpell
+ \ '\\hyphenchar\>'
+syn match initexJobInternalQuantity display contains=@NoSpell
+ \ '\\deadcycles\>'
+syn match initexKernInternalQuantity display contains=@NoSpell
+ \ '\\lastkern\>'
+syn match initexMathInternalQuantity display contains=@NoSpell
+ \ '\\\%(delcode\|mathcode\|muskip\|\%(\%(script\)\{1,2}\|text\)font\|skewchar\)\>'
+syn match initexPageInternalQuantity display contains=@NoSpell
+ \ '\\page\%(depth\|fil\{1,3}stretch\|goal\|shrink\|stretch\|total\)\>'
+syn match initexParagraphInternalQuantity display contains=@NoSpell
+ \ '\\\%(prevgraf\|spacefactor\)\>'
+syn match initexPenaltiesInternalQuantity display contains=@NoSpell
+ \ '\\lastpenalty\>'
+syn match initexRegistersInternalQuantity display contains=@NoSpell
+ \ '\\\%(count\|dimen\|skip\|toks\)\d\+\>'
+
+syn cluster initexParameterDimen
+ \ contains=initexBoxParameterDimen,initexInsertsParameterDimen,
+ \ initexMathParameterDimen,initexPageParameterDimen,
+ \ initexParagraphParameterDimen
+
+syn match initexBoxParameterDimen display contains=@NoSpell
+ \ '\\\%(boxmaxdepth\|[hv]fuzz\|overfullrule\)\>'
+syn match initexInsertsParameterDimen display contains=@NoSpell
+ \ '\\splitmaxdepth\>'
+syn match initexMathParameterDimen display contains=@NoSpell
+ \ '\\\%(delimitershortfall\|display\%(indent\|width\)\|mathsurround\|nulldelimiterspace\|predisplaysize\|scriptspace\)\>'
+syn match initexPageParameterDimen display contains=@NoSpell
+ \ '\\\%([hv]offset\|maxdepth\|vsize\)\>'
+syn match initexParagraphParameterDimen display contains=@NoSpell
+ \ '\\\%(emergencystretch\|\%(hang\|par\)indent\|hsize\|lineskiplimit\)\>'
+
+syn cluster initexParameterGlue
+ \ contains=initexInsertsParameterGlue,initexMathParameterGlue,
+ \ initexPageParameterGlue,initexParagraphParameterGlue,
+ \ initexTablesParameterGlue
+
+syn match initexInsertsParameterGlue display contains=@NoSpell
+ \ '\\splittopskip\>'
+syn match initexMathParameterGlue display contains=@NoSpell
+ \ '\\\%(above\|below\)display\%(short\)\=skip\>'
+syn match initexPageParameterGlue display contains=@NoSpell
+ \ '\\topskip\>'
+syn match initexParagraphParameterGlue display contains=@NoSpell
+ \ '\\\%(baseline\|left\|line\|par\%(fill\)\=\|right\|x\=space\)skip\>'
+syn match initexTablesParameterGlue display contains=@NoSpell
+ \ '\\tabskip\>'
+
+syn cluster initexParameterInteger
+ \ contains=initexBoxParameterInteger,initexCharacterParameterInteger,
+ \ initexDebuggingParameterInteger,initexHyphenationParameterInteger,
+ \ initexInsertsParameterInteger,initexJobParameterInteger,
+ \ initexMacroParameterInteger,initexMathParameterInteger,
+ \ initexParagraphParameterInteger,initexPenaltiesParameterInteger,
+
+syn match initexBoxParameterInteger display contains=@NoSpell
+ \ '\\[hv]badness\>'
+syn match initexCharacterParameterInteger display contains=@NoSpell
+ \ '\\\%(\%(endline\|escape\|newline\)char\)\>'
+syn match initexDebuggingParameterInteger display contains=@NoSpell
+ \ '\\\%(errorcontextlines\|pausing\|tracing\%(commands\|lostchars\|macros\|online\|output\|pages\|paragraphs\|restores|stats\)\)\>'
+syn match initexHyphenationParameterInteger display contains=@NoSpell
+ \ '\\\%(defaulthyphenchar\|language\|\%(left\|right\)hyphenmin\|uchyph\)\>'
+syn match initexInsertsParameterInteger display contains=@NoSpell
+ \ '\\\%(holdinginserts\)\>'
+syn match initexJobParameterInteger display contains=@NoSpell
+ \ '\\\%(day\|mag\|maxdeadcycles\|month\|time\|year\)\>'
+syn match initexMacroParameterInteger display contains=@NoSpell
+ \ '\\globaldefs\>'
+syn match initexMathParameterInteger display contains=@NoSpell
+ \ '\\\%(binoppenalty\|defaultskewchar\|delimiterfactor\|displaywidowpenalty\|fam\|\%(post\|pre\)displaypenalty\|relpenalty\)\>'
+syn match initexParagraphParameterInteger display contains=@NoSpell
+ \ '\\\%(\%(adj\|\%(double\|final\)hyphen\)demerits\|looseness\|\%(pre\)\=tolerance\)\>'
+syn match initexPenaltiesParameterInteger display contains=@NoSpell
+ \ '\\\%(broken\|club\|exhyphen\|floating\|hyphen\|interline\|line\|output\|widow\)penalty\>'
+
+syn cluster initexParameterMuglue
+ \ contains=initexMathParameterMuglue
+
+syn match initexMathParameterMuglue display contains=@NoSpell
+ \ '\\\%(med\|thick\|thin\)muskip\>'
+
+syn cluster initexParameterDimen
+ \ contains=initexBoxParameterToken,initexDebuggingParameterToken,
+ \ initexFileIOParameterToken,initexMathParameterToken,
+ \ initexParagraphParameterToken,initexTablesParameterToken
+
+syn match initexBoxParameterToken display contains=@NoSpell
+ \ '\\every[hv]box\>'
+syn match initexDebuggingParameterToken display contains=@NoSpell
+ \ '\\errhelp\>'
+syn match initexFileIOParameterToken display contains=@NoSpell
+ \ '\\output\>'
+syn match initexMathParameterToken display contains=@NoSpell
+ \ '\\every\%(display\|math\)\>'
+syn match initexParagraphParameterToken display contains=@NoSpell
+ \ '\\everypar\>'
+syn match initexTablesParameterToken display contains=@NoSpell
+ \ '\\everycr\>'
+
+
+hi def link initexCharacter Character
+hi def link initexNumber Number
+
+hi def link initexIdentifier Identifier
+
+hi def link initexStatement Statement
+hi def link initexConditional Conditional
+
+hi def link initexPreProc PreProc
+hi def link initexMacro Macro
+
+hi def link initexType Type
+
+hi def link initexDebug Debug
+
+hi def link initexTodo Todo
+hi def link initexComment Comment
+hi def link initexDimension initexNumber
+
+hi def link initexCommand initexStatement
+hi def link initexBoxCommand initexCommand
+hi def link initexCharacterCommand initexCharacter
+hi def link initexDebuggingCommand initexDebug
+hi def link initexFileIOCommand initexCommand
+hi def link initexFontsCommand initexType
+hi def link initexGlueCommand initexCommand
+hi def link initexHyphenationCommand initexCommand
+hi def link initexInsertsCommand initexCommand
+hi def link initexJobCommand initexPreProc
+hi def link initexKernCommand initexCommand
+hi def link initexLogicCommand initexConditional
+hi def link initexMacroCommand initexMacro
+hi def link initexMarksCommand initexCommand
+hi def link initexMathCommand initexCommand
+hi def link initexParagraphCommand initexCommand
+hi def link initexPenaltiesCommand initexCommand
+hi def link initexRegistersCommand initexCommand
+hi def link initexTablesCommand initexCommand
+
+hi def link initexDerivedCommand initexStatement
+hi def link initexGlueDerivedCommand initexDerivedCommand
+hi def link initexHyphenationDerivedCommand initexDerivedCommand
+hi def link initexMacroDerivedCommand initexDerivedCommand
+hi def link initexMathDerivedCommand initexDerivedCommand
+
+hi def link initexInternalQuantity initexIdentifier
+hi def link initexBoxInternalQuantity initexInternalQuantity
+hi def link initexCharacterInternalQuantity initexInternalQuantity
+hi def link initexFileIOInternalQuantity initexInternalQuantity
+hi def link initexFontsInternalQuantity initexInternalQuantity
+hi def link initexHyphenationInternalQuantity initexInternalQuantity
+hi def link initexJobInternalQuantity initexInternalQuantity
+hi def link initexKernInternalQuantity initexInternalQuantity
+hi def link initexMathInternalQuantity initexInternalQuantity
+hi def link initexPageInternalQuantity initexInternalQuantity
+hi def link initexParagraphInternalQuantity initexInternalQuantity
+hi def link initexPenaltiesInternalQuantity initexInternalQuantity
+hi def link initexRegistersInternalQuantity initexInternalQuantity
+
+hi def link initexParameterDimen initexNumber
+hi def link initexBoxParameterDimen initexParameterDimen
+hi def link initexInsertsParameterDimen initexParameterDimen
+hi def link initexMathParameterDimen initexParameterDimen
+hi def link initexPageParameterDimen initexParameterDimen
+hi def link initexParagraphParameterDimen initexParameterDimen
+
+hi def link initexParameterGlue initexNumber
+hi def link initexInsertsParameterGlue initexParameterGlue
+hi def link initexMathParameterGlue initexParameterGlue
+hi def link initexPageParameterGlue initexParameterGlue
+hi def link initexParagraphParameterGlue initexParameterGlue
+hi def link initexTablesParameterGlue initexParameterGlue
+
+hi def link initexParameterInteger initexNumber
+hi def link initexBoxParameterInteger initexParameterInteger
+hi def link initexCharacterParameterInteger initexParameterInteger
+hi def link initexDebuggingParameterInteger initexParameterInteger
+hi def link initexHyphenationParameterInteger initexParameterInteger
+hi def link initexInsertsParameterInteger initexParameterInteger
+hi def link initexJobParameterInteger initexParameterInteger
+hi def link initexMacroParameterInteger initexParameterInteger
+hi def link initexMathParameterInteger initexParameterInteger
+hi def link initexParagraphParameterInteger initexParameterInteger
+hi def link initexPenaltiesParameterInteger initexParameterInteger
+
+hi def link initexParameterMuglue initexNumber
+hi def link initexMathParameterMuglue initexParameterMuglue
+
+hi def link initexParameterToken initexIdentifier
+hi def link initexBoxParameterToken initexParameterToken
+hi def link initexDebuggingParameterToken initexParameterToken
+hi def link initexFileIOParameterToken initexParameterToken
+hi def link initexMathParameterToken initexParameterToken
+hi def link initexParagraphParameterToken initexParameterToken
+hi def link initexTablesParameterToken initexParameterToken
+
+let b:current_syntax = "initex"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/initng.vim b/runtime/syntax/initng.vim
new file mode 100644
index 0000000..959c79a
--- /dev/null
+++ b/runtime/syntax/initng.vim
@@ -0,0 +1,90 @@
+" Vim syntax file
+" Language: initng .i files
+" Maintainer: Elan Ruusamäe <glen@pld-linux.org>
+" URL: http://glen.alkohol.ee/pld/initng/
+" License: GPL v2
+" Version: 0.13
+" Last Change: $Date: 2007/05/05 17:17:40 $
+"
+" Syntax highlighting for initng .i files. Inherits from sh.vim and adds
+" in the hiliting to start/stop {} blocks. Requires vim 6.3 or later.
+
+if &compatible || v:version < 603
+ finish
+endif
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+let is_bash = 1
+syn include @shTop syntax/sh.vim
+
+syn region initngService matchgroup=initngServiceHeader start="^\s*\(service\|virtual\|daemon\|class\|cron\)\s\+\(\(\w\|[-/*]\)\+\(\s\+:\s\+\(\w\|[-/*]\)\+\)\?\)\s\+{" end="}" contains=@initngServiceCluster
+syn cluster initngServiceCluster contains=initngComment,initngAction,initngServiceOption,initngServiceHeader,initngDelim,initngVariable
+
+syn region initngAction matchgroup=initngActionHeader start="^\s*\(script start\|script stop\|script run\)\s*=\s*{" end="}" contains=@initngActionCluster
+syn cluster initngActionCluster contains=@shTop
+
+syn match initngDelim /[{}]/ contained
+
+syn region initngString start=/"/ end=/"/ skip=/\\"/
+
+" option = value
+syn match initngServiceOption /.\+\s*=.\+;/ contains=initngServiceKeywords,initngSubstMacro contained
+" option without value
+syn match initngServiceOption /\w\+;/ contains=initngServiceKeywords,initngSubstMacro contained
+
+" options with value
+syn keyword initngServiceKeywords also_stop need use nice setuid contained
+syn keyword initngServiceKeywords delay chdir suid sgid start_pause env_file env_parse pid_file pidfile contained
+syn keyword initngServiceKeywords pid_of up_when_pid_set stdout stderr syncron just_before contained
+syn keyword initngServiceKeywords provide lockfile daemon_stops_badly contained
+syn match initngServiceKeywords /\(script\|exec\(_args\)\?\) \(start\|stop\|daemon\)/ contained
+syn match initngServiceKeywords /env\s\+\w\+/ contained
+
+" rlimits
+syn keyword initngServiceKeywords rlimit_cpu_hard rlimit_core_soft contained
+
+" single options
+syn keyword initngServiceKeywords last respawn network_provider require_network require_file critical forks contained
+" cron options
+syn keyword initngServiceKeywords hourly contained
+syn match initngVariable /\${\?\w\+\}\?/
+
+" Substituted @foo@ macros:
+" ==========
+syn match initngSubstMacro /@[^@]\+@/ contained
+syn cluster initngActionCluster add=initngSubstMacro
+syn cluster shCommandSubList add=initngSubstMacro
+
+" Comments:
+" ==========
+syn cluster initngCommentGroup contains=initngTodo,@Spell
+syn keyword initngTodo TODO FIXME XXX contained
+syn match initngComment /#.*$/ contains=@initngCommentGroup
+
+" install_service #macros
+" TODO: syntax check for ifd-endd pairs
+" ==========
+syn region initngDefine start="^#\(endd\|elsed\|exec\|ifd\|endexec\|endd\)\>" skip="\\$" end="$" end="#"me=s-1
+syn cluster shCommentGroup add=initngDefine
+syn cluster initngCommentGroup add=initngDefine
+
+hi def link initngComment Comment
+hi def link initngTodo Todo
+
+hi def link initngString String
+hi def link initngServiceKeywords Define
+
+hi def link initngServiceHeader Keyword
+hi def link initngActionHeader Type
+hi def link initngDelim Delimiter
+
+hi def link initngVariable PreProc
+hi def link initngSubstMacro Comment
+hi def link initngDefine Macro
+
+let b:current_syntax = "initng"
diff --git a/runtime/syntax/inittab.vim b/runtime/syntax/inittab.vim
new file mode 100644
index 0000000..fc5adfc
--- /dev/null
+++ b/runtime/syntax/inittab.vim
@@ -0,0 +1,62 @@
+" Vim syntax file
+" Language: SysV-compatible init process control file `inittab'
+" Maintainer: Donovan Keohane <donovan.keohane@gmail.com>
+" Previous Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
+" Last Change: 2019-11-19
+
+" Setup
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+" Base constructs
+syn match inittabError "[^:]\+:"me=e-1 contained
+syn match inittabError "[^:]\+$" contained
+syn match inittabComment "^[#:].*$" contains=inittabFixme
+syn match inittabComment "#.*$" contained contains=inittabFixme
+syn keyword inittabFixme FIXME TODO XXX NOT
+
+" Shell
+syn region inittabShString start=+"+ end=+"+ skip=+\\\\\|\\\"+ contained
+syn region inittabShString start=+'+ end=+'+ contained
+syn match inittabShOption "\s[-+][[:alnum:]]\+"ms=s+1 contained
+syn match inittabShOption "\s--[:alnum:][-[:alnum:]]*"ms=s+1 contained
+syn match inittabShCommand "\S\+" contained
+syn cluster inittabSh add=inittabShOption,inittabShString,inittabShCommand
+
+" Keywords
+syn keyword inittabActionName respawn wait once boot bootwait off ondemand sysinit powerwait powerfail powerokwait powerfailnow ctrlaltdel kbrequest initdefault contained
+
+" Line parser
+syn match inittabId "^[[:alnum:]~]\{1,4}" nextgroup=inittabColonRunLevels,inittabError
+syn match inittabColonRunLevels ":" contained nextgroup=inittabRunLevels,inittabColonAction,inittabError
+syn match inittabRunLevels "[0-6A-Ca-cSs]\+" contained nextgroup=inittabColonAction,inittabError
+syn match inittabColonAction ":" contained nextgroup=inittabAction,inittabError
+syn match inittabAction "\w\+" contained nextgroup=inittabColonProcess,inittabError contains=inittabActionName
+syn match inittabColonProcess ":" contained nextgroup=inittabProcessPlus,inittabProcess,inittabError
+syn match inittabProcessPlus "+" contained nextgroup=inittabProcess,inittabError
+syn region inittabProcess start="\S" end="$" transparent oneline contained contains=@inittabSh,inittabComment
+
+" Define the default highlighting
+
+hi def link inittabComment Comment
+hi def link inittabFixme Todo
+hi def link inittabActionName Type
+hi def link inittabError Error
+hi def link inittabId Identifier
+hi def link inittabRunLevels Special
+
+hi def link inittabColonProcess inittabColon
+hi def link inittabColonAction inittabColon
+hi def link inittabColonRunLevels inittabColon
+hi def link inittabColon PreProc
+
+hi def link inittabShString String
+hi def link inittabShOption Special
+hi def link inittabShCommand Statement
+
+
+let b:current_syntax = "inittab"
diff --git a/runtime/syntax/ipfilter.vim b/runtime/syntax/ipfilter.vim
new file mode 100644
index 0000000..c007626
--- /dev/null
+++ b/runtime/syntax/ipfilter.vim
@@ -0,0 +1,55 @@
+" ipfilter syntax file
+" Language: ipfilter configuration file
+" Maintainer: Hendrik Scholz <hendrik@scholz.net>
+" Last Change: 2022 Jun 14
+"
+" http://www.wormulon.net/files/misc/ipfilter.vim
+"
+" This will also work for OpenBSD pf but there might be some tags that are
+" not correctly identified.
+" Please send comments to hendrik@scholz.net
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Comment
+syn match IPFComment /#.*$/ contains=ipfTodo
+syn keyword IPFTodo TODO XXX FIXME contained
+
+syn keyword IPFActionBlock block
+syn keyword IPFActionPass pass
+syn keyword IPFProto tcp udp icmp
+syn keyword IPFSpecial quick log first
+" how could we use keyword for words with '-' ?
+syn match IPFSpecial /return-rst/
+syn match IPFSpecial /dup-to/
+"syn match IPFSpecial /icmp-type unreach/
+syn keyword IPFAny all any
+syn match IPFIPv4 /\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/
+syn match IPFNetmask /\/\d\+/
+
+" service name constants
+syn keyword IPFService auth bgp domain finger ftp http https ident
+syn keyword IPFService imap irc isakmp kerberos mail nameserver nfs
+syn keyword IPFService nntp ntp pop3 portmap pptp rpcbind rsync smtp
+syn keyword IPFService snmp snmptrap socks ssh sunrpc syslog telnet
+syn keyword IPFService tftp www
+
+" Comment
+hi def link IPFComment Comment
+hi def link IPFTodo Todo
+
+hi def link IPFService Constant
+
+hi def link IPFAction Type
+hi def link ipfActionBlock String
+hi def link ipfActionPass Type
+hi def link IPFSpecial Statement
+hi def link IPFIPv4 Label
+hi def link IPFNetmask String
+hi def link IPFAny Statement
+hi def link IPFProto Identifier
+
+let b:current_syntax = 'ipfilter'
diff --git a/runtime/syntax/ishd.vim b/runtime/syntax/ishd.vim
new file mode 100644
index 0000000..3c468e3
--- /dev/null
+++ b/runtime/syntax/ishd.vim
@@ -0,0 +1,409 @@
+" Vim syntax file
+" Language: InstallShield Script
+" Maintainer: Robert M. Cortopassi <cortopar@mindspring.com>
+" Last Change: 2001 May 09
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn keyword ishdStatement abort begin case default downto else end
+syn keyword ishdStatement endif endfor endwhile endswitch endprogram exit elseif
+syn keyword ishdStatement error for function goto if
+syn keyword ishdStatement program prototype return repeat string step switch
+syn keyword ishdStatement struct then to typedef until while
+
+syn keyword ishdType BOOL BYREF CHAR GDI HWND INT KERNEL LIST LONG
+syn keyword ishdType NUMBER POINTER SHORT STRING USER
+
+syn keyword ishdConstant _MAX_LENGTH _MAX_STRING
+syn keyword ishdConstant AFTER ALLCONTENTS ALLCONTROLS APPEND ASKDESTPATH
+syn keyword ishdConstant ASKOPTIONS ASKPATH ASKTEXT BATCH_INSTALL BACK
+syn keyword ishdConstant BACKBUTTON BACKGROUND BACKGROUNDCAPTION BADPATH
+syn keyword ishdConstant BADTAGFILE BASEMEMORY BEFORE BILLBOARD BINARY
+syn keyword ishdConstant BITMAP256COLORS BITMAPFADE BITMAPICON BK_BLUE BK_GREEN
+syn keyword ishdConstant BK_MAGENTA BK_MAGENTA1 BK_ORANGE BK_PINK BK_RED
+syn keyword ishdConstant BK_SMOOTH BK_SOLIDBLACK BK_SOLIDBLUE BK_SOLIDGREEN
+syn keyword ishdConstant BK_SOLIDMAGENTA BK_SOLIDORANGE BK_SOLIDPINK BK_SOLIDRED
+syn keyword ishdConstant BK_SOLIDWHITE BK_SOLIDYELLOW BK_YELLOW BLACK BLUE
+syn keyword ishdConstant BOOTUPDRIVE BUTTON_CHECKED BUTTON_ENTER BUTTON_UNCHECKED
+syn keyword ishdConstant BUTTON_UNKNOWN CMDLINE COMMONFILES CANCEL CANCELBUTTON
+syn keyword ishdConstant CC_ERR_FILEFORMATERROR CC_ERR_FILEREADERROR
+syn keyword ishdConstant CC_ERR_NOCOMPONENTLIST CC_ERR_OUTOFMEMORY CDROM
+syn keyword ishdConstant CDROM_DRIVE CENTERED CHANGEDIR CHECKBOX CHECKBOX95
+syn keyword ishdConstant CHECKLINE CHECKMARK CMD_CLOSE CMD_MAXIMIZE CMD_MINIMIZE
+syn keyword ishdConstant CMD_PUSHDOWN CMD_RESTORE COLORMODE256 COLORS
+syn keyword ishdConstant COMBOBOX_ENTER COMBOBOX_SELECT COMMAND COMMANDEX
+syn keyword ishdConstant COMMON COMP_DONE COMP_ERR_CREATEDIR
+syn keyword ishdConstant COMP_ERR_DESTCONFLICT COMP_ERR_FILENOTINLIB
+syn keyword ishdConstant COMP_ERR_FILESIZE COMP_ERR_FILETOOLARGE
+syn keyword ishdConstant COMP_ERR_HEADER COMP_ERR_INCOMPATIBLE
+syn keyword ishdConstant COMP_ERR_INTPUTNOTCOMPRESSED COMP_ERR_INVALIDLIST
+syn keyword ishdConstant COMP_ERR_LAUNCHSERVER COMP_ERR_MEMORY
+syn keyword ishdConstant COMP_ERR_NODISKSPACE COMP_ERR_OPENINPUT
+syn keyword ishdConstant COMP_ERR_OPENOUTPUT COMP_ERR_OPTIONS
+syn keyword ishdConstant COMP_ERR_OUTPUTNOTCOMPRESSED COMP_ERR_SPLIT
+syn keyword ishdConstant COMP_ERR_TARGET COMP_ERR_TARGETREADONLY COMP_ERR_WRITE
+syn keyword ishdConstant COMP_INFO_ATTRIBUTE COMP_INFO_COMPSIZE COMP_INFO_DATE
+syn keyword ishdConstant COMP_INFO_INVALIDATEPASSWORD COMP_INFO_ORIGSIZE
+syn keyword ishdConstant COMP_INFO_SETPASSWORD COMP_INFO_TIME
+syn keyword ishdConstant COMP_INFO_VERSIONLS COMP_INFO_VERSIONMS COMP_NORMAL
+syn keyword ishdConstant COMP_UPDATE_DATE COMP_UPDATE_DATE_NEWER
+syn keyword ishdConstant COMP_UPDATE_SAME COMP_UPDATE_VERSION COMPACT
+syn keyword ishdConstant COMPARE_DATE COMPARE_SIZE COMPARE_VERSION
+syn keyword ishdConstant COMPONENT_FIELD_CDROM_FOLDER
+syn keyword ishdConstant COMPONENT_FIELD_DESCRIPTION COMPONENT_FIELD_DESTINATION
+syn keyword ishdConstant COMPONENT_FIELD_DISPLAYNAME COMPONENT_FIELD_FILENEED
+syn keyword ishdConstant COMPONENT_FIELD_FTPLOCATION
+syn keyword ishdConstant COMPONENT_FIELD_HTTPLOCATION COMPONENT_FIELD_MISC
+syn keyword ishdConstant COMPONENT_FIELD_OVERWRITE COMPONENT_FIELD_PASSWORD
+syn keyword ishdConstant COMPONENT_FIELD_SELECTED COMPONENT_FIELD_SIZE
+syn keyword ishdConstant COMPONENT_FIELD_STATUS COMPONENT_FIELD_VISIBLE
+syn keyword ishdConstant COMPONENT_FILEINFO_COMPRESSED
+syn keyword ishdConstant COMPONENT_FILEINFO_COMPRESSENGINE
+syn keyword ishdConstant COMPONENT_FILEINFO_LANGUAGECOMPONENT_FILEINFO_OS
+syn keyword ishdConstant COMPONENT_FILEINFO_POTENTIALLYLOCKED
+syn keyword ishdConstant COMPONENT_FILEINFO_SELFREGISTERING
+syn keyword ishdConstant COMPONENT_FILEINFO_SHARED COMPONENT_INFO_ATTRIBUTE
+syn keyword ishdConstant COMPONENT_INFO_COMPSIZE COMPONENT_INFO_DATE
+syn keyword ishdConstant COMPONENT_INFO_DATE_EX_EX COMPONENT_INFO_LANGUAGE
+syn keyword ishdConstant COMPONENT_INFO_ORIGSIZE COMPONENT_INFO_OS
+syn keyword ishdConstant COMPONENT_INFO_TIME COMPONENT_INFO_VERSIONLS
+syn keyword ishdConstant COMPONENT_INFO_VERSIONMS COMPONENT_INFO_VERSIONSTR
+syn keyword ishdConstant COMPONENT_VALUE_ALWAYSOVERWRITE
+syn keyword ishdConstant COMPONENT_VALUE_CRITICAL
+syn keyword ishdConstant COMPONENT_VALUE_HIGHLYRECOMMENDED
+syn keyword ishdConstant COMPONENT_FILEINFO_LANGUAGE COMPONENT_FILEINFO_OS
+syn keyword ishdConstant COMPONENT_VALUE_NEVEROVERWRITE
+syn keyword ishdConstant COMPONENT_VALUE_NEWERDATE COMPONENT_VALUE_NEWERVERSION
+syn keyword ishdConstant COMPONENT_VALUE_OLDERDATE COMPONENT_VALUE_OLDERVERSION
+syn keyword ishdConstant COMPONENT_VALUE_SAMEORNEWDATE
+syn keyword ishdConstant COMPONENT_VALUE_SAMEORNEWERVERSION
+syn keyword ishdConstant COMPONENT_VALUE_STANDARD COMPONENT_VIEW_CHANGE
+syn keyword ishdConstant COMPONENT_INFO_DATE_EX COMPONENT_VIEW_CHILDVIEW
+syn keyword ishdConstant COMPONENT_VIEW_COMPONENT COMPONENT_VIEW_DESCRIPTION
+syn keyword ishdConstant COMPONENT_VIEW_MEDIA COMPONENT_VIEW_PARENTVIEW
+syn keyword ishdConstant COMPONENT_VIEW_SIZEAVAIL COMPONENT_VIEW_SIZETOTAL
+syn keyword ishdConstant COMPONENT_VIEW_TARGETLOCATION COMPRESSHIGH COMPRESSLOW
+syn keyword ishdConstant COMPRESSMED COMPRESSNONE CONTIGUOUS CONTINUE
+syn keyword ishdConstant COPY_ERR_CREATEDIR COPY_ERR_NODISKSPACE
+syn keyword ishdConstant COPY_ERR_OPENINPUT COPY_ERR_OPENOUTPUT
+syn keyword ishdConstant COPY_ERR_TARGETREADONLY COPY_ERR_MEMORY
+syn keyword ishdConstant CORECOMPONENTHANDLING CPU CUSTOM DATA_COMPONENT
+syn keyword ishdConstant DATA_LIST DATA_NUMBER DATA_STRING DATE DEFAULT
+syn keyword ishdConstant DEFWINDOWMODE DELETE_EOF DIALOG DIALOGCACHE
+syn keyword ishdConstant DIALOGTHINFONT DIR_WRITEABLE DIRECTORY DISABLE DISK
+syn keyword ishdConstant DISK_FREESPACE DISK_TOTALSPACE DISKID DLG_ASK_OPTIONS
+syn keyword ishdConstant DLG_ASK_PATH DLG_ASK_TEXT DLG_ASK_YESNO DLG_CANCEL
+syn keyword ishdConstant DLG_CDIR DLG_CDIR_MSG DLG_CENTERED DLG_CLOSE
+syn keyword ishdConstant DLG_DIR_DIRECTORY DLG_DIR_FILE DLG_ENTER_DISK DLG_ERR
+syn keyword ishdConstant DLG_ERR_ALREADY_EXISTS DLG_ERR_ENDDLG DLG_INFO_ALTIMAGE
+syn keyword ishdConstant DLG_INFO_CHECKMETHOD DLG_INFO_CHECKSELECTION
+syn keyword ishdConstant DLG_INFO_ENABLEIMAGE DLG_INFO_KUNITS
+syn keyword ishdConstant DLG_INFO_USEDECIMAL DLG_INIT DLG_MSG_ALL
+syn keyword ishdConstant DLG_MSG_INFORMATION DLG_MSG_NOT_HAND DLG_MSG_SEVERE
+syn keyword ishdConstant DLG_MSG_STANDARD DLG_MSG_WARNING DLG_OK DLG_STATUS
+syn keyword ishdConstant DLG_USER_CAPTION DRIVE DRIVEOPEN DLG_DIR_DRIVE
+syn keyword ishdConstant EDITBOX_CHANGE EFF_BOXSTRIPE EFF_FADE EFF_HORZREVEAL
+syn keyword ishdConstant EFF_HORZSTRIPE EFF_NONE EFF_REVEAL EFF_VERTSTRIPE
+syn keyword ishdConstant ENABLE END_OF_FILE END_OF_LIST ENHANCED ENTERDISK
+syn keyword ishdConstant ENTERDISK_ERRMSG ENTERDISKBEEP ENVSPACE EQUALS
+syn keyword ishdConstant ERR_BADPATH ERR_BADTAGFILE ERR_BOX_BADPATH
+syn keyword ishdConstant ERR_BOX_BADTAGFILE ERR_BOX_DISKID ERR_BOX_DRIVEOPEN
+syn keyword ishdConstant ERR_BOX_EXIT ERR_BOX_HELP ERR_BOX_NOSPACE ERR_BOX_PAUSE
+syn keyword ishdConstant ERR_BOX_READONLY ERR_DISKID ERR_DRIVEOPEN
+syn keyword ishdConstant EXCLUDE_SUBDIR EXCLUSIVE EXISTS EXIT EXTENDEDMEMORY
+syn keyword ishdConstant EXTENSION_ONLY ERRORFILENAME FADE_IN FADE_OUT
+syn keyword ishdConstant FAILIFEXISTS FALSE FDRIVE_NUM FEEDBACK FEEDBACK_FULL
+syn keyword ishdConstant FEEDBACK_OPERATION FEEDBACK_SPACE FILE_ATTR_ARCHIVED
+syn keyword ishdConstant FILE_ATTR_DIRECTORY FILE_ATTR_HIDDEN FILE_ATTR_NORMAL
+syn keyword ishdConstant FILE_ATTR_READONLY FILE_ATTR_SYSTEM FILE_ATTRIBUTE
+syn keyword ishdConstant FILE_BIN_CUR FILE_BIN_END FILE_BIN_START FILE_DATE
+syn keyword ishdConstant FILE_EXISTS FILE_INSTALLED FILE_INVALID FILE_IS_LOCKED
+syn keyword ishdConstant FILE_LINE_LENGTH FILE_LOCKED FILE_MODE_APPEND
+syn keyword ishdConstant FILE_MODE_BINARY FILE_MODE_BINARYREADONLY
+syn keyword ishdConstant FILE_MODE_NORMAL FILE_NO_VERSION FILE_NOT_FOUND
+syn keyword ishdConstant FILE_RD_ONLY FILE_SIZE FILE_SRC_EQUAL FILE_SRC_OLD
+syn keyword ishdConstant FILE_TIME FILE_WRITEABLE FILENAME FILENAME_ONLY
+syn keyword ishdConstant FINISHBUTTON FIXED_DRIVE FONT_TITLE FREEENVSPACE
+syn keyword ishdConstant FS_CREATEDIR FS_DISKONEREQUIRED FS_DONE FS_FILENOTINLIB
+syn keyword ishdConstant FS_GENERROR FS_INCORRECTDISK FS_LAUNCHPROCESS
+syn keyword ishdConstant FS_OPERROR FS_OUTOFSPACE FS_PACKAGING FS_RESETREQUIRED
+syn keyword ishdConstant FS_TARGETREADONLY FS_TONEXTDISK FULL FULLSCREEN
+syn keyword ishdConstant FULLSCREENSIZE FULLWINDOWMODE FOLDER_DESKTOP
+syn keyword ishdConstant FOLDER_PROGRAMS FOLDER_STARTMENU FOLDER_STARTUP
+syn keyword ishdConstant GREATER_THAN GREEN HELP HKEY_CLASSES_ROOT
+syn keyword ishdConstant HKEY_CURRENT_CONFIG HKEY_CURRENT_USER HKEY_DYN_DATA
+syn keyword ishdConstant HKEY_LOCAL_MACHINE HKEY_PERFORMANCE_DATA HKEY_USERS
+syn keyword ishdConstant HOURGLASS HWND_DESKTOP HWND_INSTALL IGNORE_READONLY
+syn keyword ishdConstant INCLUDE_SUBDIR INDVFILESTATUS INFO INFO_DESCRIPTION
+syn keyword ishdConstant INFO_IMAGE INFO_MISC INFO_SIZE INFO_SUBCOMPONENT
+syn keyword ishdConstant INFO_VISIBLE INFORMATION INVALID_LIST IS_186 IS_286
+syn keyword ishdConstant IS_386 IS_486 IS_8514A IS_86 IS_ALPHA IS_CDROM IS_CGA
+syn keyword ishdConstant IS_DOS IS_EGA IS_FIXED IS_FOLDER IS_ITEM ISLANG_ALL
+syn keyword ishdConstant ISLANG_ARABIC ISLANG_ARABIC_SAUDIARABIA
+syn keyword ishdConstant ISLANG_ARABIC_IRAQ ISLANG_ARABIC_EGYPT
+syn keyword ishdConstant ISLANG_ARABIC_LIBYA ISLANG_ARABIC_ALGERIA
+syn keyword ishdConstant ISLANG_ARABIC_MOROCCO ISLANG_ARABIC_TUNISIA
+syn keyword ishdConstant ISLANG_ARABIC_OMAN ISLANG_ARABIC_YEMEN
+syn keyword ishdConstant ISLANG_ARABIC_SYRIA ISLANG_ARABIC_JORDAN
+syn keyword ishdConstant ISLANG_ARABIC_LEBANON ISLANG_ARABIC_KUWAIT
+syn keyword ishdConstant ISLANG_ARABIC_UAE ISLANG_ARABIC_BAHRAIN
+syn keyword ishdConstant ISLANG_ARABIC_QATAR ISLANG_AFRIKAANS
+syn keyword ishdConstant ISLANG_AFRIKAANS_STANDARD ISLANG_ALBANIAN
+syn keyword ishdConstant ISLANG_ENGLISH_TRINIDAD ISLANG_ALBANIAN_STANDARD
+syn keyword ishdConstant ISLANG_BASQUE ISLANG_BASQUE_STANDARD ISLANG_BULGARIAN
+syn keyword ishdConstant ISLANG_BULGARIAN_STANDARD ISLANG_BELARUSIAN
+syn keyword ishdConstant ISLANG_BELARUSIAN_STANDARD ISLANG_CATALAN
+syn keyword ishdConstant ISLANG_CATALAN_STANDARD ISLANG_CHINESE
+syn keyword ishdConstant ISLANG_CHINESE_TAIWAN ISLANG_CHINESE_PRC
+syn keyword ishdConstant ISLANG_SPANISH_PUERTORICO ISLANG_CHINESE_HONGKONG
+syn keyword ishdConstant ISLANG_CHINESE_SINGAPORE ISLANG_CROATIAN
+syn keyword ishdConstant ISLANG_CROATIAN_STANDARD ISLANG_CZECH
+syn keyword ishdConstant ISLANG_CZECH_STANDARD ISLANG_DANISH
+syn keyword ishdConstant ISLANG_DANISH_STANDARD ISLANG_DUTCH
+syn keyword ishdConstant ISLANG_DUTCH_STANDARD ISLANG_DUTCH_BELGIAN
+syn keyword ishdConstant ISLANG_ENGLISH ISLANG_ENGLISH_BELIZE
+syn keyword ishdConstant ISLANG_ENGLISH_UNITEDSTATES
+syn keyword ishdConstant ISLANG_ENGLISH_UNITEDKINGDOM ISLANG_ENGLISH_AUSTRALIAN
+syn keyword ishdConstant ISLANG_ENGLISH_CANADIAN ISLANG_ENGLISH_NEWZEALAND
+syn keyword ishdConstant ISLANG_ENGLISH_IRELAND ISLANG_ENGLISH_SOUTHAFRICA
+syn keyword ishdConstant ISLANG_ENGLISH_JAMAICA ISLANG_ENGLISH_CARIBBEAN
+syn keyword ishdConstant ISLANG_ESTONIAN ISLANG_ESTONIAN_STANDARD
+syn keyword ishdConstant ISLANG_FAEROESE ISLANG_FAEROESE_STANDARD ISLANG_FARSI
+syn keyword ishdConstant ISLANG_FINNISH ISLANG_FINNISH_STANDARD ISLANG_FRENCH
+syn keyword ishdConstant ISLANG_FRENCH_STANDARD ISLANG_FRENCH_BELGIAN
+syn keyword ishdConstant ISLANG_FRENCH_CANADIAN ISLANG_FRENCH_SWISS
+syn keyword ishdConstant ISLANG_FRENCH_LUXEMBOURG ISLANG_FARSI_STANDARD
+syn keyword ishdConstant ISLANG_GERMAN ISLANG_GERMAN_STANDARD
+syn keyword ishdConstant ISLANG_GERMAN_SWISS ISLANG_GERMAN_AUSTRIAN
+syn keyword ishdConstant ISLANG_GERMAN_LUXEMBOURG ISLANG_GERMAN_LIECHTENSTEIN
+syn keyword ishdConstant ISLANG_GREEK ISLANG_GREEK_STANDARD ISLANG_HEBREW
+syn keyword ishdConstant ISLANG_HEBREW_STANDARD ISLANG_HUNGARIAN
+syn keyword ishdConstant ISLANG_HUNGARIAN_STANDARD ISLANG_ICELANDIC
+syn keyword ishdConstant ISLANG_ICELANDIC_STANDARD ISLANG_INDONESIAN
+syn keyword ishdConstant ISLANG_INDONESIAN_STANDARD ISLANG_ITALIAN
+syn keyword ishdConstant ISLANG_ITALIAN_STANDARD ISLANG_ITALIAN_SWISS
+syn keyword ishdConstant ISLANG_JAPANESE ISLANG_JAPANESE_STANDARD ISLANG_KOREAN
+syn keyword ishdConstant ISLANG_KOREAN_STANDARD ISLANG_KOREAN_JOHAB
+syn keyword ishdConstant ISLANG_LATVIAN ISLANG_LATVIAN_STANDARD
+syn keyword ishdConstant ISLANG_LITHUANIAN ISLANG_LITHUANIAN_STANDARD
+syn keyword ishdConstant ISLANG_NORWEGIAN ISLANG_NORWEGIAN_BOKMAL
+syn keyword ishdConstant ISLANG_NORWEGIAN_NYNORSK ISLANG_POLISH
+syn keyword ishdConstant ISLANG_POLISH_STANDARD ISLANG_PORTUGUESE
+syn keyword ishdConstant ISLANG_PORTUGUESE_BRAZILIAN ISLANG_PORTUGUESE_STANDARD
+syn keyword ishdConstant ISLANG_ROMANIAN ISLANG_ROMANIAN_STANDARD ISLANG_RUSSIAN
+syn keyword ishdConstant ISLANG_RUSSIAN_STANDARD ISLANG_SLOVAK
+syn keyword ishdConstant ISLANG_SLOVAK_STANDARD ISLANG_SLOVENIAN
+syn keyword ishdConstant ISLANG_SLOVENIAN_STANDARD ISLANG_SERBIAN
+syn keyword ishdConstant ISLANG_SERBIAN_LATIN ISLANG_SERBIAN_CYRILLIC
+syn keyword ishdConstant ISLANG_SPANISH ISLANG_SPANISH_ARGENTINA
+syn keyword ishdConstant ISLANG_SPANISH_BOLIVIA ISLANG_SPANISH_CHILE
+syn keyword ishdConstant ISLANG_SPANISH_COLOMBIA ISLANG_SPANISH_COSTARICA
+syn keyword ishdConstant ISLANG_SPANISH_DOMINICANREPUBLIC ISLANG_SPANISH_ECUADOR
+syn keyword ishdConstant ISLANG_SPANISH_ELSALVADOR ISLANG_SPANISH_GUATEMALA
+syn keyword ishdConstant ISLANG_SPANISH_HONDURAS ISLANG_SPANISH_MEXICAN
+syn keyword ishdConstant ISLANG_THAI_STANDARD ISLANG_SPANISH_MODERNSORT
+syn keyword ishdConstant ISLANG_SPANISH_NICARAGUA ISLANG_SPANISH_PANAMA
+syn keyword ishdConstant ISLANG_SPANISH_PARAGUAY ISLANG_SPANISH_PERU
+syn keyword ishdConstant IISLANG_SPANISH_PUERTORICO
+syn keyword ishdConstant ISLANG_SPANISH_TRADITIONALSORT ISLANG_SPANISH_VENEZUELA
+syn keyword ishdConstant ISLANG_SPANISH_URUGUAY ISLANG_SWEDISH
+syn keyword ishdConstant ISLANG_SWEDISH_FINLAND ISLANG_SWEDISH_STANDARD
+syn keyword ishdConstant ISLANG_THAI ISLANG_THA_STANDARDI ISLANG_TURKISH
+syn keyword ishdConstant ISLANG_TURKISH_STANDARD ISLANG_UKRAINIAN
+syn keyword ishdConstant ISLANG_UKRAINIAN_STANDARD ISLANG_VIETNAMESE
+syn keyword ishdConstant ISLANG_VIETNAMESE_STANDARD IS_MIPS IS_MONO IS_OS2
+syn keyword ishdConstant ISOSL_ALL ISOSL_WIN31 ISOSL_WIN95 ISOSL_NT351
+syn keyword ishdConstant ISOSL_NT351_ALPHA ISOSL_NT351_MIPS ISOSL_NT351_PPC
+syn keyword ishdConstant ISOSL_NT40 ISOSL_NT40_ALPHA ISOSL_NT40_MIPS
+syn keyword ishdConstant ISOSL_NT40_PPC IS_PENTIUM IS_POWERPC IS_RAMDRIVE
+syn keyword ishdConstant IS_REMOTE IS_REMOVABLE IS_SVGA IS_UNKNOWN IS_UVGA
+syn keyword ishdConstant IS_VALID_PATH IS_VGA IS_WIN32S IS_WINDOWS IS_WINDOWS95
+syn keyword ishdConstant IS_WINDOWSNT IS_WINOS2 IS_XVGA ISTYPE INFOFILENAME
+syn keyword ishdConstant ISRES ISUSER ISVERSION LANGUAGE LANGUAGE_DRV LESS_THAN
+syn keyword ishdConstant LINE_NUMBER LISTBOX_ENTER LISTBOX_SELECT LISTFIRST
+syn keyword ishdConstant LISTLAST LISTNEXT LISTPREV LOCKEDFILE LOGGING
+syn keyword ishdConstant LOWER_LEFT LOWER_RIGHT LIST_NULL MAGENTA MAINCAPTION
+syn keyword ishdConstant MATH_COPROCESSOR MAX_STRING MENU METAFILE MMEDIA_AVI
+syn keyword ishdConstant MMEDIA_MIDI MMEDIA_PLAYASYNCH MMEDIA_PLAYCONTINUOUS
+syn keyword ishdConstant MMEDIA_PLAYSYNCH MMEDIA_STOP MMEDIA_WAVE MOUSE
+syn keyword ishdConstant MOUSE_DRV MEDIA MODE NETWORK NETWORK_DRV NEXT
+syn keyword ishdConstant NEXTBUTTON NO NO_SUBDIR NO_WRITE_ACCESS NONCONTIGUOUS
+syn keyword ishdConstant NONEXCLUSIVE NORMAL NORMALMODE NOSET NOTEXISTS NOTRESET
+syn keyword ishdConstant NOWAIT NULL NUMBERLIST OFF OK ON ONLYDIR OS OSMAJOR
+syn keyword ishdConstant OSMINOR OTHER_FAILURE OUT_OF_DISK_SPACE PARALLEL
+syn keyword ishdConstant PARTIAL PATH PATH_EXISTS PAUSE PERSONAL PROFSTRING
+syn keyword ishdConstant PROGMAN PROGRAMFILES RAM_DRIVE REAL RECORDMODE RED
+syn keyword ishdConstant REGDB_APPPATH REGDB_APPPATH_DEFAULT REGDB_BINARY
+syn keyword ishdConstant REGDB_ERR_CONNECTIONEXISTS REGDB_ERR_CORRUPTEDREGISTRY
+syn keyword ishdConstant REGDB_ERR_FILECLOSE REGDB_ERR_FILENOTFOUND
+syn keyword ishdConstant REGDB_ERR_FILEOPEN REGDB_ERR_FILEREAD
+syn keyword ishdConstant REGDB_ERR_INITIALIZATION REGDB_ERR_INVALIDFORMAT
+syn keyword ishdConstant REGDB_ERR_INVALIDHANDLE REGDB_ERR_INVALIDNAME
+syn keyword ishdConstant REGDB_ERR_INVALIDPLATFORM REGDB_ERR_OUTOFMEMORY
+syn keyword ishdConstant REGDB_ERR_REGISTRY REGDB_KEYS REGDB_NAMES REGDB_NUMBER
+syn keyword ishdConstant REGDB_STRING REGDB_STRING_EXPAND REGDB_STRING_MULTI
+syn keyword ishdConstant REGDB_UNINSTALL_NAME REGKEY_CLASSES_ROOT
+syn keyword ishdConstant REGKEY_CURRENT_USER REGKEY_LOCAL_MACHINE REGKEY_USERS
+syn keyword ishdConstant REMOTE_DRIVE REMOVE REMOVEABLE_DRIVE REPLACE
+syn keyword ishdConstant REPLACE_ITEM RESET RESTART ROOT ROTATE RUN_MAXIMIZED
+syn keyword ishdConstant RUN_MINIMIZED RUN_SEPARATEMEMORY SELECTFOLDER
+syn keyword ishdConstant SELFREGISTER SELFREGISTERBATCH SELFREGISTRATIONPROCESS
+syn keyword ishdConstant SERIAL SET SETUPTYPE SETUPTYPE_INFO_DESCRIPTION
+syn keyword ishdConstant SETUPTYPE_INFO_DISPLAYNAME SEVERE SHARE SHAREDFILE
+syn keyword ishdConstant SHELL_OBJECT_FOLDER SILENTMODE SPLITCOMPRESS SPLITCOPY
+syn keyword ishdConstant SRCTARGETDIR STANDARD STATUS STATUS95 STATUSBAR
+syn keyword ishdConstant STATUSDLG STATUSEX STATUSOLD STRINGLIST STYLE_BOLD
+syn keyword ishdConstant STYLE_ITALIC STYLE_NORMAL STYLE_SHADOW STYLE_UNDERLINE
+syn keyword ishdConstant SW_HIDE SW_MAXIMIZE SW_MINIMIZE SW_NORMAL SW_RESTORE
+syn keyword ishdConstant SW_SHOW SW_SHOWMAXIMIZED SW_SHOWMINIMIZED
+syn keyword ishdConstant SW_SHOWMINNOACTIVE SW_SHOWNA SW_SHOWNOACTIVATE
+syn keyword ishdConstant SW_SHOWNORMAL SYS_BOOTMACHINE SYS_BOOTWIN
+syn keyword ishdConstant SYS_BOOTWIN_INSTALL SYS_RESTART SYS_SHUTDOWN SYS_TODOS
+syn keyword ishdConstant SELECTED_LANGUAGE SHELL_OBJECT_LANGUAGE SRCDIR SRCDISK
+syn keyword ishdConstant SUPPORTDIR TEXT TILED TIME TRUE TYPICAL TARGETDIR
+syn keyword ishdConstant TARGETDISK UPPER_LEFT UPPER_RIGHT USER_ADMINISTRATOR
+syn keyword ishdConstant UNINST VALID_PATH VARIABLE_LEFT VARIABLE_UNDEFINED
+syn keyword ishdConstant VER_DLL_NOT_FOUND VER_UPDATE_ALWAYS VER_UPDATE_COND
+syn keyword ishdConstant VERSION VIDEO VOLUMELABEL WAIT WARNING WELCOME WHITE
+syn keyword ishdConstant WIN32SINSTALLED WIN32SMAJOR WIN32SMINOR WINDOWS_SHARED
+syn keyword ishdConstant WINMAJOR WINMINOR WINDIR WINDISK WINSYSDIR WINSYSDISK
+syn keyword ishdConstant XCOPY_DATETIME YELLOW YES
+
+syn keyword ishdFunction AskDestPath AskOptions AskPath AskText AskYesNo
+syn keyword ishdFunction AppCommand AddProfString AddFolderIcon BatchAdd
+syn keyword ishdFunction BatchDeleteEx BatchFileLoad BatchFileSave BatchFind
+syn keyword ishdFunction BatchGetFileName BatchMoveEx BatchSetFileName
+syn keyword ishdFunction ComponentDialog ComponentAddItem
+syn keyword ishdFunction ComponentCompareSizeRequired ComponentDialog
+syn keyword ishdFunction ComponentError ComponentFileEnum ComponentFileInfo
+syn keyword ishdFunction ComponentFilterLanguage ComponentFilterOS
+syn keyword ishdFunction ComponentGetData ComponentGetItemSize
+syn keyword ishdFunction ComponentInitialize ComponentIsItemSelected
+syn keyword ishdFunction ComponentListItems ComponentMoveData
+syn keyword ishdFunction ComponentSelectItem ComponentSetData ComponentSetTarget
+syn keyword ishdFunction ComponentSetupTypeEnum ComponentSetupTypeGetData
+syn keyword ishdFunction ComponentSetupTypeSet ComponentTotalSize
+syn keyword ishdFunction ComponentValidate ConfigAdd ConfigDelete ConfigFileLoad
+syn keyword ishdFunction ConfigFileSave ConfigFind ConfigGetFileName
+syn keyword ishdFunction ConfigGetInt ConfigMove ConfigSetFileName ConfigSetInt
+syn keyword ishdFunction CmdGetHwndDlg CtrlClear CtrlDir CtrlGetCurSel
+syn keyword ishdFunction CtrlGetMLEText CtrlGetMultCurSel CtrlGetState
+syn keyword ishdFunction CtrlGetSubCommand CtrlGetText CtrlPGroups
+syn keyword ishdFunction CtrlSelectText CtrlSetCurSel CtrlSetFont CtrlSetList
+syn keyword ishdFunction CtrlSetMLEText CtrlSetMultCurSel CtrlSetState
+syn keyword ishdFunction CtrlSetText CallDLLFx ChangeDirectory CloseFile
+syn keyword ishdFunction CopyFile CreateDir CreateFile CreateRegistrySet
+syn keyword ishdFunction CommitSharedFiles CreateProgramFolder
+syn keyword ishdFunction CreateShellObjects CopyBytes DefineDialog Delay
+syn keyword ishdFunction DeleteDir DeleteFile Do DoInstall DeinstallSetReference
+syn keyword ishdFunction DeinstallStart DialogSetInfo DeleteFolderIcon
+syn keyword ishdFunction DeleteProgramFolder Disable EzBatchAddPath
+syn keyword ishdFunction EzBatchAddString ExBatchReplace EnterDisk
+syn keyword ishdFunction EzConfigAddDriver EzConfigAddString EzConfigGetValue
+syn keyword ishdFunction EzConfigSetValue EndDialog EzDefineDialog ExistsDir
+syn keyword ishdFunction ExistsDisk ExitProgMan Enable EzBatchReplace
+syn keyword ishdFunction FileCompare FileDeleteLine FileGrep FileInsertLine
+syn keyword ishdFunction FindAllDirs FindAllFiles FindFile FindWindow
+syn keyword ishdFunction GetFileInfo GetLine GetFont GetDiskSpace GetEnvVar
+syn keyword ishdFunction GetExtents GetMemFree GetMode GetSystemInfo
+syn keyword ishdFunction GetValidDrivesList GetWindowHandle GetProfInt
+syn keyword ishdFunction GetProfString GetFolderNameList GetGroupNameList
+syn keyword ishdFunction GetItemNameList GetDir GetDisk HIWORD Handler Is
+syn keyword ishdFunction ISCompareServicePack InstallationInfo LOWORD LaunchApp
+syn keyword ishdFunction LaunchAppAndWait ListAddItem ListAddString ListCount
+syn keyword ishdFunction ListCreate ListCurrentItem ListCurrentString
+syn keyword ishdFunction ListDeleteItem ListDeleteString ListDestroy
+syn keyword ishdFunction ListFindItem ListFindString ListGetFirstItem
+syn keyword ishdFunction ListGetFirstString ListGetNextItem ListGetNextString
+syn keyword ishdFunction ListReadFromFile ListSetCurrentItem
+syn keyword ishdFunction ListSetCurrentString ListSetIndex ListWriteToFile
+syn keyword ishdFunction LongPathFromShortPath LongPathToQuote
+syn keyword ishdFunction LongPathToShortPath MessageBox MessageBeep NumToStr
+syn keyword ishdFunction OpenFile OpenFileMode PathAdd PathDelete PathFind
+syn keyword ishdFunction PathGet PathMove PathSet ProgDefGroupType ParsePath
+syn keyword ishdFunction PlaceBitmap PlaceWindow PlayMMedia QueryProgGroup
+syn keyword ishdFunction QueryProgItem QueryShellMgr RebootDialog ReleaseDialog
+syn keyword ishdFunction ReadBytes RenameFile ReplaceProfString ReloadProgGroup
+syn keyword ishdFunction ReplaceFolderIcon RGB RegDBConnectRegistry
+syn keyword ishdFunction RegDBCreateKeyEx RegDBDeleteKey RegDBDeleteValue
+syn keyword ishdFunction RegDBDisConnectRegistry RegDBGetAppInfo RegDBGetItem
+syn keyword ishdFunction RegDBGetKeyValueEx RegDBKeyExist RegDBQueryKey
+syn keyword ishdFunction RegDBSetAppInfo RegDBSetDefaultRoot RegDBSetItem
+syn keyword ishdFunction RegDBSetKeyValueEx SeekBytes SelectDir SetFileInfo
+syn keyword ishdFunction SelectDir SelectFolder SetupType SprintfBox SdSetupType
+syn keyword ishdFunction SdSetupTypeEx SdMakeName SilentReadData SilentWriteData
+syn keyword ishdFunction SendMessage Sprintf System SdAskDestPath SdAskOptions
+syn keyword ishdFunction SdAskOptionsList SdBitmap SdComponentDialog
+syn keyword ishdFunction SdComponentDialog2 SdComponentDialogAdv SdComponentMult
+syn keyword ishdFunction SdConfirmNewDir SdConfirmRegistration SdDisplayTopics
+syn keyword ishdFunction SdFinish SdFinishReboot SdInit SdLicense SdMakeName
+syn keyword ishdFunction SdOptionsButtons SdProductName SdRegisterUser
+syn keyword ishdFunction SdRegisterUserEx SdSelectFolder SdSetupType
+syn keyword ishdFunction SdSetupTypeEx SdShowAnyDialog SdShowDlgEdit1
+syn keyword ishdFunction SdShowDlgEdit2 SdShowDlgEdit3 SdShowFileMods
+syn keyword ishdFunction SdShowInfoList SdShowMsg SdStartCopy SdWelcome
+syn keyword ishdFunction SelectFolder ShowGroup ShowProgamFolder SetColor
+syn keyword ishdFunction SetDialogTitle SetDisplayEffect SetErrorMsg
+syn keyword ishdFunction SetErrorTitle SetFont SetStatusWindow SetTitle
+syn keyword ishdFunction SizeWindow StatusUpdate StrCompare StrFind StrGetTokens
+syn keyword ishdFunction StrLength StrRemoveLastSlash StrSub StrToLower StrToNum
+syn keyword ishdFunction StrToUpper ShowProgramFolder UnUseDLL UseDLL VarRestore
+syn keyword ishdFunction VarSave VerUpdateFile VerCompare VerFindFileVersion
+syn keyword ishdFunction VerGetFileVersion VerSearchAndUpdateFile VerUpdateFile
+syn keyword ishdFunction Welcome WaitOnDialog WriteBytes WriteLine
+syn keyword ishdFunction WriteProfString XCopyFile
+
+syn keyword ishdTodo contained TODO
+
+"integer number, or floating point number without a dot.
+syn match ishdNumber "\<\d\+\>"
+"floating point number, with dot
+syn match ishdNumber "\<\d\+\.\d*\>"
+"floating point number, starting with a dot
+syn match ishdNumber "\.\d\+\>"
+
+" String constants
+syn region ishdString start=+"+ skip=+\\\\\|\\"+ end=+"+
+
+syn region ishdComment start="//" end="$" contains=ishdTodo
+syn region ishdComment start="/\*" end="\*/" contains=ishdTodo
+
+" Pre-processor commands
+syn region ishdPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=ishdComment,ishdString
+if !exists("ishd_no_if0")
+ syn region ishdHashIf0 start="^\s*#\s*if\s\+0\>" end=".\|$" contains=ishdHashIf0End
+ syn region ishdHashIf0End contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=ishdHashIf0Skip
+ syn region ishdHashIf0Skip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=ishdHashIf0Skip
+endif
+syn region ishdIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match ishdInclude +^\s*#\s*include\>\s*"+ contains=ishdIncluded
+syn cluster ishdPreProcGroup contains=ishdPreCondit,ishdIncluded,ishdInclude,ishdDefine,ishdHashIf0,ishdHashIf0End,ishdHashIf0Skip,ishdNumber
+syn region ishdDefine start="^\s*#\s*\(define\|undef\)\>" end="$" contains=ALLBUT,@ishdPreProcGroup
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link ishdNumber Number
+hi def link ishdError Error
+hi def link ishdStatement Statement
+hi def link ishdString String
+hi def link ishdComment Comment
+hi def link ishdTodo Todo
+hi def link ishdFunction Identifier
+hi def link ishdConstant PreProc
+hi def link ishdType Type
+hi def link ishdInclude Include
+hi def link ishdDefine Macro
+hi def link ishdIncluded String
+hi def link ishdPreCondit PreCondit
+hi def link ishdHashIf0Skip ishdHashIf0
+hi def link ishdHashIf0End ishdHashIf0
+hi def link ishdHashIf0 Comment
+
+
+let b:current_syntax = "ishd"
+
+" vim: ts=8
diff --git a/runtime/syntax/iss.vim b/runtime/syntax/iss.vim
new file mode 100644
index 0000000..34bb698
--- /dev/null
+++ b/runtime/syntax/iss.vim
@@ -0,0 +1,136 @@
+" Vim syntax file
+" Language: Inno Setup File (iss file) and My InnoSetup extension
+" Maintainer: Jason Mills (jmills@cs.mun.ca)
+" Previous Maintainer: Dominique Stéphan (dominique@mggen.com)
+" Last Change: 2021 Aug 30
+"
+" Todo:
+" - The parameter String: is matched as flag string (because of case ignore).
+" - Pascal scripting syntax is not recognized.
+" - Embedded double quotes confuse string matches. e.g. "asfd""asfa"
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" shut case off
+syn case ignore
+
+" Preprocessor
+syn region issPreProc start="^\s*#" end="$"
+
+" Section
+syn region issSection start="\[" end="\]"
+
+" Label in the [Setup] Section
+syn match issDirective "^[^=]\+="
+
+" URL
+syn match issURL "http[s]\=:\/\/.*$"
+
+" Parameters used for any section.
+" syn match issParam"[^: ]\+:"
+syn match issParam "Name:"
+syn match issParam "MinVersion:\|OnlyBelowVersion:\|Languages:"
+syn match issParam "Source:\|DestDir:\|DestName:\|CopyMode:"
+syn match issParam "Attribs:\|Permissions:\|FontInstall:\|Flags:"
+syn match issParam "FileName:\|Parameters:\|WorkingDir:\|HotKey:\|Comment:"
+syn match issParam "IconFilename:\|IconIndex:"
+syn match issParam "Section:\|Key:\|String:"
+syn match issParam "Root:\|SubKey:\|ValueType:\|ValueName:\|ValueData:"
+syn match issParam "RunOnceId:"
+syn match issParam "Type:\|Excludes:"
+syn match issParam "Components:\|Description:\|GroupDescription:\|Types:\|ExtraDiskSpaceRequired:"
+syn match issParam "StatusMsg:\|RunOnceId:\|Tasks:"
+syn match issParam "MessagesFile:\|LicenseFile:\|InfoBeforeFile:\|InfoAfterFile:"
+
+syn match issComment "^\s*;.*$" contains=@Spell
+
+" folder constant
+syn match issFolder "{[^{]*}" contains=@NoSpell
+
+" string
+syn region issString start=+"+ end=+"+ contains=issFolder,@Spell
+
+" [Dirs]
+syn keyword issDirsFlags deleteafterinstall uninsalwaysuninstall uninsneveruninstall
+
+" [Files]
+syn keyword issFilesCopyMode normal onlyifdoesntexist alwaysoverwrite alwaysskipifsameorolder dontcopy
+syn keyword issFilesAttribs readonly hidden system
+syn keyword issFilesPermissions full modify readexec
+syn keyword issFilesFlags allowunsafefiles comparetimestampalso confirmoverwrite deleteafterinstall
+syn keyword issFilesFlags dontcopy dontverifychecksum external fontisnttruetype ignoreversion
+syn keyword issFilesFlags isreadme onlyifdestfileexists onlyifdoesntexist overwritereadonly
+syn keyword issFilesFlags promptifolder recursesubdirs regserver regtypelib restartreplace
+syn keyword issFilesFlags sharedfile skipifsourcedoesntexist sortfilesbyextension touch
+syn keyword issFilesFlags uninsremovereadonly uninsrestartdelete uninsneveruninstall
+syn keyword issFilesFlags replacesameversion nocompression noencryption noregerror
+
+
+" [Icons]
+syn keyword issIconsFlags closeonexit createonlyiffileexists dontcloseonexit
+syn keyword issIconsFlags runmaximized runminimized uninsneveruninstall useapppaths
+
+" [INI]
+syn keyword issINIFlags createkeyifdoesntexist uninsdeleteentry uninsdeletesection uninsdeletesectionifempty
+
+" [Registry]
+syn keyword issRegRootKey HKCR HKCU HKLM HKU HKCC
+syn keyword issRegValueType none string expandsz multisz dword binary
+syn keyword issRegFlags createvalueifdoesntexist deletekey deletevalue dontcreatekey
+syn keyword issRegFlags preservestringtype noerror uninsclearvalue
+syn keyword issRegFlags uninsdeletekey uninsdeletekeyifempty uninsdeletevalue
+
+" [Run] and [UninstallRun]
+syn keyword issRunFlags hidewizard nowait postinstall runhidden runmaximized
+syn keyword issRunFlags runminimized shellexec skipifdoesntexist skipifnotsilent
+syn keyword issRunFlags skipifsilent unchecked waituntilidle
+
+" [Types]
+syn keyword issTypesFlags iscustom
+
+" [Components]
+syn keyword issComponentsFlags dontinheritcheck exclusive fixed restart disablenouninstallwarning
+
+" [UninstallDelete] and [InstallDelete]
+syn keyword issInstallDeleteType files filesandordirs dirifempty
+
+" [Tasks]
+syn keyword issTasksFlags checkedonce dontinheritcheck exclusive restart unchecked
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later
+hi def link issSection Special
+hi def link issComment Comment
+hi def link issDirective Type
+hi def link issParam Type
+hi def link issFolder Special
+hi def link issString String
+hi def link issURL Include
+hi def link issPreProc PreProc
+
+hi def link issDirsFlags Keyword
+hi def link issFilesCopyMode Keyword
+hi def link issFilesAttribs Keyword
+hi def link issFilesPermissions Keyword
+hi def link issFilesFlags Keyword
+hi def link issIconsFlags Keyword
+hi def link issINIFlags Keyword
+hi def link issRegRootKey Keyword
+hi def link issRegValueType Keyword
+hi def link issRegFlags Keyword
+hi def link issRunFlags Keyword
+hi def link issTypesFlags Keyword
+hi def link issComponentsFlags Keyword
+hi def link issInstallDeleteType Keyword
+hi def link issTasksFlags Keyword
+
+
+let b:current_syntax = "iss"
+
+" vim:ts=8
diff --git a/runtime/syntax/ist.vim b/runtime/syntax/ist.vim
new file mode 100644
index 0000000..e34edac
--- /dev/null
+++ b/runtime/syntax/ist.vim
@@ -0,0 +1,58 @@
+" Vim syntax file
+" Language: Makeindex style file, *.ist
+" Maintainer: Peter Meszaros <pmeszaros@effice.hu>
+" Last Change: 2012 Jan 08 by Thilo Six
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=$,@,48-57,_
+
+syn case ignore
+syn keyword IstInpSpec actual arg_close arg_open encap escape
+syn keyword IstInpSpec keyword level quote range_close range_open
+syn keyword IstInpSpec page_compositor
+
+syn keyword IstOutSpec preamble postamble setpage_prefix setpage_suffix group_skip
+syn keyword IstOutSpec headings_flag heading_prefix heading_suffix
+syn keyword IstOutSpec lethead_flag lethead_prefix lethead_suffix
+syn keyword IstOutSpec symhead_positive symhead_negative numhead_positive numhead_negative
+syn keyword IstOutSpec item_0 item_1 item_2 item_01
+syn keyword IstOutSpec item_x1 item_12 item_x2
+syn keyword IstOutSpec delim_0 delim_1 delim_2
+syn keyword IstOutSpec delim_n delim_r delim_t
+syn keyword IstOutSpec encap_prefix encap_infix encap_suffix
+syn keyword IstOutSpec line_max indent_space indent_length
+syn keyword IstOutSpec suffix_2p suffix_3p suffix_mp
+
+syn region IstString matchgroup=IstDoubleQuote start=+"+ skip=+\\"+ end=+"+ contains=IstSpecial
+syn match IstCharacter "'.'"
+syn match IstNumber "\d\+"
+syn match IstComment "^[\t ]*%.*$" contains=IstTodo
+syn match IstSpecial "\\\\\|{\|}\|#\|\\n" contained
+syn match IstTodo "DEBUG\|TODO" contained
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link IstInpSpec Type
+hi def link IstOutSpec Identifier
+hi def link IstString String
+hi def link IstNumber Number
+hi def link IstComment Comment
+hi def link IstTodo Todo
+hi def link IstSpecial Special
+hi def link IstDoubleQuote Label
+hi def link IstCharacter Label
+
+
+let b:current_syntax = "ist"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/j.vim b/runtime/syntax/j.vim
new file mode 100644
index 0000000..a694cb2
--- /dev/null
+++ b/runtime/syntax/j.vim
@@ -0,0 +1,146 @@
+" Vim syntax file
+" Language: J
+" Maintainer: David Bürgin <dbuergin@gluet.ch>
+" URL: https://gitlab.com/glts/vim-j
+" Last Change: 2019-11-12
+
+if exists('b:current_syntax')
+ finish
+endif
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+syntax case match
+syntax sync minlines=100
+
+syntax cluster jStdlibItems contains=jStdlibNoun,jStdlibAdverb,jStdlibConjunction,jStdlibVerb
+syntax cluster jPrimitiveItems contains=jNoun,jAdverb,jConjunction,jVerb,jCopula
+
+syntax match jControl /\<\%(assert\|break\|case\|catch[dt]\=\|continue\|do\|else\%(if\)\=\|end\|fcase\|for\|if\|return\|select\|throw\|try\|whil\%(e\|st\)\)\./
+syntax match jControl /\<\%(for\|goto\|label\)_\a\k*\./
+
+" Standard library names. A few names need to be defined with ":syntax match"
+" because they would otherwise take precedence over the corresponding jControl
+" and jDefineExpression items.
+syntax keyword jStdlibNoun ARGV BINPATH CR CRLF DEL Debug EAV EMPTY FF FHS IF64 IFBE IFIOS IFJA IFJHS IFJNET IFQT IFRASPI IFUNIX IFWIN IFWINCE IFWINE IFWOW64 JB01 JBOXED JCHAR JCHAR2 JCHAR4 JCMPX JFL JINT JLIB JPTR JSB JSIZES JSTR JSTR2 JSTR4 JTYPES JVERSION LF LF2 LIBFILE TAB UNAME UNXLIB dbhelp libjqt
+syntax keyword jStdlibAdverb define each every fapplylines inv inverse items leaf rows rxapply rxmerge table
+syntax keyword jStdlibConjunction bind cuts def on
+syntax keyword jStdlibVerb AND Endian IFDEF OR XOR abspath anddf android_exec_am android_exec_host android_getdisplaymetrics andunzip apply boxopen boxxopen bx calendar cd cdcb cder cderx cdf charsub chopstring clear coclass cocreate cocurrent codestroy coerase cofind cofindv cofullname coinfo coinsert compare coname conames conew conl conouns conounsx copath copathnl copathnlx coreset costate cut cutLF cutopen cutpara datatype dbctx dbcut dberm dberr dbg dbinto dbjmp dblocals dblxq dblxs dbnxt dbout dbover dbq dbr dbret dbrr dbrrx dbrun dbs dbsig dbsq dbss dbst dbstack dbstk dbstop dbstopme dbstopnext dbstops dbtrace dbview deb debc delstring detab dfh dir dircompare dircompares dirfind dirpath dirss dirssrplc dirtree dirused dlb dltb dltbs dquote drop dropafter dropto dtb dtbs echo empty endian erase evtloop exit expand f2utf8 fappend fappends fboxname fc fcompare fcompares fcopynew fdir ferase fetch fexist fexists fgets file2url fixdotdot fliprgb fmakex foldpara foldtext fpathcreate fpathname fputs fread freadblock freadr freads frename freplace fsize fss fssrplc fstamp fstringreplace ftype fview fwrite fwritenew fwrites getalpha getargs getdate getenv getqtbin hfd hostpathsep ic install iospath isatty isotimestamp isutf16 isutf8 jcwdpath joinstring jpath jpathsep jsystemdefs launch list ljust load loadd mema memf memr memu memw nameclass namelist names nc nl pick quote require rjust rplc rxE rxall rxcomp rxcut rxeq rxerror rxfirst rxfree rxfrom rxhandles rxin rxindex rxinfo rxmatch rxmatches rxrplc rxutf8 script scriptd scripts setalpha setbreak shell show sign sminfo smoutput sort split splitnostring splitstring ss startupandroid stderr stdin stdout stringreplace symdat symget symset take takeafter taketo timespacex timestamp timex tmoutput toCRLF toHOST toJ todate todayno tolist tolower topara toupper tsdiff tsrep tstamp type ucp ucpcount undquote unxlib usleep utf8 uucp valdate wcsize weekday weeknumber weeksinyear winpathsep xedit
+syntax match jStdlibNoun /\<\%(adverb\|conjunction\|dyad\|monad\|noun\|verb\)\>/
+syntax match jStdlibVerb /\<\%(Note\|\%(assert\|break\|do\)\.\@!\)\>/
+
+" Numbers. Matching J numbers is difficult. In fact, the job cannot be done
+" with regular expressions alone. Below is a sketch of the pattern used. It
+" accepts most well-formed numbers and rejects most of the ill-formed ones.
+" See http://www.jsoftware.com/help/dictionary/dcons.htm for reference.
+"
+" "double1" and "double2" patterns:
+" (_?\d+(\.\d*)?|_\.\d+)([eE]_?\d+)?
+" (_?\d+(\.\d*)?|_\.\d+|\.\d+)([eE]_?\d+)?
+"
+" "rational1" and "rational2" patterns:
+" \k<double1>(r\k<double2>)?|__?
+" \k<double2>(r\k<double2>)?|__?
+"
+" "complex1" and "complex2" patterns:
+" \k<rational1>((j|a[dr])\k<rational2>)?
+" \k<rational2>((j|a[dr])\k<rational2>)?
+"
+" "basevalue" pattern:
+" _?[0-9a-z]+(\.[0-9a-z]*)?|_?\.[0-9a-z]+
+"
+" all numbers:
+" \b\k<complex1>([px]\k<complex2>)?(b\k<basevalue>)?(?![0-9A-Za-z_.])
+syntax match jNumber /\<_\.[0-9A-Za-z_.]\@!/
+syntax match jNumber /\<_\=\d\+x[0-9A-Za-z_.]\@!/
+syntax match jNumber /\<\%(__\=r_\=\d\+\|_\=\d\+r__\=\)[0-9A-Za-z_.]\@!/
+syntax match jNumber /\<\%(\%(_\=\d\+\%(\.\d*\)\=\|_\.\d\+\)\%([eE]_\=\d\+\)\=\%(r\%(_\=\d\+\%(\.\d*\)\=\|_\.\d\+\|\.\d\+\)\%([eE]_\=\d\+\)\=\)\=\|__\=\)\%(\%(j\|a[dr]\)\%(\%(_\=\d\+\%(\.\d*\)\=\|_\.\d\+\|\.\d\+\)\%([eE]_\=\d\+\)\=\%(r\%(_\=\d\+\%(\.\d*\)\=\|_\.\d\+\|\.\d\+\)\%([eE]_\=\d\+\)\=\)\=\|__\=\)\)\=\%([px]\%(\%(_\=\d\+\%(\.\d*\)\=\|_\.\d\+\|\.\d\+\)\%([eE]_\=\d\+\)\=\%(r\%(_\=\d\+\%(\.\d*\)\=\|_\.\d\+\|\.\d\+\)\%([eE]_\=\d\+\)\=\)\=\|__\=\)\%(\%(j\|a[dr]\)\%(\%(_\=\d\+\%(\.\d*\)\=\|_\.\d\+\|\.\d\+\)\%([eE]_\=\d\+\)\=\%(r\%(_\=\d\+\%(\.\d*\)\=\|_\.\d\+\|\.\d\+\)\%([eE]_\=\d\+\)\=\)\=\|__\=\)\)\=\)\=\%(b\%(_\=[0-9a-z]\+\%(\.[0-9a-z]*\)\=\|_\=\.[0-9a-z]\+\)\)\=[0-9A-Za-z_.]\@!/
+
+syntax region jString oneline start=/'/ skip=/''/ end=/'/
+
+syntax keyword jArgument contained x y u v m n
+
+" Primitives. Order is significant both within the patterns and among
+" ":syntax match" statements. Refer to "Parts of speech" in the J dictionary.
+syntax match jNoun /\<a[.:]/
+syntax match jAdverb /[}~]\|[/\\]\.\=\|\<\%([Mbft]\.\|t:\)/
+syntax match jConjunction /"\|`:\=\|[.:@&][.:]\=\|&\.:\|\<\%([dDHT]\.\|[DLS]:\)/
+syntax match jVerb /[=!\]]\|[\^?]\.\=\|[;[]:\=\|{\.\|[_/\\]:\|[<>+*\-%$|,#][.:]\=\|[~}"][.:]\|{\%[::]\|\<\%([ACeEiIjLor]\.\|p\.\.\=\|[ipqsux]:\|0:\|_\=[1-9]:\)/
+syntax match jCopula /=[.:]/
+syntax match jConjunction /;\.\|\^:\|![.:]/
+
+" Explicit noun definition. The difficulty is that the define expression can
+" occur in the middle of a line but the jNounDefine region must only start on
+" the next line. The trick is to split the problem into two regions and link
+" them with "nextgroup=". The fold wrapper provides syntax folding.
+syntax region jNounDefineFold
+ \ matchgroup=NONE start=/\%(\%(\%(^\s*Note\)\|\<\%(0\|noun\)\s\+\%(\:\s*0\|def\s\+0\|define\)\)\>\)\@=/
+ \ keepend matchgroup=NONE end=/^\s*)\s*$/
+ \ contains=jNounDefineStart
+ \ fold
+syntax region jNounDefineStart
+ \ matchgroup=jDefineExpression start=/\%(\%(^\s*Note\)\|\<\%(0\|noun\)\s\+\%(\:\s*0\|def\s\+0\|define\)\)\>/
+ \ keepend matchgroup=NONE end=/$/
+ \ contains=@jStdlibItems,@jPrimitiveItems,jNumber,jString,jParenGroup,jParen,jComment
+ \ contained oneline skipempty nextgroup=jDefineEnd,jNounDefine
+" These two items must have "contained", which allows them to match only after
+" jNounDefineStart thanks to the "nextgroup=" above.
+syntax region jNounDefine
+ \ matchgroup=NONE start=/^/
+ \ matchgroup=jDefineEnd end=/^\s*)\s*$/
+ \ contained
+" This match is necessary in case of an empty noun definition
+syntax match jDefineEnd contained /^\s*)\s*$/
+
+" Explicit verb, adverb, and conjunction definition
+syntax region jDefine
+ \ matchgroup=jDefineExpression start=/\<\%([1-4]\|13\|adverb\|conjunction\|verb\|monad\|dyad\)\s\+\%(:\s*0\|def\s\+0\|define\)\>/
+ \ matchgroup=jDefineEnd end=/^\s*)\s*$/
+ \ contains=jControl,@jStdlibItems,@jPrimitiveItems,jNumber,jString,jArgument,jParenGroup,jParen,jComment,jDefineMonadDyad
+ \ fold
+syntax match jDefineMonadDyad contained /^\s*:\s*$/
+
+" Paired parentheses. When a jDefineExpression such as "3 : 0" is
+" parenthesised it will erroneously extend jParenGroup to span over the whole
+" definition body. This situation receives a special treatment here.
+syntax match jParen /(\%(\s*\%([0-4]\|13\|noun\|adverb\|conjunction\|verb\|monad\|dyad\)\s\+\%(:\s*0\|def\s\+0\|define\)\s*)\)\@=/
+syntax match jParen contained /\%((\s*\%([0-4]\|13\|noun\|adverb\|conjunction\|verb\|monad\|dyad\)\s\+\%(:\s*0\|def\s\+0\|define\)\s*\)\@<=)/
+syntax region jParenGroup
+ \ matchgroup=jParen start=/(\%(\s*\%([0-4]\|13\|noun\|adverb\|conjunction\|verb\|monad\|dyad\)\s\+\%(:\s*0\|def\s\+0\|define\)\>\)\@!/
+ \ matchgroup=jParen end=/)/
+ \ oneline transparent
+
+syntax keyword jTodo contained TODO FIXME XXX
+syntax match jComment /\<NB\..*$/ contains=jTodo,@Spell
+
+syntax match jSharpBang /\%^#!.*$/
+
+highlight default link jControl Statement
+highlight default link jStdlibNoun Identifier
+highlight default link jStdlibAdverb Function
+highlight default link jStdlibConjunction Function
+highlight default link jStdlibVerb Function
+highlight default link jString String
+highlight default link jNumber Number
+highlight default link jNoun Constant
+highlight default link jAdverb Normal
+highlight default link jConjunction Normal
+highlight default link jVerb Normal
+highlight default link jCopula Normal
+highlight default link jArgument Identifier
+highlight default link jParen Delimiter
+
+highlight default link jDefineExpression Define
+highlight default link jDefineMonadDyad Delimiter
+highlight default link jDefineEnd Delimiter
+highlight default link jNounDefine Normal
+
+highlight default link jTodo Todo
+highlight default link jComment Comment
+highlight default link jSharpBang PreProc
+
+let b:current_syntax = 'j'
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
diff --git a/runtime/syntax/jal.vim b/runtime/syntax/jal.vim
new file mode 100644
index 0000000..460bc01
--- /dev/null
+++ b/runtime/syntax/jal.vim
@@ -0,0 +1,236 @@
+" Vim syntax file
+" Language: JAL
+" Version: 0.1
+" Last Change: 2003 May 11
+" Maintainer: Mark Gross <mark@thegnar.org>
+" This is a syntax definition for the JAL language.
+" It is based on the Source Forge compiler source code.
+" https://sourceforge.net/projects/jal/
+"
+" TODO test.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+syn sync lines=250
+
+syn keyword picTodo NOTE TODO XXX contained
+
+syn match picIdentifier "[a-z_$][a-z0-9_$]*"
+syn match picLabel "^[A-Z_$][A-Z0-9_$]*"
+syn match picLabel "^[A-Z_$][A-Z0-9_$]*:"me=e-1
+
+syn match picASCII "A\='.'"
+syn match picBinary "B'[0-1]\+'"
+syn match picDecimal "D'\d\+'"
+syn match picDecimal "\d\+"
+syn match picHexadecimal "0x\x\+"
+syn match picHexadecimal "H'\x\+'"
+syn match picHexadecimal "[0-9]\x*h"
+syn match picOctal "O'[0-7]\o*'"
+
+syn match picComment ";.*" contains=picTodo
+
+syn region picString start=+"+ end=+"+
+
+syn keyword picRegister indf tmr0 pcl status fsr port_a port_b port_c port_d port_e x84_eedata x84_eeadr pclath intcon
+syn keyword picRegister f877_tmr1l f877_tmr1h f877_t1con f877_t2con f877_ccpr1l f877_ccpr1h f877_ccp1con
+syn keyword picRegister f877_pir1 f877_pir2 f877_pie1 f877_adcon1 f877_adcon0 f877_pr2 f877_adresl f877_adresh
+syn keyword picRegister f877_eeadr f877_eedath f877_eeadrh f877_eedata f877_eecon1 f877_eecon2 f628_EECON2
+syn keyword picRegister f877_rcsta f877_txsta f877_spbrg f877_txreg f877_rcreg f628_EEDATA f628_EEADR f628_EECON1
+
+" Register --- bits
+" STATUS
+syn keyword picRegisterPart status_c status_dc status_z status_pd
+syn keyword picRegisterPart status_to status_rp0 status_rp1 status_irp
+
+" pins
+syn keyword picRegisterPart pin_a0 pin_a1 pin_a2 pin_a3 pin_a4 pin_a5
+syn keyword picRegisterPart pin_b0 pin_b1 pin_b2 pin_b3 pin_b4 pin_b5 pin_b6 pin_b7
+syn keyword picRegisterPart pin_c0 pin_c1 pin_c2 pin_c3 pin_c4 pin_c5 pin_c6 pin_c7
+syn keyword picRegisterPart pin_d0 pin_d1 pin_d2 pin_d3 pin_d4 pin_d5 pin_d6 pin_d7
+syn keyword picRegisterPart pin_e0 pin_e1 pin_e2
+
+syn keyword picPortDir port_a_direction port_b_direction port_c_direction port_d_direction port_e_direction
+
+syn match picPinDir "pin_a[012345]_direction"
+syn match picPinDir "pin_b[01234567]_direction"
+syn match picPinDir "pin_c[01234567]_direction"
+syn match picPinDir "pin_d[01234567]_direction"
+syn match picPinDir "pin_e[012]_direction"
+
+
+" INTCON
+syn keyword picRegisterPart intcon_gie intcon_eeie intcon_peie intcon_t0ie intcon_inte
+syn keyword picRegisterPart intcon_rbie intcon_t0if intcon_intf intcon_rbif
+
+" TIMER
+syn keyword picRegisterPart t1ckps1 t1ckps0 t1oscen t1sync tmr1cs tmr1on tmr1ie tmr1if
+
+"cpp bits
+syn keyword picRegisterPart ccp1x ccp1y
+
+" adcon bits
+syn keyword picRegisterPart adcon0_go adcon0_ch0 adcon0_ch1 adcon0_ch2
+
+" EECON
+syn keyword picRegisterPart eecon1_rd eecon1_wr eecon1_wren eecon1_wrerr eecon1_eepgd
+syn keyword picRegisterPart f628_eecon1_rd f628_eecon1_wr f628_eecon1_wren f628_eecon1_wrerr
+
+" usart
+syn keyword picRegisterPart tx9 txen sync brgh tx9d
+syn keyword picRegisterPart spen rx9 cren ferr oerr rx9d
+syn keyword picRegisterPart TXIF RCIF
+
+" OpCodes...
+syn keyword picOpcode addlw andlw call clrwdt goto iorlw movlw option retfie retlw return sleep sublw tris
+syn keyword picOpcode xorlw addwf andwf clrf clrw comf decf decfsz incf incfsz retiw iorwf movf movwf nop
+syn keyword picOpcode rlf rrf subwf swapf xorwf bcf bsf btfsc btfss skpz skpnz setz clrz skpc skpnc setc clrc
+syn keyword picOpcode skpdc skpndc setdc clrdc movfw tstf bank page HPAGE mullw mulwf cpfseq cpfsgt cpfslt banka bankb
+
+
+syn keyword jalBoolean true false
+syn keyword jalBoolean off on
+syn keyword jalBit high low
+syn keyword jalConstant Input Output all_input all_output
+syn keyword jalConditional if else then elsif end if
+syn keyword jalLabel goto
+syn keyword jalRepeat for while forever loop
+syn keyword jalStatement procedure function
+syn keyword jalStatement return end volatile const var
+syn keyword jalType bit byte
+
+syn keyword jalModifier interrupt assembler asm put get
+syn keyword jalStatement out in is begin at
+syn keyword jalDirective pragma jump_table target target_clock target_chip name error test assert
+syn keyword jalPredefined hs xt rc lp internal 16c84 16f84 16f877 sx18 sx28 12c509a 12c508
+syn keyword jalPredefined 12ce674 16f628 18f252 18f242 18f442 18f452 12f629 12f675 16f88
+syn keyword jalPredefined 16f876 16f873 sx_12 sx18 sx28 pic_12 pic_14 pic_16
+
+syn keyword jalDirective chip osc clock fuses cpu watchdog powerup protection
+
+syn keyword jalFunction bank_0 bank_1 bank_2 bank_3 bank_4 bank_5 bank_6 bank_7 trisa trisb trisc trisd trise
+syn keyword jalFunction _trisa_flush _trisb_flush _trisc_flush _trisd_flush _trise_flush
+
+syn keyword jalPIC local idle_loop
+
+syn region jalAsm matchgroup=jalAsmKey start="\<assembler\>" end="\<end assembler\>" contains=jalComment,jalPreProc,jalLabel,picIdentifier, picLabel,picASCII,picDecimal,picHexadecimal,picOctal,picComment,picString,picRegister,picRigisterPart,picOpcode,picDirective,jalPIC
+syn region jalAsm matchgroup=jalAsmKey start="\<asm\>" end=/$/ contains=jalComment,jalPreProc,jalLabel,picIdentifier, picLabel,picASCII,picDecimal,picHexadecimal,picOctal,picComment,picString,picRegister,picRigisterPart,picOpcode,picDirective,jalPIC
+
+syn region jalPsudoVars matchgroup=jalPsudoVarsKey start="\<'put\>" end="/<is/>" contains=jalComment
+
+syn match jalStringEscape contained "#[12][0-9]\=[0-9]\="
+syn match jalIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
+syn match jalSymbolOperator "[+\-/*=]"
+syn match jalSymbolOperator "!"
+syn match jalSymbolOperator "<"
+syn match jalSymbolOperator ">"
+syn match jalSymbolOperator "<="
+syn match jalSymbolOperator ">="
+syn match jalSymbolOperator "!="
+syn match jalSymbolOperator "=="
+syn match jalSymbolOperator "<<"
+syn match jalSymbolOperator ">>"
+syn match jalSymbolOperator "|"
+syn match jalSymbolOperator "&"
+syn match jalSymbolOperator "%"
+syn match jalSymbolOperator "?"
+syn match jalSymbolOperator "[()]"
+syn match jalSymbolOperator "[\^.]"
+syn match jalLabel "[\^]*:"
+
+syn match jalNumber "-\=\<\d[0-9_]\+\>"
+syn match jalHexNumber "0x[0-9A-Fa-f_]\+\>"
+syn match jalBinNumber "0b[01_]\+\>"
+
+" String
+"wrong strings
+syn region jalStringError matchgroup=jalStringError start=+"+ end=+"+ end=+$+ contains=jalStringEscape
+
+"right strings
+syn region jalString matchgroup=jalString start=+'+ end=+'+ oneline contains=jalStringEscape
+" To see the start and end of strings:
+syn region jalString matchgroup=jalString start=+"+ end=+"+ oneline contains=jalStringEscapeGPC
+
+syn keyword jalTodo contained TODO
+syn region jalComment start=/-- / end=/$/ oneline contains=jalTodo
+syn region jalComment start=/--\t/ end=/$/ oneline contains=jalTodo
+syn match jalComment /--\_$/
+syn region jalPreProc start="include" end=/$/ contains=JalComment,jalToDo
+
+
+if exists("jal_no_tabs")
+ syn match jalShowTab "\t"
+endif
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link jalAcces jalStatement
+hi def link jalBoolean Boolean
+hi def link jalBit Boolean
+hi def link jalComment Comment
+hi def link jalConditional Conditional
+hi def link jalConstant Constant
+hi def link jalDelimiter Identifier
+hi def link jalDirective PreProc
+hi def link jalException Exception
+hi def link jalFloat Float
+hi def link jalFunction Function
+hi def link jalPsudoVarsKey Function
+hi def link jalLabel Label
+hi def link jalMatrixDelimiter Identifier
+hi def link jalModifier Type
+hi def link jalNumber Number
+hi def link jalBinNumber Number
+hi def link jalHexNumber Number
+hi def link jalOperator Operator
+hi def link jalPredefined Constant
+hi def link jalPreProc PreProc
+hi def link jalRepeat Repeat
+hi def link jalStatement Statement
+hi def link jalString String
+hi def link jalStringEscape Special
+hi def link jalStringEscapeGPC Special
+hi def link jalStringError Error
+hi def link jalStruct jalStatement
+hi def link jalSymbolOperator jalOperator
+hi def link jalTodo Todo
+hi def link jalType Type
+hi def link jalUnclassified Statement
+hi def link jalAsm Assembler
+hi def link jalError Error
+hi def link jalAsmKey Statement
+hi def link jalPIC Statement
+
+hi def link jalShowTab Error
+
+hi def link picTodo Todo
+hi def link picComment Comment
+hi def link picDirective Statement
+hi def link picLabel Label
+hi def link picString String
+
+hi def link picOpcode Keyword
+hi def link picRegister Structure
+hi def link picRegisterPart Special
+hi def link picPinDir SPecial
+hi def link picPortDir SPecial
+
+hi def link picASCII String
+hi def link picBinary Number
+hi def link picDecimal Number
+hi def link picHexadecimal Number
+hi def link picOctal Number
+
+hi def link picIdentifier Identifier
+
+
+
+let b:current_syntax = "jal"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/jam.vim b/runtime/syntax/jam.vim
new file mode 100644
index 0000000..fc7f49d
--- /dev/null
+++ b/runtime/syntax/jam.vim
@@ -0,0 +1,240 @@
+" Vim syntax file
+" Language: JAM
+" Maintainer: Ralf Lemke (ralflemk@t-online.de)
+" Last change: 2012 Jan 08 by Thilo Six
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=@,48-57,_,-
+
+" A bunch of useful jam keywords
+syn keyword jamStatement break call dbms flush global include msg parms proc public receive return send unload vars
+syn keyword jamConditional if else
+syn keyword jamRepeat for while next step
+
+syn keyword jamTodo contained TODO FIXME XXX
+syn keyword jamDBState1 alias binary catquery close close_all_connections column_names connection continue continue_bottom continue_down continue_top continue_up
+syn keyword jamDBState2 cursor declare engine execute format occur onentry onerror onexit sql start store unique with
+syn keyword jamSQLState1 all alter and any avg between by count create current data database delete distinct drop exists fetch from grant group
+syn keyword jamSQLState2 having index insert into like load max min of open order revoke rollback runstats select set show stop sum synonym table to union update values view where bundle
+
+syn keyword jamLibFunc1 dm_bin_create_occur dm_bin_delete_occur dm_bin_get_dlength dm_bin_get_occur dm_bin_length dm_bin_max_occur dm_bin_set_dlength dm_convert_empty dm_cursor_connection dm_cursor_consistent dm_cursor_engine dm_dbi_init dm_dbms dm_dbms_noexp dm_disable_styles dm_enable_styles dm_exec_sql dm_expand dm_free_sql_info dm_gen_change_execute_using dm_gen_change_select_from dm_gen_change_select_group_by dm_gen_change_select_having dm_gen_change_select_list dm_gen_change_select_order_by dm_gen_change_select_suffix dm_gen_change_select_where dm_gen_get_tv_alias dm_gen_sql_info
+
+syn keyword jamLibFunc2 dm_get_db_conn_handle dm_get_db_cursor_handle dm_get_driver_option dm_getdbitext dm_init dm_is_connection dm_is_cursor dm_is_engine dm_odb_preserves_cursor dm_reset dm_set_driver_option dm_set_max_fetches dm_set_max_rows_per_fetch dm_set_tm_clear_fast dm_val_relative sm_adjust_area sm_allget sm_amt_format sm_e_amt_format sm_i_amt_format sm_n_amt_format sm_o_amt_format sm_append_bundle_data sm_append_bundle_done sm_append_bundle_item sm_d_at_cur sm_l_at_cur sm_r_at_cur sm_mw_attach_drawing_func sm_mwn_attach_drawing_func sm_mwe_attach_drawing_func sm_xm_attach_drawing_func sm_xmn_attach_drawing_func sm_xme_attach_drawing_func sm_backtab sm_bel sm_bi_comparesm_bi_copy sm_bi_initialize sm_bkrect sm_c_off sm_c_on sm_c_vis sm_calc sm_cancel sm_ckdigit sm_cl_all_mdts sm_cl_unprot sm_clear_array sm_n_clear_array sm_1clear_array sm_n_1clear_array sm_close_window sm_com_load_picture sm_com_QueryInterface sm_com_result sm_com_result_msg sm_com_set_handler sm_copyarray sm_n_copyarray sm_create_bundle
+
+syn keyword jamLibFunc3 sm_d_msg_line sm_dblval sm_e_dblval sm_i_dblval sm_n_dblval sm_o_dblval sm_dd_able sm_dde_client_connect_cold sm_dde_client_connect_hot sm_dde_client_connect_warm sm_dde_client_disconnect sm_dde_client_off sm_dde_client_on sm_dde_client_paste_link_cold sm_dde_client_paste_link_hot sm_dde_client_paste_link_warm sm_dde_client_request sm_dde_execute sm_dde_install_notify sm_dde_poke sm_dde_server_off sm_dde_server_on sm_delay_cursor sm_deselect sm_dicname sm_disp_off sm_dlength sm_e_dlength sm_i_dlength sm_n_dlength sm_o_dlength sm_do_uinstalls sm_i_doccur sm_o_doccur sm_drawingarea sm_xm_drawingarea sm_dtofield sm_e_dtofield sm_i_dtofield sm_n_dtofield sm_o_dtofield sm_femsg sm_ferr_reset sm_fi_path sm_file_copy sm_file_exists sm_file_move sm_file_remove sm_fi_open sm_fi_path sm_filebox sm_filetypes sm_fio_a2f sm_fio_close sm_fio_editor sm_fio_error sm_fio_error_set sm_fio_f2a sm_fio_getc sm_fio_gets sm_fio_handle sm_fio_open sm_fio_putc sm_fio_puts sm_fio_rewind sm_flush sm_d_form sm_l_form
+
+syn keyword jamLibFunc4 sm_r_form sm_formlist sm_fptr sm_e_fptr sm_i_fptr sm_n_fptr sm_o_fptr sm_fqui_msg sm_fquiet_err sm_free_bundle sm_ftog sm_e_ftog sm_i_ftog sm_n_ftog sm_o_ftog sm_fval sm_e_fval sm_i_fval sm_n_fval sm_o_fval sm_i_get_bi_data sm_o_get_bi_data sm_get_bundle_data sm_get_bundle_item_count sm_get_bundle_occur_count sm_get_next_bundle_name sm_i_get_tv_bi_data sm_o_get_tv_bi_data sm_getfield sm_e_getfield sm_i_getfield sm_n_getfield sm_o_getfield sm_getkey sm_gofield sm_e_gofield sm_i_gofield sm_n_gofield sm_o_gofield sm_gtof sm_gval sm_i_gtof sm_n_gval sm_hlp_by_name sm_home sm_inimsg sm_initcrt sm_jinitcrt sm_jxinitcrt sm_input sm_inquire sm_install sm_intval sm_e_intval sm_i_intval sm_n_intval sm_o_intval sm_i_ioccur sm_o_ioccur sm_is_bundle sm_is_no sm_e_is_no sm_i_is_no sm_n_is_no sm_o_is_no sm_is_yes sm_e_is_yes sm_i_is_yes sm_n_is_yes sm_o_is_yes sm_isabort sm_iset sm_issv sm_itofield sm_e_itofield sm_i_itofield sm_n_itofield sm_o_itofield sm_jclose sm_jfilebox sm_jform sm_djplcall sm_jplcall
+
+syn keyword jamLibFunc5 sm_sjplcall sm_jplpublic sm_jplunload sm_jtop sm_jwindow sm_key_integer sm_keyfilter sm_keyhit sm_keyinit sm_n_keyinit sm_keylabel sm_keyoption sm_l_close sm_l_open sm_l_open_syslib sm_last sm_launch sm_h_ldb_fld_get sm_n_ldb_fld_get sm_h_ldb_n_fld_get sm_n_ldb_n_fld_get sm_h_ldb_fld_store sm_n_ldb_fld_store sm_h_ldb_n_fld_store sm_n_ldb_n_fld_store sm_ldb_get_active sm_ldb_get_inactive sm_ldb_get_next_active sm_ldb_get_next_inactive sm_ldb_getfield sm_i_ldb_getfield sm_n_ldb_getfield sm_o_ldb_getfield sm_ldb_h_getfield sm_i_ldb_h_getfield sm_n_ldb_h_getfield sm_o_ldb_h_getfield sm_ldb_handle sm_ldb_init sm_ldb_is_loaded sm_ldb_load sm_ldb_name sm_ldb_next_handle sm_ldb_pop sm_ldb_push sm_ldb_putfield sm_i_ldb_putfield sm_n_ldb_putfield sm_o_ldb_putfield sm_ldb_h_putfield sm_i_ldb_h_putfield sm_n_ldb_h_putfield sm_o_ldb_h_putfield sm_ldb_state_get sm_ldb_h_state_get sm_ldb_state_set sm_ldb_h_state_set sm_ldb_unload sm_ldb_h_unload sm_leave sm_list_objects_count sm_list_objects_end sm_list_objects_next
+
+syn keyword jamLibFunc6 sm_list_objects_start sm_lngval sm_e_lngval sm_i_lngval sm_n_lngval sm_o_lngval sm_load_screen sm_log sm_lstore sm_ltofield sm_e_ltofield sm_i_ltofield sm_n_ltofield sm_o_ltofield sm_m_flush sm_menu_bar_error sm_menu_change sm_menu_create sm_menu_delete sm_menu_get_int sm_menu_get_str sm_menu_install sm_menu_remove sm_message_box sm_mncrinit6 sm_mnitem_change sm_n_mnitem_change sm_mnitem_create sm_n_mnitem_create sm_mnitem_delete sm_n_mnitem_delete sm_mnitem_get_int sm_n_mnitem_get_int sm_mnitem_get_str sm_n_mnitem_get_str sm_mnscript_load sm_mnscript_unload sm_ms_inquire sm_msg sm_msg_del sm_msg_get sm_msg_read sm_d_msg_read sm_n_msg_read sm_msgfind sm_mts_CreateInstance sm_mts_CreateProperty sm_mts_CreatePropertyGroup sm_mts_DisableCommit sm_mts_EnableCommit sm_mts_GetPropertyValue sm_mts_IsCallerInRole sm_mts_IsInTransaction sm_mts_IsSecurityEnabled sm_mts_PutPropertyValue sm_mts_SetAbort sm_mts_SetComplete sm_mus_time sm_mw_get_client_wnd sm_mw_get_cmd_show sm_mw_get_frame_wnd sm_mw_get_instance
+
+syn keyword jamLibFunc7 sm_mw_get_prev_instance sm_mw_PrintScreen sm_next_sync sm_nl sm_null sm_e_null sm_i_null sm_n_null sm_o_null sm_obj_call sm_obj_copy sm_obj_copy_id sm_obj_create sm_obj_delete sm_obj_delete_id sm_obj_get_property sm_obj_onerror sm_obj_set_property sm_obj_sort sm_obj_sort_auto sm_occur_no sm_off_gofield sm_e_off_gofield sm_i_off_gofield sm_n_off_gofield sm_o_off_gofield sm_option sm_optmnu_id sm_pinquire sm_popup_at_cur sm_prop_error sm_prop_get_int sm_prop_get_str sm_prop_get_dbl sm_prop_get_x_int sm_prop_get_x_str sm_prop_get_x_dbl sm_prop_get_m_int sm_prop_get_m_str sm_prop_get_m_dbl sm_prop_id sm_prop_name_to_id sm_prop_set_int sm_prop_set_str sm_prop_set_dbl sm_prop_set_x_int sm_prop_set_x_str sm_prop_set_x_dbl sm_prop_set_m_int sm_prop_set_m_str sm_prop_set_m_dbl sm_pset sm_putfield sm_e_putfield sm_i_putfield sm_n_putfield sm_o_putfield sm_raise_exception sm_receive sm_receive_args sm_rescreen sm_resetcrt sm_jresetcrt sm_jxresetcrt sm_resize sm_restore_data sm_return sm_return_args sm_rmformlist sm_rs_data
+
+syn keyword jamLibFunc8 sm_rw_error_message sm_rw_play_metafile sm_rw_runreport sm_s_val sm_save_data sm_sdtime sm_select sm_send sm_set_help sm_setbkstat sm_setsibling sm_setstatus sm_sh_off sm_shell sm_shrink_to_fit sm_slib_error sm_slib_install sm_slib_load sm_soption sm_strip_amt_ptr sm_e_strip_amt_ptr sm_i_strip_amt_ptr sm_n_strip_amt_ptr sm_o_strip_amt_ptr sm_sv_data sm_sv_free sm_svscreen sm_tab sm_tm_clear sm_tm_clear_model_events sm_tm_command sm_tm_command_emsgset sm_tm_command_errset sm_tm_continuation_validity sm_tm_dbi_checker sm_tm_error sm_tm_errorlog sm_tm_event sm_tm_event_name sm_tm_failure_message sm_tm_handling sm_tm_inquire sm_tm_iset sm_tm_msg_count_error sm_tm_msg_emsg sm_tm_msg_error sm_tm_old_bi_context sm_tm_pcopy sm_tm_pinquire sm_tm_pop_model_event sm_tm_pset sm_tm_push_model_event sm_tmpnam sm_tp_exec sm_tp_free_arg_buf sm_tp_gen_insert sm_tp_gen_sel_return sm_tp_gen_sel_where sm_tp_gen_val_link sm_tp_gen_val_return sm_tp_get_svc_alias sm_tp_get_tux_callid sm_translatecoords sm_tst_all_mdts
+
+syn keyword jamLibFunc9 sm_udtime sm_ungetkey sm_unload_screen sm_unsvscreen sm_upd_select sm_validate sm_n_validate sm_vinit sm_n_vinit sm_wcount sm_wdeselect sm_web_get_cookie sm_web_invoke_url sm_web_log_error sm_web_save_global sm_web_set_cookie sm_web_unsave_all_globals sm_web_unsave_global sm_mw_widget sm_mwe_widget sm_mwn_widget sm_xm_widget sm_xme_widget sm_xmn_widget sm_win_shrink sm_d_window sm_d_at_cur sm_l_window sm_l_at_cur sm_r_window sm_r_at_cur sm_winsize sm_wrotate sm_wselect sm_n_wselect sm_ww_length sm_n_ww_length sm_ww_read sm_n_ww_read sm_ww_write sm_n_ww_write sm_xlate_table sm_xm_get_base_window sm_xm_get_display
+
+syn keyword jamVariable1 SM_SCCS_ID SM_ENTERTERM SM_MALLOC SM_CANCEL SM_BADTERM SM_FNUM SM_DZERO SM_EXPONENT SM_INVDATE SM_MATHERR SM_FRMDATA SM_NOFORM SM_FRMERR SM_BADKEY SM_DUPKEY SM_ERROR SM_SP1 SM_SP2 SM_RENTRY SM_MUSTFILL SM_AFOVRFLW SM_TOO_FEW_DIGITS SM_CKDIGIT SM_HITANY SM_NOHELP SM_MAXHELP SM_OUTRANGE SM_ENTERTERM1 SM_SYSDATE SM_DATFRM SM_DATCLR SM_DATINV SM_KSDATA SM_KSERR SM_KSNONE SM_KSMORE SM_DAYA1 SM_DAYA2 SM_DAYA3 SM_DAYA4 SM_DAYA5 SM_DAYA6 SM_DAYA7 SM_DAYL1 SM_DAYL2 SM_DAYL3 SM_DAYL4 SM_DAYL5 SM_DAYL6 SM_DAYL7 SM_MNSCR_LOAD SM_MENU_INSTALL SM_INSTDEFSCRL SM_INSTSCROLL SM_MOREDATA SM_READY SM_WAIT SM_YES SM_NO SM_NOTEMP SM_FRMHELP SM_FILVER SM_ONLYONE SM_WMSMOVE SM_WMSSIZE SM_WMSOFF SM_LPRINT SM_FMODE SM_NOFILE SM_NOSECTN SM_FFORMAT SM_FREAD SM_RX1 SM_RX2 SM_RX3 SM_TABLOOK SM_MISKET SM_ILLKET SM_ILLBRA SM_MISDBLKET SM_ILLDBLKET SM_ILLDBLBRA SM_ILL_RIGHT SM_ILLELSE SM_NUMBER SM_EOT SM_BREAK SM_NOARGS SM_BIGVAR SM_EXCESS SM_EOL SM_FILEIO SM_FOR SM_RCURLY SM_NONAME SM_1JPL_ERR SM_2JPL_ERR SM_3JPL_ERR
+
+syn keyword jamVariable2 SM_JPLATCH SM_FORMAT SM_DESTINATION SM_ORAND SM_ORATOR SM_ILL_LEFT SM_MISSPARENS SM_ILLCLOSE_COMM SM_FUNCTION SM_EQUALS SM_MISMATCH SM_QUOTE SM_SYNTAX SM_NEXT SM_VERB_UNKNOWN SM_JPLFORM SM_NOT_LOADED SM_GA_FLG SM_GA_CHAR SM_GA_ARG SM_GA_DIG SM_NOFUNC SM_BADPROTO SM_JPLPUBLIC SM_NOCOMPILE SM_NULLEDIT SM_RP_NULL SM_DBI_NOT_INST SM_NOTJY SM_MAXLIB SM_FL_FLLIB SM_TPI_NOT_INST SM_RW_NOT_INST SM_MONA1 SM_MONA2 SM_MONA3 SM_MONA4 SM_MONA5 SM_MONA6 SM_MONA7 SM_MONA8 SM_MONA9 SM_MONA10 SM_MONA11 SM_MONA12 SM_MONL1 SM_MONL2 SM_MONL3 SM_MONL4 SM_MONL5 SM_MONL6 SM_MONL7 SM_MONL8 SM_MONL9 SM_MONL10 SM_MONL11 SM_MONL12 SM_AM SM_PM SM_0DEF_DTIME SM_1DEF_DTIME SM_2DEF_DTIME SM_3DEF_DTIME SM_4DEF_DTIME SM_5DEF_DTIME SM_6DEF_DTIME SM_7DEF_DTIME SM_8DEF_DTIME SM_9DEF_DTIME SM_CALC_DATE SM_BAD_DIGIT SM_BAD_YN SM_BAD_ALPHA SM_BAD_NUM SM_BAD_ALPHNUM SM_DECIMAL SM_1STATS SM_VERNO SM_DIG_ERR SM_YN_ERR SM_LET_ERR SM_NUM_ERR SM_ANUM_ERR SM_REXP_ERR SM_POSN_ERR SM_FBX_OPEN SM_FBX_WINDOW SM_FBX_SIBLING SM_OPENDIR
+
+syn keyword jamVariable3 SM_GETFILES SM_CHDIR SM_GETCWD SM_UNCLOSED_COMM SM_MB_OKLABEL SM_MB_CANCELLABEL SM_MB_YESLABEL SM_MB_NOLABEL SM_MB_RETRYLABEL SM_MB_IGNORELABEL SM_MB_ABORTLABEL SM_MB_HELPLABEL SM_MB_STOP SM_MB_QUESTION SM_MB_WARNING SM_MB_INFORMATION SM_MB_YESALLLABEL SM_0MN_CURRDEF SM_1MN_CURRDEF SM_2MN_CURRDEF SM_0DEF_CURR SM_1DEF_CURR SM_2DEF_CURR SM_3DEF_CURR SM_4DEF_CURR SM_5DEF_CURR SM_6DEF_CURR SM_7DEF_CURR SM_8DEF_CURR SM_9DEF_CURR SM_SEND_SYNTAX SM_SEND_ITEM SM_SEND_INVALID_BUNDLE SM_RECEIVE_SYNTAX SM_RECEIVE_ITEM_NUMBER SM_RECEIVE_OVERFLOW SM_RECEIVE_ITEM SM_SYNCH_RECEIVE SM_EXEC_FAIL SM_DYNA_HELP_NOT_AVAIL SM_DLL_LOAD_ERR SM_DLL_UNRESOLVED SM_DLL_VERSION_ERR SM_DLL_OPTION_ERR SM_DEMOERR SM_MB_OKALLLABEL SM_MB_NOALLLABEL SM_BADPROP SM_BETWEEN SM_ATLEAST SM_ATMOST SM_PR_ERROR SM_PR_OBJID SM_PR_OBJECT SM_PR_ITEM SM_PR_PROP SM_PR_PROP_ITEM SM_PR_PROP_VAL SM_PR_CONVERT SM_PR_OBJ_TYPE SM_PR_RANGE SM_PR_NO_SET SM_PR_BYND_SCRN SM_PR_WW_SCROLL SM_PR_NO_SYNC SM_PR_TOO_BIG SM_PR_BAD_MASK SM_EXEC_MEM_ERR
+
+syn keyword jamVariable4 SM_EXEC_NO_PROG SM_PR_NO_KEYSTRUCT SM_REOPEN_AS_SLIB SM_REOPEN_THE_SLIB SM_ERRLIB SM_WARNLIB SM_LIB_DOWNGRADE SM_OLDER SM_NEWER SM_UPGRADE SM_LIB_READONLY SM_LOPEN_ERR SM_LOPEN_WARN SM_MLOPEN_CREAT SM_MLOPEN_INIT SM_LIB_ERR SM_LIB_ISOLATE SM_LIB_NO_ERR SM_LIB_REC_ERR SM_LIB_FATAL_ERR SM_LIB_LERR_FILE SM_LIB_LERR_NOTLIB SM_LIB_LERR_BADVERS SM_LIB_LERR_FORMAT SM_LIB_LERR_BADCM SM_LIB_LERR_LOCK SM_LIB_LERR_RESERVED SM_LIB_LERR_READONLY SM_LIB_LERR_NOENTRY SM_LIB_LERR_BUSY SM_LIB_LERR_ROVERS SM_LIB_LERR_DEFAULT SM_LIB_BADCM SM_LIB_LERR_NEW SM_STANDALONE_MODE SM_FEATURE_RESTRICT FM_CH_LOST FM_JPL_PROMPT FM_YR4 FM_YR2 FM_MON FM_MON2 FM_DATE FM_DATE2 FM_HOUR FM_HOUR2 FM_MIN FM_MIN2 FM_SEC FM_SEC2 FM_YRDAY FM_AMPM FM_DAYA FM_DAYL FM_MONA FM_MONL FM_0MN_DEF_DT FM_1MN_DEF_DT FM_2MN_DEF_DT FM_DAY JM_QTERMINATE JM_HITSPACE JM_HITACK JM_NOJWIN UT_MEMERR UT_P_OPT UT_V_OPT UT_E_BINOPT UT_NO_INPUT UT_SECLONG UT_1FNAME UT_SLINE UT_FILE UT_ERROR UT_WARNING UT_MISSEQ UT_VOPT UT_M2_DESCR
+
+syn keyword jamVariable5 UT_M2_PROGNAME UT_M2_USAGE UT_M2_O_OPT UT_M2_COM UT_M2_BADTAG UT_M2_MSSQUOT UT_M2_AFTRQUOT UT_M2_DUPSECT UT_M2_BADUCLSS UT_M2_USECPRFX UT_M2_MPTYUSCT UT_M2_DUPMSGTG UT_M2_TOOLONG UT_M2_LONG UT_K2_DESCR UT_K2_PROGNAME UT_K2_USAGE UT_K2_MNEM UT_K2_NKEYDEF UT_K2_DUPKEY UT_K2_NOTFOUND UT_K2_1FNAME UT_K2_VOPT UT_K2_EXCHAR UT_V2_DESCR UT_V2_PROGNAME UT_V2_USAGE UT_V2_SLINE UT_V2_SEQUAL UT_V2_SVARNAME UT_V2_SNAME UT_V2_VOPT UT_V2_1REQ UT_CB_DESCR UT_CB_PROGNAME UT_CB_USAGE UT_CB_VOPT UT_CB_MIEXT UT_CB_AEXT UT_CB_UNKNOWN UT_CB_ISCHEME UT_CB_BKFGS UT_CB_ABGS UT_CB_REC UT_CB_GUI UT_CB_CONT UT_CB_CONTFG UT_CB_AFILE UT_CB_LEFT_QUOTE UT_CB_NO_EQUAL UT_CB_EXTRA_EQ UT_CB_BAD_LHS UT_CB_BAD_RHS UT_CB_BAD_QUOTED UT_CB_FILE UT_CB_FILE_LINE UT_CB_DUP_ALIAS UT_CB_LINE_LOOP UT_CB_BAD_STYLE UT_CB_DUP_STYLE UT_CB_NO_SECT UT_CB_DUP_SCHEME DM_ERROR DM_NODATABASE DM_NOTLOGGEDON DM_ALREADY_ON DM_ARGS_NEEDED DM_LOGON_DENIED DM_BAD_ARGS DM_BAD_CMD DM_NO_MORE_ROWS DM_ABORTED DM_NO_CURSOR DM_MANY_CURSORS DM_KEYWORD
+
+syn keyword jamVariable6 DM_INVALID_DATE DM_COMMIT DM_ROLLBACK DM_PARSE_ERROR DM_BIND_COUNT DM_BIND_VAR DM_DESC_COL DM_FETCH DM_NO_NAME DM_END_OF_PROC DM_NOCONNECTION DM_NOTSUPPORTED DM_TRAN_PEND DM_NO_TRANSACTION DM_ALREADY_INIT DM_INIT_ERROR DM_MAX_DEPTH DM_NO_PARENT DM_NO_CHILD DM_MODALITY_NOT_FOUND DM_NATIVE_NO_SUPPORT DM_NATIVE_CANCEL DM_TM_ALREADY DM_TM_IN_PROGRESS DM_TM_CLOSE_ERROR DM_TM_BAD_MODE DM_TM_BAD_CLOSE_ACTION DM_TM_INTERNAL DM_TM_MODEL_INTERNAL DM_TM_NO_ROOT DM_TM_NO_TRANSACTION DM_TM_INITIAL_MODE DM_TM_PARENT_NAME DM_TM_BAD_MEMBER DM_TM_FLD_NAM_LEN DM_TM_NO_PARENT DM_TM_BAD_REQUEST DM_TM_CANNOT_GEN_SQL DM_TM_CANNOT_EXEC_SQL DM_TM_DBI_ERROR DM_TM_DISCARD_ALL DM_TM_DISCARD_LATEST DM_TM_CALL_ERROR DM_TM_CALL_TYPE DM_TM_HOOK_MODEL DM_TM_ROOT_NAME DM_TM_TV_INVALID DM_TM_COL_NOT_FOUND DM_TM_BAD_LINK DM_TM_HOOK_MODEL_ERROR DM_TM_ONE_ROW DM_TM_SOME_ROWS DM_TM_GENERAL DM_TM_NO_HOOK DM_TM_NOSET DM_TM_TBLNAME DM_TM_PRIMARY_KEY DM_TM_INCOMPLETE_KEY DM_TM_CMD_MODE DM_TM_NO_SUCH_CMD DM_TM_NO_SUCH_SCOPE
+
+syn keyword jamVariable7 DM_TM_NO_SUCH_TV DM_TM_EVENT_LOOP DM_TM_UNSUPPORTED DM_TM_NO_MODEL DM_TM_SYNCH_SV DM_TM_WRONG_FORM DM_TM_VC_FIELD DM_TM_VC_DATE DM_TM_VC_TYPE DM_TM_BAD_CONTINUE DM_JDB_OUT_OF_MEMORY DM_JDB_DUPTABLEALIAS DM_JDB_DUPCURSORNAME DM_JDB_NODB DM_JDB_BINDCOUNT DM_JDB_NO_MORE_ROWS DM_JDB_AMBIGUOUS_COLUMN_REF DM_JDB_UNRESOLVED_COLUMN_REF DM_JDB_TABLE_READ_WRITE_CONFLICT DM_JDB_SYNTAX_ERROR DM_JDB_DUP_COLUMN_ASSIGNMENT DM_JDB_NO_MSG_FILE DM_JDB_NO_MSG DM_JDB_NOT_IMPLEMENTED DM_JDB_AGGREGATE_NOT_ALLOWED DM_JDB_TYPE_MISMATCH DM_JDB_NO_CURRENT_ROW DM_JDB_DB_CORRUPT DM_JDB_BUF_OVERFLOW DM_JDB_FILE_IO_ERR DM_JDB_BAD_HANDLE DM_JDB_DUP_TNAME DM_JDB_INVALID_TABLE_OP DM_JDB_TABLE_NOT_FOUND DM_JDB_CONVERSION_FAILED DM_JDB_INVALID_COLUMN_LIST DM_JDB_TABLE_OPEN DM_JDB_BAD_INPUT DM_JDB_DATATYPE_OVERFLOW DM_JDB_DATABASE_EXISTS DM_JDB_DATABASE_OPEN DM_JDB_DUP_CNAME DM_JDB_TMPDATABASE_ERR DM_JDB_INVALID_VALUES_COUNT DM_JDB_INVALID_COLUMN_COUNT DM_JDB_MAX_RECLEN_EXCEEDED DM_JDB_END_OF_GROUP
+
+syn keyword jamVariable8 TP_EXC_INVALID_CLIENT_COMMAND TP_EXC_INVALID_CLIENT_OPTION TP_EXC_INVALID_COMMAND TP_EXC_INVALID_COMMAND_SYNTAX TP_EXC_INVALID_CONNECTION TP_EXC_INVALID_CONTEXT TP_EXC_INVALID_FORWARD TP_EXC_INVALID_JAM_VARIABLE_REF TP_EXC_INVALID_MONITOR_COMMAND TP_EXC_INVALID_MONITOR_OPTION TP_EXC_INVALID_OPTION TP_EXC_INVALID_OPTION_VALUE TP_EXC_INVALID_SERVER_COMMAND TP_EXC_INVALID_SERVER_OPTION TP_EXC_INVALID_SERVICE TP_EXC_INVALID_TRANSACTION TP_EXC_JIF_ACCESS_FAILED TP_EXC_JIF_LOWER_VERSION TP_EXC_LOGFILE_ERROR TP_EXC_MONITOR_ERROR TP_EXC_NO_OUTSIDE_TRANSACTION TP_EXC_NO_OUTSTANDING_CALLS TP_EXC_NO_OUTSTANDING_MESSAGE TP_EXC_NO_SERVICES_ADVERTISED TP_EXC_NO_SIGNALS TP_EXC_NONTRANSACTIONAL_SERVICE TP_EXC_NONTRANSACTIONAL_ACTION TP_EXC_OUT_OF_MEMORY TP_EXC_POSTING_FAILED TP_EXC_PERMISSION_DENIED TP_EXC_REQUEST_LIMIT TP_EXC_ROLLBACK_COMMITTED TP_EXC_ROLLBACK_FAILED TP_EXC_SERVICE_FAILED TP_EXC_SERVICE_NOT_IN_JIF TP_EXC_SERVICE_PROTOCOL_ERROR TP_EXC_SUBSCRIPTION_LIMIT
+
+syn keyword jamVariable9 TP_EXC_SUBSCRIPTION_MATCH TP_EXC_SVC_ADVERTISE_LIMIT TP_EXC_SVC_WORK_OUTSTANDING TP_EXC_SVCROUTINE_MISSING TP_EXC_SVRINIT_WORK_OUTSTANDING TP_EXC_TIMEOUT TP_EXC_TRANSACTION_LIMIT TP_EXC_UNLOAD_FAILED TP_EXC_UNSUPPORTED_BUFFER TP_EXC_UNSUPPORTED_BUF_W_SUBT TP_EXC_USER_ABORT TP_EXC_WORK_OUTSTANDING TP_EXC_XA_CLOSE_FAILED TP_EXC_XA_OPEN_FAILED TP_EXC_QUEUE_BAD_MSGID TP_EXC_QUEUE_BAD_NAMESPACE TP_EXC_QUEUE_BAD_QUEUE TP_EXC_QUEUE_CANT_START_TRAN TP_EXC_QUEUE_FULL TP_EXC_QUEUE_MSG_IN_USE TP_EXC_QUEUE_NO_MSG TP_EXC_QUEUE_NOT_IN_QSPACE TP_EXC_QUEUE_RSRC_NOT_OPEN TP_EXC_QUEUE_SPACE_NOT_IN_JIF TP_EXC_QUEUE_TRAN_ABORTED TP_EXC_QUEUE_TRAN_ABSENT TP_EXC_QUEUE_UNEXPECTED TP_EXC_DCE_LOGIN_REQUIRED TP_EXC_ENC_CELL_NAME_REQUIRED TP_EXC_ENC_CONN_INFO_DIFFS TP_EXC_ENC_SVC_REGISTRY_ERROR TP_INVALID_START_ROUTINE TP_JIF_NOT_FOUND TP_JIF_OPEN_ERROR TP_NO_JIF TP_NO_MONITORS_ERROR TP_NO_SESSIONS_ERROR TP_NO_START_ROUTINE TP_ADV_SERVICE TP_ADV_SERVICE_IN_GROUP TP_PRE_SVCHDL_WINOPEN_FAILED
+
+syn keyword jamVariable10 PV_YES PV_NO TRUE FALSE TM_TRAN_NAME
+
+" jamCommentGroup allows adding matches for special things in comments
+syn cluster jamCommentGroup contains=jamTodo
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match jamSpecial contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
+if !exists("c_no_utf")
+ syn match jamSpecial contained "\\\(u\x\{4}\|U\x\{8}\)"
+endif
+if exists("c_no_cformat")
+ syn region jamString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial
+else
+ syn match jamFormat "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
+ syn match jamFormat "%%" contained
+ syn region jamString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat
+ hi link jamFormat jamSpecial
+endif
+syn match jamCharacter "L\='[^\\]'"
+syn match jamCharacter "L'[^']*'" contains=jamSpecial
+syn match jamSpecialError "L\='\\[^'\"?\\abfnrtv]'"
+syn match jamSpecialCharacter "L\='\\['\"?\\abfnrtv]'"
+syn match jamSpecialCharacter "L\='\\\o\{1,3}'"
+syn match jamSpecialCharacter "'\\x\x\{1,2}'"
+syn match jamSpecialCharacter "L'\\x\x\+'"
+
+"catch errors caused by wrong parenthesis and brackets
+syn cluster jamParenGroup contains=jamParenError,jamIncluded,jamSpecial,@jamCommentGroup,jamUserCont,jamUserLabel,jamBitField,jamCommentSkip,jamOctalZero,jamCppOut,jamCppOut2,jamCppSkip,jamFormat,jamNumber,jamFloat,jamOctal,jamOctalError,jamNumbersCom
+
+syn region jamParen transparent start='(' end=')' contains=ALLBUT,@jamParenGroup,jamErrInBracket
+syn match jamParenError "[\])]"
+syn match jamErrInParen contained "[\]{}]"
+syn region jamBracket transparent start='\[' end=']' contains=ALLBUT,@jamParenGroup,jamErrInParen
+syn match jamErrInBracket contained "[);{}]"
+
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match jamNumbers transparent "\<\d\|\,\d" contains=jamNumber,jamFloat,jamOctalError,jamOctal
+" Same, but without octal error (for comments)
+syn match jamNumbersCom contained transparent "\<\d\|\,\d" contains=jamNumber,jamFloat,jamOctal
+syn match jamNumber contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
+"hex number
+syn match jamNumber contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+" Flag the first zero of an octal number as something special
+syn match jamOctal contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero
+syn match jamOctalZero contained "\<0"
+syn match jamFloat contained "\d\+f"
+"floating point number, with dot, optional exponent
+syn match jamFloat contained "\d\+\,\d*\(e[-+]\=\d\+\)\=[fl]\="
+"floating point number, starting with a dot, optional exponent
+syn match jamFloat contained "\,\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match jamFloat contained "\d\+e[-+]\=\d\+[fl]\=\>"
+" flag an octal number with wrong digits
+syn match jamOctalError contained "0\o*[89]\d*"
+syn case match
+
+syntax match jamOperator1 "\#\#"
+syntax match jamOperator6 "/"
+syntax match jamOperator2 "+"
+syntax match jamOperator3 "*"
+syntax match jamOperator4 "-"
+syntax match jamOperator5 "|"
+syntax match jamOperator6 "/"
+syntax match jamOperator7 "&"
+syntax match jamOperator8 ":"
+syntax match jamOperator9 "<"
+syntax match jamOperator10 ">"
+syntax match jamOperator11 "!"
+syntax match jamOperator12 "%"
+syntax match jamOperator13 "^"
+syntax match jamOperator14 "@"
+
+syntax match jamCommentL "//"
+
+if exists("jam_comment_strings")
+ " A comment can contain jamString, jamCharacter and jamNumber.
+ " But a "*/" inside a jamString in a jamComment DOES end the comment! So we
+ " need to use a special type of jamString: jamCommentString, which also ends on
+ " "*/", and sees a "*" at the start of the line as comment again.
+ " Unfortunately this doesn't very well work for // type of comments :-(
+ syntax match jamCommentSkip contained "^\s*\*\($\|\s\+\)"
+ syntax region jamCommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=jamSpecial,jamCommentSkip
+ syntax region jamComment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=jamSpecial
+ syntax region jamCommentL start="//" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamComment2String,jamCharacter,jamNumbersCom,jamSpaceError
+ syntax region jamCommentL2 start="^#\|^\s\+\#" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamComment2String,jamCharacter,jamNumbersCom,jamSpaceError
+ syntax region jamComment start="/\*" end="\*/" contains=@jamCommentGroup,jamCommentString,jamCharacter,jamNumbersCom,jamSpaceError
+else
+ syn region jamCommentL start="//" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamSpaceError
+ syn region jamCommentL2 start="^\#\|^\s\+\#" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamSpaceError
+ syn region jamComment start="/\*" end="\*/" contains=@jamCommentGroup,jamSpaceError
+endif
+
+" keep a // comment separately, it terminates a preproc. conditional
+syntax match jamCommentError "\*/"
+
+syntax match jamOperator3Error "*/"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link jamCommentL jamComment
+hi def link jamCommentL2 jamComment
+hi def link jamOperator3Error jamError
+hi def link jamConditional Conditional
+hi def link jamRepeat Repeat
+hi def link jamCharacter Character
+hi def link jamSpecialCharacter jamSpecial
+hi def link jamNumber Number
+hi def link jamParenError jamError
+hi def link jamErrInParen jamError
+hi def link jamErrInBracket jamError
+hi def link jamCommentError jamError
+hi def link jamSpaceError jamError
+hi def link jamSpecialError jamError
+hi def link jamOperator1 jamOperator
+hi def link jamOperator2 jamOperator
+hi def link jamOperator3 jamOperator
+hi def link jamOperator4 jamOperator
+hi def link jamOperator5 jamOperator
+hi def link jamOperator6 jamOperator
+hi def link jamOperator7 jamOperator
+hi def link jamOperator8 jamOperator
+hi def link jamOperator9 jamOperator
+hi def link jamOperator10 jamOperator
+hi def link jamOperator11 jamOperator
+hi def link jamOperator12 jamOperator
+hi def link jamOperator13 jamOperator
+hi def link jamOperator14 jamOperator
+hi def link jamError Error
+hi def link jamStatement Statement
+hi def link jamPreCondit PreCondit
+hi def link jamCommentError jamError
+hi def link jamCommentString jamString
+hi def link jamComment2String jamString
+hi def link jamCommentSkip jamComment
+hi def link jamString String
+hi def link jamComment Comment
+hi def link jamSpecial SpecialChar
+hi def link jamTodo Todo
+hi def link jamCppSkip jamCppOut
+hi def link jamCppOut2 jamCppOut
+hi def link jamCppOut Comment
+hi def link jamDBState1 Identifier
+hi def link jamDBState2 Identifier
+hi def link jamSQLState1 jamSQL
+hi def link jamSQLState2 jamSQL
+hi def link jamLibFunc1 jamLibFunc
+hi def link jamLibFunc2 jamLibFunc
+hi def link jamLibFunc3 jamLibFunc
+hi def link jamLibFunc4 jamLibFunc
+hi def link jamLibFunc5 jamLibFunc
+hi def link jamLibFunc6 jamLibFunc
+hi def link jamLibFunc7 jamLibFunc
+hi def link jamLibFunc8 jamLibFunc
+hi def link jamLibFunc9 jamLibFunc
+hi def link jamVariable1 jamVariablen
+hi def link jamVariable2 jamVariablen
+hi def link jamVariable3 jamVariablen
+hi def link jamVariable4 jamVariablen
+hi def link jamVariable5 jamVariablen
+hi def link jamVariable6 jamVariablen
+hi def link jamVariable7 jamVariablen
+hi def link jamVariable8 jamVariablen
+hi def link jamVariable9 jamVariablen
+hi def link jamVariable10 jamVariablen
+hi def link jamVariablen Constant
+hi def link jamSQL Type
+hi def link jamLibFunc PreProc
+hi def link jamOperator Special
+
+
+let b:current_syntax = "jam"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/jargon.vim b/runtime/syntax/jargon.vim
new file mode 100644
index 0000000..c4b017d
--- /dev/null
+++ b/runtime/syntax/jargon.vim
@@ -0,0 +1,24 @@
+" Vim syntax file
+" Language: Jargon File
+" Maintainer: Dan Church (https://github.com/h3xx)
+" Last Change: 2020 Mar 16
+"
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn region jargonHeader start="^:" end="$" contains=jargonChaptTitle
+syn match jargonChaptTitle /:[^:]*:/ contained
+syn match jargonEmailAddr /[+._A-Za-z0-9-]\+@[+._A-Za-z0-9-]\+/
+syn match jargonUrl +\(https\?\|ftp\)://[^\t )"]*+
+syn region jargonMark start="{[^\t {}]" end="}"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link jargonChaptTitle Title
+hi def link jargonEmailAddr Comment
+hi def link jargonUrl Comment
+hi def link jargonMark Label
+
+let b:current_syntax = "jargon"
diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim
new file mode 100644
index 0000000..00d6071
--- /dev/null
+++ b/runtime/syntax/java.vim
@@ -0,0 +1,380 @@
+" Vim syntax file
+" Language: Java
+" Maintainer: Claudio Fleiner <claudio@fleiner.com>
+" URL: https://github.com/fleiner/vim/blob/master/runtime/syntax/java.vim
+" Last Change: 2022 Jun 08
+
+" Please check :help java.vim for comments on some of the options available.
+
+" quit when a syntax file was already loaded
+if !exists("main_syntax")
+ if exists("b:current_syntax")
+ finish
+ endif
+ " we define it here so that included files can test for it
+ let main_syntax='java'
+ syn region javaFold start="{" end="}" transparent fold
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" some characters that cannot be in a java program (outside a string)
+syn match javaError "[\\@`]"
+syn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|\*\/"
+
+" use separate name so that it can be deleted in javacc.vim
+syn match javaError2 "#\|=<"
+hi def link javaError2 javaError
+
+" keyword definitions
+syn keyword javaExternal native package
+syn match javaExternal "\<import\>\(\s\+static\>\)\?"
+syn keyword javaError goto const
+syn keyword javaConditional if else switch
+syn keyword javaRepeat while for do
+syn keyword javaBoolean true false
+syn keyword javaConstant null
+syn keyword javaTypedef this super
+syn keyword javaOperator var new instanceof
+syn keyword javaType boolean char byte short int long float double
+syn keyword javaType void
+syn keyword javaStatement return
+syn keyword javaStorageClass static synchronized transient volatile final strictfp serializable
+syn keyword javaExceptions throw try catch finally
+syn keyword javaAssert assert
+syn keyword javaMethodDecl synchronized throws
+syn keyword javaClassDecl extends implements interface
+" to differentiate the keyword class from MyClass.class we use a match here
+syn match javaTypedef "\.\s*\<class\>"ms=s+1
+syn keyword javaClassDecl enum
+syn match javaClassDecl "^class\>"
+syn match javaClassDecl "[^.]\s*\<class\>"ms=s+1
+syn match javaAnnotation "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>" contains=javaString
+syn match javaClassDecl "@interface\>"
+syn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite
+syn match javaUserLabelRef "\k\+" contained
+syn match javaVarArg "\.\.\."
+syn keyword javaScopeDecl public protected private abstract
+
+function s:isModuleInfoDeclarationCurrentBuffer() abort
+ return fnamemodify(bufname("%"), ":t") =~ '^module-info\%(\.class\>\)\@!'
+endfunction
+
+" Java Modules(Since Java 9, for "module-info.java" file)
+if s:isModuleInfoDeclarationCurrentBuffer()
+ syn keyword javaModuleStorageClass module transitive
+ syn keyword javaModuleStmt open requires exports opens uses provides
+ syn keyword javaModuleExternal to with
+ syn cluster javaTop add=javaModuleStorageClass,javaModuleStmt,javaModuleExternal
+endif
+
+if exists("java_highlight_java_lang_ids")
+ let java_highlight_all=1
+endif
+if exists("java_highlight_all") || exists("java_highlight_java") || exists("java_highlight_java_lang")
+ " java.lang.*
+ "
+ " The keywords of javaR_JavaLang, javaC_JavaLang, javaE_JavaLang,
+ " and javaX_JavaLang are sub-grouped according to the Java version
+ " of their introduction, and sub-group keywords (that is, class
+ " names) are arranged in alphabetical order, so that future newer
+ " keywords can be pre-sorted and appended without disturbing
+ " the current keyword placement. The below _match_es follow suit.
+
+ syn keyword javaR_JavaLang ArithmeticException ArrayIndexOutOfBoundsException ArrayStoreException ClassCastException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException IndexOutOfBoundsException NegativeArraySizeException NullPointerException NumberFormatException RuntimeException SecurityException StringIndexOutOfBoundsException IllegalStateException UnsupportedOperationException EnumConstantNotPresentException TypeNotPresentException IllegalCallerException LayerInstantiationException
+ syn cluster javaTop add=javaR_JavaLang
+ syn cluster javaClasses add=javaR_JavaLang
+ hi def link javaR_JavaLang javaR_Java
+ " Member enumerations:
+ syn match javaC_JavaLang "\%(\<Thread\.\)\@<=\<State\>"
+ syn match javaC_JavaLang "\%(\<Character\.\)\@<=\<UnicodeScript\>"
+ syn match javaC_JavaLang "\%(\<ProcessBuilder\.Redirect\.\)\@<=\<Type\>"
+ syn match javaC_JavaLang "\%(\<StackWalker\.\)\@<=\<Option\>"
+ syn match javaC_JavaLang "\%(\<System\.Logger\.\)\@<=\<Level\>"
+ " Member classes:
+ syn match javaC_JavaLang "\%(\<Character\.\)\@<=\<Subset\>"
+ syn match javaC_JavaLang "\%(\<Character\.\)\@<=\<UnicodeBlock\>"
+ syn match javaC_JavaLang "\%(\<ProcessBuilder\.\)\@<=\<Redirect\>"
+ syn match javaC_JavaLang "\%(\<ModuleLayer\.\)\@<=\<Controller\>"
+ syn match javaC_JavaLang "\%(\<Runtime\.\)\@<=\<Version\>"
+ syn match javaC_JavaLang "\%(\<System\.\)\@<=\<LoggerFinder\>"
+ syn match javaC_JavaLang "\%(\<Enum\.\)\@<=\<EnumDesc\>"
+ syn keyword javaC_JavaLang Boolean Character Class ClassLoader Compiler Double Float Integer Long Math Number Object Process Runtime SecurityManager String StringBuffer Thread ThreadGroup Byte Short Void InheritableThreadLocal Package RuntimePermission ThreadLocal StrictMath StackTraceElement Enum ProcessBuilder StringBuilder ClassValue Module ModuleLayer StackWalker Record
+ syn match javaC_JavaLang "\<System\>" " See javaDebug.
+ syn cluster javaTop add=javaC_JavaLang
+ syn cluster javaClasses add=javaC_JavaLang
+ hi def link javaC_JavaLang javaC_Java
+ syn keyword javaE_JavaLang AbstractMethodError ClassCircularityError ClassFormatError Error IllegalAccessError IncompatibleClassChangeError InstantiationError InternalError LinkageError NoClassDefFoundError NoSuchFieldError NoSuchMethodError OutOfMemoryError StackOverflowError ThreadDeath UnknownError UnsatisfiedLinkError VerifyError VirtualMachineError ExceptionInInitializerError UnsupportedClassVersionError AssertionError BootstrapMethodError
+ syn cluster javaTop add=javaE_JavaLang
+ syn cluster javaClasses add=javaE_JavaLang
+ hi def link javaE_JavaLang javaE_Java
+ syn keyword javaX_JavaLang ClassNotFoundException CloneNotSupportedException Exception IllegalAccessException InstantiationException InterruptedException NoSuchMethodException Throwable NoSuchFieldException ReflectiveOperationException
+ syn cluster javaTop add=javaX_JavaLang
+ syn cluster javaClasses add=javaX_JavaLang
+ hi def link javaX_JavaLang javaX_Java
+
+ hi def link javaR_Java javaR_
+ hi def link javaC_Java javaC_
+ hi def link javaE_Java javaE_
+ hi def link javaX_Java javaX_
+ hi def link javaX_ javaExceptions
+ hi def link javaR_ javaExceptions
+ hi def link javaE_ javaExceptions
+ hi def link javaC_ javaConstant
+
+ syn keyword javaLangObject clone equals finalize getClass hashCode
+ syn keyword javaLangObject notify notifyAll toString wait
+ hi def link javaLangObject javaConstant
+ syn cluster javaTop add=javaLangObject
+endif
+
+if filereadable(expand("<sfile>:p:h")."/javaid.vim")
+ source <sfile>:p:h/javaid.vim
+endif
+
+if exists("java_space_errors")
+ if !exists("java_no_trail_space_error")
+ syn match javaSpaceError "\s\+$"
+ endif
+ if !exists("java_no_tab_space_error")
+ syn match javaSpaceError " \+\t"me=e-1
+ endif
+endif
+
+syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" end="->" matchgroup=NONE end=":" contains=javaNumber,javaCharacter,javaString
+syn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
+syn keyword javaLabel default
+
+" highlighting C++ keywords as errors removed, too many people find it
+" annoying. Was: if !exists("java_allow_cpp_keywords")
+
+" The following cluster contains all java groups except the contained ones
+syn cluster javaTop add=javaExternal,javaError,javaBranch,javaLabelRegion,javaLabel,javaConditional,javaRepeat,javaBoolean,javaConstant,javaTypedef,javaOperator,javaType,javaStatement,javaStorageClass,javaAssert,javaExceptions,javaMethodDecl,javaClassDecl,javaScopeDecl,javaError2,javaUserLabel,javaLangObject,javaAnnotation,javaVarArg
+
+
+" Comments
+syn keyword javaTodo contained TODO FIXME XXX
+if exists("java_comment_strings")
+ syn region javaCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell
+ syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell
+ syn match javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar
+ syn match javaCommentCharacter contained "'\\''" contains=javaSpecialChar
+ syn match javaCommentCharacter contained "'[^\\]'"
+ syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber
+ syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber
+endif
+syn region javaComment start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell
+syn match javaCommentStar contained "^\s*\*[^/]"me=e-1
+syn match javaCommentStar contained "^\s*\*$"
+syn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell
+hi def link javaCommentString javaString
+hi def link javaComment2String javaString
+hi def link javaCommentCharacter javaCharacter
+
+syn cluster javaTop add=javaComment,javaLineComment
+
+if !exists("java_ignore_javadoc") && main_syntax != 'jsp'
+ syntax case ignore
+ " syntax coloring for javadoc comments (HTML)
+ syntax include @javaHtml syntax/html.vim
+ unlet b:current_syntax
+ " HTML enables spell checking for all text that is not in a syntax item. This
+ " is wrong for Java (all identifiers would be spell-checked), so it's undone
+ " here.
+ syntax spell default
+
+ syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell
+ syn region javaCommentTitle contained matchgroup=javaDocComment start="/\*\*" matchgroup=javaCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@javaHtml,javaCommentStar,javaTodo,@Spell,javaDocTags,javaDocSeeTag
+
+ syn region javaDocTags contained start="{@\(code\|link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
+ syn match javaDocTags contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam
+ syn match javaDocParam contained "\s\S\+"
+ syn match javaDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
+ syn region javaDocSeeTag contained matchgroup=javaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam
+ syn match javaDocSeeTagParam contained @"\_[^"]\+"\|<a\s\+\_.\{-}</a>\|\(\k\|\.\)*\(#\k\+\((\_[^)]\+)\)\=\)\=@ extend
+ syntax case match
+endif
+
+" match the special comment /**/
+syn match javaComment "/\*\*/"
+
+" Strings and constants
+syn match javaSpecialError contained "\\."
+syn match javaSpecialCharError contained "[^']"
+syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
+syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
+" next line disabled, it can cause a crash for a long line
+"syn match javaStringError +"\([^"\\]\|\\.\)*$+
+syn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
+syn match javaCharacter "'\\''" contains=javaSpecialChar
+syn match javaCharacter "'[^\\]'"
+syn match javaNumber "\<\(0[bB][0-1]\+\|0[0-7]*\|0[xX]\x\+\|\d\(\d\|_\d\)*\)[lL]\=\>"
+syn match javaNumber "\(\<\d\(\d\|_\d\)*\.\(\d\(\d\|_\d\)*\)\=\|\.\d\(\d\|_\d\)*\)\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\="
+syn match javaNumber "\<\d\(\d\|_\d\)*[eE][-+]\=\d\(\d\|_\d\)*[fFdD]\=\>"
+syn match javaNumber "\<\d\(\d\|_\d\)*\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\>"
+
+" unicode characters
+syn match javaSpecial "\\u\d\{4\}"
+
+syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
+
+if exists("java_highlight_functions")
+ if java_highlight_functions == "indent"
+ syn match javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]<>]*([^-+*/]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation
+ syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation
+ syn match javaFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation
+ syn region javaFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation
+ else
+ " This line catches method declarations at any indentation>0, but it assumes
+ " two things:
+ " 1. class names are always capitalized (ie: Button)
+ " 2. method names are never capitalized (except constructors, of course)
+ "syn region javaFuncDef start=+^\s\+\(\(public\|protected\|private\|static\|abstract\|final\|native\|synchronized\)\s\+\)*\(\(void\|boolean\|char\|byte\|short\|int\|long\|float\|double\|\([A-Za-z_][A-Za-z0-9_$]*\.\)*[A-Z][A-Za-z0-9_$]*\)\(<[^>]*>\)\=\(\[\]\)*\s\+[a-z][A-Za-z0-9_$]*\|[A-Z][A-Za-z0-9_$]*\)\s*([^0-9]+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,javaComment,javaLineComment,@javaClasses
+ syn region javaFuncDef start=+^\s\+\(\(public\|protected\|private\|static\|abstract\|final\|native\|synchronized\)\s\+\)*\(<.*>\s\+\)\?\(\(void\|boolean\|char\|byte\|short\|int\|long\|float\|double\|\([A-Za-z_][A-Za-z0-9_$]*\.\)*[A-Z][A-Za-z0-9_$]*\)\(<[^(){}]*>\)\=\(\[\]\)*\s\+[a-z][A-Za-z0-9_$]*\|[A-Z][A-Za-z0-9_$]*\)\s*(+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,javaComment,javaLineComment,@javaClasses,javaAnnotation
+ endif
+ syn match javaLambdaDef "[a-zA-Z_][a-zA-Z0-9_]*\s*->"
+ syn match javaBraces "[{}]"
+ syn cluster javaTop add=javaFuncDef,javaBraces,javaLambdaDef
+endif
+
+if exists("java_highlight_debug")
+
+ " Strings and constants
+ syn match javaDebugSpecial contained "\\\d\d\d\|\\."
+ syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial
+ syn match javaDebugStringError +"\([^"\\]\|\\.\)*$+
+ syn match javaDebugCharacter contained "'[^\\]'"
+ syn match javaDebugSpecialCharacter contained "'\\.'"
+ syn match javaDebugSpecialCharacter contained "'\\''"
+ syn match javaDebugNumber contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
+ syn match javaDebugNumber contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
+ syn match javaDebugNumber contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
+ syn match javaDebugNumber contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
+ syn keyword javaDebugBoolean contained true false
+ syn keyword javaDebugType contained null this super
+ syn region javaDebugParen start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen
+
+ " to make this work you must define the highlighting for these groups
+ syn match javaDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
+ syn match javaDebug "\<p\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
+ syn match javaDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
+ syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
+
+ syn cluster javaTop add=javaDebug
+
+ hi def link javaDebug Debug
+ hi def link javaDebugString DebugString
+ hi def link javaDebugStringError javaError
+ hi def link javaDebugType DebugType
+ hi def link javaDebugBoolean DebugBoolean
+ hi def link javaDebugNumber Debug
+ hi def link javaDebugSpecial DebugSpecial
+ hi def link javaDebugSpecialCharacter DebugSpecial
+ hi def link javaDebugCharacter DebugString
+ hi def link javaDebugParen Debug
+
+ hi def link DebugString String
+ hi def link DebugSpecial Special
+ hi def link DebugBoolean Boolean
+ hi def link DebugType Type
+endif
+
+if exists("java_mark_braces_in_parens_as_errors")
+ syn match javaInParen contained "[{}]"
+ hi def link javaInParen javaError
+ syn cluster javaTop add=javaInParen
+endif
+
+" catch errors caused by wrong parenthesis
+syn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaParenT1
+syn region javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained
+syn region javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT contained
+syn match javaParenError ")"
+" catch errors caused by wrong square parenthesis
+syn region javaParenT transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1
+syn region javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained
+syn region javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT contained
+syn match javaParenError "\]"
+
+hi def link javaParenError javaError
+
+if exists("java_highlight_functions")
+ syn match javaLambdaDef "([a-zA-Z0-9_<>\[\], \t]*)\s*->"
+ " needs to be defined after the parenthesis error catcher to work
+endif
+
+if !exists("java_minlines")
+ let java_minlines = 10
+endif
+exec "syn sync ccomment javaComment minlines=" . java_minlines
+
+" The default highlighting.
+hi def link javaLambdaDef Function
+hi def link javaFuncDef Function
+hi def link javaVarArg Function
+hi def link javaBraces Function
+hi def link javaBranch Conditional
+hi def link javaUserLabelRef javaUserLabel
+hi def link javaLabel Label
+hi def link javaUserLabel Label
+hi def link javaConditional Conditional
+hi def link javaRepeat Repeat
+hi def link javaExceptions Exception
+hi def link javaAssert Statement
+hi def link javaStorageClass StorageClass
+hi def link javaMethodDecl javaStorageClass
+hi def link javaClassDecl javaStorageClass
+hi def link javaScopeDecl javaStorageClass
+
+hi def link javaBoolean Boolean
+hi def link javaSpecial Special
+hi def link javaSpecialError Error
+hi def link javaSpecialCharError Error
+hi def link javaString String
+hi def link javaCharacter Character
+hi def link javaSpecialChar SpecialChar
+hi def link javaNumber Number
+hi def link javaError Error
+hi def link javaStringError Error
+hi def link javaStatement Statement
+hi def link javaOperator Operator
+hi def link javaComment Comment
+hi def link javaDocComment Comment
+hi def link javaLineComment Comment
+hi def link javaConstant Constant
+hi def link javaTypedef Typedef
+hi def link javaTodo Todo
+hi def link javaAnnotation PreProc
+
+hi def link javaCommentTitle SpecialComment
+hi def link javaDocTags Special
+hi def link javaDocParam Function
+hi def link javaDocSeeTagParam Function
+hi def link javaCommentStar javaComment
+
+hi def link javaType Type
+hi def link javaExternal Include
+
+hi def link htmlComment Special
+hi def link htmlCommentPart Special
+hi def link javaSpaceError Error
+
+if s:isModuleInfoDeclarationCurrentBuffer()
+ hi def link javaModuleStorageClass StorageClass
+ hi def link javaModuleStmt Statement
+ hi def link javaModuleExternal Include
+endif
+
+let b:current_syntax = "java"
+
+if main_syntax == 'java'
+ unlet main_syntax
+endif
+
+delfunction! s:isModuleInfoDeclarationCurrentBuffer
+let b:spell_options="contained"
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8
diff --git a/runtime/syntax/javacc.vim b/runtime/syntax/javacc.vim
new file mode 100644
index 0000000..a80572d
--- /dev/null
+++ b/runtime/syntax/javacc.vim
@@ -0,0 +1,65 @@
+" Vim syntax file
+" Language: JavaCC, a Java Compiler Compiler written by JavaSoft
+" Maintainer: Claudio Fleiner <claudio@fleiner.com>
+" URL: http://www.fleiner.com/vim/syntax/javacc.vim
+" Last Change: 2012 Oct 05
+
+" Uses java.vim, and adds a few special things for JavaCC Parser files.
+" Those files usually have the extension *.jj
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" source the java.vim file
+runtime! syntax/java.vim
+unlet b:current_syntax
+
+"remove catching errors caused by wrong parenthesis (does not work in javacc
+"files) (first define them in case they have not been defined in java)
+syn match javaParen "--"
+syn match javaParenError "--"
+syn match javaInParen "--"
+syn match javaError2 "--"
+syn clear javaParen
+syn clear javaParenError
+syn clear javaInParen
+syn clear javaError2
+
+" remove function definitions (they look different) (first define in
+" in case it was not defined in java.vim)
+"syn match javaFuncDef "--"
+syn clear javaFuncDef
+syn match javaFuncDef "[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)[ \t]*:" contains=javaType
+
+syn keyword javaccPackages options DEBUG_PARSER DEBUG_LOOKAHEAD DEBUG_TOKEN_MANAGER
+syn keyword javaccPackages COMMON_TOKEN_ACTION IGNORE_CASE CHOICE_AMBIGUITY_CHECK
+syn keyword javaccPackages OTHER_AMBIGUITY_CHECK STATIC LOOKAHEAD ERROR_REPORTING
+syn keyword javaccPackages USER_TOKEN_MANAGER USER_CHAR_STREAM JAVA_UNICODE_ESCAPE
+syn keyword javaccPackages UNICODE_INPUT JDK_VERSION
+syn match javaccPackages "PARSER_END([^)]*)"
+syn match javaccPackages "PARSER_BEGIN([^)]*)"
+syn match javaccSpecToken "<EOF>"
+" the dot is necessary as otherwise it will be matched as a keyword.
+syn match javaccSpecToken ".LOOKAHEAD("ms=s+1,me=e-1
+syn match javaccToken "<[^> \t]*>"
+syn keyword javaccActionToken TOKEN SKIP MORE SPECIAL_TOKEN
+syn keyword javaccError DEBUG IGNORE_IN_BNF
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link javaccSpecToken Statement
+hi def link javaccActionToken Type
+hi def link javaccPackages javaScopeDecl
+hi def link javaccToken String
+hi def link javaccError Error
+
+let b:current_syntax = "javacc"
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8
diff --git a/runtime/syntax/javascript.vim b/runtime/syntax/javascript.vim
new file mode 100644
index 0000000..e513137
--- /dev/null
+++ b/runtime/syntax/javascript.vim
@@ -0,0 +1,142 @@
+" Vim syntax file
+" Language: JavaScript
+" Maintainer: Claudio Fleiner <claudio@fleiner.com>
+" Updaters: Scott Shattuck (ss) <ss@technicalpursuit.com>
+" URL: http://www.fleiner.com/vim/syntax/javascript.vim
+" Changes: (ss) added keywords, reserved words, and other identifiers
+" (ss) repaired several quoting and grouping glitches
+" (ss) fixed regex parsing issue with multiple qualifiers [gi]
+" (ss) additional factoring of keywords, globals, and members
+" Last Change: 2022 Jun 09
+" 2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke)
+" 2018 Apr 14: adjusted javaScriptRegexpString (LongJohnCoder)
+
+" tuning parameters:
+" unlet javaScript_fold
+
+if !exists("main_syntax")
+ " quit when a syntax file was already loaded
+ if exists("b:current_syntax")
+ finish
+ endif
+ let main_syntax = 'javascript'
+elseif exists("b:current_syntax") && b:current_syntax == "javascript"
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+
+syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained
+syn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo
+syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)"
+syn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo
+syn match javaScriptSpecial "\\\d\d\d\|\\."
+syn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc
+syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc
+syn region javaScriptStringT start=+`+ skip=+\\\\\|\\`+ end=+`+ contains=javaScriptSpecial,javaScriptEmbed,@htmlPreproc
+
+syn region javaScriptEmbed start=+${+ end=+}+ contains=@javaScriptEmbededExpr
+
+" number handling by Christopher Leonard chris.j.leonard@gmx.com
+syn match javaScriptSpecialCharacter "'\\.'"
+syn match javaScriptNumber "\<0[bB][0-1]\+\(_[0-1]\+\)*\>"
+syn match javaScriptNumber "\<0[oO][0-7]\+\(_[0-7]\+\)*\>"
+syn match javaScriptNumber "\<0\([0-7]\+\(_[0-7]\+\)*\)\?\>"
+syn match javaScriptNumber "\<0[xX][0-9a-fA-F]\+\(_[0-9a-fA-F]\+\)*\>"
+syn match javaScriptNumber "\<\d\+\(_\d\+\)*[eE][+-]\?\d\+\>"
+syn match javaScriptNumber "\<[1-9]\d*\(_\d\+\)*\(\.\(\d\+\(_\d\+\)*\([eE][+-]\?\d\+\)\?\)\?\)\?\>"
+syn match javaScriptNumber "\<\(\d\+\(_\d\+\)*\)\?\.\d\+\(_\d\+\)*\([eE][+-]\?\d\+\)\?\>"
+syn match javaScriptNumber "\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\([eE][+-]\?\d\+\)\?\)\?\>"
+syn region javaScriptRegexpString start=+[,(=+]\s*/[^/*]+ms=e-1,me=e-1 skip=+\\\\\|\\/+ end=+/[gimuys]\{0,2\}\s*$+ end=+/[gimuys]\{0,2\}\s*[+;.,)\]}]+me=e-1 end=+/[gimuys]\{0,2\}\s\+\/+me=e-1 contains=@htmlPreproc,javaScriptComment oneline
+
+syn keyword javaScriptConditional if else switch
+syn keyword javaScriptRepeat while for do in
+syn keyword javaScriptBranch break continue
+syn keyword javaScriptOperator new delete instanceof typeof
+syn keyword javaScriptType Array Boolean Date Function Number Object String RegExp
+syn keyword javaScriptStatement return with await
+syn keyword javaScriptBoolean true false
+syn keyword javaScriptNull null undefined
+syn keyword javaScriptIdentifier arguments this var let
+syn keyword javaScriptLabel case default
+syn keyword javaScriptException try catch finally throw
+syn keyword javaScriptMessage alert confirm prompt status
+syn keyword javaScriptGlobal self window top parent
+syn keyword javaScriptMember document event location
+syn keyword javaScriptDeprecated escape unescape
+syn keyword javaScriptReserved abstract boolean byte char class const debugger double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile async
+
+syn cluster javaScriptEmbededExpr contains=javaScriptBoolean,javaScriptNull,javaScriptIdentifier,javaScriptStringD,javaScriptStringS,javaScriptStringT
+
+if exists("javaScript_fold")
+ syn match javaScriptFunction "\<function\>"
+ syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend
+
+ syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>"
+ syn sync match javaScriptSync grouphere NONE "^}"
+
+ setlocal foldmethod=syntax
+ setlocal foldtext=getline(v:foldstart)
+else
+ syn keyword javaScriptFunction function
+ syn match javaScriptBraces "[{}\[\]]"
+ syn match javaScriptParens "[()]"
+endif
+
+if main_syntax == "javascript"
+ syn sync fromstart
+ syn sync maxlines=100
+
+ syn sync ccomment javaScriptComment
+endif
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link javaScriptComment Comment
+hi def link javaScriptLineComment Comment
+hi def link javaScriptCommentTodo Todo
+hi def link javaScriptSpecial Special
+hi def link javaScriptStringS String
+hi def link javaScriptStringD String
+hi def link javaScriptStringT String
+hi def link javaScriptCharacter Character
+hi def link javaScriptSpecialCharacter javaScriptSpecial
+hi def link javaScriptNumber javaScriptValue
+hi def link javaScriptConditional Conditional
+hi def link javaScriptRepeat Repeat
+hi def link javaScriptBranch Conditional
+hi def link javaScriptOperator Operator
+hi def link javaScriptType Type
+hi def link javaScriptStatement Statement
+hi def link javaScriptFunction Function
+hi def link javaScriptBraces Function
+hi def link javaScriptError Error
+hi def link javaScrParenError javaScriptError
+hi def link javaScriptNull Keyword
+hi def link javaScriptBoolean Boolean
+hi def link javaScriptRegexpString String
+
+hi def link javaScriptIdentifier Identifier
+hi def link javaScriptLabel Label
+hi def link javaScriptException Exception
+hi def link javaScriptMessage Keyword
+hi def link javaScriptGlobal Keyword
+hi def link javaScriptMember Keyword
+hi def link javaScriptDeprecated Exception
+hi def link javaScriptReserved Keyword
+hi def link javaScriptDebug Debug
+hi def link javaScriptConstant Label
+hi def link javaScriptEmbed Special
+
+
+
+let b:current_syntax = "javascript"
+if main_syntax == 'javascript'
+ unlet main_syntax
+endif
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8
diff --git a/runtime/syntax/javascriptreact.vim b/runtime/syntax/javascriptreact.vim
new file mode 100644
index 0000000..0067a0b
--- /dev/null
+++ b/runtime/syntax/javascriptreact.vim
@@ -0,0 +1,3 @@
+" Placeholder for backwards compatilibity: .jsx used to be associated with the
+" filetpye JavaScript.
+runtime! syntax/javascript.vim
diff --git a/runtime/syntax/jess.vim b/runtime/syntax/jess.vim
new file mode 100644
index 0000000..67d3715
--- /dev/null
+++ b/runtime/syntax/jess.vim
@@ -0,0 +1,144 @@
+" Vim syntax file
+" Language: Jess
+" Maintainer: Paul Baleme <pbaleme@mail.com>
+" Last change: September 14, 2000
+" Based on lisp.vim by : Dr. Charles E. Campbell, Jr.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=42,43,45,47-58,60-62,64-90,97-122,_
+
+" Lists
+syn match jessSymbol ![^()'`,"; \t]\+! contained
+syn match jessBarSymbol !|..\{-}|! contained
+syn region jessList matchgroup=Delimiter start="(" skip="|.\{-}|" matchgroup=Delimiter end=")" contains=jessAtom,jessBQList,jessConcat,jessDeclaration,jessList,jessNumber,jessSymbol,jessSpecial,jessFunc,jessKey,jessAtomMark,jessString,jessComment,jessBarSymbol,jessAtomBarSymbol,jessVar
+syn region jessBQList matchgroup=PreProc start="`(" skip="|.\{-}|" matchgroup=PreProc end=")" contains=jessAtom,jessBQList,jessConcat,jessDeclaration,jessList,jessNumber,jessSpecial,jessSymbol,jessFunc,jessKey,jessVar,jessAtomMark,jessString,jessComment,jessBarSymbol,jessAtomBarSymbol
+
+" Atoms
+syn match jessAtomMark "'"
+syn match jessAtom "'("me=e-1 contains=jessAtomMark nextgroup=jessAtomList
+syn match jessAtom "'[^ \t()]\+" contains=jessAtomMark
+syn match jessAtomBarSymbol !'|..\{-}|! contains=jessAtomMark
+syn region jessAtom start=+'"+ skip=+\\"+ end=+"+
+syn region jessAtomList matchgroup=Special start="(" skip="|.\{-}|" matchgroup=Special end=")" contained contains=jessAtomList,jessAtomNmbr0,jessString,jessComment,jessAtomBarSymbol
+syn match jessAtomNmbr "\<[0-9]\+" contained
+
+" Standard jess Functions and Macros
+syn keyword jessFunc * + ** - / < > <= >= <> =
+syn keyword jessFunc long longp
+syn keyword jessFunc abs agenda and
+syn keyword jessFunc assert assert-string bag
+syn keyword jessFunc batch bind bit-and
+syn keyword jessFunc bit-not bit-or bload
+syn keyword jessFunc bsave build call
+syn keyword jessFunc clear clear-storage close
+syn keyword jessFunc complement$ context count-query-results
+syn keyword jessFunc create$
+syn keyword jessFunc delete$ div
+syn keyword jessFunc do-backward-chaining e
+syn keyword jessFunc engine eq eq*
+syn keyword jessFunc eval evenp exit
+syn keyword jessFunc exp explode$ external-addressp
+syn keyword jessFunc fact-slot-value facts fetch
+syn keyword jessFunc first$ float floatp
+syn keyword jessFunc foreach format gensym*
+syn keyword jessFunc get get-fact-duplication
+syn keyword jessFunc get-member get-multithreaded-io
+syn keyword jessFunc get-reset-globals get-salience-evaluation
+syn keyword jessFunc halt if implode$
+syn keyword jessFunc import insert$ integer
+syn keyword jessFunc integerp intersection$ jess-version-number
+syn keyword jessFunc jess-version-string length$
+syn keyword jessFunc lexemep list-function$ load-facts
+syn keyword jessFunc load-function load-package log
+syn keyword jessFunc log10 lowcase matches
+syn keyword jessFunc max member$ min
+syn keyword jessFunc mod modify multifieldp
+syn keyword jessFunc neq new not
+syn keyword jessFunc nth$ numberp oddp
+syn keyword jessFunc open or pi
+syn keyword jessFunc ppdeffunction ppdefglobal ddpefrule
+syn keyword jessFunc printout random read
+syn keyword jessFunc readline replace$ reset
+syn keyword jessFunc rest$ retract retract-string
+syn keyword jessFunc return round rules
+syn keyword jessFunc run run-query run-until-halt
+syn keyword jessFunc save-facts set set-fact-duplication
+syn keyword jessFunc set-factory set-member set-multithreaded-io
+syn keyword jessFunc set-node-index-hash set-reset-globals
+syn keyword jessFunc set-salience-evaluation set-strategy
+syn keyword jessFunc setgen show-deffacts show-deftemplates
+syn keyword jessFunc show-jess-listeners socket
+syn keyword jessFunc sqrt store str-cat
+syn keyword jessFunc str-compare str-index str-length
+syn keyword jessFunc stringp sub-string subseq$
+syn keyword jessFunc subsetp sym-cat symbolp
+syn keyword jessFunc system throw time
+syn keyword jessFunc try undefadvice undefinstance
+syn keyword jessFunc undefrule union$ unwatch
+syn keyword jessFunc upcase view watch
+syn keyword jessFunc while
+syn match jessFunc "\<c[ad]\+r\>"
+
+" jess Keywords (modifiers)
+syn keyword jessKey defglobal deffunction defrule
+syn keyword jessKey deffacts
+syn keyword jessKey defadvice defclass definstance
+
+" Standard jess Variables
+syn region jessVar start="?" end="[^a-zA-Z0-9]"me=e-1
+
+" Strings
+syn region jessString start=+"+ skip=+\\"+ end=+"+
+
+" Shared with Declarations, Macros, Functions
+"syn keyword jessDeclaration
+
+syn match jessNumber "[0-9]\+"
+
+syn match jessSpecial "\*[a-zA-Z_][a-zA-Z_0-9-]*\*"
+syn match jessSpecial !#|[^()'`,"; \t]\+|#!
+syn match jessSpecial !#x[0-9a-fA-F]\+!
+syn match jessSpecial !#o[0-7]\+!
+syn match jessSpecial !#b[01]\+!
+syn match jessSpecial !#\\[ -\~]!
+syn match jessSpecial !#[':][^()'`,"; \t]\+!
+syn match jessSpecial !#([^()'`,"; \t]\+)!
+
+syn match jessConcat "\s\.\s"
+syntax match jessParenError ")"
+
+" Comments
+syn match jessComment ";.*$"
+
+" synchronization
+syn sync lines=100
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link jessAtomNmbr jessNumber
+hi def link jessAtomMark jessMark
+
+hi def link jessAtom Identifier
+hi def link jessAtomBarSymbol Special
+hi def link jessBarSymbol Special
+hi def link jessComment Comment
+hi def link jessConcat Statement
+hi def link jessDeclaration Statement
+hi def link jessFunc Statement
+hi def link jessKey Type
+hi def link jessMark Delimiter
+hi def link jessNumber Number
+hi def link jessParenError Error
+hi def link jessSpecial Type
+hi def link jessString String
+hi def link jessVar Identifier
+
+
+let b:current_syntax = "jess"
+
+" vim: ts=18
diff --git a/runtime/syntax/jgraph.vim b/runtime/syntax/jgraph.vim
new file mode 100644
index 0000000..a29a21a
--- /dev/null
+++ b/runtime/syntax/jgraph.vim
@@ -0,0 +1,45 @@
+" Vim syntax file
+" Language: jgraph (graph plotting utility)
+" Maintainer: Jonas Munsin jmunsin@iki.fi
+" Last Change: 2003 May 04
+" this syntax file is not yet complete
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+" comments
+syn region jgraphComment start="(\* " end=" \*)"
+
+syn keyword jgraphCmd newcurve newgraph marktype
+syn keyword jgraphType xaxis yaxis
+
+syn keyword jgraphType circle box diamond triangle x cross ellipse
+syn keyword jgraphType xbar ybar text postscript eps none general
+
+syn keyword jgraphType solid dotted dashed longdash dotdash dodotdash
+syn keyword jgraphType dotdotdashdash pts
+
+"integer number, or floating point number without a dot. - or no -
+syn match jgraphNumber "\<-\=\d\+\>"
+"floating point number, with dot - or no -
+syn match jgraphNumber "\<-\=\d\+\.\d*\>"
+"floating point number, starting with a dot - or no -
+syn match jgraphNumber "\-\=\.\d\+\>"
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link jgraphComment Comment
+hi def link jgraphCmd Identifier
+hi def link jgraphType Type
+hi def link jgraphNumber Number
+
+
+
+let b:current_syntax = "jgraph"
diff --git a/runtime/syntax/jovial.vim b/runtime/syntax/jovial.vim
new file mode 100644
index 0000000..7c63841
--- /dev/null
+++ b/runtime/syntax/jovial.vim
@@ -0,0 +1,110 @@
+" Vim syntax file
+" Language: JOVIAL J73
+" Version: 1.2
+" Maintainer: Paul McGinnis <paulmcg@aol.com>
+" Last Change: 2011/06/17
+" Remark: Based on MIL-STD-1589C for JOVIAL J73 language
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+syn keyword jovialTodo TODO FIXME XXX contained
+
+" JOVIAL beads - first digit is number of bits, [0-9A-V] is the bit value
+" representing 0-31 (for 5 bits on the bead)
+syn match jovialBitConstant "[1-5]B'[0-9A-V]'"
+
+syn match jovialNumber "\<\d\+\>"
+
+syn match jovialFloat "\d\+E[-+]\=\d\+"
+syn match jovialFloat "\d\+\.\d*\(E[-+]\=\d\+\)\="
+syn match jovialFloat "\.\d\+\(E[-+]\=\d\+\)\="
+
+syn region jovialComment start=/"/ end=/"/ contains=jovialTodo
+syn region jovialComment start=/%/ end=/%/ contains=jovialTodo
+
+" JOVIAL variable names. This rule is to prevent conflicts with strings.
+" Handle special case where ' character can be part of a JOVIAL variable name.
+syn match jovialIdentifier "[A-Z\$][A-Z0-9'\$]\+"
+
+syn region jovialString start="\s*'" skip=/''/ end=/'/ oneline
+
+" JOVIAL compiler directives -- see Section 9 in MIL-STD-1589C
+syn region jovialPreProc start="\s*![A-Z]\+" end=/;/
+
+syn keyword jovialOperator AND OR NOT XOR EQV MOD
+
+" See Section 2.1 in MIL-STD-1589C for data types
+syn keyword jovialType ITEM B C P V
+syn match jovialType "\<S\(,R\|,T\|,Z\)\=\>"
+syn match jovialType "\<U\(,R\|,T\|,Z\)\=\>"
+syn match jovialType "\<F\(,R\|,T\|,Z\)\=\>"
+syn match jovialType "\<A\(,R\|,T\|,Z\)\=\>"
+
+syn keyword jovialStorageClass STATIC CONSTANT PARALLEL BLOCK N M D W
+
+syn keyword jovialStructure TABLE STATUS
+
+syn keyword jovialConstant NULL
+
+syn keyword jovialBoolean FALSE TRUE
+
+syn keyword jovialTypedef TYPE
+
+syn keyword jovialStatement ABORT BEGIN BY BYREF BYRES BYVAL CASE COMPOOL
+syn keyword jovialStatement DEF DEFAULT DEFINE ELSE END EXIT FALLTHRU FOR
+syn keyword jovialStatement GOTO IF INLINE INSTANCE LABEL LIKE OVERLAY POS
+syn keyword jovialStatement PROC PROGRAM REC REF RENT REP RETURN START STOP
+syn keyword jovialStatement TERM THEN WHILE
+
+" JOVIAL extensions, see section 8.2.2 in MIL-STD-1589C
+syn keyword jovialStatement CONDITION ENCAPSULATION EXPORTS FREE HANDLER IN INTERRUPT NEW
+syn keyword jovialStatement PROTECTED READONLY REGISTER SIGNAL TO UPDATE WITH WRITEONLY ZONE
+
+" implementation specific constants and functions, see section 1.4 in MIL-STD-1589C
+syn keyword jovialConstant BITSINBYTE BITSINWORD LOCSINWORD
+syn keyword jovialConstant BYTESINWORD BITSINPOINTER INTPRECISION
+syn keyword jovialConstant FLOATPRECISION FIXEDPRECISION FLOATRADIX
+syn keyword jovialConstant MAXFLOATPRECISION MAXFIXEDPRECISION
+syn keyword jovialConstant MAXINTSIZE MAXBYTES MAXBITS
+syn keyword jovialConstant MAXTABLESIZE MAXSTOP MINSTOP MAXSIGDIGITS
+syn keyword jovialFunction BYTEPOS MAXINT MININT
+syn keyword jovialFunction IMPLFLOATPRECISION IMPLFIXEDPRECISION IMPLINTSIZE
+syn keyword jovialFunction MINSIZE MINFRACTION MINSCALE MINRELPRECISION
+syn keyword jovialFunction MAXFLOAT MINFLOAT FLOATRELPRECISION
+syn keyword jovialFunction FLOATUNDERFLOW MAXFIXED MINFIXED
+
+" JOVIAL built-in functions
+syn keyword jovialFunction LOC NEXT BIT BYTE SHIFTL SHIFTR ABS SGN BITSIZE
+syn keyword jovialFunction BYTESIZE WORDSIZE LBOUND UBOUND NWDSEN FIRST
+syn keyword jovialFunction LAST NENT
+
+" Define the default highlighting.
+hi def link jovialBitConstant Number
+hi def link jovialBoolean Boolean
+hi def link jovialComment Comment
+hi def link jovialConstant Constant
+hi def link jovialFloat Float
+hi def link jovialFunction Function
+" No color highlighting for JOVIAL identifiers. See above,
+" this is to prevent confusion with JOVIAL strings
+"hi def link jovialIdentifier Identifier
+hi def link jovialNumber Number
+hi def link jovialOperator Operator
+hi def link jovialPreProc PreProc
+hi def link jovialStatement Statement
+hi def link jovialStorageClass StorageClass
+hi def link jovialString String
+hi def link jovialStructure Structure
+hi def link jovialTodo Todo
+hi def link jovialType Type
+hi def link jovialTypedef Typedef
+
+
+let b:current_syntax = "jovial"
+
+" vim: ts=8
diff --git a/runtime/syntax/jproperties.vim b/runtime/syntax/jproperties.vim
new file mode 100644
index 0000000..628c030
--- /dev/null
+++ b/runtime/syntax/jproperties.vim
@@ -0,0 +1,135 @@
+" Vim syntax file
+" Language: Java Properties resource file (*.properties[_*])
+" Maintainer: Simon Baldwin <simonb@sco.com>
+" Last change: 26th Mar 2000
+
+" =============================================================================
+
+" Optional and tuning variables:
+
+" jproperties_lines
+" -----------------
+" Set a value for the sync block that we use to find long continuation lines
+" in properties; the value is already large - if you have larger continuation
+" sets you may need to increase it further - if not, and you find editing is
+" slow, reduce the value of jproperties_lines.
+if !exists("jproperties_lines")
+ let jproperties_lines = 256
+endif
+
+" jproperties_strict_syntax
+" -------------------------
+" Most properties files assign values with "id=value" or "id:value". But,
+" strictly, the Java properties parser also allows "id value", "id", and
+" even more bizarrely "=value", ":value", " value", and so on. These latter
+" ones, however, are rarely used, if ever, and handling them in the high-
+" lighting can obscure errors in the more normal forms. So, in practice
+" we take special efforts to pick out only "id=value" and "id:value" forms
+" by default. If you want strict compliance, set jproperties_strict_syntax
+" to non-zero (and good luck).
+if !exists("jproperties_strict_syntax")
+ let jproperties_strict_syntax = 0
+endif
+
+" jproperties_show_messages
+" -------------------------
+" If this properties file contains messages for use with MessageFormat,
+" setting a non-zero value will highlight them. Messages are of the form
+" "{...}". Highlighting doesn't go to the pains of picking apart what is
+" in the format itself - just the basics for now.
+if !exists("jproperties_show_messages")
+ let jproperties_show_messages = 0
+endif
+
+" =============================================================================
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" switch case sensitivity off
+syn case ignore
+
+" set the block
+exec "syn sync lines=" . jproperties_lines
+
+" switch between 'normal' and 'strict' syntax
+if jproperties_strict_syntax != 0
+
+ " an assignment is pretty much any non-empty line at this point,
+ " trying to not think about continuation lines
+ syn match jpropertiesAssignment "^\s*[^[:space:]]\+.*$" contains=jpropertiesIdentifier
+
+ " an identifier is anything not a space character, pretty much; it's
+ " followed by = or :, or space or tab. Or end-of-line.
+ syn match jpropertiesIdentifier "[^=:[:space:]]*" contained nextgroup=jpropertiesDelimiter
+
+ " treat the delimiter specially to get colours right
+ syn match jpropertiesDelimiter "\s*[=:[:space:]]\s*" contained nextgroup=jpropertiesString
+
+ " catch the bizarre case of no identifier; a special case of delimiter
+ syn match jpropertiesEmptyIdentifier "^\s*[=:]\s*" nextgroup=jpropertiesString
+else
+
+ " here an assignment is id=value or id:value, and we conveniently
+ " ignore continuation lines for the present
+ syn match jpropertiesAssignment "^\s*[^=:[:space:]]\+\s*[=:].*$" contains=jpropertiesIdentifier
+
+ " an identifier is anything not a space character, pretty much; it's
+ " always followed by = or :, and we find it in an assignment
+ syn match jpropertiesIdentifier "[^=:[:space:]]\+" contained nextgroup=jpropertiesDelimiter
+
+ " treat the delimiter specially to get colours right; this time the
+ " delimiter must contain = or :
+ syn match jpropertiesDelimiter "\s*[=:]\s*" contained nextgroup=jpropertiesString
+endif
+
+" a definition is all up to the last non-\-terminated line; strictly, Java
+" properties tend to ignore leading whitespace on all lines of a multi-line
+" definition, but we don't look for that here (because it's a major hassle)
+syn region jpropertiesString start="" skip="\\$" end="$" contained contains=jpropertiesSpecialChar,jpropertiesError,jpropertiesSpecial
+
+" {...} is a Java Message formatter - add a minimal recognition of these
+" if required
+if jproperties_show_messages != 0
+ syn match jpropertiesSpecial "{[^}]*}\{-1,\}" contained
+ syn match jpropertiesSpecial "'{" contained
+ syn match jpropertiesSpecial "''" contained
+endif
+
+" \uABCD are unicode special characters
+syn match jpropertiesSpecialChar "\\u\x\{1,4}" contained
+
+" ...and \u not followed by a hex digit is an error, though the properties
+" file parser won't issue an error on it, just set something wacky like zero
+syn match jpropertiesError "\\u\X\{1,4}" contained
+syn match jpropertiesError "\\u$"me=e-1 contained
+
+" other things of note are the \t,r,n,\, and the \ preceding line end
+syn match jpropertiesSpecial "\\[trn\\]" contained
+syn match jpropertiesSpecial "\\\s" contained
+syn match jpropertiesSpecial "\\$" contained
+
+" comments begin with # or !, and persist to end of line; put here since
+" they may have been caught by patterns above us
+syn match jpropertiesComment "^\s*[#!].*$" contains=jpropertiesTODO
+syn keyword jpropertiesTodo TODO FIXME XXX contained
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link jpropertiesComment Comment
+hi def link jpropertiesTodo Todo
+hi def link jpropertiesIdentifier Identifier
+hi def link jpropertiesString String
+hi def link jpropertiesExtendString String
+hi def link jpropertiesCharacter Character
+hi def link jpropertiesSpecial Special
+hi def link jpropertiesSpecialChar SpecialChar
+hi def link jpropertiesError Error
+
+
+let b:current_syntax = "jproperties"
+
+" vim:ts=8
diff --git a/runtime/syntax/json.vim b/runtime/syntax/json.vim
new file mode 100644
index 0000000..3f49b0c
--- /dev/null
+++ b/runtime/syntax/json.vim
@@ -0,0 +1,136 @@
+" Vim syntax file
+" Language: JSON
+" Maintainer: vacancy
+" Previous Maintainer: Eli Parra <eli@elzr.com>
+" Last Change: 2019 Sep 17
+" Version: 0.12
+
+if !exists("main_syntax")
+ " quit when a syntax file was already loaded
+ if exists("b:current_syntax")
+ finish
+ endif
+ let main_syntax = 'json'
+endif
+
+syntax match jsonNoise /\%(:\|,\)/
+
+" NOTE that for the concealing to work your conceallevel should be set to 2
+
+" Syntax: JSON Keywords
+" Separated into a match and region because a region by itself is always greedy
+syn match jsonKeywordMatch /"\([^"]\|\\\"\)\+"[[:blank:]\r\n]*\:/ contains=jsonKeyword
+if has('conceal') && (!exists("g:vim_json_conceal") || g:vim_json_conceal==1)
+ syn region jsonKeyword matchgroup=jsonQuote start=/"/ end=/"\ze[[:blank:]\r\n]*\:/ concealends contained
+else
+ syn region jsonKeyword matchgroup=jsonQuote start=/"/ end=/"\ze[[:blank:]\r\n]*\:/ contained
+endif
+
+" Syntax: Strings
+" Separated into a match and region because a region by itself is always greedy
+" Needs to come after keywords or else a json encoded string will break the
+" syntax
+syn match jsonStringMatch /"\([^"]\|\\\"\)\+"\ze[[:blank:]\r\n]*[,}\]]/ contains=jsonString
+if has('conceal') && (!exists("g:vim_json_conceal") || g:vim_json_conceal==1)
+ syn region jsonString oneline matchgroup=jsonQuote start=/"/ skip=/\\\\\|\\"/ end=/"/ concealends contains=jsonEscape contained
+else
+ syn region jsonString oneline matchgroup=jsonQuote start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=jsonEscape contained
+endif
+
+" Syntax: JSON does not allow strings with single quotes, unlike JavaScript.
+syn region jsonStringSQError oneline start=+'+ skip=+\\\\\|\\"+ end=+'+
+
+
+" Syntax: Escape sequences
+syn match jsonEscape "\\["\\/bfnrt]" contained
+syn match jsonEscape "\\u\x\{4}" contained
+
+" Syntax: Numbers
+syn match jsonNumber "-\=\<\%(0\|[1-9]\d*\)\%(\.\d\+\)\=\%([eE][-+]\=\d\+\)\=\>\ze[[:blank:]\r\n]*[,}\]]"
+
+" ERROR WARNINGS **********************************************
+if (!exists("g:vim_json_warnings") || g:vim_json_warnings==1)
+ " Syntax: Strings should always be enclosed with quotes.
+ syn match jsonNoQuotesError "\<[[:alpha:]][[:alnum:]]*\>"
+ syn match jsonTripleQuotesError /"""/
+
+ " Syntax: An integer part of 0 followed by other digits is not allowed.
+ syn match jsonNumError "-\=\<0\d\.\d*\>"
+
+ " Syntax: Decimals smaller than one should begin with 0 (so .1 should be 0.1).
+ syn match jsonNumError "\:\@<=[[:blank:]\r\n]*\zs\.\d\+"
+
+ " Syntax: No comments in JSON, see http://stackoverflow.com/questions/244777/can-i-comment-a-json-file
+ syn match jsonCommentError "//.*"
+ syn match jsonCommentError "\(/\*\)\|\(\*/\)"
+
+ " Syntax: No semicolons in JSON
+ syn match jsonSemicolonError ";"
+
+ " Syntax: No trailing comma after the last element of arrays or objects
+ syn match jsonTrailingCommaError ",\_s*[}\]]"
+
+ " Syntax: Watch out for missing commas between elements
+ syn match jsonMissingCommaError /\("\|\]\|\d\)\zs\_s\+\ze"/
+ syn match jsonMissingCommaError /\(\]\|\}\)\_s\+\ze"/ "arrays/objects as values
+ syn match jsonMissingCommaError /}\_s\+\ze{/ "objects as elements in an array
+ syn match jsonMissingCommaError /\(true\|false\)\_s\+\ze"/ "true/false as value
+endif
+
+" ********************************************** END OF ERROR WARNINGS
+" Allowances for JSONP: function call at the beginning of the file,
+" parenthesis and semicolon at the end.
+" Function name validation based on
+" http://stackoverflow.com/questions/2008279/validate-a-javascript-function-name/2008444#2008444
+syn match jsonPadding "\%^[[:blank:]\r\n]*[_$[:alpha:]][_$[:alnum:]]*[[:blank:]\r\n]*("
+syn match jsonPadding ");[[:blank:]\r\n]*\%$"
+
+" Syntax: Boolean
+syn match jsonBoolean /\(true\|false\)\(\_s\+\ze"\)\@!/
+
+" Syntax: Null
+syn keyword jsonNull null
+
+" Syntax: Braces
+syn region jsonFold matchgroup=jsonBraces start="{" end=/}\(\_s\+\ze\("\|{\)\)\@!/ transparent fold
+syn region jsonFold matchgroup=jsonBraces start="\[" end=/]\(\_s\+\ze"\)\@!/ transparent fold
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link jsonPadding Operator
+hi def link jsonString String
+hi def link jsonTest Label
+hi def link jsonEscape Special
+hi def link jsonNumber Number
+hi def link jsonBraces Delimiter
+hi def link jsonNull Function
+hi def link jsonBoolean Boolean
+hi def link jsonKeyword Label
+
+if (!exists("g:vim_json_warnings") || g:vim_json_warnings==1)
+hi def link jsonNumError Error
+hi def link jsonCommentError Error
+hi def link jsonSemicolonError Error
+hi def link jsonTrailingCommaError Error
+hi def link jsonMissingCommaError Error
+hi def link jsonStringSQError Error
+hi def link jsonNoQuotesError Error
+hi def link jsonTripleQuotesError Error
+endif
+hi def link jsonQuote Quote
+hi def link jsonNoise Noise
+
+let b:current_syntax = "json"
+if main_syntax == 'json'
+ unlet main_syntax
+endif
+
+" Vim settings
+" vim: ts=8 fdm=marker
+
+" MIT License
+" Copyright (c) 2013, Jeroen Ruigrok van der Werven, Eli Parra
+"Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+"The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+"THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+"See https://twitter.com/elzr/status/294964017926119424
diff --git a/runtime/syntax/jsonc.vim b/runtime/syntax/jsonc.vim
new file mode 100644
index 0000000..d0df16b
--- /dev/null
+++ b/runtime/syntax/jsonc.vim
@@ -0,0 +1,44 @@
+" Vim syntax file
+" Language: JSONC (JSON with Comments)
+" Original Author: Izhak Jakov <izhak724@gmail.com>
+" Acknowledgement: Based off of vim-jsonc maintained by Kevin Locke <kevin@kevinlocke.name>
+" https://github.com/kevinoid/vim-jsonc
+" License: MIT
+" Last Change: 2021-07-01
+
+" Ensure syntax is loaded once, unless nested inside another (main) syntax
+" For description of main_syntax, see https://stackoverflow.com/q/16164549
+if !exists('g:main_syntax')
+ if exists('b:current_syntax') && b:current_syntax ==# 'jsonc'
+ finish
+ endif
+ let g:main_syntax = 'jsonc'
+endif
+
+" Based on vim-json syntax
+runtime! syntax/json.vim
+
+" Remove syntax group for comments treated as errors
+if !exists("g:vim_json_warnings") || g:vim_json_warnings
+ syn clear jsonCommentError
+endif
+
+syn match jsonStringMatch /"\([^"]\|\\\"\)\+"\ze\(\_s*\/\/.*\_s*\)*[}\]]/ contains=jsonString
+syn match jsonStringMatch /"\([^"]\|\\\"\)\+"\ze\_s*\/\*\_.*\*\/\_s*[}\]]/ contains=jsonString
+syn match jsonTrailingCommaError /\(,\)\+\ze\(\_s*\/\/.*\_s*\)*[}\]]/
+syn match jsonTrailingCommaError /\(,\)\+\ze\_s*\/\*\_.*\*\/\_s*[}\]]/
+
+" Define syntax matching comments and their contents
+syn keyword jsonCommentTodo FIXME NOTE TBD TODO XXX
+syn region jsonLineComment start=+\/\/+ end=+$+ contains=@Spell,jsonCommentTodo keepend
+syn region jsonComment start='/\*' end='\*/' contains=@Spell,jsonCommentTodo fold
+
+" Link comment syntax comment to highlighting
+hi! def link jsonLineComment Comment
+hi! def link jsonComment Comment
+
+" Set/Unset syntax to avoid duplicate inclusion and correctly handle nesting
+let b:current_syntax = 'jsonc'
+if g:main_syntax ==# 'jsonc'
+ unlet g:main_syntax
+endif
diff --git a/runtime/syntax/jsp.vim b/runtime/syntax/jsp.vim
new file mode 100644
index 0000000..1c3cc35
--- /dev/null
+++ b/runtime/syntax/jsp.vim
@@ -0,0 +1,68 @@
+" Vim syntax file
+" Language: JSP (Java Server Pages)
+" Maintainer: Rafael Garcia-Suarez <rgarciasuarez@free.fr>
+" URL: http://rgarciasuarez.free.fr/vim/syntax/jsp.vim
+" Last change: 2004 Feb 02
+" Credits : Patch by Darren Greaves (recognizes <jsp:...> tags)
+" Patch by Thomas Kimpton (recognizes jspExpr inside HTML tags)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'jsp'
+endif
+
+" Source HTML syntax
+runtime! syntax/html.vim
+unlet b:current_syntax
+
+" Next syntax items are case-sensitive
+syn case match
+
+" Include Java syntax
+syn include @jspJava syntax/java.vim
+
+syn region jspScriptlet matchgroup=jspTag start=/<%/ keepend end=/%>/ contains=@jspJava
+syn region jspComment start=/<%--/ end=/--%>/
+syn region jspDecl matchgroup=jspTag start=/<%!/ keepend end=/%>/ contains=@jspJava
+syn region jspExpr matchgroup=jspTag start=/<%=/ keepend end=/%>/ contains=@jspJava
+syn region jspDirective start=/<%@/ end=/%>/ contains=htmlString,jspDirName,jspDirArg
+
+syn keyword jspDirName contained include page taglib
+syn keyword jspDirArg contained file uri prefix language extends import session buffer autoFlush
+syn keyword jspDirArg contained isThreadSafe info errorPage contentType isErrorPage
+syn region jspCommand start=/<jsp:/ start=/<\/jsp:/ keepend end=/>/ end=/\/>/ contains=htmlString,jspCommandName,jspCommandArg
+syn keyword jspCommandName contained include forward getProperty plugin setProperty useBean param params fallback
+syn keyword jspCommandArg contained id scope class type beanName page flush name value property
+syn keyword jspCommandArg contained code codebase name archive align height
+syn keyword jspCommandArg contained width hspace vspace jreversion nspluginurl iepluginurl
+
+" Redefine htmlTag so that it can contain jspExpr
+syn clear htmlTag
+syn region htmlTag start=+<[^/%]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster,jspExpr,javaScript
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+" java.vim has redefined htmlComment highlighting
+hi def link htmlComment Comment
+hi def link htmlCommentPart Comment
+" Be consistent with html highlight settings
+hi def link jspComment htmlComment
+hi def link jspTag htmlTag
+hi def link jspDirective jspTag
+hi def link jspDirName htmlTagName
+hi def link jspDirArg htmlArg
+hi def link jspCommand jspTag
+hi def link jspCommandName htmlTagName
+hi def link jspCommandArg htmlArg
+
+if main_syntax == 'jsp'
+ unlet main_syntax
+endif
+
+let b:current_syntax = "jsp"
+
+" vim: ts=8
diff --git a/runtime/syntax/julia.vim b/runtime/syntax/julia.vim
new file mode 100644
index 0000000..ec7eabf
--- /dev/null
+++ b/runtime/syntax/julia.vim
@@ -0,0 +1,550 @@
+" Vim syntax file
+" Language: julia
+" Maintainer: Carlo Baldassi <carlobaldassi@gmail.com>
+" Homepage: https://github.com/JuliaEditorSupport/julia-vim
+" Last Change: 2021 Aug 04
+
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+if version < 704
+ " this is used to disable regex syntax like `\@3<='
+ " on older vim versions
+ function! s:d(x)
+ return ''
+ endfunction
+else
+ function! s:d(x)
+ return string(a:x)
+ endfunction
+endif
+
+scriptencoding utf-8
+
+let s:julia_spellcheck_strings = get(g:, "julia_spellcheck_strings", 0)
+let s:julia_spellcheck_docstrings = get(g:, "julia_spellcheck_docstrings", 1)
+let s:julia_spellcheck_comments = get(g:, "julia_spellcheck_comments", 1)
+
+let s:julia_highlight_operators = get(g:, "julia_highlight_operators", 1)
+
+" List of characters, up to \UFF, which cannot be used in identifiers.
+" (It includes operator characters; we don't consider them identifiers.)
+" This is used mostly in lookbehinds with `\@<=`, e.g. when we need to check
+" that that we're not in the middle of an identifier.
+" It doesn't include a few characters (spaces and all closing parentheses)
+" because those may or may not be valid in the lookbehind on a case-by-case
+" basis.
+let s:nonid_chars = '\U00-\U08' . '\U0A-\U1F'
+ \ . '\U21-\U28' . '\U2A-\U2F' . '\U3A-\U40' . '\U5B-\U5E' . '\U60' . '\U7B\U7C'
+ \ . '\U7E-\UA1' . '\UA7\UA8' . '\UAB-\UAD' . '\UAF\UB1\UB4' . '\UB6-\UB8' . '\UBB\UBF' . '\UD7\UF7'
+
+" The complete list
+let s:nonidS_chars = '[:space:])\U5D}' . s:nonid_chars
+
+
+" List of all valid operator chars up to \UFF (NOTE: they must all be included
+" in s:nonidS_chars, so that if we include that, then this is redundant)
+" It does not include '!' since it can be used in an identifier.
+" The list contains the following characters: '%&*+-/<=>\\^|~¬±×÷'
+let s:op_chars = '\U25\U26\U2A\U2B\U2D\U2F\U3C-\U3E\U5C\U5E\U7C\U7E\UAC\UB1\UD7\UF7'
+
+" List of all valid operator chars above \UFF
+" Written with ranges for performance reasons
+" The list contains the following characters: '…ââ…‹â†â†‘→↓↔↚↛↜â†â†žâ† â†¢â†£â†¤â†¦â†©â†ªâ†«â†¬â†®â†¶â†·â†ºâ†»â†¼â†½â‡€â‡â‡„⇆⇇⇉⇋⇌â‡â‡Žâ‡â‡â‡’⇔⇚⇛⇜â‡â‡ â‡¢â‡´â‡µâ‡¶â‡·â‡¸â‡¹â‡ºâ‡»â‡¼â‡½â‡¾â‡¿âˆˆâˆ‰âˆŠâˆ‹âˆŒâˆâˆ“∔∗∘∙√∛∜âˆâˆ¤âˆ¥âˆ¦âˆ§âˆ¨âˆ©âˆªâˆ·âˆ¸âˆºâˆ»âˆ½âˆ¾â‰€â‰â‰‚≃≄≅≆≇≈≉≊≋≌â‰â‰Žâ‰â‰â‰‘≒≓≔≕≖≗≘≙≚≛≜â‰â‰žâ‰Ÿâ‰ â‰¡â‰¢â‰£â‰¤â‰¥â‰¦â‰§â‰¨â‰©â‰ªâ‰«â‰¬â‰­â‰®â‰¯â‰°â‰±â‰²â‰³â‰´â‰µâ‰¶â‰·â‰¸â‰¹â‰ºâ‰»â‰¼â‰½â‰¾â‰¿âŠ€âŠâŠ‚⊃⊄⊅⊆⊇⊈⊉⊊⊋âŠâŠŽâŠâŠâŠ‘⊒⊓⊔⊕⊖⊗⊘⊙⊚⊛⊜⊞⊟⊠⊡⊢⊣⊩⊬⊮⊰⊱⊲⊳⊴⊵⊶⊷⊻⊼⊽⋄⋅⋆⋇⋉⋊⋋⋌â‹â‹Žâ‹â‹â‹‘⋒⋓⋕⋖⋗⋘⋙⋚⋛⋜â‹â‹žâ‹Ÿâ‹ â‹¡â‹¢â‹£â‹¤â‹¥â‹¦â‹§â‹¨â‹©â‹ªâ‹«â‹¬â‹­â‹®â‹¯â‹°â‹±â‹²â‹³â‹´â‹µâ‹¶â‹·â‹¸â‹¹â‹ºâ‹»â‹¼â‹½â‹¾â‹¿âŒ¿â–·âŸ‚⟈⟉⟑⟒⟕⟖⟗⟰⟱⟵⟶⟷⟹⟺⟻⟼⟽⟾⟿⤀â¤â¤‚⤃⤄⤅⤆⤇⤈⤉⤊⤋⤌â¤â¤Žâ¤â¤â¤‘⤒⤓⤔⤕⤖⤗⤘â¤â¤žâ¤Ÿâ¤ â¥„⥅⥆⥇⥈⥉⥊⥋⥌â¥â¥Žâ¥â¥â¥‘⥒⥓⥔⥕⥖⥗⥘⥙⥚⥛⥜â¥â¥žâ¥Ÿâ¥ â¥¡â¥¢â¥£â¥¤â¥¥â¥¦â¥§â¥¨â¥©â¥ªâ¥«â¥¬â¥­â¥®â¥¯â¥°â¦·â¦¸â¦¼â¦¾â¦¿â§€â§â§¡â§£â§¤â§¥â§´â§¶â§·â§ºâ§»â¨‡â¨ˆâ¨â¨Ÿâ¨¢â¨£â¨¤â¨¥â¨¦â¨§â¨¨â¨©â¨ªâ¨«â¨¬â¨­â¨®â¨°â¨±â¨²â¨³â¨´â¨µâ¨¶â¨·â¨¸â¨¹â¨ºâ¨»â¨¼â¨½â©€â©â©‚⩃⩄⩅⩊⩋⩌â©â©Žâ©â©â©‘⩒⩓⩔⩕⩖⩗⩘⩚⩛⩜â©â©žâ©Ÿâ© â©¡â©¢â©£â©¦â©§â©ªâ©«â©¬â©­â©®â©¯â©°â©±â©²â©³â©´â©µâ©¶â©·â©¸â©¹â©ºâ©»â©¼â©½â©¾â©¿âª€âªâª‚⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌âªâªŽâªâªâª‘⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜âªâªžâªŸâª âª¡âª¢âª£âª¤âª¥âª¦âª§âª¨âª©âªªâª«âª¬âª­âª®âª¯âª°âª±âª²âª³âª´âªµâª¶âª·âª¸âª¹âªºâª»âª¼âª½âª¾âª¿â«€â«â«‚⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌â«â«Žâ«â«â«‘⫒⫓⫔⫕⫖⫗⫘⫙⫛⫷⫸⫹⫺⬰⬱⬲⬳⬴⬵⬶⬷⬸⬹⬺⬻⬼⬽⬾⬿⭀â­â­‚⭃⭄⭇⭈⭉⭊⭋⭌←↑→↓'
+let s:op_chars_wc = '\U2026\U205D\U214B\U2190-\U2194\U219A-\U219E\U21A0\U21A2-\U21A4\U21A6\U21A9-\U21AC\U21AE\U21B6\U21B7\U21BA-\U21BD\U21C0\U21C1\U21C4\U21C6\U21C7\U21C9\U21CB-\U21D0\U21D2\U21D4\U21DA-\U21DD\U21E0\U21E2\U21F4-\U21FF\U2208-\U220D\U2213\U2214\U2217-\U221D\U2224-\U222A\U2237\U2238\U223A\U223B\U223D\U223E\U2240-\U228B\U228D-\U229C\U229E-\U22A3\U22A9\U22AC\U22AE\U22B0-\U22B7\U22BB-\U22BD\U22C4-\U22C7\U22C9-\U22D3\U22D5-\U22FF\U233F\U25B7\U27C2\U27C8\U27C9\U27D1\U27D2\U27D5-\U27D7\U27F0\U27F1\U27F5-\U27F7\U27F9-\U27FF\U2900-\U2918\U291D-\U2920\U2944-\U2970\U29B7\U29B8\U29BC\U29BE-\U29C1\U29E1\U29E3-\U29E5\U29F4\U29F6\U29F7\U29FA\U29FB\U2A07\U2A08\U2A1D\U2A1F\U2A22-\U2A2E\U2A30-\U2A3D\U2A40-\U2A45\U2A4A-\U2A58\U2A5A-\U2A63\U2A66\U2A67\U2A6A-\U2AD9\U2ADB\U2AF7-\U2AFA\U2B30-\U2B44\U2B47-\U2B4C\UFFE9-\UFFEC'
+
+" Full operators regex
+let s:operators = '\%(' . '\.\%([-+*/^÷%|&⊻]\|//\|\\\|>>\|>>>\?\)\?=' .
+ \ '\|' . '[:<>]=\|||\|&&\||>\|<|\|[<>:]:\|<<\|>>>\?\|//\|[-=]>\|\.\.\.\?' .
+ \ '\|' . '\.\?[!' . s:op_chars . s:op_chars_wc . ']' .
+ \ '\)'
+
+
+" Characters that can be used to start an identifier. Above \UBF we don't
+" bother checking. (If a UTF8 operator is used, it will take precedence anyway.)
+let s:id_charsH = '\%([A-Za-z_\UA2-\UA6\UA9\UAA\UAE\UB0\UB5\UBA]\|[^\U00-\UBF]\)'
+" Characters that can appear in an identifier, starting in 2nd position. Above
+" \UBF we check for operators since we need to stop the identifier if one
+" appears. We don't check for invalid characters though.
+let s:id_charsW = '\%([0-9A-Za-z_!\UA2-\UA6\UA9\UAA\UAE-\UB0\UB2-\UB5\UB8-\UBA\UBC-\UBE]\|[^\U00-\UBF]\@=[^' . s:op_chars_wc . ']\)'
+
+" A valid julia identifier, more or less
+let s:idregex = '\%(' . s:id_charsH . s:id_charsW . '*\)'
+
+
+
+syn case match
+
+syntax cluster juliaExpressions contains=@juliaParItems,@juliaStringItems,@juliaKeywordItems,@juliaBlocksItems,@juliaTypesItems,@juliaConstItems,@juliaMacroItems,@juliaSymbolItems,@juliaOperatorItems,@juliaNumberItems,@juliaCommentItems,@juliaErrorItems,@juliaSyntaxRegions
+syntax cluster juliaExprsPrintf contains=@juliaExpressions,@juliaPrintfItems
+syntax cluster juliaExprsNodot contains=@juliaParItems,@juliaStringItems,@juliaMacroItems,@juliaSymbolItems,@juliaOperatorItems,@juliaCommentItems,juliaIdSymbol
+
+syntax cluster juliaParItems contains=juliaParBlock,juliaSqBraIdxBlock,juliaSqBraBlock,juliaCurBraBlock,juliaQuotedParBlock,juliaQuotedQMarkPar
+syntax cluster juliaKeywordItems contains=juliaKeyword,juliaWhereKeyword,juliaImportLine,juliaInfixKeyword,juliaRepKeyword
+syntax cluster juliaBlocksItems contains=juliaConditionalBlock,juliaWhileBlock,juliaForBlock,juliaBeginBlock,juliaFunctionBlock,juliaMacroBlock,juliaQuoteBlock,juliaTypeBlock,juliaImmutableBlock,juliaExceptionBlock,juliaLetBlock,juliaDoBlock,juliaModuleBlock,juliaStructBlock,juliaMutableStructBlock,juliaAbstractBlock,juliaPrimitiveBlock
+syntax cluster juliaTypesItems contains=juliaBaseTypeBasic,juliaBaseTypeNum,juliaBaseTypeC,juliaBaseTypeError,juliaBaseTypeIter,juliaBaseTypeString,juliaBaseTypeArray,juliaBaseTypeDict,juliaBaseTypeSet,juliaBaseTypeIO,juliaBaseTypeProcess,juliaBaseTypeRange,juliaBaseTypeRegex,juliaBaseTypeFact,juliaBaseTypeFact,juliaBaseTypeSort,juliaBaseTypeRound,juliaBaseTypeSpecial,juliaBaseTypeRandom,juliaBaseTypeDisplay,juliaBaseTypeTime,juliaBaseTypeOther
+
+syntax cluster juliaConstItems contains=juliaConstNum,juliaConstBool,juliaConstEnv,juliaConstMMap,juliaConstC,juliaConstGeneric,juliaConstIO,juliaPossibleEuler
+
+syntax cluster juliaMacroItems contains=juliaPossibleMacro,juliaDollarVar,juliaDollarPar,juliaDollarSqBra
+syntax cluster juliaSymbolItems contains=juliaPossibleSymbol
+syntax cluster juliaNumberItems contains=juliaNumbers
+syntax cluster juliaStringItems contains=juliaChar,juliaString,juliabString,juliasString,juliaShellString,juliaDocString,juliaRegEx
+syntax cluster juliaPrintfItems contains=juliaPrintfParBlock,juliaPrintfString
+syntax cluster juliaOperatorItems contains=juliaOperator,juliaRangeOperator,juliaCTransOperator,juliaTernaryRegion,juliaColon,juliaSemicolon,juliaComma
+syntax cluster juliaCommentItems contains=juliaCommentL,juliaCommentM
+syntax cluster juliaErrorItems contains=juliaErrorPar,juliaErrorEnd,juliaErrorElse,juliaErrorCatch,juliaErrorFinally
+
+syntax cluster juliaSyntaxRegions contains=juliaIdSymbol,juliaTypeOperatorR2,juliaTypeOperatorR3,juliaWhereR,juliaDotted
+
+syntax cluster juliaSpellcheckStrings contains=@spell
+syntax cluster juliaSpellcheckDocStrings contains=@spell
+syntax cluster juliaSpellcheckComments contains=@spell
+
+if !s:julia_spellcheck_docstrings
+ syntax cluster juliaSpellcheckDocStrings remove=@spell
+endif
+if !s:julia_spellcheck_strings
+ syntax cluster juliaSpellcheckStrings remove=@spell
+endif
+if !s:julia_spellcheck_comments
+ syntax cluster juliaSpellcheckComments remove=@spell
+endif
+
+syntax match juliaSemicolon display ";"
+syntax match juliaComma display ","
+syntax match juliaColon display ":"
+
+" A dot can introduce a sort of 'environment' such that words after it are not
+" recognized as keywords. This has low precedence so that it can be overridden
+" by operators
+syntax match juliaDotted transparent "\.\s*[^])}.]" contains=@juliaExprsNodot
+syntax match juliaDottedT contained transparent "\.\s*[^])}.]" contains=@juliaExprsNodot,juliaType
+
+syntax match juliaErrorPar display "[])}]"
+syntax match juliaErrorEnd display "\<end\>"
+syntax match juliaErrorElse display "\<\%(else\|elseif\)\>"
+syntax match juliaErrorCatch display "\<catch\>"
+syntax match juliaErrorFinally display "\<finally\>"
+syntax match juliaErrorSemicol display contained ";"
+
+syntax region juliaParBlock matchgroup=juliaParDelim start="(" end=")" contains=@juliaExpressions,juliaComprehensionFor
+syntax region juliaParBlockInRange matchgroup=juliaParDelim contained start="(" end=")" contains=@juliaExpressions,juliaParBlockInRange,juliaRangeKeyword,juliaComprehensionFor
+syntax region juliaSqBraIdxBlock matchgroup=juliaParDelim start="\[" end="\]" contains=@juliaExpressions,juliaParBlockInRange,juliaRangeKeyword,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS,juliaQuotedQMarkParS
+exec 'syntax region juliaSqBraBlock matchgroup=juliaParDelim start="\%(^\|\s\|' . s:operators . '\)\@'.s:d(3).'<=\[" end="\]" contains=@juliaExpressions,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS,juliaQuotedQMarkParS'
+syntax region juliaCurBraBlock matchgroup=juliaParDelim start="{" end="}" contains=juliaType,juliaDottedT,@juliaExpressions
+
+exec 'syntax match juliaType contained "\%(' . s:idregex . '\.\)*\zs' . s:idregex . '"'
+
+" This is a generic identifier followed by some symbol, either a type
+" operator (<: or >:), or an open parenthesis, or an open curly bracket.
+" It's used to recognize one of the contained regions looking for identifiers
+" only once. Once recognized, those regions no longer need to use the
+" expensive s:idregex.
+exec 'syntax match juliaIdSymbol transparent "' . s:idregex . '\%(\s*[<>]:\|\.\?(\|{\|\"\)\@=" contains=juliaFunctionCall,juliaParamType,juliaStringPrefixed,juliaTypeOperatorR1'
+
+syntax match juliaFunctionCall contained "[^{([:space:]<>\"]\+(\@=" nextgroup=juliaParBlock
+
+exec 'syntax match juliaFunctionDef contained transparent "\%(\<\%(function\|macro\)\)\@'.s:d(8).'<=\s\+\zs' . s:idregex . '\%(\.' . s:idregex . '\)*\ze\s*\%((\|\send\>\|$\)" contains=juliaFunctionName'
+exec 'syntax match juliaFunctionName contained "\%(\<\%(function\|macro\)\s\+\)\@'.s:d(20).'<=\%(' . s:idregex . '\.\)*\zs' . s:idregex . '"'
+
+exec 'syntax match juliaStructR contained transparent "\%(\<\%(\%(mutable\s\+\)\?struct\|\%(abstract\|primitive\)\s\+type\)\s\+\)\@'.s:d(20).'<=\%(' . s:idregex . '\.\)*' . s:idregex . '\>\(\s*(\)\@!" contains=juliaType'
+
+syntax match juliaKeyword display "\<\%(return\|local\|global\|const\)\>"
+syntax match juliaInfixKeyword display "\%(=\s*\)\@<!\<\%(in\|isa\)\>\S\@!\%(\s*=\)\@!"
+
+" The import/export/using keywords introduce a sort of special parsing
+" environment with its own rules
+exec 'syntax region juliaImportLine matchgroup=juliaKeyword excludenl start="\<\%(import\|using\|export\)\>" skip="\%(\%(\<\%(import\|using\|export\)\>\)\|^\)\@'.s:d(6).'<=$" end="$" end="\%([])}]\)\@=" contains=@juliaExpressions,juliaAsKeyword,@juliaContinuationItems,juliaMacroName'
+syntax match juliaAsKeyword display contained "\<as\>"
+
+syntax match juliaRepKeyword display "\<\%(break\|continue\)\>"
+syntax region juliaConditionalBlock matchgroup=juliaConditional start="\<if\>" end="\<end\>" contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock fold
+syntax region juliaConditionalEIBlock matchgroup=juliaConditional transparent contained start="\<elseif\>" end="\<\%(end\|else\|elseif\)\>"me=s-1 contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock
+syntax region juliaConditionalEBlock matchgroup=juliaConditional transparent contained start="\<else\>" end="\<end\>"me=s-1 contains=@juliaExpressions
+syntax region juliaWhileBlock matchgroup=juliaRepeat start="\<while\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region juliaForBlock matchgroup=juliaRepeat start="\<for\>" end="\<end\>" contains=@juliaExpressions,juliaOuter fold
+syntax region juliaBeginBlock matchgroup=juliaBlKeyword start="\<begin\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region juliaFunctionBlock matchgroup=juliaBlKeyword start="\<function\>" end="\<end\>" contains=@juliaExpressions,juliaFunctionDef fold
+syntax region juliaMacroBlock matchgroup=juliaBlKeyword start="\<macro\>" end="\<end\>" contains=@juliaExpressions,juliaFunctionDef fold
+syntax region juliaQuoteBlock matchgroup=juliaBlKeyword start="\<quote\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region juliaStructBlock matchgroup=juliaBlKeyword start="\<struct\>" end="\<end\>" contains=@juliaExpressions,juliaStructR fold
+syntax region juliaMutableStructBlock matchgroup=juliaBlKeyword start="\<mutable\s\+struct\>" end="\<end\>" contains=@juliaExpressions,juliaStructR fold
+syntax region juliaLetBlock matchgroup=juliaBlKeyword start="\<let\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region juliaDoBlock matchgroup=juliaBlKeyword start="\<do\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region juliaModuleBlock matchgroup=juliaBlKeyword start="\<\%(bare\)\?module\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region juliaExceptionBlock matchgroup=juliaException start="\<try\>" end="\<end\>" contains=@juliaExpressions,juliaCatchBlock,juliaFinallyBlock fold
+syntax region juliaCatchBlock matchgroup=juliaException transparent contained start="\<catch\>" end="\<end\>"me=s-1 contains=@juliaExpressions,juliaFinallyBlock
+syntax region juliaFinallyBlock matchgroup=juliaException transparent contained start="\<finally\>" end="\<end\>"me=s-1 contains=@juliaExpressions
+syntax region juliaAbstractBlock matchgroup=juliaBlKeyword start="\<abstract\s\+type\>" end="\<end\>" fold contains=@juliaExpressions,juliaStructR
+syntax region juliaPrimitiveBlock matchgroup=juliaBlKeyword start="\<primitive\s\+type\>" end="\<end\>" fold contains=@juliaExpressions,juliaStructR
+
+exec 'syntax region juliaComprehensionFor matchgroup=juliaComprehensionFor transparent contained start="\%([^[:space:],;:({[]\_s*\)\@'.s:d(80).'<=\<for\>" end="\ze[]);]" contains=@juliaExpressions,juliaComprehensionIf,juliaComprehensionFor'
+syntax match juliaComprehensionIf contained "\<if\>"
+
+exec 'syntax match juliaOuter contained "\<outer\ze\s\+' . s:idregex . '\>"'
+
+syntax match juliaRangeKeyword contained "\<\%(begin\|end\)\>"
+
+syntax match juliaBaseTypeBasic display "\<\%(\%(N\|Named\)\?Tuple\|Symbol\|Function\|Union\%(All\)\?\|Type\%(Name\|Var\)\?\|Any\|ANY\|Vararg\|Ptr\|Exception\|Module\|Expr\|DataType\|\%(LineNumber\|Quote\)Node\|\%(Weak\|Global\)\?Ref\|Method\|Pair\|Val\|Nothing\|Some\|Missing\)\>"
+syntax match juliaBaseTypeNum display "\<\%(U\?Int\%(8\|16\|32\|64\|128\)\?\|Float\%(16\|32\|64\)\|Complex\|Bool\|Char\|Number\|Signed\|Unsigned\|Integer\|AbstractFloat\|Real\|Rational\|\%(Abstract\)\?Irrational\|Enum\|BigInt\|BigFloat\|MathConst\|ComplexF\%(16\|32\|64\)\)\>"
+syntax match juliaBaseTypeC display "\<\%(FileOffset\|C\%(u\?\%(char\|short\|int\|long\(long\)\?\|w\?string\)\|float\|double\|\%(ptrdiff\|s\?size\|wchar\|off\|u\?intmax\)_t\|void\)\)\>"
+syntax match juliaBaseTypeError display "\<\%(\%(Bounds\|Divide\|Domain\|\%(Stack\)\?Overflow\|EOF\|Undef\%(Ref\|Var\)\|System\|Type\|Parse\|Argument\|Key\|Load\|Method\|Inexact\|OutOfMemory\|Init\|Assertion\|ReadOnlyMemory\|StringIndex\)Error\|\%(Interrupt\|Error\|ProcessExited\|Captured\|Composite\|InvalidState\|Missing\|\%(Process\|Task\)Failed\)Exception\|DimensionMismatch\|SegmentationFault\)\>"
+syntax match juliaBaseTypeIter display "\<\%(EachLine\|Enumerate\|Cartesian\%(Index\|Range\)\|LinSpace\|CartesianIndices\)\>"
+syntax match juliaBaseTypeString display "\<\%(DirectIndex\|Sub\|Rep\|Rev\|Abstract\|Substitution\)\?String\>"
+syntax match juliaBaseTypeArray display "\<\%(\%(Sub\)\?Array\|\%(Abstract\|Dense\|Strided\)\?\%(Array\|Matrix\|Vec\%(tor\|OrMat\)\)\|SparseMatrixCSC\|\%(AbstractSparse\|Bit\|Shared\)\%(Array\|Vector\|Matrix\)\|\%\(D\|Bid\|\%(Sym\)\?Trid\)iagonal\|Hermitian\|Symmetric\|UniformScaling\|\%(Lower\|Upper\)Triangular\|\%(Sparse\|Row\)Vector\|VecElement\|Conj\%(Array\|Matrix\|Vector\)\|Index\%(Cartesian\|Linear\|Style\)\|PermutedDimsArray\|Broadcasted\|Adjoint\|Transpose\|LinearIndices\)\>"
+syntax match juliaBaseTypeDict display "\<\%(WeakKey\|Id\|Abstract\)\?Dict\>"
+syntax match juliaBaseTypeSet display "\<\%(\%(Abstract\|Bit\)\?Set\)\>"
+syntax match juliaBaseTypeIO display "\<\%(IO\%(Stream\|Buffer\|Context\)\?\|RawFD\|StatStruct\|FileMonitor\|PollingFileWatcher\|Timer\|Base64\%(Decode\|Encode\)Pipe\|\%(UDP\|TCP\)Socket\|\%(Abstract\)\?Channel\|BufferStream\|ReentrantLock\|GenericIOBuffer\)\>"
+syntax match juliaBaseTypeProcess display "\<\%(Pipe\|Cmd\|PipeBuffer\)\>"
+syntax match juliaBaseTypeRange display "\<\%(Dims\|RangeIndex\|\%(Abstract\|Lin\|Ordinal\|Step\|\%(Abstract\)\?Unit\)Range\|Colon\|ExponentialBackOff\|StepRangeLen\)\>"
+syntax match juliaBaseTypeRegex display "\<Regex\%(Match\)\?\>"
+syntax match juliaBaseTypeFact display "\<\%(Factorization\|BunchKaufman\|\%(Cholesky\|QR\)\%(Pivoted\)\?\|\%(Generalized\)\?\%(Eigen\|SVD\|Schur\)\|Hessenberg\|LDLt\|LQ\|LU\)\>"
+syntax match juliaBaseTypeSort display "\<\%(Insertion\|\(Partial\)\?Quick\|Merge\)Sort\>"
+syntax match juliaBaseTypeRound display "\<Round\%(ingMode\|FromZero\|Down\|Nearest\%(Ties\%(Away\|Up\)\)\?\|ToZero\|Up\)\>"
+syntax match juliaBaseTypeSpecial display "\<\%(LocalProcess\|ClusterManager\)\>"
+syntax match juliaBaseTypeRandom display "\<\%(AbstractRNG\|MersenneTwister\|RandomDevice\)\>"
+syntax match juliaBaseTypeDisplay display "\<\%(Text\(Display\)\?\|\%(Abstract\)\?Display\|MIME\|HTML\)\>"
+syntax match juliaBaseTypeTime display "\<\%(Date\%(Time\)\?\|DateFormat\)\>"
+syntax match juliaBaseTypeOther display "\<\%(RemoteRef\|Task\|Condition\|VersionNumber\|IPv[46]\|SerializationState\|WorkerConfig\|Future\|RemoteChannel\|IPAddr\|Stack\%(Trace\|Frame\)\|\(Caching\|Worker\)Pool\|AbstractSerializer\)\>"
+
+syntax match juliaConstNum display "\%(\<\%(\%(NaN\|Inf\)\%(16\|32\|64\)\?\|pi\|Ï€\)\>\)"
+" Note: recognition of ℯ, which Vim does not consider a valid identifier, is
+" complicated. We detect possible uses by just looking for the character (for
+" performance) and then check that it's actually used by its own.
+" (This also tries to detect preceding number constants; it does so in a crude
+" way.)
+syntax match juliaPossibleEuler "ℯ" contains=juliaEuler
+exec 'syntax match juliaEuler contained "\%(\%(^\|[' . s:nonidS_chars . s:op_chars_wc . ']\)\%(.\?[0-9][.0-9eEf_]*\d\)\?\)\@'.s:d(80).'<=ℯ\ze[' . s:nonidS_chars . s:op_chars_wc . ']"'
+syntax match juliaConstBool display "\<\%(true\|false\)\>"
+syntax match juliaConstEnv display "\<\%(ARGS\|ENV\|ENDIAN_BOM\|LOAD_PATH\|VERSION\|PROGRAM_FILE\|DEPOT_PATH\)\>"
+syntax match juliaConstIO display "\<\%(std\%(out\|in\|err\)\|devnull\)\>"
+syntax match juliaConstC display "\<\%(C_NULL\)\>"
+syntax match juliaConstGeneric display "\<\%(nothing\|Main\|undef\|missing\)\>"
+
+syntax match juliaParamType contained "[^{([:space:]<>\"]\+\ze{" nextgroup=juliaCurBraBlock
+
+syntax match juliaPossibleMacro transparent "@" contains=juliaMacroCall,juliaMacroCallP,juliaPrintfMacro,juliaDocMacro,juliaDocMacroPre
+
+exec 'syntax match juliaMacro contained "@' . s:idregex . '\%(\.' . s:idregex . '\)*"'
+syntax match juliaMacro contained "@[!.~$%^*/\\|<>+-]\ze[^0-9]"
+exec 'syntax region juliaMacroCall contained transparent start="\(@' . s:idregex . '\%(\.' . s:idregex . '\)*\)\@=\1\%([^(]\|$\)" end="\ze\%([])};#]\|$\|\<for\>\|\<end\>\)" contains=@juliaExpressions,juliaMacro,juliaSymbolS,juliaQuotedParBlockS'
+exec 'syntax region juliaMacroCall contained transparent start="\(@.\)\@=\1\%([^(]\|$\)" end="\ze\%([])};#]\|$\|\<for\>\|\<end\>\)" contains=@juliaExpressions,juliaMacro,juliaSymbolS,juliaQuotedParBlockS'
+exec 'syntax region juliaMacroCallP contained transparent start="@' . s:idregex . '\%(\.' . s:idregex . '\)*(" end=")\@'.s:d(1).'<=" contains=juliaMacro,juliaParBlock'
+exec 'syntax region juliaMacroCallP contained transparent start="@.(" end=")\@'.s:d(1).'<=" contains=juliaMacro,juliaParBlock'
+
+exec 'syntax match juliaNumbers transparent "\%(^\|[' . s:nonidS_chars . s:op_chars_wc . ']\)\@'.s:d(1).'<=\d\|\.\d\|im\>" contains=juliaNumber,juliaFloat,juliaComplexUnit'
+
+"integer regexes
+let s:dec_regex = '\d\%(_\?\d\)*\%(\>\|im\>\|\ze\D\)'
+let s:hex_regex = '0x\x\%(_\?\x\)*\%(\>\|im\>\|\ze\X\)'
+let s:bin_regex = '0b[01]\%(_\?[01]\)*\%(\>\|im\>\|\ze[^01]\)'
+let s:oct_regex = '0o\o\%(_\?\o\)*\%(\>\|im\>\|\ze\O\)'
+
+let s:int_regex = '\%(' . s:hex_regex .
+ \ '\|' . s:bin_regex .
+ \ '\|' . s:oct_regex .
+ \ '\|' . s:dec_regex .
+ \ '\)'
+
+"floating point regexes
+" starting with a dot, optional exponent
+let s:float_regex1 = '\.\d\%(_\?\d\)*\%([eEf][-+]\?\d\+\)\?\%(\>\|im\>\|\ze\D\)'
+" with dot, optional exponent
+let s:float_regex2 = '\d\%(_\?\d\)*\.\%(\d\%(_\?\d\)*\)\?\%([eEf][-+]\?\d\+\)\?\%(\>\|im\>\|\ze\D\)'
+" without dot, with exponent
+let s:float_regex3 = '\d\%(_\?\d\)*[eEf][-+]\?\d\+\%(\>\|im\>\|\ze\D\)'
+
+"hex floating point numbers
+" starting with a dot
+let s:hexfloat_regex1 = '0x\.\%\(\x\%(_\?\x\)*\)\?[pP][-+]\?\d\+\%(\>\|im\>\|\ze\X\)'
+" starting with a digit
+let s:hexfloat_regex2 = '0x\x\%(_\?\x\)*\%\(\.\%\(\x\%(_\?\x\)*\)\?\)\?[pP][-+]\?\d\+\%(\>\|im\>\|\ze\X\)'
+
+let s:float_regex = '\%(' . s:float_regex3 .
+ \ '\|' . s:float_regex2 .
+ \ '\|' . s:float_regex1 .
+ \ '\|' . s:hexfloat_regex2 .
+ \ '\|' . s:hexfloat_regex1 .
+ \ '\)'
+
+exec 'syntax match juliaNumber contained "' . s:int_regex . '" contains=juliaComplexUnit'
+exec 'syntax match juliaFloat contained "' . s:float_regex . '" contains=juliaComplexUnit'
+syntax match juliaComplexUnit display contained "\<im\>"
+
+syntax match juliaRangeOperator display ":"
+exec 'syntax match juliaOperator "' . s:operators . '"'
+
+exec 'syntax region juliaTernaryRegion matchgroup=juliaTernaryOperator start="\s\zs?\ze\s" skip="\%(:\(:\|[^:[:space:]'."'".'"({[]\+\s*\ze:\)\|\%(?\s*\)\@'.s:d(6).'<=:(\)" end=":" contains=@juliaExpressions,juliaErrorSemicol'
+
+let s:interp_dollar = '\([' . s:nonidS_chars . s:op_chars_wc . '!]\|^\)\@'.s:d(1).'<=\$'
+
+exec 'syntax match juliaDollarVar display contained "' . s:interp_dollar . s:idregex . '"'
+exec 'syntax region juliaDollarPar matchgroup=juliaDollarVar contained start="' .s:interp_dollar . '(" end=")" contains=@juliaExpressions'
+exec 'syntax region juliaDollarSqBra matchgroup=juliaDollarVar contained start="' .s:interp_dollar . '\[" end="\]" contains=@juliaExpressions,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS'
+
+syntax match juliaChar "'\\\?.'" contains=juliaSpecialChar
+syntax match juliaChar display "'\\\o\{3\}'" contains=juliaOctalEscapeChar
+syntax match juliaChar display "'\\x\x\{2\}'" contains=juliaHexEscapeChar
+syntax match juliaChar display "'\\u\x\{1,4\}'" contains=juliaUniCharSmall
+syntax match juliaChar display "'\\U\x\{1,8\}'" contains=juliaUniCharLarge
+
+exec 'syntax match juliaCTransOperator "[[:space:]}' . s:nonid_chars . s:op_chars_wc . '!]\@'.s:d(1).'<!\.\?' . "'" . 'áµ€\?"'
+
+" TODO: some of these might be specialized; the rest could be just left to the
+" generic juliaStringPrefixed fallback
+syntax region juliaString matchgroup=juliaStringDelim start=+\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaStringVars,@juliaSpecialChars,@juliaSpellcheckStrings
+syntax region juliaStringPrefixed contained matchgroup=juliaStringDelim start=+[^{([:space:]<>"]\+\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaSpecialCharsRaw
+syntax region juliabString matchgroup=juliaStringDelim start=+\<b\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaSpecialChars
+syntax region juliasString matchgroup=juliaStringDelim start=+\<s\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaSpecialChars
+
+syntax region juliaDocString matchgroup=juliaDocStringDelim fold start=+^"""+ skip=+\%(\\\\\)*\\"+ end=+"""+ contains=@juliaStringVars,@juliaSpecialChars,@juliaSpellcheckDocStrings
+
+exec 'syntax region juliaPrintfMacro contained transparent start="@s\?printf(" end=")\@'.s:d(1).'<=" contains=juliaMacro,juliaPrintfParBlock'
+syntax region juliaPrintfMacro contained transparent start="@s\?printf\s\+" end="\ze\%([])};#]\|$\|\<for\>\)" contains=@juliaExprsPrintf,juliaMacro,juliaSymbolS,juliaQuotedParBlockS
+syntax region juliaPrintfParBlock contained matchgroup=juliaParDelim start="(" end=")" contains=@juliaExprsPrintf
+syntax region juliaPrintfString contained matchgroup=juliaStringDelim start=+"+ skip=+\%(\\\\\)*\\"+ end=+"+ contains=@juliaSpecialChars,@juliaPrintfChars
+
+exec 'syntax region juliaDocMacroPre contained transparent start=+@doc\s\+\%(' . s:idregex . '\%(\.' . s:idregex . '\)*\)\z("\%(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\(\z1\)\@'.s:d(3).'<=+ contains=juliaMacro,juliaDocStringMRaw'
+exec 'syntax region juliaDocMacro contained transparent start=+@doc\s\+\z("\%(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\(\z1\)\@'.s:d(3).'<=+ contains=juliaMacro,juliaDocStringM'
+syntax region juliaDocStringMRaw contained fold matchgroup=juliaDocStringDelim fold start=+\z\("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaSpellcheckDocStrings
+syntax region juliaDocStringM contained fold matchgroup=juliaDocStringDelim fold start=+\z\("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaStringVars,@juliaSpecialChars,@juliaSpellcheckDocStrings
+
+syntax region juliaShellString matchgroup=juliaStringDelim start=+`+ skip=+\%(\\\\\)*\\`+ end=+`+ contains=@juliaStringVars,juliaSpecialChar
+
+syntax cluster juliaStringVars contains=juliaStringVarsPar,juliaStringVarsSqBra,juliaStringVarsCurBra,juliaStringVarsPla
+syntax region juliaStringVarsPar contained matchgroup=juliaStringVarDelim start="$(" end=")" contains=@juliaExpressions
+syntax region juliaStringVarsSqBra contained matchgroup=juliaStringVarDelim start="$\[" end="\]" contains=@juliaExpressions,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS
+syntax region juliaStringVarsCurBra contained matchgroup=juliaStringVarDelim start="${" end="}" contains=@juliaExpressions
+exec 'syntax match juliaStringVarsPla contained "\$' . s:idregex . '"'
+
+" TODO improve RegEx
+syntax region juliaRegEx matchgroup=juliaStringDelim start=+\<r\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1[imsx]*+
+
+syntax cluster juliaSpecialChars contains=juliaSpecialChar,juliaDoubleBackslash,juliaEscapedQuote,juliaOctalEscapeChar,juliaHexEscapeChar,juliaUniCharSmall,juliaUniCharLarge
+syntax match juliaSpecialChar display contained "\\."
+syntax match juliaOctalEscapeChar display contained "\\\o\{3\}"
+syntax match juliaHexEscapeChar display contained "\\x\x\{2\}"
+syntax match juliaUniCharSmall display contained "\\u\x\{1,4\}"
+syntax match juliaUniCharLarge display contained "\\U\x\{1,8\}"
+syntax cluster juliaSpecialCharsRaw contains=juliaDoubleBackslash,juliaEscapedQuote
+syntax match juliaDoubleBackslash contained "\\\\"
+syntax match juliaEscapedQuote contained "\\\""
+
+syntax cluster juliaPrintfChars contains=juliaErrorPrintfFmt,juliaPrintfFmt
+syntax match juliaErrorPrintfFmt display contained "\\\?%."
+syntax match juliaPrintfFmt display contained "%\%(\d\+\$\)\=[-+' #0]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlLjqzt]\|ll\|hh\)\=[aAbdiuoxXDOUfFeEgGcCsSpn]"
+syntax match juliaPrintfFmt display contained "%%"
+syntax match juliaPrintfFmt display contained "\\%\%(\d\+\$\)\=[-+' #0]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlLjqzt]\|ll\|hh\)\=[aAbdiuoxXDOUfFeEgGcCsSpn]"hs=s+1
+syntax match juliaPrintfFmt display contained "\\%%"hs=s+1
+
+" this is used to restrict the search for Symbols to when colons appear at all
+" (for performance reasons)
+syntax match juliaPossibleSymbol transparent ":\ze[^:]" contains=juliaSymbol,juliaQuotedParBlock,juliaQuotedQMarkPar,juliaColon
+
+let s:quotable = '\%(' . s:idregex . '\|' . s:operators . '\|[?.]\|' . s:float_regex . '\|' . s:int_regex . '\)'
+let s:quoting_colon = '\%(\%(^\s*\|\s\{6,\}\|[' . s:nonid_chars . s:op_chars_wc . ']\s*\)\@'.s:d(6).'<=\|\%(\<\%(return\|if\|else\%(if\)\?\|while\|try\|begin\)\s\+\)\@'.s:d(9).'<=\)\zs:'
+let s:quoting_colonS = '\s\@'.s:d(1).'<=:'
+
+" note: juliaSymbolS only works within whitespace-sensitive contexts,
+" such as in macro calls without parentheses, or within square brackets.
+" It is used to override the recognition of expressions like `a :b` as
+" ranges rather than symbols in those contexts.
+" (Note that such `a :b` expressions only allows at most 5 spaces between
+" the identifier and the colon anyway.)
+
+exec 'syntax match juliaSymbol contained "' . s:quoting_colon . s:quotable . '"'
+exec 'syntax match juliaSymbolS contained "' . s:quoting_colonS . s:quotable . '"'
+
+" same as above for quoted expressions such as :(expr)
+exec 'syntax region juliaQuotedParBlock matchgroup=juliaQParDelim start="' . s:quoting_colon . '(" end=")" contains=@juliaExpressions'
+exec 'syntax match juliaQuotedQMarkPar "' . s:quoting_colon . '(\s*?\s*)" contains=juliaQuotedQMark'
+exec 'syntax region juliaQuotedParBlockS matchgroup=juliaQParDelim contained start="' . s:quoting_colonS . '(" end=")" contains=@juliaExpressions'
+
+
+syntax match juliaTypeOperatorR1 contained "[^{([:space:]<>\"]\+\%(\s*[<>]:\)\@="
+
+" force precedence over Symbols
+syntax match juliaTypeOperator contained "[<>:]:"
+exec 'syntax match juliaTypeOperatorR2 transparent "[<>:]:\s*\%(' . s:idregex . '\.\)*' . s:idregex . '" contains=juliaTypeOperator,juliaType,juliaDottedT,@juliaExpressions nextgroup=juliaTypeOperator'
+syntax match juliaIsaKeyword contained "\<isa\>"
+exec 'syntax match juliaTypeOperatorR3 transparent "\<isa\s\+\%(' . s:idregex . '\.\)*' . s:idregex . '" contains=juliaIsaKeyword,juliaType,juliaDottedT,@juliaExpressions nextgroup=juliaIsaKeyword'
+
+syntax match juliaWhereKeyword "\<where\>"
+exec 'syntax match juliaWhereR transparent "\<where\s\+' . s:idregex . '" contains=juliaWhereKeyword,juliaType,juliaDottedT,juliaIdSymbol'
+
+syntax region juliaCommentL matchgroup=juliaCommentDelim excludenl start="#\ze\%([^=]\|$\)" end="$" contains=juliaTodo,@juliaSpellcheckComments
+syntax region juliaCommentM matchgroup=juliaCommentDelim fold start="#=\ze\%([^#]\|$\)" end="=#" contains=juliaTodo,juliaCommentM,@juliaSpellcheckComments
+syntax keyword juliaTodo contained TODO FIXME XXX
+
+" detect an end-of-line with only whitespace or comments before it
+let s:eol = '\s*\%(\%(\%(#=\%(=#\@!\|[^=]\|\n\)\{-}=#\)\s*\)\+\)\?\%(#=\@!.*\)\?\n'
+
+" a trailing comma, or colon, or an empty line in an import/using/export
+" multi-line command. Used to recognize the as keyword, and for indentation
+" (this needs to take precedence over normal commas and colons, and comments)
+syntax cluster juliaContinuationItems contains=juliaContinuationComma,juliaContinuationColon,juliaContinuationNone
+exec 'syntax region juliaContinuationComma matchgroup=juliaComma contained start=",\ze'.s:eol.'" end="\n\+\ze." contains=@juliaCommentItems'
+exec 'syntax region juliaContinuationColon matchgroup=juliaColon contained start=":\ze'.s:eol.'" end="\n\+\ze." contains=@juliaCommentItems'
+exec 'syntax region juliaContinuationNone matchgroup=NONE contained start="\%(\<\%(import\|using\|export\)\>\|^\)\@'.s:d(6).'<=\ze'.s:eol.'" end="\n\+\ze." contains=@juliaCommentItems,juliaAsKeyword'
+exec 'syntax match juliaMacroName contained "@' . s:idregex . '\%(\.' . s:idregex . '\)*"'
+
+" the following are disabled by default, but
+" can be enabled by entering e.g.
+" :hi link juliaParDelim Delimiter
+hi def link juliaParDelim juliaNone
+hi def link juliaSemicolon juliaNone
+hi def link juliaComma juliaNone
+hi def link juliaFunctionCall juliaNone
+
+hi def link juliaColon juliaOperator
+
+hi def link juliaFunctionName juliaFunction
+hi def link juliaFunctionName1 juliaFunction
+hi def link juliaMacroName juliaMacro
+
+
+hi def link juliaKeyword Keyword
+hi def link juliaWhereKeyword Keyword
+hi def link juliaInfixKeyword Keyword
+hi def link juliaIsaKeyword Keyword
+hi def link juliaAsKeyword Keyword
+hi def link juliaRepKeyword Keyword
+hi def link juliaBlKeyword Keyword
+hi def link juliaConditional Conditional
+hi def link juliaRepeat Repeat
+hi def link juliaException Exception
+hi def link juliaOuter Keyword
+hi def link juliaBaseTypeBasic Type
+hi def link juliaBaseTypeNum Type
+hi def link juliaBaseTypeC Type
+hi def link juliaBaseTypeError Type
+hi def link juliaBaseTypeIter Type
+hi def link juliaBaseTypeString Type
+hi def link juliaBaseTypeArray Type
+hi def link juliaBaseTypeDict Type
+hi def link juliaBaseTypeSet Type
+hi def link juliaBaseTypeIO Type
+hi def link juliaBaseTypeProcess Type
+hi def link juliaBaseTypeRange Type
+hi def link juliaBaseTypeRegex Type
+hi def link juliaBaseTypeFact Type
+hi def link juliaBaseTypeSort Type
+hi def link juliaBaseTypeRound Type
+hi def link juliaBaseTypeSpecial Type
+hi def link juliaBaseTypeRandom Type
+hi def link juliaBaseTypeDisplay Type
+hi def link juliaBaseTypeTime Type
+hi def link juliaBaseTypeOther Type
+
+hi def link juliaType Type
+hi def link juliaParamType Type
+hi def link juliaTypeOperatorR1 Type
+
+" NOTE: deprecated constants are not highlighted as such. For once,
+" one can still legitimately use them by importing Base.MathConstants.
+" Plus, one-letter variables like `e` and `γ` can be used with other
+" meanings.
+hi def link juliaConstNum Constant
+hi def link juliaEuler Constant
+
+hi def link juliaConstEnv Constant
+hi def link juliaConstC Constant
+hi def link juliaConstLimits Constant
+hi def link juliaConstGeneric Constant
+hi def link juliaRangeKeyword Constant
+hi def link juliaConstBool Boolean
+hi def link juliaConstIO Boolean
+
+hi def link juliaComprehensionFor Keyword
+hi def link juliaComprehensionIf Keyword
+
+hi def link juliaDollarVar Identifier
+
+hi def link juliaFunction Function
+hi def link juliaMacro Macro
+hi def link juliaSymbol Identifier
+hi def link juliaSymbolS Identifier
+hi def link juliaQParDelim Identifier
+hi def link juliaQuotedQMarkPar Identifier
+hi def link juliaQuotedQMark juliaOperatorHL
+
+hi def link juliaNumber Number
+hi def link juliaFloat Float
+hi def link juliaComplexUnit Constant
+
+hi def link juliaChar Character
+
+hi def link juliaString String
+hi def link juliaStringPrefixed juliaString
+hi def link juliabString juliaString
+hi def link juliasString juliaString
+hi def link juliavString juliaString
+hi def link juliarString juliaString
+hi def link juliaipString juliaString
+hi def link juliabigString juliaString
+hi def link juliaMIMEString juliaString
+hi def link juliarawString juliaString
+hi def link juliatestString juliaString
+hi def link juliahtmlString juliaString
+hi def link juliaint128String juliaString
+hi def link juliaPrintfString juliaString
+hi def link juliaShellString juliaString
+hi def link juliaDocString juliaString
+hi def link juliaDocStringM juliaDocString
+hi def link juliaDocStringMRaw juliaDocString
+hi def link juliaStringDelim juliaString
+hi def link juliaDocStringDelim juliaDocString
+hi def link juliaStringVarsPla Identifier
+hi def link juliaStringVarDelim Identifier
+
+hi def link juliaRegEx String
+
+hi def link juliaSpecialChar SpecialChar
+hi def link juliaOctalEscapeChar SpecialChar
+hi def link juliaHexEscapeChar SpecialChar
+hi def link juliaUniCharSmall SpecialChar
+hi def link juliaUniCharLarge SpecialChar
+hi def link juliaDoubleBackslash SpecialChar
+hi def link juliaEscapedQuote SpecialChar
+
+hi def link juliaPrintfFmt SpecialChar
+
+if s:julia_highlight_operators
+ hi! def link juliaOperatorHL Operator
+else
+ hi! def link juliaOperatorHL juliaNone
+endif
+hi def link juliaOperator juliaOperatorHL
+hi def link juliaRangeOperator juliaOperatorHL
+hi def link juliaCTransOperator juliaOperatorHL
+hi def link juliaTernaryOperator juliaOperatorHL
+hi def link juliaTypeOperator juliaOperatorHL
+
+hi def link juliaCommentL Comment
+hi def link juliaCommentM Comment
+hi def link juliaCommentDelim Comment
+hi def link juliaTodo Todo
+
+hi def link juliaErrorPar juliaError
+hi def link juliaErrorEnd juliaError
+hi def link juliaErrorElse juliaError
+hi def link juliaErrorCatch juliaError
+hi def link juliaErrorFinally juliaError
+hi def link juliaErrorSemicol juliaError
+hi def link juliaErrorPrintfFmt juliaError
+
+hi def link juliaError Error
+
+syntax sync fromstart
+
+let b:current_syntax = "julia"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/kconfig.vim b/runtime/syntax/kconfig.vim
new file mode 100644
index 0000000..c7a305b
--- /dev/null
+++ b/runtime/syntax/kconfig.vim
@@ -0,0 +1,739 @@
+" Vim syntax file
+" Maintainer: Christian Brabandt <cb@256bit.org>
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2015-05-29
+" License: Vim (see :h license)
+" Repository: https://github.com/chrisbra/vim-kconfig
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+if exists("g:kconfig_syntax_heavy")
+
+syn match kconfigBegin '^' nextgroup=kconfigKeyword
+ \ skipwhite
+
+syn keyword kconfigTodo contained TODO FIXME XXX NOTE
+
+syn match kconfigComment display '#.*$' contains=kconfigTodo
+
+syn keyword kconfigKeyword config nextgroup=kconfigSymbol
+ \ skipwhite
+
+syn keyword kconfigKeyword menuconfig nextgroup=kconfigSymbol
+ \ skipwhite
+
+syn keyword kconfigKeyword comment menu mainmenu
+ \ nextgroup=kconfigKeywordPrompt
+ \ skipwhite
+
+syn keyword kconfigKeyword choice
+ \ nextgroup=@kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn keyword kconfigKeyword endmenu endchoice
+
+syn keyword kconfigPreProc source
+ \ nextgroup=kconfigPath
+ \ skipwhite
+
+" TODO: This is a hack. The who .*Expr stuff should really be generated so
+" that we can reuse it for various nextgroups.
+syn keyword kconfigConditional if endif
+ \ nextgroup=@kconfigConfigOptionIfExpr
+ \ skipwhite
+
+syn match kconfigKeywordPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=@kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigPath '"[^"\\]*\%(\\.[^"\\]*\)*"\|\S\+'
+ \ contained
+
+syn match kconfigSymbol '\<\k\+\>'
+ \ contained
+ \ nextgroup=@kconfigConfigOptions
+ \ skipwhite skipnl
+
+" FIXME: There is – probably – no reason to cluster these instead of just
+" defining them in the same group.
+syn cluster kconfigConfigOptions contains=kconfigTypeDefinition,
+ \ kconfigInputPrompt,
+ \ kconfigDefaultValue,
+ \ kconfigDependencies,
+ \ kconfigReverseDependencies,
+ \ kconfigNumericalRanges,
+ \ kconfigHelpText,
+ \ kconfigDefBool,
+ \ kconfigOptional
+
+syn keyword kconfigTypeDefinition bool boolean tristate string hex int
+ \ contained
+ \ nextgroup=kconfigTypeDefPrompt,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigTypeDefPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigTypeDefPrompt "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn keyword kconfigInputPrompt prompt
+ \ contained
+ \ nextgroup=kconfigPromptPrompt
+ \ skipwhite
+
+syn match kconfigPromptPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigPromptPrompt "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn keyword kconfigDefaultValue default
+ \ contained
+ \ nextgroup=@kconfigConfigOptionExpr
+ \ skipwhite
+
+syn match kconfigDependencies 'depends on\|requires'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfExpr
+ \ skipwhite
+
+syn keyword kconfigReverseDependencies select
+ \ contained
+ \ nextgroup=@kconfigRevDepSymbol
+ \ skipwhite
+
+syn cluster kconfigRevDepSymbol contains=kconfigRevDepCSymbol,
+ \ kconfigRevDepNCSymbol
+
+syn match kconfigRevDepCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigRevDepCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigRevDepNCSymbol '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn keyword kconfigNumericalRanges range
+ \ contained
+ \ nextgroup=@kconfigRangeSymbol
+ \ skipwhite
+
+syn cluster kconfigRangeSymbol contains=kconfigRangeCSymbol,
+ \ kconfigRangeNCSymbol
+
+syn match kconfigRangeCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=@kconfigRangeSymbol2
+ \ skipwhite skipnl
+
+syn match kconfigRangeCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=@kconfigRangeSymbol2
+ \ skipwhite skipnl
+
+syn match kconfigRangeNCSymbol '\<\k\+\>'
+ \ contained
+ \ nextgroup=@kconfigRangeSymbol2
+ \ skipwhite skipnl
+
+syn cluster kconfigRangeSymbol2 contains=kconfigRangeCSymbol2,
+ \ kconfigRangeNCSymbol2
+
+syn match kconfigRangeCSymbol2 "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigRangeNCSymbol2 '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn region kconfigHelpText contained
+ \ matchgroup=kconfigConfigOption
+ \ start='\%(help\|---help---\)\ze\s*\n\z(\s\+\)'
+ \ skip='^$'
+ \ end='^\z1\@!'
+ \ nextgroup=@kconfigConfigOptions
+ \ skipwhite skipnl
+
+" XXX: Undocumented
+syn keyword kconfigDefBool def_bool
+ \ contained
+ \ nextgroup=@kconfigDefBoolSymbol
+ \ skipwhite
+
+syn cluster kconfigDefBoolSymbol contains=kconfigDefBoolCSymbol,
+ \ kconfigDefBoolNCSymbol
+
+syn match kconfigDefBoolCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigDefBoolCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigDefBoolNCSymbol '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+" XXX: This is actually only a valid option for “choiceâ€, but treating it
+" specially would require a lot of extra groups.
+syn keyword kconfigOptional optional
+ \ contained
+ \ nextgroup=@kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn keyword kconfigConfigOptionIf if
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfExpr
+ \ skipwhite
+
+syn cluster kconfigConfigOptionIfExpr contains=@kconfigConfOptIfExprSym,
+ \ kconfigConfOptIfExprNeg,
+ \ kconfigConfOptIfExprGroup
+
+syn cluster kconfigConfOptIfExprSym contains=kconfigConfOptIfExprCSym,
+ \ kconfigConfOptIfExprNCSym
+
+syn match kconfigConfOptIfExprCSym '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=@kconfigConfigOptions,
+ \ kconfigConfOptIfExprAnd,
+ \ kconfigConfOptIfExprOr,
+ \ kconfigConfOptIfExprEq,
+ \ kconfigConfOptIfExprNEq
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfExprCSym "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=@kconfigConfigOptions,
+ \ kconfigConfOptIfExprAnd,
+ \ kconfigConfOptIfExprOr,
+ \ kconfigConfOptIfExprEq,
+ \ kconfigConfOptIfExprNEq
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfExprNCSym '\<\k\+\>'
+ \ contained
+ \ nextgroup=@kconfigConfigOptions,
+ \ kconfigConfOptIfExprAnd,
+ \ kconfigConfOptIfExprOr,
+ \ kconfigConfOptIfExprEq,
+ \ kconfigConfOptIfExprNEq
+ \ skipwhite skipnl
+
+syn cluster kconfigConfOptIfExprSym2 contains=kconfigConfOptIfExprCSym2,
+ \ kconfigConfOptIfExprNCSym2
+
+syn match kconfigConfOptIfExprEq '='
+ \ contained
+ \ nextgroup=@kconfigConfOptIfExprSym2
+ \ skipwhite
+
+syn match kconfigConfOptIfExprNEq '!='
+ \ contained
+ \ nextgroup=@kconfigConfOptIfExprSym2
+ \ skipwhite
+
+syn match kconfigConfOptIfExprCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=@kconfigConfigOptions,
+ \ kconfigConfOptIfExprAnd,
+ \ kconfigConfOptIfExprOr
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfExprNCSym2 '\<\k\+\>'
+ \ contained
+ \ nextgroup=@kconfigConfigOptions,
+ \ kconfigConfOptIfExprAnd,
+ \ kconfigConfOptIfExprOr
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfExprNeg '!'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfExpr
+ \ skipwhite
+
+syn match kconfigConfOptIfExprAnd '&&'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfExpr
+ \ skipwhite
+
+syn match kconfigConfOptIfExprOr '||'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfExpr
+ \ skipwhite
+
+syn match kconfigConfOptIfExprGroup '('
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfGExp
+ \ skipwhite
+
+" TODO: hm, this kind of recursion doesn't work right. We need another set of
+" expressions that have kconfigConfigOPtionIfGExp as nextgroup and a matcher
+" for '(' that sets it all off.
+syn cluster kconfigConfigOptionIfGExp contains=@kconfigConfOptIfGExpSym,
+ \ kconfigConfOptIfGExpNeg,
+ \ kconfigConfOptIfExprGroup
+
+syn cluster kconfigConfOptIfGExpSym contains=kconfigConfOptIfGExpCSym,
+ \ kconfigConfOptIfGExpNCSym
+
+syn match kconfigConfOptIfGExpCSym '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=@kconfigConfigIf,
+ \ kconfigConfOptIfGExpAnd,
+ \ kconfigConfOptIfGExpOr,
+ \ kconfigConfOptIfGExpEq,
+ \ kconfigConfOptIfGExpNEq
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfGExpCSym "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=@kconfigConfigIf,
+ \ kconfigConfOptIfGExpAnd,
+ \ kconfigConfOptIfGExpOr,
+ \ kconfigConfOptIfGExpEq,
+ \ kconfigConfOptIfGExpNEq
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfGExpNCSym '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfOptIfExprGrpE,
+ \ kconfigConfOptIfGExpAnd,
+ \ kconfigConfOptIfGExpOr,
+ \ kconfigConfOptIfGExpEq,
+ \ kconfigConfOptIfGExpNEq
+ \ skipwhite skipnl
+
+syn cluster kconfigConfOptIfGExpSym2 contains=kconfigConfOptIfGExpCSym2,
+ \ kconfigConfOptIfGExpNCSym2
+
+syn match kconfigConfOptIfGExpEq '='
+ \ contained
+ \ nextgroup=@kconfigConfOptIfGExpSym2
+ \ skipwhite
+
+syn match kconfigConfOptIfGExpNEq '!='
+ \ contained
+ \ nextgroup=@kconfigConfOptIfGExpSym2
+ \ skipwhite
+
+syn match kconfigConfOptIfGExpCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfOptIfExprGrpE,
+ \ kconfigConfOptIfGExpAnd,
+ \ kconfigConfOptIfGExpOr
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfGExpCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfOptIfExprGrpE,
+ \ kconfigConfOptIfGExpAnd,
+ \ kconfigConfOptIfGExpOr
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfGExpNCSym2 '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfOptIfExprGrpE,
+ \ kconfigConfOptIfGExpAnd,
+ \ kconfigConfOptIfGExpOr
+ \ skipwhite skipnl
+
+syn match kconfigConfOptIfGExpNeg '!'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfGExp
+ \ skipwhite
+
+syn match kconfigConfOptIfGExpAnd '&&'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfGExp
+ \ skipwhite
+
+syn match kconfigConfOptIfGExpOr '||'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionIfGExp
+ \ skipwhite
+
+syn match kconfigConfOptIfExprGrpE ')'
+ \ contained
+ \ nextgroup=@kconfigConfigOptions,
+ \ kconfigConfOptIfExprAnd,
+ \ kconfigConfOptIfExprOr
+ \ skipwhite skipnl
+
+
+syn cluster kconfigConfigOptionExpr contains=@kconfigConfOptExprSym,
+ \ kconfigConfOptExprNeg,
+ \ kconfigConfOptExprGroup
+
+syn cluster kconfigConfOptExprSym contains=kconfigConfOptExprCSym,
+ \ kconfigConfOptExprNCSym
+
+syn match kconfigConfOptExprCSym '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ kconfigConfOptExprAnd,
+ \ kconfigConfOptExprOr,
+ \ kconfigConfOptExprEq,
+ \ kconfigConfOptExprNEq,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigConfOptExprCSym "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ kconfigConfOptExprAnd,
+ \ kconfigConfOptExprOr,
+ \ kconfigConfOptExprEq,
+ \ kconfigConfOptExprNEq,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigConfOptExprNCSym '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ kconfigConfOptExprAnd,
+ \ kconfigConfOptExprOr,
+ \ kconfigConfOptExprEq,
+ \ kconfigConfOptExprNEq,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn cluster kconfigConfOptExprSym2 contains=kconfigConfOptExprCSym2,
+ \ kconfigConfOptExprNCSym2
+
+syn match kconfigConfOptExprEq '='
+ \ contained
+ \ nextgroup=@kconfigConfOptExprSym2
+ \ skipwhite
+
+syn match kconfigConfOptExprNEq '!='
+ \ contained
+ \ nextgroup=@kconfigConfOptExprSym2
+ \ skipwhite
+
+syn match kconfigConfOptExprCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ kconfigConfOptExprAnd,
+ \ kconfigConfOptExprOr,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigConfOptExprCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ kconfigConfOptExprAnd,
+ \ kconfigConfOptExprOr,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigConfOptExprNCSym2 '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ kconfigConfOptExprAnd,
+ \ kconfigConfOptExprOr,
+ \ @kconfigConfigOptions
+ \ skipwhite skipnl
+
+syn match kconfigConfOptExprNeg '!'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionExpr
+ \ skipwhite
+
+syn match kconfigConfOptExprAnd '&&'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionExpr
+ \ skipwhite
+
+syn match kconfigConfOptExprOr '||'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionExpr
+ \ skipwhite
+
+syn match kconfigConfOptExprGroup '('
+ \ contained
+ \ nextgroup=@kconfigConfigOptionGExp
+ \ skipwhite
+
+syn cluster kconfigConfigOptionGExp contains=@kconfigConfOptGExpSym,
+ \ kconfigConfOptGExpNeg,
+ \ kconfigConfOptGExpGroup
+
+syn cluster kconfigConfOptGExpSym contains=kconfigConfOptGExpCSym,
+ \ kconfigConfOptGExpNCSym
+
+syn match kconfigConfOptGExpCSym '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfOptExprGrpE,
+ \ kconfigConfOptGExpAnd,
+ \ kconfigConfOptGExpOr,
+ \ kconfigConfOptGExpEq,
+ \ kconfigConfOptGExpNEq
+ \ skipwhite skipnl
+
+syn match kconfigConfOptGExpCSym "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfOptExprGrpE,
+ \ kconfigConfOptGExpAnd,
+ \ kconfigConfOptGExpOr,
+ \ kconfigConfOptGExpEq,
+ \ kconfigConfOptGExpNEq
+ \ skipwhite skipnl
+
+syn match kconfigConfOptGExpNCSym '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfOptExprGrpE,
+ \ kconfigConfOptGExpAnd,
+ \ kconfigConfOptGExpOr,
+ \ kconfigConfOptGExpEq,
+ \ kconfigConfOptGExpNEq
+ \ skipwhite skipnl
+
+syn cluster kconfigConfOptGExpSym2 contains=kconfigConfOptGExpCSym2,
+ \ kconfigConfOptGExpNCSym2
+
+syn match kconfigConfOptGExpEq '='
+ \ contained
+ \ nextgroup=@kconfigConfOptGExpSym2
+ \ skipwhite
+
+syn match kconfigConfOptGExpNEq '!='
+ \ contained
+ \ nextgroup=@kconfigConfOptGExpSym2
+ \ skipwhite
+
+syn match kconfigConfOptGExpCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"'
+ \ contained
+ \ nextgroup=kconfigConfOptExprGrpE,
+ \ kconfigConfOptGExpAnd,
+ \ kconfigConfOptGExpOr
+ \ skipwhite skipnl
+
+syn match kconfigConfOptGExpCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'"
+ \ contained
+ \ nextgroup=kconfigConfOptExprGrpE,
+ \ kconfigConfOptGExpAnd,
+ \ kconfigConfOptGExpOr
+ \ skipwhite skipnl
+
+syn match kconfigConfOptGExpNCSym2 '\<\k\+\>'
+ \ contained
+ \ nextgroup=kconfigConfOptExprGrpE,
+ \ kconfigConfOptGExpAnd,
+ \ kconfigConfOptGExpOr
+ \ skipwhite skipnl
+
+syn match kconfigConfOptGExpNeg '!'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionGExp
+ \ skipwhite
+
+syn match kconfigConfOptGExpAnd '&&'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionGExp
+ \ skipwhite
+
+syn match kconfigConfOptGExpOr '||'
+ \ contained
+ \ nextgroup=@kconfigConfigOptionGExp
+ \ skipwhite
+
+syn match kconfigConfOptExprGrpE ')'
+ \ contained
+ \ nextgroup=kconfigConfigOptionIf,
+ \ kconfigConfOptExprAnd,
+ \ kconfigConfOptExprOr
+ \ skipwhite skipnl
+
+syn sync minlines=50
+
+hi def link kconfigTodo Todo
+hi def link kconfigComment Comment
+hi def link kconfigKeyword Keyword
+hi def link kconfigPreProc PreProc
+hi def link kconfigConditional Conditional
+hi def link kconfigPrompt String
+hi def link kconfigKeywordPrompt kconfigPrompt
+hi def link kconfigPath String
+hi def link kconfigSymbol String
+hi def link kconfigConstantSymbol Constant
+hi def link kconfigConfigOption Type
+hi def link kconfigTypeDefinition kconfigConfigOption
+hi def link kconfigTypeDefPrompt kconfigPrompt
+hi def link kconfigInputPrompt kconfigConfigOption
+hi def link kconfigPromptPrompt kconfigPrompt
+hi def link kconfigDefaultValue kconfigConfigOption
+hi def link kconfigDependencies kconfigConfigOption
+hi def link kconfigReverseDependencies kconfigConfigOption
+hi def link kconfigRevDepCSymbol kconfigConstantSymbol
+hi def link kconfigRevDepNCSymbol kconfigSymbol
+hi def link kconfigNumericalRanges kconfigConfigOption
+hi def link kconfigRangeCSymbol kconfigConstantSymbol
+hi def link kconfigRangeNCSymbol kconfigSymbol
+hi def link kconfigRangeCSymbol2 kconfigConstantSymbol
+hi def link kconfigRangeNCSymbol2 kconfigSymbol
+hi def link kconfigHelpText Normal
+hi def link kconfigDefBool kconfigConfigOption
+hi def link kconfigDefBoolCSymbol kconfigConstantSymbol
+hi def link kconfigDefBoolNCSymbol kconfigSymbol
+hi def link kconfigOptional kconfigConfigOption
+hi def link kconfigConfigOptionIf Conditional
+hi def link kconfigConfOptIfExprCSym kconfigConstantSymbol
+hi def link kconfigConfOptIfExprNCSym kconfigSymbol
+hi def link kconfigOperator Operator
+hi def link kconfigConfOptIfExprEq kconfigOperator
+hi def link kconfigConfOptIfExprNEq kconfigOperator
+hi def link kconfigConfOptIfExprCSym2 kconfigConstantSymbol
+hi def link kconfigConfOptIfExprNCSym2 kconfigSymbol
+hi def link kconfigConfOptIfExprNeg kconfigOperator
+hi def link kconfigConfOptIfExprAnd kconfigOperator
+hi def link kconfigConfOptIfExprOr kconfigOperator
+hi def link kconfigDelimiter Delimiter
+hi def link kconfigConfOptIfExprGroup kconfigDelimiter
+hi def link kconfigConfOptIfGExpCSym kconfigConstantSymbol
+hi def link kconfigConfOptIfGExpNCSym kconfigSymbol
+hi def link kconfigConfOptIfGExpEq kconfigOperator
+hi def link kconfigConfOptIfGExpNEq kconfigOperator
+hi def link kconfigConfOptIfGExpCSym2 kconfigConstantSymbol
+hi def link kconfigConfOptIfGExpNCSym2 kconfigSymbol
+hi def link kconfigConfOptIfGExpNeg kconfigOperator
+hi def link kconfigConfOptIfGExpAnd kconfigOperator
+hi def link kconfigConfOptIfGExpOr kconfigOperator
+hi def link kconfigConfOptIfExprGrpE kconfigDelimiter
+hi def link kconfigConfOptExprCSym kconfigConstantSymbol
+hi def link kconfigConfOptExprNCSym kconfigSymbol
+hi def link kconfigConfOptExprEq kconfigOperator
+hi def link kconfigConfOptExprNEq kconfigOperator
+hi def link kconfigConfOptExprCSym2 kconfigConstantSymbol
+hi def link kconfigConfOptExprNCSym2 kconfigSymbol
+hi def link kconfigConfOptExprNeg kconfigOperator
+hi def link kconfigConfOptExprAnd kconfigOperator
+hi def link kconfigConfOptExprOr kconfigOperator
+hi def link kconfigConfOptExprGroup kconfigDelimiter
+hi def link kconfigConfOptGExpCSym kconfigConstantSymbol
+hi def link kconfigConfOptGExpNCSym kconfigSymbol
+hi def link kconfigConfOptGExpEq kconfigOperator
+hi def link kconfigConfOptGExpNEq kconfigOperator
+hi def link kconfigConfOptGExpCSym2 kconfigConstantSymbol
+hi def link kconfigConfOptGExpNCSym2 kconfigSymbol
+hi def link kconfigConfOptGExpNeg kconfigOperator
+hi def link kconfigConfOptGExpAnd kconfigOperator
+hi def link kconfigConfOptGExpOr kconfigOperator
+hi def link kconfigConfOptExprGrpE kconfigConfOptIfExprGroup
+
+else
+
+syn keyword kconfigTodo contained TODO FIXME XXX NOTE
+
+syn match kconfigComment display '#.*$' contains=kconfigTodo
+
+syn keyword kconfigKeyword config menuconfig comment mainmenu
+
+syn keyword kconfigConditional menu endmenu choice endchoice if endif
+
+syn keyword kconfigPreProc source
+ \ nextgroup=kconfigPath
+ \ skipwhite
+
+syn keyword kconfigTriState y m n
+
+syn match kconfigSpecialChar contained '\\.'
+syn match kconfigSpecialChar '\\$'
+
+syn region kconfigPath matchgroup=kconfigPath
+ \ start=+"+ skip=+\\\\\|\\\"+ end=+"+
+ \ contains=kconfigSpecialChar
+
+syn region kconfigPath matchgroup=kconfigPath
+ \ start=+'+ skip=+\\\\\|\\\'+ end=+'+
+ \ contains=kconfigSpecialChar
+
+syn match kconfigPath '\S\+'
+ \ contained
+
+syn region kconfigString matchgroup=kconfigString
+ \ start=+"+ skip=+\\\\\|\\\"+ end=+"+
+ \ contains=kconfigSpecialChar
+
+syn region kconfigString matchgroup=kconfigString
+ \ start=+'+ skip=+\\\\\|\\\'+ end=+'+
+ \ contains=kconfigSpecialChar
+
+syn keyword kconfigType bool boolean tristate string hex int
+
+syn keyword kconfigOption prompt default requires select range
+ \ optional
+syn match kconfigOption 'depends\%( on\)\='
+
+syn keyword kconfigMacro def_bool def_tristate
+
+syn region kconfigHelpText
+ \ matchgroup=kconfigOption
+ \ start='\%(help\|---help---\)\ze\s*\n\z(\s\+\)'
+ \ skip='^$'
+ \ end='^\z1\@!'
+
+syn sync match kconfigSyncHelp grouphere kconfigHelpText 'help\|---help---'
+
+hi def link kconfigTodo Todo
+hi def link kconfigComment Comment
+hi def link kconfigKeyword Keyword
+hi def link kconfigConditional Conditional
+hi def link kconfigPreProc PreProc
+hi def link kconfigTriState Boolean
+hi def link kconfigSpecialChar SpecialChar
+hi def link kconfigPath String
+hi def link kconfigString String
+hi def link kconfigType Type
+hi def link kconfigOption Identifier
+hi def link kconfigHelpText Normal
+hi def link kconfigmacro Macro
+
+endif
+
+let b:current_syntax = "kconfig"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/kivy.vim b/runtime/syntax/kivy.vim
new file mode 100644
index 0000000..b145503
--- /dev/null
+++ b/runtime/syntax/kivy.vim
@@ -0,0 +1,36 @@
+" Vim syntax file
+" Language: Kivy
+" Maintainer: Corey Prophitt <prophitt.corey@gmail.com>
+" Last Change: May 29th, 2014
+" Version: 1
+" URL: http://kivy.org/
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" Load Python syntax first (Python can be used within Kivy)
+syn include @pyth $VIMRUNTIME/syntax/python.vim
+
+" Kivy language rules can be found here
+" http://kivy.org/docs/guide/lang.html
+
+" Define Kivy syntax
+syn match kivyPreProc /#:.*/
+syn match kivyComment /#.*/
+syn match kivyRule /<\I\i*\(,\s*\I\i*\)*>:/
+syn match kivyAttribute /\<\I\i*\>/ nextgroup=kivyValue
+
+syn region kivyValue start=":" end=/$/ contains=@pyth skipwhite
+
+syn region kivyAttribute matchgroup=kivyIdent start=/[\a_][\a\d_]*:/ end=/$/ contains=@pyth skipwhite
+
+hi def link kivyPreproc PreProc
+hi def link kivyComment Comment
+hi def link kivyRule Function
+hi def link kivyIdent Statement
+hi def link kivyAttribute Label
+
+let b:current_syntax = "kivy"
+
+" vim: ts=8
diff --git a/runtime/syntax/kix.vim b/runtime/syntax/kix.vim
new file mode 100644
index 0000000..dd74378
--- /dev/null
+++ b/runtime/syntax/kix.vim
@@ -0,0 +1,170 @@
+" Vim syntax file
+" Language: KixTart 95, Kix2001 Windows script language http://kixtart.org/
+" Maintainer: Richard Howarth <rhowarth@sgb.co.uk>
+" Last Change: 2003 May 11
+" URL: http://www.howsoft.demon.co.uk/
+
+" KixTart files identified by *.kix extension.
+
+" Amendment History:
+" 26 April 2001: RMH
+" Removed development comments from distro version
+" Renamed "Kix*" to "kix*" for consistancy
+" Changes made in preperation for VIM version 5.8/6.00
+
+" TODO:
+" Handle arrays highlighting
+" Handle object highlighting
+" The next two may not be possible:
+" Work out how to error too many "(", i.e. (() should be an error.
+" Similarly, "if" without "endif" and similar constructs should error.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+syn keyword kixTODO TODO FIX XXX contained
+
+" Case insensitive language.
+syn case ignore
+
+" Kix statements
+syn match kixStatement "?"
+syn keyword kixStatement beep big break
+syn keyword kixStatement call cd cls color cookie1 copy
+syn keyword kixStatement del dim display
+syn keyword kixStatement exit
+syn keyword kixStatement flushkb
+syn keyword kixStatement get gets global go gosub goto
+syn keyword kixStatement md
+syn keyword kixStatement password play
+syn keyword kixStatement quit
+syn keyword kixStatement rd return run
+syn keyword kixStatement set setl setm settime shell sleep small
+syn keyword kixStatement use
+
+" Kix2001
+syn keyword kixStatement debug function endfunction redim
+
+" Simple variables
+syn match kixNotVar "\$\$\|@@\|%%" transparent contains=NONE
+syn match kixLocalVar "\$\w\+"
+syn match kixMacro "@\w\+"
+syn match kixEnvVar "%\w\+"
+
+" Destination labels
+syn match kixLabel ":\w\+\>"
+
+" Identify strings, trap unterminated strings
+syn match kixStringError +".*\|'.*+
+syn region kixDoubleString oneline start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar
+syn region kixSingleString oneline start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar
+
+" Operators
+syn match kixOperator "+\|-\|\*\|/\|=\|&\||"
+syn keyword kixOperator and or
+" Kix2001
+syn match kixOperator "=="
+syn keyword kixOperator not
+
+" Numeric constants
+syn match kixInteger "-\=\<\d\+\>" contains=NONE
+syn match kixFloat "-\=\.\d\+\>\|-\=\<\d\+\.\d\+\>" contains=NONE
+
+" Hex numeric constants
+syn match kixHex "\&\x\+\>" contains=NONE
+
+" Other contants
+" Kix2001
+syn keyword kixConstant on off
+
+" Comments
+syn match kixComment ";.*$" contains=kixTODO
+
+" Trap unmatched parenthesis
+syn match kixParenCloseError ")"
+syn region kixParen oneline transparent start="(" end=")" contains=ALLBUT,kixParenCloseError
+
+" Functions (Builtin + UDF)
+syn match kixFunction "\w\+("he=e-1,me=e-1 contains=ALL
+
+" Trap unmatched brackets
+syn match kixBrackCloseError "\]"
+syn region kixBrack transparent start="\[" end="\]" contains=ALLBUT,kixBrackCloseError
+
+" Clusters for ALLBUT shorthand
+syn cluster kixIfBut contains=kixIfError,kixSelectOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK
+syn cluster kixSelectBut contains=kixSelectError,kixIfOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK
+syn cluster kixDoBut contains=kixDoError,kixSelectOK,kixIfOK,kixWhileOK,kixForEachOK,kixForNextOK
+syn cluster kixWhileBut contains=kixWhileError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixForNextOK
+syn cluster kixForEachBut contains=kixForEachError,kixSelectOK,kixIfOK,kixDoOK,kixForNextOK,kixWhileOK
+syn cluster kixForNextBut contains=kixForNextError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixWhileOK
+" Condtional construct errors.
+syn match kixIfError "\<if\>\|\<else\>\|\<endif\>"
+syn match kixIfOK contained "\<if\>\|\<else\>\|\<endif\>"
+syn region kixIf transparent matchgroup=kixIfOK start="\<if\>" end="\<endif\>" contains=ALLBUT,@kixIfBut
+syn match kixSelectError "\<select\>\|\<case\>\|\<endselect\>"
+syn match kixSelectOK contained "\<select\>\|\<case\>\|\<endselect\>"
+syn region kixSelect transparent matchgroup=kixSelectOK start="\<select\>" end="\<endselect\>" contains=ALLBUT,@kixSelectBut
+
+" Program control constructs.
+syn match kixDoError "\<do\>\|\<until\>"
+syn match kixDoOK contained "\<do\>\|\<until\>"
+syn region kixDo transparent matchgroup=kixDoOK start="\<do\>" end="\<until\>" contains=ALLBUT,@kixDoBut
+syn match kixWhileError "\<while\>\|\<loop\>"
+syn match kixWhileOK contained "\<while\>\|\<loop\>"
+syn region kixWhile transparent matchgroup=kixWhileOK start="\<while\>" end="\<loop\>" contains=ALLBUT,@kixWhileBut
+syn match kixForNextError "\<for\>\|\<to\>\|\<step\>\|\<next\>"
+syn match kixForNextOK contained "\<for\>\|\<to\>\|\<step\>\|\<next\>"
+syn region kixForNext transparent matchgroup=kixForNextOK start="\<for\>" end="\<next\>" contains=ALLBUT,@kixForBut
+syn match kixForEachError "\<for each\>\|\<in\>\|\<next\>"
+syn match kixForEachOK contained "\<for each\>\|\<in\>\|\<next\>"
+syn region kixForEach transparent matchgroup=kixForEachOK start="\<for each\>" end="\<next\>" contains=ALLBUT,@kixForEachBut
+
+" Expressions
+syn match kixExpression "<\|>\|<=\|>=\|<>"
+
+
+" Default highlighting.
+" Set default highlight only if it doesn't already have a value.
+
+hi def link kixDoubleString String
+hi def link kixSingleString String
+hi def link kixStatement Statement
+hi def link kixRepeat Repeat
+hi def link kixComment Comment
+hi def link kixBuiltin Function
+hi def link kixLocalVar Special
+hi def link kixMacro Special
+hi def link kixEnvVar Special
+hi def link kixLabel Type
+hi def link kixFunction Function
+hi def link kixInteger Number
+hi def link kixHex Number
+hi def link kixFloat Number
+hi def link kixOperator Operator
+hi def link kixExpression Operator
+
+hi def link kixParenCloseError Error
+hi def link kixBrackCloseError Error
+hi def link kixStringError Error
+
+hi def link kixWhileError Error
+hi def link kixWhileOK Conditional
+hi def link kixDoError Error
+hi def link kixDoOK Conditional
+hi def link kixIfError Error
+hi def link kixIfOK Conditional
+hi def link kixSelectError Error
+hi def link kixSelectOK Conditional
+hi def link kixForNextError Error
+hi def link kixForNextOK Conditional
+hi def link kixForEachError Error
+hi def link kixForEachOK Conditional
+
+
+let b:current_syntax = "kix"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/krl.vim b/runtime/syntax/krl.vim
new file mode 100644
index 0000000..a507908
--- /dev/null
+++ b/runtime/syntax/krl.vim
@@ -0,0 +1,458 @@
+" Vim syntax file
+" Language: Kuka Robot Language
+" Maintainer: Patrick Meiser-Knosowski <knosowski@graeffrobotics.de>
+" Version: 3.0.0
+" Last Change: 18. Apr 2022
+" Credits: Thanks for contributions to this to Michael Jagusch
+" Thanks for beta testing to Thomas Baginski
+"
+" Note to self:
+" for testing perfomance
+" open a 1000 lines file.
+" :syntime on
+" G
+" hold down CTRL-U until reaching top
+" :syntime report
+
+" Init {{{
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:keepcpo = &cpo
+set cpo&vim
+
+" if colorscheme is tortus(less)? krlGroupName defaults to 1
+if get(g:, 'colors_name', " ") =~ '\<tortus'
+ \&& !exists("g:krlGroupName")
+ let g:krlGroupName=1
+endif
+" krlGroupName defaults to 0 if it's not initialized yet or 0
+if !get(g:, "krlGroupName", 0)
+ let g:krlGroupName = 0
+endif
+
+" krl does ignore case
+syn case ignore
+" take #, $ and & into keyword (syntax only)
+syn iskeyword @,48-57,_,192-255,#,$,&
+" spell checking
+syn spell notoplevel
+" }}} init
+
+" Comment and Folding {{{
+
+" Special Comment
+
+" TODO Comment
+syn keyword krlTodo contained TODO FIXME XXX
+highlight default link krlTodo Todo
+
+" Debug Comment
+syn keyword krlDebug contained DEBUG
+highlight default link krlDebug Debug
+
+" Comment
+" none move fold comment until second ;
+syn match krlFoldComment /\c\v^\s*;\s*%(end)?fold>[^;]*/ containedin=krlFold contains=krlSingleQuoteString,krlInteger,krlFloat,krlMovement,krlDelimiter,krlBoolean
+highlight default link krlFoldComment Comment
+
+" move fold comment until second ;
+syn match krlMoveFoldComment /\c\v^\s*;\s*fold>[^;]*<s?%(ptp|lin|circ|spl)(_rel)?>[^;]*/ containedin=krlFold contains=krlInteger,krlFloat,krlMovement,krlDelimiter
+highlight default link krlMoveFoldComment Comment
+
+" things to highlight in a fold line
+syn keyword krlFoldHighlights CONT IN SYN OUT containedin=krlFoldComment
+syn match krlFoldHighlights /\c\v<(M|F|E|A|t|i|bin|binin|UP|SPSMAKRO)\d+>/ containedin=krlFoldComment
+if g:krlGroupName
+ highlight default link krlFoldHighlights Sysvars
+else
+ " default color for Fold Highlights
+endif
+syn keyword krlVkrcFoldConstants EIN AUS containedin=krlFoldComment
+highlight default link krlVkrcFoldConstants Boolean
+
+" Comment without Fold, also includes endfold lines and fold line part after second ;
+syn match krlComment /\c\v;\s*%(<%(end)?fold>)@!.*$/ containedin=krlFold contains=krlTodo,krlDebug,@Spell
+" Commented out Fold line: "; ;FOLD PTP..."
+syn match krlComment /\c\v^\s*;\s*;.*$/ contains=krlTodo,krlDebug
+highlight default link krlComment Comment
+
+if has("conceal") && get(g:, 'krlConcealFoldTail', 1)
+ syn match krlConcealFoldTail /\c\v(^\s*;\s*fold[^;]*)@250<=;%(--|\s*<fold>|\s*<endfold>)@!.*$/ transparent containedin=krlComment conceal cchar=*
+endif
+" }}} Comment and Folding
+
+" Header {{{
+syn match krlHeader /&\a\w*/
+highlight default link krlHeader PreProc
+" }}} Header
+
+" Operator {{{
+" Boolean operator
+syn keyword krlBoolOperator and or exor not b_and b_or b_exor b_not
+highlight default link krlBoolOperator Operator
+" Arithmetic operator
+syn match krlArithOperator /[+-]/ containedin=krlFloat
+syn match krlArithOperator /[*/]/
+highlight default link krlArithOperator Operator
+" Compare operator
+syn match krlCompOperator /[<>=]/
+highlight default link krlCompOperator Operator
+" Geometric operator
+" Do not move the : operator
+" Must be present befor krlParamdef
+syn match krlGeomOperator /[:]/
+" syn match krlGeomOperator /[:]/ containedin=krlLabel,krlParamdef
+highlight default link krlGeomOperator Operator
+" }}} Operator
+
+" Type, StorageClass and Typedef {{{
+" Simple data types
+syn keyword krlType bool char real int containedin=krlAnyType
+" External program and function
+syn keyword krlType ext extfct extfctp extp containedin=krlAnyType
+" Communication
+syn keyword krlType signal channel containedin=krlAnyType
+highlight default link krlType Type
+" StorageClass
+syn keyword krlStorageClass decl global const struc enum
+highlight default link krlStorageClass StorageClass
+" .dat file public
+syn keyword krlDatStorageClass public
+highlight default link krlDatStorageClass StorageClass
+" Parameter StorageClass
+" Do not move the :in/:out
+" Must be present after krlGeomOperator
+syn match krlParamdef /[:]\s*in\>/
+syn match krlParamdef /[:]\s*out\>/
+highlight default link krlParamdef StorageClass
+" Not a typedef but I like to have those highlighted
+" different then types, structures or strorage classes
+syn keyword krlTypedef DEF DEFFCT ENDFCT DEFDAT ENDDAT
+syn match krlTypedef /^\s*END\>/
+highlight default link krlTypedef Typedef
+" }}} Type, StorageClass and Typedef
+
+" Delimiter {{{
+syn match krlDelimiter /[\[\](),\\]/
+highlight default link krlDelimiter Delimiter
+" }}} Delimiter
+
+" Constant values {{{
+" Boolean
+syn keyword krlBoolean true false containedin=krlStructVal
+highlight default link krlBoolean Boolean
+" Binary integer
+syn match krlBinaryInt /'b[01]\+'/ containedin=krlStructVal
+highlight default link krlBinaryInt Number
+" Hexadecimal integer
+syn match krlHexInt /'h[0-9a-fA-F]\+'/ containedin=krlStructVal
+highlight default link krlHexInt Number
+" Integer
+syn match krlInteger /\W\@1<=[+-]\?\d\+/ containedin=krlStructVal,krlFloat contains=krlArithOperator
+highlight default link krlInteger Number
+" Float
+syn match krlFloat /\v\W@1<=[+-]?\d+\.?\d*%(\s*[eE][+-]?\d+)?/ containedin=krlStructVal
+highlight default link krlFloat Float
+" String
+syn region krlString start=/"/ end=/"/ oneline containedin=krlStructVal contains=@Spell
+highlight default link krlString String
+syn match krlSpecialChar /[|]/ containedin=krlString
+highlight default link krlSpecialChar SpecialChar
+" String within a fold line
+syn region krlSingleQuoteString start=/'/ end=/'/ oneline contained contains=@Spell
+highlight default link krlSingleQuoteString String
+" Enum
+syn match krlEnumVal /#\s*\a\w*/ containedin=krlStructVal
+highlight default link krlEnumVal Constant
+" }}} Constant values
+
+" Predefined Structure and Enum {{{
+" Predefined structures and enums found in
+" /r1/mada/$*.dat, /r1/steu/$*.dat and
+" /r1/system/$config.dat as well as
+" basisTech, gripperTech and spotTech
+"
+" Predefined data types found in krc1
+syn keyword krlStructure servopara keymove powermodul trace techangle tech techfct techcps techfctctrl axis_inc axis_cal date display_var pro_ip con bus
+syn keyword krlEnum ident_state sig_state move_state async_state emt_mode boxmode msg_prm_typ msg_typ cmd_stat asys trace_state trace_mode direction techsys techgeoref techclass techmode hpu_key_val pro_state eax transsys mode_move cosys device rotsys emstop cause_t
+"
+" Predefined data types found in kss functions
+syn keyword krlEnum ediagstate rdc_fs_state ret_c_psync_e var_type cancel_psync_e sys_vars
+syn keyword krlStructure siginf rw_rdc_file rw_mam_file diagpar_t error_t stopmess case_sense_t msgbuf_t e3pos e3axis diagopt_t
+"
+" Predefined structures for movement
+syn keyword krlStructure frame e6pos pos e6axis axis
+syn keyword krlStructure fdat ldat pdat
+syn keyword krlStructure load inertia
+"
+" Predefined structures for shapes
+syn keyword krlStructure axbox cylinder box
+"
+" Predefined structures and enums found in /r1/mada/$machine.dat
+syn keyword krlStructure cp fra acc_car jerk_struc dhart spin trpspin ex_kin et_ax maxtool
+syn keyword krlEnum individual_mames supply_voltage kinclass main_axis wrist_axis sw_onoff
+"
+" Predefined structures and enums found in /r1/mada/$robcor.dat
+" syn keyword krlStructure
+syn keyword krlEnum adap_acc model_type control_parameter eko_mode
+"
+" Predefined structures and enums found in /steu/mada/$custom.dat
+syn keyword krlStructure pro_io_t ser ext_mod_t coop_krc ws_config bin_type coop_update_t ldc_reaction
+syn keyword krlEnum axis_of_coordinates spline_para_variant target_status cp_vel_type cp_statmon
+"
+" Predefined structures and enums found in /steu/mada/$machine.dat
+syn keyword krlStructure emstop_path boxstatesafein boxstatesafeout
+syn keyword krlEnum digincode
+"
+" Predefined structures and enums found in /steu/mada/$option.dat
+syn keyword krlStructure msg_t
+" syn keyword krlEnum
+"
+" Predefined structures and enums found in /r1/system/$config.dat
+" BasisTech
+syn keyword krlStructure dig_out_type ctrl_in_t ctrl_out_t fct_out_t fct_in_t odat basis_sugg_t out_sugg_t md_state machine_def_t machine_tool_t machine_frame_t trigger_para constvel_para condstop_para adat tm_sugg_t tqm_tqdat_t sps_prog_type
+syn keyword krlEnum bas_command out_modetype ipo_m_t apo_mode_t funct_type p00_command timer_actiontype
+"
+" GripperTech
+syn keyword krlStructure grp_typ grp_types grp_sugg_t
+syn keyword krlEnum on_off_typ apo_typ
+"
+" SpotTech
+syn keyword krlStructure spot_type spot_sugg_t
+syn keyword krlEnum s_command s_pair_slct command_retr
+"
+" VW
+syn keyword krlStructure vw_mpara_typ zangentyp zangenbedingung ibszangentyp last_ibs_typ verr_typ verrcheck_t t_fb_state kollisionsdaten state_t modus_t
+syn keyword krlEnum synctype dir_typ subtype ari_typ bool_typ vw_command ibgn_command vw_user_cmd move_types adv_t_type bas_type ibs_mode_typ vw_user_cmd pro_mode mode_op
+"
+" ProgCoop
+syn keyword krlStructure ydat
+" syn keyword krlEnum
+"
+" bas.src
+syn keyword krlStructure cont
+syn keyword krlEnum esys ipo_mode circ_mode circ_type ori_type var_state
+"
+" MsgLib.src
+syn keyword krlStructure KrlMsg_T KrlMsgParType_T KrlMsgPar_T KrlMsgOpt_T KrlMsgDlgSK_T
+syn keyword krlEnum EKrlMsgType
+"
+highlight default link krlStructure Structure
+highlight default link krlEnum Structure
+" }}} Predefined Structure and Enum
+
+" System variable {{{
+syn match krlSysvars /\<\$\a[a-zA-Z0-9_.]*/
+if g:krlGroupName
+ highlight default link krlSysvars Sysvars
+else
+ " default color for Sysvars
+endif
+" }}} System variable
+
+" Statements, keywords et al {{{
+" continue
+syn keyword krlContinue continue
+if g:krlGroupName
+ highlight default link krlContinue Continue
+else
+ highlight default link krlContinue Statement
+endif
+" interrupt
+syn match krlStatement /\v\c%(<global>\s+)?<INTERRUPT>%(\s+<decl>)?/ contains=krlStorageClass
+" keywords
+syn keyword krlStatement wait on off enable disable stop trigger with when distance onstart delay do prio import is minimum maximum confirm on_error_proceed
+syn match krlStatement /\v\c%(<wait\s+)@7<=<sec>/
+syn match krlStatement /\v\c%(<when\s+)@7<=<path>/
+highlight default link krlStatement Statement
+" Conditional
+syn keyword krlConditional if then else endif switch case default endswitch skip endskip
+highlight default link krlConditional Conditional
+" Repeat
+syn keyword krlRepeat for to step endfor while endwhile repeat until loop endloop exit
+highlight default link krlRepeat Repeat
+" Label
+syn keyword krlLabel goto
+syn match krlLabel /^\s*\w\+:\ze\s*\%(;.*\)\?$/
+highlight default link krlLabel Label
+" Keyword
+syn keyword krlKeyword anin anout digin
+highlight default link krlKeyword Keyword
+" Exception
+syn keyword krlException return resume halt
+highlight default link krlException Exception
+" }}} Statements, keywords et al
+
+" special keywords for movement commands {{{
+syn keyword krlMovement PTP PTP_REL LIN LIN_REL CIRC CIRC_REL SPL SPL_REL SPTP SPTP_REL SLIN SLIN_REL SCIRC SCIRC_REL
+syn keyword krlMovement ASYPTP ASYCONT ASYSTOP ASYCANCEL MOVE_EMI
+syn match krlMovement /\v\c^\s*<BRAKE(\s+F)?>/
+if g:krlGroupName
+ highlight default link krlMovement Movement
+else
+ highlight default link krlMovement Special
+endif
+" movement modifiers
+syn match krlMoveBlockInst /\c\v^\s*TIME_BLOCK\s+(START|PART|END)/
+syn match krlMoveBlockInst /\c\v^\s*CONST_VEL\s+(START|END)/
+syn keyword krlMoveBlockInst ptp_spline spline endspline
+highlight default link krlMoveBlockInst Statement
+syn keyword krlMoveMod ca c_ptp c_dis c_vel c_ori c_spl
+if g:krlGroupName
+ highlight default link krlMoveMod Movement
+else
+ highlight default link krlMoveMod Special
+endif
+" }}} special keywords for movement commands
+
+" Structure value {{{
+" avoid coloring structure component names
+syn match krlNames /\.[a-zA-Z_][.a-zA-Z0-9_$]*/
+syn match krlNames contained /[a-zA-Z_][.a-zA-Z0-9_$]*/
+" highlight default link krlNames None
+" Structure value
+syn region krlStructVal start=/{/ end=/}/ oneline containedin=krlStructVal contains=krlNames
+highlight default link krlStructVal Delimiter
+" }}} Structure value
+
+" BuildInFunction {{{
+syn keyword krlBuildInFunction contained Pulse
+syn keyword krlBuildInFunction contained m_comment
+syn keyword krlBuildInFunction contained is_key_pressed
+syn keyword krlBuildInFunction contained set_opt_filter
+syn keyword krlBuildInFunction contained timer_limit
+syn keyword krlBuildInFunction contained tool_adj
+syn keyword krlBuildInFunction contained FRand
+syn keyword krlBuildInFunction contained ExecFunc eb_test EB EK EO LK mbx_rec
+" safe robot
+syn keyword krlbuildinfunction contained get_AxesMask get_BrakeTest_Time
+" math
+syn keyword krlBuildInFunction contained Abs Sin Cos Acos Tan Atan Atan2 Sqrt
+syn keyword krlBuildInFunction contained Forward Inverse inv_pos
+" cFoo sFoo
+syn keyword krlBuildInFunction contained cClose cOpen cRead cWrite sRead sWrite
+" string
+syn keyword krlBuildInFunction contained StrToBool StrToInt StrToReal StrToString StrToFrame StrToPos StrToE3Pos StrToE6Pos StrToAxis StrToE3Axis StrToE6Axis
+syn keyword krlBuildInFunction contained StrAdd StrClear StrCopy StrComp StrFind StrLen StrDeclLen StrToBool StrToInt StrToReal StrToString
+" diag
+syn keyword krlBuildInFunction contained diag_start diag_stop get_DiagState
+" rdc mam pid
+syn keyword krlBuildInFunction contained CheckPidOnRdc check_mam_on_rdc get_rdc_fs_state
+syn keyword krlBuildInFunction contained set_mam_on_hd copy_mam_hd_to_rdc copy_mam_rdc_to_hd
+syn keyword krlBuildInFunction contained PidToHd PidToRdc
+syn keyword krlBuildInFunction contained cal_to_rdc rdc_file_to_hd
+syn keyword krlBuildInFunction contained delete_pid_on_rdc delete_rdc_content
+syn keyword krlBuildInFunction contained create_rdc_archive restore_rdc_archive
+" ioctl
+syn keyword krlBuildInFunction contained IOCtl cIOCtl
+syn keyword krlBuildInFunction contained WSpaceGive WSpaceTake
+" sync
+syn keyword krlBuildInFunction contained Sync SyncCmd CancelProgSync
+" remote
+syn keyword krlBuildInFunction contained RemoteCmd RemoteRead
+" msg/dlg
+syn keyword krlBuildInFunction contained IsMessageSet clear_KrlMsg get_MsgBuffer exists_KrlDlg exists_KrlMsg set_KrlDlg set_KrlDlgAnswer set_KrlMsg
+" robvers
+syn keyword krlBuildInFunction contained maximize_UsedxRobvers set_UsedxRobvers
+" md_foo
+syn keyword krlBuildInFunction contained md_Cmd md_GetState md_SetState md_Asgn
+" emi
+syn keyword krlBuildInFunction contained emi_ActPos emi_EndPos emi_StartPos emi_RecState emi_RecName
+" var
+syn keyword krlBuildInFunction contained cast_from cast_to
+syn keyword krlBuildInFunction contained GetVarsize GetCycDef get_sig_inf get_decl_place VarType VarState
+" sys
+syn keyword krlBuildInFunction contained GetSysState get_system_data set_system_data set_system_data_delayed
+" err
+syn keyword krlBuildInFunction contained err_clear err_raise
+" motion
+syn keyword krlBuildInFunction contained delete_backward_buffer rob_stop rob_stop_release set_brake_delay suppress_repositioning VectorMoveOn VectorMoveOff
+" torque
+syn keyword krlBuildInFunction contained set_torque_limits reset_torque_limits
+" krc1
+syn keyword krlBuildInFunction contained cLcopy cCurpos cNew cClear cRelease cKey
+if g:krlGroupName
+ highlight default link krlBuildInFunction BuildInFunction
+else
+ highlight default link krlBuildInFunction Function
+endif
+" }}} BuildInFunction
+
+" Function {{{
+syn match krlFunction /[a-zA-Z_]\w* *(/me=e-1 contains=krlBuildInFunction
+highlight default link krlFunction Function
+" }}} Function
+
+" Error {{{
+if get(g:, 'krlShowError', 1)
+ " some more or less common typos
+ "
+ " vars or funcs >24 chars are not possible in krl. a234567890123456789012345
+ syn match krlError0 /\w\{25,}/ containedin=krlFunction,krlNames,krlLabel,krlAnyType,krlEnumVal,krlSysvars
+ "
+ " should be interrupt (on|off) \w+
+ syn match krlError1 /\vinterrupt[ \t(]+[_$a-zA-Z0-9]+[_$a-zA-Z0-9.\[\]()+\-*/]*[ \t)]+o%(n|ff)>/
+ "
+ " for bla==5 to 7...
+ " ||
+ syn match krlError3 /\v%(^\s*for%(\(|\s)+[_$a-zA-Z]+[_$a-zA-Z0-9.\[\]()+\-*/ ]*\s*)@<=[:=]\=/
+ "
+ " TODO optimize performance
+ " wait for a=b
+ " |
+ syn match krlError4 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+[^;<>=])@<=\=[^=]/
+ "
+ " wait for a><b
+ " ||
+ syn match krlError5 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+)@<=\>\s*\</
+ "
+ " if (a==5) (b==6) ...
+ " |||
+ syn match krlError6 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+[^;])@<=\)\s*\(/
+ "
+ " TODO optimize performance
+ " a == b + 1
+ " a := b + 1
+ " ||
+ syn match krlError7 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+[^;])@1<!%(^\s*[_$a-zA-Z]+[_$a-zA-Z0-9.\[\],+\-*/]*\s*)@<=[:=]\=/
+ syn match krlError7 /\v\c%(^\s*%(decl\s+)%(global\s+)?%(const\s+)?\w+\s+\w+\s*)@<=[:=]\=/
+ syn match krlError7 /\v\c%(^\s*%(decl\s+)?%(global\s+)?%(const\s+)?%(bool\s+|int\s+|real\s+|char\s+)\w+\s*)@<=[:=]\=/
+ "
+ " this one is tricky. Make sure this does not match trigger instructions; OK, next try, now search for false positives
+ " TODO optimize performance
+ " a = b and c or (int1=int2)
+ " |
+ syn match krlError8 /\v(^\s*[_$a-zA-Z]+[_$a-zA-Z0-9.\[\]()+\-*/]*\s*\=[^;]*[^;<>=])@<=\=\ze[^=]/
+ "
+ " <(distance|delay|prio)> :=
+ " <(distance|delay|prio)> ==
+ " ||
+ syn match krlError9 /\v(^[^;]*<(distance|delay|prio|minimum|maximum)\s*)@<=[:=]\=/
+ "
+ " 'for', 'while' or 'repeat' followed by 'do'
+ syn match krlError10 /\c\v^\s*(until|while|for)>[^;]*<do>/
+ "
+ highlight default link krlError0 Error
+ highlight default link krlError1 Error
+ highlight default link krlError2 Error
+ highlight default link krlError3 Error
+ highlight default link krlError4 Error
+ highlight default link krlError5 Error
+ highlight default link krlError6 Error
+ highlight default link krlError7 Error
+ highlight default link krlError8 Error
+ highlight default link krlError9 Error
+ highlight default link krlError10 Error
+endif
+" }}} Error
+
+" Finish {{{
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+let b:current_syntax = "krl"
+" }}} Finish
+
+" vim:sw=2 sts=2 et fdm=marker
diff --git a/runtime/syntax/kscript.vim b/runtime/syntax/kscript.vim
new file mode 100644
index 0000000..e677620
--- /dev/null
+++ b/runtime/syntax/kscript.vim
@@ -0,0 +1,57 @@
+" Vim syntax file
+" Language: kscript
+" Maintainer: Thomas Capricelli <orzel@yalbi.com>
+" URL: http://aquila.rezel.enst.fr/thomas/vim/kscript.vim
+" CVS: $Id: kscript.vim,v 1.1 2004/06/13 17:40:02 vimboss Exp $
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn keyword kscriptPreCondit import from
+
+syn keyword kscriptHardCoded print println connect length arg mid upper lower isEmpty toInt toFloat findApplication
+syn keyword kscriptConditional if else switch
+syn keyword kscriptRepeat while for do foreach
+syn keyword kscriptExceptions emit catch raise try signal
+syn keyword kscriptFunction class struct enum
+syn keyword kscriptConst FALSE TRUE false true
+syn keyword kscriptStatement return delete
+syn keyword kscriptLabel case default
+syn keyword kscriptStorageClass const
+syn keyword kscriptType in out inout var
+
+syn keyword kscriptTodo contained TODO FIXME XXX
+
+syn region kscriptComment start="/\*" end="\*/" contains=kscriptTodo
+syn match kscriptComment "//.*" contains=kscriptTodo
+syn match kscriptComment "#.*$" contains=kscriptTodo
+
+syn region kscriptString start=+'+ end=+'+ skip=+\\\\\|\\'+
+syn region kscriptString start=+"+ end=+"+ skip=+\\\\\|\\"+
+syn region kscriptString start=+"""+ end=+"""+
+syn region kscriptString start=+'''+ end=+'''+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link kscriptConditional Conditional
+hi def link kscriptRepeat Repeat
+hi def link kscriptExceptions Statement
+hi def link kscriptFunction Function
+hi def link kscriptConst Constant
+hi def link kscriptStatement Statement
+hi def link kscriptLabel Label
+hi def link kscriptStorageClass StorageClass
+hi def link kscriptType Type
+hi def link kscriptTodo Todo
+hi def link kscriptComment Comment
+hi def link kscriptString String
+hi def link kscriptPreCondit PreCondit
+hi def link kscriptHardCoded Statement
+
+
+let b:current_syntax = "kscript"
+
+" vim: ts=8
diff --git a/runtime/syntax/kwt.vim b/runtime/syntax/kwt.vim
new file mode 100644
index 0000000..ecda5bb
--- /dev/null
+++ b/runtime/syntax/kwt.vim
@@ -0,0 +1,70 @@
+" Vim syntax file
+" Language: kimwitu++
+" Maintainer: Michael Piefel <entwurf@piefel.de>
+" Last Change: 2 May 2001
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the C++ syntax to start with
+runtime! syntax/cpp.vim
+unlet b:current_syntax
+
+" kimwitu++ extentions
+
+" Don't stop at eol, messes around with CPP mode, but gives line spanning
+" strings in unparse rules
+syn region cCppString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat
+syn keyword cType integer real casestring nocasestring voidptr list
+syn keyword cType uview rview uview_enum rview_enum
+
+" avoid unparsing rule sth:view being scanned as label
+syn clear cUserCont
+syn match cUserCont "^\s*\I\i*\s*:$" contains=cUserLabel contained
+syn match cUserCont ";\s*\I\i*\s*:$" contains=cUserLabel contained
+syn match cUserCont "^\s*\I\i*\s*:[^:]"me=e-1 contains=cUserLabel contained
+syn match cUserCont ";\s*\I\i*\s*:[^:]"me=e-1 contains=cUserLabel contained
+
+" highlight phylum decls
+syn match kwtPhylum "^\I\i*:$"
+syn match kwtPhylum "^\I\i*\s*{\s*\(!\|\I\)\i*\s*}\s*:$"
+
+syn keyword kwtStatement with foreach afterforeach provided
+syn match kwtDecl "%\(uviewvar\|rviewvar\)"
+syn match kwtDecl "^%\(uview\|rview\|ctor\|dtor\|base\|storageclass\|list\|attr\|member\|option\)"
+syn match kwtOption "no-csgio\|no-unparse\|no-rewrite\|no-printdot\|no-hashtables\|smart-pointer\|weak-pointer"
+syn match kwtSep "^%}$"
+syn match kwtSep "^%{\(\s\+\I\i*\)*$"
+syn match kwtCast "\<phylum_cast\s*<"me=e-1
+syn match kwtCast "\<phylum_cast\s*$"
+
+
+" match views, remove paren error in brackets
+syn clear cErrInBracket
+syn match cErrInBracket contained ")"
+syn match kwtViews "\(\[\|<\)\@<=[ [:alnum:]_]\{-}:"
+
+" match rule bodies
+syn region kwtUnpBody transparent keepend extend fold start="->\s*\[" start="^\s*\[" skip="\$\@<!{\_.\{-}\$\@<!}" end="\s]\s\=;\=$" end="^]\s\=;\=$" end="}]\s\=;\=$"
+syn region kwtRewBody transparent keepend extend fold start="->\s*<" start="^\s*<" end="\s>\s\=;\=$" end="^>\s\=;\=$"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link kwtStatement cppStatement
+hi def link kwtDecl cppStatement
+hi def link kwtCast cppStatement
+hi def link kwtSep Delimiter
+hi def link kwtViews Label
+hi def link kwtPhylum Type
+hi def link kwtOption PreProc
+"hi def link cText Comment
+
+
+syn sync lines=300
+
+let b:current_syntax = "kwt"
+
+" vim: ts=8
diff --git a/runtime/syntax/lace.vim b/runtime/syntax/lace.vim
new file mode 100644
index 0000000..9a83851
--- /dev/null
+++ b/runtime/syntax/lace.vim
@@ -0,0 +1,122 @@
+" Vim syntax file
+" Language: lace
+" Maintainer: Jocelyn Fiat <utilities@eiffel.com>
+" Last Change: 2001 May 09
+
+" Copyright Interactive Software Engineering, 1998
+" You are free to use this file as you please, but
+" if you make a change or improvement you must send
+" it to the maintainer at <utilities@eiffel.com>
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" LACE is case insensitive, but the style guide lines are not.
+
+if !exists("lace_case_insensitive")
+ syn case match
+else
+ syn case ignore
+endif
+
+" A bunch of useful LACE keywords
+syn keyword laceTopStruct system root default option visible cluster
+syn keyword laceTopStruct external generate end
+syn keyword laceOptionClause collect assertion debug optimize trace
+syn keyword laceOptionClause profile inline precompiled multithreaded
+syn keyword laceOptionClause exception_trace dead_code_removal
+syn keyword laceOptionClause array_optimization
+syn keyword laceOptionClause inlining_size inlining
+syn keyword laceOptionClause console_application dynamic_runtime
+syn keyword laceOptionClause line_generation
+syn keyword laceOptionMark yes no all
+syn keyword laceOptionMark require ensure invariant loop check
+syn keyword laceClusterProp use include exclude
+syn keyword laceAdaptClassName adapt ignore rename as
+syn keyword laceAdaptClassName creation export visible
+syn keyword laceExternal include_path object makefile
+
+" Operators
+syn match laceOperator "\$"
+syn match laceBrackets "[[\]]"
+syn match laceExport "[{}]"
+
+" Constants
+syn keyword laceBool true false
+syn keyword laceBool True False
+syn region laceString start=+"+ skip=+%"+ end=+"+ contains=laceEscape,laceStringError
+syn match laceEscape contained "%[^/]"
+syn match laceEscape contained "%/\d\+/"
+syn match laceEscape contained "^[ \t]*%"
+syn match laceEscape contained "%[ \t]*$"
+syn match laceStringError contained "%/[^0-9]"
+syn match laceStringError contained "%/\d\+[^0-9/]"
+syn match laceStringError "'\(%[^/]\|%/\d\+/\|[^'%]\)\+'"
+syn match laceCharacter "'\(%[^/]\|%/\d\+/\|[^'%]\)'" contains=laceEscape
+syn match laceNumber "-\=\<\d\+\(_\d\+\)*\>"
+syn match laceNumber "\<[01]\+[bB]\>"
+syn match laceNumber "-\=\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\)\=\([eE][-+]\=\d\+\(_\d\+\)*\)\="
+syn match laceNumber "-\=\.\d\+\(_\d\+\)*\([eE][-+]\=\d\+\(_\d\+\)*\)\="
+syn match laceComment "--.*" contains=laceTodo
+
+
+syn case match
+
+" Case sensitive stuff
+
+syn keyword laceTodo TODO XXX FIXME
+syn match laceClassName "\<[A-Z][A-Z0-9_]*\>"
+syn match laceCluster "[a-zA-Z][a-zA-Z0-9_]*\s*:"
+syn match laceCluster "[a-zA-Z][a-zA-Z0-9_]*\s*(\s*[a-zA-Z][a-zA-Z0-9_]*\s*)\s*:"
+
+" Catch mismatched parentheses
+syn match laceParenError ")"
+syn match laceBracketError "\]"
+syn region laceGeneric transparent matchgroup=laceBrackets start="\[" end="\]" contains=ALLBUT,laceBracketError
+syn region laceParen transparent start="(" end=")" contains=ALLBUT,laceParenError
+
+" Should suffice for even very long strings and expressions
+syn sync lines=40
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link laceTopStruct PreProc
+
+hi def link laceOptionClause Statement
+hi def link laceOptionMark Constant
+hi def link laceClusterProp Label
+hi def link laceAdaptClassName Label
+hi def link laceExternal Statement
+hi def link laceCluster ModeMsg
+
+hi def link laceEscape Special
+
+hi def link laceBool Boolean
+hi def link laceString String
+hi def link laceCharacter Character
+hi def link laceClassName Type
+hi def link laceNumber Number
+
+hi def link laceOperator Special
+hi def link laceArray Special
+hi def link laceExport Special
+hi def link laceCreation Special
+hi def link laceBrackets Special
+hi def link laceConstraint Special
+
+hi def link laceComment Comment
+
+hi def link laceError Error
+hi def link laceStringError Error
+hi def link laceParenError Error
+hi def link laceBracketError Error
+hi def link laceTodo Todo
+
+
+let b:current_syntax = "lace"
+
+" vim: ts=4
diff --git a/runtime/syntax/latte.vim b/runtime/syntax/latte.vim
new file mode 100644
index 0000000..e30ae42
--- /dev/null
+++ b/runtime/syntax/latte.vim
@@ -0,0 +1,81 @@
+" Vim syntax file
+" Language: Latte
+" Maintainer: Nick Moffitt, <nick@zork.net>
+" Last Change: 14 June, 2000
+"
+" Notes:
+" I based this on the TeX and Scheme syntax files (but mostly scheme).
+" See http://www.latte.org for info on the language.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match latteError "[{}\\]"
+syn match latteOther "\\{"
+syn match latteOther "\\}"
+syn match latteOther "\\\\"
+
+setlocal iskeyword=33,43,45,48-57,63,65-90,95,97-122,_
+
+syn region latteVar matchgroup=SpecialChar start=!\\[A-Za-z_]!rs=s+1 end=![^A-Za-z0-9?!+_-]!me=e-1 contains=ALLBUT,latteNumber,latteOther
+syn region latteVar matchgroup=SpecialChar start=!\\[=\&][A-Za-z_]!rs=s+2 end=![^A-Za-z0-9?!+_-]!me=e-1 contains=ALLBUT,latteNumber,latteOther
+syn region latteString start=+\\"+ skip=+\\\\"+ end=+\\"+
+
+syn region latteGroup matchgroup=Delimiter start="{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=ALLBUT,latteSyntax
+
+syn region latteUnquote matchgroup=Delimiter start="\\,{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=ALLBUT,latteSyntax
+syn region latteSplice matchgroup=Delimiter start="\\,@{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=ALLBUT,latteSyntax
+syn region latteQuote matchgroup=Delimiter start="\\'{" skip="\\[{}]" matchgroup=Delimiter end="}"
+syn region latteQuote matchgroup=Delimiter start="\\`{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=latteUnquote,latteSplice
+
+syn match latteOperator '\\/'
+syn match latteOperator '='
+
+syn match latteComment "\\;.*$"
+
+" This was gathered by slurping in the index.
+
+syn keyword latteSyntax __FILE__ __latte-version__ contained
+syn keyword latteSyntax _bal-tag _pre _tag add and append apply back contained
+syn keyword latteSyntax caar cadr car cdar cddr cdr ceil compose contained
+syn keyword latteSyntax concat cons def defmacro divide downcase contained
+syn keyword latteSyntax empty? equal? error explode file-contents contained
+syn keyword latteSyntax floor foreach front funcall ge? getenv contained
+syn keyword latteSyntax greater-equal? greater? group group? gt? html contained
+syn keyword latteSyntax if include lambda le? length less-equal? contained
+syn keyword latteSyntax less? let lmap load-file load-library lt? macro contained
+syn keyword latteSyntax member? modulo multiply not nth operator? contained
+syn keyword latteSyntax or ordinary quote process-output push-back contained
+syn keyword latteSyntax push-front quasiquote quote random rdc reverse contained
+syn keyword latteSyntax set! snoc splicing unquote strict-html4 contained
+syn keyword latteSyntax string-append string-ge? string-greater-equal? contained
+syn keyword latteSyntax string-greater? string-gt? string-le? contained
+syn keyword latteSyntax string-less-equal? string-less? string-lt? contained
+syn keyword latteSyntax string? subseq substr subtract contained
+syn keyword latteSyntax upcase useless warn while zero? contained
+
+
+" If it's good enough for scheme...
+
+syn sync match matchPlace grouphere NONE "^[^ \t]"
+" ... i.e. synchronize on a line that starts at the left margin
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link latteSyntax Statement
+hi def link latteVar Function
+
+hi def link latteString String
+hi def link latteQuote String
+
+hi def link latteDelimiter Delimiter
+hi def link latteOperator Operator
+
+hi def link latteComment Comment
+hi def link latteError Error
+
+
+let b:current_syntax = "latte"
diff --git a/runtime/syntax/lc.vim b/runtime/syntax/lc.vim
new file mode 100644
index 0000000..a334529
--- /dev/null
+++ b/runtime/syntax/lc.vim
@@ -0,0 +1,31 @@
+" Vim syntax file
+" Language: Elsa
+" Maintainer: Miles Glapa-Grossklag <miles@glapa-grossklag.com>
+" Last Change: 2023-01-29
+
+if exists('b:current_syntax')
+ finish
+endif
+
+" Keywords
+syntax keyword elsaKeyword let eval
+syntax match elsaKeyword "\v:"
+highlight link elsaKeyword Keyword
+
+" Comments
+setlocal commentstring=--%s
+syntax match elsaComment "\v--.*$"
+highlight link elsaComment Comment
+
+" Operators
+syntax match elsaOperator "\v\="
+syntax match elsaOperator "\v\=[abd*~]\>"
+syntax match elsaOperator "\v-\>"
+syntax match elsaOperator "\v\\"
+highlight link elsaOperator Operator
+
+" Definitions
+syntax match elsaConstant "\v[A-Z]+[A-Z_0-9]*"
+highlight link elsaConstant Constant
+
+let b:current_syntax = 'elsa'
diff --git a/runtime/syntax/ld.vim b/runtime/syntax/ld.vim
new file mode 100644
index 0000000..6a117ee
--- /dev/null
+++ b/runtime/syntax/ld.vim
@@ -0,0 +1,81 @@
+" Vim syntax file
+" Language: ld(1) script
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword ldTodo contained TODO FIXME XXX NOTE
+
+syn region ldComment start='/\*' end='\*/' contains=ldTodo,@Spell
+
+syn region ldFileName start=+"+ end=+"+
+
+syn keyword ldPreProc SECTIONS MEMORY OVERLAY PHDRS VERSION INCLUDE
+syn match ldPreProc '\<VERS_\d\+\.\d\+'
+
+syn keyword ldFunction ABSOLUTE ADDR ALIGN BLOCK DATA_SEGMENT_ALIGN
+ \ DATA_SEGMENT_END DATA_SEGMENT_RELRO_END DEFINED
+ \ LOADADDR MAX MIN NEXT SIZEOF SIZEOF_HEADERS
+ \ sizeof_headers
+
+syn keyword ldKeyword ENTRY INPUT GROUP OUTPUT
+ \ SEARCH_DIR STARTUP OUTPUT_FORMAT TARGET
+ \ ASSERT EXTERN FORCE_COMMON_ALLOCATION
+ \ INHIBIT_COMMON_ALLOCATION NOCROSSREFS OUTPUT_ARCH
+ \ PROVIDE EXCLUDE_FILE SORT KEEP FILL
+ \ CREATE_OBJECT_SYMBOLS CONSTRUCTORS SUBALIGN
+ \ FILEHDR AT __asm__ ABSOLUTE
+
+syn keyword ldDataType BYTE SHORT LONG QUAD SQUAD
+syn keyword ldOutputType NOLOAD DSECT COPY INFO OVERLAY
+syn keyword ldPTType PT_NULL PT_LOAD PT_DYNAMIC PT_INTERP
+ \ PT_NOTE PT_SHLIB PT_PHDR
+
+syn keyword ldSpecial COMMON
+syn match ldSpecial '/DISCARD/'
+
+syn keyword ldIdentifier ORIGIN LENGTH
+
+syn match ldSpecSections '\.'
+syn match ldSections '\.\S\+'
+syn match ldSpecSections '\.\%(text\|data\|bss\|symver\)\>'
+
+syn match ldNumber display '\<0[xX]\x\+\>'
+syn match ldNumber display '\d\+[KM]\>' contains=ldNumberMult
+syn match ldNumberMult display '\(\d\+\)\@<=[KM]\>'
+syn match ldOctal contained display '\<0\o\+\>'
+ \ contains=ldOctalZero
+syn match ldOctalZero contained display '\<0'
+syn match ldOctalError contained display '\<0\o*[89]\d*\>'
+
+
+hi def link ldTodo Todo
+hi def link ldComment Comment
+hi def link ldFileName String
+hi def link ldPreProc PreProc
+hi def link ldFunction Identifier
+hi def link ldKeyword Keyword
+hi def link ldType Type
+hi def link ldDataType ldType
+hi def link ldOutputType ldType
+hi def link ldPTType ldType
+hi def link ldSpecial Special
+hi def link ldIdentifier Identifier
+hi def link ldSections Constant
+hi def link ldSpecSections Special
+hi def link ldNumber Number
+hi def link ldNumberMult PreProc
+hi def link ldOctal ldNumber
+hi def link ldOctalZero PreProc
+hi def link ldOctalError Error
+
+let b:current_syntax = "ld"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/ldapconf.vim b/runtime/syntax/ldapconf.vim
new file mode 100644
index 0000000..662ea20
--- /dev/null
+++ b/runtime/syntax/ldapconf.vim
@@ -0,0 +1,338 @@
+" Vim syntax file
+" Language: ldap.conf(5) configuration file.
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-12-11
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword ldapconfTodo contained TODO FIXME XXX NOTE
+
+syn region ldapconfComment display oneline start='^\s*#' end='$'
+ \ contains=ldapconfTodo,
+ \ @Spell
+
+syn match ldapconfBegin display '^'
+ \ nextgroup=ldapconfOption,
+ \ ldapconfDeprOption,
+ \ ldapconfComment
+
+syn case ignore
+
+syn keyword ldapconfOption contained URI
+ \ nextgroup=ldapconfURI
+ \ skipwhite
+
+syn keyword ldapconfOption contained
+ \ BASE
+ \ BINDDN
+ \ nextgroup=ldapconfDNAttrType
+ \ skipwhite
+
+syn keyword ldapconfDeprOption contained
+ \ HOST
+ \ nextgroup=ldapconfHost
+ \ skipwhite
+
+syn keyword ldapconfDeprOption contained
+ \ PORT
+ \ nextgroup=ldapconfPort
+ \ skipwhite
+
+syn keyword ldapconfOption contained
+ \ REFERRALS
+ \ nextgroup=ldapconfBoolean
+ \ skipwhite
+
+syn keyword ldapconfOption contained
+ \ SIZELIMIT
+ \ TIMELIMIT
+ \ nextgroup=ldapconfInteger
+ \ skipwhite
+
+syn keyword ldapconfOption contained
+ \ DEREF
+ \ nextgroup=ldapconfDerefWhen
+ \ skipwhite
+
+syn keyword ldapconfOption contained
+ \ SASL_MECH
+ \ nextgroup=ldapconfSASLMechanism
+ \ skipwhite
+
+syn keyword ldapconfOption contained
+ \ SASL_REALM
+ \ nextgroup=ldapconfSASLRealm
+ \ skipwhite
+
+syn keyword ldapconfOption contained
+ \ SASL_AUTHCID
+ \ SASL_AUTHZID
+ \ nextgroup=ldapconfSASLAuthID
+ \ skipwhite
+
+syn keyword ldapconfOption contained
+ \ SASL_SECPROPS
+ \ nextgroup=ldapconfSASLSecProps
+ \ skipwhite
+
+syn keyword ldapconfOption contained
+ \ TLS_CACERT
+ \ TLS_CERT
+ \ TLS_KEY
+ \ TLS_RANDFILE
+ \ nextgroup=ldapconfFilename
+ \ skipwhite
+
+syn keyword ldapconfOption contained
+ \ TLS_CACERTDIR
+ \ nextgroup=ldapconfPath
+ \ skipwhite
+
+syn keyword ldapconfOption contained
+ \ TLS_CIPHER_SUITE
+ \ nextgroup=@ldapconfTLSCipher
+ \ skipwhite
+
+syn keyword ldapconfOption contained
+ \ TLS_REQCERT
+ \ nextgroup=ldapconfTLSCertCheck
+ \ skipwhite
+
+syn keyword ldapconfOption contained
+ \ TLS_CRLCHECK
+ \ nextgroup=ldapconfTLSCRLCheck
+ \ skipwhite
+
+syn case match
+
+syn match ldapconfURI contained display
+ \ 'ldaps\=://[^[:space:]:]\+\%(:\d\+\)\='
+ \ nextgroup=ldapconfURI
+ \ skipwhite
+
+" LDAP Distinguished Names are defined in Section 3 of RFC 2253:
+" http://www.ietf.org/rfc/rfc2253.txt.
+syn match ldapconfDNAttrType contained display
+ \ '\a[a-zA-Z0-9-]\+\|\d\+\%(\.\d\+\)*'
+ \ nextgroup=ldapconfDNAttrTypeEq
+
+syn match ldapconfDNAttrTypeEq contained display
+ \ '='
+ \ nextgroup=ldapconfDNAttrValue
+
+syn match ldapconfDNAttrValue contained display
+ \ '\%([^,=+<>#;\\"]\|\\\%([,=+<>#;\\"]\|\x\x\)\)*\|#\%(\x\x\)\+\|"\%([^\\"]\|\\\%([,=+<>#;\\"]\|\x\x\)\)*"'
+ \ nextgroup=ldapconfDNSeparator
+
+syn match ldapconfDNSeparator contained display
+ \ '[+,]'
+ \ nextgroup=ldapconfDNAttrType
+
+syn match ldapconfHost contained display
+ \ '[^[:space:]:]\+\%(:\d\+\)\='
+ \ nextgroup=ldapconfHost
+ \ skipwhite
+
+syn match ldapconfPort contained display
+ \ '\d\+'
+
+syn keyword ldapconfBoolean contained
+ \ on
+ \ true
+ \ yes
+ \ off
+ \ false
+ \ no
+
+syn match ldapconfInteger contained display
+ \ '\d\+'
+
+syn keyword ldapconfDerefWhen contained
+ \ never
+ \ searching
+ \ finding
+ \ always
+
+" Taken from http://www.iana.org/assignments/sasl-mechanisms.
+syn keyword ldapconfSASLMechanism contained
+ \ KERBEROS_V4
+ \ GSSAPI
+ \ SKEY
+ \ EXTERNAL
+ \ ANONYMOUS
+ \ OTP
+ \ PLAIN
+ \ SECURID
+ \ NTLM
+ \ NMAS_LOGIN
+ \ NMAS_AUTHEN
+ \ KERBEROS_V5
+
+syn match ldapconfSASLMechanism contained display
+ \ 'CRAM-MD5\|GSS-SPNEGO\|DIGEST-MD5\|9798-[UM]-\%(RSA-SHA1-ENC\|\%(EC\)\=DSA-SHA1\)\|NMAS-SAMBA-AUTH'
+
+" TODO: I have been unable to find a definition for a SASL realm,
+" authentication identity, and proxy authorization identity.
+syn match ldapconfSASLRealm contained display
+ \ '\S\+'
+
+syn match ldapconfSASLAuthID contained display
+ \ '\S\+'
+
+syn keyword ldapconfSASLSecProps contained
+ \ none
+ \ noplain
+ \ noactive
+ \ nodict
+ \ noanonymous
+ \ forwardsec
+ \ passcred
+ \ nextgroup=ldapconfSASLSecPSep
+
+syn keyword ldapconfSASLSecProps contained
+ \ minssf
+ \ maxssf
+ \ maxbufsize
+ \ nextgroup=ldapconfSASLSecPEq
+
+syn match ldapconfSASLSecPEq contained display
+ \ '='
+ \ nextgroup=ldapconfSASLSecFactor
+
+syn match ldapconfSASLSecFactor contained display
+ \ '\d\+'
+ \ nextgroup=ldapconfSASLSecPSep
+
+syn match ldapconfSASLSecPSep contained display
+ \ ','
+ \ nextgroup=ldapconfSASLSecProps
+
+syn match ldapconfFilename contained display
+ \ '.\+'
+
+syn match ldapconfPath contained display
+ \ '.\+'
+
+" Defined in openssl-ciphers(1).
+" TODO: Should we include the stuff under CIPHER SUITE NAMES?
+syn cluster ldapconfTLSCipher contains=ldapconfTLSCipherOp,
+ \ ldapconfTLSCipherName,
+ \ ldapconfTLSCipherSort
+
+syn match ldapconfTLSCipherOp contained display
+ \ '[+!-]'
+ \ nextgroup=ldapconfTLSCipherName
+
+syn keyword ldapconfTLSCipherName contained
+ \ DEFAULT
+ \ COMPLEMENTOFDEFAULT
+ \ ALL
+ \ COMPLEMENTOFALL
+ \ HIGH
+ \ MEDIUM
+ \ LOW
+ \ EXP
+ \ EXPORT
+ \ EXPORT40
+ \ EXPORT56
+ \ eNULL
+ \ NULL
+ \ aNULL
+ \ kRSA
+ \ RSA
+ \ kEDH
+ \ kDHr
+ \ kDHd
+ \ aRSA
+ \ aDSS
+ \ DSS
+ \ aDH
+ \ kFZA
+ \ aFZA
+ \ eFZA
+ \ FZA
+ \ TLSv1
+ \ SSLv3
+ \ SSLv2
+ \ DH
+ \ ADH
+ \ AES
+ \ 3DES
+ \ DES
+ \ RC4
+ \ RC2
+ \ IDEA
+ \ MD5
+ \ SHA1
+ \ SHA
+ \ Camellia
+ \ nextgroup=ldapconfTLSCipherSep
+
+syn match ldapconfTLSCipherSort contained display
+ \ '@STRENGTH'
+ \ nextgroup=ldapconfTLSCipherSep
+
+syn match ldapconfTLSCipherSep contained display
+ \ '[:, ]'
+ \ nextgroup=@ldapconfTLSCipher
+
+syn keyword ldapconfTLSCertCheck contained
+ \ never
+ \ allow
+ \ try
+ \ demand
+ \ hard
+
+syn keyword ldapconfTLSCRLCheck contained
+ \ none
+ \ peer
+ \ all
+
+hi def link ldapconfTodo Todo
+hi def link ldapconfComment Comment
+hi def link ldapconfOption Keyword
+hi def link ldapconfDeprOption Error
+hi def link ldapconfString String
+hi def link ldapconfURI ldapconfString
+hi def link ldapconfDNAttrType Identifier
+hi def link ldapconfOperator Operator
+hi def link ldapconfEq ldapconfOperator
+hi def link ldapconfDNAttrTypeEq ldapconfEq
+hi def link ldapconfValue ldapconfString
+hi def link ldapconfDNAttrValue ldapconfValue
+hi def link ldapconfSeparator ldapconfOperator
+hi def link ldapconfDNSeparator ldapconfSeparator
+hi def link ldapconfHost ldapconfURI
+hi def link ldapconfNumber Number
+hi def link ldapconfPort ldapconfNumber
+hi def link ldapconfBoolean Boolean
+hi def link ldapconfInteger ldapconfNumber
+hi def link ldapconfType Type
+hi def link ldapconfDerefWhen ldapconfType
+hi def link ldapconfDefine Define
+hi def link ldapconfSASLMechanism ldapconfDefine
+hi def link ldapconfSASLRealm ldapconfURI
+hi def link ldapconfSASLAuthID ldapconfValue
+hi def link ldapconfSASLSecProps ldapconfType
+hi def link ldapconfSASLSecPEq ldapconfEq
+hi def link ldapconfSASLSecFactor ldapconfNumber
+hi def link ldapconfSASLSecPSep ldapconfSeparator
+hi def link ldapconfFilename ldapconfString
+hi def link ldapconfPath ldapconfFilename
+hi def link ldapconfTLSCipherOp ldapconfOperator
+hi def link ldapconfTLSCipherName ldapconfDefine
+hi def link ldapconfSpecial Special
+hi def link ldapconfTLSCipherSort ldapconfSpecial
+hi def link ldapconfTLSCipherSep ldapconfSeparator
+hi def link ldapconfTLSCertCheck ldapconfType
+hi def link ldapconfTLSCRLCheck ldapconfType
+
+let b:current_syntax = "ldapconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/ldif.vim b/runtime/syntax/ldif.vim
new file mode 100644
index 0000000..576e4c0
--- /dev/null
+++ b/runtime/syntax/ldif.vim
@@ -0,0 +1,33 @@
+" Vim syntax file
+" Language: LDAP LDIF
+" Maintainer: Zak Johnson <zakj@nox.cx>
+" Last Change: 2003-12-30
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn sync minlines=10 linebreaks=1
+
+syn match ldifAttribute /^[^ #][^:]*/ contains=ldifOption display
+syn match ldifOption /;[^:]\+/ contained contains=ldifPunctuation display
+syn match ldifPunctuation /;/ contained display
+
+syn region ldifStringValue matchgroup=ldifPunctuation start=/: / end=/\_$/ skip=/\n /
+syn region ldifBase64Value matchgroup=ldifPunctuation start=/:: / end=/\_$/ skip=/\n /
+syn region ldifFileValue matchgroup=ldifPunctuation start=/:< / end=/\_$/ skip=/\n /
+
+syn region ldifComment start=/^#/ end=/\_$/ skip=/\n /
+
+
+hi def link ldifAttribute Type
+hi def link ldifOption Identifier
+hi def link ldifPunctuation Normal
+hi def link ldifStringValue String
+hi def link ldifBase64Value Special
+hi def link ldifFileValue Special
+hi def link ldifComment Comment
+
+
+let b:current_syntax = "ldif"
diff --git a/runtime/syntax/less.vim b/runtime/syntax/less.vim
new file mode 100644
index 0000000..c44f077
--- /dev/null
+++ b/runtime/syntax/less.vim
@@ -0,0 +1,78 @@
+" Vim syntax file
+" Language: less
+" Maintainer: Alessandro Vioni <jenoma@gmail.com>
+" URL: https://github.com/genoma/vim-less
+" Last Change: 2020 Sep 29
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/css.vim
+
+syn case ignore
+
+syn cluster lessCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp
+syn cluster lessCssAttributes contains=css.*Attr,lessEndOfLineComment,lessComment,cssValue.*,cssColor,cssURL,lessDefault,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp
+
+syn region lessDefinition matchgroup=cssBraces start="{" end="}" contains=TOP
+
+syn match lessProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:" contains=css.*Prop skipwhite nextgroup=lessCssAttribute contained containedin=lessDefinition
+syn match lessProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=lessCssAttribute
+syn match lessProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=lessCssAttribute
+syn match lessCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@lessCssAttributes,lessVariable,lessFunction,lessInterpolation
+syn match lessDefault "!default\>" contained
+
+" less variables and media queries
+syn match lessVariable "@[[:alnum:]_-]\+" nextgroup=lessCssAttribute skipwhite
+syn match lessMedia "@media" nextgroup=lessCssAttribute skipwhite
+
+" Less functions
+syn match lessFunction "\<\%(escape\|e\|unit\)\>(\@=" contained
+syn match lessFunction "\<\%(ceil\|floor\|percentage\|round\|sqrt\|abs\|sin\|asin\|cos\|acos\|tan\|atan\|pi\|pow\|min\|max\)\>(\@=" contained
+syn match lessFunction "\<\%(rgb\|rgba\|argb\|argb\|hsl\|hsla\|hsv\|hsva\)\>(\@=" contained
+syn match lessFunction "\<\%(hue\|saturation\|lightness\|red\|green\|blue\|alpha\|luma\)\>(\@=" contained
+syn match lessFunction "\<\%(saturate\|desaturate\|lighten\|darken\|fadein\|fadeout\|fade\|spin\|mix\|greyscale\|contrast\)\>(\@=" contained
+syn match lessFunction "\<\%(multiply\|screen\|overlay\|softlight\|hardlight\|difference\|exclusion\|average\|negation\)\>(\@=" contained
+
+" Less id class visualization
+syn match lessIdChar "#[[:alnum:]_-]\@=" nextgroup=lessId,lessClassIdCall
+syn match lessId "[[:alnum:]_-]\+" contained
+syn match lessClassIdCall "[[:alnum:]_-]\+()" contained
+
+syn match lessClassChar "\.[[:alnum:]_-]\@=" nextgroup=lessClass,lessClassCall
+syn match lessClass "[[:alnum:]_-]\+" contained
+syn match lessClassCall "[[:alnum:]_-]\+()" contained
+
+syn match lessAmpersand "&" contains=lessIdChar,lessClassChar
+
+syn region lessInclude start="@import" end=";\|$" contains=lessComment,cssURL,cssUnicodeEscape,cssMediaType,cssStringQ,cssStringQQ
+
+syn keyword lessTodo FIXME NOTE TODO OPTIMIZE XXX contained
+syn region lessComment start="^\z(\s*\)//" end="^\%(\z1 \)\@!" contains=lessTodo,@Spell
+syn region lessCssComment start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=lessTodo,@Spell
+syn match lessEndOfLineComment "//.*" contains=lessComment,lessTodo,@Spell
+
+hi def link lessEndOfLineComment lessComment
+hi def link lessCssComment lessComment
+hi def link lessComment Comment
+hi def link lessDefault cssImportant
+hi def link lessVariable Identifier
+hi def link lessFunction PreProc
+hi def link lessTodo Todo
+hi def link lessInclude Include
+hi def link lessIdChar Special
+hi def link lessClassChar Special
+hi def link lessAmpersand Character
+hi def link lessId Identifier
+hi def link lessClass Type
+hi def link lessCssAttribute PreProc
+hi def link lessClassCall Type
+hi def link lessClassIdCall Type
+hi def link lessTagName cssTagName
+hi def link lessDeprecated cssDeprecated
+hi def link lessMedia cssMedia
+
+let b:current_syntax = "less"
+
+" vim:set sw=2:
diff --git a/runtime/syntax/lex.vim b/runtime/syntax/lex.vim
new file mode 100644
index 0000000..82197ad
--- /dev/null
+++ b/runtime/syntax/lex.vim
@@ -0,0 +1,188 @@
+" Vim syntax file
+" Language: Lex and Flex
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Contributor: Robert A. van Engelen <engelen@acm.org>
+" Last Change: Apr 24, 2020
+" Version: 18
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the C++ syntax to start with
+let s:Cpath= fnameescape(expand("<sfile>:p:h")."/cpp.vim")
+if !filereadable(s:Cpath)
+ for s:Cpath in split(globpath(&rtp,"syntax/cpp.vim"),"\n")
+ if filereadable(fnameescape(s:Cpath))
+ let s:Cpath= fnameescape(s:Cpath)
+ break
+ endif
+ endfor
+endif
+exe "syn include @lexCcode ".s:Cpath
+
+" --- ========= ---
+" --- Lex stuff ---
+" --- ========= ---
+
+" Definitions
+" %%
+" Rules
+" %%
+" User Code
+"
+" --- ======= ---
+" --- Example ---
+" --- ======= ---
+"
+" // this is a valid lex file
+" // indented initial code block
+" #include <stdlib.h>
+" %{
+" // initial code block
+" #include <stdio.h>
+" const char *sep = "";
+" %}
+" %option outfile="scanner.c" noyywrap nodefault
+" %x COMMENT
+" id [A-Za-z_][A-Za-z0-9_]*
+" %%
+" // indented initial action code block
+" printf("BEGIN");
+" {id} printf("%s%s", sep, yytext); sep = "";
+" . |
+" \n { sep = "\n"; }
+" "/*" { BEGIN COMMENT; }
+" "//".* { }
+" <COMMENT>{
+" "*/" { BEGIN INITIAL; }
+" .|\n
+" }
+" <*><<EOF>> { // end of file
+" printf("\nEND\n");
+" yyterminate();
+" }
+" %%
+" void scan()
+" {
+" while (yylex())
+" continue;
+" }
+" /* main program */
+" int main()
+" {
+" scan();
+" }
+
+" Definitions Section with initial code blocks, abbreviations, options, states
+if has("folding")
+ syn region lexAbbrvBlock fold start="^\S" end="^\ze%%" skipnl nextgroup=lexPatBlock contains=lexOptions,lexAbbrv,lexInitialCodeBlock,lexInclude,lexAbbrvComment,lexStartState
+else
+ syn region lexAbbrvBlock start="^\S" end="^\ze%%" skipnl nextgroup=lexPatBlock contains=lexOptions,lexAbbrv,lexInitialCodeBlock,lexInclude,lexAbbrvComment,lexStartState
+endif
+syn match lexOptions "^%\a\+\(\s.*\|[^{]*\)$" contains=lexOptionsEq,lexPatString,lexSlashQuote,lexBrace,lexSlashBrace
+syn match lexOptionsEq "=" skipwhite contained
+syn match lexAbbrv "^\I\i*\s"me=e-1 skipwhite contained nextgroup=lexAbbrvPat
+syn match lexAbbrvPat "\s\S.*$"lc=1 contained contains=lexPatAbbrv,lexPatString,lexSlashQuote,lexBrace,lexSlashBrace nextgroup=lexAbbrv,lexInclude
+syn match lexStartState "^%\(xs\?\|s\)\(t\(a\(t\(e\?\)\?\)\?\)\?\)\?\(\s\+\I\i*\)\+\s*$" contained contains=lexStartStateCmd
+syn match lexStartStateCmd '^%\(xs\?\|s\)\(t\(a\(t\(e\?\)\?\)\?\)\?\)\?' contained
+if has("folding")
+ syn region lexInitialCodeBlock fold start="^\s\+" end="^\S"me=e-1 contains=@lexCcode
+ syn region lexInclude fold matchgroup=lexSep start="^%\a*{" end="^%\?}" contained contains=@lexCcode,lexCFunctions
+ syn region lexAbbrvComment fold start="^\s*//" end="$" contains=@Spell
+ syn region lexAbbrvComment fold start="^\s*/\*" end="\*/" contains=@Spell
+else
+ syn region lexInitialCodeBlock start="^\s\+" end="^\S"me=e-1 contains=@lexCcode
+ syn region lexInclude matchgroup=lexSep start="^%\a*{" end="^%\?}" contained contains=@lexCcode,lexCFunctions
+ syn region lexAbbrvComment start="^\s*//" end="$" contains=@Spell
+ syn region lexAbbrvComment start="^\s*/\*" end="\*/" contains=@Spell
+endif
+
+" Rules Section with patterns and actions
+if has("folding")
+ syn region lexPatBlock fold matchgroup=Todo start="^%%" matchgroup=Todo end="^\ze%%" skipnl skipwhite nextgroup=lexFinalCodeBlock contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatSep,lexPatInclude
+ syn region lexPat fold start="\S" skip="\\\\\|\\\s" end="\ze\(\s*$\|\s\+\(\h\|{\W\|{$\|[-+*]\|//\|/\*\)\)" skipwhite contained nextgroup=lexMorePat,lexPatSep,lexPatEnd contains=lexPatTag,lexPatString,lexSlashQuote,lexPatAbbrv,lexBrace,lexSlashBrace
+ syn region lexPatInclude fold matchgroup=lexSep start="^%{" end="^%}" contained contains=@lexCcode
+ syn region lexBrace fold matchgroup=Character start="\[" skip="\\.\|\[:\a\+:\]\|\[\.\a\+\.\]\|\[=.=\]" end="\]" contained
+ syn region lexPatString fold matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained
+else
+ syn region lexPatBlock matchgroup=Todo start="^%%" matchgroup=Todo end="^\ze%%" skipnl skipwhite nextgroup=lexFinalCodeBlock contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatSep,lexPatInclude
+ syn region lexPat start="\S" skip="\\\\\|\\\s" end="\ze\(\s*$\|\s\+\(\h\|{\W\|{$\|[-+*]\|//\|/\*\)\)" skipwhite contained nextgroup=lexMorePat,lexPatSep,lexPatEnd contains=lexPatTag,lexPatString,lexSlashQuote,lexPatAbbrv,lexBrace,lexSlashBrace
+ syn region lexPatInclude matchgroup=lexSep start="^%{" end="^%}" contained contains=@lexCcode
+ syn region lexBrace matchgroup=Character start="\[" skip="\\.\|\[:\a\+:\]\|\[\.\a\+\.\]\|\[=.=\]" end="\]" contained
+ syn region lexPatString matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained
+endif
+syn match lexPatAbbrv "{\I\i*}"hs=s+1,he=e-1 contained
+syn match lexPatTag "^<\^\?\(\I\i*\|\*\)\(,\^\?\(\I\i*\|\*\)\)*>" contained nextgroup=lexPat,lexMorePat,lexPatSep,lexPatEnd
+syn match lexPatTagZone "^<\^\?\(\I\i*\|\*\)\(,\^\?\(\I\i*\|\*\)\)*>\s*{$"me=e-1 contained nextgroup=lexPatTagZoneStart
+
+if has("folding")
+ syn region lexPatTagZoneStart fold matchgroup=lexPatTag start='{$' end='^}' skipnl skipwhite contained contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatSep,lexPatInclude
+ syn region lexPatComment fold start="//" end="$" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
+ syn region lexPatComment fold start="/\*" end="\*/" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
+else
+ syn region lexPatTagZoneStart matchgroup=lexPatTag start='{' end='^}' skipnl skipwhite contained contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatSep,lexPatInclude
+ syn region lexPatComment start="//" end="$" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
+ syn region lexPatComment start="/\*" end="\*/" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
+endif
+syn match lexPatEnd "\s*$" skipnl contained
+syn match lexPatCodeLine "[^{\[].*" contained contains=@lexCcode,lexCFunctions
+syn match lexMorePat "\s*|\s*$" skipnl contained nextgroup=lexPat,lexPatTag,lexPatComment
+syn match lexPatSep "\s\+" contained nextgroup=lexMorePat,lexPatCode,lexPatCodeLine
+syn match lexSlashQuote +\(\\\\\)*\\"+ contained
+syn match lexSlashBrace +\(\\\\\)*\\\[+ contained
+if has("folding")
+ syn region lexPatCode fold matchgroup=Delimiter start="{" end="}" skipnl contained contains=@lexCcode,lexCFunctions
+else
+ syn region lexPatCode matchgroup=Delimiter start="{" end="}" skipnl contained contains=@lexCcode,lexCFunctions
+endif
+
+" User Code Section with final code block
+syn region lexFinalCodeBlock matchgroup=Todo start="^%%" end="\%$" contained contains=@lexCcode
+
+" Lex macros which may appear in C/C++ code blocks
+syn keyword lexCFunctions BEGIN ECHO REJECT yytext YYText yyleng YYLeng yymore yyless yywrap yylook
+syn keyword lexCFunctions yyrestart yyterminate yylineno yycolumno yyin yyout
+syn keyword lexCFunctions input unput output winput wunput woutput
+syn keyword lexCFunctions yyinput yyunput yyoutput yywinput yywunput yywoutput
+
+" <c.vim> includes several ALLBUTs; these have to be treated so as to exclude lex* groups
+syn cluster cParenGroup add=lex.*
+syn cluster cDefineGroup add=lex.*
+syn cluster cPreProcGroup add=lex.*
+syn cluster cMultiGroup add=lex.*
+
+" Synchronization
+syn sync clear
+syn sync minlines=500
+syn sync match lexSyncPat grouphere lexPatBlock "^%[a-zA-Z]"
+syn sync match lexSyncPat groupthere lexPatBlock "^<$"
+syn sync match lexSyncPat groupthere lexPatBlock "^%%"
+
+" The default highlighting.
+if !exists("skip_lex_syntax_inits")
+ hi def link lexAbbrvComment lexPatComment
+ hi def link lexAbbrvPat lexPat
+ hi def link lexAbbrv Special
+ hi def link lexBrace lexPat
+ hi def link lexCFunctions PreProc
+ hi def link lexMorePat Special
+ hi def link lexOptions PreProc
+ hi def link lexOptionsEq Operator
+ hi def link lexPatComment Comment
+ hi def link lexPat Function
+ hi def link lexPatString lexPat
+ hi def link lexPatAbbrv Special
+ hi def link lexPatTag Statement
+ hi def link lexPatTagZone lexPatTag
+ hi def link lexSep Delimiter
+ hi def link lexSlashQuote lexPat
+ hi def link lexSlashBrace lexPat
+ hi def link lexStartState lexPatTag
+ hi def link lexStartStateCmd Special
+endif
+
+let b:current_syntax = "lex"
+
+" vim:ts=8
diff --git a/runtime/syntax/lftp.vim b/runtime/syntax/lftp.vim
new file mode 100644
index 0000000..20ddee5
--- /dev/null
+++ b/runtime/syntax/lftp.vim
@@ -0,0 +1,152 @@
+" Vim syntax file
+" Language: lftp(1) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-06-17
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword+=-
+
+syn region lftpComment display oneline start='#' end='$'
+ \ contains=lftpTodo,@Spell
+
+syn keyword lftpTodo contained TODO FIXME XXX NOTE
+
+syn region lftpString contained display
+ \ start=+"+ skip=+\\$\|\\"+ end=+"+ end=+$+
+
+syn match lftpNumber contained display '\<\d\+\(\.\d\+\)\=\>'
+
+syn keyword lftpBoolean contained yes no on off true false
+
+syn keyword lftpInterval contained infinity inf never forever
+syn match lftpInterval contained '\<\(\d\+\(\.\d\+\)\=[dhms]\)\+\>'
+
+syn keyword lftpKeywords alias anon at bookmark cache cat cd chmod close
+ \ cls command debug du echo exit fg find get
+ \ get1 glob help history jobs kill lcd lftp
+ \ lpwd ls mget mirror mkdir module more mput
+ \ mrm mv nlist open pget put pwd queue quote
+ \ reget recls rels renlist repeat reput rm
+ \ rmdir scache site source suspend user version
+ \ wait zcat zmore
+
+syn region lftpSet matchgroup=lftpKeywords
+ \ start="set" end=";" end="$"
+ \ contains=lftpString,lftpNumber,lftpBoolean,
+ \ lftpInterval,lftpSettingsPrefix,lftpSettings
+syn match lftpSettingsPrefix contained '\<\%(bmk\|cache\|cmd\|color\|dns\):'
+syn match lftpSettingsPrefix contained '\<\%(file\|fish\|ftp\|hftp\):'
+syn match lftpSettingsPrefix contained '\<\%(http\|https\|mirror\|module\):'
+syn match lftpSettingsPrefix contained '\<\%(net\|sftp\|ssl\|xfer\):'
+" bmk:
+syn keyword lftpSettings contained save-p[asswords]
+" cache:
+syn keyword lftpSettings contained cache-em[pty-listings] en[able]
+ \ exp[ire] siz[e]
+" cmd:
+syn keyword lftpSettings contained at[-exit] cls-c[ompletion-default]
+ \ cls-d[efault] cs[h-history]
+ \ default-p[rotocol] default-t[itle]
+syn keyword lftpSettings contained fai[l-exit] in[teractive]
+ \ lo[ng-running] ls[-default] mo[ve-background]
+ \ prom[pt]
+ \ rem[ote-completion]
+ \ save-c[wd-history] save-r[l-history]
+ \ set-t[erm-status] statu[s-interval]
+ \ te[rm-status] verb[ose] verify-h[ost]
+ \ verify-path verify-path[-cached]
+" color:
+syn keyword lftpSettings contained dir[-colors] use-c[olor]
+" dns:
+syn keyword lftpSettings contained S[RV-query] cache-en[able]
+ \ cache-ex[pire] cache-s[ize]
+ \ fat[al-timeout] o[rder] use-fo[rk]
+" file:
+syn keyword lftpSettings contained ch[arset]
+" fish:
+syn keyword lftpSettings contained connect[-program] sh[ell]
+" ftp:
+syn keyword lftpSettings contained acct anon-p[ass] anon-u[ser]
+ \ au[to-sync-mode] b[ind-data-socket]
+ \ ch[arset] cli[ent] dev[ice-prefix]
+ \ fi[x-pasv-address] fxp-f[orce]
+ \ fxp-p[assive-source] h[ome] la[ng]
+ \ list-e[mpty-ok] list-o[ptions]
+ \ nop[-interval] pas[sive-mode]
+ \ port-i[pv4] port-r[ange] prox[y]
+ \ rest-l[ist] rest-s[tor]
+ \ retry-530 retry-530[-anonymous]
+ \ sit[e-group] skey-a[llow]
+ \ skey-f[orce] ssl-allow
+ \ ssl-allow[-anonymous] ssl-au[th]
+ \ ssl-f[orce] ssl-protect-d[ata]
+ \ ssl-protect-l[ist] stat-[interval]
+ \ sy[nc-mode] timez[one] use-a[bor]
+ \ use-fe[at] use-fx[p] use-hf[tp]
+ \ use-mdtm use-mdtm[-overloaded]
+ \ use-ml[sd] use-p[ret] use-q[uit]
+ \ use-site-c[hmod] use-site-i[dle]
+ \ use-site-u[time] use-siz[e]
+ \ use-st[at] use-te[lnet-iac]
+ \ verify-a[ddress] verify-p[ort]
+ \ w[eb-mode]
+" hftp:
+syn keyword lftpSettings contained w[eb-mode] cache prox[y]
+ \ use-au[thorization] use-he[ad] use-ty[pe]
+" http:
+syn keyword lftpSettings contained accept accept-c[harset]
+ \ accept-l[anguage] cache coo[kie]
+ \ pos[t-content-type] prox[y]
+ \ put-c[ontent-type] put-m[ethod] ref[erer]
+ \ set-c[ookies] user[-agent]
+" https:
+syn keyword lftpSettings contained prox[y]
+" mirror:
+syn keyword lftpSettings contained exc[lude-regex] o[rder]
+ \ parallel-d[irectories]
+ \ parallel-t[ransfer-count] use-p[get-n]
+" module:
+syn keyword lftpSettings contained pat[h]
+" net:
+syn keyword lftpSettings contained connection-l[imit]
+ \ connection-t[akeover] id[le] limit-m[ax]
+ \ limit-r[ate] limit-total-m[ax]
+ \ limit-total-r[ate] max-ret[ries] no-[proxy]
+ \ pe[rsist-retries] reconnect-interval-b[ase]
+ \ reconnect-interval-ma[x]
+ \ reconnect-interval-mu[ltiplier]
+ \ socket-bind-ipv4 socket-bind-ipv6
+ \ socket-bu[ffer] socket-m[axseg] timeo[ut]
+" sftp:
+syn keyword lftpSettings contained connect[-program]
+ \ max-p[ackets-in-flight] prot[ocol-version]
+ \ ser[ver-program] size-r[ead] size-w[rite]
+" ssl:
+syn keyword lftpSettings contained ca-f[ile] ca-p[ath] ce[rt-file]
+ \ crl-f[ile] crl-p[ath] k[ey-file]
+ \ verify-c[ertificate]
+" xfer:
+syn keyword lftpSettings contained clo[bber] dis[k-full-fatal]
+ \ eta-p[eriod] eta-t[erse] mak[e-backup]
+ \ max-red[irections] ra[te-period]
+
+hi def link lftpComment Comment
+hi def link lftpTodo Todo
+hi def link lftpString String
+hi def link lftpNumber Number
+hi def link lftpBoolean Boolean
+hi def link lftpInterval Number
+hi def link lftpKeywords Keyword
+hi def link lftpSettingsPrefix PreProc
+hi def link lftpSettings Type
+
+let b:current_syntax = "lftp"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/lhaskell.vim b/runtime/syntax/lhaskell.vim
new file mode 100644
index 0000000..cf1f126
--- /dev/null
+++ b/runtime/syntax/lhaskell.vim
@@ -0,0 +1,134 @@
+" Vim syntax file
+" Language: Haskell with literate comments, Bird style,
+" Markdown style, TeX style and plain text surrounding
+" \begin{code} \end{code} blocks
+" Maintainer: Haskell Cafe mailinglist <haskell-cafe@haskell.org>
+" Original Author: Arthur van Leeuwen <arthurvl@cs.uu.nl>
+" Last Change: 2020 Feb 25
+" Version: 1.05
+"
+" Thanks to Ian Lynagh for thoughtful comments on initial versions and
+" for the inspiration for writing this in the first place.
+"
+" This style guesses as to the type of markup used in a literate haskell
+" file and will highlight (La)TeX markup if it finds any
+" This behaviour can be overridden, both glabally and locally using
+" the lhs_markup variable or b:lhs_markup variable respectively.
+"
+" lhs_markup must be set to either tex or none to indicate that
+" you always want (La)TeX highlighting or no highlighting
+" must not be set to let the highlighting be guessed
+" b:lhs_markup must be set to eiterh tex or none to indicate that
+" you want (La)TeX highlighting or no highlighting for
+" this particular buffer
+" must not be set to let the highlighting be guessed
+"
+"
+" 2004 February 18: New version, based on Ian Lynagh's TeX guessing
+" lhaskell.vim, cweb.vim, tex.vim, sh.vim and fortran.vim
+" 2004 February 20: Cleaned up the guessing and overriding a bit
+" 2004 February 23: Cleaned up syntax highlighting for \begin{code} and
+" \end{code}, added some clarification to the attributions
+" 2008 July 1: Removed % from guess list, as it totally breaks plain
+" text markup guessing
+" 2009 April 29: Fixed highlighting breakage in TeX mode,
+" thanks to Kalman Noel
+"
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" First off, see if we can inherit a user preference for lhs_markup
+if !exists("b:lhs_markup")
+ if exists("lhs_markup")
+ if lhs_markup =~ '\<\%(tex\|md\|none\)\>'
+ let b:lhs_markup = matchstr(lhs_markup,'\<\%(tex\|md\|none\)\>')
+ else
+ echohl WarningMsg | echo "Unknown value of lhs_markup" | echohl None
+ let b:lhs_markup = "unknown"
+ endif
+ else
+ let b:lhs_markup = "unknown"
+ endif
+else
+ if b:lhs_markup !~ '\<\%(tex\|md\|none\)\>'
+ let b:lhs_markup = "unknown"
+ endif
+endif
+
+" Remember where the cursor is, and go to upperleft
+let s:oldline=line(".")
+let s:oldcolumn=col(".")
+call cursor(1,1)
+
+" If no user preference, scan buffer for our guess of the markup to
+" highlight. We only differentiate between TeX and plain markup, where
+" plain is not highlighted. The heuristic for finding TeX markup is if
+" one of the following occurs anywhere in the file:
+" - \documentclass
+" - \begin{env} (for env != code)
+" - \part, \chapter, \section, \subsection, \subsubsection, etc
+if b:lhs_markup == "unknown"
+ if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub\)*section\|\\chapter|\\part','W') != 0
+ let b:lhs_markup = "tex"
+ elseif search('```haskell','W') != 0
+ let b:lhs_markup = "md"
+ else
+ let b:lhs_markup = "plain"
+ endif
+endif
+
+" If user wants us to highlight TeX syntax or guess thinks it's TeX, read it.
+if b:lhs_markup == "tex"
+ runtime! syntax/tex.vim
+ unlet b:current_syntax
+ " Tex.vim removes "_" from 'iskeyword', but we need it for Haskell.
+ setlocal isk+=_
+ syntax cluster lhsTeXContainer contains=tex.*Zone,texAbstract
+elseif b:lhs_markup == "md"
+ runtime! syntax/markdown.vim
+ unlet b:current_syntax
+ syntax cluster lhsTeXContainer contains=markdown.*
+else
+ syntax cluster lhsTeXContainer contains=.*
+endif
+
+" Literate Haskell is Haskell in between text, so at least read Haskell
+" highlighting
+syntax include @haskellTop syntax/haskell.vim
+
+syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack containedin=@lhsTeXContainer
+syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,beginCodeBegin containedin=@lhsTeXContainer
+syntax region lhsHaskellMDBlock start="^```haskell$" matchgroup=NONE end="^```$" keepend contains=@haskellTop,lhsMarkdownCode containedin=@lhsTeXContainer
+
+syntax match lhsBirdTrack "^>" contained
+
+syntax match lhsMarkdownCode "^\(```haskell\|^```\)$" contained
+
+syntax match beginCodeBegin "^\\begin" nextgroup=beginCodeCode contained
+syntax region beginCodeCode matchgroup=texDelimiter start="{" end="}"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link lhsBirdTrack Comment
+
+hi def link lhsMarkdownCode Comment
+
+hi def link beginCodeBegin texCmdName
+hi def link beginCodeCode texSection
+
+
+" Restore cursor to original position, as it may have been disturbed
+" by the searches in our guessing code
+call cursor (s:oldline, s:oldcolumn)
+
+unlet s:oldline
+unlet s:oldcolumn
+
+let b:current_syntax = "lhaskell"
+
+" vim: ts=8
diff --git a/runtime/syntax/libao.vim b/runtime/syntax/libao.vim
new file mode 100644
index 0000000..1a3bd90
--- /dev/null
+++ b/runtime/syntax/libao.vim
@@ -0,0 +1,27 @@
+" Vim syntax file
+" Language: libao.conf(5) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword libaoTodo contained TODO FIXME XXX NOTE
+
+syn region libaoComment display oneline start='^\s*#' end='$'
+ \ contains=libaoTodo,@Spell
+
+syn keyword libaoKeyword default_driver
+
+hi def link libaoTodo Todo
+hi def link libaoComment Comment
+hi def link libaoKeyword Keyword
+
+let b:current_syntax = "libao"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/lifelines.vim b/runtime/syntax/lifelines.vim
new file mode 100644
index 0000000..ff46928
--- /dev/null
+++ b/runtime/syntax/lifelines.vim
@@ -0,0 +1,154 @@
+" Vim syntax file
+" Language: LifeLines (v 3.0.62) <http://lifelines.sourceforge.net>
+" Maintainer: Patrick Texier <p.texier@orsennes.com>
+" Location: <http://patrick.texier.free.fr/vim/syntax/lifelines.vim>
+" Last Change: 2010 May 7
+
+" option to highlight error obsolete statements
+" add the following line to your .vimrc file :
+" let lifelines_deprecated = 1
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" A bunch of useful LifeLines keywords 3.0.62
+
+syn keyword lifelinesDecl char_encoding require option include
+syn keyword lifelinesStatement set
+syn keyword lifelinesUser getindi geindiset getfam getint getstr choosechild
+syn keyword lifelinesUser chooseindi choosespouse choosesubset menuchoose
+syn keyword lifelinesUser choosefam
+syn keyword lifelinesProc proc func return call
+syn keyword lifelinesInclude include
+syn keyword lifelinesDef global
+syn keyword lifelinesConditional if else elsif switch
+syn keyword lifelinesRepeat continue break while
+syn keyword lifelinesLogical and or not eq ne lt gt le ge strcmp eqstr nestr
+syn keyword lifelinesArithm add sub mul div mod exp neg incr decr
+syn keyword lifelinesArithm cos sin tan arccos arcsin arctan
+syn keyword lifelinesArithm deg2dms dms2deg spdist
+syn keyword lifelinesIndi name fullname surname givens trimname birth
+syn keyword lifelinesIndi death burial baptism
+syn keyword lifelinesIndi father mother nextsib prevsib sex male female
+syn keyword lifelinesIndi pn nspouses nfamilies parents title key
+syn keyword lifelinesIndi soundex inode root indi firstindi nextindi
+syn keyword lifelinesIndi previndi spouses families forindi indiset
+syn keyword lifelinesIndi addtoset deletefromset union intersect
+syn keyword lifelinesIndi difference parentset childset spouseset siblingset
+syn keyword lifelinesIndi ancestorset descendentset descendantset uniqueset
+syn keyword lifelinesIndi namesort keysort valuesort genindiset getindiset
+syn keyword lifelinesIndi forindiset lastindi writeindi
+syn keyword lifelinesIndi inset
+syn keyword lifelinesFam marriage husband wife nchildren firstchild
+syn keyword lifelinesFam lastchild fnode fam firstfam nextfam lastfam
+syn keyword lifelinesFam prevfam children forfam writefam
+syn keyword lifelinesFam fathers mothers Parents
+syn keyword lifelinesList list empty length enqueue dequeue requeue
+syn keyword lifelinesList push pop setel getel forlist inlist dup clear
+syn keyword lifelinesTable table insert lookup
+syn keyword lifelinesGedcom xref tag value parent child sibling savenode
+syn keyword lifelinesGedcom fornodes traverse createnode addnode
+syn keyword lifelinesGedcom detachnode foreven fornotes forothr forsour
+syn keyword lifelinesGedcom reference dereference getrecord
+syn keyword lifelinesGedcom gengedcomstrong
+syn keyword lifelinesFunct date place year long short gettoday dayformat
+syn keyword lifelinesFunct monthformat dateformat extractdate eraformat
+syn keyword lifelinesFunct complexdate complexformat complexpic datepic
+syn keyword lifelinesFunct extractnames extractplaces extracttokens lower
+syn keyword lifelinesFunct yearformat
+syn keyword lifelinesFunct upper capitalize trim rjustify
+syn keyword lifelinesFunct concat strconcat strlen substring index
+syn keyword lifelinesFunct titlecase gettext
+syn keyword lifelinesFunct d card ord alpha roman strsoundex strtoint
+syn keyword lifelinesFunct atoi linemode pagemod col row pos pageout nl
+syn keyword lifelinesFunct sp qt newfile outfile copyfile print lock unlock test
+syn keyword lifelinesFunct database version system stddate program
+syn keyword lifelinesFunct pvalue pagemode level extractdatestr debug
+syn keyword lifelinesFunct f float int free getcol getproperty heapused
+syn keyword lifelinesFunct sort rsort
+syn keyword lifelinesFunct deleteel
+syn keyword lifelinesFunct bytecode convertcode setlocale
+" New dates functions (since 3.0.51)
+syn keyword lifelinesFunct jd2date date2jd dayofweek setdate
+
+" options to highlight as error obsolete statements
+" please read ll-reportmanual.
+
+if exists("lifelines_deprecated")
+ syn keyword lifelinesError getintmsg getindimsg getstrmsg
+ syn keyword lifelinesError gengedcom gengedcomweak deletenode
+ syn keyword lifelinesError save strsave
+ syn keyword lifelinesError lengthset
+ if version >= 700
+ let g:omni_syntax_group_exclude_lifelines = 'lifelinesError'
+ endif
+else
+ syn keyword lifelinesUser getintmsg getindimsg getstrmsg
+ syn keyword lifelinesGedcom gengedcom gengedcomweak deletenode
+ syn keyword lifelinesFunct save strsave
+ syn keyword lifelinesIndi lengthset
+endif
+
+syn region lifelinesString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=lifelinesSpecial
+
+syn match lifelinesSpecial "\\\(\\\|\(n\|t\)\)" contained
+
+syn keyword lifelinesTodo contained TODO FIXME XXX
+syn region lifelinesComment start="/\*" end="\*/" contains=lifelinesTodo
+
+" integers
+syn match lifelinesNumber "-\=\<\d\+\>"
+"floats, with dot
+syn match lifelinesNumber "-\=\<\d\+\.\d*\>"
+"floats, starting with a dot
+syn match lifelinesNumber "-\=\.\d\+\>"
+
+" folding using {}
+syn region lifelinesFoldBlock start="{" end="}" transparent fold
+
+"catch errors caused by wrong parenthesis
+"adapted from original c.vim written by Bram Moolenaar
+
+syn cluster lifelinesParenGroup contains=lifelinesParenError
+syn region lifelinesParen transparent start='(' end=')' contains=ALLBUT,@lifelinesParenGroup
+syn match lifelinesParenError ")"
+syn match lifelinesErrInParen contained "[{}]"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+
+hi def link lifelinesConditional Conditional
+hi def link lifelinesArithm Operator
+hi def link lifelinesLogical Conditional
+hi def link lifelinesInclude Include
+hi def link lifelinesComment Comment
+hi def link lifelinesStatement Statement
+hi def link lifelinesUser Statement
+hi def link lifelinesFunct Statement
+hi def link lifelinesTable Statement
+hi def link lifelinesGedcom Statement
+hi def link lifelinesList Statement
+hi def link lifelinesRepeat Repeat
+hi def link lifelinesFam Statement
+hi def link lifelinesIndi Statement
+hi def link lifelinesProc Statement
+hi def link lifelinesDef Statement
+hi def link lifelinesString String
+hi def link lifelinesSpecial Special
+hi def link lifelinesNumber Number
+hi def link lifelinesParenError Error
+hi def link lifelinesErrInParen Error
+hi def link lifelinesError Error
+hi def link lifelinesTodo Todo
+hi def link lifelinesDecl PreProc
+
+
+let b:current_syntax = "lifelines"
+
+" vim: ts=8 sw=4
diff --git a/runtime/syntax/lilo.vim b/runtime/syntax/lilo.vim
new file mode 100644
index 0000000..a87dafb
--- /dev/null
+++ b/runtime/syntax/lilo.vim
@@ -0,0 +1,174 @@
+" Vim syntax file
+" Language: lilo configuration (lilo.conf)
+" Maintainer: Niels Horn <niels.horn@gmail.com>
+" Previous Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
+" Last Change: 2010-02-03
+
+" Setup
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=@,48-57,.,-,_
+
+syn case ignore
+
+" Base constructs
+syn match liloError "\S\+"
+syn match liloComment "#.*$"
+syn match liloEnviron "\$\w\+" contained
+syn match liloEnviron "\${[^}]\+}" contained
+syn match liloDecNumber "\d\+" contained
+syn match liloHexNumber "0[xX]\x\+" contained
+syn match liloDecNumberP "\d\+p\=" contained
+syn match liloSpecial contained "\\\(\"\|\\\|$\)"
+syn region liloString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained contains=liloSpecial,liloEnviron
+syn match liloLabel :[^ "]\+: contained contains=liloSpecial,liloEnviron
+syn region liloPath start=+[$/]+ skip=+\\\\\|\\ \|\\$"+ end=+ \|$+ contained contains=liloSpecial,liloEnviron
+syn match liloDecNumberList "\(\d\|,\)\+" contained contains=liloDecNumber
+syn match liloDecNumberPList "\(\d\|[,p]\)\+" contained contains=liloDecNumberP,liloDecNumber
+syn region liloAnything start=+[^[:space:]#]+ skip=+\\\\\|\\ \|\\$+ end=+ \|$+ contained contains=liloSpecial,liloEnviron,liloString
+
+" Path
+syn keyword liloOption backup bitmap boot disktab force-backup keytable map message nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty
+syn keyword liloKernelOpt initrd root nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty
+syn keyword liloImageOpt path loader table nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty
+syn keyword liloDiskOpt partition nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty
+
+" Other
+syn keyword liloOption menu-scheme raid-extra-boot serial install nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty
+syn keyword liloOption bios-passes-dl nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty
+syn keyword liloOption default label alias wmdefault nextgroup=liloEqLabelString,liloEqLabelStringComment,liloError skipwhite skipempty
+syn keyword liloKernelOpt ramdisk nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty
+syn keyword liloImageOpt password range nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty
+syn keyword liloDiskOpt set type nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty
+
+" Symbolic
+syn keyword liloKernelOpt vga nextgroup=liloEqVga,liloEqVgaComment,liloError skipwhite skipempty
+
+" Number
+syn keyword liloOption delay timeout verbose nextgroup=liloEqDecNumber,liloEqDecNumberComment,liloError skipwhite skipempty
+syn keyword liloDiskOpt sectors heads cylinders start nextgroup=liloEqDecNumber,liloEqDecNumberComment,liloError skipwhite skipempty
+
+" String
+syn keyword liloOption menu-title nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty
+syn keyword liloKernelOpt append addappend nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty
+syn keyword liloImageOpt fallback literal nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty
+
+" Hex number
+syn keyword liloImageOpt map-drive to boot-as nextgroup=liloEqHexNumber,liloEqHexNumberComment,liloError skipwhite skipempty
+syn keyword liloDiskOpt bios normal hidden nextgroup=liloEqNumber,liloEqNumberComment,liloError skipwhite skipempty
+
+" Number list
+syn keyword liloOption bmp-colors nextgroup=liloEqNumberList,liloEqNumberListComment,liloError skipwhite skipempty
+
+" Number list, some of the numbers followed by p
+syn keyword liloOption bmp-table bmp-timer nextgroup=liloEqDecNumberPList,liloEqDecNumberPListComment,liloError skipwhite skipempty
+
+" Flag
+syn keyword liloOption compact fix-table geometric ignore-table lba32 linear mandatory nowarn prompt
+syn keyword liloOption bmp-retain el-torito-bootable-CD large-memory suppress-boot-time-BIOS-data
+syn keyword liloKernelOpt read-only read-write
+syn keyword liloImageOpt bypass lock mandatory optional restricted single-key unsafe
+syn keyword liloImageOpt master-boot wmwarn wmdisable
+syn keyword liloDiskOpt change activate deactivate inaccessible reset
+
+" Image
+syn keyword liloImage image other nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty
+syn keyword liloDisk disk nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty
+syn keyword liloChRules change-rules
+
+" Vga keywords
+syn keyword liloVgaKeyword ask ext extended normal contained
+
+" Comment followed by equal sign and ...
+syn match liloEqPathComment "#.*$" contained nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty
+syn match liloEqVgaComment "#.*$" contained nextgroup=liloEqVga,liloEqVgaComment,liloError skipwhite skipempty
+syn match liloEqNumberComment "#.*$" contained nextgroup=liloEqNumber,liloEqNumberComment,liloError skipwhite skipempty
+syn match liloEqDecNumberComment "#.*$" contained nextgroup=liloEqDecNumber,liloEqDecNumberComment,liloError skipwhite skipempty
+syn match liloEqHexNumberComment "#.*$" contained nextgroup=liloEqHexNumber,liloEqHexNumberComment,liloError skipwhite skipempty
+syn match liloEqStringComment "#.*$" contained nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty
+syn match liloEqLabelStringComment "#.*$" contained nextgroup=liloEqLabelString,liloEqLabelStringComment,liloError skipwhite skipempty
+syn match liloEqNumberListComment "#.*$" contained nextgroup=liloEqNumberList,liloEqNumberListComment,liloError skipwhite skipempty
+syn match liloEqDecNumberPListComment "#.*$" contained nextgroup=liloEqDecNumberPList,liloEqDecNumberPListComment,liloError skipwhite skipempty
+syn match liloEqAnythingComment "#.*$" contained nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty
+
+" Equal sign followed by ...
+syn match liloEqPath "=" contained nextgroup=liloPath,liloPathComment,liloError skipwhite skipempty
+syn match liloEqVga "=" contained nextgroup=liloVgaKeyword,liloHexNumber,liloDecNumber,liloVgaComment,liloError skipwhite skipempty
+syn match liloEqNumber "=" contained nextgroup=liloDecNumber,liloHexNumber,liloNumberComment,liloError skipwhite skipempty
+syn match liloEqDecNumber "=" contained nextgroup=liloDecNumber,liloDecNumberComment,liloError skipwhite skipempty
+syn match liloEqHexNumber "=" contained nextgroup=liloHexNumber,liloHexNumberComment,liloError skipwhite skipempty
+syn match liloEqString "=" contained nextgroup=liloString,liloStringComment,liloError skipwhite skipempty
+syn match liloEqLabelString "=" contained nextgroup=liloString,liloLabel,liloLabelStringComment,liloError skipwhite skipempty
+syn match liloEqNumberList "=" contained nextgroup=liloDecNumberList,liloDecNumberListComment,liloError skipwhite skipempty
+syn match liloEqDecNumberPList "=" contained nextgroup=liloDecNumberPList,liloDecNumberPListComment,liloError skipwhite skipempty
+syn match liloEqAnything "=" contained nextgroup=liloAnything,liloAnythingComment,liloError skipwhite skipempty
+
+" Comment followed by ...
+syn match liloPathComment "#.*$" contained nextgroup=liloPath,liloPathComment,liloError skipwhite skipempty
+syn match liloVgaComment "#.*$" contained nextgroup=liloVgaKeyword,liloHexNumber,liloVgaComment,liloError skipwhite skipempty
+syn match liloNumberComment "#.*$" contained nextgroup=liloDecNumber,liloHexNumber,liloNumberComment,liloError skipwhite skipempty
+syn match liloDecNumberComment "#.*$" contained nextgroup=liloDecNumber,liloDecNumberComment,liloError skipwhite skipempty
+syn match liloHexNumberComment "#.*$" contained nextgroup=liloHexNumber,liloHexNumberComment,liloError skipwhite skipempty
+syn match liloStringComment "#.*$" contained nextgroup=liloString,liloStringComment,liloError skipwhite skipempty
+syn match liloLabelStringComment "#.*$" contained nextgroup=liloString,liloLabel,liloLabelStringComment,liloError skipwhite skipempty
+syn match liloDecNumberListComment "#.*$" contained nextgroup=liloDecNumberList,liloDecNumberListComment,liloError skipwhite skipempty
+syn match liloDecNumberPListComment "#.*$" contained nextgroup=liloDecNumberPList,liloDecNumberPListComment,liloError skipwhite skipempty
+syn match liloAnythingComment "#.*$" contained nextgroup=liloAnything,liloAnythingComment,liloError skipwhite skipempty
+
+" Define the default highlighting
+
+hi def link liloEqPath liloEquals
+hi def link liloEqWord liloEquals
+hi def link liloEqVga liloEquals
+hi def link liloEqDecNumber liloEquals
+hi def link liloEqHexNumber liloEquals
+hi def link liloEqNumber liloEquals
+hi def link liloEqString liloEquals
+hi def link liloEqAnything liloEquals
+hi def link liloEquals Special
+
+hi def link liloError Error
+
+hi def link liloEqPathComment liloComment
+hi def link liloEqVgaComment liloComment
+hi def link liloEqDecNumberComment liloComment
+hi def link liloEqHexNumberComment liloComment
+hi def link liloEqStringComment liloComment
+hi def link liloEqAnythingComment liloComment
+hi def link liloPathComment liloComment
+hi def link liloVgaComment liloComment
+hi def link liloDecNumberComment liloComment
+hi def link liloHexNumberComment liloComment
+hi def link liloNumberComment liloComment
+hi def link liloStringComment liloComment
+hi def link liloAnythingComment liloComment
+hi def link liloComment Comment
+
+hi def link liloDiskOpt liloOption
+hi def link liloKernelOpt liloOption
+hi def link liloImageOpt liloOption
+hi def link liloOption Keyword
+
+hi def link liloDecNumber liloNumber
+hi def link liloHexNumber liloNumber
+hi def link liloDecNumberP liloNumber
+hi def link liloNumber Number
+hi def link liloString String
+hi def link liloPath Constant
+
+hi def link liloSpecial Special
+hi def link liloLabel Title
+hi def link liloDecNumberList Special
+hi def link liloDecNumberPList Special
+hi def link liloAnything Normal
+hi def link liloEnviron Identifier
+hi def link liloVgaKeyword Identifier
+hi def link liloImage Type
+hi def link liloChRules Preproc
+hi def link liloDisk Preproc
+
+
+let b:current_syntax = "lilo"
diff --git a/runtime/syntax/limits.vim b/runtime/syntax/limits.vim
new file mode 100644
index 0000000..96bd423
--- /dev/null
+++ b/runtime/syntax/limits.vim
@@ -0,0 +1,44 @@
+" Vim syntax file
+" Language: limits(5) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword limitsTodo contained TODO FIXME XXX NOTE
+
+syn region limitsComment display oneline start='^\s*#' end='$'
+ \ contains=limitsTodo,@Spell
+
+syn match limitsBegin display '^'
+ \ nextgroup=limitsUser,limitsDefault,limitsComment
+ \ skipwhite
+
+syn match limitsUser contained '[^ \t#*]\+'
+ \ nextgroup=limitsLimit,limitsDeLimit skipwhite
+
+syn match limitsDefault contained '*'
+ \ nextgroup=limitsLimit,limitsDeLimit skipwhite
+
+syn match limitsLimit contained '[ACDFMNRSTUKLP]' nextgroup=limitsNumber
+syn match limitsDeLimit contained '-'
+
+syn match limitsNumber contained '\d\+\>' nextgroup=limitsLimit skipwhite
+
+hi def link limitsTodo Todo
+hi def link limitsComment Comment
+hi def link limitsUser Keyword
+hi def link limitsDefault Macro
+hi def link limitsLimit Identifier
+hi def link limitsDeLimit Special
+hi def link limitsNumber Number
+
+let b:current_syntax = "limits"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/liquid.vim b/runtime/syntax/liquid.vim
new file mode 100644
index 0000000..966b60f
--- /dev/null
+++ b/runtime/syntax/liquid.vim
@@ -0,0 +1,138 @@
+" Vim syntax file
+" Language: Liquid
+" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
+" Filenames: *.liquid
+" Last Change: 2022 Mar 15
+
+if exists('b:current_syntax')
+ finish
+endif
+
+if !exists('main_syntax')
+ let main_syntax = 'liquid'
+endif
+
+if !exists('g:liquid_default_subtype')
+ let g:liquid_default_subtype = 'html'
+endif
+
+if !exists('b:liquid_subtype') && main_syntax == 'liquid'
+ let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
+ let b:liquid_subtype = matchstr(s:lines,'liquid_subtype=\zs\w\+')
+ if b:liquid_subtype == ''
+ let b:liquid_subtype = matchstr(&filetype,'^liquid\.\zs\w\+')
+ endif
+ if b:liquid_subtype == ''
+ let b:liquid_subtype = matchstr(substitute(expand('%:t'),'\c\%(\.liquid\)\+$','',''),'\.\zs\w\+$')
+ endif
+ if b:liquid_subtype == ''
+ let b:liquid_subtype = g:liquid_default_subtype
+ endif
+endif
+
+if exists('b:liquid_subtype') && b:liquid_subtype != ''
+ exe 'runtime! syntax/'.b:liquid_subtype.'.vim'
+ unlet! b:current_syntax
+endif
+
+syn case match
+
+if exists('b:liquid_subtype') && b:liquid_subtype != 'yaml'
+ " YAML Front Matter
+ syn include @liquidYamlTop syntax/yaml.vim
+ unlet! b:current_syntax
+ syn region liquidYamlHead start="\%^---$" end="^---\s*$" keepend contains=@liquidYamlTop,@Spell
+endif
+
+if !exists('g:liquid_highlight_types')
+ let g:liquid_highlight_types = []
+endif
+
+if !exists('s:subtype')
+ let s:subtype = exists('b:liquid_subtype') ? b:liquid_subtype : ''
+
+ for s:type in map(copy(g:liquid_highlight_types),'matchstr(v:val,"[^=]*$")')
+ if s:type =~ '\.'
+ let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*')
+ endif
+ exe 'syn include @liquidHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim'
+ unlet! b:current_syntax
+ endfor
+ unlet! s:type
+
+ if s:subtype == ''
+ unlet! b:liquid_subtype
+ else
+ let b:liquid_subtype = s:subtype
+ endif
+ unlet s:subtype
+endif
+
+syn region liquidStatement matchgroup=liquidDelimiter start="{%-\=" end="-\=%}" contains=@liquidStatement containedin=ALLBUT,@liquidExempt keepend
+syn region liquidExpression matchgroup=liquidDelimiter start="{{-\=" end="-\=}}" contains=@liquidExpression containedin=ALLBUT,@liquidExempt keepend
+syn region liquidComment matchgroup=liquidDelimiter start="{%-\=\s*comment\s*-\=%}" end="{%-\=\s*endcomment\s*-\=%}" contains=liquidTodo,@Spell containedin=ALLBUT,@liquidExempt keepend
+syn region liquidRaw matchgroup=liquidDelimiter start="{%-\=\s*raw\s*-\=%}" end="{%-\=\s*endraw\s*-\=%}" contains=TOP,@liquidExempt containedin=ALLBUT,@liquidExempt keepend
+
+syn cluster liquidExempt contains=liquidStatement,liquidExpression,liquidComment,liquidRaw,@liquidStatement,liquidYamlHead
+syn cluster liquidStatement contains=liquidConditional,liquidRepeat,liquidKeyword,@liquidExpression
+syn cluster liquidExpression contains=liquidOperator,liquidString,liquidNumber,liquidFloat,liquidBoolean,liquidNull,liquidEmpty,liquidPipe,liquidForloop
+
+syn keyword liquidKeyword highlight nextgroup=liquidTypeHighlight skipwhite contained
+syn keyword liquidKeyword endhighlight contained
+syn region liquidHighlight start="{%-\=\s*highlight\s\+\w\+\s*-\=%}" end="{%-\= endhighlight -\=%}" keepend
+
+for s:type in g:liquid_highlight_types
+ exe 'syn match liquidTypeHighlight "\<'.matchstr(s:type,'[^=]*').'\>" contained'
+ exe 'syn region liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' start="{%-\=\s*highlight\s\+'.matchstr(s:type,'[^=]*').'\s*-\=%}" end="{%-\= endhighlight -\=%}" keepend contains=@liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g')
+endfor
+unlet! s:type
+
+syn region liquidString matchgroup=liquidQuote start=+"+ end=+"+ contained
+syn region liquidString matchgroup=liquidQuote start=+'+ end=+'+ contained
+syn match liquidNumber "-\=\<\d\+\>" contained
+syn match liquidFloat "-\=\<\d\+\>\.\.\@!\%(\d\+\>\)\=" contained
+syn keyword liquidBoolean true false contained
+syn keyword liquidNull null nil blank contained
+syn match liquidEmpty "\<empty\>" contained
+
+syn keyword liquidOperator and or not contained
+syn match liquidPipe '|' contained skipwhite nextgroup=liquidFilter
+
+syn keyword liquidFilter date capitalize downcase upcase escape escape_once first last join sort size where uniq strip_html strip_newlines newline_to_br replace replace_first remove remove_first slice split strip truncate truncatewords prepend append url_encode url_decode abs at_most at_least ceil divided_by floor minus plus round times modulo contained
+
+syn keyword liquidConditional if elsif else endif unless endunless case when endcase ifchanged endifchanged contained
+syn keyword liquidRepeat for endfor tablerow endtablerow in break continue limit offset reversed contained
+syn match liquidRepeat "\%({%-\=\s*\)\@<=empty\>" contained
+syn keyword liquidKeyword assign capture endcapture increasement decreasement cycle include with render contained
+
+syn keyword liquidForloop forloop nextgroup=liquidForloopDot contained
+syn match liquidForloopDot "\." nextgroup=liquidForloopAttribute contained
+syn keyword liquidForloopAttribute length index index0 rindex rindex0 first last contained
+
+syn keyword liquidTablerowloop tablerowloop nextgroup=liquidTablerowloopDot contained
+syn match liquidTablerowloopDot "\." nextgroup=liquidTableForloopAttribute contained
+syn keyword liquidTablerowloopAttribute length index index0 col col0 index0 rindex rindex0 first last col_first col_last contained
+
+hi def link liquidDelimiter PreProc
+hi def link liquidComment Comment
+hi def link liquidTypeHighlight Type
+hi def link liquidConditional Conditional
+hi def link liquidRepeat Repeat
+hi def link liquidKeyword Keyword
+hi def link liquidOperator Operator
+hi def link liquidString String
+hi def link liquidQuote Delimiter
+hi def link liquidNumber Number
+hi def link liquidFloat Float
+hi def link liquidEmpty liquidNull
+hi def link liquidNull liquidBoolean
+hi def link liquidBoolean Boolean
+hi def link liquidFilter Function
+hi def link liquidForloop Identifier
+hi def link liquidForloopAttribute Identifier
+
+let b:current_syntax = 'liquid'
+
+if exists('main_syntax') && main_syntax == 'liquid'
+ unlet main_syntax
+endif
diff --git a/runtime/syntax/lisp.vim b/runtime/syntax/lisp.vim
new file mode 100644
index 0000000..90513e3
--- /dev/null
+++ b/runtime/syntax/lisp.vim
@@ -0,0 +1,622 @@
+" Vim syntax file
+" Language: Lisp
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Last Change: Nov 10, 2021
+" Version: 31
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_LISP
+"
+" Thanks to F Xavier Noria for a list of 978 Common Lisp symbols taken from HyperSpec
+" Clisp additions courtesy of http://clisp.cvs.sourceforge.net/*checkout*/clisp/clisp/emacs/lisp.vim
+
+" ---------------------------------------------------------------------
+" Load Once: {{{1
+if exists("b:current_syntax")
+ finish
+endif
+
+if exists("g:lisp_isk")
+ exe "setl isk=".g:lisp_isk
+elseif (v:version == 704 && has("patch-7.4.1142")) || v:version > 704
+ syn iskeyword 38,42,43,45,47-58,60-62,64-90,97-122,_
+else
+ setl isk=38,42,43,45,47-58,60-62,64-90,97-122,_
+endif
+
+if exists("g:lispsyntax_ignorecase") || exists("g:lispsyntax_clisp")
+ set ignorecase
+endif
+
+" ---------------------------------------------------------------------
+" Clusters: {{{1
+syn cluster lispAtomCluster contains=lispAtomBarSymbol,lispAtomList,lispAtomNmbr0,lispComment,lispDecl,lispFunc,lispLeadWhite
+syn cluster lispBaseListCluster contains=lispAtom,lispAtomBarSymbol,lispAtomMark,lispBQList,lispBarSymbol,lispComment,lispConcat,lispDecl,lispFunc,lispKey,lispList,lispNumber,lispEscapeSpecial,lispSymbol,lispVar,lispLeadWhite
+if exists("g:lisp_instring")
+ syn cluster lispListCluster contains=@lispBaseListCluster,lispString,lispInString,lispInStringString
+else
+ syn cluster lispListCluster contains=@lispBaseListCluster,lispString
+endif
+
+syn case ignore
+
+" ---------------------------------------------------------------------
+" Lists: {{{1
+syn match lispSymbol contained ![^()'`,"; \t]\+!
+syn match lispBarSymbol contained !|..\{-}|!
+if exists("g:lisp_rainbow") && g:lisp_rainbow != 0
+ syn region lispParen0 matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen1
+ syn region lispParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen2
+ syn region lispParen2 contained matchgroup=hlLevel2 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen3
+ syn region lispParen3 contained matchgroup=hlLevel3 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen4
+ syn region lispParen4 contained matchgroup=hlLevel4 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen5
+ syn region lispParen5 contained matchgroup=hlLevel5 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen6
+ syn region lispParen6 contained matchgroup=hlLevel6 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen7
+ syn region lispParen7 contained matchgroup=hlLevel7 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen8
+ syn region lispParen8 contained matchgroup=hlLevel8 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen9
+ syn region lispParen9 contained matchgroup=hlLevel9 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen0
+else
+ syn region lispList matchgroup=lispParen start="(" skip="|.\{-}|" matchgroup=lispParen end=")" contains=@lispListCluster
+ syn region lispBQList matchgroup=PreProc start="`(" skip="|.\{-}|" matchgroup=PreProc end=")" contains=@lispListCluster
+endif
+
+" ---------------------------------------------------------------------
+" Atoms: {{{1
+syn match lispAtomMark "'"
+syn match lispAtom "'("me=e-1 contains=lispAtomMark nextgroup=lispAtomList
+syn match lispAtom "'[^ \t()]\+" contains=lispAtomMark
+syn match lispAtomBarSymbol !'|..\{-}|! contains=lispAtomMark
+syn region lispAtom start=+'"+ skip=+\\"+ end=+"+
+syn region lispAtomList contained matchgroup=Special start="(" skip="|.\{-}|" matchgroup=Special end=")" contains=@lispAtomCluster,lispString,lispEscapeSpecial
+syn match lispAtomNmbr contained "\<\d\+"
+syn match lispLeadWhite contained "^\s\+"
+
+" ---------------------------------------------------------------------
+" Standard Lisp Functions and Macros: {{{1
+syn keyword lispFunc < find-method pprint-indent
+syn keyword lispFunc <= find-package pprint-linear
+syn keyword lispFunc = find-restart pprint-logical-block
+syn keyword lispFunc > find-symbol pprint-newline
+syn keyword lispFunc >= finish-output pprint-pop
+syn keyword lispFunc - first pprint-tab
+syn keyword lispFunc / fixnum pprint-tabular
+syn keyword lispFunc /= flet prin1
+syn keyword lispFunc // float prin1-to-string
+syn keyword lispFunc /// float-digits princ
+syn keyword lispFunc * floating-point-inexact princ-to-string
+syn keyword lispFunc ** floating-point-invalid-operation print
+syn keyword lispFunc *** floating-point-overflow print-not-readable
+syn keyword lispFunc + floating-point-underflow print-not-readable-object
+syn keyword lispFunc ++ floatp print-object
+syn keyword lispFunc +++ float-precision print-unreadable-object
+syn keyword lispFunc 1- float-radix probe-file
+syn keyword lispFunc 1+ float-sign proclaim
+syn keyword lispFunc abort floor prog
+syn keyword lispFunc abs fmakunbound prog*
+syn keyword lispFunc access force-output prog1
+syn keyword lispFunc acons format prog2
+syn keyword lispFunc acos formatter progn
+syn keyword lispFunc acosh fourth program-error
+syn keyword lispFunc add-method fresh-line progv
+syn keyword lispFunc adjoin fround provide
+syn keyword lispFunc adjustable-array-p ftruncate psetf
+syn keyword lispFunc adjust-array ftype psetq
+syn keyword lispFunc allocate-instance funcall push
+syn keyword lispFunc alpha-char-p function pushnew
+syn keyword lispFunc alphanumericp function-keywords putprop
+syn keyword lispFunc and function-lambda-expression quote
+syn keyword lispFunc append functionp random
+syn keyword lispFunc apply gbitp random-state
+syn keyword lispFunc applyhook gcd random-state-p
+syn keyword lispFunc apropos generic-function rassoc
+syn keyword lispFunc apropos-list gensym rassoc-if
+syn keyword lispFunc aref gentemp rassoc-if-not
+syn keyword lispFunc arithmetic-error get ratio
+syn keyword lispFunc arithmetic-error-operands get-decoded-time rational
+syn keyword lispFunc arithmetic-error-operation get-dispatch-macro-character rationalize
+syn keyword lispFunc array getf rationalp
+syn keyword lispFunc array-dimension gethash read
+syn keyword lispFunc array-dimension-limit get-internal-real-time read-byte
+syn keyword lispFunc array-dimensions get-internal-run-time read-char
+syn keyword lispFunc array-displacement get-macro-character read-char-no-hang
+syn keyword lispFunc array-element-type get-output-stream-string read-delimited-list
+syn keyword lispFunc array-has-fill-pointer-p get-properties reader-error
+syn keyword lispFunc array-in-bounds-p get-setf-expansion read-eval-print
+syn keyword lispFunc arrayp get-setf-method read-from-string
+syn keyword lispFunc array-rank get-universal-time read-line
+syn keyword lispFunc array-rank-limit go read-preserving-whitespace
+syn keyword lispFunc array-row-major-index graphic-char-p read-sequence
+syn keyword lispFunc array-total-size handler-bind readtable
+syn keyword lispFunc array-total-size-limit handler-case readtable-case
+syn keyword lispFunc ash hash-table readtablep
+syn keyword lispFunc asin hash-table-count real
+syn keyword lispFunc asinh hash-table-p realp
+syn keyword lispFunc assert hash-table-rehash-size realpart
+syn keyword lispFunc assoc hash-table-rehash-threshold reduce
+syn keyword lispFunc assoc-if hash-table-size reinitialize-instance
+syn keyword lispFunc assoc-if-not hash-table-test rem
+syn keyword lispFunc atan host-namestring remf
+syn keyword lispFunc atanh identity remhash
+syn keyword lispFunc atom if remove
+syn keyword lispFunc base-char if-exists remove-duplicates
+syn keyword lispFunc base-string ignorable remove-if
+syn keyword lispFunc bignum ignore remove-if-not
+syn keyword lispFunc bit ignore-errors remove-method
+syn keyword lispFunc bit-and imagpart remprop
+syn keyword lispFunc bit-andc1 import rename-file
+syn keyword lispFunc bit-andc2 incf rename-package
+syn keyword lispFunc bit-eqv initialize-instance replace
+syn keyword lispFunc bit-ior inline require
+syn keyword lispFunc bit-nand in-package rest
+syn keyword lispFunc bit-nor in-package restart
+syn keyword lispFunc bit-not input-stream-p restart-bind
+syn keyword lispFunc bit-orc1 inspect restart-case
+syn keyword lispFunc bit-orc2 int-char restart-name
+syn keyword lispFunc bit-vector integer return
+syn keyword lispFunc bit-vector-p integer-decode-float return-from
+syn keyword lispFunc bit-xor integer-length revappend
+syn keyword lispFunc block integerp reverse
+syn keyword lispFunc boole interactive-stream-p room
+syn keyword lispFunc boole-1 intern rotatef
+syn keyword lispFunc boole-2 internal-time-units-per-second round
+syn keyword lispFunc boolean intersection row-major-aref
+syn keyword lispFunc boole-and invalid-method-error rplaca
+syn keyword lispFunc boole-andc1 invoke-debugger rplacd
+syn keyword lispFunc boole-andc2 invoke-restart safety
+syn keyword lispFunc boole-c1 invoke-restart-interactively satisfies
+syn keyword lispFunc boole-c2 isqrt sbit
+syn keyword lispFunc boole-clr keyword scale-float
+syn keyword lispFunc boole-eqv keywordp schar
+syn keyword lispFunc boole-ior labels search
+syn keyword lispFunc boole-nand lambda second
+syn keyword lispFunc boole-nor lambda-list-keywords sequence
+syn keyword lispFunc boole-orc1 lambda-parameters-limit serious-condition
+syn keyword lispFunc boole-orc2 last set
+syn keyword lispFunc boole-set lcm set-char-bit
+syn keyword lispFunc boole-xor ldb set-difference
+syn keyword lispFunc both-case-p ldb-test set-dispatch-macro-character
+syn keyword lispFunc boundp ldiff set-exclusive-or
+syn keyword lispFunc break least-negative-double-float setf
+syn keyword lispFunc broadcast-stream least-negative-long-float set-macro-character
+syn keyword lispFunc broadcast-stream-streams least-negative-normalized-double-float set-pprint-dispatch
+syn keyword lispFunc built-in-class least-negative-normalized-long-float setq
+syn keyword lispFunc butlast least-negative-normalized-short-float set-syntax-from-char
+syn keyword lispFunc byte least-negative-normalized-single-float seventh
+syn keyword lispFunc byte-position least-negative-short-float shadow
+syn keyword lispFunc byte-size least-negative-single-float shadowing-import
+syn keyword lispFunc call-arguments-limit least-positive-double-float shared-initialize
+syn keyword lispFunc call-method least-positive-long-float shiftf
+syn keyword lispFunc call-next-method least-positive-normalized-double-float short-float
+syn keyword lispFunc capitalize least-positive-normalized-long-float short-float-epsilon
+syn keyword lispFunc car least-positive-normalized-short-float short-float-negative-epsilon
+syn keyword lispFunc case least-positive-normalized-single-float short-site-name
+syn keyword lispFunc catch least-positive-short-float signal
+syn keyword lispFunc ccase least-positive-single-float signed-byte
+syn keyword lispFunc cdr length signum
+syn keyword lispFunc ceiling let simple-array
+syn keyword lispFunc cell-error let* simple-base-string
+syn keyword lispFunc cell-error-name lisp simple-bit-vector
+syn keyword lispFunc cerror lisp-implementation-type simple-bit-vector-p
+syn keyword lispFunc change-class lisp-implementation-version simple-condition
+syn keyword lispFunc char list simple-condition-format-arguments
+syn keyword lispFunc char< list* simple-condition-format-control
+syn keyword lispFunc char<= list-all-packages simple-error
+syn keyword lispFunc char= listen simple-string
+syn keyword lispFunc char> list-length simple-string-p
+syn keyword lispFunc char>= listp simple-type-error
+syn keyword lispFunc char/= load simple-vector
+syn keyword lispFunc character load-logical-pathname-translations simple-vector-p
+syn keyword lispFunc characterp load-time-value simple-warning
+syn keyword lispFunc char-bit locally sin
+syn keyword lispFunc char-bits log single-flaot-epsilon
+syn keyword lispFunc char-bits-limit logand single-float
+syn keyword lispFunc char-code logandc1 single-float-epsilon
+syn keyword lispFunc char-code-limit logandc2 single-float-negative-epsilon
+syn keyword lispFunc char-control-bit logbitp sinh
+syn keyword lispFunc char-downcase logcount sixth
+syn keyword lispFunc char-equal logeqv sleep
+syn keyword lispFunc char-font logical-pathname slot-boundp
+syn keyword lispFunc char-font-limit logical-pathname-translations slot-exists-p
+syn keyword lispFunc char-greaterp logior slot-makunbound
+syn keyword lispFunc char-hyper-bit lognand slot-missing
+syn keyword lispFunc char-int lognor slot-unbound
+syn keyword lispFunc char-lessp lognot slot-value
+syn keyword lispFunc char-meta-bit logorc1 software-type
+syn keyword lispFunc char-name logorc2 software-version
+syn keyword lispFunc char-not-equal logtest some
+syn keyword lispFunc char-not-greaterp logxor sort
+syn keyword lispFunc char-not-lessp long-float space
+syn keyword lispFunc char-super-bit long-float-epsilon special
+syn keyword lispFunc char-upcase long-float-negative-epsilon special-form-p
+syn keyword lispFunc check-type long-site-name special-operator-p
+syn keyword lispFunc cis loop speed
+syn keyword lispFunc class loop-finish sqrt
+syn keyword lispFunc class-name lower-case-p stable-sort
+syn keyword lispFunc class-of machine-instance standard
+syn keyword lispFunc clear-input machine-type standard-char
+syn keyword lispFunc clear-output machine-version standard-char-p
+syn keyword lispFunc close macroexpand standard-class
+syn keyword lispFunc clrhash macroexpand-1 standard-generic-function
+syn keyword lispFunc code-char macroexpand-l standard-method
+syn keyword lispFunc coerce macro-function standard-object
+syn keyword lispFunc commonp macrolet step
+syn keyword lispFunc compilation-speed make-array storage-condition
+syn keyword lispFunc compile make-array store-value
+syn keyword lispFunc compiled-function make-broadcast-stream stream
+syn keyword lispFunc compiled-function-p make-char stream-element-type
+syn keyword lispFunc compile-file make-concatenated-stream stream-error
+syn keyword lispFunc compile-file-pathname make-condition stream-error-stream
+syn keyword lispFunc compiler-let make-dispatch-macro-character stream-external-format
+syn keyword lispFunc compiler-macro make-echo-stream streamp
+syn keyword lispFunc compiler-macro-function make-hash-table streamup
+syn keyword lispFunc complement make-instance string
+syn keyword lispFunc complex make-instances-obsolete string<
+syn keyword lispFunc complexp make-list string<=
+syn keyword lispFunc compute-applicable-methods make-load-form string=
+syn keyword lispFunc compute-restarts make-load-form-saving-slots string>
+syn keyword lispFunc concatenate make-method string>=
+syn keyword lispFunc concatenated-stream make-package string/=
+syn keyword lispFunc concatenated-stream-streams make-pathname string-capitalize
+syn keyword lispFunc cond make-random-state string-char
+syn keyword lispFunc condition make-sequence string-char-p
+syn keyword lispFunc conjugate make-string string-downcase
+syn keyword lispFunc cons make-string-input-stream string-equal
+syn keyword lispFunc consp make-string-output-stream string-greaterp
+syn keyword lispFunc constantly make-symbol string-left-trim
+syn keyword lispFunc constantp make-synonym-stream string-lessp
+syn keyword lispFunc continue make-two-way-stream string-not-equal
+syn keyword lispFunc control-error makunbound string-not-greaterp
+syn keyword lispFunc copy-alist map string-not-lessp
+syn keyword lispFunc copy-list mapc stringp
+syn keyword lispFunc copy-pprint-dispatch mapcan string-right-strim
+syn keyword lispFunc copy-readtable mapcar string-right-trim
+syn keyword lispFunc copy-seq mapcon string-stream
+syn keyword lispFunc copy-structure maphash string-trim
+syn keyword lispFunc copy-symbol map-into string-upcase
+syn keyword lispFunc copy-tree mapl structure
+syn keyword lispFunc cos maplist structure-class
+syn keyword lispFunc cosh mask-field structure-object
+syn keyword lispFunc count max style-warning
+syn keyword lispFunc count-if member sublim
+syn keyword lispFunc count-if-not member-if sublis
+syn keyword lispFunc ctypecase member-if-not subseq
+syn keyword lispFunc debug merge subsetp
+syn keyword lispFunc decf merge-pathname subst
+syn keyword lispFunc declaim merge-pathnames subst-if
+syn keyword lispFunc declaration method subst-if-not
+syn keyword lispFunc declare method-combination substitute
+syn keyword lispFunc decode-float method-combination-error substitute-if
+syn keyword lispFunc decode-universal-time method-qualifiers substitute-if-not
+syn keyword lispFunc defclass min subtypep
+syn keyword lispFunc defconstant minusp svref
+syn keyword lispFunc defgeneric mismatch sxhash
+syn keyword lispFunc define-compiler-macro mod symbol
+syn keyword lispFunc define-condition most-negative-double-float symbol-function
+syn keyword lispFunc define-method-combination most-negative-fixnum symbol-macrolet
+syn keyword lispFunc define-modify-macro most-negative-long-float symbol-name
+syn keyword lispFunc define-setf-expander most-negative-short-float symbolp
+syn keyword lispFunc define-setf-method most-negative-single-float symbol-package
+syn keyword lispFunc define-symbol-macro most-positive-double-float symbol-plist
+syn keyword lispFunc defmacro most-positive-fixnum symbol-value
+syn keyword lispFunc defmethod most-positive-long-float synonym-stream
+syn keyword lispFunc defpackage most-positive-short-float synonym-stream-symbol
+syn keyword lispFunc defparameter most-positive-single-float sys
+syn keyword lispFunc defsetf muffle-warning system
+syn keyword lispFunc defstruct multiple-value-bind t
+syn keyword lispFunc deftype multiple-value-call tagbody
+syn keyword lispFunc defun multiple-value-list tailp
+syn keyword lispFunc defvar multiple-value-prog1 tan
+syn keyword lispFunc delete multiple-value-seteq tanh
+syn keyword lispFunc delete-duplicates multiple-value-setq tenth
+syn keyword lispFunc delete-file multiple-values-limit terpri
+syn keyword lispFunc delete-if name-char the
+syn keyword lispFunc delete-if-not namestring third
+syn keyword lispFunc delete-package nbutlast throw
+syn keyword lispFunc denominator nconc time
+syn keyword lispFunc deposit-field next-method-p trace
+syn keyword lispFunc describe nil translate-logical-pathname
+syn keyword lispFunc describe-object nintersection translate-pathname
+syn keyword lispFunc destructuring-bind ninth tree-equal
+syn keyword lispFunc digit-char no-applicable-method truename
+syn keyword lispFunc digit-char-p no-next-method truncase
+syn keyword lispFunc directory not truncate
+syn keyword lispFunc directory-namestring notany two-way-stream
+syn keyword lispFunc disassemble notevery two-way-stream-input-stream
+syn keyword lispFunc division-by-zero notinline two-way-stream-output-stream
+syn keyword lispFunc do nreconc type
+syn keyword lispFunc do* nreverse typecase
+syn keyword lispFunc do-all-symbols nset-difference type-error
+syn keyword lispFunc documentation nset-exclusive-or type-error-datum
+syn keyword lispFunc do-exeternal-symbols nstring type-error-expected-type
+syn keyword lispFunc do-external-symbols nstring-capitalize type-of
+syn keyword lispFunc dolist nstring-downcase typep
+syn keyword lispFunc do-symbols nstring-upcase unbound-slot
+syn keyword lispFunc dotimes nsublis unbound-slot-instance
+syn keyword lispFunc double-float nsubst unbound-variable
+syn keyword lispFunc double-float-epsilon nsubst-if undefined-function
+syn keyword lispFunc double-float-negative-epsilon nsubst-if-not unexport
+syn keyword lispFunc dpb nsubstitute unintern
+syn keyword lispFunc dribble nsubstitute-if union
+syn keyword lispFunc dynamic-extent nsubstitute-if-not unless
+syn keyword lispFunc ecase nth unread
+syn keyword lispFunc echo-stream nthcdr unread-char
+syn keyword lispFunc echo-stream-input-stream nth-value unsigned-byte
+syn keyword lispFunc echo-stream-output-stream null untrace
+syn keyword lispFunc ed number unuse-package
+syn keyword lispFunc eighth numberp unwind-protect
+syn keyword lispFunc elt numerator update-instance-for-different-class
+syn keyword lispFunc encode-universal-time nunion update-instance-for-redefined-class
+syn keyword lispFunc end-of-file oddp upgraded-array-element-type
+syn keyword lispFunc endp open upgraded-complex-part-type
+syn keyword lispFunc enough-namestring open-stream-p upper-case-p
+syn keyword lispFunc ensure-directories-exist optimize use-package
+syn keyword lispFunc ensure-generic-function or user
+syn keyword lispFunc eq otherwise user-homedir-pathname
+syn keyword lispFunc eql output-stream-p use-value
+syn keyword lispFunc equal package values
+syn keyword lispFunc equalp package-error values-list
+syn keyword lispFunc error package-error-package variable
+syn keyword lispFunc etypecase package-name vector
+syn keyword lispFunc eval package-nicknames vectorp
+syn keyword lispFunc evalhook packagep vector-pop
+syn keyword lispFunc eval-when package-shadowing-symbols vector-push
+syn keyword lispFunc evenp package-used-by-list vector-push-extend
+syn keyword lispFunc every package-use-list warn
+syn keyword lispFunc exp pairlis warning
+syn keyword lispFunc export parse-error when
+syn keyword lispFunc expt parse-integer wild-pathname-p
+syn keyword lispFunc extended-char parse-namestring with-accessors
+syn keyword lispFunc fboundp pathname with-compilation-unit
+syn keyword lispFunc fceiling pathname-device with-condition-restarts
+syn keyword lispFunc fdefinition pathname-directory with-hash-table-iterator
+syn keyword lispFunc ffloor pathname-host with-input-from-string
+syn keyword lispFunc fifth pathname-match-p with-open-file
+syn keyword lispFunc file-author pathname-name with-open-stream
+syn keyword lispFunc file-error pathnamep with-output-to-string
+syn keyword lispFunc file-error-pathname pathname-type with-package-iterator
+syn keyword lispFunc file-length pathname-version with-simple-restart
+syn keyword lispFunc file-namestring peek-char with-slots
+syn keyword lispFunc file-position phase with-standard-io-syntax
+syn keyword lispFunc file-stream pi write
+syn keyword lispFunc file-string-length plusp write-byte
+syn keyword lispFunc file-write-date pop write-char
+syn keyword lispFunc fill position write-line
+syn keyword lispFunc fill-pointer position-if write-sequence
+syn keyword lispFunc find position-if-not write-string
+syn keyword lispFunc find-all-symbols pprint write-to-string
+syn keyword lispFunc find-class pprint-dispatch yes-or-no-p
+syn keyword lispFunc find-if pprint-exit-if-list-exhausted y-or-n-p
+syn keyword lispFunc find-if-not pprint-fill zerop
+
+syn match lispFunc "\<c[ad]\+r\>"
+if exists("g:lispsyntax_clisp")
+ " CLISP FFI:
+ syn match lispFunc "\<\(ffi:\)\?with-c-\(place\|var\)\>"
+ syn match lispFunc "\<\(ffi:\)\?with-foreign-\(object\|string\)\>"
+ syn match lispFunc "\<\(ffi:\)\?default-foreign-\(language\|library\)\>"
+ syn match lispFunc "\<\([us]_\?\)\?\(element\|deref\|cast\|slot\|validp\)\>"
+ syn match lispFunc "\<\(ffi:\)\?set-foreign-pointer\>"
+ syn match lispFunc "\<\(ffi:\)\?allocate-\(deep\|shallow\)\>"
+ syn match lispFunc "\<\(ffi:\)\?c-lines\>"
+ syn match lispFunc "\<\(ffi:\)\?foreign-\(value\|free\|variable\|function\|object\)\>"
+ syn match lispFunc "\<\(ffi:\)\?foreign-address\(-null\|unsigned\)\?\>"
+ syn match lispFunc "\<\(ffi:\)\?undigned-foreign-address\>"
+ syn match lispFunc "\<\(ffi:\)\?c-var-\(address\|object\)\>"
+ syn match lispFunc "\<\(ffi:\)\?typeof\>"
+ syn match lispFunc "\<\(ffi:\)\?\(bit\)\?sizeof\>"
+" CLISP Macros, functions et al:
+ syn match lispFunc "\<\(ext:\)\?with-collect\>"
+ syn match lispFunc "\<\(ext:\)\?letf\*\?\>"
+ syn match lispFunc "\<\(ext:\)\?finalize\>\>"
+ syn match lispFunc "\<\(ext:\)\?memoized\>"
+ syn match lispFunc "\<\(ext:\)\?getenv\>"
+ syn match lispFunc "\<\(ext:\)\?convert-string-\(to\|from\)-bytes\>"
+ syn match lispFunc "\<\(ext:\)\?ethe\>"
+ syn match lispFunc "\<\(ext:\)\?with-gensyms\>"
+ syn match lispFunc "\<\(ext:\)\?open-http\>"
+ syn match lispFunc "\<\(ext:\)\?string-concat\>"
+ syn match lispFunc "\<\(ext:\)\?with-http-\(in\|out\)put\>"
+ syn match lispFunc "\<\(ext:\)\?with-html-output\>"
+ syn match lispFunc "\<\(ext:\)\?expand-form\>"
+ syn match lispFunc "\<\(ext:\)\?\(without-\)\?package-lock\>"
+ syn match lispFunc "\<\(ext:\)\?re-export\>"
+ syn match lispFunc "\<\(ext:\)\?saveinitmem\>"
+ syn match lispFunc "\<\(ext:\)\?\(read\|write\)-\(integer\|float\)\>"
+ syn match lispFunc "\<\(ext:\)\?\(read\|write\)-\(char\|byte\)-sequence\>"
+ syn match lispFunc "\<\(custom:\)\?\*system-package-list\*\>"
+ syn match lispFunc "\<\(custom:\)\?\*ansi\*\>"
+endif
+
+" ---------------------------------------------------------------------
+" Lisp Keywords (modifiers): {{{1
+syn keyword lispKey :abort :from-end :overwrite
+syn keyword lispKey :adjustable :gensym :predicate
+syn keyword lispKey :append :host :preserve-whitespace
+syn keyword lispKey :array :if-does-not-exist :pretty
+syn keyword lispKey :base :if-exists :print
+syn keyword lispKey :case :include :print-function
+syn keyword lispKey :circle :index :probe
+syn keyword lispKey :conc-name :inherited :radix
+syn keyword lispKey :constructor :initial-contents :read-only
+syn keyword lispKey :copier :initial-element :rehash-size
+syn keyword lispKey :count :initial-offset :rehash-threshold
+syn keyword lispKey :create :initial-value :rename
+syn keyword lispKey :default :input :rename-and-delete
+syn keyword lispKey :defaults :internal :size
+syn keyword lispKey :device :io :start
+syn keyword lispKey :direction :junk-allowed :start1
+syn keyword lispKey :directory :key :start2
+syn keyword lispKey :displaced-index-offset :length :stream
+syn keyword lispKey :displaced-to :level :supersede
+syn keyword lispKey :element-type :name :test
+syn keyword lispKey :end :named :test-not
+syn keyword lispKey :end1 :new-version :type
+syn keyword lispKey :end2 :nicknames :use
+syn keyword lispKey :error :output :verbose
+syn keyword lispKey :escape :output-file :version
+syn keyword lispKey :external
+" defpackage arguments
+syn keyword lispKey :documentation :shadowing-import-from :modern :export
+syn keyword lispKey :case-sensitive :case-inverted :shadow :import-from :intern
+" lambda list keywords
+syn keyword lispKey &allow-other-keys &aux &body
+syn keyword lispKey &environment &key &optional &rest &whole
+" make-array argument
+syn keyword lispKey :fill-pointer
+" readtable-case values
+syn keyword lispKey :upcase :downcase :preserve :invert
+" eval-when situations
+syn keyword lispKey :load-toplevel :compile-toplevel :execute
+" ANSI Extended LOOP:
+syn keyword lispKey :while :until :for :do :if :then :else :when :unless :in
+syn keyword lispKey :across :finally :collect :nconc :maximize :minimize :sum
+syn keyword lispKey :and :with :initially :append :into :count :end :repeat
+syn keyword lispKey :always :never :thereis :from :to :upto :downto :below
+syn keyword lispKey :above :by :on :being :each :the :hash-key :hash-keys
+syn keyword lispKey :hash-value :hash-values :using :of-type :upfrom :downfrom
+if exists("g:lispsyntax_clisp")
+ " CLISP FFI:
+ syn keyword lispKey :arguments :return-type :library :full :malloc-free
+ syn keyword lispKey :none :alloca :in :out :in-out :stdc-stdcall :stdc :c
+ syn keyword lispKey :language :built-in :typedef :external
+ syn keyword lispKey :fini :init-once :init-always
+endif
+
+" ---------------------------------------------------------------------
+" Standard Lisp Variables: {{{1
+syn keyword lispVar *applyhook* *load-pathname* *print-pprint-dispatch*
+syn keyword lispVar *break-on-signals* *load-print* *print-pprint-dispatch*
+syn keyword lispVar *break-on-signals* *load-truename* *print-pretty*
+syn keyword lispVar *break-on-warnings* *load-verbose* *print-radix*
+syn keyword lispVar *compile-file-pathname* *macroexpand-hook* *print-readably*
+syn keyword lispVar *compile-file-pathname* *modules* *print-right-margin*
+syn keyword lispVar *compile-file-truename* *package* *print-right-margin*
+syn keyword lispVar *compile-file-truename* *print-array* *query-io*
+syn keyword lispVar *compile-print* *print-base* *random-state*
+syn keyword lispVar *compile-verbose* *print-case* *read-base*
+syn keyword lispVar *compile-verbose* *print-circle* *read-default-float-format*
+syn keyword lispVar *debug-io* *print-escape* *read-eval*
+syn keyword lispVar *debugger-hook* *print-gensym* *read-suppress*
+syn keyword lispVar *default-pathname-defaults* *print-length* *readtable*
+syn keyword lispVar *error-output* *print-level* *standard-input*
+syn keyword lispVar *evalhook* *print-lines* *standard-output*
+syn keyword lispVar *features* *print-miser-width* *terminal-io*
+syn keyword lispVar *gensym-counter* *print-miser-width* *trace-output*
+
+" ---------------------------------------------------------------------
+" Strings: {{{1
+syn region lispString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
+if exists("g:lisp_instring")
+ syn region lispInString keepend matchgroup=Delimiter start=+"(+rs=s+1 skip=+|.\{-}|+ matchgroup=Delimiter end=+)"+ contains=@lispBaseListCluster,lispInStringString
+ syn region lispInStringString start=+\\"+ skip=+\\\\+ end=+\\"+ contained
+endif
+
+" ---------------------------------------------------------------------
+" Shared with Xlisp, Declarations, Macros, Functions: {{{1
+syn keyword lispDecl defmacro do-all-symbols labels
+syn keyword lispDecl defsetf do-external-symbols let
+syn keyword lispDecl deftype do-symbols locally
+syn keyword lispDecl defun dotimes macrolet
+syn keyword lispDecl do* flet multiple-value-bind
+if exists("g:lispsyntax_clisp")
+ " CLISP FFI:
+ syn match lispDecl "\<\(ffi:\)\?def-c-\(var\|const\|enum\|type\|struct\)\>"
+ syn match lispDecl "\<\(ffi:\)\?def-call-\(out\|in\)\>"
+ syn match lispDecl "\<\(ffi:\)\?c-\(function\|struct\|pointer\|string\)\>"
+ syn match lispDecl "\<\(ffi:\)\?c-ptr\(-null\)\?\>"
+ syn match lispDecl "\<\(ffi:\)\?c-array\(-ptr\|-max\)\?\>"
+ syn match lispDecl "\<\(ffi:\)\?[us]\?\(char\|short\|int\|long\)\>"
+ syn match lispDecl "\<\(win32:\|w32\)\?d\?word\>"
+ syn match lispDecl "\<\([us]_\?\)\?int\(8\|16\|32\|64\)\(_t\)\?\>"
+ syn keyword lispDecl size_t off_t time_t handle
+endif
+
+" ---------------------------------------------------------------------
+" Numbers: supporting integers and floating point numbers {{{1
+syn match lispNumber "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\([dDeEfFlL][-+]\=\d\+\)\="
+syn match lispNumber "-\=\(\d\+/\d\+\)"
+
+syn match lispEscapeSpecial "\*\w[a-z_0-9-]*\*"
+syn match lispEscapeSpecial !#|[^()'`,"; \t]\+|#!
+syn match lispEscapeSpecial !#x\x\+!
+syn match lispEscapeSpecial !#o\o\+!
+syn match lispEscapeSpecial !#b[01]\+!
+syn match lispEscapeSpecial !#\\[ -}\~]!
+syn match lispEscapeSpecial !#[':][^()'`,"; \t]\+!
+syn match lispEscapeSpecial !#([^()'`,"; \t]\+)!
+syn match lispEscapeSpecial !#\\\%(Space\|Newline\|Tab\|Page\|Rubout\|Linefeed\|Return\|Backspace\)!
+syn match lispEscapeSpecial "\<+[a-zA-Z_][a-zA-Z_0-9-]*+\>"
+
+syn match lispConcat "\s\.\s"
+syn match lispParenError ")"
+
+" ---------------------------------------------------------------------
+" Comments: {{{1
+syn cluster lispCommentGroup contains=lispTodo,@Spell
+syn match lispComment ";.*$" contains=@lispCommentGroup
+syn region lispCommentRegion start="#|" end="|#" contains=lispCommentRegion,@lispCommentGroup
+syn region lispComment start="#+nil" end="\ze)" contains=@lispCommentGroup
+syn match lispComment '^\s*#+nil.*$' contains=@lispCommentGroup
+syn keyword lispTodo contained combak combak: todo todo:
+
+" ---------------------------------------------------------------------
+" Synchronization: {{{1
+syn sync lines=100
+
+" ---------------------------------------------------------------------
+" Define Highlighting: {{{1
+if !exists("skip_lisp_syntax_inits")
+
+ hi def link lispCommentRegion lispComment
+ hi def link lispAtomNmbr lispNumber
+ hi def link lispAtomMark lispMark
+ hi def link lispInStringString lispString
+
+ hi def link lispAtom Identifier
+ hi def link lispAtomBarSymbol Special
+ hi def link lispBarSymbol Special
+ hi def link lispComment Comment
+ hi def link lispConcat Statement
+ hi def link lispDecl Statement
+ hi def link lispFunc Statement
+ hi def link lispKey Type
+ hi def link lispMark Delimiter
+ hi def link lispNumber Number
+ hi def link lispParenError Error
+ hi def link lispEscapeSpecial Type
+ hi def link lispString String
+ hi def link lispTodo Todo
+ hi def link lispVar Statement
+
+ if exists("g:lisp_rainbow") && g:lisp_rainbow != 0
+ if &bg == "dark"
+ hi def hlLevel0 ctermfg=red guifg=red1
+ hi def hlLevel1 ctermfg=yellow guifg=orange1
+ hi def hlLevel2 ctermfg=green guifg=yellow1
+ hi def hlLevel3 ctermfg=cyan guifg=greenyellow
+ hi def hlLevel4 ctermfg=magenta guifg=green1
+ hi def hlLevel5 ctermfg=red guifg=springgreen1
+ hi def hlLevel6 ctermfg=yellow guifg=cyan1
+ hi def hlLevel7 ctermfg=green guifg=slateblue1
+ hi def hlLevel8 ctermfg=cyan guifg=magenta1
+ hi def hlLevel9 ctermfg=magenta guifg=purple1
+ else
+ hi def hlLevel0 ctermfg=red guifg=red3
+ hi def hlLevel1 ctermfg=darkyellow guifg=orangered3
+ hi def hlLevel2 ctermfg=darkgreen guifg=orange2
+ hi def hlLevel3 ctermfg=blue guifg=yellow3
+ hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4
+ hi def hlLevel5 ctermfg=red guifg=green4
+ hi def hlLevel6 ctermfg=darkyellow guifg=paleturquoise3
+ hi def hlLevel7 ctermfg=darkgreen guifg=deepskyblue4
+ hi def hlLevel8 ctermfg=blue guifg=darkslateblue
+ hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet
+ endif
+ else
+ hi def link lispParen Delimiter
+ endif
+
+endif
+
+let b:current_syntax = "lisp"
+
+" ---------------------------------------------------------------------
+" vim: ts=8 nowrap fdm=marker
diff --git a/runtime/syntax/lite.vim b/runtime/syntax/lite.vim
new file mode 100644
index 0000000..a8d2689
--- /dev/null
+++ b/runtime/syntax/lite.vim
@@ -0,0 +1,168 @@
+" Vim syntax file
+" Language: lite
+" Maintainer: Lutz Eymers <ixtab@polzin.com>
+" URL: http://www.isp.de/data/lite.vim
+" Email: Subject: send syntax_vim.tgz
+" Last Change: 2001 Mai 01
+"
+" Options lite_sql_query = 1 for SQL syntax highligthing inside strings
+" lite_minlines = x to sync at least x lines backwards
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'lite'
+endif
+
+if main_syntax == 'lite'
+ if exists("lite_sql_query")
+ if lite_sql_query == 1
+ syn include @liteSql <sfile>:p:h/sql.vim
+ unlet b:current_syntax
+ endif
+ endif
+endif
+
+if main_syntax == 'msql'
+ if exists("msql_sql_query")
+ if msql_sql_query == 1
+ syn include @liteSql <sfile>:p:h/sql.vim
+ unlet b:current_syntax
+ endif
+ endif
+endif
+
+syn cluster liteSql remove=sqlString,sqlComment
+
+syn case match
+
+" Internal Variables
+syn keyword liteIntVar ERRMSG contained
+
+" Comment
+syn region liteComment start="/\*" end="\*/" contains=liteTodo
+
+" Function names
+syn keyword liteFunctions echo printf fprintf open close read
+syn keyword liteFunctions readln readtok
+syn keyword liteFunctions split strseg chop tr sub substr
+syn keyword liteFunctions test unlink umask chmod mkdir chdir rmdir
+syn keyword liteFunctions rename truncate link symlink stat
+syn keyword liteFunctions sleep system getpid getppid kill
+syn keyword liteFunctions time ctime time2unixtime unixtime2year
+syn keyword liteFunctions unixtime2year unixtime2month unixtime2day
+syn keyword liteFunctions unixtime2hour unixtime2min unixtime2sec
+syn keyword liteFunctions strftime
+syn keyword liteFunctions getpwnam getpwuid
+syn keyword liteFunctions gethostbyname gethostbyaddress
+syn keyword liteFunctions urlEncode setContentType includeFile
+syn keyword liteFunctions msqlConnect msqlClose msqlSelectDB
+syn keyword liteFunctions msqlQuery msqlStoreResult msqlFreeResult
+syn keyword liteFunctions msqlFetchRow msqlDataSeek msqlListDBs
+syn keyword liteFunctions msqlListTables msqlInitFieldList msqlListField
+syn keyword liteFunctions msqlFieldSeek msqlNumRows msqlEncode
+syn keyword liteFunctions exit fatal typeof
+syn keyword liteFunctions crypt addHttpHeader
+
+" Conditional
+syn keyword liteConditional if else
+
+" Repeat
+syn keyword liteRepeat while
+
+" Operator
+syn keyword liteStatement break return continue
+
+" Operator
+syn match liteOperator "[-+=#*]"
+syn match liteOperator "/[^*]"me=e-1
+syn match liteOperator "\$"
+syn match liteRelation "&&"
+syn match liteRelation "||"
+syn match liteRelation "[!=<>]="
+syn match liteRelation "[<>]"
+
+" Identifier
+syn match liteIdentifier "$\h\w*" contains=liteIntVar,liteOperator
+syn match liteGlobalIdentifier "@\h\w*" contains=liteIntVar
+
+" Include
+syn keyword liteInclude load
+
+" Define
+syn keyword liteDefine funct
+
+" Type
+syn keyword liteType int uint char real
+
+" String
+syn region liteString keepend matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=liteIdentifier,liteSpecialChar,@liteSql
+
+" Number
+syn match liteNumber "-\=\<\d\+\>"
+
+" Float
+syn match liteFloat "\(-\=\<\d+\|-\=\)\.\d\+\>"
+
+" SpecialChar
+syn match liteSpecialChar "\\[abcfnrtv\\]" contained
+
+syn match liteParentError "[)}\]]"
+
+" Todo
+syn keyword liteTodo TODO Todo todo contained
+
+" dont syn #!...
+syn match liteExec "^#!.*$"
+
+" Parents
+syn cluster liteInside contains=liteComment,liteFunctions,liteIdentifier,liteGlobalIdentifier,liteConditional,liteRepeat,liteStatement,liteOperator,liteRelation,liteType,liteString,liteNumber,liteFloat,liteParent
+
+syn region liteParent matchgroup=Delimiter start="(" end=")" contains=@liteInside
+syn region liteParent matchgroup=Delimiter start="{" end="}" contains=@liteInside
+syn region liteParent matchgroup=Delimiter start="\[" end="\]" contains=@liteInside
+
+" sync
+if main_syntax == 'lite'
+ if exists("lite_minlines")
+ exec "syn sync minlines=" . lite_minlines
+ else
+ syn sync minlines=100
+ endif
+endif
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link liteComment Comment
+hi def link liteString String
+hi def link liteNumber Number
+hi def link liteFloat Float
+hi def link liteIdentifier Identifier
+hi def link liteGlobalIdentifier Identifier
+hi def link liteIntVar Identifier
+hi def link liteFunctions Function
+hi def link liteRepeat Repeat
+hi def link liteConditional Conditional
+hi def link liteStatement Statement
+hi def link liteType Type
+hi def link liteInclude Include
+hi def link liteDefine Define
+hi def link liteSpecialChar SpecialChar
+hi def link liteParentError liteError
+hi def link liteError Error
+hi def link liteTodo Todo
+hi def link liteOperator Operator
+hi def link liteRelation Operator
+
+
+let b:current_syntax = "lite"
+
+if main_syntax == 'lite'
+ unlet main_syntax
+endif
+
+" vim: ts=8
diff --git a/runtime/syntax/litestep.vim b/runtime/syntax/litestep.vim
new file mode 100644
index 0000000..e3d967f
--- /dev/null
+++ b/runtime/syntax/litestep.vim
@@ -0,0 +1,269 @@
+" Vim syntax file
+" Language: LiteStep RC file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-02-22
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword litestepTodo
+ \ contained
+ \ TODO FIXME XXX NOTE
+
+syn match litestepComment
+ \ contained display contains=litestepTodo,@Spell
+ \ ';.*$'
+
+syn case ignore
+
+syn cluster litestepBeginnings
+ \ contains=
+ \ litestepComment,
+ \ litestepPreProc,
+ \ litestepMultiCommandStart,
+ \ litestepBangCommandStart,
+ \ litestepGenericDirective
+
+syn match litestepGenericDirective
+ \ contained display
+ \ '\<\h\w\+\>'
+
+syn match litestepBeginning
+ \ nextgroup=@litestepBeginnings skipwhite
+ \ '^'
+
+syn keyword litestepPreProc
+ \ contained
+ \ Include
+ \ If
+ \ ElseIf
+ \ Else
+ \ EndIf
+
+syn cluster litestepMultiCommands
+ \ contains=
+ \ litestepMultiCommand
+
+syn match litestepMultiCommandStart
+ \ nextgroup=@litestepMultiCommands
+ \ '\*'
+
+syn match litestepMultiCommand
+ \ contained display
+ \ '\<\h\w\+\>'
+
+syn cluster litestepVariables
+ \ contains=
+ \ litestepBuiltinFolderVariable,
+ \ litestepBuiltinConditionalVariable,
+ \ litestepBuiltinResourceVariable,
+ \ litestepBuiltinGUIDFolderMappingVariable,
+ \ litestepVariable
+
+syn region litestepVariableExpansion
+ \ display oneline transparent
+ \ contains=
+ \ @litestepVariables,
+ \ litestepNumber,
+ \ litestepMathOperator
+ \ matchgroup=litestepVariableExpansion
+ \ start='\$'
+ \ end='\$'
+
+syn match litestepNumber
+ \ display
+ \ '\<\d\+\>'
+
+syn region litestepString
+ \ display oneline contains=litestepVariableExpansion
+ \ start=+"+ end=+"+
+
+" TODO: unsure about this one.
+syn region litestepSubValue
+ \ display oneline contains=litestepVariableExpansion
+ \ start=+'+ end=+'+
+
+syn keyword litestepBoolean
+ \ true
+ \ false
+
+"syn keyword litestepLine
+" \ ?
+
+"syn match litestepColor
+" \ display
+" \ '\<\x\+\>'
+
+syn match litestepRelationalOperator
+ \ display
+ \ '=\|<[>=]\=\|>=\='
+
+syn keyword litestepLogicalOperator
+ \ and
+ \ or
+ \ not
+
+syn match litestepMathOperator
+ \ contained display
+ \ '[+*/-]'
+
+syn keyword litestepBuiltinDirective
+ \ LoadModule
+ \ LSNoStartup
+ \ LSAutoHideModules
+ \ LSNoShellWarning
+ \ LSSetAsShell
+ \ LSUseSystemDDE
+ \ LSDisableTrayService
+ \ LSImageFolder
+ \ ThemeAuthor
+ \ ThemeName
+
+syn keyword litestepDeprecatedBuiltinDirective
+ \ LSLogLevel
+ \ LSLogFile
+
+syn match litestepVariable
+ \ contained display
+ \ '\<\h\w\+\>'
+
+syn keyword litestepBuiltinFolderVariable
+ \ contained
+ \ AdminToolsDir
+ \ CommonAdminToolsDir
+ \ CommonDesktopDir
+ \ CommonFavorites
+ \ CommonPrograms
+ \ CommonStartMenu
+ \ CommonStartup
+ \ Cookies
+ \ Desktop
+ \ DesktopDir
+ \ DocumentsDir
+ \ Favorites
+ \ Fonts
+ \ History
+ \ Internet
+ \ InternetCache
+ \ LitestepDir
+ \ Nethood
+ \ Printhood
+ \ Programs
+ \ QuickLaunch
+ \ Recent
+ \ Sendto
+ \ Startmenu
+ \ Startup
+ \ Templates
+ \ WinDir
+ \ LitestepDir
+
+syn keyword litestepBuiltinConditionalVariable
+ \ contained
+ \ Win2000
+ \ Win95
+ \ Win98
+ \ Win9X
+ \ WinME
+ \ WinNT
+ \ WinNT4
+ \ WinXP
+
+syn keyword litestepBuiltinResourceVariable
+ \ contained
+ \ CompileDate
+ \ ResolutionX
+ \ ResolutionY
+ \ UserName
+
+syn keyword litestepBuiltinGUIDFolderMappingVariable
+ \ contained
+ \ AdminTools
+ \ BitBucket
+ \ Controls
+ \ Dialup
+ \ Documents
+ \ Drives
+ \ Network
+ \ NetworkAndDialup
+ \ Printers
+ \ Scheduled
+
+syn cluster litestepBangs
+ \ contains=
+ \ litestepBuiltinBang,
+ \ litestepBang
+
+syn match litestepBangStart
+ \ nextgroup=@litestepBangs
+ \ '!'
+
+syn match litestepBang
+ \ contained display
+ \ '\<\h\w\+\>'
+
+syn keyword litestepBuiltinBang
+ \ contained
+ \ About
+ \ Alert
+ \ CascadeWindows
+ \ Confirm
+ \ Execute
+ \ Gather
+ \ HideModules
+ \ LogOff
+ \ MinimizeWindows
+ \ None
+ \ Quit
+ \ Recycle
+ \ Refresh
+ \ Reload
+ \ ReloadModule
+ \ RestoreWindows
+ \ Run
+ \ ShowModules
+ \ Shutdown
+ \ Switchuser
+ \ TileWindowsH
+ \ TileWindowsV
+ \ ToggleModules
+ \ UnloadModule
+
+hi def link litestepTodo Todo
+hi def link litestepComment Comment
+hi def link litestepDirective Keyword
+hi def link litestepGenericDirective litestepDirective
+hi def link litestepPreProc PreProc
+hi def link litestepMultiCommandStart litestepPreProc
+hi def link litestepMultiCommand litestepDirective
+hi def link litestepDelimiter Delimiter
+hi def link litestepVariableExpansion litestepDelimiter
+hi def link litestepNumber Number
+hi def link litestepString String
+hi def link litestepSubValue litestepString
+hi def link litestepBoolean Boolean
+"hi def link litestepLine
+"hi def link litestepColor Type
+hi def link litestepOperator Operator
+hi def link litestepRelationalOperator litestepOperator
+hi def link litestepLogicalOperator litestepOperator
+hi def link litestepMathOperator litestepOperator
+hi def link litestepBuiltinDirective litestepDirective
+hi def link litestepDeprecatedBuiltinDirective Error
+hi def link litestepVariable Identifier
+hi def link litestepBuiltinFolderVariable Identifier
+hi def link litestepBuiltinConditionalVariable Identifier
+hi def link litestepBuiltinResourceVariable Identifier
+hi def link litestepBuiltinGUIDFolderMappingVariable Identifier
+hi def link litestepBangStart litestepPreProc
+hi def link litestepBang litestepDirective
+hi def link litestepBuiltinBang litestepBang
+
+let b:current_syntax = "litestep"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/loginaccess.vim b/runtime/syntax/loginaccess.vim
new file mode 100644
index 0000000..650e067
--- /dev/null
+++ b/runtime/syntax/loginaccess.vim
@@ -0,0 +1,96 @@
+" Vim syntax file
+" Language: login.access(5) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword loginaccessTodo contained TODO FIXME XXX NOTE
+
+syn region loginaccessComment display oneline start='^#' end='$'
+ \ contains=loginaccessTodo,@Spell
+
+syn match loginaccessBegin display '^'
+ \ nextgroup=loginaccessPermission,
+ \ loginaccessComment skipwhite
+
+syn match loginaccessPermission contained display '[^#]'
+ \ contains=loginaccessPermError
+ \ nextgroup=loginaccessUserSep
+
+syn match loginaccessPermError contained display '[^+-]'
+
+syn match loginaccessUserSep contained display ':'
+ \ nextgroup=loginaccessUsers,
+ \ loginaccessAllUsers,
+ \ loginaccessExceptUsers
+
+syn match loginaccessUsers contained display '[^, \t:]\+'
+ \ nextgroup=loginaccessUserIntSep,
+ \ loginaccessOriginSep
+
+syn match loginaccessAllUsers contained display '\<ALL\>'
+ \ nextgroup=loginaccessUserIntSep,
+ \ loginaccessOriginSep
+
+syn match loginaccessLocalUsers contained display '\<LOCAL\>'
+ \ nextgroup=loginaccessUserIntSep,
+ \ loginaccessOriginSep
+
+syn match loginaccessExceptUsers contained display '\<EXCEPT\>'
+ \ nextgroup=loginaccessUserIntSep,
+ \ loginaccessOriginSep
+
+syn match loginaccessUserIntSep contained display '[, \t]'
+ \ nextgroup=loginaccessUsers,
+ \ loginaccessAllUsers,
+ \ loginaccessExceptUsers
+
+syn match loginaccessOriginSep contained display ':'
+ \ nextgroup=loginaccessOrigins,
+ \ loginaccessAllOrigins,
+ \ loginaccessExceptOrigins
+
+syn match loginaccessOrigins contained display '[^, \t]\+'
+ \ nextgroup=loginaccessOriginIntSep
+
+syn match loginaccessAllOrigins contained display '\<ALL\>'
+ \ nextgroup=loginaccessOriginIntSep
+
+syn match loginaccessLocalOrigins contained display '\<LOCAL\>'
+ \ nextgroup=loginaccessOriginIntSep
+
+syn match loginaccessExceptOrigins contained display '\<EXCEPT\>'
+ \ nextgroup=loginaccessOriginIntSep
+
+syn match loginaccessOriginIntSep contained display '[, \t]'
+ \ nextgroup=loginaccessOrigins,
+ \ loginaccessAllOrigins,
+ \ loginaccessExceptOrigins
+
+hi def link loginaccessTodo Todo
+hi def link loginaccessComment Comment
+hi def link loginaccessPermission Type
+hi def link loginaccessPermError Error
+hi def link loginaccessUserSep Delimiter
+hi def link loginaccessUsers Identifier
+hi def link loginaccessAllUsers Macro
+hi def link loginaccessLocalUsers Macro
+hi def link loginaccessExceptUsers Operator
+hi def link loginaccessUserIntSep loginaccessUserSep
+hi def link loginaccessOriginSep loginaccessUserSep
+hi def link loginaccessOrigins Identifier
+hi def link loginaccessAllOrigins Macro
+hi def link loginaccessLocalOrigins Macro
+hi def link loginaccessExceptOrigins loginaccessExceptUsers
+hi def link loginaccessOriginIntSep loginaccessUserSep
+
+let b:current_syntax = "loginaccess"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/logindefs.vim b/runtime/syntax/logindefs.vim
new file mode 100644
index 0000000..8cb4295
--- /dev/null
+++ b/runtime/syntax/logindefs.vim
@@ -0,0 +1,174 @@
+" Vim syntax file
+" Language: login.defs(5) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2010-11-29
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match logindefsBegin display '^'
+ \ nextgroup=
+ \ logindefsComment,
+ \ @logindefsKeyword
+ \ skipwhite
+
+syn region logindefsComment display oneline start='^\s*#' end='$'
+ \ contains=logindefsTodo,@Spell
+
+syn keyword logindefsTodo contained TODO FIXME XXX NOTE
+
+syn cluster logindefsKeyword contains=
+ \ logindefsBooleanKeyword,
+ \ logindefsEncryptKeyword,
+ \ logindefsNumberKeyword,
+ \ logindefsPathKeyword,
+ \ logindefsPathsKeyword,
+ \ logindefsStringKeyword
+
+syn keyword logindefsBooleanKeyword contained
+ \ CHFN_AUTH
+ \ CHSH_AUTH
+ \ CREATE_HOME
+ \ DEFAULT_HOME
+ \ FAILLOG_ENAB
+ \ LASTLOG_ENAB
+ \ LOG_OK_LOGINS
+ \ LOG_UNKFAIL_ENAB
+ \ MAIL_CHECK_ENAB
+ \ MD5_CRYPT_ENAB
+ \ OBSCURE_CHECKS_ENAB
+ \ PASS_ALWAYS_WARN
+ \ PORTTIME_CHECKS_ENAB
+ \ QUOTAS_ENAB
+ \ SU_WHEEL_ONLY
+ \ SYSLOG_SG_ENAB
+ \ SYSLOG_SU_ENAB
+ \ USERGROUPS_ENAB
+ \ nextgroup=logindefsBoolean skipwhite
+
+syn keyword logindefsBoolean contained yes no
+
+syn keyword logindefsEncryptKeyword contained
+ \ ENCRYPT_METHOD
+ \ nextgroup=logindefsEncryptMethod skipwhite
+
+syn keyword logindefsEncryptMethod contained
+ \ DES
+ \ MD5
+ \ SHA256
+ \ SHA512
+
+syn keyword logindefsNumberKeyword contained
+ \ ERASECHAR
+ \ FAIL_DELAY
+ \ GID_MAX
+ \ GID_MIN
+ \ KILLCHAR
+ \ LOGIN_RETRIES
+ \ LOGIN_TIMEOUT
+ \ MAX_MEMBERS_PER_GROUP
+ \ PASS_CHANGE_TRIES
+ \ PASS_MAX_DAYS
+ \ PASS_MIN_DAYS
+ \ PASS_WARN_AGE
+ \ PASS_MAX_LEN
+ \ PASS_MIN_LEN
+ \ SHA_CRYPT_MAX_ROUNDS
+ \ SHA_CRYPT_MIN_ROUNDS
+ \ SYS_GID_MAX
+ \ SYS_GID_MIN
+ \ SYS_UID_MAX
+ \ SYS_UID_MIN
+ \ UID_MAX
+ \ UID_MIN
+ \ ULIMIT
+ \ UMASK
+ \ nextgroup=@logindefsNumber skipwhite
+
+syn cluster logindefsNumber contains=
+ \ logindefsDecimal,
+ \ logindefsHex,
+ \ logindefsOctal,
+ \ logindefsOctalError
+
+syn match logindefsDecimal contained '\<\d\+\>'
+
+syn match logindefsHex contained display '\<0x\x\+\>'
+
+syn match logindefsOctal contained display '\<0\o\+\>'
+ \ contains=logindefsOctalZero
+syn match logindefsOctalZero contained display '\<0'
+
+syn match logindefsOctalError contained display '\<0\o*[89]\d*\>'
+
+syn keyword logindefsPathKeyword contained
+ \ ENVIRON_FILE
+ \ FAKE_SHELL
+ \ FTMP_FILE
+ \ HUSHLOGIN_FILE
+ \ ISSUE_FILE
+ \ MAIL_DIR
+ \ MAIL_FILE
+ \ NOLOGINS_FILE
+ \ SULOG_FILE
+ \ TTYTYPE_FILE
+ \ nextgroup=logindefsPath skipwhite
+
+syn match logindefsPath contained '[[:graph:]]\+'
+
+syn keyword logindefsPathsKeyword contained
+ \ CONSOLE
+ \ ENV_PATH
+ \ ENV_SUPATH
+ \ MOTD_FILE
+ \ nextgroup=logindefsPaths skipwhite
+
+syn match logindefsPaths contained '[^:]\+'
+ \ nextgroup=logindefsPathDelim
+
+syn match logindefsPathDelim contained ':' nextgroup=logindefsPaths
+
+syn keyword logindefsStringKeyword contained
+ \ CHFN_RESTRICT
+ \ CONSOLE_GROUPS
+ \ ENV_HZ
+ \ ENV_TZ
+ \ LOGIN_STRING
+ \ SU_NAME
+ \ TTYGROUP
+ \ TTYPERM
+ \ USERDEL_CMD
+ \ nextgroup=logindefsString skipwhite
+
+syn match logindefsString contained '[[:graph:]]\+'
+
+hi def link logindefsComment Comment
+hi def link logindefsTodo Todo
+hi def link logindefsKeyword Keyword
+hi def link logindefsBooleanKeyword logindefsKeyword
+hi def link logindefsEncryptKeyword logindefsKeyword
+hi def link logindefsNumberKeyword logindefsKeyword
+hi def link logindefsPathKeyword logindefsKeyword
+hi def link logindefsPathsKeyword logindefsKeyword
+hi def link logindefsStringKeyword logindefsKeyword
+hi def link logindefsBoolean Boolean
+hi def link logindefsEncryptMethod Type
+hi def link logindefsNumber Number
+hi def link logindefsDecimal logindefsNumber
+hi def link logindefsHex logindefsNumber
+hi def link logindefsOctal logindefsNumber
+hi def link logindefsOctalZero PreProc
+hi def link logindefsOctalError Error
+hi def link logindefsPath String
+hi def link logindefsPaths logindefsPath
+hi def link logindefsPathDelim Delimiter
+hi def link logindefsString String
+
+let b:current_syntax = "logindefs"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/logtalk.vim b/runtime/syntax/logtalk.vim
new file mode 100644
index 0000000..a7fe9ce
--- /dev/null
+++ b/runtime/syntax/logtalk.vim
@@ -0,0 +1,454 @@
+" Vim syntax file
+"
+" Language: Logtalk
+" Maintainer: Paulo Moura <pmoura@logtalk.org>
+" Last Change: August 3, 2018
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Logtalk is case sensitive:
+
+syn case match
+
+
+" Logtalk variables
+
+syn match logtalkVariable "\<\(\u\|_\)\(\w\)*\>"
+
+
+" Logtalk clause functor
+
+syn match logtalkOperator ":-"
+
+
+" Logtalk quoted atoms and strings
+
+syn region logtalkString start=+"+ skip=+\\"+ end=+"+
+syn region logtalkAtom start=+'+ skip=+\\'+ end=+'+ contains=logtalkEscapeSequence
+
+syn match logtalkEscapeSequence contained "\\\([\\abfnrtv\"\']\|\(x[a-fA-F0-9]\+\|[0-7]\+\)\\\)"
+
+
+" Logtalk message sending operators
+
+syn match logtalkOperator "::"
+syn match logtalkOperator ":"
+syn match logtalkOperator "\^\^"
+
+
+" Logtalk external call
+
+syn region logtalkExtCall matchgroup=logtalkExtCallTag start="{" matchgroup=logtalkExtCallTag end="}" contains=ALL
+
+
+" Logtalk opening entity directives
+
+syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment
+syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
+syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
+
+
+" Logtalk closing entity directives
+
+syn match logtalkCloseEntityDir ":- end_object\."
+syn match logtalkCloseEntityDir ":- end_protocol\."
+syn match logtalkCloseEntityDir ":- end_category\."
+
+
+" Logtalk entity relations
+
+syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
+syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
+syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
+syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
+syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
+syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="complements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
+
+
+" Logtalk directives
+
+syn region logtalkDir matchgroup=logtalkDirTag start=":- if(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- elif(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn match logtalkDirTag ":- else\."
+syn match logtalkDirTag ":- endif\."
+syn region logtalkDir matchgroup=logtalkDirTag start=":- alias(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- coinductive(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- encoding(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom
+syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn match logtalkDirTag ":- built_in\."
+syn match logtalkDirTag ":- dynamic\."
+syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_predicate(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_non_terminal(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- set_logtalk_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- synchronized(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn match logtalkDirTag ":- synchronized\."
+syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn match logtalkDirTag ":- threaded\."
+
+
+" Prolog directives
+
+syn region logtalkDir matchgroup=logtalkDirTag start=":- ensure_loaded(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- include(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- set_prolog_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL
+
+
+" Module directives
+
+syn region logtalkDir matchgroup=logtalkDirTag start=":- module(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- export(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- reexport(" matchgroup=logtalkDirTag end=")\." contains=ALL
+syn region logtalkDir matchgroup=logtalkDirTag start=":- use_module(" matchgroup=logtalkDirTag end=")\." contains=ALL
+
+
+" Logtalk built-in predicates
+
+syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze("
+
+syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze("
+
+syn match logtalkBuiltIn "\<co\(mplements_object\|nforms_to_protocol\)\ze("
+syn match logtalkBuiltIn "\<extends_\(object\|protocol\|category\)\ze("
+syn match logtalkBuiltIn "\<imp\(orts_category\|lements_protocol\)\ze("
+syn match logtalkBuiltIn "\<\(instantiat\|specializ\)es_class\ze("
+
+syn match logtalkBuiltIn "\<\(abolish\|define\)_events\ze("
+syn match logtalkBuiltIn "\<current_event\ze("
+
+syn match logtalkBuiltIn "\<\(create\|current\|set\)_logtalk_flag\ze("
+
+syn match logtalkBuiltIn "\<logtalk_\(compile\|l\(ibrary_path\|oad\|oad_context\)\|make\(_target_action\)\?\)\ze("
+syn match logtalkBuiltIn "\<logtalk_make\>"
+
+syn match logtalkBuiltIn "\<\(for\|retract\)all\ze("
+
+syn match logtalkBuiltIn "\<threaded\(_\(call\|once\|ignore\|exit\|peek\|wait\|notify\)\)\?\ze("
+syn match logtalkBuiltIn "\<threaded_engine\(_\(create\|destroy\|self\|next\|next_reified\|yield\|post\|fetch\)\)\?\ze("
+
+
+" Logtalk built-in methods
+
+syn match logtalkBuiltInMethod "\<context\ze("
+syn match logtalkBuiltInMethod "\<parameter\ze("
+syn match logtalkBuiltInMethod "\<se\(lf\|nder\)\ze("
+syn match logtalkBuiltInMethod "\<this\ze("
+
+syn match logtalkBuiltInMethod "\<current_predicate\ze("
+syn match logtalkBuiltInMethod "\<predicate_property\ze("
+
+syn match logtalkBuiltInMethod "\<a\(bolish\|ssert\(a\|z\)\)\ze("
+syn match logtalkBuiltInMethod "\<clause\ze("
+syn match logtalkBuiltInMethod "\<retract\(all\)\?\ze("
+
+syn match logtalkBuiltInMethod "\<\(bag\|set\)of\ze("
+syn match logtalkBuiltInMethod "\<f\(ind\|or\)all\ze("
+
+syn match logtalkBuiltInMethod "\<before\ze("
+syn match logtalkBuiltInMethod "\<after\ze("
+
+syn match logtalkBuiltInMethod "\<forward\ze("
+
+syn match logtalkBuiltInMethod "\<expand_\(goal\|term\)\ze("
+syn match logtalkBuiltInMethod "\<\(goal\|term\)_expansion\ze("
+syn match logtalkBuiltInMethod "\<phrase\ze("
+
+
+" Mode operators
+
+syn match logtalkOperator "?"
+syn match logtalkOperator "@"
+
+
+" Control constructs
+
+syn match logtalkKeyword "\<true\>"
+syn match logtalkKeyword "\<fail\>"
+syn match logtalkKeyword "\<false\>"
+syn match logtalkKeyword "\<ca\(ll\|tch\)\ze("
+syn match logtalkOperator "!"
+" syn match logtalkOperator ","
+syn match logtalkOperator ";"
+syn match logtalkOperator "-->"
+syn match logtalkOperator "->"
+syn match logtalkKeyword "\<throw\ze("
+syn match logtalkKeyword "\<\(instantiation\|system\)_error\>"
+syn match logtalkKeyword "\<\(type\|domain\|existence\|permission\|representation\|evaluation\|resource\|syntax\)_error\ze("
+
+
+" Term unification
+
+syn match logtalkOperator "="
+syn match logtalkKeyword "\<subsumes_term\ze("
+syn match logtalkKeyword "\<unify_with_occurs_check\ze("
+syn match logtalkOperator "\\="
+
+
+" Term testing
+
+syn match logtalkKeyword "\<var\ze("
+syn match logtalkKeyword "\<atom\(ic\)\?\ze("
+syn match logtalkKeyword "\<integer\ze("
+syn match logtalkKeyword "\<float\ze("
+syn match logtalkKeyword "\<c\(allable\|ompound\)\ze("
+syn match logtalkKeyword "\<n\(onvar\|umber\)\ze("
+syn match logtalkKeyword "\<ground\ze("
+syn match logtalkKeyword "\<acyclic_term\ze("
+
+
+" Term comparison
+
+syn match logtalkKeyword "\<compare\ze("
+syn match logtalkOperator "@=<"
+syn match logtalkOperator "=="
+syn match logtalkOperator "\\=="
+syn match logtalkOperator "@<"
+syn match logtalkOperator "@>"
+syn match logtalkOperator "@>="
+
+
+" Term creation and decomposition
+
+syn match logtalkKeyword "\<functor\ze("
+syn match logtalkKeyword "\<arg\ze("
+syn match logtalkOperator "=\.\."
+syn match logtalkKeyword "\<copy_term\ze("
+syn match logtalkKeyword "\<numbervars\ze("
+syn match logtalkKeyword "\<term_variables\ze("
+
+
+" Predicate aliases
+
+syn match logtalkOperator "\<as\>"
+
+
+" Arithmetic evaluation
+
+syn match logtalkOperator "\<is\>"
+
+
+" Arithmetic comparison
+
+syn match logtalkOperator "=:="
+syn match logtalkOperator "=\\="
+syn match logtalkOperator "<"
+syn match logtalkOperator "=<"
+syn match logtalkOperator ">"
+syn match logtalkOperator ">="
+
+
+" Stream selection and control
+
+syn match logtalkKeyword "\<\(curren\|se\)t_\(in\|out\)put\ze("
+syn match logtalkKeyword "\<open\ze("
+syn match logtalkKeyword "\<close\ze("
+syn match logtalkKeyword "\<flush_output\ze("
+syn match logtalkKeyword "\<flush_output\>"
+syn match logtalkKeyword "\<stream_property\ze("
+syn match logtalkKeyword "\<at_end_of_stream\ze("
+syn match logtalkKeyword "\<at_end_of_stream\>"
+syn match logtalkKeyword "\<set_stream_position\ze("
+
+
+" Character and byte input/output
+
+syn match logtalkKeyword "\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze("
+syn match logtalkKeyword "\<nl\ze("
+syn match logtalkKeyword "\<nl\>"
+
+
+" Term input/output
+
+syn match logtalkKeyword "\<read\(_term\)\?\ze("
+syn match logtalkKeyword "\<write\(q\|_\(canonical\|term\)\)\?\ze("
+syn match logtalkKeyword "\<\(current_\)\?op\ze("
+syn match logtalkKeyword "\<\(current_\)\?char_conversion\ze("
+
+
+" Logic and control
+
+syn match logtalkOperator "\\+"
+syn match logtalkKeyword "\<ignore\ze("
+syn match logtalkKeyword "\<once\ze("
+syn match logtalkKeyword "\<repeat\>"
+
+
+" Atomic term processing
+
+syn match logtalkKeyword "\<atom_\(length\|c\(hars\|o\(ncat\|des\)\)\)\ze("
+syn match logtalkKeyword "\<sub_atom\ze("
+syn match logtalkKeyword "\<char_code\ze("
+syn match logtalkKeyword "\<number_c\(har\|ode\)s\ze("
+
+
+" Implementation defined hooks functions
+
+syn match logtalkKeyword "\<\(curren\|se\)t_prolog_flag\ze("
+syn match logtalkKeyword "\<halt\ze("
+syn match logtalkKeyword "\<halt\>"
+
+
+" Sorting
+
+syn match logtalkKeyword "\<\(key\)\?sort\ze("
+
+
+" Evaluable functors
+
+syn match logtalkOperator "+"
+syn match logtalkOperator "-"
+syn match logtalkOperator "\*"
+syn match logtalkOperator "//"
+syn match logtalkOperator "/"
+syn match logtalkKeyword "\<div\ze("
+syn match logtalkKeyword "\<r\(ound\|em\)\ze("
+syn match logtalkKeyword "\<e\>"
+syn match logtalkKeyword "\<pi\>"
+syn match logtalkKeyword "\<div\>"
+syn match logtalkKeyword "\<rem\>"
+syn match logtalkKeyword "\<m\(ax\|in\|od\)\ze("
+syn match logtalkKeyword "\<mod\>"
+syn match logtalkKeyword "\<abs\ze("
+syn match logtalkKeyword "\<sign\ze("
+syn match logtalkKeyword "\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze("
+syn match logtalkKeyword "\<t\(an\|runcate\)\ze("
+syn match logtalkKeyword "\<ceiling\ze("
+
+
+" Other arithemtic functors
+
+syn match logtalkOperator "\*\*"
+syn match logtalkKeyword "\<s\(in\|qrt\)\ze("
+syn match logtalkKeyword "\<cos\ze("
+syn match logtalkKeyword "\<a\(cos\|sin\|tan\|tan2\)\ze("
+syn match logtalkKeyword "\<exp\ze("
+syn match logtalkKeyword "\<log\ze("
+
+
+" Bitwise functors
+
+syn match logtalkOperator ">>"
+syn match logtalkOperator "<<"
+syn match logtalkOperator "/\\"
+syn match logtalkOperator "\\/"
+syn match logtalkOperator "\\"
+syn match logtalkKeyword "\<xor\ze("
+
+
+" Logtalk list operator
+
+syn match logtalkOperator "|"
+
+
+" Logtalk existential quantifier operator
+
+syn match logtalkOperator "\^"
+
+
+" Logtalk numbers
+
+syn match logtalkNumber "\<\d\+\>"
+syn match logtalkNumber "\<\d\+\.\d\+\>"
+syn match logtalkNumber "\<\d\+[eE][-+]\=\d\+\>"
+syn match logtalkNumber "\<\d\+\.\d\+[eE][-+]\=\d\+\>"
+syn match logtalkNumber "\<0'[\\]\?.\|0''\|0'\"\>"
+syn match logtalkNumber "\<0b[0-1]\+\>"
+syn match logtalkNumber "\<0o\o\+\>"
+syn match logtalkNumber "\<0x\x\+\>"
+
+
+" Logtalk end-of-clause
+
+syn match logtalkOperator "\."
+
+
+" Logtalk comments
+
+syn region logtalkBlockComment start="/\*" end="\*/" fold
+syn match logtalkLineComment "%.*"
+
+syn cluster logtalkComment contains=logtalkBlockComment,logtalkLineComment
+
+
+" Logtalk conditional compilation folding
+
+syn region logtalkIfContainer transparent keepend extend start=":- if(" end=":- endif\." containedin=ALLBUT,@logtalkComment contains=NONE
+syn region logtalkIf transparent fold keepend start=":- if(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP
+syn region logtalkElseIf transparent fold keepend start=":- elif(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP
+syn region logtalkElse transparent fold keepend start=":- else\." end=":- endif\." contained containedin=logtalkIfContainer contains=TOP
+
+
+
+" Logtalk entity folding
+
+syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL
+syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL
+syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL
+
+
+syn sync ccomment logtalkBlockComment maxlines=50
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link logtalkBlockComment Comment
+hi def link logtalkLineComment Comment
+
+hi def link logtalkOpenEntityDir Normal
+hi def link logtalkOpenEntityDirTag PreProc
+
+hi def link logtalkIfContainer PreProc
+hi def link logtalkIf PreProc
+hi def link logtalkElseIf PreProc
+hi def link logtalkElse PreProc
+
+hi def link logtalkEntity Normal
+
+hi def link logtalkEntityRel Normal
+hi def link logtalkEntityRelTag PreProc
+
+hi def link logtalkCloseEntityDir PreProc
+
+hi def link logtalkDir Normal
+hi def link logtalkDirTag PreProc
+
+hi def link logtalkAtom String
+hi def link logtalkString String
+hi def link logtalkEscapeSequence SpecialChar
+
+hi def link logtalkNumber Number
+
+hi def link logtalkKeyword Keyword
+
+hi def link logtalkBuiltIn Keyword
+hi def link logtalkBuiltInMethod Keyword
+
+hi def link logtalkOperator Operator
+
+hi def link logtalkExtCall Normal
+hi def link logtalkExtCallTag Operator
+
+hi def link logtalkVariable Identifier
+
+
+
+let b:current_syntax = "logtalk"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/lotos.vim b/runtime/syntax/lotos.vim
new file mode 100644
index 0000000..8262e1d
--- /dev/null
+++ b/runtime/syntax/lotos.vim
@@ -0,0 +1,69 @@
+" Vim syntax file
+" Language: LOTOS (Language Of Temporal Ordering Specifications, IS8807)
+" Maintainer: Daniel Amyot <damyot@csi.uottawa.ca>
+" Last Change: Wed Aug 19 1998
+" URL: http://lotos.csi.uottawa.ca/~damyot/vim/lotos.vim
+" This file is an adaptation of pascal.vim by Mario Eusebio
+" I'm not sure I understand all of the syntax highlight language,
+" but this file seems to do the job for standard LOTOS.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+"Comments in LOTOS are between (* and *)
+syn region lotosComment start="(\*" end="\*)" contains=lotosTodo
+
+"Operators [], [...], >>, ->, |||, |[...]|, ||, ;, !, ?, :, =, ,, :=
+syn match lotosDelimiter "[][]"
+syn match lotosDelimiter ">>"
+syn match lotosDelimiter "->"
+syn match lotosDelimiter "\[>"
+syn match lotosDelimiter "[|;!?:=,]"
+
+"Regular keywords
+syn keyword lotosStatement specification endspec process endproc
+syn keyword lotosStatement where behaviour behavior
+syn keyword lotosStatement any let par accept choice hide of in
+syn keyword lotosStatement i stop exit noexit
+
+"Operators from the Abstract Data Types in IS8807
+syn keyword lotosOperator eq ne succ and or xor implies iff
+syn keyword lotosOperator not true false
+syn keyword lotosOperator Insert Remove IsIn NotIn Union Ints
+syn keyword lotosOperator Minus Includes IsSubsetOf
+syn keyword lotosOperator lt le ge gt 0
+
+"Sorts in IS8807
+syn keyword lotosSort Boolean Bool FBoolean FBool Element
+syn keyword lotosSort Set String NaturalNumber Nat HexString
+syn keyword lotosSort HexDigit DecString DecDigit
+syn keyword lotosSort OctString OctDigit BitString Bit
+syn keyword lotosSort Octet OctetString
+
+"Keywords for ADTs
+syn keyword lotosType type endtype library endlib sorts formalsorts
+syn keyword lotosType eqns formaleqns opns formalopns forall ofsort is
+syn keyword lotosType for renamedby actualizedby sortnames opnnames
+syn keyword lotosType using
+
+syn sync lines=250
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link lotosStatement Statement
+hi def link lotosProcess Label
+hi def link lotosOperator Operator
+hi def link lotosSort Function
+hi def link lotosType Type
+hi def link lotosComment Comment
+hi def link lotosDelimiter String
+
+
+let b:current_syntax = "lotos"
+
+" vim: ts=8
diff --git a/runtime/syntax/lout.vim b/runtime/syntax/lout.vim
new file mode 100644
index 0000000..b26a7bc
--- /dev/null
+++ b/runtime/syntax/lout.vim
@@ -0,0 +1,135 @@
+" Vim syntax file
+" Language: Lout
+" Maintainer: Christian V. J. Brüssow <cvjb@cvjb.de>
+" Last Change: So 12 Feb 2012 15:15:03 CET
+" Filenames: *.lout,*.lt
+" URL: http://www.cvjb.de/comp/vim/lout.vim
+
+" $Id: lout.vim,v 1.4 2012/02/12 15:16:17 bruessow Exp $
+"
+" Lout: Basser Lout document formatting system.
+
+" Many Thanks to...
+"
+" 2012-02-12:
+" Thilo Six <T.Six at gmx dot de> send a patch for cpoptions.
+" See the discussion at http://thread.gmane.org/gmane.editors.vim.devel/32151
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save=&cpo
+set cpo&vim
+
+" Lout is case sensitive
+syn case match
+
+" Synchronization, I know it is a huge number, but normal texts can be
+" _very_ long ;-)
+syn sync lines=1000
+
+" Characters allowed in keywords
+" I don't know if 128-255 are allowed in ANS-FORHT
+setlocal iskeyword=@,48-57,.,@-@,_,192-255
+
+" Some special keywords
+syn keyword loutTodo contained TODO lout Lout LOUT
+syn keyword loutDefine def macro
+
+" Some big structures
+syn keyword loutKeyword @Begin @End @Figure @Tab
+syn keyword loutKeyword @Book @Doc @Document @Report
+syn keyword loutKeyword @Introduction @Abstract @Appendix
+syn keyword loutKeyword @Chapter @Section @BeginSections @EndSections
+
+" All kind of Lout keywords
+syn match loutFunction '\<@[^ \t{}]\+\>'
+
+" Braces -- Don`t edit these lines!
+syn match loutMBraces '[{}]'
+syn match loutIBraces '[{}]'
+syn match loutBBrace '[{}]'
+syn match loutBIBraces '[{}]'
+syn match loutHeads '[{}]'
+
+" Unmatched braces.
+syn match loutBraceError '}'
+
+" End of multi-line definitions, like @Document, @Report and @Book.
+syn match loutEOmlDef '^//$'
+
+" Grouping of parameters and objects.
+syn region loutObject transparent matchgroup=Delimiter start='{' matchgroup=Delimiter end='}' contains=ALLBUT,loutBraceError
+
+" The NULL object has a special meaning
+syn keyword loutNULL {}
+
+" Comments
+syn region loutComment start='\#' end='$' contains=loutTodo
+
+" Double quotes
+syn region loutSpecial start=+"+ skip=+\\\\\|\\"+ end=+"+
+
+" ISO-LATIN-1 characters created with @Char, or Adobe symbols
+" created with @Sym
+syn match loutSymbols '@\(\(Char\)\|\(Sym\)\)\s\+[A-Za-z]\+'
+
+" Include files
+syn match loutInclude '@IncludeGraphic\s\+\k\+'
+syn region loutInclude start='@\(\(SysInclude\)\|\(IncludeGraphic\)\|\(Include\)\)\s*{' end='}'
+
+" Tags
+syn match loutTag '@\(\(Tag\)\|\(PageMark\)\|\(PageOf\)\|\(NumberOf\)\)\s\+\k\+'
+syn region loutTag start='@Tag\s*{' end='}'
+
+" Equations
+syn match loutMath '@Eq\s\+\k\+'
+syn region loutMath matchgroup=loutMBraces start='@Eq\s*{' matchgroup=loutMBraces end='}' contains=ALLBUT,loutBraceError
+"
+" Fonts
+syn match loutItalic '@I\s\+\k\+'
+syn region loutItalic matchgroup=loutIBraces start='@I\s*{' matchgroup=loutIBraces end='}' contains=ALLBUT,loutBraceError
+syn match loutBold '@B\s\+\k\+'
+syn region loutBold matchgroup=loutBBraces start='@B\s*{' matchgroup=loutBBraces end='}' contains=ALLBUT,loutBraceError
+syn match loutBoldItalic '@BI\s\+\k\+'
+syn region loutBoldItalic matchgroup=loutBIBraces start='@BI\s*{' matchgroup=loutBIBraces end='}' contains=ALLBUT,loutBraceError
+syn region loutHeadings matchgroup=loutHeads start='@\(\(Title\)\|\(Caption\)\)\s*{' matchgroup=loutHeads end='}' contains=ALLBUT,loutBraceError
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overrriden later.
+hi def link loutTodo Todo
+hi def link loutDefine Define
+hi def link loutEOmlDef Define
+hi def link loutFunction Function
+hi def link loutBraceError Error
+hi def link loutNULL Special
+hi def link loutComment Comment
+hi def link loutSpecial Special
+hi def link loutSymbols Character
+hi def link loutInclude Include
+hi def link loutKeyword Keyword
+hi def link loutTag Tag
+hi def link loutMath Number
+
+hi def link loutMBraces loutMath
+hi loutItalic term=italic cterm=italic gui=italic
+hi def link loutIBraces loutItalic
+hi loutBold term=bold cterm=bold gui=bold
+hi def link loutBBraces loutBold
+hi loutBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic
+hi def link loutBIBraces loutBoldItalic
+hi loutHeadings term=bold cterm=bold guifg=indianred
+hi def link loutHeads loutHeadings
+
+
+let b:current_syntax = "lout"
+
+let &cpo=s:cpo_save
+unlet s:cpo_save
+
+" vim:ts=8:sw=4:nocindent:smartindent:
diff --git a/runtime/syntax/lpc.vim b/runtime/syntax/lpc.vim
new file mode 100644
index 0000000..7d85fce
--- /dev/null
+++ b/runtime/syntax/lpc.vim
@@ -0,0 +1,447 @@
+" Vim syntax file
+" Language: LPC
+" Maintainer: Shizhu Pan <poet@mudbuilder.net>
+" URL: http://poet.tomud.com/pub/lpc.vim.bz2
+" Last Change: 2016 Aug 31
+" Comments: If you are using Vim 6.2 or later, see :h lpc.vim for
+" file type recognizing, if not, you had to use modeline.
+
+
+" Nodule: This is the start nodule. {{{1
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Nodule: Keywords {{{1
+
+" LPC keywords
+" keywords should always be highlighted so "contained" is not used.
+syn cluster lpcKeywdGrp contains=lpcConditional,lpcLabel,lpcOperator,lpcRepeat,lpcStatement,lpcModifier,lpcReserved
+
+syn keyword lpcConditional if else switch
+syn keyword lpcLabel case default
+syn keyword lpcOperator catch efun in inherit
+syn keyword lpcRepeat do for foreach while
+syn keyword lpcStatement break continue return
+
+syn match lpcEfunError /efun[^:]/ display
+
+" Illegal to use keyword as function
+" It's not working, maybe in the next version.
+syn keyword lpcKeywdError contained if for foreach return switch while
+
+" These are keywords only because they take lvalue or type as parameter,
+" so these keywords should only be used as function but cannot be names of
+" user-defined functions.
+syn keyword lpcKeywdFunc new parse_command sscanf time_expression
+
+" Nodule: Type and modifiers {{{1
+
+" Type names list.
+
+" Special types
+syn keyword lpcType void mixed unknown
+" Scalar/Value types.
+syn keyword lpcType int float string
+" Pointer types.
+syn keyword lpcType array buffer class function mapping object
+" Other types.
+if exists("lpc_compat_32")
+ syn keyword lpcType closure status funcall
+else
+ syn keyword lpcError closure status
+ syn keyword lpcType multiset
+endif
+
+" Type modifier.
+syn keyword lpcModifier nomask private public
+syn keyword lpcModifier varargs virtual
+
+" sensible modifiers
+if exists("lpc_pre_v22")
+ syn keyword lpcReserved nosave protected ref
+ syn keyword lpcModifier static
+else
+ syn keyword lpcError static
+ syn keyword lpcModifier nosave protected ref
+endif
+
+" Nodule: Applies {{{1
+
+" Match a function declaration or function pointer
+syn match lpcApplyDecl excludenl /->\h\w*(/me=e-1 contains=lpcApplies transparent display
+
+" We should note that in func_spec.c the efun definition syntax is so
+" complicated that I use such a long regular expression to describe.
+syn match lpcLongDecl excludenl /\(\s\|\*\)\h\+\s\h\+(/me=e-1 contains=@lpcEfunGroup,lpcType,@lpcKeywdGrp transparent display
+
+" this is form for all functions
+" ->foo() form had been excluded
+syn match lpcFuncDecl excludenl /\h\w*(/me=e-1 contains=lpcApplies,@lpcEfunGroup,lpcKeywdError transparent display
+
+" The (: :) parenthesis or $() forms a function pointer
+syn match lpcFuncName /(:\s*\h\+\s*:)/me=e-1 contains=lpcApplies,@lpcEfunGroup transparent display contained
+syn match lpcFuncName /(:\s*\h\+,/ contains=lpcApplies,@lpcEfunGroup transparent display contained
+syn match lpcFuncName /\$(\h\+)/ contains=lpcApplies,@lpcEfunGroup transparent display contained
+
+" Applies list.
+" system applies
+syn keyword lpcApplies contained __INIT clean_up create destructor heart_beat id init move_or_destruct reset
+" interactive
+syn keyword lpcApplies contained catch_tell logon net_dead process_input receive_message receive_snoop telnet_suboption terminal_type window_size write_prompt
+" master applies
+syn keyword lpcApplies contained author_file compile_object connect crash creator_file domain_file epilog error_handler flag get_bb_uid get_root_uid get_save_file_name log_error make_path_absolute object_name preload privs_file retrieve_ed_setup save_ed_setup slow_shutdown
+syn keyword lpcApplies contained valid_asm valid_bind valid_compile_to_c valid_database valid_hide valid_link valid_object valid_override valid_read valid_save_binary valid_seteuid valid_shadow valid_socket valid_write
+" parsing
+syn keyword lpcApplies contained inventory_accessible inventory_visible is_living parse_command_adjectiv_id_list parse_command_adjective_id_list parse_command_all_word parse_command_id_list parse_command_plural_id_list parse_command_prepos_list parse_command_users parse_get_environment parse_get_first_inventory parse_get_next_inventory parser_error_message
+
+
+" Nodule: Efuns {{{1
+
+syn cluster lpcEfunGroup contains=lpc_efuns,lpcOldEfuns,lpcNewEfuns,lpcKeywdFunc
+
+" Compat32 efuns
+if exists("lpc_compat_32")
+ syn keyword lpc_efuns contained closurep heart_beat_info m_delete m_values m_indices query_once_interactive strstr
+else
+ syn match lpcErrFunc /#`\h\w*/
+ " Shell compatible first line comment.
+ syn region lpcCommentFunc start=/^#!/ end=/$/
+endif
+
+" pre-v22 efuns which are removed in newer versions.
+syn keyword lpcOldEfuns contained tail dump_socket_status
+
+" new efuns after v22 should be added here!
+syn keyword lpcNewEfuns contained socket_status
+
+" LPC efuns list.
+" DEBUG efuns Not included.
+" New efuns should NOT be added to this list, see v22 efuns above.
+" Efuns list {{{2
+syn keyword lpc_efuns contained acos add_action all_inventory all_previous_objects allocate allocate_buffer allocate_mapping apply arrayp asin atan author_stats
+syn keyword lpc_efuns contained bind break_string bufferp
+syn keyword lpc_efuns contained cache_stats call_other call_out call_out_info call_stack capitalize catch ceil check_memory children classp clear_bit clone_object clonep command commands copy cos cp crc32 crypt ctime
+syn keyword lpc_efuns contained db_close db_commit db_connect db_exec db_fetch db_rollback db_status debug_info debugmalloc debug_message deep_inherit_list deep_inventory destruct disable_commands disable_wizard domain_stats dumpallobj dump_file_descriptors dump_prog
+syn keyword lpc_efuns contained each ed ed_cmd ed_start enable_commands enable_wizard environment error errorp eval_cost evaluate exec exp explode export_uid external_start
+syn keyword lpc_efuns contained fetch_variable file_length file_name file_size filter filter_array filter_mapping find_call_out find_living find_object find_player first_inventory floatp floor flush_messages function_exists function_owner function_profile functionp functions
+syn keyword lpc_efuns contained generate_source get_char get_config get_dir geteuid getuid
+syn keyword lpc_efuns contained heart_beats
+syn keyword lpc_efuns contained id_matrix implode in_edit in_input inherit_list inherits input_to interactive intp
+syn keyword lpc_efuns contained keys
+syn keyword lpc_efuns contained link living livings load_object localtime log log10 lookat_rotate lower_case lpc_info
+syn keyword lpc_efuns contained malloc_check malloc_debug malloc_status map map_array map_delete map_mapping mapp master match_path max_eval_cost member_array memory_info memory_summary message mkdir moncontrol move_object mud_status
+syn keyword lpc_efuns contained named_livings network_stats next_bit next_inventory notify_fail nullp
+syn keyword lpc_efuns contained objectp objects oldcrypt opcprof origin
+syn keyword lpc_efuns contained parse_add_rule parse_add_synonym parse_command parse_dump parse_init parse_my_rules parse_refresh parse_remove parse_sentence pluralize pointerp pow present previous_object printf process_string process_value program_info
+syn keyword lpc_efuns contained query_ed_mode query_heart_beat query_host_name query_idle query_ip_name query_ip_number query_ip_port query_load_average query_notify_fail query_privs query_replaced_program query_shadowing query_snoop query_snooping query_verb
+syn keyword lpc_efuns contained random read_buffer read_bytes read_file receive reclaim_objects refs regexp reg_assoc reload_object remove_action remove_call_out remove_interactive remove_shadow rename repeat_string replace_program replace_string replaceable reset_eval_cost resolve restore_object restore_variable rm rmdir rotate_x rotate_y rotate_z rusage
+syn keyword lpc_efuns contained save_object save_variable say scale set_author set_bit set_eval_limit set_heart_beat set_hide set_light set_living_name set_malloc_mask set_privs set_reset set_this_player set_this_user seteuid shadow shallow_inherit_list shout shutdown sin sizeof snoop socket_accept socket_acquire socket_address socket_bind socket_close socket_connect socket_create socket_error socket_listen socket_release socket_write sort_array sprintf sqrt stat store_variable strcmp stringp strlen strsrch
+syn keyword lpc_efuns contained tan tell_object tell_room terminal_colour test_bit this_interactive this_object this_player this_user throw time to_float to_int trace traceprefix translate typeof
+syn keyword lpc_efuns contained undefinedp unique_array unique_mapping upper_case uptime userp users
+syn keyword lpc_efuns contained values variables virtualp
+syn keyword lpc_efuns contained wizardp write write_buffer write_bytes write_file
+
+" Nodule: Constants {{{1
+
+" LPC Constants.
+" like keywords, constants are always highlighted, be careful to choose only
+" the constants we used to add to this list.
+syn keyword lpcConstant __ARCH__ __COMPILER__ __DIR__ __FILE__ __OPTIMIZATION__ __PORT__ __VERSION__
+" Defines in options.h are all predefined in LPC sources surrounding by
+" two underscores. Do we need to include all of that?
+syn keyword lpcConstant __SAVE_EXTENSION__ __HEARTBEAT_INTERVAL__
+" from the documentation we know that these constants remains only for
+" backward compatibility and should not be used any more.
+syn keyword lpcConstant HAS_ED HAS_PRINTF HAS_RUSAGE HAS_DEBUG_LEVEL
+syn keyword lpcConstant MUD_NAME F__THIS_OBJECT
+
+" Nodule: Todo for this file. {{{1
+
+" TODO : need to check for LPC4 syntax and other series of LPC besides
+" v22, b21 and l32, if you had a good idea, contact me at poet@mudbuilder.net
+" and I will be appreciated about that.
+
+" Notes about some FAQ:
+"
+" About variables : We adopts the same behavior for C because almost all the
+" LPC programmers are also C programmers, so we don't need separate settings
+" for C and LPC. That is the reason why I don't change variables like
+" "c_no_utf"s to "lpc_no_utf"s.
+"
+" Copy : Some of the following seems to be copied from c.vim but not quite
+" the same in details because the syntax for C and LPC is different.
+"
+" Color scheme : this syntax file had been thouroughly tested to work well
+" for all of the dark-backgrounded color schemes Vim has provided officially,
+" and it should be quite Ok for all of the bright-backgrounded color schemes,
+" of course it works best for the color scheme that I am using, download it
+" from http://poet.tomud.com/pub/ps_color.vim.bz2 if you want to try it.
+"
+
+" Nodule: String and Character {{{1
+
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match lpcSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
+if !exists("c_no_utf")
+ syn match lpcSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)"
+endif
+
+" LPC version of sprintf() format,
+syn match lpcFormat display "%\(\d\+\)\=[-+ |=#@:.]*\(\d\+\)\=\('\I\+'\|'\I*\\'\I*'\)\=[OsdicoxXf]" contained
+syn match lpcFormat display "%%" contained
+syn region lpcString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=lpcSpecial,lpcFormat
+" lpcCppString: same as lpcString, but ends at end of line
+syn region lpcCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=lpcSpecial,lpcFormat
+
+" LPC preprocessor for the text formatting short cuts
+" Thanks to Dr. Charles E. Campbell <cec@gryphon.gsfc.nasa.gov>
+" he suggests the best way to do this.
+syn region lpcTextString start=/@\z(\h\w*\)$/ end=/^\z1/ contains=lpcSpecial
+syn region lpcArrayString start=/@@\z(\h\w*\)$/ end=/^\z1/ contains=lpcSpecial
+
+" Character
+syn match lpcCharacter "L\='[^\\]'"
+syn match lpcCharacter "L'[^']*'" contains=lpcSpecial
+syn match lpcSpecialError "L\='\\[^'\"?\\abefnrtv]'"
+syn match lpcSpecialCharacter "L\='\\['\"?\\abefnrtv]'"
+syn match lpcSpecialCharacter display "L\='\\\o\{1,3}'"
+syn match lpcSpecialCharacter display "'\\x\x\{1,2}'"
+syn match lpcSpecialCharacter display "L'\\x\x\+'"
+
+" Nodule: White space {{{1
+
+" when wanted, highlight trailing white space
+if exists("c_space_errors")
+ if !exists("c_no_trail_space_error")
+ syn match lpcSpaceError display excludenl "\s\+$"
+ endif
+ if !exists("c_no_tab_space_error")
+ syn match lpcSpaceError display " \+\t"me=e-1
+ endif
+endif
+
+" Nodule: Parenthesis and brackets {{{1
+
+" catch errors caused by wrong parenthesis and brackets
+syn cluster lpcParenGroup contains=lpcParenError,lpcIncluded,lpcSpecial,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcUserCont,lpcUserLabel,lpcBitField,lpcCommentSkip,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom
+syn region lpcParen transparent start='(' end=')' contains=ALLBUT,@lpcParenGroup,lpcCppParen,lpcErrInBracket,lpcCppBracket,lpcCppString,@lpcEfunGroup,lpcApplies,lpcKeywdError
+" lpcCppParen: same as lpcParen but ends at end-of-line; used in lpcDefine
+syn region lpcCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@lpcParenGroup,lpcErrInBracket,lpcParen,lpcBracket,lpcString,@lpcEfunGroup,lpcApplies,lpcKeywdError
+syn match lpcParenError display ")"
+syn match lpcParenError display "\]"
+" for LPC:
+" Here we should consider the array ({ }) parenthesis and mapping ([ ])
+" parenthesis and multiset (< >) parenthesis.
+syn match lpcErrInParen display contained "[^^]{"ms=s+1
+syn match lpcErrInParen display contained "\(}\|\]\)[^)]"me=e-1
+syn region lpcBracket transparent start='\[' end=']' contains=ALLBUT,@lpcParenGroup,lpcErrInParen,lpcCppParen,lpcCppBracket,lpcCppString,@lpcEfunGroup,lpcApplies,lpcFuncName,lpcKeywdError
+" lpcCppBracket: same as lpcParen but ends at end-of-line; used in lpcDefine
+syn region lpcCppBracket transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@lpcParenGroup,lpcErrInParen,lpcParen,lpcBracket,lpcString,@lpcEfunGroup,lpcApplies,lpcFuncName,lpcKeywdError
+syn match lpcErrInBracket display contained "[);{}]"
+
+" Nodule: Numbers {{{1
+
+" integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match lpcNumbers display transparent "\<\d\|\.\d" contains=lpcNumber,lpcFloat,lpcOctalError,lpcOctal
+" Same, but without octal error (for comments)
+syn match lpcNumbersCom display contained transparent "\<\d\|\.\d" contains=lpcNumber,lpcFloat,lpcOctal
+syn match lpcNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
+" hex number
+syn match lpcNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+" Flag the first zero of an octal number as something special
+syn match lpcOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=lpcOctalZero
+syn match lpcOctalZero display contained "\<0"
+syn match lpcFloat display contained "\d\+f"
+" floating point number, with dot, optional exponent
+syn match lpcFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+" floating point number, starting with a dot, optional exponent
+syn match lpcFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+" floating point number, without dot, with exponent
+syn match lpcFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>"
+" flag an octal number with wrong digits
+syn match lpcOctalError display contained "0\o*[89]\d*"
+syn case match
+
+" Nodule: Comment string {{{1
+
+" lpcCommentGroup allows adding matches for special things in comments
+syn keyword lpcTodo contained TODO FIXME XXX
+syn cluster lpcCommentGroup contains=lpcTodo
+
+if exists("c_comment_strings")
+ " A comment can contain lpcString, lpcCharacter and lpcNumber.
+ syntax match lpcCommentSkip contained "^\s*\*\($\|\s\+\)"
+ syntax region lpcCommentString contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=lpcSpecial,lpcCommentSkip
+ syntax region lpcComment2String contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=lpcSpecial
+ syntax region lpcCommentL start="//" skip="\\$" end="$" keepend contains=@lpcCommentGroup,lpcComment2String,lpcCharacter,lpcNumbersCom,lpcSpaceError
+ syntax region lpcComment matchgroup=lpcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@lpcCommentGroup,lpcCommentStartError,lpcCommentString,lpcCharacter,lpcNumbersCom,lpcSpaceError
+else
+ syn region lpcCommentL start="//" skip="\\$" end="$" keepend contains=@lpcCommentGroup,lpcSpaceError
+ syn region lpcComment matchgroup=lpcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@lpcCommentGroup,lpcCommentStartError,lpcSpaceError
+endif
+" keep a // comment separately, it terminates a preproc. conditional
+syntax match lpcCommentError display "\*/"
+syntax match lpcCommentStartError display "/\*"me=e-1 contained
+
+" Nodule: Pre-processor {{{1
+
+syn region lpcPreCondit start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=lpcComment,lpcCppString,lpcCharacter,lpcCppParen,lpcParenError,lpcNumbers,lpcCommentError,lpcSpaceError
+syn match lpcPreCondit display "^\s*#\s*\(else\|endif\)\>"
+if !exists("c_no_if0")
+ syn region lpcCppOut start="^\s*#\s*if\s\+0\+\>" end=".\|$" contains=lpcCppOut2
+ syn region lpcCppOut2 contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=lpcSpaceError,lpcCppSkip
+ syn region lpcCppSkip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=lpcSpaceError,lpcCppSkip
+endif
+syn region lpcIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match lpcIncluded display contained "<[^>]*>"
+syn match lpcInclude display "^\s*#\s*include\>\s*["<]" contains=lpcIncluded
+syn match lpcLineSkip "\\$"
+syn cluster lpcPreProcGroup contains=lpcPreCondit,lpcIncluded,lpcInclude,lpcDefine,lpcErrInParen,lpcErrInBracket,lpcUserLabel,lpcSpecial,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom,lpcString,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcParen,lpcBracket,lpcMulti,lpcKeywdError
+syn region lpcDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@lpcPreProcGroup
+
+if exists("lpc_pre_v22")
+ syn region lpcPreProc start="^\s*#\s*\(pragma\>\|echo\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@lpcPreProcGroup
+else
+ syn region lpcPreProc start="^\s*#\s*\(pragma\>\|echo\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@lpcPreProcGroup
+endif
+
+" Nodule: User labels {{{1
+
+" Highlight Labels
+" User labels in LPC is not allowed, only "case x" and "default" is supported
+syn cluster lpcMultiGroup contains=lpcIncluded,lpcSpecial,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcUserCont,lpcUserLabel,lpcBitField,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom,lpcCppParen,lpcCppBracket,lpcCppString,lpcKeywdError
+syn region lpcMulti transparent start='\(case\|default\|public\|protected\|private\)' skip='::' end=':' contains=ALLBUT,@lpcMultiGroup
+
+syn cluster lpcLabelGroup contains=lpcUserLabel
+syn match lpcUserCont display "^\s*lpc:$" contains=@lpcLabelGroup
+
+" Don't want to match anything
+syn match lpcUserLabel display "lpc" contained
+
+" Nodule: Initializations {{{1
+
+if exists("c_minlines")
+ let b:c_minlines = c_minlines
+else
+ if !exists("c_no_if0")
+ let b:c_minlines = 50 " #if 0 constructs can be long
+ else
+ let b:c_minlines = 15 " mostly for () constructs
+ endif
+endif
+exec "syn sync ccomment lpcComment minlines=" . b:c_minlines
+
+" Make sure these options take place since we no longer depend on file type
+" plugin for C
+setlocal cindent
+setlocal fo-=t fo+=croql
+setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
+
+" Win32 can filter files in the browse dialog
+if has("gui_win32") && !exists("b:browsefilter")
+ let b:browsefilter = "LPC Source Files (*.c *.d *.h)\t*.c;*.d;*.h\n" .
+ \ "LPC Data Files (*.scr *.o *.dat)\t*.scr;*.o;*.dat\n" .
+ \ "Text Documentation (*.txt)\t*.txt\n" .
+ \ "All Files (*.*)\t*.*\n"
+endif
+
+" Nodule: Highlight links {{{1
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link lpcModifier lpcStorageClass
+
+hi def link lpcQuotedFmt lpcFormat
+hi def link lpcFormat lpcSpecial
+hi def link lpcCppString lpcString " Cpp means
+ " C Pre-Processor
+hi def link lpcCommentL lpcComment
+hi def link lpcCommentStart lpcComment
+hi def link lpcUserLabel lpcLabel
+hi def link lpcSpecialCharacter lpcSpecial
+hi def link lpcOctal lpcPreProc
+hi def link lpcOctalZero lpcSpecial " LPC will treat octal numbers
+ " as decimals, programmers should
+ " be aware of that.
+hi def link lpcEfunError lpcError
+hi def link lpcKeywdError lpcError
+hi def link lpcOctalError lpcError
+hi def link lpcParenError lpcError
+hi def link lpcErrInParen lpcError
+hi def link lpcErrInBracket lpcError
+hi def link lpcCommentError lpcError
+hi def link lpcCommentStartError lpcError
+hi def link lpcSpaceError lpcError
+hi def link lpcSpecialError lpcError
+hi def link lpcErrFunc lpcError
+
+if exists("lpc_pre_v22")
+ hi def link lpcOldEfuns lpc_efuns
+ hi def link lpcNewEfuns lpcError
+else
+ hi def link lpcOldEfuns lpcReserved
+ hi def link lpcNewEfuns lpc_efuns
+endif
+hi def link lpc_efuns lpcFunction
+
+hi def link lpcReserved lpcPreProc
+hi def link lpcTextString lpcString " This should be preprocessors, but
+hi def link lpcArrayString lpcPreProc " let's make some difference
+ " between text and array
+
+hi def link lpcIncluded lpcString
+hi def link lpcCommentString lpcString
+hi def link lpcComment2String lpcString
+hi def link lpcCommentSkip lpcComment
+hi def link lpcCommentFunc lpcComment
+
+hi def link lpcCppSkip lpcCppOut
+hi def link lpcCppOut2 lpcCppOut
+hi def link lpcCppOut lpcComment
+
+" Standard type below
+hi def link lpcApplies Special
+hi def link lpcCharacter Character
+hi def link lpcComment Comment
+hi def link lpcConditional Conditional
+hi def link lpcConstant Constant
+hi def link lpcDefine Macro
+hi def link lpcError Error
+hi def link lpcFloat Float
+hi def link lpcFunction Function
+hi def link lpcIdentifier Identifier
+hi def link lpcInclude Include
+hi def link lpcLabel Label
+hi def link lpcNumber Number
+hi def link lpcOperator Operator
+hi def link lpcPreCondit PreCondit
+hi def link lpcPreProc PreProc
+hi def link lpcRepeat Repeat
+hi def link lpcStatement Statement
+hi def link lpcStorageClass StorageClass
+hi def link lpcString String
+hi def link lpcStructure Structure
+hi def link lpcSpecial LineNr
+hi def link lpcTodo Todo
+hi def link lpcType Type
+
+
+" Nodule: This is the end nodule. {{{1
+
+let b:current_syntax = "lpc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim:ts=8:nosta:sw=2:ai:si:
+" vim600:set fdm=marker: }}}1
diff --git a/runtime/syntax/lprolog.vim b/runtime/syntax/lprolog.vim
new file mode 100644
index 0000000..85c3537
--- /dev/null
+++ b/runtime/syntax/lprolog.vim
@@ -0,0 +1,124 @@
+" Vim syntax file
+" Language: LambdaProlog (Teyjus)
+" Filenames: *.mod *.sig
+" Maintainer: Markus Mottl <markus.mottl@gmail.com>
+" URL: http://www.ocaml.info/vim/syntax/lprolog.vim
+" Last Change: 2006 Feb 05
+" 2001 Apr 26 - Upgraded for new Vim version
+" 2000 Jun 5 - Initial release
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Lambda Prolog is case sensitive.
+syn case match
+
+syn match lprologBrackErr "\]"
+syn match lprologParenErr ")"
+
+syn cluster lprologContained contains=lprologTodo,lprologModuleName,lprologTypeNames,lprologTypeName
+
+" Enclosing delimiters
+syn region lprologEncl transparent matchgroup=lprologKeyword start="(" matchgroup=lprologKeyword end=")" contains=ALLBUT,@lprologContained,lprologParenErr
+syn region lprologEncl transparent matchgroup=lprologKeyword start="\[" matchgroup=lprologKeyword end="\]" contains=ALLBUT,@lprologContained,lprologBrackErr
+
+" General identifiers
+syn match lprologIdentifier "\<\(\w\|[-+*/\\^<>=`'~?@#$&!_]\)*\>"
+syn match lprologVariable "\<\(\u\|_\)\(\w\|[-+*/\\^<>=`'~?@#$&!]\)*\>"
+
+syn match lprologOperator "/"
+
+" Comments
+syn region lprologComment start="/\*" end="\*/" contains=lprologComment,lprologTodo
+syn region lprologComment start="%" end="$" contains=lprologTodo
+syn keyword lprologTodo contained TODO FIXME XXX
+
+syn match lprologInteger "\<\d\+\>"
+syn match lprologReal "\<\(\d\+\)\=\.\d+\>"
+syn region lprologString start=+"+ skip=+\\\\\|\\"+ end=+"+
+
+" Clause definitions
+syn region lprologClause start="^\w\+" end=":-\|\."
+
+" Modules
+syn region lprologModule matchgroup=lprologKeyword start="^\<module\>" matchgroup=lprologKeyword end="\."
+
+" Types
+syn match lprologKeyword "^\<type\>" skipwhite nextgroup=lprologTypeNames
+syn region lprologTypeNames matchgroup=lprologBraceErr start="\<\w\+\>" matchgroup=lprologKeyword end="\." contained contains=lprologTypeName,lprologOperator
+syn match lprologTypeName "\<\w\+\>" contained
+
+" Keywords
+syn keyword lprologKeyword end import accumulate accum_sig
+syn keyword lprologKeyword local localkind closed sig
+syn keyword lprologKeyword kind exportdef useonly
+syn keyword lprologKeyword infixl infixr infix prefix
+syn keyword lprologKeyword prefixr postfix postfixl
+
+syn keyword lprologSpecial pi sigma is true fail halt stop not
+
+" Operators
+syn match lprologSpecial ":-"
+syn match lprologSpecial "->"
+syn match lprologSpecial "=>"
+syn match lprologSpecial "\\"
+syn match lprologSpecial "!"
+
+syn match lprologSpecial ","
+syn match lprologSpecial ";"
+syn match lprologSpecial "&"
+
+syn match lprologOperator "+"
+syn match lprologOperator "-"
+syn match lprologOperator "*"
+syn match lprologOperator "\~"
+syn match lprologOperator "\^"
+syn match lprologOperator "<"
+syn match lprologOperator ">"
+syn match lprologOperator "=<"
+syn match lprologOperator ">="
+syn match lprologOperator "::"
+syn match lprologOperator "="
+
+syn match lprologOperator "\."
+syn match lprologOperator ":"
+syn match lprologOperator "|"
+
+syn match lprologCommentErr "\*/"
+
+syn sync minlines=50
+syn sync maxlines=500
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link lprologComment Comment
+hi def link lprologTodo Todo
+
+hi def link lprologKeyword Keyword
+hi def link lprologSpecial Special
+hi def link lprologOperator Operator
+hi def link lprologIdentifier Normal
+
+hi def link lprologInteger Number
+hi def link lprologReal Number
+hi def link lprologString String
+
+hi def link lprologCommentErr Error
+hi def link lprologBrackErr Error
+hi def link lprologParenErr Error
+
+hi def link lprologModuleName Special
+hi def link lprologTypeName Identifier
+
+hi def link lprologVariable Keyword
+hi def link lprologAtom Normal
+hi def link lprologClause Type
+
+
+let b:current_syntax = "lprolog"
+
+" vim: ts=8
diff --git a/runtime/syntax/lscript.vim b/runtime/syntax/lscript.vim
new file mode 100644
index 0000000..3c4a0ff
--- /dev/null
+++ b/runtime/syntax/lscript.vim
@@ -0,0 +1,200 @@
+" Vim syntax file
+" Language: LotusScript
+" Maintainer: Taryn East (taryneast@hotmail.com)
+" Last Change: 2003 May 11
+
+" This is a rough amalgamation of the visual basic syntax file, and the UltraEdit
+" and Textpad syntax highlighters.
+" It's not too brilliant given that a) I've never written a syntax.vim file before
+" and b) I'm not so crash hot at LotusScript either. If you see any problems
+" feel free to email me with them.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" LotusScript is case insensitive
+syn case ignore
+
+" These are Notes thingies that had an equivalent in the vb highlighter
+" or I was already familiar with them
+syn keyword lscriptStatement ActivateApp As And Base Beep Call Case ChDir ChDrive Class
+syn keyword lscriptStatement Const Dim Declare DefCur DefDbl DefInt DefLng DefSng DefStr
+syn keyword lscriptStatement DefVar Do Else %Else ElseIf %ElseIf End %End Erase Event Exit
+syn keyword lscriptStatement Explicit FileCopy FALSE For ForAll Function Get GoTo GoSub
+syn keyword lscriptStatement If %If In Is Kill Let List Lock Loop MkDir
+syn keyword lscriptStatement Name Next New NoCase NoPitch Not Nothing NULL
+syn keyword lscriptStatement On Option Or PI Pitch Preserve Private Public
+syn keyword lscriptStatement Property Public Put
+syn keyword lscriptStatement Randomize ReDim Reset Resume Return RmDir
+syn keyword lscriptStatement Select SendKeys SetFileAttr Set Static Sub Then To TRUE
+syn keyword lscriptStatement Type Unlock Until While WEnd With Write XOr
+
+syn keyword lscriptDatatype Array Currency Double Integer Long Single String String$ Variant
+
+syn keyword lscriptNotesType Field Button Navigator
+syn keyword lscriptNotesType NotesACL NotesACLEntry NotesAgent NotesDatabase NotesDateRange
+syn keyword lscriptNotesType NotesDateTime NotesDbDirectory NotesDocument
+syn keyword lscriptNotesType NotesDocumentCollection NotesEmbeddedObject NotesForm
+syn keyword lscriptNotesType NotesInternational NotesItem NotesLog NotesName NotesNewsLetter
+syn keyword lscriptNotesType NotesMIMEEntry NotesOutline NotesOutlineEntry NotesRegistration
+syn keyword lscriptNotesType NotesReplication NotesRichTextItem NotesRichTextParagraphStyle
+syn keyword lscriptNotesType NotesRichTextStyle NotesRichTextTab
+syn keyword lscriptNotesType NotesSession NotesTimer NotesView NotesViewColumn NotesViewEntry
+syn keyword lscriptNotesType NotesViewEntryCollection NotesViewNavigator NotesUIDatabase
+syn keyword lscriptNotesType NotesUIDocument NotesUIView NotesUIWorkspace
+
+syn keyword lscriptNotesConst ACLLEVEL_AUTHOR ACLLEVEL_DEPOSITOR ACLLEVEL_DESIGNER
+syn keyword lscriptNotesConst ACLLEVEL_EDITOR ACLLEVEL_MANAGER ACLLEVEL_NOACCESS
+syn keyword lscriptNotesConst ACLLEVEL_READER ACLTYPE_MIXED_GROUP ACLTYPE_PERSON
+syn keyword lscriptNotesConst ACLTYPE_PERSON_GROUP ACLTYPE_SERVER ACLTYPE_SERVER_GROUP
+syn keyword lscriptNotesConst ACLTYPE_UNSPECIFIED ACTIONCD ALIGN_CENTER
+syn keyword lscriptNotesConst ALIGN_FULL ALIGN_LEFT ALIGN_NOWRAP ALIGN_RIGHT
+syn keyword lscriptNotesConst ASSISTANTINFO ATTACHMENT AUTHORS COLOR_BLACK
+syn keyword lscriptNotesConst COLOR_BLUE COLOR_CYAN COLOR_DARK_BLUE COLOR_DARK_CYAN
+syn keyword lscriptNotesConst COLOR_DARK_GREEN COLOR_DARK_MAGENTA COLOR_DARK_RED
+syn keyword lscriptNotesConst COLOR_DARK_YELLOW COLOR_GRAY COLOR_GREEN COLOR_LIGHT_GRAY
+syn keyword lscriptNotesConst COLOR_MAGENTA COLOR_RED COLOR_WHITE COLOR_YELLOW
+syn keyword lscriptNotesConst DATABASE DATETIMES DB_REPLICATION_PRIORITY_HIGH
+syn keyword lscriptNotesConst DB_REPLICATION_PRIORITY_LOW DB_REPLICATION_PRIORITY_MED
+syn keyword lscriptNotesConst DB_REPLICATION_PRIORITY_NOTSET EFFECTS_EMBOSS
+syn keyword lscriptNotesConst EFFECTS_EXTRUDE EFFECTS_NONE EFFECTS_SHADOW
+syn keyword lscriptNotesConst EFFECTS_SUBSCRIPT EFFECTS_SUPERSCRIPT EMBED_ATTACHMENT
+syn keyword lscriptNotesConst EMBED_OBJECT EMBED_OBJECTLINK EMBEDDEDOBJECT ERRORITEM
+syn keyword lscriptNotesConst EV_ALARM EV_COMM EV_MAIL EV_MISC EV_REPLICA EV_RESOURCE
+syn keyword lscriptNotesConst EV_SECURITY EV_SERVER EV_UNKNOWN EV_UPDATE FONT_COURIER
+syn keyword lscriptNotesConst FONT_HELV FONT_ROMAN FORMULA FT_DATABASE FT_DATE_ASC
+syn keyword lscriptNotesConst FT_DATE_DES FT_FILESYSTEM FT_FUZZY FT_SCORES FT_STEMS
+syn keyword lscriptNotesConst FT_THESAURUS HTML ICON ID_CERTIFIER ID_FLAT
+syn keyword lscriptNotesConst ID_HIERARCHICAL LSOBJECT MIME_PART NAMES NOTESLINKS
+syn keyword lscriptNotesConst NOTEREFS NOTES_DESKTOP_CLIENT NOTES_FULL_CLIENT
+syn keyword lscriptNotesConst NOTES_LIMITED_CLIENT NUMBERS OTHEROBJECT
+syn keyword lscriptNotesConst OUTLINE_CLASS_DATABASE OUTLINE_CLASS_DOCUMENT
+syn keyword lscriptNotesConst OUTLINE_CLASS_FOLDER OUTLINE_CLASS_FORM
+syn keyword lscriptNotesConst OUTLINE_CLASS_FRAMESET OUTLINE_CLASS_NAVIGATOR
+syn keyword lscriptNotesConst OUTLINE_CLASS_PAGE OUTLINE_CLASS_UNKNOWN
+syn keyword lscriptNotesConst OUTLINE_CLASS_VIEW OUTLINE_OTHER_FOLDERS_TYPE
+syn keyword lscriptNotesConst OUTLINE_OTHER_UNKNOWN_TYPE OUTLINE_OTHER_VIEWS_TYPE
+syn keyword lscriptNotesConst OUTLINE_TYPE_ACTION OUTLINE_TYPE_NAMEDELEMENT
+syn keyword lscriptNotesConst OUTLINE_TYPE_NOTELINK OUTLINE_TYPE_URL PAGINATE_BEFORE
+syn keyword lscriptNotesConst PAGINATE_DEFAULT PAGINATE_KEEP_TOGETHER
+syn keyword lscriptNotesConst PAGINATE_KEEP_WITH_NEXT PICKLIST_CUSTOM PICKLIST_NAMES
+syn keyword lscriptNotesConst PICKLIST_RESOURCES PICKLIST_ROOMS PROMPT_OK PROMPT_OKCANCELCOMBO
+syn keyword lscriptNotesConst PROMPT_OKCANCELEDIT PROMPT_OKCANCELEDITCOMBO PROMPT_OKCANCELLIST
+syn keyword lscriptNotesConst PROMPT_OKCANCELLISTMULT PROMPT_PASSWORD PROMPT_YESNO
+syn keyword lscriptNotesConst PROMPT_YESNOCANCEL QUERYCD READERS REPLICA_CANDIDATE
+syn keyword lscriptNotesConst RICHTEXT RULER_ONE_CENTIMETER RULER_ONE_INCH SEV_FAILURE
+syn keyword lscriptNotesConst SEV_FATAL SEV_NORMAL SEV_WARNING1 SEV_WARNING2
+syn keyword lscriptNotesConst SIGNATURE SPACING_DOUBLE SPACING_ONE_POINT_50
+syn keyword lscriptNotesConst SPACING_SINGLE STYLE_NO_CHANGE TAB_CENTER TAB_DECIMAL
+syn keyword lscriptNotesConst TAB_LEFT TAB_RIGHT TARGET_ALL_DOCS TARGET_ALL_DOCS_IN_VIEW
+syn keyword lscriptNotesConst TARGET_NEW_DOCS TARGET_NEW_OR_MODIFIED_DOCS TARGET_NONE
+syn keyword lscriptNotesConst TARGET_RUN_ONCE TARGET_SELECTED_DOCS TARGET_UNREAD_DOCS_IN_VIEW
+syn keyword lscriptNotesConst TEMPLATE TEMPLATE_CANDIDATE TEXT TRIGGER_AFTER_MAIL_DELIVERY
+syn keyword lscriptNotesConst TRIGGER_BEFORE_MAIL_DELIVERY TRIGGER_DOC_PASTED
+syn keyword lscriptNotesConst TRIGGER_DOC_UPDATE TRIGGER_MANUAL TRIGGER_NONE
+syn keyword lscriptNotesConst TRIGGER_SCHEDULED UNAVAILABLE UNKNOWN USERDATA
+syn keyword lscriptNotesConst USERID VC_ALIGN_CENTER VC_ALIGN_LEFT VC_ALIGN_RIGHT
+syn keyword lscriptNotesConst VC_ATTR_PARENS VC_ATTR_PUNCTUATED VC_ATTR_PERCENT
+syn keyword lscriptNotesConst VC_FMT_ALWAYS VC_FMT_CURRENCY VC_FMT_DATE VC_FMT_DATETIME
+syn keyword lscriptNotesConst VC_FMT_FIXED VC_FMT_GENERAL VC_FMT_HM VC_FMT_HMS
+syn keyword lscriptNotesConst VC_FMT_MD VC_FMT_NEVER VC_FMT_SCIENTIFIC
+syn keyword lscriptNotesConst VC_FMT_SOMETIMES VC_FMT_TIME VC_FMT_TODAYTIME VC_FMT_YM
+syn keyword lscriptNotesConst VC_FMT_YMD VC_FMT_Y4M VC_FONT_BOLD VC_FONT_ITALIC
+syn keyword lscriptNotesConst VC_FONT_STRIKEOUT VC_FONT_UNDERLINE VC_SEP_COMMA
+syn keyword lscriptNotesConst VC_SEP_NEWLINE VC_SEP_SEMICOLON VC_SEP_SPACE
+syn keyword lscriptNotesConst VIEWMAPDATA VIEWMAPLAYOUT VW_SPACING_DOUBLE
+syn keyword lscriptNotesConst VW_SPACING_ONE_POINT_25 VW_SPACING_ONE_POINT_50
+syn keyword lscriptNotesConst VW_SPACING_ONE_POINT_75 VW_SPACING_SINGLE
+
+syn keyword lscriptFunction Abs Asc Atn Atn2 ACos ASin
+syn keyword lscriptFunction CCur CDat CDbl Chr Chr$ CInt CLng Command Command$
+syn keyword lscriptFunction Cos CSng CStr
+syn keyword lscriptFunction CurDir CurDir$ CVar Date Date$ DateNumber DateSerial DateValue
+syn keyword lscriptFunction Day Dir Dir$ Environ$ Environ EOF Error Error$ Evaluate Exp
+syn keyword lscriptFunction FileAttr FileDateTime FileLen Fix Format Format$ FreeFile
+syn keyword lscriptFunction GetFileAttr GetThreadInfo Hex Hex$ Hour
+syn keyword lscriptFunction IMESetMode IMEStatus Input Input$ InputB InputB$
+syn keyword lscriptFunction InputBP InputBP$ InputBox InputBox$ InStr InStrB InStrBP InstrC
+syn keyword lscriptFunction IsA IsArray IsDate IsElement IsList IsNumeric
+syn keyword lscriptFunction IsObject IsResponse IsScalar IsUnknown LCase LCase$
+syn keyword lscriptFunction Left Left$ LeftB LeftB$ LeftC
+syn keyword lscriptFunction LeftBP LeftBP$ Len LenB LenBP LenC Loc LOF Log
+syn keyword lscriptFunction LSet LTrim LTrim$ MessageBox Mid Mid$ MidB MidB$ MidC
+syn keyword lscriptFunction Minute Month Now Oct Oct$ Responses Right Right$
+syn keyword lscriptFunction RightB RightB$ RightBP RightBP$ RightC Round Rnd RSet RTrim RTrim$
+syn keyword lscriptFunction Second Seek Sgn Shell Sin Sleep Space Space$ Spc Sqr Str Str$
+syn keyword lscriptFunction StrConv StrLeft StrleftBack StrRight StrRightBack
+syn keyword lscriptFunction StrCompare Tab Tan Time Time$ TimeNumber Timer
+syn keyword lscriptFunction TimeValue Trim Trim$ Today TypeName UCase UCase$
+syn keyword lscriptFunction UniversalID Val Weekday Year
+
+syn keyword lscriptMethods AppendToTextList ArrayAppend ArrayReplace ArrayGetIndex
+syn keyword lscriptMethods Append Bind Close
+"syn keyword lscriptMethods Contains
+syn keyword lscriptMethods CopyToDatabase CopyAllItems Count CurrentDatabase Delete Execute
+syn keyword lscriptMethods GetAllDocumentsByKey GetDatabase GetDocumentByKey
+syn keyword lscriptMethods GetDocumentByUNID GetFirstDocument GetFirstItem
+syn keyword lscriptMethods GetItems GetItemValue GetNthDocument GetView
+syn keyword lscriptMethods IsEmpty IsNull %Include Items
+syn keyword lscriptMethods Line LBound LoadMsgText Open Print
+syn keyword lscriptMethods RaiseEvent ReplaceItemValue Remove RemoveItem Responses
+syn keyword lscriptMethods Save Stop UBound UnprocessedDocuments Write
+
+syn keyword lscriptEvents Compare OnError
+
+"*************************************************************************************
+"These are Notes thingies that I'm not sure how to classify as they had no vb equivalent
+" At a wild guess I'd put them as Functions...
+" if anyone sees something really out of place... tell me!
+
+syn keyword lscriptFunction Access Alias Any Bin Bin$ Binary ByVal
+syn keyword lscriptFunction CodeLock CodeLockCheck CodeUnlock CreateLock
+syn keyword lscriptFunction CurDrive CurDrive$ DataType DestroyLock Eqv
+syn keyword lscriptFunction Erl Err Fraction From FromFunction FullTrim
+syn keyword lscriptFunction Imp Int Lib Like ListTag LMBCS LSServer Me
+syn keyword lscriptFunction Mod MsgDescription MsgText Output Published
+syn keyword lscriptFunction Random Read Shared Step UChr UChr$ Uni Unicode
+syn keyword lscriptFunction Until Use UseLSX UString UString$ Width Yield
+
+
+syn keyword lscriptTodo contained TODO
+
+"integer number, or floating point number without a dot.
+syn match lscriptNumber "\<\d\+\>"
+"floating point number, with dot
+syn match lscriptNumber "\<\d\+\.\d*\>"
+"floating point number, starting with a dot
+syn match lscriptNumber "\.\d\+\>"
+
+" String and Character constants
+syn region lscriptString start=+"+ end=+"+
+syn region lscriptComment start="REM" end="$" contains=lscriptTodo
+syn region lscriptComment start="'" end="$" contains=lscriptTodo
+syn region lscriptLineNumber start="^\d" end="\s"
+syn match lscriptTypeSpecifier "[a-zA-Z0-9][\$%&!#]"ms=s+1
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi lscriptNotesType term=underline ctermfg=DarkGreen guifg=SeaGreen gui=bold
+
+hi def link lscriptNotesConst lscriptNotesType
+hi def link lscriptLineNumber Comment
+hi def link lscriptDatatype Type
+hi def link lscriptNumber Number
+hi def link lscriptError Error
+hi def link lscriptStatement Statement
+hi def link lscriptString String
+hi def link lscriptComment Comment
+hi def link lscriptTodo Todo
+hi def link lscriptFunction Identifier
+hi def link lscriptMethods PreProc
+hi def link lscriptEvents Special
+hi def link lscriptTypeSpecifier Type
+
+
+let b:current_syntax = "lscript"
+
+" vim: ts=8
diff --git a/runtime/syntax/lsl.vim b/runtime/syntax/lsl.vim
new file mode 100644
index 0000000..3b2baa0
--- /dev/null
+++ b/runtime/syntax/lsl.vim
@@ -0,0 +1,277 @@
+" Vim syntax file
+" Language: Linden Scripting Language
+" Maintainer: Timo Frenay <timo@frenay.net>
+" Last Change: 2012 Apr 30
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+" Initializations
+syn case match
+
+" Keywords
+syn keyword lslKeyword default do else for if jump return state while
+
+" Types
+syn keyword lslType float integer key list quaternion rotation string vector
+
+" Labels
+syn match lslLabel +@\h\w*+ display
+
+" Constants
+syn keyword lslConstant
+\ ACTIVE AGENT AGENT_ALWAYS_RUN AGENT_ATTACHMENTS AGENT_AWAY AGENT_BUSY
+\ AGENT_CROUCHING AGENT_FLYING AGENT_IN_AIR AGENT_MOUSELOOK AGENT_ON_OBJECT
+\ AGENT_SCRIPTED AGENT_SITTING AGENT_TYPING AGENT_WALKING ALL_SIDES ANIM_ON
+\ ATTACH_BACK ATTACH_BELLY ATTACH_CHEST ATTACH_CHIN ATTACH_HEAD
+\ ATTACH_HUD_BOTTOM ATTACH_HUD_BOTTOM_LEFT ATTACH_HUD_BOTTOM_RIGHT
+\ ATTACH_HUD_CENTER_1 ATTACH_HUD_CENTER_2 ATTACH_HUD_TOP_CENTER
+\ ATTACH_HUD_TOP_LEFT ATTACH_HUD_TOP_RIGHT ATTACH_LEAR ATTACH_LEYE ATTACH_LFOOT
+\ ATTACH_LHAND ATTACH_LHIP ATTACH_LLARM ATTACH_LLLEG ATTACH_LPEC
+\ ATTACH_LSHOULDER ATTACH_LUARM ATTACH_LULEG ATTACH_MOUTH ATTACH_NOSE
+\ ATTACH_PELVIS ATTACH_REAR ATTACH_REYE ATTACH_RFOOT ATTACH_RHAND ATTACH_RHIP
+\ ATTACH_RLARM ATTACH_RLLEG ATTACH_RPEC ATTACH_RSHOULDER ATTACH_RUARM
+\ ATTACH_RULEG CAMERA_ACTIVE CAMERA_BEHINDNESS_ANGLE CAMERA_BEHINDNESS_LAG
+\ CAMERA_DISTANCE CAMERA_FOCUS CAMERA_FOCUS_LAG CAMERA_FOCUS_LOCKED
+\ CAMERA_FOCUS_OFFSET CAMERA_FOCUS_THRESHOLD CAMERA_PITCH CAMERA_POSITION
+\ CAMERA_POSITION_LAG CAMERA_POSITION_LOCKED CAMERA_POSITION_THRESHOLD
+\ CHANGED_ALLOWED_DROP CHANGED_COLOR CHANGED_INVENTORY CHANGED_LINK
+\ CHANGED_OWNER CHANGED_REGION CHANGED_SCALE CHANGED_SHAPE CHANGED_TELEPORT
+\ CHANGED_TEXTURE CLICK_ACTION_BUY CLICK_ACTION_NONE CLICK_ACTION_OPEN
+\ CLICK_ACTION_OPEN_MEDIA CLICK_ACTION_PAY CLICK_ACTION_PLAY CLICK_ACTION_SIT
+\ CLICK_ACTION_TOUCH CONTROL_BACK CONTROL_DOWN CONTROL_FWD CONTROL_LBUTTON
+\ CONTROL_LEFT CONTROL_ML_LBUTTON CONTROL_RIGHT CONTROL_ROT_LEFT
+\ CONTROL_ROT_RIGHT CONTROL_UP DATA_BORN DATA_NAME DATA_ONLINE DATA_PAYINFO
+\ DATA_RATING DATA_SIM_POS DATA_SIM_RATING DATA_SIM_STATUS DEBUG_CHANNEL
+\ DEG_TO_RAD EOF FALSE HTTP_BODY_MAXLENGTH HTTP_BODY_TRUNCATED HTTP_METHOD
+\ HTTP_MIMETYPE HTTP_VERIFY_CERT INVENTORY_ALL INVENTORY_ANIMATION
+\ INVENTORY_BODYPART INVENTORY_CLOTHING INVENTORY_GESTURE INVENTORY_LANDMARK
+\ INVENTORY_NONE INVENTORY_NOTECARD INVENTORY_OBJECT INVENTORY_SCRIPT
+\ INVENTORY_SOUND INVENTORY_TEXTURE LAND_LARGE_BRUSH LAND_LEVEL LAND_LOWER
+\ LAND_MEDIUM_BRUSH LAND_NOISE LAND_RAISE LAND_REVERT LAND_SMALL_BRUSH
+\ LAND_SMOOTH LINK_ALL_CHILDREN LINK_ALL_OTHERS LINK_ROOT LINK_SET LINK_THIS
+\ LIST_STAT_GEOMETRIC_MEAN LIST_STAT_MAX LIST_STAT_MEAN LIST_STAT_MEDIAN
+\ LIST_STAT_MIN LIST_STAT_NUM_COUNT LIST_STAT_RANGE LIST_STAT_STD_DEV
+\ LIST_STAT_SUM LIST_STAT_SUM_SQUARES LOOP MASK_BASE MASK_EVERYONE MASK_GROUP
+\ MASK_NEXT MASK_OWNER NULL_KEY OBJECT_CREATOR OBJECT_DESC OBJECT_GROUP
+\ OBJECT_NAME OBJECT_OWNER OBJECT_POS OBJECT_ROT OBJECT_UNKNOWN_DETAIL
+\ OBJECT_VELOCITY PARCEL_COUNT_GROUP PARCEL_COUNT_OTHER PARCEL_COUNT_OWNER
+\ PARCEL_COUNT_SELECTED PARCEL_COUNT_TEMP PARCEL_COUNT_TOTAL PARCEL_DETAILS_AREA
+\ PARCEL_DETAILS_DESC PARCEL_DETAILS_GROUP PARCEL_DETAILS_NAME
+\ PARCEL_DETAILS_OWNER PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY
+\ PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS PARCEL_FLAG_ALLOW_CREATE_OBJECTS
+\ PARCEL_FLAG_ALLOW_DAMAGE PARCEL_FLAG_ALLOW_FLY
+\ PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY PARCEL_FLAG_ALLOW_GROUP_SCRIPTS
+\ PARCEL_FLAG_ALLOW_LANDMARK PARCEL_FLAG_ALLOW_SCRIPTS
+\ PARCEL_FLAG_ALLOW_TERRAFORM PARCEL_FLAG_LOCAL_SOUND_ONLY
+\ PARCEL_FLAG_RESTRICT_PUSHOBJECT PARCEL_FLAG_USE_ACCESS_GROUP
+\ PARCEL_FLAG_USE_ACCESS_LIST PARCEL_FLAG_USE_BAN_LIST
+\ PARCEL_FLAG_USE_LAND_PASS_LIST PARCEL_MEDIA_COMMAND_AGENT
+\ PARCEL_MEDIA_COMMAND_AUTO_ALIGN PARCEL_MEDIA_COMMAND_DESC
+\ PARCEL_MEDIA_COMMAND_LOOP PARCEL_MEDIA_COMMAND_LOOP_SET
+\ PARCEL_MEDIA_COMMAND_PAUSE PARCEL_MEDIA_COMMAND_PLAY PARCEL_MEDIA_COMMAND_SIZE
+\ PARCEL_MEDIA_COMMAND_STOP PARCEL_MEDIA_COMMAND_TEXTURE
+\ PARCEL_MEDIA_COMMAND_TIME PARCEL_MEDIA_COMMAND_TYPE
+\ PARCEL_MEDIA_COMMAND_UNLOAD PARCEL_MEDIA_COMMAND_URL PASSIVE
+\ PAYMENT_INFO_ON_FILE PAYMENT_INFO_USED PAY_DEFAULT PAY_HIDE PERM_ALL PERM_COPY
+\ PERM_MODIFY PERM_MOVE PERM_TRANSFER PERMISSION_ATTACH PERMISSION_CHANGE_LINKS
+\ PERMISSION_CONTROL_CAMERA PERMISSION_DEBIT PERMISSION_TAKE_CONTROLS
+\ PERMISSION_TRACK_CAMERA PERMISSION_TRIGGER_ANIMATION PI PI_BY_TWO PING_PONG
+\ PRIM_BUMP_BARK PRIM_BUMP_BLOBS PRIM_BUMP_BRICKS PRIM_BUMP_BRIGHT
+\ PRIM_BUMP_CHECKER PRIM_BUMP_CONCRETE PRIM_BUMP_DARK PRIM_BUMP_DISKS
+\ PRIM_BUMP_GRAVEL PRIM_BUMP_LARGETILE PRIM_BUMP_NONE PRIM_BUMP_SHINY
+\ PRIM_BUMP_SIDING PRIM_BUMP_STONE PRIM_BUMP_STUCCO PRIM_BUMP_SUCTION
+\ PRIM_BUMP_TILE PRIM_BUMP_WEAVE PRIM_BUMP_WOOD PRIM_CAST_SHADOWS PRIM_COLOR
+\ PRIM_FLEXIBLE PRIM_FULLBRIGHT PRIM_HOLE_CIRCLE PRIM_HOLE_DEFAULT
+\ PRIM_HOLE_SQUARE PRIM_HOLE_TRIANGLE PRIM_MATERIAL PRIM_MATERIAL_FLESH
+\ PRIM_MATERIAL_GLASS PRIM_MATERIAL_LIGHT PRIM_MATERIAL_METAL
+\ PRIM_MATERIAL_PLASTIC PRIM_MATERIAL_RUBBER PRIM_MATERIAL_STONE
+\ PRIM_MATERIAL_WOOD PRIM_PHANTOM PRIM_PHYSICS PRIM_POINT_LIGHT PRIM_POSITION
+\ PRIM_ROTATION PRIM_SCULPT_TYPE_CYLINDER PRIM_SCULPT_TYPE_PLANE
+\ PRIM_SCULPT_TYPE_SPHERE PRIM_SCULPT_TYPE_TORUS PRIM_SHINY_HIGH PRIM_SHINY_LOW
+\ PRIM_SHINY_MEDIUM PRIM_SHINY_NONE PRIM_SIZE PRIM_TEMP_ON_REZ PRIM_TEXGEN
+\ PRIM_TEXGEN_DEFAULT PRIM_TEXGEN_PLANAR PRIM_TEXTURE PRIM_TYPE PRIM_TYPE_BOX
+\ PRIM_TYPE_BOX PRIM_TYPE_CYLINDER PRIM_TYPE_CYLINDER PRIM_TYPE_LEGACY
+\ PRIM_TYPE_PRISM PRIM_TYPE_PRISM PRIM_TYPE_RING PRIM_TYPE_SCULPT
+\ PRIM_TYPE_SPHERE PRIM_TYPE_SPHERE PRIM_TYPE_TORUS PRIM_TYPE_TORUS
+\ PRIM_TYPE_TUBE PRIM_TYPE_TUBE PSYS_PART_BEAM_MASK PSYS_PART_BOUNCE_MASK
+\ PSYS_PART_DEAD_MASK PSYS_PART_EMISSIVE_MASK PSYS_PART_END_ALPHA
+\ PSYS_PART_END_COLOR PSYS_PART_END_SCALE PSYS_PART_FLAGS
+\ PSYS_PART_FOLLOW_SRC_MASK PSYS_PART_FOLLOW_VELOCITY_MASK
+\ PSYS_PART_INTERP_COLOR_MASK PSYS_PART_INTERP_SCALE_MASK PSYS_PART_MAX_AGE
+\ PSYS_PART_RANDOM_ACCEL_MASK PSYS_PART_RANDOM_VEL_MASK PSYS_PART_START_ALPHA
+\ PSYS_PART_START_COLOR PSYS_PART_START_SCALE PSYS_PART_TARGET_LINEAR_MASK
+\ PSYS_PART_TARGET_POS_MASK PSYS_PART_TRAIL_MASK PSYS_PART_WIND_MASK
+\ PSYS_SRC_ACCEL PSYS_SRC_ANGLE_BEGIN PSYS_SRC_ANGLE_END
+\ PSYS_SRC_BURST_PART_COUNT PSYS_SRC_BURST_RADIUS PSYS_SRC_BURST_RATE
+\ PSYS_SRC_BURST_SPEED_MAX PSYS_SRC_BURST_SPEED_MIN PSYS_SRC_INNERANGLE
+\ PSYS_SRC_MAX_AGE PSYS_SRC_OMEGA PSYS_SRC_OUTERANGLE PSYS_SRC_PATTERN
+\ PSYS_SRC_PATTERN_ANGLE PSYS_SRC_PATTERN_ANGLE_CONE
+\ PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY PSYS_SRC_PATTERN_DROP
+\ PSYS_SRC_PATTERN_EXPLODE PSYS_SRC_TARGET_KEY PSYS_SRC_TEXTURE PUBLIC_CHANNEL
+\ RAD_TO_DEG REGION_FLAG_ALLOW_DAMAGE REGION_FLAG_ALLOW_DIRECT_TELEPORT
+\ REGION_FLAG_BLOCK_FLY REGION_FLAG_BLOCK_TERRAFORM
+\ REGION_FLAG_DISABLE_COLLISIONS REGION_FLAG_DISABLE_PHYSICS
+\ REGION_FLAG_FIXED_SUN REGION_FLAG_RESTRICT_PUSHOBJECT REGION_FLAG_SANDBOX
+\ REMOTE_DATA_CHANNEL REMOTE_DATA_REPLY REMOTE_DATA_REQUEST REVERSE ROTATE SCALE
+\ SCRIPTED SMOOTH SQRT2 STATUS_BLOCK_GRAB STATUS_CAST_SHADOWS STATUS_DIE_AT_EDGE
+\ STATUS_PHANTOM STATUS_PHYSICS STATUS_RETURN_AT_EDGE STATUS_ROTATE_X
+\ STATUS_ROTATE_Y STATUS_ROTATE_Z STATUS_SANDBOX STRING_TRIM STRING_TRIM_HEAD
+\ STRING_TRIM_TAIL TRUE TWO_PI TYPE_FLOAT TYPE_INTEGER TYPE_INVALID TYPE_KEY
+\ TYPE_ROTATION TYPE_STRING TYPE_VECTOR VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY
+\ VEHICLE_ANGULAR_DEFLECTION_TIMESCALE VEHICLE_ANGULAR_FRICTION_TIMESCALE
+\ VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE VEHICLE_ANGULAR_MOTOR_DIRECTION
+\ VEHICLE_ANGULAR_MOTOR_TIMESCALE VEHICLE_BANKING_EFFICIENCY VEHICLE_BANKING_MIX
+\ VEHICLE_BANKING_TIMESCALE VEHICLE_BUOYANCY VEHICLE_FLAG_CAMERA_DECOUPLED
+\ VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT VEHICLE_FLAG_HOVER_TERRAIN_ONLY
+\ VEHICLE_FLAG_HOVER_UP_ONLY VEHICLE_FLAG_HOVER_WATER_ONLY
+\ VEHICLE_FLAG_LIMIT_MOTOR_UP VEHICLE_FLAG_LIMIT_ROLL_ONLY
+\ VEHICLE_FLAG_MOUSELOOK_BANK VEHICLE_FLAG_MOUSELOOK_STEER
+\ VEHICLE_FLAG_NO_DEFLECTION_UP VEHICLE_HOVER_EFFICIENCY VEHICLE_HOVER_HEIGHT
+\ VEHICLE_HOVER_TIMESCALE VEHICLE_LINEAR_DEFLECTION_EFFICIENCY
+\ VEHICLE_LINEAR_DEFLECTION_TIMESCALE VEHICLE_LINEAR_FRICTION_TIMESCALE
+\ VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE VEHICLE_LINEAR_MOTOR_TIMESCALE
+\ VEHICLE_LINEAR_MOTOR_DIRECTION VEHICLE_LINEAR_MOTOR_OFFSET
+\ VEHICLE_REFERENCE_FRAME VEHICLE_TYPE_AIRPLANE VEHICLE_TYPE_BALLOON
+\ VEHICLE_TYPE_BOAT VEHICLE_TYPE_CAR VEHICLE_TYPE_NONE VEHICLE_TYPE_SLED
+\ VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY VEHICLE_VERTICAL_ATTRACTION_TIMESCALE
+\ ZERO_ROTATION ZERO_VECTOR
+
+" Events
+syn keyword lslEvent
+\ attach at_rot_target at_target changed collision collision_end collision_start
+\ control dataserver email http_response land_collision land_collision_end
+\ land_collision_start link_message listen money moving_end moving_start
+\ not_at_rot_target no_sensor object_rez on_rez remote_data run_time_permissions
+\ sensor state_entry state_exit timer touch touch_end touch_start not_at_target
+
+" Functions
+syn keyword lslFunction
+\ llAbs llAcos llAddToLandBanList llAddToLandPassList llAdjustSoundVolume
+\ llAllowInventoryDrop llAngleBetween llApplyImpulse llApplyRotationalImpulse
+\ llAsin llAtan2 llAttachToAvatar llAvatarOnSitTarget llAxes2Rot llAxisAngle2Rot
+\ llBase64ToInteger llBase64ToString llBreakAllLinks llBreakLink llCSV2List
+\ llCeil llClearCameraParams llCloseRemoteDataChannel llCloud llCollisionFilter
+\ llCollisionSound llCollisionSprite llCos llCreateLink llDeleteSubList
+\ llDeleteSubString llDetachFromAvatar llDetectedGrab llDetectedGroup
+\ llDetectedKey llDetectedLinkNumber llDetectedName llDetectedOwner
+\ llDetectedPos llDetectedRot llDetectedType llDetectedVel llDialog llDie
+\ llDumpList2String llEdgeOfWorld llEjectFromLand llEmail llEscapeURL
+\ llEuler2Rot llFabs llFloor llForceMouselook llFrand llGetAccel llGetAgentInfo
+\ llGetAgentSize llGetAlpha llGetAndResetTime llGetAnimation llGetAnimationList
+\ llGetAttached llGetBoundingBox llGetCameraPos llGetCameraRot llGetCenterOfMass
+\ llGetColor llGetCreator llGetDate llGetEnergy llGetForce llGetFreeMemory
+\ llGetGMTclock llGetGeometricCenter llGetInventoryCreator llGetInventoryKey
+\ llGetInventoryName llGetInventoryNumber llGetInventoryPermMask
+\ llGetInventoryType llGetKey llGetLandOwnerAt llGetLinkKey llGetLinkName
+\ llGetLinkNumber llGetListEntryType llGetListLength llGetLocalPos llGetLocalRot
+\ llGetMass llGetNextEmail llGetNotecardLine llGetNumberOfNotecardLines
+\ llGetNumberOfPrims llGetNumberOfSides llGetObjectDesc llGetObjectDetails
+\ llGetObjectMass llGetObjectName llGetObjectPermMask llGetObjectPrimCount
+\ llGetOmega llGetOwner llGetOwnerKey llGetParcelDetails llGetParcelFlags
+\ llGetParcelMaxPrims llGetParcelPrimCount llGetParcelPrimOwners
+\ llGetPermissions llGetPermissionsKey llGetPos llGetPrimitiveParams
+\ llGetRegionCorner llGetRegionFPS llGetRegionFlags llGetRegionName
+\ llGetRegionTimeDilation llGetRootPosition llGetRootRotation llGetRot
+\ llGetScale llGetScriptName llGetScriptState llGetSimulatorHostname
+\ llGetStartParameter llGetStatus llGetSubString llGetSunDirection llGetTexture
+\ llGetTextureOffset llGetTextureRot llGetTextureScale llGetTime llGetTimeOfDay
+\ llGetTimestamp llGetTorque llGetUnixTime llGetVel llGetWallclock
+\ llGiveInventory llGiveInventoryList llGiveMoney llGodLikeRezObject llGround
+\ llGroundContour llGroundNormal llGroundRepel llGroundSlope llHTTPRequest
+\ llInsertString llInstantMessage llIntegerToBase64 llKey2Name llList2CSV
+\ llList2Float llList2Integer llList2Key llList2List llList2ListStrided
+\ llList2Rot llList2String llList2Vector llListFindList llListInsertList
+\ llListRandomize llListReplaceList llListSort llListStatistics llListen
+\ llListenControl llListenRemove llLoadURL llLog llLog10 llLookAt llLoopSound
+\ llLoopSoundMaster llLoopSoundSlave llMD5String llMakeExplosion llMakeFire
+\ llMakeFountain llMakeSmoke llMapDestination llMessageLinked llMinEventDelay
+\ llModPow llModifyLand llMoveToTarget llOffsetTexture llOpenRemoteDataChannel
+\ llOverMyLand llOwnerSay llParcelMediaCommandList llParcelMediaQuery
+\ llParseString2List llParseStringKeepNulls llParticleSystem llPassCollisions
+\ llPassTouches llPlaySound llPlaySoundSlave llPointAt llPow llPreloadSound
+\ llPushObject llRefreshPrimURL llRegionSay llReleaseCamera llReleaseControls
+\ llRemoteDataReply llRemoteDataSetRegion llRemoteLoadScript
+\ llRemoteLoadScriptPin llRemoveFromLandBanList llRemoveFromLandPassList
+\ llRemoveInventory llRemoveVehicleFlags llRequestAgentData
+\ llRequestInventoryData llRequestPermissions llRequestSimulatorData
+\ llResetLandBanList llResetLandPassList llResetOtherScript llResetScript
+\ llResetTime llRezAtRoot llRezObject llRot2Angle llRot2Axis llRot2Euler
+\ llRot2Fwd llRot2Left llRot2Up llRotBetween llRotLookAt llRotTarget
+\ llRotTargetRemove llRotateTexture llRound llSameGroup llSay llScaleTexture
+\ llScriptDanger llSendRemoteData llSensor llSensorRemove llSensorRepeat
+\ llSetAlpha llSetBuoyancy llSetCameraAtOffset llSetCameraEyeOffset
+\ llSetCameraParams llSetClickAction llSetColor llSetDamage llSetForce
+\ llSetForceAndTorque llSetHoverHeight llSetInventoryPermMask llSetLinkAlpha
+\ llSetLinkColor llSetLinkPrimitiveParams llSetLinkTexture llSetLocalRot
+\ llSetObjectDesc llSetObjectName llSetObjectPermMask llSetParcelMusicURL
+\ llSetPayPrice llSetPos llSetPrimURL llSetPrimitiveParams
+\ llSetRemoteScriptAccessPin llSetRot llSetScale llSetScriptState llSetSitText
+\ llSetSoundQueueing llSetSoundRadius llSetStatus llSetText llSetTexture
+\ llSetTextureAnim llSetTimerEvent llSetTorque llSetTouchText llSetVehicleFlags
+\ llSetVehicleFloatParam llSetVehicleRotationParam llSetVehicleType
+\ llSetVehicleVectorParam llShout llSin llSitTarget llSleep llSound
+\ llSoundPreload llSqrt llStartAnimation llStopAnimation llStopHover
+\ llStopLookAt llStopMoveToTarget llStopPointAt llStopSound llStringLength
+\ llStringToBase64 llStringTrim llSubStringIndex llTakeCamera llTakeControls
+\ llTan llTarget llTargetOmega llTargetRemove llTeleportAgentHome llToLower
+\ llToUpper llTriggerSound llTriggerSoundLimited llUnSit llUnescapeURL llVecDist
+\ llVecMag llVecNorm llVolumeDetect llWater llWhisper llWind llXorBase64Strings
+\ llXorBase64StringsCorrect
+
+" Operators
+syn match lslOperator +[-!%&*+/<=>^|~]+ display
+
+" Numbers
+syn match lslNumber +-\=\%(\<\d\+\|\%(\<\d\+\)\=\.\d\+\)\%([Ee][-+]\=\d\+\)\=\>\|\<0x\x\+\>+ display
+
+" Vectors and rotations
+syn match lslVectorRot +<[-\t +.0-9A-Za-z_]\+\%(,[-\t +.0-9A-Za-z_]\+\)\{2,3}>+ contains=lslNumber display
+
+" Vector and rotation properties
+syn match lslProperty +\.\@<=[sxyz]\>+ display
+
+" Strings
+syn region lslString start=+"+ skip=+\\.+ end=+"+ contains=lslSpecialChar,@Spell
+syn match lslSpecialChar +\\.+ contained display
+
+" Keys
+syn match lslKey +"\x\{8}-\x\{4}-\x\{4}-\x\{4}-\x\{12}"+ display
+
+" Parentheses, braces and brackets
+syn match lslBlock +[][(){}]+ display
+
+" Typecast operators
+syn match lslTypecast +(\%(float\|integer\|key\|list\|quaternion\|rotation\|string\|vector\))+ contains=lslType display
+
+" Comments
+syn match lslComment +//.*+ contains=@Spell
+
+" Define the default highlighting.
+hi def link lslKeyword Keyword
+hi def link lslType Type
+hi def link lslLabel Label
+hi def link lslConstant Constant
+hi def link lslEvent PreProc
+hi def link lslFunction Function
+hi def link lslOperator Operator
+hi def link lslNumber Number
+hi def link lslVectorRot Special
+hi def link lslProperty Identifier
+hi def link lslString String
+hi def link lslSpecialChar SpecialChar
+hi def link lslKey Special
+hi def link lslBlock Special
+hi def link lslTypecast Operator
+hi def link lslComment Comment
+
+let b:current_syntax = "lsl"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim: ts=8
diff --git a/runtime/syntax/lss.vim b/runtime/syntax/lss.vim
new file mode 100644
index 0000000..6ee717b
--- /dev/null
+++ b/runtime/syntax/lss.vim
@@ -0,0 +1,123 @@
+" Vim syntax file
+" Language: Lynx 2.7.1 style file
+" Maintainer: Scott Bigham <dsb@killerbunnies.org>
+" Last Change: 2004 Oct 06
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" This setup is probably atypical for a syntax highlighting file, because
+" most of it is not really intended to be overrideable. Instead, the
+" highlighting is supposed to correspond to the highlighting specified by
+" the .lss file entries themselves; ie. the "bold" keyword should be bold,
+" the "red" keyword should be red, and so forth. The exceptions to this
+" are comments, of course, and the initial keyword identifying the affected
+" element, which will inherit the usual Identifier highlighting.
+
+syn match lssElement "^[^:]\+" nextgroup=lssMono
+
+syn match lssMono ":[^:]\+" contained nextgroup=lssFgColor contains=lssReverse,lssUnderline,lssBold,lssStandout
+
+syn keyword lssBold bold contained
+syn keyword lssReverse reverse contained
+syn keyword lssUnderline underline contained
+syn keyword lssStandout standout contained
+
+syn match lssFgColor ":[^:]\+" contained nextgroup=lssBgColor contains=lssRedFg,lssBlueFg,lssGreenFg,lssBrownFg,lssMagentaFg,lssCyanFg,lssLightgrayFg,lssGrayFg,lssBrightredFg,lssBrightgreenFg,lssYellowFg,lssBrightblueFg,lssBrightmagentaFg,lssBrightcyanFg
+
+syn case ignore
+syn keyword lssRedFg red contained
+syn keyword lssBlueFg blue contained
+syn keyword lssGreenFg green contained
+syn keyword lssBrownFg brown contained
+syn keyword lssMagentaFg magenta contained
+syn keyword lssCyanFg cyan contained
+syn keyword lssLightgrayFg lightgray contained
+syn keyword lssGrayFg gray contained
+syn keyword lssBrightredFg brightred contained
+syn keyword lssBrightgreenFg brightgreen contained
+syn keyword lssYellowFg yellow contained
+syn keyword lssBrightblueFg brightblue contained
+syn keyword lssBrightmagentaFg brightmagenta contained
+syn keyword lssBrightcyanFg brightcyan contained
+syn case match
+
+syn match lssBgColor ":[^:]\+" contained contains=lssRedBg,lssBlueBg,lssGreenBg,lssBrownBg,lssMagentaBg,lssCyanBg,lssLightgrayBg,lssGrayBg,lssBrightredBg,lssBrightgreenBg,lssYellowBg,lssBrightblueBg,lssBrightmagentaBg,lssBrightcyanBg,lssWhiteBg
+
+syn case ignore
+syn keyword lssRedBg red contained
+syn keyword lssBlueBg blue contained
+syn keyword lssGreenBg green contained
+syn keyword lssBrownBg brown contained
+syn keyword lssMagentaBg magenta contained
+syn keyword lssCyanBg cyan contained
+syn keyword lssLightgrayBg lightgray contained
+syn keyword lssGrayBg gray contained
+syn keyword lssBrightredBg brightred contained
+syn keyword lssBrightgreenBg brightgreen contained
+syn keyword lssYellowBg yellow contained
+syn keyword lssBrightblueBg brightblue contained
+syn keyword lssBrightmagentaBg brightmagenta contained
+syn keyword lssBrightcyanBg brightcyan contained
+syn keyword lssWhiteBg white contained
+syn case match
+
+syn match lssComment "#.*$"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link lssComment Comment
+hi def link lssElement Identifier
+
+hi def lssBold term=bold cterm=bold
+hi def lssReverse term=reverse cterm=reverse
+hi def lssUnderline term=underline cterm=underline
+hi def lssStandout term=standout cterm=standout
+
+hi def lssRedFg ctermfg=red
+hi def lssBlueFg ctermfg=blue
+hi def lssGreenFg ctermfg=green
+hi def lssBrownFg ctermfg=brown
+hi def lssMagentaFg ctermfg=magenta
+hi def lssCyanFg ctermfg=cyan
+hi def lssGrayFg ctermfg=gray
+if $COLORTERM == "rxvt"
+ " On rxvt's, bright colors are activated by setting the bold attribute.
+ hi def lssLightgrayFg ctermfg=gray cterm=bold
+ hi def lssBrightredFg ctermfg=red cterm=bold
+ hi def lssBrightgreenFg ctermfg=green cterm=bold
+ hi def lssYellowFg ctermfg=yellow cterm=bold
+ hi def lssBrightblueFg ctermfg=blue cterm=bold
+ hi def lssBrightmagentaFg ctermfg=magenta cterm=bold
+ hi def lssBrightcyanFg ctermfg=cyan cterm=bold
+else
+ hi def lssLightgrayFg ctermfg=lightgray
+ hi def lssBrightredFg ctermfg=lightred
+ hi def lssBrightgreenFg ctermfg=lightgreen
+ hi def lssYellowFg ctermfg=yellow
+ hi def lssBrightblueFg ctermfg=lightblue
+ hi def lssBrightmagentaFg ctermfg=lightmagenta
+ hi def lssBrightcyanFg ctermfg=lightcyan
+endif
+
+hi def lssRedBg ctermbg=red
+hi def lssBlueBg ctermbg=blue
+hi def lssGreenBg ctermbg=green
+hi def lssBrownBg ctermbg=brown
+hi def lssMagentaBg ctermbg=magenta
+hi def lssCyanBg ctermbg=cyan
+hi def lssLightgrayBg ctermbg=lightgray
+hi def lssGrayBg ctermbg=gray
+hi def lssBrightredBg ctermbg=lightred
+hi def lssBrightgreenBg ctermbg=lightgreen
+hi def lssYellowBg ctermbg=yellow
+hi def lssBrightblueBg ctermbg=lightblue
+hi def lssBrightmagentaBg ctermbg=lightmagenta
+hi def lssBrightcyanBg ctermbg=lightcyan
+hi def lssWhiteBg ctermbg=white ctermfg=black
+
+let b:current_syntax = "lss"
+
+" vim: ts=8
diff --git a/runtime/syntax/lua.vim b/runtime/syntax/lua.vim
new file mode 100644
index 0000000..9c5a490
--- /dev/null
+++ b/runtime/syntax/lua.vim
@@ -0,0 +1,442 @@
+" Vim syntax file
+" Language: Lua 4.0, Lua 5.0, Lua 5.1, Lua 5.2 and Lua 5.3
+" Maintainer: Marcus Aurelius Farias <masserahguard-lua 'at' yahoo com>
+" First Author: Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>
+" Last Change: 2022 Sep 07
+" Options: lua_version = 4 or 5
+" lua_subversion = 0 (for 4.0 or 5.0)
+" or 1, 2, 3 (for 5.1, 5.2 or 5.3)
+" the default is 5.3
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+if !exists("lua_version")
+ " Default is lua 5.3
+ let lua_version = 5
+ let lua_subversion = 3
+elseif !exists("lua_subversion")
+ " lua_version exists, but lua_subversion doesn't. In this case set it to 0
+ let lua_subversion = 0
+endif
+
+syn case match
+
+" syncing method
+syn sync minlines=1000
+
+if lua_version >= 5
+ syn keyword luaMetaMethod __add __sub __mul __div __pow __unm __concat
+ syn keyword luaMetaMethod __eq __lt __le
+ syn keyword luaMetaMethod __index __newindex __call
+ syn keyword luaMetaMethod __metatable __mode __gc __tostring
+endif
+
+if lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
+ syn keyword luaMetaMethod __mod __len
+endif
+
+if lua_version > 5 || (lua_version == 5 && lua_subversion >= 2)
+ syn keyword luaMetaMethod __pairs
+endif
+
+if lua_version > 5 || (lua_version == 5 && lua_subversion >= 3)
+ syn keyword luaMetaMethod __idiv __name
+ syn keyword luaMetaMethod __band __bor __bxor __bnot __shl __shr
+endif
+
+if lua_version > 5 || (lua_version == 5 && lua_subversion >= 4)
+ syn keyword luaMetaMethod __close
+endif
+
+" catch errors caused by wrong parenthesis and wrong curly brackets or
+" keywords placed outside their respective blocks
+
+syn region luaParen transparent start='(' end=')' contains=TOP,luaParenError
+syn match luaParenError ")"
+syn match luaError "}"
+syn match luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>"
+
+" Function declaration
+syn region luaFunctionBlock transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=TOP
+
+" else
+syn keyword luaCondElse matchgroup=luaCond contained containedin=luaCondEnd else
+
+" then ... end
+syn region luaCondEnd contained transparent matchgroup=luaCond start="\<then\>" end="\<end\>" contains=TOP
+
+" elseif ... then
+syn region luaCondElseif contained containedin=luaCondEnd transparent matchgroup=luaCond start="\<elseif\>" end="\<then\>" contains=TOP
+
+" if ... then
+syn region luaCondStart transparent matchgroup=luaCond start="\<if\>" end="\<then\>"me=e-4 contains=TOP nextgroup=luaCondEnd skipwhite skipempty
+
+" do ... end
+syn region luaBlock transparent matchgroup=luaStatement start="\<do\>" end="\<end\>" contains=TOP
+" repeat ... until
+syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<repeat\>" end="\<until\>" contains=TOP
+
+" while ... do
+syn region luaWhile transparent matchgroup=luaRepeat start="\<while\>" end="\<do\>"me=e-2 contains=TOP nextgroup=luaBlock skipwhite skipempty
+
+" for ... do and for ... in ... do
+syn region luaFor transparent matchgroup=luaRepeat start="\<for\>" end="\<do\>"me=e-2 contains=TOP nextgroup=luaBlock skipwhite skipempty
+
+syn keyword luaFor contained containedin=luaFor in
+
+" other keywords
+syn keyword luaStatement return local break
+if lua_version > 5 || (lua_version == 5 && lua_subversion >= 2)
+ syn keyword luaStatement goto
+ syn match luaLabel "::\I\i*::"
+endif
+
+" operators
+syn keyword luaOperator and or not
+
+if (lua_version == 5 && lua_subversion >= 3) || lua_version > 5
+ syn match luaSymbolOperator "[#<>=~^&|*/%+-]\|\.\{2,3}"
+elseif lua_version == 5 && (lua_subversion == 1 || lua_subversion == 2)
+ syn match luaSymbolOperator "[#<>=~^*/%+-]\|\.\{2,3}"
+else
+ syn match luaSymbolOperator "[<>=~^*/+-]\|\.\{2,3}"
+endif
+
+" comments
+syn keyword luaTodo contained TODO FIXME XXX
+syn match luaComment "--.*$" contains=luaTodo,@Spell
+if lua_version == 5 && lua_subversion == 0
+ syn region luaComment matchgroup=luaCommentDelimiter start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment,@Spell
+ syn region luaInnerComment contained transparent start="\[\[" end="\]\]"
+elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
+ " Comments in Lua 5.1: --[[ ... ]], [=[ ... ]=], [===[ ... ]===], etc.
+ syn region luaComment matchgroup=luaCommentDelimiter start="--\[\z(=*\)\[" end="\]\z1\]" contains=luaTodo,@Spell
+endif
+
+" first line may start with #!
+syn match luaComment "\%^#!.*"
+
+syn keyword luaConstant nil
+if lua_version > 4
+ syn keyword luaConstant true false
+endif
+
+" strings
+syn match luaSpecial contained #\\[\\abfnrtv'"[\]]\|\\[[:digit:]]\{,3}#
+if lua_version == 5
+ if lua_subversion == 0
+ syn region luaString2 matchgroup=luaStringDelimiter start=+\[\[+ end=+\]\]+ contains=luaString2,@Spell
+ else
+ if lua_subversion >= 2
+ syn match luaSpecial contained #\\z\|\\x[[:xdigit:]]\{2}#
+ endif
+ if lua_subversion >= 3
+ syn match luaSpecial contained #\\u{[[:xdigit:]]\+}#
+ endif
+ syn region luaString2 matchgroup=luaStringDelimiter start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell
+ endif
+endif
+syn region luaString matchgroup=luaStringDelimiter start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial,@Spell
+syn region luaString matchgroup=luaStringDelimiter start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial,@Spell
+
+" integer number
+syn match luaNumber "\<\d\+\>"
+" floating point number, with dot, optional exponent
+syn match luaNumber "\<\d\+\.\d*\%([eE][-+]\=\d\+\)\="
+" floating point number, starting with a dot, optional exponent
+syn match luaNumber "\.\d\+\%([eE][-+]\=\d\+\)\=\>"
+" floating point number, without dot, with exponent
+syn match luaNumber "\<\d\+[eE][-+]\=\d\+\>"
+
+" hex numbers
+if lua_version >= 5
+ if lua_subversion == 1
+ syn match luaNumber "\<0[xX]\x\+\>"
+ elseif lua_subversion >= 2
+ syn match luaNumber "\<0[xX][[:xdigit:].]\+\%([pP][-+]\=\d\+\)\=\>"
+ endif
+endif
+
+" tables
+syn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=TOP,luaStatement
+
+" methods
+syntax match luaFunc ":\@<=\k\+"
+
+" built-in functions
+syn keyword luaFunc assert collectgarbage dofile error next
+syn keyword luaFunc print rawget rawset self tonumber tostring type _VERSION
+
+if lua_version == 4
+ syn keyword luaFunc _ALERT _ERRORMESSAGE gcinfo
+ syn keyword luaFunc call copytagmethods dostring
+ syn keyword luaFunc foreach foreachi getglobal getn
+ syn keyword luaFunc gettagmethod globals newtag
+ syn keyword luaFunc setglobal settag settagmethod sort
+ syn keyword luaFunc tag tinsert tremove
+ syn keyword luaFunc _INPUT _OUTPUT _STDIN _STDOUT _STDERR
+ syn keyword luaFunc openfile closefile flush seek
+ syn keyword luaFunc setlocale execute remove rename tmpname
+ syn keyword luaFunc getenv date clock exit
+ syn keyword luaFunc readfrom writeto appendto read write
+ syn keyword luaFunc PI abs sin cos tan asin
+ syn keyword luaFunc acos atan atan2 ceil floor
+ syn keyword luaFunc mod frexp ldexp sqrt min max log
+ syn keyword luaFunc log10 exp deg rad random
+ syn keyword luaFunc randomseed strlen strsub strlower strupper
+ syn keyword luaFunc strchar strrep ascii strbyte
+ syn keyword luaFunc format strfind gsub
+ syn keyword luaFunc getinfo getlocal setlocal setcallhook setlinehook
+elseif lua_version == 5
+ syn keyword luaFunc getmetatable setmetatable
+ syn keyword luaFunc ipairs pairs
+ syn keyword luaFunc pcall xpcall
+ syn keyword luaFunc _G loadfile rawequal require
+ if lua_subversion == 0
+ syn keyword luaFunc getfenv setfenv
+ syn keyword luaFunc loadstring unpack
+ syn keyword luaFunc gcinfo loadlib LUA_PATH _LOADED _REQUIREDNAME
+ else
+ syn keyword luaFunc load select
+ syn match luaFunc /\<package\.cpath\>/
+ syn match luaFunc /\<package\.loaded\>/
+ syn match luaFunc /\<package\.loadlib\>/
+ syn match luaFunc /\<package\.path\>/
+ syn match luaFunc /\<package\.preload\>/
+ if lua_subversion == 1
+ syn keyword luaFunc getfenv setfenv
+ syn keyword luaFunc loadstring module unpack
+ syn match luaFunc /\<package\.loaders\>/
+ syn match luaFunc /\<package\.seeall\>/
+ elseif lua_subversion >= 2
+ syn keyword luaFunc _ENV rawlen
+ syn match luaFunc /\<package\.config\>/
+ syn match luaFunc /\<package\.preload\>/
+ syn match luaFunc /\<package\.searchers\>/
+ syn match luaFunc /\<package\.searchpath\>/
+ endif
+
+ if lua_subversion >= 3
+ syn match luaFunc /\<coroutine\.isyieldable\>/
+ endif
+ if lua_subversion >= 4
+ syn keyword luaFunc warn
+ syn match luaFunc /\<coroutine\.close\>/
+ endif
+ syn match luaFunc /\<coroutine\.running\>/
+ endif
+ syn match luaFunc /\<coroutine\.create\>/
+ syn match luaFunc /\<coroutine\.resume\>/
+ syn match luaFunc /\<coroutine\.status\>/
+ syn match luaFunc /\<coroutine\.wrap\>/
+ syn match luaFunc /\<coroutine\.yield\>/
+
+ syn match luaFunc /\<string\.byte\>/
+ syn match luaFunc /\<string\.char\>/
+ syn match luaFunc /\<string\.dump\>/
+ syn match luaFunc /\<string\.find\>/
+ syn match luaFunc /\<string\.format\>/
+ syn match luaFunc /\<string\.gsub\>/
+ syn match luaFunc /\<string\.len\>/
+ syn match luaFunc /\<string\.lower\>/
+ syn match luaFunc /\<string\.rep\>/
+ syn match luaFunc /\<string\.sub\>/
+ syn match luaFunc /\<string\.upper\>/
+ if lua_subversion == 0
+ syn match luaFunc /\<string\.gfind\>/
+ else
+ syn match luaFunc /\<string\.gmatch\>/
+ syn match luaFunc /\<string\.match\>/
+ syn match luaFunc /\<string\.reverse\>/
+ endif
+ if lua_subversion >= 3
+ syn match luaFunc /\<string\.pack\>/
+ syn match luaFunc /\<string\.packsize\>/
+ syn match luaFunc /\<string\.unpack\>/
+ syn match luaFunc /\<utf8\.char\>/
+ syn match luaFunc /\<utf8\.charpattern\>/
+ syn match luaFunc /\<utf8\.codes\>/
+ syn match luaFunc /\<utf8\.codepoint\>/
+ syn match luaFunc /\<utf8\.len\>/
+ syn match luaFunc /\<utf8\.offset\>/
+ endif
+
+ if lua_subversion == 0
+ syn match luaFunc /\<table\.getn\>/
+ syn match luaFunc /\<table\.setn\>/
+ syn match luaFunc /\<table\.foreach\>/
+ syn match luaFunc /\<table\.foreachi\>/
+ elseif lua_subversion == 1
+ syn match luaFunc /\<table\.maxn\>/
+ elseif lua_subversion >= 2
+ syn match luaFunc /\<table\.pack\>/
+ syn match luaFunc /\<table\.unpack\>/
+ if lua_subversion >= 3
+ syn match luaFunc /\<table\.move\>/
+ endif
+ endif
+ syn match luaFunc /\<table\.concat\>/
+ syn match luaFunc /\<table\.insert\>/
+ syn match luaFunc /\<table\.sort\>/
+ syn match luaFunc /\<table\.remove\>/
+
+ if lua_subversion == 2
+ syn match luaFunc /\<bit32\.arshift\>/
+ syn match luaFunc /\<bit32\.band\>/
+ syn match luaFunc /\<bit32\.bnot\>/
+ syn match luaFunc /\<bit32\.bor\>/
+ syn match luaFunc /\<bit32\.btest\>/
+ syn match luaFunc /\<bit32\.bxor\>/
+ syn match luaFunc /\<bit32\.extract\>/
+ syn match luaFunc /\<bit32\.lrotate\>/
+ syn match luaFunc /\<bit32\.lshift\>/
+ syn match luaFunc /\<bit32\.replace\>/
+ syn match luaFunc /\<bit32\.rrotate\>/
+ syn match luaFunc /\<bit32\.rshift\>/
+ endif
+
+ syn match luaFunc /\<math\.abs\>/
+ syn match luaFunc /\<math\.acos\>/
+ syn match luaFunc /\<math\.asin\>/
+ syn match luaFunc /\<math\.atan\>/
+ if lua_subversion < 3
+ syn match luaFunc /\<math\.atan2\>/
+ endif
+ syn match luaFunc /\<math\.ceil\>/
+ syn match luaFunc /\<math\.sin\>/
+ syn match luaFunc /\<math\.cos\>/
+ syn match luaFunc /\<math\.tan\>/
+ syn match luaFunc /\<math\.deg\>/
+ syn match luaFunc /\<math\.exp\>/
+ syn match luaFunc /\<math\.floor\>/
+ syn match luaFunc /\<math\.log\>/
+ syn match luaFunc /\<math\.max\>/
+ syn match luaFunc /\<math\.min\>/
+ if lua_subversion == 0
+ syn match luaFunc /\<math\.mod\>/
+ syn match luaFunc /\<math\.log10\>/
+ elseif lua_subversion == 1
+ syn match luaFunc /\<math\.log10\>/
+ endif
+ if lua_subversion >= 1
+ syn match luaFunc /\<math\.huge\>/
+ syn match luaFunc /\<math\.fmod\>/
+ syn match luaFunc /\<math\.modf\>/
+ if lua_subversion == 1 || lua_subversion == 2
+ syn match luaFunc /\<math\.cosh\>/
+ syn match luaFunc /\<math\.sinh\>/
+ syn match luaFunc /\<math\.tanh\>/
+ endif
+ endif
+ syn match luaFunc /\<math\.rad\>/
+ syn match luaFunc /\<math\.sqrt\>/
+ if lua_subversion < 3
+ syn match luaFunc /\<math\.pow\>/
+ syn match luaFunc /\<math\.frexp\>/
+ syn match luaFunc /\<math\.ldexp\>/
+ else
+ syn match luaFunc /\<math\.maxinteger\>/
+ syn match luaFunc /\<math\.mininteger\>/
+ syn match luaFunc /\<math\.tointeger\>/
+ syn match luaFunc /\<math\.type\>/
+ syn match luaFunc /\<math\.ult\>/
+ endif
+ syn match luaFunc /\<math\.random\>/
+ syn match luaFunc /\<math\.randomseed\>/
+ syn match luaFunc /\<math\.pi\>/
+
+ syn match luaFunc /\<io\.close\>/
+ syn match luaFunc /\<io\.flush\>/
+ syn match luaFunc /\<io\.input\>/
+ syn match luaFunc /\<io\.lines\>/
+ syn match luaFunc /\<io\.open\>/
+ syn match luaFunc /\<io\.output\>/
+ syn match luaFunc /\<io\.popen\>/
+ syn match luaFunc /\<io\.read\>/
+ syn match luaFunc /\<io\.stderr\>/
+ syn match luaFunc /\<io\.stdin\>/
+ syn match luaFunc /\<io\.stdout\>/
+ syn match luaFunc /\<io\.tmpfile\>/
+ syn match luaFunc /\<io\.type\>/
+ syn match luaFunc /\<io\.write\>/
+
+ syn match luaFunc /\<os\.clock\>/
+ syn match luaFunc /\<os\.date\>/
+ syn match luaFunc /\<os\.difftime\>/
+ syn match luaFunc /\<os\.execute\>/
+ syn match luaFunc /\<os\.exit\>/
+ syn match luaFunc /\<os\.getenv\>/
+ syn match luaFunc /\<os\.remove\>/
+ syn match luaFunc /\<os\.rename\>/
+ syn match luaFunc /\<os\.setlocale\>/
+ syn match luaFunc /\<os\.time\>/
+ syn match luaFunc /\<os\.tmpname\>/
+
+ syn match luaFunc /\<debug\.debug\>/
+ syn match luaFunc /\<debug\.gethook\>/
+ syn match luaFunc /\<debug\.getinfo\>/
+ syn match luaFunc /\<debug\.getlocal\>/
+ syn match luaFunc /\<debug\.getupvalue\>/
+ syn match luaFunc /\<debug\.setlocal\>/
+ syn match luaFunc /\<debug\.setupvalue\>/
+ syn match luaFunc /\<debug\.sethook\>/
+ syn match luaFunc /\<debug\.traceback\>/
+ if lua_subversion == 1
+ syn match luaFunc /\<debug\.getfenv\>/
+ syn match luaFunc /\<debug\.setfenv\>/
+ endif
+ if lua_subversion >= 1
+ syn match luaFunc /\<debug\.getmetatable\>/
+ syn match luaFunc /\<debug\.setmetatable\>/
+ syn match luaFunc /\<debug\.getregistry\>/
+ if lua_subversion >= 2
+ syn match luaFunc /\<debug\.getuservalue\>/
+ syn match luaFunc /\<debug\.setuservalue\>/
+ syn match luaFunc /\<debug\.upvalueid\>/
+ syn match luaFunc /\<debug\.upvaluejoin\>/
+ endif
+ if lua_subversion >= 4
+ syn match luaFunc /\<debug.setcstacklimit\>/
+ endif
+ endif
+endif
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link luaStatement Statement
+hi def link luaRepeat Repeat
+hi def link luaFor Repeat
+hi def link luaString String
+hi def link luaString2 String
+hi def link luaStringDelimiter luaString
+hi def link luaNumber Number
+hi def link luaOperator Operator
+hi def link luaSymbolOperator luaOperator
+hi def link luaConstant Constant
+hi def link luaCond Conditional
+hi def link luaCondElse Conditional
+hi def link luaFunction Function
+hi def link luaMetaMethod Function
+hi def link luaComment Comment
+hi def link luaCommentDelimiter luaComment
+hi def link luaTodo Todo
+hi def link luaTable Structure
+hi def link luaError Error
+hi def link luaParenError Error
+hi def link luaSpecial SpecialChar
+hi def link luaFunc Identifier
+hi def link luaLabel Label
+
+
+let b:current_syntax = "lua"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: et ts=8 sw=2
diff --git a/runtime/syntax/lynx.vim b/runtime/syntax/lynx.vim
new file mode 100644
index 0000000..fa7c26f
--- /dev/null
+++ b/runtime/syntax/lynx.vim
@@ -0,0 +1,140 @@
+" Vim syntax file
+" Language: Lynx configuration file (lynx.cfg)
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2013 Jun 20
+
+" Lynx 2.8.7
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match lynxStart "^" transparent skipwhite nextgroup=lynxOption
+
+syn match lynxComment "\(^\|\s\+\)#.*$" contains=lynxTodo
+
+syn keyword lynxTodo TODO NOTE FIXME XXX contained
+
+syn match lynxDelimiter ":" skipwhite nextgroup=lynxBoolean,lynxNumber,lynxNone,lynxRCOption
+
+syn case ignore
+syn keyword lynxBoolean TRUE FALSE ON OFF contained
+syn keyword lynxNone NONE contained
+syn case match
+
+syn match lynxNumber "-\=\<\d\+\>" contained
+
+"{{{ Options
+syn case ignore
+syn keyword lynxOption ACCEPT_ALL_COOKIES ALERTSECS ALWAYS_RESUBMIT_POSTS
+ \ ALWAYS_TRUSTED_EXEC ANONFTP_PASSWORD ASSUMED_COLOR
+ \ ASSUMED_DOC_CHARSET_CHOICE ASSUME_CHARSET ASSUME_LOCAL_CHARSET
+ \ ASSUME_UNREC_CHARSET AUTO_SESSION AUTO_UNCACHE_DIRLISTS BAD_HTML
+ \ BIBP_BIBHOST BIBP_GLOBAL_SERVER BLOCK_MULTI_BOOKMARKS BOLD_H1
+ \ BOLD_HEADERS BOLD_NAME_ANCHORS BOOKMARK_FILE BROKEN_FTP_EPSV
+ \ BROKEN_FTP_RETR BZIP2_PATH CASE_SENSITIVE_ALWAYS_ON
+ \ CASE_SENSITIVE_SEARCHING CHARACTER_SET CHARSETS_DIRECTORY
+ \ CHARSET_SWITCH_RULES CHECKMAIL CHMOD_PATH COLLAPSE_BR_TAGS COLOR
+ \ COLOR_STYLE COMPRESS_PATH CONNECT_TIMEOUT COOKIE_ACCEPT_DOMAINS
+ \ COOKIE_FILE COOKIE_LOOSE_INVALID_DOMAINS
+ \ COOKIE_QUERY_INVALID_DOMAINS COOKIE_REJECT_DOMAINS COOKIE_SAVE_FILE
+ \ COOKIE_STRICT_INVALID_DOMAINS COPY_PATH CSO_PROXY CSWING_PATH
+ \ DEBUGSECS DEFAULT_BOOKMARK_FILE DEFAULT_CACHE_SIZE DEFAULT_COLORS
+ \ DEFAULT_EDITOR DEFAULT_INDEX_FILE DEFAULT_KEYPAD_MODE
+ \ DEFAULT_KEYPAD_MODE_IS_NUMBERS_AS_ARROWS DEFAULT_USER_MODE
+ \ DEFAULT_VIRTUAL_MEMORY_SIZE DELAYSECS DIRED_MENU DIR_LIST_ORDER
+ \ DIR_LIST_STYLE DISPLAY DISPLAY_CHARSET_CHOICE DOWNLOADER EMACS_KEYS
+ \ EMACS_KEYS_ALWAYS_ON ENABLE_LYNXRC ENABLE_SCROLLBACK EXTERNAL
+ \ FILE_EDITOR FILE_SORTING_METHOD FINGER_PROXY FOCUS_WINDOW
+ \ FORCE_8BIT_TOUPPER FORCE_COOKIE_PROMPT FORCE_EMPTY_HREFLESS_A
+ \ FORCE_SSL_COOKIES_SECURE FORCE_SSL_PROMPT FORMS_OPTIONS FTP_FORMAT
+ \ FTP_PASSIVE FTP_PROXY GLOBAL_EXTENSION_MAP GLOBAL_MAILCAP
+ \ GOPHER_PROXY GOTOBUFFER GZIP_PATH HELPFILE HIDDEN_LINK_MARKER
+ \ HISTORICAL_COMMENTS HTMLSRC_ATTRNAME_XFORM HTMLSRC_TAGNAME_XFORM
+ \ HTTPS_PROXY HTTP_PROXY INCLUDE INFLATE_PATH INFOSECS INSTALL_PATH
+ \ JUMPBUFFER JUMPFILE JUMP_PROMPT JUSTIFY JUSTIFY_MAX_VOID_PERCENT
+ \ KBLAYOUT KEYBOARD_LAYOUT KEYMAP KEYPAD_MODE
+ \ LEFTARROW_IN_TEXTFIELD_PROMPT LINEEDIT_MODE LIST_FORMAT
+ \ LIST_NEWS_DATES LIST_NEWS_NUMBERS LOCALE_CHARSET LOCALHOST_ALIAS
+ \ LOCAL_DOMAIN LOCAL_EXECUTION_LINKS_ALWAYS_ON
+ \ LOCAL_EXECUTION_LINKS_ON_BUT_NOT_REMOTE LYNXCGI_DOCUMENT_ROOT
+ \ LYNXCGI_ENVIRONMENT LYNX_HOST_NAME LYNX_SIG_FILE MAIL_ADRS
+ \ MAIL_SYSTEM_ERROR_LOGGING MAKE_LINKS_FOR_ALL_IMAGES
+ \ MAKE_PSEUDO_ALTS_FOR_INLINES MAX_COOKIES_BUFFER MAX_COOKIES_DOMAIN
+ \ MAX_COOKIES_GLOBAL MESSAGESECS MINIMAL_COMMENTS MKDIR_PATH
+ \ MULTI_BOOKMARK MULTI_BOOKMARK_SUPPORT MV_PATH NCR_IN_BOOKMARKS
+ \ NESTED_TABLES NEWSPOST_PROXY NEWSREPLY_PROXY NEWS_CHUNK_SIZE
+ \ NEWS_MAX_CHUNK NEWS_POSTING NEWS_PROXY NNTPSERVER NNTP_PROXY
+ \ NONRESTARTING_SIGWINCH NO_DOT_FILES NO_FILE_REFERER
+ \ NO_FORCED_CORE_DUMP NO_FROM_HEADER NO_ISMAP_IF_USEMAP NO_MARGINS
+ \ NO_PAUSE NO_PROXY NO_REFERER_HEADER NO_TABLE_CENTER NO_TITLE
+ \ NUMBER_FIELDS_ON_LEFT NUMBER_LINKS_ON_LEFT OUTGOING_MAIL_CHARSET
+ \ PARTIAL PARTIAL_THRES PERSISTENT_COOKIES PERSONAL_EXTENSION_MAP
+ \ PERSONAL_MAILCAP PERSONAL_MAIL_ADDRESS POSITIONABLE_EDITOR
+ \ PREFERRED_CHARSET PREFERRED_ENCODING PREFERRED_LANGUAGE
+ \ PREFERRED_MEDIA_TYPES PREPEND_BASE_TO_SOURCE
+ \ PREPEND_CHARSET_TO_SOURCE PRETTYSRC PRETTYSRC_SPEC
+ \ PRETTYSRC_VIEW_NO_ANCHOR_NUMBERING PRINTER QUIT_DEFAULT_YES RAW_MODE
+ \ READ_TIMEOUT REFERER_WITH_QUERY REPLAYSECS REUSE_TEMPFILES
+ \ RLOGIN_PATH RM_PATH RMDIR_PATH RULE RULESFILE
+ \ RUN_ALL_EXECUTION_LINKS RUN_EXECUTION_LINKS_LOCAL SAVE_SPACE
+ \ SCAN_FOR_BURIED_NEWS_REFS SCREEN_SIZE SCROLLBAR SCROLLBAR_ARROW
+ \ SEEK_FRAG_AREA_IN_CUR SEEK_FRAG_MAP_IN_CUR SELECT_POPUPS
+ \ SEND_USERAGENT SESSION_FILE SESSION_LIMIT SET_COOKIES SETFONT_PATH
+ \ SHOW_COLOR SHOW_CURSOR SHOW_DOTFILES SHOW_KB_NAME SHOW_KB_RATE
+ \ SNEWSPOST_PROXY SNEWSREPLY_PROXY SNEWS_PROXY SOFT_DQUOTES
+ \ SOURCE_CACHE SOURCE_CACHE_FOR_ABORTED SSL_CERT_FILE STARTFILE
+ \ STATUS_BUFFER_SIZE STRIP_DOTDOT_URLS SUBSTITUTE_UNDERSCORES
+ \ SUB_BOOKMARKS SUFFIX SUFFIX_ORDER SYSLOG_REQUESTED_URLS SYSLOG_TEXT
+ \ SYSTEM_EDITOR SYSTEM_MAIL SYSTEM_MAIL_FLAGS TAGSOUP TAR_PATH
+ \ TELNET_PATH TEXTFIELDS_NEED_ACTIVATION TIMEOUT TN3270_PATH
+ \ TOUCH_PATH TRIM_INPUT_FIELDS TRUSTED_EXEC TRUSTED_LYNXCGI
+ \ UNCOMPRESS_PATH UNDERLINE_LINKS UNZIP_PATH UPLOADER
+ \ URL_DOMAIN_PREFIXES URL_DOMAIN_SUFFIXES USERAGENT USER_MODE
+ \ USE_FIXED_RECORDS USE_MOUSE USE_SELECT_POPUPS UUDECODE_PATH
+ \ VERBOSE_IMAGES VIEWER VISITED_LINKS VI_KEYS VI_KEYS_ALWAYS_ON
+ \ WAIS_PROXY XHTML_PARSING XLOADIMAGE_COMMAND ZCAT_PATH ZIP_PATH
+ \ contained nextgroup=lynxDelimiter
+syn keyword lynxRCOption accept_all_cookies assume_charset auto_session
+ \ bookmark_file case_sensitive_searching character_set
+ \ cookie_accept_domains cookie_file cookie_loose_invalid_domains
+ \ cookie_query_invalid_domains cookie_reject_domains
+ \ cookie_strict_invalid_domains dir_list_style display emacs_keys
+ \ file_editor file_sorting_method force_cookie_prompt force_ssl_prompt
+ \ ftp_passive kblayout keypad_mode lineedit_mode locale_charset
+ \ make_links_for_all_images make_pseudo_alts_for_inlines
+ \ multi_bookmark no_pause personal_mail_address preferred_charset
+ \ preferred_encoding preferred_language preferred_media_types raw_mode
+ \ run_all_execution_links run_execution_links_on_local_files scrollbar
+ \ select_popups send_useragent session_file set_cookies show_color
+ \ show_cursor show_dotfiles show_kb_rate sub_bookmarks tagsoup
+ \ underline_links user_mode useragent verbose_images vi_keys
+ \ visited_links
+ \ contained nextgroup=lynxDelimiter
+syn case match
+" }}}
+
+" cfg2html.pl formatting directives
+syn match lynxFormatDir "^\.h\d\s.*$"
+syn match lynxFormatDir "^\.\(ex\|nf\)\(\s\+\d\+\)\=$"
+syn match lynxFormatDir "^\.fi$"
+
+hi def link lynxBoolean Boolean
+hi def link lynxComment Comment
+hi def link lynxDelimiter Special
+hi def link lynxFormatDir Special
+hi def link lynxNone Constant
+hi def link lynxNumber Number
+hi def link lynxOption Identifier
+hi def link lynxRCOption lynxOption
+hi def link lynxTodo Todo
+
+let b:current_syntax = "lynx"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 fdm=marker:
diff --git a/runtime/syntax/lyrics.vim b/runtime/syntax/lyrics.vim
new file mode 100644
index 0000000..42a288b
--- /dev/null
+++ b/runtime/syntax/lyrics.vim
@@ -0,0 +1,43 @@
+" Vim syntax file
+" Language: LyRiCs
+" Maintainer: ObserverOfTime <chronobserver@disroot.org>
+" Filenames: *.lrc
+" Last Change: 2022 Sep 18
+
+if exists('b:current_syntax')
+ finish
+endif
+
+let s:cpo_save = &cpoptions
+set cpoptions&vim
+
+syn case ignore
+
+" Errors
+syn match lrcError /^.\+$/
+
+" ID tags
+syn match lrcTag /^\s*\[\a\+:.\+\]\s*$/ contains=lrcTagName,lrcTagValue
+syn match lrcTagName contained nextgroup=lrcTagValue
+ \ /\[\zs\(al\|ar\|au\|by\|encoding\|la\|id\|length\|offset\|re\|ti\|ve\)\ze:/
+syn match lrcTagValue /:\zs.\+\ze\]/ contained
+
+" Lyrics
+syn match lrcLyricTime /^\s*\[\d\d:\d\d\.\d\d\]/
+ \ contains=lrcNumber nextgroup=lrcLyricLine
+syn match lrcLyricLine /.*$/ contained contains=lrcWordTime,@Spell
+syn match lrcWordTime /<\d\d:\d\d\.\d\d>/ contained contains=lrcNumber,@NoSpell
+syn match lrcNumber /[+-]\=\d\+/ contained
+
+hi def link lrcLyricTime Label
+hi def link lrcNumber Number
+hi def link lrcTag PreProc
+hi def link lrcTagName Identifier
+hi def link lrcTagValue String
+hi def link lrcWordTime Special
+hi def link lrcError Error
+
+let b:current_syntax = 'lyrics'
+
+let &cpoptions = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/m3build.vim b/runtime/syntax/m3build.vim
new file mode 100644
index 0000000..1a378e8
--- /dev/null
+++ b/runtime/syntax/m3build.vim
@@ -0,0 +1,177 @@
+" Vim syntax file
+" Language: Modula-3 Makefile
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2021 April 15
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/m3quake.vim
+
+" Identifiers
+syn match m3buildPredefinedVariable "\<\%(TARGET\|OS_TYPE\|BUILD_DIR\|PKG_USE\|WDROOT\)\>"
+
+" Build Procedures {{{1
+" Generated from cm3/m3-sys/cm3/src/M3Build.m3
+syn keyword m3buildProcedure HasCBackend
+
+" (* packages & locations *)
+syn keyword m3buildProcedure Pkg
+syn keyword m3buildProcedure override
+syn keyword m3buildProcedure path_of
+syn keyword m3buildProcedure pkg_subdir
+
+" (* names *)
+syn keyword m3buildProcedure program_name
+syn keyword m3buildProcedure library_name
+
+" (* calls in the generated .M3EXPORT files *)
+syn keyword m3buildProcedure _define_lib
+syn keyword m3buildProcedure _define_pgm
+syn keyword m3buildProcedure _import_template
+syn keyword m3buildProcedure _import_m3lib
+syn keyword m3buildProcedure _import_otherlib
+syn keyword m3buildProcedure _map_add_interface
+syn keyword m3buildProcedure _map_add_generic_interface
+syn keyword m3buildProcedure _map_add_module
+syn keyword m3buildProcedure _map_add_generic_module
+syn keyword m3buildProcedure _map_add_c
+syn keyword m3buildProcedure _map_add_h
+syn keyword m3buildProcedure _map_add_s
+
+" (* compiler options *)
+syn keyword m3buildProcedure m3_debug
+syn keyword m3buildProcedure m3_optimize
+syn keyword m3buildProcedure build_shared
+syn keyword m3buildProcedure build_standalone
+
+" (* derived files *)
+syn keyword m3buildProcedure m3_compile_only
+syn keyword m3buildProcedure m3_finish_up
+
+" (* predefined system libraries *)
+syn keyword m3buildProcedure import_sys_lib
+
+" (* options *)
+syn keyword m3buildProcedure m3_option
+syn keyword m3buildProcedure remove_m3_option
+
+" (* deleting *)
+syn keyword m3buildProcedure deriveds
+
+" (* imports *)
+syn keyword m3buildProcedure include_dir
+syn keyword m3buildProcedure include_pkg
+syn keyword m3buildProcedure import
+syn keyword m3buildProcedure import_version
+syn keyword m3buildProcedure import_obj
+syn keyword m3buildProcedure import_lib
+
+" (* objects *)
+syn keyword m3buildProcedure pgm_object
+
+" (* sources *)
+syn keyword m3buildProcedure source
+syn keyword m3buildProcedure pgm_source
+syn keyword m3buildProcedure interface
+syn keyword m3buildProcedure Interface
+syn keyword m3buildProcedure implementation
+syn keyword m3buildProcedure module
+syn keyword m3buildProcedure Module
+syn keyword m3buildProcedure h_source
+syn keyword m3buildProcedure c_source
+syn keyword m3buildProcedure s_source
+syn keyword m3buildProcedure ship_source
+
+" (* generics *)
+syn keyword m3buildProcedure generic_interface
+syn keyword m3buildProcedure Generic_interface
+syn keyword m3buildProcedure generic_implementation
+syn keyword m3buildProcedure Generic_implementation
+syn keyword m3buildProcedure generic_module
+syn keyword m3buildProcedure Generic_module
+syn keyword m3buildProcedure build_generic_intf
+syn keyword m3buildProcedure build_generic_impl
+
+" (* derived sources *)
+syn keyword m3buildProcedure derived_interface
+syn keyword m3buildProcedure derived_implementation
+syn keyword m3buildProcedure derived_c
+syn keyword m3buildProcedure derived_h
+
+" (* hiding/exporting *)
+syn keyword m3buildProcedure hide_interface
+syn keyword m3buildProcedure hide_generic_interface
+syn keyword m3buildProcedure hide_generic_implementation
+syn keyword m3buildProcedure export_interface
+syn keyword m3buildProcedure export_generic_interface
+syn keyword m3buildProcedure export_generic_implementation
+
+" (* templates *)
+syn keyword m3buildProcedure template
+
+" (* library building *)
+syn keyword m3buildProcedure library
+syn keyword m3buildProcedure Library
+
+" (* program building *)
+syn keyword m3buildProcedure program
+syn keyword m3buildProcedure Program
+syn keyword m3buildProcedure c_program
+syn keyword m3buildProcedure C_program
+
+" (* man pages *)
+syn keyword m3buildProcedure manPage
+syn keyword m3buildProcedure ManPage
+
+" (* emacs *)
+syn keyword m3buildProcedure Gnuemacs
+syn keyword m3buildProcedure CompiledGnuemacs
+
+" (* "-find" support *)
+syn keyword m3buildProcedure find_unit
+syn keyword m3buildProcedure enum_units
+
+" (* export functions *)
+syn keyword m3buildProcedure install_sources
+syn keyword m3buildProcedure install_derived
+syn keyword m3buildProcedure install_derived_link
+syn keyword m3buildProcedure install_derived_symbolic_link
+syn keyword m3buildProcedure install_derived_hard_link
+syn keyword m3buildProcedure install_link_to_derived
+syn keyword m3buildProcedure install_symbolic_link_to_derived
+syn keyword m3buildProcedure install_hard_link_to_derived
+syn keyword m3buildProcedure install_symbolic_link
+syn keyword m3buildProcedure install_file
+
+" (* installation functions *)
+syn keyword m3buildProcedure BindExport
+syn keyword m3buildProcedure BinExport
+syn keyword m3buildProcedure LibdExport
+syn keyword m3buildProcedure LibExport
+syn keyword m3buildProcedure EmacsdExport
+syn keyword m3buildProcedure EmacsExport
+syn keyword m3buildProcedure DocdExport
+syn keyword m3buildProcedure DocExport
+syn keyword m3buildProcedure MandExport
+syn keyword m3buildProcedure ManExport
+syn keyword m3buildProcedure HtmlExport
+syn keyword m3buildProcedure RootExport
+syn keyword m3buildProcedure RootdExport
+
+" (* misc *)
+syn keyword m3buildProcedure gen_m3exports
+syn keyword m3buildProcedure generate_tfile
+syn keyword m3buildProcedure delete_file
+syn keyword m3buildProcedure link_file
+syn keyword m3buildProcedure symbolic_link_file
+syn keyword m3buildProcedure hard_link_file
+" }}}
+
+hi def link m3buildPredefinedVariable Identifier
+hi def link m3buildProcedure Function
+
+let b:current_syntax = "m3build"
+
+" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
diff --git a/runtime/syntax/m3quake.vim b/runtime/syntax/m3quake.vim
new file mode 100644
index 0000000..c202d90
--- /dev/null
+++ b/runtime/syntax/m3quake.vim
@@ -0,0 +1,74 @@
+" Vim syntax file
+" Language: Modula-3 Quake
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2021 April 15
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" Keywords
+syn keyword m3quakeKeyword else end foreach if in is local or proc readonly
+syn keyword m3quakeKeyword return
+
+" Builtin procedures {{{
+" Generated from m3-sys/m3quake/src/QMachine.m3
+syn keyword m3quakeProcedure arglist cp_if defined empty equal error escape
+syn keyword m3quakeProcedure exec cm3_exec file format include make_dir
+syn keyword m3quakeProcedure normalize path stale try_exec try_cm3_exec
+syn keyword m3quakeProcedure unlink_file write datetime date datestamp
+syn keyword m3quakeProcedure TRACE_INSTR eval_func hostname
+
+syn keyword m3quakeProcedure pushd popd cd getwd
+
+syn keyword m3quakeProcedure quake
+
+syn keyword m3quakeProcedure q_exec q_exec_put q_exec_get
+
+syn keyword m3quakeProcedure fs_exists fs_readable fs_writable fs_executable
+syn keyword m3quakeProcedure fs_isdir fs_isfile fs_contents fs_putfile
+syn keyword m3quakeProcedure fs_mkdir fs_touch fs_lsdirs fs_lsfiles fs_rmdir
+syn keyword m3quakeProcedure fs_rmfile fs_rmrec fs_cp
+
+syn keyword m3quakeProcedure pn_valid pn_decompose pn_compose pn_absolute
+syn keyword m3quakeProcedure pn_prefix pn_last pn_base pn_lastbase pn_lastext
+syn keyword m3quakeProcedure pn_join pn_join2 pn_replace_ext pn_parent
+syn keyword m3quakeProcedure pn_current
+
+syn keyword m3quakeProcedure len
+
+syn keyword m3quakeProcedure split sub skipl skipr squeeze compress pos
+syn keyword m3quakeProcedure tcontains bool encode decode subst_chars
+syn keyword m3quakeProcedure del_chars subst subst_env add_prefix add_suffix
+" }}}
+
+" Identifiers
+syn match m3quakeEnvVariable "$\h\w\+"
+
+" Operators
+syn match m3quakeOperator "&"
+syn match m3quakeOperator "\<\%(contains\|not\|and\|or\)\>"
+
+" Strings
+syn match m3quakeEscape "\\[\\nrtbf"]" contained display
+syn region m3quakeString start=+"+ end=+"+ contains=m3quakeEscape
+
+" Comments
+syn keyword m3quakeTodo TODO FIXME XXX contained
+syn region m3quakeComment start="%" end="$" contains=m3quakeTodo,@Spell
+syn region m3quakeComment start="/\*" end="\*/" contains=m3quakeTodo,@Spell
+
+" Default highlighting
+hi def link m3quakeCommand Statement
+hi def link m3quakeComment Comment
+hi def link m3quakeEnvVariable Identifier
+hi def link m3quakeEscape Special
+hi def link m3quakeKeyword Keyword
+hi def link m3quakeOperator Operator
+hi def link m3quakeProcedure Function
+hi def link m3quakeString String
+hi def link m3quakeTodo Todo
+
+let b:current_syntax = "m3quake"
+
+" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
diff --git a/runtime/syntax/m4.vim b/runtime/syntax/m4.vim
new file mode 100644
index 0000000..f90197a
--- /dev/null
+++ b/runtime/syntax/m4.vim
@@ -0,0 +1,62 @@
+" Vim syntax file
+" Language: M4
+" Maintainer: Claudio Fleiner (claudio@fleiner.com)
+" URL: http://www.fleiner.com/vim/syntax/m4.vim
+" (outdated)
+" Last Change: 2022 Jun 12
+
+" This file will highlight user function calls if they use only
+" capital letters and have at least one argument (i.e. the '('
+" must be there). Let me know if this is a problem.
+
+" quit when a syntax file was already loaded
+if !exists("main_syntax")
+ if exists("b:current_syntax")
+ finish
+ endif
+ " we define it here so that included files can test for it
+ let main_syntax='m4'
+endif
+
+" define the m4 syntax
+syn match m4Variable contained "\$\d\+"
+syn match m4Special contained "$[@*#]"
+syn match m4Comment "\<\(m4_\)\=dnl\>.*" contains=SpellErrors
+syn match m4Comment "#.*" contains=SpellErrors
+syn match m4Constants "\<\(m4_\)\=__file__"
+syn match m4Constants "\<\(m4_\)\=__line__"
+syn keyword m4Constants divnum sysval m4_divnum m4_sysval
+syn region m4Paren matchgroup=m4Delimiter start="(" end=")" contained contains=@m4Top
+syn region m4Command matchgroup=m4Function start="\<\(m4_\)\=\(define\|defn\|pushdef\)(" end=")" contains=@m4Top
+syn region m4Command matchgroup=m4Preproc start="\<\(m4_\)\=\(include\|sinclude\)("he=e-1 end=")" contains=@m4Top
+syn region m4Command matchgroup=m4Statement start="\<\(m4_\)\=\(syscmd\|esyscmd\|ifdef\|ifelse\|indir\|builtin\|shift\|errprint\|m4exit\|changecom\|changequote\|changeword\|m4wrap\|debugfile\|divert\|undivert\)("he=e-1 end=")" contains=@m4Top
+syn region m4Command matchgroup=m4builtin start="\<\(m4_\)\=\(len\|index\|regexp\|substr\|translit\|patsubst\|format\|incr\|decr\|eval\|maketemp\)("he=e-1 end=")" contains=@m4Top
+syn keyword m4Statement divert undivert
+syn region m4Command matchgroup=m4Type start="\<\(m4_\)\=\(undefine\|popdef\)("he=e-1 end=")" contains=@m4Top
+syn region m4Function matchgroup=m4Type start="\<[_A-Z][_A-Z0-9]*("he=e-1 end=")" contains=@m4Top
+syn region m4String start="`" end="'" contains=SpellErrors
+syn cluster m4Top contains=m4Comment,m4Constants,m4Special,m4Variable,m4String,m4Paren,m4Command,m4Statement,m4Function
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link m4Delimiter Delimiter
+hi def link m4Comment Comment
+hi def link m4Function Function
+hi def link m4Keyword Keyword
+hi def link m4Special Special
+hi def link m4String String
+hi def link m4Statement Statement
+hi def link m4Preproc PreProc
+hi def link m4Type Type
+hi def link m4Special Special
+hi def link m4Variable Special
+hi def link m4Constants Constant
+hi def link m4Builtin Statement
+
+let b:current_syntax = "m4"
+
+if main_syntax == 'm4'
+ unlet main_syntax
+endif
+
+" vim: ts=4
diff --git a/runtime/syntax/mail.vim b/runtime/syntax/mail.vim
new file mode 100644
index 0000000..0cd48fc
--- /dev/null
+++ b/runtime/syntax/mail.vim
@@ -0,0 +1,112 @@
+" Vim syntax file
+" Language: Mail file
+" Previous Maintainer: Felix von Leitner <leitner@math.fu-berlin.de>
+" Maintainer: GI <a@b.c>, where a='gi1242+vim', b='gmail', c='com'
+" Last Change: Wed 14 Aug 2013 08:24:52 AM PDT
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" The mail header is recognized starting with a "keyword:" line and ending
+" with an empty line or other line that can't be in the header. All lines of
+" the header are highlighted. Headers of quoted messages (quoted with >) are
+" also highlighted.
+
+" Syntax clusters
+syn cluster mailHeaderFields contains=mailHeaderKey,mailSubject,mailHeaderEmail,@mailLinks
+syn cluster mailLinks contains=mailURL,mailEmail
+syn cluster mailQuoteExps contains=mailQuoteExp1,mailQuoteExp2,mailQuoteExp3,mailQuoteExp4,mailQuoteExp5,mailQuoteExp6
+
+syn case match
+" For "From " matching case is required. The "From " is not matched in quoted
+" emails
+" According to RFC 2822 any printable ASCII character can appear in a field
+" name, except ':'.
+syn region mailHeader contains=@mailHeaderFields,@NoSpell start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1 fold
+syn match mailHeaderKey contained contains=mailEmail,@NoSpell "^From\s.*\d\d\d\d$"
+
+" Nothing else depends on case.
+syn case ignore
+
+" Headers in properly quoted (with "> " or ">") emails are matched
+syn region mailHeader keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1 fold
+
+" Usenet headers
+syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(Newsgroups|Followup-To|Message-ID|Supersedes|Control):.*$"
+
+
+syn region mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@mailQuoteExps,@NoSpell start="\v(^(\> ?)*)@<=(to|b?cc):" skip=",$" end="$"
+syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$" fold
+syn match mailHeaderKey contained contains=@NoSpell "\v(^(\> ?)*)@<=date:"
+syn match mailSubject contained "\v^subject:.*$" fold
+syn match mailSubject contained contains=@NoSpell "\v(^(\> ?)+)@<=subject:.*$"
+
+" Anything in the header between < and > is an email address
+syn match mailHeaderEmail contained contains=@NoSpell "<.\{-}>"
+
+" Mail Signatures. (Begin with "-- ", end with change in quote level)
+syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps start="^--\s$" end="^$" end="^\(> \?\)\+"me=s-1 fold
+syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)--\s$" end="^\z1$" end="^\z1\@!"me=s-1 end="^\z1\(> \?\)\+"me=s-1 fold
+
+" Treat verbatim Text special.
+syn region mailVerbatim contains=@NoSpell keepend start="^#v+$" end="^#v-$" fold
+syn region mailVerbatim contains=@mailQuoteExps,@NoSpell keepend start="^\z(\(> \?\)\+\)#v+$" end="\z1#v-$" fold
+
+" URLs start with a known protocol or www,web,w3.
+syn match mailURL contains=@NoSpell `\v<(((https?|ftp|gopher)://|(mailto|file|news):)[^' <>"]+|(www|web|w3)[a-z0-9_-]*\.[a-z0-9._-]+\.[^' <>"]+)[a-z0-9/]`
+syn match mailEmail contains=@NoSpell "\v[_=a-z\./+0-9-]+\@[a-z0-9._-]+\a{2}"
+
+" Make sure quote markers in regions (header / signature) have correct color
+syn match mailQuoteExp1 contained "\v^(\> ?)"
+syn match mailQuoteExp2 contained "\v^(\> ?){2}"
+syn match mailQuoteExp3 contained "\v^(\> ?){3}"
+syn match mailQuoteExp4 contained "\v^(\> ?){4}"
+syn match mailQuoteExp5 contained "\v^(\> ?){5}"
+syn match mailQuoteExp6 contained "\v^(\> ?){6}"
+
+" Even and odd quoted lines. Order is important here!
+syn region mailQuoted6 keepend contains=mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{5}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
+syn region mailQuoted5 keepend contains=mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{4}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
+syn region mailQuoted4 keepend contains=mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{3}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
+syn region mailQuoted3 keepend contains=mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{2}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
+syn region mailQuoted2 keepend contains=mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{1}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
+syn region mailQuoted1 keepend contains=mailQuoted2,mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z([a-z]\+>\|[]|}>]\)" end="^\z1\@!" fold
+
+" Need to sync on the header. Assume we can do that within 100 lines
+if exists("mail_minlines")
+ exec "syn sync minlines=" . mail_minlines
+else
+ syn sync minlines=100
+endif
+
+" Define the default highlighting.
+hi def link mailVerbatim Special
+hi def link mailHeader Statement
+hi def link mailHeaderKey Type
+hi def link mailSignature PreProc
+hi def link mailHeaderEmail mailEmail
+hi def link mailEmail Special
+hi def link mailURL String
+hi def link mailSubject Title
+hi def link mailQuoted1 Comment
+hi def link mailQuoted3 mailQuoted1
+hi def link mailQuoted5 mailQuoted1
+hi def link mailQuoted2 Identifier
+hi def link mailQuoted4 mailQuoted2
+hi def link mailQuoted6 mailQuoted2
+hi def link mailQuoteExp1 mailQuoted1
+hi def link mailQuoteExp2 mailQuoted2
+hi def link mailQuoteExp3 mailQuoted3
+hi def link mailQuoteExp4 mailQuoted4
+hi def link mailQuoteExp5 mailQuoted5
+hi def link mailQuoteExp6 mailQuoted6
+
+let b:current_syntax = "mail"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/mailaliases.vim b/runtime/syntax/mailaliases.vim
new file mode 100644
index 0000000..a5282aa
--- /dev/null
+++ b/runtime/syntax/mailaliases.vim
@@ -0,0 +1,71 @@
+" Vim syntax file
+" Language: aliases(5) local alias database file
+" Previous Maintainer: Nikolai Weibull <nikolai@bitwi.se>
+" Latest Revision: 2008-04-14
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword mailaliasesTodo contained TODO FIXME XXX NOTE
+
+syn region mailaliasesComment display oneline start='^\s*#' end='$'
+ \ contains=mailaliasesTodo,@Spell
+
+syn match mailaliasesBegin display '^'
+ \ nextgroup=mailaliasesName,
+ \ mailaliasesComment
+
+syn match mailaliasesName contained '[[:alnum:]\._-]\+'
+ \ nextgroup=mailaliasesColon
+
+syn region mailaliasesName contained oneline start=+"+
+ \ skip=+\\\\\|\\"+ end=+"+
+ \ nextgroup=mailaliasesColon
+
+syn match mailaliasesColon contained ':'
+ \ nextgroup=@mailaliasesValue
+ \ skipwhite skipnl
+
+syn cluster mailaliasesValue contains=mailaliasesValueAddress,
+ \ mailaliasesValueFile,
+ \ mailaliasesValueCommand,
+ \ mailaliasesValueInclude
+
+syn match mailaliasesValueAddress contained '[^ \t/|,]\+'
+ \ nextgroup=mailaliasesValueSep
+ \ skipwhite skipnl
+
+syn match mailaliasesValueFile contained '/[^,]*'
+ \ nextgroup=mailaliasesValueSep
+ \ skipwhite skipnl
+
+syn match mailaliasesValueCommand contained '|[^,]*'
+ \ nextgroup=mailaliasesValueSep
+ \ skipwhite skipnl
+
+syn match mailaliasesValueInclude contained ':include:[^,]*'
+ \ nextgroup=mailaliasesValueSep
+ \ skipwhite skipnl
+
+syn match mailaliasesValueSep contained ','
+ \ nextgroup=@mailaliasesValue
+ \ skipwhite skipnl
+
+hi def link mailaliasesTodo Todo
+hi def link mailaliasesComment Comment
+hi def link mailaliasesName Identifier
+hi def link mailaliasesColon Delimiter
+hi def link mailaliasesValueAddress String
+hi def link mailaliasesValueFile String
+hi def link mailaliasesValueCommand String
+hi def link mailaliasesValueInclude PreProc
+hi def link mailaliasesValueSep Delimiter
+
+let b:current_syntax = "mailaliases"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/mailcap.vim b/runtime/syntax/mailcap.vim
new file mode 100644
index 0000000..bd23040
--- /dev/null
+++ b/runtime/syntax/mailcap.vim
@@ -0,0 +1,35 @@
+" Vim syntax file
+" Language: Mailcap configuration file
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2013 Jun 01
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match mailcapComment "^#.*"
+
+syn region mailcapString start=+"+ end=+"+ contains=mailcapSpecial oneline
+
+syn match mailcapDelimiter "\\\@<!;"
+
+syn match mailcapSpecial "\\\@<!%[nstF]"
+syn match mailcapSpecial "\\\@<!%{[^}]*}"
+
+syn case ignore
+syn match mailcapFlag "\(=\s*\)\@<!\<\(needsterminal\|copiousoutput\|x-\w\+\)\>"
+syn match mailcapFieldname "\<\(compose\|composetyped\|print\|edit\|test\|x11-bitmap\|nametemplate\|textualnewlines\|description\|x-\w+\)\>\ze\s*="
+syn match mailcapTypeField "^\(text\|image\|audio\|video\|application\|message\|multipart\|model\|x-[[:graph:]]\+\)\(/\(\*\|[[:graph:]]\+\)\)\=\ze\s*;"
+syn case match
+
+hi def link mailcapComment Comment
+hi def link mailcapDelimiter Delimiter
+hi def link mailcapFlag Statement
+hi def link mailcapFieldname Statement
+hi def link mailcapSpecial Identifier
+hi def link mailcapTypeField Type
+hi def link mailcapString String
+
+let b:current_syntax = "mailcap"
+
+" vim: ts=8
diff --git a/runtime/syntax/make.vim b/runtime/syntax/make.vim
new file mode 100644
index 0000000..b457304
--- /dev/null
+++ b/runtime/syntax/make.vim
@@ -0,0 +1,144 @@
+" Vim syntax file
+" Language: Makefile
+" Maintainer: Roland Hieber <rohieb+vim-iR0jGdkV@rohieb.name>, <https://github.com/rohieb>
+" Previous Maintainer: Claudio Fleiner <claudio@fleiner.com>
+" URL: https://github.com/vim/vim/blob/master/runtime/syntax/make.vim
+" Last Change: 2022 Nov 06
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" some special characters
+syn match makeSpecial "^\s*[@+-]\+"
+syn match makeNextLine "\\\n\s*"
+
+" catch unmatched define/endef keywords. endef only matches it is by itself on a line, possibly followed by a commend
+syn region makeDefine start="^\s*define\s" end="^\s*endef\s*\(#.*\)\?$"
+ \ contains=makeStatement,makeIdent,makePreCondit,makeDefine
+
+" Microsoft Makefile specials
+syn case ignore
+syn match makeInclude "^!\s*include\s.*$"
+syn match makePreCondit "^!\s*\(cmdswitches\|error\|message\|include\|if\|ifdef\|ifndef\|else\|else\s*if\|else\s*ifdef\|else\s*ifndef\|endif\|undef\)\>"
+syn case match
+
+" identifiers
+syn region makeIdent start="\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent
+syn region makeIdent start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent
+syn match makeIdent "\$\$\w*"
+syn match makeIdent "\$[^({]"
+syn match makeIdent "^ *[^:#= \t]*\s*[:+?!*]="me=e-2
+syn match makeIdent "^ *[^:#= \t]*\s*::="me=e-3
+syn match makeIdent "^ *[^:#= \t]*\s*="me=e-1
+syn match makeIdent "%"
+
+" Makefile.in variables
+syn match makeConfig "@[A-Za-z0-9_]\+@"
+
+" make targets
+syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:$"me=e-1
+syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:[^=]"me=e-2
+
+syn region makeTarget transparent matchgroup=makeTarget
+ \ start="^[~A-Za-z0-9_./$(){}%-][A-Za-z0-9_./\t ${}()%-]*&\?:\?:\{1,2}[^:=]"rs=e-1
+ \ end="[^\\]$"
+ \ keepend contains=makeIdent,makeSpecTarget,makeNextLine,makeComment,makeDString
+ \ skipnl nextGroup=makeCommands
+syn match makeTarget "^[~A-Za-z0-9_./$(){}%*@-][A-Za-z0-9_./\t $(){}%*@-]*&\?::\=\s*$"
+ \ contains=makeIdent,makeSpecTarget,makeComment
+ \ skipnl nextgroup=makeCommands,makeCommandError
+
+syn region makeSpecTarget transparent matchgroup=makeSpecTarget
+ \ start="^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\|ONESHELL\)\>\s*:\{1,2}[^:=]"rs=e-1
+ \ end="[^\\]$" keepend
+ \ contains=makeIdent,makeSpecTarget,makeNextLine,makeComment skipnl nextGroup=makeCommands
+syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\|ONESHELL\)\>\s*::\=\s*$"
+ \ contains=makeIdent,makeComment
+ \ skipnl nextgroup=makeCommands,makeCommandError
+
+syn match makeCommandError "^\s\+\S.*" contained
+syn region makeCommands contained start=";"hs=s+1 start="^\t"
+ \ end="^[^\t#]"me=e-1,re=e-1 end="^$"
+ \ contains=makeCmdNextLine,makeSpecial,makeComment,makeIdent,makePreCondit,makeDefine,makeDString,makeSString
+ \ nextgroup=makeCommandError
+syn match makeCmdNextLine "\\\n."he=e-1 contained
+
+" some directives
+syn match makePreCondit "^ *\(ifn\=\(eq\|def\)\>\|else\(\s\+ifn\=\(eq\|def\)\)\=\>\|endif\>\)"
+syn match makeInclude "^ *[-s]\=include\s.*$"
+syn match makeStatement "^ *vpath"
+syn match makeExport "^ *\(export\|unexport\)\>"
+syn match makeOverride "^ *override\>"
+" Statements / Functions (GNU make)
+syn match makeStatement contained "(\(abspath\|addprefix\|addsuffix\|and\|basename\|call\|dir\|error\|eval\|file\|filter-out\|filter\|findstring\|firstword\|flavor\|foreach\|guile\|if\|info\|join\|lastword\|notdir\|or\|origin\|patsubst\|realpath\|shell\|sort\|strip\|subst\|suffix\|value\|warning\|wildcard\|word\|wordlist\|words\)\>"ms=s+1
+
+" Comment
+if exists("make_microsoft")
+ syn match makeComment "#.*" contains=@Spell,makeTodo
+elseif !exists("make_no_comments")
+ syn region makeComment start="#" end="^$" end="[^\\]$" keepend contains=@Spell,makeTodo
+ syn match makeComment "#$" contains=@Spell
+endif
+syn keyword makeTodo TODO FIXME XXX contained
+
+" match escaped quotes and any other escaped character
+" except for $, as a backslash in front of a $ does
+" not make it a standard character, but instead it will
+" still act as the beginning of a variable
+" The escaped char is not highlightet currently
+syn match makeEscapedChar "\\[^$]"
+
+
+syn region makeDString start=+\(\\\)\@<!"+ skip=+\\.+ end=+"+ contained contains=makeIdent
+syn region makeSString start=+\(\\\)\@<!'+ skip=+\\.+ end=+'+ contained contains=makeIdent
+syn region makeBString start=+\(\\\)\@<!`+ skip=+\\.+ end=+`+ contains=makeIdent,makeSString,makeDString,makeNextLine
+
+" Syncing
+syn sync minlines=20 maxlines=200
+
+" Sync on Make command block region: When searching backwards hits a line that
+" can't be a command or a comment, use makeCommands if it looks like a target,
+" NONE otherwise.
+syn sync match makeCommandSync groupthere NONE "^[^\t#]"
+syn sync match makeCommandSync groupthere makeCommands "^[A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}[^:=]"
+syn sync match makeCommandSync groupthere makeCommands "^[A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}\s*$"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link makeNextLine makeSpecial
+hi def link makeCmdNextLine makeSpecial
+hi link makeOverride makeStatement
+hi link makeExport makeStatement
+
+hi def link makeSpecTarget Statement
+if !exists("make_no_commands")
+hi def link makeCommands Number
+endif
+hi def link makeImplicit Function
+hi def link makeTarget Function
+hi def link makeInclude Include
+hi def link makePreCondit PreCondit
+hi def link makeStatement Statement
+hi def link makeIdent Identifier
+hi def link makeSpecial Special
+hi def link makeComment Comment
+hi def link makeDString String
+hi def link makeSString String
+hi def link makeBString Function
+hi def link makeError Error
+hi def link makeTodo Todo
+hi def link makeDefine Define
+hi def link makeCommandError Error
+hi def link makeConfig PreCondit
+
+let b:current_syntax = "make"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/mallard.vim b/runtime/syntax/mallard.vim
new file mode 100644
index 0000000..b2a77b0
--- /dev/null
+++ b/runtime/syntax/mallard.vim
@@ -0,0 +1,37 @@
+" Vim syntax file
+" Language: Mallard
+" Maintainer: Jaromir Hradilek <jhradilek@gmail.com>
+" URL: https://github.com/jhradilek/vim-syntax
+" Last Change: 11 February 2013
+" Description: A syntax file for the Mallard markup language according to
+" Mallard 1.0 DRAFT as of 2013-02-11.
+
+if exists("b:current_syntax")
+ finish
+endif
+
+do Syntax xml
+syn cluster xmlTagHook add=mallardTagName
+syn spell toplevel
+syn case match
+
+syn keyword mallardTagName app cite cmd code col colgroup comment contained
+syn keyword mallardTagName credit desc em email example figure contained
+syn keyword mallardTagName file gui guiseq info input item key contained
+syn keyword mallardTagName keyseq license link links list listing contained
+syn keyword mallardTagName media name note output p page quote contained
+syn keyword mallardTagName revision screen section span steps contained
+syn keyword mallardTagName subtitle synopsis sys table tbody td contained
+syn keyword mallardTagName terms tfoot thead title tr tree var contained
+syn keyword mallardTagName years contained
+
+syn region mallardComment start="<comment\>" end="</comment>"me=e-10 contains=xmlTag,xmlNamespace,xmlTagName,xmlEndTag,xmlRegion,xmlEntity,@Spell keepend
+syn region mallardEmphasis start="<em\>" end="</em>"me=e-5 contains=xmlTag,xmlNamespace,xmlTagName,xmlEndTag,xmlRegion,xmlEntity,@Spell keepend
+syn region mallardTitle start="<title\>" end="</title>"me=e-8 contains=xmlTag,xmlNamespace,xmlTagName,xmlEndTag,xmlRegion,xmlEntity,@Spell keepend
+
+hi def link mallardComment Comment
+hi def link mallardTagName Statement
+hi def link mallardTitle Title
+hi def mallardEmphasis term=italic cterm=italic gui=italic
+
+let b:current_syntax = "mallard"
diff --git a/runtime/syntax/man.vim b/runtime/syntax/man.vim
new file mode 100644
index 0000000..4e08cd7
--- /dev/null
+++ b/runtime/syntax/man.vim
@@ -0,0 +1,56 @@
+" Vim syntax file
+" Language: Man page
+" Maintainer: Jason Franklin <vim@justemail.net>
+" Previous Maintainer: SungHyun Nam <goweol@gmail.com>
+" Previous Maintainer: Gautam H. Mudunuri <gmudunur@informatica.com>
+" Version Info:
+" Last Change: 2020 Sep 19
+
+" Additional highlighting by Johannes Tanzler <johannes.tanzler@aon.at>:
+" * manSubHeading
+" * manSynopsis (only for sections 2 and 3)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Get the CTRL-H syntax to handle backspaced text
+runtime! syntax/ctrlh.vim
+
+syn case ignore
+
+syn match manReference "\f\+([1-9][a-z]\=)"
+syn match manSectionHeading "^\a.*$"
+syn match manSubHeading "^\s\{3\}\a.*$"
+syn match manOptionDesc "^\s*[+-][a-z0-9]\S*"
+syn match manLongOptionDesc "^\s*--[a-z0-9-]\S*"
+" syn match manHistory "^[a-z].*last change.*$"
+
+syn match manHeader '\%1l.*'
+exe 'syn match manFooter ''\%' . line('$') . 'l.*'''
+
+if getline(1) =~ '^[a-zA-Z_]\+([23])'
+ syntax include @cCode <sfile>:p:h/c.vim
+ syn match manCFuncDefinition display "\<\h\w*\>\s*("me=e-1 contained
+ syn region manSynopsis start="^SYNOPSIS"hs=s+8 end="^\u\+\s*$"me=e-12 keepend contains=manSectionHeading,@cCode,manCFuncDefinition
+endif
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link manHeader Title
+hi def link manFooter PreProc
+
+hi def link manSectionHeading Statement
+hi def link manOptionDesc Constant
+hi def link manLongOptionDesc Constant
+hi def link manReference PreProc
+hi def link manSubHeading Function
+hi def link manCFuncDefinition Function
+
+
+let b:current_syntax = "man"
+
+" vim:ts=8 sts=2 sw=2:
diff --git a/runtime/syntax/manconf.vim b/runtime/syntax/manconf.vim
new file mode 100644
index 0000000..2c17568
--- /dev/null
+++ b/runtime/syntax/manconf.vim
@@ -0,0 +1,117 @@
+" Vim syntax file
+" Language: man.conf(5) - man configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword manconfTodo contained TODO FIXME XXX NOTE
+
+syn region manconfComment display oneline start='^#' end='$'
+ \ contains=manconfTodo,@Spell
+
+if !has("win32") && $OSTYPE =~ 'bsd'
+ syn match manconfBegin display '^'
+ \ nextgroup=manconfKeyword,manconfSection,
+ \ manconfComment skipwhite
+
+ syn keyword manconfKeyword contained _build _crunch
+ \ nextgroup=manconfExtCmd skipwhite
+
+ syn keyword manconfKeyword contained _suffix
+ \ nextgroup=manconfExt skipwhite
+
+ syn keyword manconfKeyword contained _crunch
+
+ syn keyword manconfKeyword contained _subdir _version _whatdb
+ \ nextgroup=manconfPaths skipwhite
+
+ syn match manconfExtCmd contained display '\.\S\+'
+ \ nextgroup=manconfPaths skipwhite
+
+ syn match manconfSection contained '[^#_ \t]\S*'
+ \ nextgroup=manconfPaths skipwhite
+
+ syn keyword manconfSection contained _default
+ \ nextgroup=manconfPaths skipwhite
+
+ syn match manconfPaths contained display '\S\+'
+ \ nextgroup=manconfPaths skipwhite
+
+ syn match manconfExt contained display '\.\S\+'
+
+ hi def link manconfExtCmd Type
+ hi def link manconfSection Identifier
+ hi def link manconfPaths String
+else
+ syn match manconfBegin display '^'
+ \ nextgroup=manconfBoolean,manconfKeyword,
+ \ manconfDecompress,manconfComment skipwhite
+
+ syn keyword manconfBoolean contained FSSTND FHS NOAUTOPATH NOCACHE
+
+ syn keyword manconfKeyword contained MANBIN
+ \ nextgroup=manconfPath skipwhite
+
+ syn keyword manconfKeyword contained MANPATH MANPATH_MAP
+ \ nextgroup=manconfFirstPath skipwhite
+
+ syn keyword manconfKeyword contained APROPOS WHATIS TROFF NROFF JNROFF EQN
+ \ NEQN JNEQN TBL COL REFER PIC VGRIND GRAP
+ \ PAGER BROWSER HTMLPAGER CMP CAT COMPRESS
+ \ DECOMPRESS MANDEFOPTIONS
+ \ nextgroup=manconfCommand skipwhite
+
+ syn keyword manconfKeyword contained COMPRESS_EXT
+ \ nextgroup=manconfExt skipwhite
+
+ syn keyword manconfKeyword contained MANSECT
+ \ nextgroup=manconfManSect skipwhite
+
+ syn match manconfPath contained display '\S\+'
+
+ syn match manconfFirstPath contained display '\S\+'
+ \ nextgroup=manconfSecondPath skipwhite
+
+ syn match manconfSecondPath contained display '\S\+'
+
+ syn match manconfCommand contained display '\%(/[^/ \t]\+\)\+'
+ \ nextgroup=manconfCommandOpt skipwhite
+
+ syn match manconfCommandOpt contained display '\S\+'
+ \ nextgroup=manconfCommandOpt skipwhite
+
+ syn match manconfExt contained display '\.\S\+'
+
+ syn match manconfManSect contained '[^:]\+' nextgroup=manconfManSectSep
+
+ syn match manconfManSectSep contained ':' nextgroup=manconfManSect
+
+ syn match manconfDecompress contained '\.\S\+'
+ \ nextgroup=manconfCommand skipwhite
+
+ hi def link manconfBoolean Boolean
+ hi def link manconfPath String
+ hi def link manconfFirstPath manconfPath
+ hi def link manconfSecondPath manconfPath
+ hi def link manconfCommand String
+ hi def link manconfCommandOpt Special
+ hi def link manconfManSect Identifier
+ hi def link manconfManSectSep Delimiter
+ hi def link manconfDecompress Type
+endif
+
+hi def link manconfTodo Todo
+hi def link manconfComment Comment
+hi def link manconfKeyword Keyword
+hi def link manconfExt Type
+
+let b:current_syntax = "manconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/manual.vim b/runtime/syntax/manual.vim
new file mode 100644
index 0000000..c0e53fa
--- /dev/null
+++ b/runtime/syntax/manual.vim
@@ -0,0 +1,29 @@
+" Vim syntax support file
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last Change: 2016 Feb 01
+
+" This file is used for ":syntax manual".
+" It installs the Syntax autocommands, but no the FileType autocommands.
+
+if !has("syntax")
+ finish
+endif
+
+" Load the Syntax autocommands and set the default methods for highlighting.
+if !exists("syntax_on")
+ so <sfile>:p:h/synload.vim
+endif
+
+let syntax_manual = 1
+
+" Overrule the connection between FileType and Syntax autocommands. This sets
+" the syntax when the file type is detected, without changing the value.
+augroup syntaxset
+ au! FileType * exe "set syntax=" . &syntax
+augroup END
+
+" If the GUI is already running, may still need to install the FileType menu.
+" Don't do it when the 'M' flag is included in 'guioptions'.
+if has("menu") && has("gui_running") && !exists("did_install_syntax_menu") && &guioptions !~# 'M'
+ source $VIMRUNTIME/menu.vim
+endif
diff --git a/runtime/syntax/maple.vim b/runtime/syntax/maple.vim
new file mode 100644
index 0000000..78f2b4e
--- /dev/null
+++ b/runtime/syntax/maple.vim
@@ -0,0 +1,622 @@
+" Vim syntax file
+" Language: Maple V (based on release 4)
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Last Change: Mar 26, 2019
+" Version: 17
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_MAPLE
+"
+" Package Function Selection: {{{1
+" Because there are a lot of packages, and because of the potential for namespace
+" clashes, this version of <maple.vim> needs the user to select which, if any,
+" package functions should be highlighted. Select your packages and put into your
+" <.vimrc> none or more of the lines following let ...=1 lines:
+"
+" if exists("mvpkg_all")
+" ...
+" endif
+"
+" *OR* let mvpkg_all=1
+
+" This syntax file contains all the keywords and top-level packages of Maple 9.5
+" but only the contents of packages of Maple V Release 4, and the top-level
+" routines of Release 4. <Jacques Carette - carette@mcmaster.ca>
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Iskeyword Effects: {{{1
+if (v:version == 704 && has("patch-7.4.1142")) || v:version > 704
+ syn iskeyword $,48-57,_,a-z,@-Z
+else
+ setl isk=$,48-57,_,a-z,@-Z
+endif
+
+" Package Selection: {{{1
+" allow user to simply select all packages for highlighting
+if exists("mvpkg_all")
+ let mv_DEtools = 1
+ let mv_Galois = 1
+ let mv_GaussInt = 1
+ let mv_LREtools = 1
+ let mv_combinat = 1
+ let mv_combstruct = 1
+ let mv_difforms = 1
+ let mv_finance = 1
+ let mv_genfunc = 1
+ let mv_geometry = 1
+ let mv_grobner = 1
+ let mv_group = 1
+ let mv_inttrans = 1
+ let mv_liesymm = 1
+ let mv_linalg = 1
+ let mv_logic = 1
+ let mv_networks = 1
+ let mv_numapprox = 1
+ let mv_numtheory = 1
+ let mv_orthopoly = 1
+ let mv_padic = 1
+ let mv_plots = 1
+ let mv_plottools = 1
+ let mv_powseries = 1
+ let mv_process = 1
+ let mv_simplex = 1
+ let mv_stats = 1
+ let mv_student = 1
+ let mv_sumtools = 1
+ let mv_tensor = 1
+ let mv_totorder = 1
+endif
+
+" Parenthesis/curly/brace sanity checker: {{{1
+syn case match
+
+" parenthesis/curly/brace sanity checker
+syn region mvZone matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" transparent contains=ALLBUT,mvError,mvBraceError,mvCurlyError
+syn region mvZone matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" transparent contains=ALLBUT,mvError,mvBraceError,mvParenError
+syn region mvZone matchgroup=Delimiter start="\[" matchgroup=Delimiter end="]" transparent contains=ALLBUT,mvError,mvCurlyError,mvParenError
+syn match mvError "[)\]}]"
+syn match mvBraceError "[)}]" contained
+syn match mvCurlyError "[)\]]" contained
+syn match mvParenError "[\]}]" contained
+syn match mvComma "[,;:]"
+syn match mvSemiError "[;:]" contained
+syn match mvDcolon "::"
+
+" Maple Packages, updated for Maple 9.5
+syn keyword mvPackage algcurves ArrayTools Cache codegen
+syn keyword mvPackage CodeGeneration CodeTools combinat combstruct
+syn keyword mvPackage ContextMenu CurveFitting DEtools diffalg
+syn keyword mvPackage difforms DiscreteTransforms Domains ExternalCalling
+syn keyword mvPackage FileTools finance GaussInt genfunc
+syn keyword mvPackage geom3d geometry gfun Groebner
+syn keyword mvPackage group hashmset IntegerRelations inttrans
+syn keyword mvPackage LargeExpressions LibraryTools liesymm linalg
+syn keyword mvPackage LinearAlgebra LinearFunctionalSystems LinearOperators
+syn keyword mvPackage ListTools Logic LREtools Maplets
+syn keyword mvPackage MathematicalFunctions MathML Matlab
+syn keyword mvPackage MatrixPolynomialAlgebra MmaTranslator networks
+syn keyword mvPackage numapprox numtheory Optimization OreTools
+syn keyword mvPackage Ore_algebra OrthogonalSeries orthopoly padic
+syn keyword mvPackage PDEtools plots plottools PolynomialIdeals
+syn keyword mvPackage PolynomialTools powseries process QDifferenceEquations
+syn keyword mvPackage RandomTools RationalNormalForms RealDomain RootFinding
+syn keyword mvPackage ScientificConstants ScientificErrorAnalysis simplex
+syn keyword mvPackage Slode SNAP Sockets SoftwareMetrics
+syn keyword mvPackage SolveTools Spread stats StringTools
+syn keyword mvPackage Student student sumtools SumTools
+syn keyword mvPackage tensor TypeTools Units VariationalCalculus
+syn keyword mvPackage VectorCalculus Worksheet XMLTools
+
+" Language Support: {{{1
+syn keyword mvTodo contained COMBAK FIXME TODO XXX
+if exists("g:mapleversion") && g:mapleversion < 9
+ syn region mvString start=+`+ skip=+``+ end=+`+ keepend contains=mvTodo,@Spell
+ syn region mvString start=+"+ skip=+""+ end=+"+ keepend contains=@Spell
+ syn region mvDelayEval start=+'+ end=+'+ keepend contains=ALLBUT,mvError,mvBraceError,mvCurlyError,mvParenError,mvSemiError
+ syn match mvVarAssign "[a-zA-Z_][a-zA-Z_0-9]*[ \t]*:=" contains=mvAssign
+ syn match mvAssign ":=" contained
+else
+ syn region mvName start=+`+ skip=+``+ end=+`+ keepend contains=mvTodo
+ syn region mvString start=+"+ skip=+""+ end=+"+ keepend contains=@Spell
+ syn region mvDelayEval start=+'+ end=+'+ keepend contains=ALLBUT,mvError,mvBraceError,mvCurlyError,mvParenError
+ syn match mvDelim "[;:]" display
+ syn match mvAssign ":="
+endif
+
+" Lower-Priority Operators: {{{1
+syn match mvOper "\."
+
+" Number handling: {{{1
+syn match mvNumber "\<\d\+" " integer
+ syn match mvNumber "[-+]\=\.\d\+" " . integer
+syn match mvNumber "\<\d\+\.\d\+" " integer . integer
+syn match mvNumber "\<\d\+\." " integer .
+syn match mvNumber "\<\d\+\.\." contains=mvRange " integer ..
+
+syn match mvNumber "\<\d\+e[-+]\=\d\+" " integer e [-+] integer
+syn match mvNumber "[-+]\=\.\d\+e[-+]\=\d\+" " . integer e [-+] integer
+syn match mvNumber "\<\d\+\.\d*e[-+]\=\d\+" " integer . [integer] e [-+] integer
+
+syn match mvNumber "[-+]\d\+" " integer
+syn match mvNumber "[-+]\d\+\.\d\+" " integer . integer
+syn match mvNumber "[-+]\d\+\." " integer .
+syn match mvNumber "[-+]\d\+\.\." contains=mvRange " integer ..
+
+syn match mvNumber "[-+]\d\+e[-+]\=\d\+" " integer e [-+] integer
+syn match mvNumber "[-+]\d\+\.\d*e[-+]\=\d\+" " integer . [integer] e [-+] integer
+
+syn match mvRange "\.\."
+
+" Operators: {{{1
+syn keyword mvOper and not or xor implies union intersect subset minus mod
+syn match mvOper "<>\|[<>]=\|[<>]\|="
+syn match mvOper "&+\|&-\|&\*\|&\/\|&"
+syn match mvError "\.\.\."
+
+" MapleV Statements: ? statement {{{1
+
+" MapleV Statements: ? statement
+" Split into booleans, conditionals, operators, repeat-logic, etc
+syn keyword mvBool true false FAIL
+syn keyword mvCond elif else fi if then
+syn match mvCond "end\s\+if"
+
+syn keyword mvRepeat by for in to
+syn keyword mvRepeat do from od while
+syn match mvRepeat "end\s\+do"
+
+syn keyword mvSpecial NULL
+syn match mvSpecial "\[\]\|{}"
+
+if exists("g:mapleversion") && g:mapleversion < 9
+ syn keyword mvStatement Order fail options read save
+ syn keyword mvStatement break local point remember stop
+ syn keyword mvStatement done mod proc restart with
+ syn keyword mvStatement end mods quit return
+ syn keyword mvStatement error next
+else
+ syn keyword mvStatement option options read save
+ syn keyword mvStatement break local remember stop
+ syn keyword mvStatement done mod proc restart
+ syn keyword mvStatement end mods quit return
+ syn keyword mvStatement error next try catch
+ syn keyword mvStatement finally assuming global export
+ syn keyword mvStatement module description use
+endif
+
+" Builtin Constants: ? constants {{{1
+syn keyword mvConstant Catalan I gamma infinity
+syn keyword mvConstant Pi
+
+" Comments: DEBUG, if in a comment, is specially highlighted. {{{1
+syn keyword mvDebug contained DEBUG
+syn cluster mvCommentGroup contains=mvTodo,mvDebug,@Spell
+syn match mvComment "#.*$" contains=@mvCommentGroup
+
+" Basic Library Functions: ? index[function]
+syn keyword mvLibrary $ @ @@ ERROR
+syn keyword mvLibrary AFactor KelvinHer arctan factor log rhs
+syn keyword mvLibrary AFactors KelvinKei arctanh factors log10 root
+syn keyword mvLibrary AiryAi KelvinKer argument fclose lprint roots
+syn keyword mvLibrary AiryBi LambertW array feof map round
+syn keyword mvLibrary AngerJ Lcm assign fflush map2 rsolve
+syn keyword mvLibrary Berlekamp LegendreE assigned filepos match savelib
+syn keyword mvLibrary BesselI LegendreEc asspar fixdiv matrix scanf
+syn keyword mvLibrary BesselJ LegendreEc1 assume float max searchtext
+syn keyword mvLibrary BesselK LegendreF asubs floor maximize sec
+syn keyword mvLibrary BesselY LegendreKc asympt fnormal maxnorm sech
+syn keyword mvLibrary Beta LegendreKc1 attribute fopen maxorder select
+syn keyword mvLibrary C LegendrePi bernstein forget member seq
+syn keyword mvLibrary Chi LegendrePic branches fortran min series
+syn keyword mvLibrary Ci LegendrePic1 bspline fprintf minimize setattribute
+syn keyword mvLibrary CompSeq Li cat frac minpoly shake
+syn keyword mvLibrary Content Linsolve ceil freeze modp showprofile
+syn keyword mvLibrary D MOLS chrem fremove modp1 showtime
+syn keyword mvLibrary DESol Maple_floats close frontend modp2 sign
+syn keyword mvLibrary Det MeijerG close fscanf modpol signum
+syn keyword mvLibrary Diff Norm coeff fsolve mods simplify
+syn keyword mvLibrary Dirac Normal coeffs galois msolve sin
+syn keyword mvLibrary DistDeg Nullspace coeftayl gc mtaylor singular
+syn keyword mvLibrary Divide Power collect gcd mul sinh
+syn keyword mvLibrary Ei Powmod combine gcdex nextprime sinterp
+syn keyword mvLibrary Eigenvals Prem commutat genpoly nops solve
+syn keyword mvLibrary EllipticCE Primfield comparray harmonic norm sort
+syn keyword mvLibrary EllipticCK Primitive compoly has normal sparse
+syn keyword mvLibrary EllipticCPi Primpart conjugate hasfun numboccur spline
+syn keyword mvLibrary EllipticE ProbSplit content hasoption numer split
+syn keyword mvLibrary EllipticF Product convergs hastype op splits
+syn keyword mvLibrary EllipticK Psi convert heap open sprem
+syn keyword mvLibrary EllipticModulus Quo coords history optimize sprintf
+syn keyword mvLibrary EllipticNome RESol copy hypergeom order sqrfree
+syn keyword mvLibrary EllipticPi Randpoly cos iFFT parse sqrt
+syn keyword mvLibrary Eval Randprime cosh icontent pclose sscanf
+syn keyword mvLibrary Expand Ratrecon cost identity pclose ssystem
+syn keyword mvLibrary FFT Re cot igcd pdesolve stack
+syn keyword mvLibrary Factor Rem coth igcdex piecewise sturm
+syn keyword mvLibrary Factors Resultant csc ilcm plot sturmseq
+syn keyword mvLibrary FresnelC RootOf csch ilog plot3d subs
+syn keyword mvLibrary FresnelS Roots csgn ilog10 plotsetup subsop
+syn keyword mvLibrary Fresnelf SPrem dawson implicitdiff pochhammer substring
+syn keyword mvLibrary Fresnelg Searchtext define indets pointto sum
+syn keyword mvLibrary Frobenius Shi degree index poisson surd
+syn keyword mvLibrary GAMMA Si denom indexed polar symmdiff
+syn keyword mvLibrary GaussAGM Smith depends indices polylog symmetric
+syn keyword mvLibrary Gaussejord Sqrfree diagonal inifcn polynom system
+syn keyword mvLibrary Gausselim Ssi diff ininame powmod table
+syn keyword mvLibrary Gcd StruveH dilog initialize prem tan
+syn keyword mvLibrary Gcdex StruveL dinterp insert prevprime tanh
+syn keyword mvLibrary HankelH1 Sum disassemble int primpart testeq
+syn keyword mvLibrary HankelH2 Svd discont interface print testfloat
+syn keyword mvLibrary Heaviside TEXT discrim interp printf thaw
+syn keyword mvLibrary Hermite Trace dismantle invfunc procbody thiele
+syn keyword mvLibrary Im WeberE divide invztrans procmake time
+syn keyword mvLibrary Indep WeierstrassP dsolve iostatus product translate
+syn keyword mvLibrary Interp WeierstrassPPrime eliminate iperfpow proot traperror
+syn keyword mvLibrary Inverse WeierstrassSigma ellipsoid iquo property trigsubs
+syn keyword mvLibrary Irreduc WeierstrassZeta entries iratrecon protect trunc
+syn keyword mvLibrary Issimilar Zeta eqn irem psqrt type
+syn keyword mvLibrary JacobiAM abs erf iroot quo typematch
+syn keyword mvLibrary JacobiCD add erfc irreduc radnormal unames
+syn keyword mvLibrary JacobiCN addcoords eulermac iscont radsimp unapply
+syn keyword mvLibrary JacobiCS addressof eval isdifferentiable rand unassign
+syn keyword mvLibrary JacobiDC algebraic evala isolate randomize unload
+syn keyword mvLibrary JacobiDN algsubs evalapply ispoly randpoly unprotect
+syn keyword mvLibrary JacobiDS alias evalb isqrfree range updatesR4
+syn keyword mvLibrary JacobiNC allvalues evalc isqrt rationalize userinfo
+syn keyword mvLibrary JacobiND anames evalf issqr ratrecon value
+syn keyword mvLibrary JacobiNS antisymm evalfint latex readbytes vector
+syn keyword mvLibrary JacobiSC applyop evalgf lattice readdata verify
+syn keyword mvLibrary JacobiSD arccos evalhf lcm readlib whattype
+syn keyword mvLibrary JacobiSN arccosh evalm lcoeff readline with
+syn keyword mvLibrary JacobiTheta1 arccot evaln leadterm readstat writebytes
+syn keyword mvLibrary JacobiTheta2 arccoth evalr length realroot writedata
+syn keyword mvLibrary JacobiTheta3 arccsc exp lexorder recipoly writeline
+syn keyword mvLibrary JacobiTheta4 arccsch expand lhs rem writestat
+syn keyword mvLibrary JacobiZeta arcsec expandoff limit remove writeto
+syn keyword mvLibrary KelvinBei arcsech expandon ln residue zip
+syn keyword mvLibrary KelvinBer arcsin extract lnGAMMA resultant ztrans
+syn keyword mvLibrary KelvinHei arcsinh
+
+
+" == PACKAGES ======================================================= {{{1
+" Note: highlighting of package functions is now user-selectable by package.
+
+" Package: DEtools differential equations tools {{{2
+if exists("mv_DEtools")
+ syn keyword mvPkg_DEtools DEnormal Dchangevar autonomous dfieldplot reduceOrder untranslate
+ syn keyword mvPkg_DEtools DEplot PDEchangecoords convertAlg indicialeq regularsp varparam
+ syn keyword mvPkg_DEtools DEplot3d PDEplot convertsys phaseportrait translate
+endif
+
+" Package: Domains: create domains of computation {{{2
+if exists("mv_Domains")
+endif
+
+" Package: GF: Galois Fields {{{2
+if exists("mv_GF")
+ syn keyword mvPkg_Galois galois
+endif
+
+" Package: GaussInt: Gaussian Integers {{{2
+if exists("mv_GaussInt")
+ syn keyword mvPkg_GaussInt GIbasis GIfactor GIissqr GInorm GIquadres GIsmith
+ syn keyword mvPkg_GaussInt GIchrem GIfactors GIlcm GInormal GIquo GIsqrfree
+ syn keyword mvPkg_GaussInt GIdivisor GIgcd GImcmbine GIorder GIrem GIsqrt
+ syn keyword mvPkg_GaussInt GIfacpoly GIgcdex GInearest GIphi GIroots GIunitnormal
+ syn keyword mvPkg_GaussInt GIfacset GIhermite GInodiv GIprime GIsieve
+endif
+
+" Package: LREtools: manipulate linear recurrence relations {{{2
+if exists("mv_LREtools")
+ syn keyword mvPkg_LREtools REcontent REprimpart REtodelta delta hypergeomsols ratpolysols
+ syn keyword mvPkg_LREtools REcreate REreduceorder REtoproc dispersion polysols shift
+ syn keyword mvPkg_LREtools REplot REtoDE constcoeffsol
+endif
+
+" Package: combinat: combinatorial functions {{{2
+if exists("mv_combinat")
+ syn keyword mvPkg_combinat Chi composition graycode numbcomb permute randperm
+ syn keyword mvPkg_combinat bell conjpart inttovec numbcomp powerset stirling1
+ syn keyword mvPkg_combinat binomial decodepart lastpart numbpart prevpart stirling2
+ syn keyword mvPkg_combinat cartprod encodepart multinomial numbperm randcomb subsets
+ syn keyword mvPkg_combinat character fibonacci nextpart partition randpart vectoint
+ syn keyword mvPkg_combinat choose firstpart
+endif
+
+" Package: combstruct: combinatorial structures {{{2
+if exists("mv_combstruct")
+ syn keyword mvPkg_combstruct allstructs draw iterstructs options specification structures
+ syn keyword mvPkg_combstruct count finished nextstruct
+endif
+
+" Package: difforms: differential forms {{{2
+if exists("mv_difforms")
+ syn keyword mvPkg_difforms const defform formpart parity scalarpart wdegree
+ syn keyword mvPkg_difforms d form mixpar scalar simpform wedge
+endif
+
+" Package: finance: financial mathematics {{{2
+if exists("mv_finance")
+ syn keyword mvPkg_finance amortization cashflows futurevalue growingperpetuity mv_finance presentvalue
+ syn keyword mvPkg_finance annuity effectiverate growingannuity levelcoupon perpetuity yieldtomaturity
+ syn keyword mvPkg_finance blackscholes
+endif
+
+" Package: genfunc: rational generating functions {{{2
+if exists("mv_genfunc")
+ syn keyword mvPkg_genfunc rgf_charseq rgf_expand rgf_hybrid rgf_pfrac rgf_sequence rgf_term
+ syn keyword mvPkg_genfunc rgf_encode rgf_findrecur rgf_norm rgf_relate rgf_simp termscale
+endif
+
+" Package: geometry: Euclidean geometry {{{2
+if exists("mv_geometry")
+ syn keyword mvPkg_geometry circle dsegment hyperbola parabola segment triangle
+ syn keyword mvPkg_geometry conic ellipse line point square
+endif
+
+" Package: grobner: Grobner bases {{{2
+if exists("mv_grobner")
+ syn keyword mvPkg_grobner finduni gbasis leadmon normalf solvable spoly
+ syn keyword mvPkg_grobner finite gsolve
+endif
+
+" Package: group: permutation and finitely-presented groups {{{2
+if exists("mv_group")
+ syn keyword mvPkg_group DerivedS areconjugate cosets grouporder issubgroup permrep
+ syn keyword mvPkg_group LCS center cosrep inter mulperms pres
+ syn keyword mvPkg_group NormalClosure centralizer derived invperm normalizer subgrel
+ syn keyword mvPkg_group RandElement convert grelgroup isabelian orbit type
+ syn keyword mvPkg_group Sylow core groupmember isnormal permgroup
+endif
+
+" Package: inttrans: integral transforms {{{2
+if exists("mv_inttrans")
+ syn keyword mvPkg_inttrans addtable fouriercos hankel invfourier invlaplace mellin
+ syn keyword mvPkg_inttrans fourier fouriersin hilbert invhilbert laplace
+endif
+
+" Package: liesymm: Lie symmetries {{{2
+if exists("mv_liesymm")
+ syn keyword mvPkg_liesymm &^ TD depvars getform mixpar vfix
+ syn keyword mvPkg_liesymm &mod annul determine hasclosure prolong wcollect
+ syn keyword mvPkg_liesymm Eta autosimp dvalue hook reduce wdegree
+ syn keyword mvPkg_liesymm Lie close extvars indepvars setup wedgeset
+ syn keyword mvPkg_liesymm Lrank d getcoeff makeforms translate wsubs
+endif
+
+" Package: linalg: Linear algebra {{{2
+if exists("mv_linalg")
+ syn keyword mvPkg_linalg GramSchmidt coldim equal indexfunc mulcol singval
+ syn keyword mvPkg_linalg JordanBlock colspace exponential innerprod multiply smith
+ syn keyword mvPkg_linalg LUdecomp colspan extend intbasis norm stack
+ syn keyword mvPkg_linalg QRdecomp companion ffgausselim inverse normalize submatrix
+ syn keyword mvPkg_linalg addcol cond fibonacci ismith orthog subvector
+ syn keyword mvPkg_linalg addrow copyinto forwardsub issimilar permanent sumbasis
+ syn keyword mvPkg_linalg adjoint crossprod frobenius iszero pivot swapcol
+ syn keyword mvPkg_linalg angle curl gausselim jacobian potential swaprow
+ syn keyword mvPkg_linalg augment definite gaussjord jordan randmatrix sylvester
+ syn keyword mvPkg_linalg backsub delcols geneqns kernel randvector toeplitz
+ syn keyword mvPkg_linalg band delrows genmatrix laplacian rank trace
+ syn keyword mvPkg_linalg basis det grad leastsqrs references transpose
+ syn keyword mvPkg_linalg bezout diag hadamard linsolve row vandermonde
+ syn keyword mvPkg_linalg blockmatrix diverge hermite matadd rowdim vecpotent
+ syn keyword mvPkg_linalg charmat dotprod hessian matrix rowspace vectdim
+ syn keyword mvPkg_linalg charpoly eigenval hilbert minor rowspan vector
+ syn keyword mvPkg_linalg cholesky eigenvect htranspose minpoly scalarmul wronskian
+ syn keyword mvPkg_linalg col entermatrix ihermite
+endif
+
+" Package: logic: Boolean logic {{{2
+if exists("mv_logic")
+ syn keyword mvPkg_logic MOD2 bsimp distrib environ randbool tautology
+ syn keyword mvPkg_logic bequal canon dual frominert satisfy toinert
+endif
+
+" Package: networks: graph networks {{{2
+if exists("mv_networks")
+ syn keyword mvPkg_networks acycpoly connect dinic graph mincut show
+ syn keyword mvPkg_networks addedge connectivity djspantree graphical mindegree shrink
+ syn keyword mvPkg_networks addvertex contract dodecahedron gsimp neighbors span
+ syn keyword mvPkg_networks adjacency countcuts draw gunion new spanpoly
+ syn keyword mvPkg_networks allpairs counttrees duplicate head octahedron spantree
+ syn keyword mvPkg_networks ancestor cube edges icosahedron outdegree tail
+ syn keyword mvPkg_networks arrivals cycle ends incidence path tetrahedron
+ syn keyword mvPkg_networks bicomponents cyclebase eweight incident petersen tuttepoly
+ syn keyword mvPkg_networks charpoly daughter flow indegree random vdegree
+ syn keyword mvPkg_networks chrompoly degreeseq flowpoly induce rank vertices
+ syn keyword mvPkg_networks complement delete fundcyc isplanar rankpoly void
+ syn keyword mvPkg_networks complete departures getlabel maxdegree shortpathtree vweight
+ syn keyword mvPkg_networks components diameter girth
+endif
+
+" Package: numapprox: numerical approximation {{{2
+if exists("mv_numapprox")
+ syn keyword mvPkg_numapprox chebdeg chebsort fnorm laurent minimax remez
+ syn keyword mvPkg_numapprox chebmult chebyshev hornerform laurent pade taylor
+ syn keyword mvPkg_numapprox chebpade confracform infnorm minimax
+endif
+
+" Package: numtheory: number theory {{{2
+if exists("mv_numtheory")
+ syn keyword mvPkg_numtheory B cyclotomic invcfrac mcombine nthconver primroot
+ syn keyword mvPkg_numtheory F divisors invphi mersenne nthdenom quadres
+ syn keyword mvPkg_numtheory GIgcd euler isolve minkowski nthnumer rootsunity
+ syn keyword mvPkg_numtheory J factorEQ isprime mipolys nthpow safeprime
+ syn keyword mvPkg_numtheory L factorset issqrfree mlog order sigma
+ syn keyword mvPkg_numtheory M fermat ithprime mobius pdexpand sq2factor
+ syn keyword mvPkg_numtheory bernoulli ifactor jacobi mroot phi sum2sqr
+ syn keyword mvPkg_numtheory bigomega ifactors kronecker msqrt pprimroot tau
+ syn keyword mvPkg_numtheory cfrac imagunit lambda nearestp prevprime thue
+ syn keyword mvPkg_numtheory cfracpol index legendre nextprime
+endif
+
+" Package: orthopoly: orthogonal polynomials {{{2
+if exists("mv_orthopoly")
+ syn keyword mvPkg_orthopoly G H L P T U
+endif
+
+" Package: padic: p-adic numbers {{{2
+if exists("mv_padic")
+ syn keyword mvPkg_padic evalp function orderp ratvaluep rootp valuep
+ syn keyword mvPkg_padic expansion lcoeffp ordp
+endif
+
+" Package: plots: graphics package {{{2
+if exists("mv_plots")
+ syn keyword mvPkg_plots animate coordplot3d gradplot3d listplot3d polarplot setoptions3d
+ syn keyword mvPkg_plots animate3d cylinderplot implicitplot loglogplot polygonplot spacecurve
+ syn keyword mvPkg_plots changecoords densityplot implicitplot3d logplot polygonplot3d sparsematrixplot
+ syn keyword mvPkg_plots complexplot display inequal matrixplot polyhedraplot sphereplot
+ syn keyword mvPkg_plots complexplot3d display3d listcontplot odeplot replot surfdata
+ syn keyword mvPkg_plots conformal fieldplot listcontplot3d pareto rootlocus textplot
+ syn keyword mvPkg_plots contourplot fieldplot3d listdensityplot pointplot semilogplot textplot3d
+ syn keyword mvPkg_plots contourplot3d gradplot listplot pointplot3d setoptions tubeplot
+ syn keyword mvPkg_plots coordplot
+endif
+
+" Package: plottools: basic graphical objects {{{2
+if exists("mv_plottools")
+ syn keyword mvPkg_plottools arc curve dodecahedron hyperbola pieslice semitorus
+ syn keyword mvPkg_plottools arrow cutin ellipse icosahedron point sphere
+ syn keyword mvPkg_plottools circle cutout ellipticArc line polygon tetrahedron
+ syn keyword mvPkg_plottools cone cylinder hemisphere octahedron rectangle torus
+ syn keyword mvPkg_plottools cuboid disk hexahedron
+endif
+
+" Package: powseries: formal power series {{{2
+if exists("mv_powseries")
+ syn keyword mvPkg_powseries compose multiply powcreate powlog powsolve reversion
+ syn keyword mvPkg_powseries evalpow negative powdiff powpoly powsqrt subtract
+ syn keyword mvPkg_powseries inverse powadd powexp powseries quotient tpsform
+ syn keyword mvPkg_powseries multconst powcos powint powsin
+endif
+
+" Package: process: (Unix)-multi-processing {{{2
+if exists("mv_process")
+ syn keyword mvPkg_process block fork pclose pipe popen wait
+ syn keyword mvPkg_process exec kill
+endif
+
+" Package: simplex: linear optimization {{{2
+if exists("mv_simplex")
+ syn keyword mvPkg_simplex NONNEGATIVE cterm dual maximize pivoteqn setup
+ syn keyword mvPkg_simplex basis define_zero equality minimize pivotvar standardize
+ syn keyword mvPkg_simplex convexhull display feasible pivot ratio
+endif
+
+" Package: stats: statistics {{{2
+if exists("mv_stats")
+ syn keyword mvPkg_stats anova describe fit random statevalf statplots
+endif
+
+" Package: student: student calculus {{{2
+if exists("mv_student")
+ syn keyword mvPkg_student D Product distance isolate middlesum rightsum
+ syn keyword mvPkg_student Diff Sum equate leftbox midpoint showtangent
+ syn keyword mvPkg_student Doubleint Tripleint extrema leftsum minimize simpson
+ syn keyword mvPkg_student Int changevar integrand makeproc minimize slope
+ syn keyword mvPkg_student Limit combine intercept maximize powsubs trapezoid
+ syn keyword mvPkg_student Lineint completesquare intparts middlebox rightbox value
+ syn keyword mvPkg_student Point
+endif
+
+" Package: sumtools: indefinite and definite sums {{{2
+if exists("mv_sumtools")
+ syn keyword mvPkg_sumtools Hypersum extended_gosper hyperrecursion hyperterm sumrecursion sumtohyper
+ syn keyword mvPkg_sumtools Sumtohyper gosper hypersum simpcomb
+endif
+
+" Package: tensor: tensor computations and General Relativity {{{2
+if exists("mv_tensor")
+ syn keyword mvPkg_tensor Christoffel1 Riemann connexF display_allGR get_compts partial_diff
+ syn keyword mvPkg_tensor Christoffel2 RiemannF contract dual get_rank permute_indices
+ syn keyword mvPkg_tensor Einstein Weyl convertNP entermetric invars petrov
+ syn keyword mvPkg_tensor Jacobian act cov_diff exterior_diff invert prod
+ syn keyword mvPkg_tensor Killing_eqns antisymmetrize create exterior_prod lin_com raise
+ syn keyword mvPkg_tensor Levi_Civita change_basis d1metric frame lower symmetrize
+ syn keyword mvPkg_tensor Lie_diff commutator d2metric geodesic_eqns npcurve tensorsGR
+ syn keyword mvPkg_tensor Ricci compare directional_diff get_char npspin transform
+ syn keyword mvPkg_tensor Ricciscalar conj displayGR
+endif
+
+" Package: totorder: total orders on names {{{2
+if exists("mv_totorder")
+ syn keyword mvPkg_totorder forget init ordering tassume tis
+endif
+" =====================================================================
+
+" Highlighting: Define the default highlighting. {{{1
+" Only when an item doesn't have highlighting yet
+if !exists("skip_maplev_syntax_inits")
+
+ " Maple->Maple Links {{{2
+ hi def link mvBraceError mvError
+ hi def link mvCurlyError mvError
+ hi def link mvDebug mvTodo
+ hi def link mvParenError mvError
+ hi def link mvPkg_DEtools mvPkgFunc
+ hi def link mvPkg_Galois mvPkgFunc
+ hi def link mvPkg_GaussInt mvPkgFunc
+ hi def link mvPkg_LREtools mvPkgFunc
+ hi def link mvPkg_combinat mvPkgFunc
+ hi def link mvPkg_combstruct mvPkgFunc
+ hi def link mvPkg_difforms mvPkgFunc
+ hi def link mvPkg_finance mvPkgFunc
+ hi def link mvPkg_genfunc mvPkgFunc
+ hi def link mvPkg_geometry mvPkgFunc
+ hi def link mvPkg_grobner mvPkgFunc
+ hi def link mvPkg_group mvPkgFunc
+ hi def link mvPkg_inttrans mvPkgFunc
+ hi def link mvPkg_liesymm mvPkgFunc
+ hi def link mvPkg_linalg mvPkgFunc
+ hi def link mvPkg_logic mvPkgFunc
+ hi def link mvPkg_networks mvPkgFunc
+ hi def link mvPkg_numapprox mvPkgFunc
+ hi def link mvPkg_numtheory mvPkgFunc
+ hi def link mvPkg_orthopoly mvPkgFunc
+ hi def link mvPkg_padic mvPkgFunc
+ hi def link mvPkg_plots mvPkgFunc
+ hi def link mvPkg_plottools mvPkgFunc
+ hi def link mvPkg_powseries mvPkgFunc
+ hi def link mvPkg_process mvPkgFunc
+ hi def link mvPkg_simplex mvPkgFunc
+ hi def link mvPkg_stats mvPkgFunc
+ hi def link mvPkg_student mvPkgFunc
+ hi def link mvPkg_sumtools mvPkgFunc
+ hi def link mvPkg_tensor mvPkgFunc
+ hi def link mvPkg_totorder mvPkgFunc
+ hi def link mvRange mvOper
+ hi def link mvSemiError mvError
+ hi def link mvDelim Delimiter
+
+ " Maple->Standard Links {{{2
+ hi def link mvAssign Delimiter
+ hi def link mvBool Boolean
+ hi def link mvComma Delimiter
+ hi def link mvComment Comment
+ hi def link mvCond Conditional
+ hi def link mvConstant Number
+ hi def link mvDelayEval Label
+ hi def link mvDcolon Delimiter
+ hi def link mvError Error
+ hi def link mvLibrary Statement
+ hi def link mvNumber Number
+ hi def link mvOper Operator
+ hi def link mvAssign Delimiter
+ hi def link mvPackage Type
+ hi def link mvPkgFunc Function
+ hi def link mvPktOption Special
+ hi def link mvRepeat Repeat
+ hi def link mvSpecial Special
+ hi def link mvStatement Statement
+ hi def link mvName String
+ hi def link mvString String
+ hi def link mvTodo Todo
+
+endif
+
+" Current Syntax: {{{1
+let b:current_syntax = "maple"
+" vim: ts=20 fdm=marker
diff --git a/runtime/syntax/markdown.vim b/runtime/syntax/markdown.vim
new file mode 100644
index 0000000..44187ff
--- /dev/null
+++ b/runtime/syntax/markdown.vim
@@ -0,0 +1,200 @@
+" Vim syntax file
+" Language: Markdown
+" Maintainer: Tim Pope <https://github.com/tpope/vim-markdown>
+" Filenames: *.markdown
+" Last Change: 2022 Oct 13
+
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists('main_syntax')
+ let main_syntax = 'markdown'
+endif
+
+if has('folding')
+ let s:foldmethod = &l:foldmethod
+ let s:foldtext = &l:foldtext
+endif
+let s:iskeyword = &l:iskeyword
+
+runtime! syntax/html.vim
+unlet! b:current_syntax
+
+if !exists('g:markdown_fenced_languages')
+ let g:markdown_fenced_languages = []
+endif
+let s:done_include = {}
+for s:type in map(copy(g:markdown_fenced_languages),'matchstr(v:val,"[^=]*$")')
+ if has_key(s:done_include, matchstr(s:type,'[^.]*'))
+ continue
+ endif
+ if s:type =~ '\.'
+ let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*')
+ endif
+ syn case match
+ exe 'syn include @markdownHighlight_'.tr(s:type,'.','_').' syntax/'.matchstr(s:type,'[^.]*').'.vim'
+ unlet! b:current_syntax
+ let s:done_include[matchstr(s:type,'[^.]*')] = 1
+endfor
+unlet! s:type
+unlet! s:done_include
+
+syn spell toplevel
+if exists('s:foldmethod') && s:foldmethod !=# &l:foldmethod
+ let &l:foldmethod = s:foldmethod
+ unlet s:foldmethod
+endif
+if exists('s:foldtext') && s:foldtext !=# &l:foldtext
+ let &l:foldtext = s:foldtext
+ unlet s:foldtext
+endif
+if s:iskeyword !=# &l:iskeyword
+ let &l:iskeyword = s:iskeyword
+endif
+unlet s:iskeyword
+
+if !exists('g:markdown_minlines')
+ let g:markdown_minlines = 50
+endif
+execute 'syn sync minlines=' . g:markdown_minlines
+syn sync linebreaks=1
+syn case ignore
+
+syn match markdownValid '[<>]\c[a-z/$!]\@!' transparent contains=NONE
+syn match markdownValid '&\%(#\=\w*;\)\@!' transparent contains=NONE
+
+syn match markdownLineStart "^[<@]\@!" nextgroup=@markdownBlock,htmlSpecialChar
+
+syn cluster markdownBlock contains=markdownH1,markdownH2,markdownH3,markdownH4,markdownH5,markdownH6,markdownBlockquote,markdownListMarker,markdownOrderedListMarker,markdownCodeBlock,markdownRule
+syn cluster markdownInline contains=markdownLineBreak,markdownLinkText,markdownItalic,markdownBold,markdownCode,markdownEscape,@htmlTop,markdownError,markdownValid
+
+syn match markdownH1 "^.\+\n=\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink
+syn match markdownH2 "^.\+\n-\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink
+
+syn match markdownHeadingRule "^[=-]\+$" contained
+
+syn region markdownH1 matchgroup=markdownH1Delimiter start=" \{,3}#\s" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
+syn region markdownH2 matchgroup=markdownH2Delimiter start=" \{,3}##\s" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
+syn region markdownH3 matchgroup=markdownH3Delimiter start=" \{,3}###\s" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
+syn region markdownH4 matchgroup=markdownH4Delimiter start=" \{,3}####\s" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
+syn region markdownH5 matchgroup=markdownH5Delimiter start=" \{,3}#####\s" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
+syn region markdownH6 matchgroup=markdownH6Delimiter start=" \{,3}######\s" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
+
+syn match markdownBlockquote ">\%(\s\|$\)" contained nextgroup=@markdownBlock
+
+syn region markdownCodeBlock start="^\n\( \{4,}\|\t\)" end="^\ze \{,3}\S.*$" keepend
+
+" TODO: real nesting
+syn match markdownListMarker "\%(\t\| \{0,4\}\)[-*+]\%(\s\+\S\)\@=" contained
+syn match markdownOrderedListMarker "\%(\t\| \{0,4}\)\<\d\+\.\%(\s\+\S\)\@=" contained
+
+syn match markdownRule "\* *\* *\*[ *]*$" contained
+syn match markdownRule "- *- *-[ -]*$" contained
+
+syn match markdownLineBreak " \{2,\}$"
+
+syn region markdownIdDeclaration matchgroup=markdownLinkDelimiter start="^ \{0,3\}!\=\[" end="\]:" oneline keepend nextgroup=markdownUrl skipwhite
+syn match markdownUrl "\S\+" nextgroup=markdownUrlTitle skipwhite contained
+syn region markdownUrl matchgroup=markdownUrlDelimiter start="<" end=">" oneline keepend nextgroup=markdownUrlTitle skipwhite contained
+syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+"+ end=+"+ keepend contained
+syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+'+ end=+'+ keepend contained
+syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained
+
+syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\_[^][]*\%(\[\_[^][]*\]\_[^][]*\)*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart
+syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained
+syn region markdownId matchgroup=markdownIdDelimiter start="\[" end="\]" keepend contained
+syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+:\|[[:alnum:]_+-]\+@\)\@=" end=">" keepend oneline
+
+let s:concealends = ''
+if has('conceal') && get(g:, 'markdown_syntax_conceal', 1) == 1
+ let s:concealends = ' concealends'
+endif
+exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\*\S\@=" end="\S\@<=\*\|^$" skip="\\\*" contains=markdownLineStart,@Spell' . s:concealends
+exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\w\@<!_\S\@=" end="\S\@<=_\w\@!\|^$" skip="\\_" contains=markdownLineStart,@Spell' . s:concealends
+exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\*\*\S\@=" end="\S\@<=\*\*\|^$" skip="\\\*" contains=markdownLineStart,markdownItalic,@Spell' . s:concealends
+exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\w\@<!__\S\@=" end="\S\@<=__\w\@!\|^$" skip="\\_" contains=markdownLineStart,markdownItalic,@Spell' . s:concealends
+exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\*\*\*\S\@=" end="\S\@<=\*\*\*\|^$" skip="\\\*" contains=markdownLineStart,@Spell' . s:concealends
+exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\w\@<!___\S\@=" end="\S\@<=___\w\@!\|^$" skip="\\_" contains=markdownLineStart,@Spell' . s:concealends
+exe 'syn region markdownStrike matchgroup=markdownStrikeDelimiter start="\~\~\S\@=" end="\S\@<=\~\~\|^$" contains=markdownLineStart,@Spell' . s:concealends
+
+syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepend contains=markdownLineStart
+syn region markdownCode matchgroup=markdownCodeDelimiter start="`` \=" end=" \=``" keepend contains=markdownLineStart
+syn region markdownCodeBlock matchgroup=markdownCodeDelimiter start="^\s*\z(`\{3,\}\).*$" end="^\s*\z1\ze\s*$" keepend
+syn region markdownCodeBlock matchgroup=markdownCodeDelimiter start="^\s*\z(\~\{3,\}\).*$" end="^\s*\z1\ze\s*$" keepend
+
+syn match markdownFootnote "\[^[^\]]\+\]"
+syn match markdownFootnoteDefinition "^\[^[^\]]\+\]:"
+
+let s:done_include = {}
+for s:type in g:markdown_fenced_languages
+ if has_key(s:done_include, matchstr(s:type,'[^.]*'))
+ continue
+ endif
+ exe 'syn region markdownHighlight_'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*\z(`\{3,\}\)\s*\%({.\{-}\.\)\='.matchstr(s:type,'[^=]*').'}\=\S\@!.*$" end="^\s*\z1\ze\s*$" keepend contains=@markdownHighlight_'.tr(matchstr(s:type,'[^=]*$'),'.','_') . s:concealends
+ exe 'syn region markdownHighlight_'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*\z(\~\{3,\}\)\s*\%({.\{-}\.\)\='.matchstr(s:type,'[^=]*').'}\=\S\@!.*$" end="^\s*\z1\ze\s*$" keepend contains=@markdownHighlight_'.tr(matchstr(s:type,'[^=]*$'),'.','_') . s:concealends
+ let s:done_include[matchstr(s:type,'[^.]*')] = 1
+endfor
+unlet! s:type
+unlet! s:done_include
+
+if get(b:, 'markdown_yaml_head', get(g:, 'markdown_yaml_head', main_syntax ==# 'markdown'))
+ syn include @markdownYamlTop syntax/yaml.vim
+ unlet! b:current_syntax
+ syn region markdownYamlHead start="\%^---$" end="^\%(---\|\.\.\.\)\s*$" keepend contains=@markdownYamlTop,@Spell
+endif
+
+syn match markdownEscape "\\[][\\`*_{}()<>#+.!-]"
+syn match markdownError "\w\@<=_\w\@="
+
+hi def link markdownH1 htmlH1
+hi def link markdownH2 htmlH2
+hi def link markdownH3 htmlH3
+hi def link markdownH4 htmlH4
+hi def link markdownH5 htmlH5
+hi def link markdownH6 htmlH6
+hi def link markdownHeadingRule markdownRule
+hi def link markdownH1Delimiter markdownHeadingDelimiter
+hi def link markdownH2Delimiter markdownHeadingDelimiter
+hi def link markdownH3Delimiter markdownHeadingDelimiter
+hi def link markdownH4Delimiter markdownHeadingDelimiter
+hi def link markdownH5Delimiter markdownHeadingDelimiter
+hi def link markdownH6Delimiter markdownHeadingDelimiter
+hi def link markdownHeadingDelimiter Delimiter
+hi def link markdownOrderedListMarker markdownListMarker
+hi def link markdownListMarker htmlTagName
+hi def link markdownBlockquote Comment
+hi def link markdownRule PreProc
+
+hi def link markdownFootnote Typedef
+hi def link markdownFootnoteDefinition Typedef
+
+hi def link markdownLinkText htmlLink
+hi def link markdownIdDeclaration Typedef
+hi def link markdownId Type
+hi def link markdownAutomaticLink markdownUrl
+hi def link markdownUrl Float
+hi def link markdownUrlTitle String
+hi def link markdownIdDelimiter markdownLinkDelimiter
+hi def link markdownUrlDelimiter htmlTag
+hi def link markdownUrlTitleDelimiter Delimiter
+
+hi def link markdownItalic htmlItalic
+hi def link markdownItalicDelimiter markdownItalic
+hi def link markdownBold htmlBold
+hi def link markdownBoldDelimiter markdownBold
+hi def link markdownBoldItalic htmlBoldItalic
+hi def link markdownBoldItalicDelimiter markdownBoldItalic
+hi def link markdownStrike htmlStrike
+hi def link markdownStrikeDelimiter markdownStrike
+hi def link markdownCodeDelimiter Delimiter
+
+hi def link markdownEscape Special
+hi def link markdownError Error
+
+let b:current_syntax = "markdown"
+if main_syntax ==# 'markdown'
+ unlet main_syntax
+endif
+
+" vim:set sw=2:
diff --git a/runtime/syntax/masm.vim b/runtime/syntax/masm.vim
new file mode 100644
index 0000000..3be0fd4
--- /dev/null
+++ b/runtime/syntax/masm.vim
@@ -0,0 +1,377 @@
+" Vim syntax file
+" Language: Microsoft Macro Assembler (80x86)
+" Orig Author: Rob Brady <robb@datatone.com>
+" Maintainer: Wu Yongwei <wuyongwei@gmail.com>
+" Last Change: 2022-04-24 20:07:04 +0800
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn iskeyword @,48-57,_,36,60,62,63,@-@
+
+syn case ignore
+
+
+syn match masmIdentifier "[@a-z_$?][@a-z0-9_$?<>]*"
+syn match masmLabel "^\s*[@a-z_$?][@a-z0-9_$?]*:"he=e-1
+
+syn match masmDecimal "[-+]\?\d\+[dt]\?"
+syn match masmBinary "[-+]\?[0-1]\+[by]" "put this before hex or 0bfh dies!
+syn match masmOctal "[-+]\?[0-7]\+[oq]"
+syn match masmHexadecimal "[-+]\?[0-9]\x*h"
+syn match masmFloatRaw "[-+]\?[0-9]\x*r"
+syn match masmFloat "[-+]\?\d\+\.\(\d*\(E[-+]\?\d\+\)\?\)\?"
+
+syn match masmComment ";.*" contains=@Spell
+syn region masmComment start=+COMMENT\s*\z(\S\)+ end=+\z1.*+ contains=@Spell
+syn region masmString start=+'+ end=+'+ oneline contains=@Spell
+syn region masmString start=+"+ end=+"+ oneline contains=@Spell
+
+syn region masmTitleArea start=+\<TITLE\s+lc=5 start=+\<SUBTITLE\s+lc=8 start=+\<SUBTTL\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmTitle
+syn region masmTextArea start=+\<NAME\s+lc=4 start=+\<INCLUDE\s+lc=7 start=+\<INCLUDELIB\s+lc=10 end=+$+ end=+;+me=e-1 contains=masmText
+syn match masmTitle "[^\t ;]\([^;]*[^\t ;]\)\?" contained contains=@Spell
+syn match masmText "[^\t ;]\([^;]*[^\t ;]\)\?" contained
+
+syn region masmOptionOpt start=+\<OPTION\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmOption
+syn region masmContextOpt start=+\<PUSHCONTEXT\s+lc=11 start=+\<POPCONTEXT\s+lc=10 end=+$+ end=+;+me=e-1 contains=masmOption
+syn region masmModelOpt start=+\.MODEL\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmOption,masmType
+syn region masmSegmentOpt start=+\<SEGMENT\s+lc=7 end=+$+ end=+;+me=e-1 contains=masmOption,masmString
+syn region masmProcOpt start=+\<PROC\s+lc=4 end=+$+ end=+;+me=e-1 contains=masmOption,masmType,masmRegister,masmIdentifier
+syn region masmAssumeOpt start=+\<ASSUME\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmOption,masmOperator,masmType,masmRegister,masmIdentifier
+syn region masmExpression start=+\.IF\s+lc=3 start=+\.WHILE\s+lc=6 start=+\.UNTIL\s+lc=6 start=+\<IF\s+lc=2 start=+\<IF2\s+lc=3 start=+\<ELSEIF\s+lc=6 start=+\<ELSEIF2\s+lc=7 start=+\<REPEAT\s+lc=6 start=+\<WHILE\s+lc=5 end=+$+ end=+;+me=e-1 contains=masmType,masmOperator,masmRegister,masmIdentifier,masmDecimal,masmBinary,masmHexadecimal,masmFloatRaw,masmString
+
+syn keyword masmOption TINY SMALL COMPACT MEDIUM LARGE HUGE contained
+syn keyword masmOption NEARSTACK FARSTACK contained
+syn keyword masmOption PUBLIC PRIVATE STACK COMMON MEMORY AT contained
+syn keyword masmOption BYTE WORD DWORD PARA PAGE contained
+syn keyword masmOption USE16 USE32 FLAT contained
+syn keyword masmOption INFO READ WRITE EXECUTE SHARED contained
+syn keyword masmOption NOPAGE NOCACHE DISCARD contained
+syn keyword masmOption READONLY USES FRAME contained
+syn keyword masmOption CASEMAP DOTNAME NODOTNAME EMULATOR contained
+syn keyword masmOption NOEMULATOR EPILOGUE EXPR16 EXPR32 contained
+syn keyword masmOption LANGUAGE LJMP NOLJMP M510 NOM510 contained
+syn keyword masmOption NOKEYWORD NOSIGNEXTEND OFFSET contained
+syn keyword masmOption OLDMACROS NOOLDMACROS OLDSTRUCTS contained
+syn keyword masmOption NOOLDSTRUCTS PROC PROLOGUE READONLY contained
+syn keyword masmOption NOREADONLY SCOPED NOSCOPED SEGMENT contained
+syn keyword masmOption SETIF2 contained
+syn keyword masmOption ABS ALL ASSUMES CPU ERROR EXPORT contained
+syn keyword masmOption FORCEFRAME LISTING LOADDS NONE contained
+syn keyword masmOption NONUNIQUE NOTHING OS_DOS RADIX REQ contained
+syn keyword masmType STDCALL SYSCALL C BASIC FORTRAN PASCAL
+syn keyword masmType PTR NEAR FAR NEAR16 FAR16 NEAR32 FAR32
+syn keyword masmType REAL4 REAL8 REAL10 BYTE SBYTE TBYTE
+syn keyword masmType WORD DWORD QWORD FWORD SWORD SDWORD
+syn keyword masmType SQWORD OWORD MMWORD XMMWORD YMMWORD
+syn keyword masmOperator AND NOT OR SHL SHR XOR MOD DUP
+syn keyword masmOperator EQ GE GT LE LT NE
+syn keyword masmOperator LROFFSET SEG LENGTH LENGTHOF SIZE SIZEOF
+syn keyword masmOperator CODEPTR DATAPTR FAR NEAR SHORT THIS TYPE
+syn keyword masmOperator HIGH HIGHWORD LOW LOWWORD OPATTR MASK WIDTH
+syn match masmOperator "OFFSET\(\sFLAT:\)\?"
+syn match masmOperator ".TYPE\>"
+syn match masmOperator "CARRY?"
+syn match masmOperator "OVERFLOW?"
+syn match masmOperator "PARITY?"
+syn match masmOperator "SIGN?"
+syn match masmOperator "ZERO?"
+syn keyword masmDirective ALIAS ASSUME CATSTR COMM DB DD DF DOSSEG DQ DT
+syn keyword masmDirective DW ECHO ELSE ELSEIF ELSEIF1 ELSEIF2 ELSEIFB
+syn keyword masmDirective ELSEIFDEF ELSEIFDIF ELSEIFDIFI ELSEIFE
+syn keyword masmDirective ELSEIFIDN ELSEIFIDNI ELSEIFNB ELSEIFNDEF END
+syn keyword masmDirective ENDIF ENDM ENDP ENDS EQU EVEN EXITM EXTERN
+syn keyword masmDirective EXTERNDEF EXTRN FOR FORC GOTO GROUP IF IF1 IF2
+syn keyword masmDirective IFB IFDEF IFDIF IFDIFI IFE IFIDN IFIDNI IFNB
+syn keyword masmDirective IFNDEF INCLUDE INCLUDELIB INSTR INVOKE IRP
+syn keyword masmDirective IRPC LABEL LOCAL MACRO NAME OPTION ORG PAGE
+syn keyword masmDirective POPCONTEXT PROC PROTO PUBLIC PURGE PUSHCONTEXT
+syn keyword masmDirective RECORD REPEAT REPT SEGMENT SIZESTR STRUC
+syn keyword masmDirective STRUCT SUBSTR SUBTITLE SUBTTL TEXTEQU TITLE
+syn keyword masmDirective TYPEDEF UNION WHILE
+syn match masmDirective "\.8086\>"
+syn match masmDirective "\.8087\>"
+syn match masmDirective "\.NO87\>"
+syn match masmDirective "\.186\>"
+syn match masmDirective "\.286\>"
+syn match masmDirective "\.286C\>"
+syn match masmDirective "\.286P\>"
+syn match masmDirective "\.287\>"
+syn match masmDirective "\.386\>"
+syn match masmDirective "\.386C\>"
+syn match masmDirective "\.386P\>"
+syn match masmDirective "\.387\>"
+syn match masmDirective "\.486\>"
+syn match masmDirective "\.486P\>"
+syn match masmDirective "\.586\>"
+syn match masmDirective "\.586P\>"
+syn match masmDirective "\.686\>"
+syn match masmDirective "\.686P\>"
+syn match masmDirective "\.K3D\>"
+syn match masmDirective "\.MMX\>"
+syn match masmDirective "\.XMM\>"
+syn match masmDirective "\.ALPHA\>"
+syn match masmDirective "\.DOSSEG\>"
+syn match masmDirective "\.SEQ\>"
+syn match masmDirective "\.CODE\>"
+syn match masmDirective "\.CONST\>"
+syn match masmDirective "\.DATA\>"
+syn match masmDirective "\.DATA?"
+syn match masmDirective "\.EXIT\>"
+syn match masmDirective "\.FARDATA\>"
+syn match masmDirective "\.FARDATA?"
+syn match masmDirective "\.MODEL\>"
+syn match masmDirective "\.STACK\>"
+syn match masmDirective "\.STARTUP\>"
+syn match masmDirective "\.IF\>"
+syn match masmDirective "\.ELSE\>"
+syn match masmDirective "\.ELSEIF\>"
+syn match masmDirective "\.ENDIF\>"
+syn match masmDirective "\.REPEAT\>"
+syn match masmDirective "\.UNTIL\>"
+syn match masmDirective "\.UNTILCXZ\>"
+syn match masmDirective "\.WHILE\>"
+syn match masmDirective "\.ENDW\>"
+syn match masmDirective "\.BREAK\>"
+syn match masmDirective "\.CONTINUE\>"
+syn match masmDirective "\.ERR\>"
+syn match masmDirective "\.ERR1\>"
+syn match masmDirective "\.ERR2\>"
+syn match masmDirective "\.ERRB\>"
+syn match masmDirective "\.ERRDEF\>"
+syn match masmDirective "\.ERRDIF\>"
+syn match masmDirective "\.ERRDIFI\>"
+syn match masmDirective "\.ERRE\>"
+syn match masmDirective "\.ERRIDN\>"
+syn match masmDirective "\.ERRIDNI\>"
+syn match masmDirective "\.ERRNB\>"
+syn match masmDirective "\.ERRNDEF\>"
+syn match masmDirective "\.ERRNZ\>"
+syn match masmDirective "\.LALL\>"
+syn match masmDirective "\.SALL\>"
+syn match masmDirective "\.XALL\>"
+syn match masmDirective "\.LFCOND\>"
+syn match masmDirective "\.SFCOND\>"
+syn match masmDirective "\.TFCOND\>"
+syn match masmDirective "\.CREF\>"
+syn match masmDirective "\.NOCREF\>"
+syn match masmDirective "\.XCREF\>"
+syn match masmDirective "\.LIST\>"
+syn match masmDirective "\.NOLIST\>"
+syn match masmDirective "\.XLIST\>"
+syn match masmDirective "\.LISTALL\>"
+syn match masmDirective "\.LISTIF\>"
+syn match masmDirective "\.NOLISTIF\>"
+syn match masmDirective "\.LISTMACRO\>"
+syn match masmDirective "\.NOLISTMACRO\>"
+syn match masmDirective "\.LISTMACROALL\>"
+syn match masmDirective "\.FPO\>"
+syn match masmDirective "\.RADIX\>"
+syn match masmDirective "\.SAFESEH\>"
+syn match masmDirective "%OUT\>"
+syn match masmDirective "ALIGN\>"
+syn match masmOption "ALIGN([0-9]\+)"
+
+syn keyword masmRegister AX BX CX DX SI DI BP SP
+syn keyword masmRegister CS DS SS ES FS GS
+syn keyword masmRegister AH BH CH DH AL BL CL DL
+syn keyword masmRegister EAX EBX ECX EDX ESI EDI EBP ESP
+syn keyword masmRegister CR0 CR2 CR3 CR4
+syn keyword masmRegister DR0 DR1 DR2 DR3 DR6 DR7
+syn keyword masmRegister TR3 TR4 TR5 TR6 TR7
+syn match masmRegister "ST([0-7])"
+
+" x86-64 registers
+syn keyword masmRegister RAX RBX RCX RDX RSI RDI RBP RSP
+syn keyword masmRegister R8 R9 R10 R11 R12 R13 R14 R15
+syn keyword masmRegister R8D R9D R10D R11D R12D R13D R14D R15D
+syn keyword masmRegister R8W R9W R10W R11W R12W R13W R14W R15W
+syn keyword masmRegister R8B R9B R10B R11B R12B R13B R14B R15B
+
+" SSE/AVX registers
+syn match masmRegister "\(X\|Y\)MM[0-9]\>"
+syn match masmRegister "\(X\|Y\)MM1[0-5]\>"
+
+" Instruction prefixes
+syn keyword masmOpcode LOCK REP REPE REPNE REPNZ REPZ
+
+" 8086/8088 opcodes
+syn keyword masmOpcode AAA AAD AAM AAS ADC ADD AND CALL CBW CLC CLD
+syn keyword masmOpcode CLI CMC CMP CMPS CMPSB CMPSW CWD DAA DAS DEC
+syn keyword masmOpcode DIV ESC HLT IDIV IMUL IN INC INT INTO IRET
+syn keyword masmOpcode JCXZ JMP LAHF LDS LEA LES LODS LODSB LODSW
+syn keyword masmOpcode LOOP LOOPE LOOPEW LOOPNE LOOPNEW LOOPNZ
+syn keyword masmOpcode LOOPNZW LOOPW LOOPZ LOOPZW MOV MOVS MOVSB
+syn keyword masmOpcode MOVSW MUL NEG NOP NOT OR OUT POP POPF PUSH
+syn keyword masmOpcode PUSHF RCL RCR RET RETF RETN ROL ROR SAHF SAL
+syn keyword masmOpcode SAR SBB SCAS SCASB SCASW SHL SHR STC STD STI
+syn keyword masmOpcode STOS STOSB STOSW SUB TEST WAIT XCHG XLAT XLATB
+syn keyword masmOpcode XOR
+syn match masmOpcode "J\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>"
+
+" 80186 opcodes
+syn keyword masmOpcode BOUND ENTER INS INSB INSW LEAVE OUTS OUTSB
+syn keyword masmOpcode OUTSW POPA PUSHA PUSHW
+
+" 80286 opcodes
+syn keyword masmOpcode ARPL LAR LSL SGDT SIDT SLDT SMSW STR VERR VERW
+
+" 80286/80386 privileged opcodes
+syn keyword masmOpcode CLTS LGDT LIDT LLDT LMSW LTR
+
+" 80386 opcodes
+syn keyword masmOpcode BSF BSR BT BTC BTR BTS CDQ CMPSD CWDE INSD
+syn keyword masmOpcode IRETD IRETDF IRETF JECXZ LFS LGS LODSD LOOPD
+syn keyword masmOpcode LOOPED LOOPNED LOOPNZD LOOPZD LSS MOVSD MOVSX
+syn keyword masmOpcode MOVZX OUTSD POPAD POPFD PUSHAD PUSHD PUSHFD
+syn keyword masmOpcode SCASD SHLD SHRD STOSD
+syn match masmOpcode "SET\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>"
+
+" 80486 opcodes
+syn keyword masmOpcode BSWAP CMPXCHG INVD INVLPG WBINVD XADD
+
+" Floating-point opcodes as of 487
+syn keyword masmOpFloat F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX
+syn keyword masmOpFloat FNCLEX FCOM FCOMP FCOMPP FCOS FDECSTP FDISI
+syn keyword masmOpFloat FNDISI FDIV FDIVP FDIVR FDIVRP FENI FNENI
+syn keyword masmOpFloat FFREE FIADD FICOM FICOMP FIDIV FIDIVR FILD
+syn keyword masmOpFloat FIMUL FINCSTP FINIT FNINIT FIST FISTP FISUB
+syn keyword masmOpFloat FISUBR FLD FLDCW FLDENV FLDLG2 FLDLN2 FLDL2E
+syn keyword masmOpFloat FLDL2T FLDPI FLDZ FLD1 FMUL FMULP FNOP FPATAN
+syn keyword masmOpFloat FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE FNSAVE
+syn keyword masmOpFloat FSCALE FSETPM FSIN FSINCOS FSQRT FST FSTCW
+syn keyword masmOpFloat FNSTCW FSTENV FNSTENV FSTP FSTSW FNSTSW FSUB
+syn keyword masmOpFloat FSUBP FSUBR FSUBRP FTST FUCOM FUCOMP FUCOMPP
+syn keyword masmOpFloat FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1
+
+" Floating-point opcodes in Pentium and later processors
+syn keyword masmOpFloat FCMOVE FCMOVNE FCMOVB FCMOVBE FCMOVNB FCMOVNBE
+syn keyword masmOpFloat FCMOVU FCMOVNU FCOMI FUCOMI FCOMIP FUCOMIP
+syn keyword masmOpFloat FXSAVE FXRSTOR
+
+" MMX opcodes (Pentium w/ MMX, Pentium II, and later)
+syn keyword masmOpcode MOVD MOVQ PACKSSWB PACKSSDW PACKUSWB
+syn keyword masmOpcode PUNPCKHBW PUNPCKHWD PUNPCKHDQ
+syn keyword masmOpcode PUNPCKLBW PUNPCKLWD PUNPCKLDQ
+syn keyword masmOpcode PADDB PADDW PADDD PADDSB PADDSW PADDUSB PADDUSW
+syn keyword masmOpcode PSUBB PSUBW PSUBD PSUBSB PSUBSW PSUBUSB PSUBUSW
+syn keyword masmOpcode PMULHW PMULLW PMADDWD
+syn keyword masmOpcode PCMPEQB PCMPEQW PCMPEQD PCMPGTB PCMPGTW PCMPGTD
+syn keyword masmOpcode PAND PANDN POR PXOR
+syn keyword masmOpcode PSLLW PSLLD PSLLQ PSRLW PSRLD PSRLQ PSRAW PSRAD
+syn keyword masmOpcode EMMS
+
+" SSE opcodes (Pentium III and later)
+syn keyword masmOpcode MOVAPS MOVUPS MOVHPS MOVHLPS MOVLPS MOVLHPS
+syn keyword masmOpcode MOVMSKPS MOVSS
+syn keyword masmOpcode ADDPS ADDSS SUBPS SUBSS MULPS MULSS DIVPS DIVSS
+syn keyword masmOpcode RCPPS RCPSS SQRTPS SQRTSS RSQRTPS RSQRTSS
+syn keyword masmOpcode MAXPS MAXSS MINPS MINSS
+syn keyword masmOpcode CMPPS CMPSS COMISS UCOMISS
+syn keyword masmOpcode ANDPS ANDNPS ORPS XORPS
+syn keyword masmOpcode SHUFPS UNPCKHPS UNPCKLPS
+syn keyword masmOpcode CVTPI2PS CVTSI2SS CVTPS2PI CVTTPS2PI
+syn keyword masmOpcode CVTSS2SI CVTTSS2SI
+syn keyword masmOpcode LDMXCSR STMXCSR
+syn keyword masmOpcode PAVGB PAVGW PEXTRW PINSRW PMAXUB PMAXSW
+syn keyword masmOpcode PMINUB PMINSW PMOVMSKB PMULHUW PSADBW PSHUFW
+syn keyword masmOpcode MASKMOVQ MOVNTQ MOVNTPS SFENCE
+syn keyword masmOpcode PREFETCHT0 PREFETCHT1 PREFETCHT2 PREFETCHNTA
+
+" SSE2 opcodes (Pentium 4 and later)
+syn keyword masmOpcode MOVAPD MOVUPD MOVHPD MOVLPD MOVMSKPD MOVSD
+syn keyword masmOpcode ADDPD ADDSD SUBPD SUBSD MULPD MULSD DIVPD DIVSD
+syn keyword masmOpcode SQRTPD SQRTSD MAXPD MAXSD MINPD MINSD
+syn keyword masmOpcode ANDPD ANDNPD ORPD XORPD
+syn keyword masmOpcode CMPPD CMPSD COMISD UCOMISD
+syn keyword masmOpcode SHUFPD UNPCKHPD UNPCKLPD
+syn keyword masmOpcode CVTPD2PI CVTTPD2PI CVTPI2PD CVTPD2DQ
+syn keyword masmOpcode CVTTPD2DQ CVTDQ2PD CVTPS2PD CVTPD2PS
+syn keyword masmOpcode CVTSS2SD CVTSD2SS CVTSD2SI CVTTSD2SI CVTSI2SD
+syn keyword masmOpcode CVTDQ2PS CVTPS2DQ CVTTPS2DQ
+syn keyword masmOpcode MOVDQA MOVDQU MOVQ2DQ MOVDQ2Q PMULUDQ
+syn keyword masmOpcode PADDQ PSUBQ PSHUFLW PSHUFHW PSHUFD
+syn keyword masmOpcode PSLLDQ PSRLDQ PUNPCKHQDQ PUNPCKLQDQ
+syn keyword masmOpcode CLFLUSH LFENCE MFENCE PAUSE MASKMOVDQU
+syn keyword masmOpcode MOVNTPD MOVNTDQ MOVNTI
+
+" SSE3 opcodes (Pentium 4 w/ Hyper-Threading and later)
+syn keyword masmOpcode FISTTP LDDQU ADDSUBPS ADDSUBPD
+syn keyword masmOpcode HADDPS HSUBPS HADDPD HSUBPD
+syn keyword masmOpcode MOVSHDUP MOVSLDUP MOVDDUP MONITOR MWAIT
+
+" SSSE3 opcodes (Core and later)
+syn keyword masmOpcode PSIGNB PSIGNW PSIGND PABSB PABSW PABSD
+syn keyword masmOpcode PALIGNR PSHUFB PMULHRSW PMADDUBSW
+syn keyword masmOpcode PHSUBW PHSUBD PHSUBSW PHADDW PHADDD PHADDSW
+
+" SSE 4.1 opcodes (Penryn and later)
+syn keyword masmOpcode MPSADBW PHMINPOSUW PMULDQ PMULLD DPPS DPPD
+syn keyword masmOpcode BLENDPS BLENDPD BLENDVPS BLENDVPD
+syn keyword masmOpcode PBLENDVB PBLENDW
+syn keyword masmOpcode PMINSB PMAXSB PMINSD PMAXSD
+syn keyword masmOpcode PMINUW PMAXUW PMINUD PMAXUD
+syn keyword masmOpcode ROUNDPS ROUNDSS ROUNDPD ROUNDSD
+syn keyword masmOpcode INSERTPS PINSRB PINSRD PINSRQ
+syn keyword masmOpcode EXTRACTPS PEXTRB PEXTRD PEXTRQ
+syn keyword masmOpcode PMOVSXBW PMOVZXBW PMOVSXBD PMOVZXBD
+syn keyword masmOpcode PMOVSXBQ PMOVZXBQ PMOVSXWD PMOVZXWD
+syn keyword masmOpcode PMOVSXWQ PMOVZXWQ PMOVSXDQ PMOVZXDQ
+syn keyword masmOpcode PTEST PCMPEQQ PACKUSDW MOVNTDQA
+
+" SSE 4.2 opcodes (Nehalem and later)
+syn keyword masmOpcode PCMPESTRI PCMPESTRM PCMPISTRI PCMPISTRM PCMPGTQ
+syn keyword masmOpcode CRC32 POPCNT LZCNT
+
+" AES-NI (Westmere (2010) and later)
+syn keyword masmOpcode AESENC AESENCLAST AESDEC AESDECLAST
+syn keyword masmOpcode AESKEYGENASSIST AESIMC PCLMULQDQ
+
+" AVX (Sandy Bridge (2011) and later)
+syn keyword masmOpcode VBROADCASTSS VBROADCASTSD VBROADCASTF128
+syn keyword masmOpcode VINSERTF128 VEXTRACTF128 VMASKMOVPS VMASKMOVPD
+syn keyword masmOpcode VPERMILPS VPERMILPD VPERM2F128
+syn keyword masmOpcode VZEROALL VZEROUPPER
+
+" Other opcodes in Pentium and later processors
+syn keyword masmOpcode CMPXCHG8B CPUID UD2
+syn keyword masmOpcode RSM RDMSR WRMSR RDPMC RDTSC SYSENTER SYSEXIT
+syn match masmOpcode "CMOV\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>"
+
+
+" The default highlighting
+hi def link masmLabel PreProc
+hi def link masmComment Comment
+hi def link masmDirective Statement
+hi def link masmType Type
+hi def link masmOperator Type
+hi def link masmOption Special
+hi def link masmRegister Special
+hi def link masmString String
+hi def link masmText String
+hi def link masmTitle Title
+hi def link masmOpcode Statement
+hi def link masmOpFloat Statement
+
+hi def link masmHexadecimal Number
+hi def link masmDecimal Number
+hi def link masmOctal Number
+hi def link masmBinary Number
+hi def link masmFloatRaw Number
+hi def link masmFloat Number
+
+hi def link masmIdentifier Identifier
+
+syntax sync minlines=50
+
+let b:current_syntax = "masm"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8
diff --git a/runtime/syntax/mason.vim b/runtime/syntax/mason.vim
new file mode 100644
index 0000000..e1638ec
--- /dev/null
+++ b/runtime/syntax/mason.vim
@@ -0,0 +1,85 @@
+" Vim syntax file
+" Language: Mason (Perl embedded in HTML)
+" Maintainer: vim-perl <vim-perl@googlegroups.com>
+" Homepage: https://github.com/vim-perl/vim-perl
+" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+" License: Vim License (see :help license)
+" Last Change: 2021 Oct 10
+" Contributors: Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
+" Andrew Smith <andrewdsmith@yahoo.com>
+"
+" TODO:
+" - Fix <%text> blocks to show HTML tags but ignore Mason tags.
+"
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" The HTML syntax file included below uses this variable.
+"
+if !exists("main_syntax")
+ let main_syntax = 'mason'
+endif
+
+" First pull in the HTML syntax.
+"
+runtime! syntax/html.vim
+unlet b:current_syntax
+
+syn cluster htmlPreproc add=@masonTop
+
+" Now pull in the Perl syntax.
+"
+syn include @perlTop syntax/perl.vim
+unlet b:current_syntax
+syn include @podTop syntax/pod.vim
+
+" It's hard to reduce down to the correct sub-set of Perl to highlight in some
+" of these cases so I've taken the safe option of just using perlTop in all of
+" them. If you have any suggestions, please let me know.
+"
+syn region masonPod start="^=[a-z]" end="^=cut" keepend contained contains=@podTop
+syn cluster perlTop remove=perlBraces
+syn region masonLine matchgroup=Delimiter start="^%" end="$" keepend contains=@perlTop
+syn region masonPerlComment start="#" end="\%(%>\)\@=\|$" contained contains=perlTodo,@Spell
+syn region masonExpr matchgroup=Delimiter start="<%" end="%>" contains=@perlTop,masonPerlComment
+syn region masonPerl matchgroup=Delimiter start="<%perl>" end="</%perl>" contains=masonPod,@perlTop
+syn region masonComp keepend matchgroup=Delimiter start="<&\s*\%([-._/[:alnum:]]\+:\)\?[-._/[:alnum:]]*" end="&>" contains=@perlTop
+syn region masonComp keepend matchgroup=Delimiter skipnl start="<&|\s*\%([-._/[:alnum:]]\+:\)\?[-._/[:alnum:]]*" end="&>" contains=@perlTop nextgroup=masonCompContent
+syn region masonCompContent matchgroup=Delimiter start="" end="</&>" contained contains=@masonTop
+
+syn region masonArgs matchgroup=Delimiter start="<%args>" end="</%args>" contains=masonPod,@perlTop
+
+syn region masonInit matchgroup=Delimiter start="<%init>" end="</%init>" contains=masonPod,@perlTop
+syn region masonCleanup matchgroup=Delimiter start="<%cleanup>" end="</%cleanup>" contains=masonPod,@perlTop
+syn region masonOnce matchgroup=Delimiter start="<%once>" end="</%once>" contains=masonPod,@perlTop
+syn region masonClass matchgroup=Delimiter start="<%class>" end="</%class>" contains=masonPod,@perlTop
+syn region masonShared matchgroup=Delimiter start="<%shared>" end="</%shared>" contains=masonPod,@perlTop
+
+syn region masonDef matchgroup=Delimiter start="<%def\s*[-._/[:alnum:]]\+\s*>" end="</%def>" contains=@htmlTop
+syn region masonMethod matchgroup=Delimiter start="<%method\s*[-._/[:alnum:]]\+\s*>" end="</%method>" contains=@htmlTop
+
+syn region masonFlags matchgroup=Delimiter start="<%flags>" end="</%flags>" contains=masonPod,@perlTop
+syn region masonAttr matchgroup=Delimiter start="<%attr>" end="</%attr>" contains=masonPod,@perlTop
+
+syn region masonFilter matchgroup=Delimiter start="<%filter>" end="</%filter>" contains=masonPod,@perlTop
+
+syn region masonDoc matchgroup=Delimiter start="<%doc>" end="</%doc>"
+syn region masonText matchgroup=Delimiter start="<%text>" end="</%text>"
+
+syn cluster masonTop contains=masonLine,masonExpr,masonPerl,masonComp,masonArgs,masonInit,masonCleanup,masonOnce,masonShared,masonDef,masonMethod,masonFlags,masonAttr,masonFilter,masonDoc,masonText
+
+" Set up default highlighting. Almost all of this is done in the included
+" syntax files.
+hi def link masonDoc Comment
+hi def link masonPod Comment
+hi def link podOrdinary masonPod
+hi def link masonPerlComment perlComment
+
+let b:current_syntax = "mason"
+
+if main_syntax == 'mason'
+ unlet main_syntax
+endif
diff --git a/runtime/syntax/master.vim b/runtime/syntax/master.vim
new file mode 100644
index 0000000..f89c5b2
--- /dev/null
+++ b/runtime/syntax/master.vim
@@ -0,0 +1,37 @@
+" Vim syntax file
+" Language: Focus Master File
+" Maintainer: Rob Brady <robb@datatone.com>
+" Last Change: $Date: 2004/06/13 15:54:03 $
+" URL: http://www.datatone.com/~robb/vim/syntax/master.vim
+" $Revision: 1.1 $
+
+" this is a very simple syntax file - I will be improving it
+" add entire DEFINE syntax
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+" A bunch of useful keywords
+syn keyword masterKeyword FILENAME SUFFIX SEGNAME SEGTYPE PARENT FIELDNAME
+syn keyword masterKeyword FIELD ALIAS USAGE INDEX MISSING ON
+syn keyword masterKeyword FORMAT CRFILE CRKEY
+syn keyword masterDefine DEFINE DECODE EDIT
+syn region masterString start=+"+ end=+"+
+syn region masterString start=+'+ end=+'+
+syn match masterComment "\$.*"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link masterKeyword Keyword
+hi def link masterComment Comment
+hi def link masterString String
+
+
+let b:current_syntax = "master"
+
+" vim: ts=8
diff --git a/runtime/syntax/matlab.vim b/runtime/syntax/matlab.vim
new file mode 100644
index 0000000..5202809
--- /dev/null
+++ b/runtime/syntax/matlab.vim
@@ -0,0 +1,119 @@
+" Vim syntax file
+" Language: Matlab
+" Maintainer: Alex Burka <vim@alexburka.com>
+" Credits: Preben 'Peppe' Guldberg <peppe-vim@wielders.org>
+" Maurizio Tranchero - maurizio(.)tranchero(@)gmail(.)com
+" Original author: Mario Eusebio
+" Last Change: June 10 2019
+" added highlight rule for double-quoted string literals
+" Change History:
+" - double-quoted string literals added
+" - now highlights cell-mode separator comments
+" - 'global' and 'persistent' keyword are now recognized
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn keyword matlabStatement return
+syn keyword matlabLabel case switch
+syn keyword matlabConditional else elseif end if otherwise
+syn keyword matlabRepeat do for while
+" MT_ADDON - added exception-specific keywords
+syn keyword matlabExceptions try catch
+syn keyword matlabOO classdef properties events methods
+
+syn keyword matlabTodo contained TODO
+syn keyword matlabScope global persistent
+
+" If you do not want these operators lit, uncommment them and the "hi link" below
+syn match matlabArithmeticOperator "[-+]"
+syn match matlabArithmeticOperator "\.\=[*/\\^]"
+syn match matlabRelationalOperator "[=~]="
+syn match matlabRelationalOperator "[<>]=\="
+syn match matlabLogicalOperator "[&|~]"
+
+syn match matlabLineContinuation "\.\{3}"
+
+"syn match matlabIdentifier "\<\a\w*\>"
+
+" String
+" MT_ADDON - added 'skip' in order to deal with 'tic' escaping sequence
+syn region matlabString start=+'+ end=+'+ oneline skip=+''+
+syn region matlabStringArray start=+"+ end=+"+ oneline skip=+""+
+
+" If you don't like tabs
+syn match matlabTab "\t"
+
+" Standard numbers
+syn match matlabNumber "\<\d\+[ij]\=\>"
+" floating point number, with dot, optional exponent
+syn match matlabFloat "\<\d\+\(\.\d*\)\=\([edED][-+]\=\d\+\)\=[ij]\=\>"
+" floating point number, starting with a dot, optional exponent
+syn match matlabFloat "\.\d\+\([edED][-+]\=\d\+\)\=[ij]\=\>"
+
+" Transpose character and delimiters: Either use just [...] or (...) aswell
+syn match matlabDelimiter "[][]"
+"syn match matlabDelimiter "[][()]"
+syn match matlabTransposeOperator "[])a-zA-Z0-9.]'"lc=1
+
+syn match matlabSemicolon ";"
+
+syn match matlabComment "%.*$" contains=matlabTodo,matlabTab
+" MT_ADDON - correctly highlights words after '...' as comments
+syn match matlabComment "\.\.\..*$" contains=matlabTodo,matlabTab
+syn region matlabMultilineComment start=+%{+ end=+%}+ contains=matlabTodo,matlabTab
+syn match matlabCellComment "^%%.*$"
+
+syn keyword matlabOperator break zeros default margin round ones rand
+syn keyword matlabOperator ceil floor size clear zeros eye mean std cov
+
+syn keyword matlabFunction error eval function
+
+syn keyword matlabImplicit abs acos atan asin cos cosh exp log prod sum
+syn keyword matlabImplicit log10 max min sign sin sinh sqrt tan reshape
+
+syn match matlabError "-\=\<\d\+\.\d\+\.[^*/\\^]"
+syn match matlabError "-\=\<\d\+\.\d\+[eEdD][-+]\=\d\+\.\([^*/\\^]\)"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link matlabTransposeOperator matlabOperator
+hi def link matlabOperator Operator
+hi def link matlabLineContinuation Special
+hi def link matlabLabel Label
+hi def link matlabConditional Conditional
+hi def link matlabExceptions Conditional
+hi def link matlabRepeat Repeat
+hi def link matlabTodo Todo
+hi def link matlabString String
+hi def link matlabStringArray String
+hi def link matlabDelimiter Identifier
+hi def link matlabTransposeOther Identifier
+hi def link matlabNumber Number
+hi def link matlabFloat Float
+hi def link matlabFunction Function
+hi def link matlabError Error
+hi def link matlabImplicit matlabStatement
+hi def link matlabStatement Statement
+hi def link matlabOO Statement
+hi def link matlabSemicolon SpecialChar
+hi def link matlabComment Comment
+hi def link matlabMultilineComment Comment
+hi def link matlabCellComment Todo
+hi def link matlabScope Type
+
+hi def link matlabArithmeticOperator matlabOperator
+hi def link matlabRelationalOperator matlabOperator
+hi def link matlabLogicalOperator matlabOperator
+
+"optional highlighting
+"hi def link matlabIdentifier Identifier
+"hi def link matlabTab Error
+
+
+let b:current_syntax = "matlab"
+
+"EOF vim: ts=8 noet tw=100 sw=8 sts=0
diff --git a/runtime/syntax/maxima.vim b/runtime/syntax/maxima.vim
new file mode 100644
index 0000000..46e1e4f
--- /dev/null
+++ b/runtime/syntax/maxima.vim
@@ -0,0 +1,261 @@
+" Vim syntax file
+" Language: Maxima (symbolic algebra program)
+" Maintainer: Robert Dodier (robert.dodier@gmail.com)
+" Last Change: April 6, 2006
+" Version: 1
+" Adapted mostly from xmath.vim
+" Number formats adapted from r.vim
+"
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn sync lines=1000
+
+" parenthesis sanity checker
+syn region maximaZone matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" transparent contains=ALLBUT,maximaError,maximaBraceError,maximaCurlyError
+syn region maximaZone matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" transparent contains=ALLBUT,maximaError,maximaBraceError,maximaParenError
+syn region maximaZone matchgroup=Delimiter start="\[" matchgroup=Delimiter end="]" transparent contains=ALLBUT,maximaError,maximaCurlyError,maximaParenError
+syn match maximaError "[)\]}]"
+syn match maximaBraceError "[)}]" contained
+syn match maximaCurlyError "[)\]]" contained
+syn match maximaParenError "[\]}]" contained
+syn match maximaComma "[\[\](),;]"
+syn match maximaComma "\.\.\.$"
+
+" A bunch of useful maxima keywords
+syn keyword maximaConditional if then else elseif and or not
+syn keyword maximaRepeat do for thru
+
+" ---------------------- BEGIN LIST OF ALL FUNCTIONS (EXCEPT KEYWORDS) ----------------------
+syn keyword maximaFunc abasep abs absboxchar absint acos acosh acot acoth acsc
+syn keyword maximaFunc acsch activate activecontexts addcol additive addrow adim
+syn keyword maximaFunc adjoint af aform airy algebraic algepsilon algexact algsys
+syn keyword maximaFunc alg_type alias aliases allbut all_dotsimp_denoms allroots allsym
+syn keyword maximaFunc alphabetic antid antidiff antisymmetric append appendfile
+syn keyword maximaFunc apply apply1 apply2 applyb1 apropos args array arrayapply
+syn keyword maximaFunc arrayinfo arraymake arrays asec asech asin asinh askexp
+syn keyword maximaFunc askinteger asksign assoc assoc_legendre_p assoc_legendre_q assume
+syn keyword maximaFunc assume_pos assume_pos_pred assumescalar asymbol asympa at atan
+syn keyword maximaFunc atan2 atanh atensimp atom atomgrad atrig1 atvalue augcoefmatrix
+syn keyword maximaFunc av backsubst backtrace bashindices batch batchload bc2 bdvac
+syn keyword maximaFunc berlefact bern bernpoly bessel besselexpand bessel_i bessel_j
+syn keyword maximaFunc bessel_k bessel_y beta bezout bffac bfhzeta bfloat bfloatp
+syn keyword maximaFunc bfpsi bfpsi0 bftorat bftrunc bfzeta bimetric binomial block
+syn keyword maximaFunc bothcoef box boxchar break breakup bug_report build_info buildq
+syn keyword maximaFunc burn cabs canform canten carg cartan catch cauchysum cbffac
+syn keyword maximaFunc cdisplay cf cfdisrep cfexpand cflength cframe_flag cgeodesic
+syn keyword maximaFunc changename changevar charpoly checkdiv check_overlaps christof
+syn keyword maximaFunc clear_rules closefile closeps cmetric cnonmet_flag coeff
+syn keyword maximaFunc coefmatrix cograd col collapse columnvector combine commutative
+syn keyword maximaFunc comp2pui compfile compile compile_file components concan concat
+syn keyword maximaFunc conj conjugate conmetderiv cons constant constantp cont2part
+syn keyword maximaFunc content context contexts contortion contract contragrad coord
+syn keyword maximaFunc copylist copymatrix cos cosh cosnpiflag cot coth covdiff
+syn keyword maximaFunc covect create_list csc csch csetup ctaylor ctaypov ctaypt
+syn keyword maximaFunc ctayswitch ctayvar ct_coords ct_coordsys ctorsion_flag ctransform
+syn keyword maximaFunc ctrgsimp current_let_rule_package dblint deactivate debugmode
+syn keyword maximaFunc declare declare_translated declare_weight decsym
+syn keyword maximaFunc default_let_rule_package defcon define define_variable defint
+syn keyword maximaFunc defmatch defrule deftaylor del delete deleten delta demo
+syn keyword maximaFunc demoivre denom dependencies depends derivabbrev derivdegree
+syn keyword maximaFunc derivlist derivsubst describe desolve determinant detout
+syn keyword maximaFunc diagmatrix diagmatrixp diagmetric diff dim dimension direct
+syn keyword maximaFunc disolate disp dispcon dispflag dispform dispfun display
+syn keyword maximaFunc display2d display_format_internal disprule dispterms distrib
+syn keyword maximaFunc divide divsum doallmxops domain domxexpt domxmxops domxnctimes
+syn keyword maximaFunc dontfactor doscmxops doscmxplus dot0nscsimp dot0simp dot1simp
+syn keyword maximaFunc dotassoc dotconstrules dotdistrib dotexptsimp dotident dotscrules
+syn keyword maximaFunc dotsimp dpart dscalar %e echelon %edispflag eigenvalues
+syn keyword maximaFunc eigenvectors eighth einstein eivals eivects ele2comp
+syn keyword maximaFunc ele2polynome ele2pui elem eliminate elliptic_e elliptic_ec
+syn keyword maximaFunc elliptic_eu elliptic_f elliptic_kc elliptic_pi ematrix %emode
+syn keyword maximaFunc endcons entermatrix entertensor entier %enumer equal equalp erf
+syn keyword maximaFunc erfflag errcatch error errormsg error_size error_syms
+syn keyword maximaFunc %e_to_numlog euler ev eval evenp every evflag evfun evundiff
+syn keyword maximaFunc example exp expand expandwrt expandwrt_denom expandwrt_factored
+syn keyword maximaFunc explose expon exponentialize expop express expt exptdispflag
+syn keyword maximaFunc exptisolate exptsubst extdiff extract_linear_equations ezgcd
+syn keyword maximaFunc facexpand factcomb factlim factor factorflag factorial factorout
+syn keyword maximaFunc factorsum facts false fast_central_elements fast_linsolve
+syn keyword maximaFunc fasttimes fb feature featurep features fft fib fibtophi fifth
+syn keyword maximaFunc filename_merge file_search file_search_demo file_search_lisp
+syn keyword maximaFunc file_search_maxima file_type fillarray findde first fix flatten
+syn keyword maximaFunc flipflag float float2bf floatnump flush flush1deriv flushd
+syn keyword maximaFunc flushnd forget fortindent fortran fortspaces fourcos fourexpand
+syn keyword maximaFunc fourier fourint fourintcos fourintsin foursimp foursin fourth
+syn keyword maximaFunc fpprec fpprintprec frame_bracket freeof fullmap fullmapl
+syn keyword maximaFunc fullratsimp fullratsubst funcsolve functions fundef funmake funp
+syn keyword maximaFunc gamma %gamma gammalim gauss gcd gcdex gcfactor gdet genfact
+syn keyword maximaFunc genindex genmatrix gensumnum get getchar gfactor gfactorsum
+syn keyword maximaFunc globalsolve go gradef gradefs gramschmidt grind grobner_basis
+syn keyword maximaFunc gschmit hach halfangles hermite hipow hodge horner i0 i1
+syn keyword maximaFunc *read-base* ic1 ic2 icc1 icc2 ic_convert ichr1 ichr2 icounter
+syn keyword maximaFunc icurvature ident idiff idim idummy idummyx ieqn ieqnprint ifb
+syn keyword maximaFunc ifc1 ifc2 ifg ifgi ifr iframe_bracket_form iframes ifri ift
+syn keyword maximaFunc igeodesic_coords igeowedge_flag ikt1 ikt2 ilt imagpart imetric
+syn keyword maximaFunc inchar indexed_tensor indices inf %inf infeval infinity infix
+syn keyword maximaFunc inflag infolists init_atensor init_ctensor inm inmc1 inmc2
+syn keyword maximaFunc innerproduct in_netmath inpart inprod inrt integerp integrate
+syn keyword maximaFunc integrate_use_rootsof integration_constant_counter interpolate
+syn keyword maximaFunc intfaclim intopois intosum intpolabs intpolerror intpolrel
+syn keyword maximaFunc invariant1 invariant2 inverse_jacobi_cd inverse_jacobi_cn
+syn keyword maximaFunc inverse_jacobi_cs inverse_jacobi_dc inverse_jacobi_dn
+syn keyword maximaFunc inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd
+syn keyword maximaFunc inverse_jacobi_ns inverse_jacobi_sc inverse_jacobi_sd
+syn keyword maximaFunc inverse_jacobi_sn invert is ishow isolate isolate_wrt_times
+syn keyword maximaFunc isqrt itr j0 j1 jacobi jacobi_cd jacobi_cn jacobi_cs jacobi_dc
+syn keyword maximaFunc jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_sc
+syn keyword maximaFunc jacobi_sd jacobi_sn jn kdels kdelta keepfloat kill killcontext
+syn keyword maximaFunc kinvariant kostka kt labels lambda laplace lassociative last
+syn keyword maximaFunc lc2kdt lc_l lcm lc_u ldefint ldisp ldisplay leinstein length
+syn keyword maximaFunc let letrat let_rule_packages letrules letsimp levi_civita lfg
+syn keyword maximaFunc lfreeof lg lgtreillis lhospitallim lhs liediff limit limsubst
+syn keyword maximaFunc linear linechar linel linenum linsolve linsolve_params
+syn keyword maximaFunc linsolvewarn listarith listarray listconstvars listdummyvars
+syn keyword maximaFunc list_nc_monomials listoftens listofvars listp lmxchar load
+syn keyword maximaFunc loadfile loadprint local log logabs logarc logconcoeffp
+syn keyword maximaFunc logcontract logexpand lognegint lognumer logsimp lopow
+syn keyword maximaFunc lorentz_gauge lpart lratsubst lriem lriemann lsum ltreillis
+syn keyword maximaFunc m1pbranch macroexpansion mainvar make_array makebox makefact
+syn keyword maximaFunc makegamma makelist make_random_state make_transform map mapatom
+syn keyword maximaFunc maperror maplist matchdeclare matchfix matrix matrix_element_add
+syn keyword maximaFunc matrix_element_mult matrix_element_transpose matrixmap matrixp
+syn keyword maximaFunc mattrace max maxapplydepth maxapplyheight maxnegex maxposex
+syn keyword maximaFunc maxtayorder member min %minf minfactorial minor mod
+syn keyword maximaFunc mode_check_errorp mode_checkp mode_check_warnp mode_declare
+syn keyword maximaFunc mode_identity modulus mon2schur mono monomial_dimensions
+syn keyword maximaFunc multi_elem multinomial multi_orbit multiplicative multiplicities
+syn keyword maximaFunc multi_pui multsym multthru myoptions nc_degree ncexpt ncharpoly
+syn keyword maximaFunc negdistrib negsumdispflag newcontext newdet newton niceindices
+syn keyword maximaFunc niceindicespref ninth nm nmc noeval nolabels nonmetricity
+syn keyword maximaFunc nonscalar nonscalarp noun noundisp nounify nouns np npi
+syn keyword maximaFunc nptetrad nroots nterms ntermst nthroot ntrig num numberp numer
+syn keyword maximaFunc numerval numfactor nusum obase oddp ode2 op openplot_curves
+syn keyword maximaFunc operatorp opproperties opsubst optimize optimprefix optionset
+syn keyword maximaFunc orbit ordergreat ordergreatp orderless orderlessp outative
+syn keyword maximaFunc outchar outermap outofpois packagefile pade part part2cont
+syn keyword maximaFunc partfrac partition partpol partswitch permanent permut petrov
+syn keyword maximaFunc pfeformat pi pickapart piece playback plog plot2d plot2d_ps
+syn keyword maximaFunc plot3d plot_options poisdiff poisexpt poisint poislim poismap
+syn keyword maximaFunc poisplus poissimp poisson poissubst poistimes poistrim polarform
+syn keyword maximaFunc polartorect polynome2ele posfun potential powerdisp powers
+syn keyword maximaFunc powerseries pred prederror primep print printpois printprops
+syn keyword maximaFunc prodhack prodrac product programmode prompt properties props
+syn keyword maximaFunc propvars pscom psdraw_curve psexpand psi pui pui2comp pui2ele
+syn keyword maximaFunc pui2polynome pui_direct puireduc put qput qq quad_qag quad_qagi
+syn keyword maximaFunc quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quanc8 quit
+syn keyword maximaFunc qunit quotient radcan radexpand radsubstflag random rank
+syn keyword maximaFunc rassociative rat ratalgdenom ratchristof ratcoef ratdenom
+syn keyword maximaFunc ratdenomdivide ratdiff ratdisrep rateinstein ratepsilon ratexpand
+syn keyword maximaFunc ratfac ratmx ratnumer ratnump ratp ratprint ratriemann ratsimp
+syn keyword maximaFunc ratsimpexpons ratsubst ratvars ratweight ratweights ratweyl
+syn keyword maximaFunc ratwtlvl read readonly realonly realpart realroots rearray
+syn keyword maximaFunc rectform recttopolar rediff refcheck rem remainder remarray
+syn keyword maximaFunc rembox remcomps remcon remcoord remfun remfunction remlet
+syn keyword maximaFunc remove remrule remsym remvalue rename reset residue resolvante
+syn keyword maximaFunc resolvante_alternee1 resolvante_bipartite resolvante_diedrale
+syn keyword maximaFunc resolvante_klein resolvante_klein3 resolvante_produit_sym
+syn keyword maximaFunc resolvante_unitaire resolvante_vierer rest resultant return
+syn keyword maximaFunc reveal reverse revert revert2 rhs ric ricci riem riemann
+syn keyword maximaFunc rinvariant risch rmxchar rncombine %rnum_list romberg rombergabs
+syn keyword maximaFunc rombergit rombergmin rombergtol room rootsconmode rootscontract
+syn keyword maximaFunc rootsepsilon round row run_testsuite save savedef savefactors
+syn keyword maximaFunc scalarmatrixp scalarp scalefactors scanmap schur2comp sconcat
+syn keyword maximaFunc scsimp scurvature sec sech second setcheck setcheckbreak
+syn keyword maximaFunc setelmx set_plot_option set_random_state setup_autoload
+syn keyword maximaFunc set_up_dot_simplifications setval seventh sf show showcomps
+syn keyword maximaFunc showratvars showtime sign signum similaritytransform simpsum
+syn keyword maximaFunc simtran sin sinh sinnpiflag sixth solve solvedecomposes
+syn keyword maximaFunc solveexplicit solvefactors solve_inconsistent_error solvenullwarn
+syn keyword maximaFunc solveradcan solvetrigwarn somrac sort sparse spherical_bessel_j
+syn keyword maximaFunc spherical_bessel_y spherical_hankel1 spherical_hankel2
+syn keyword maximaFunc spherical_harmonic splice sqfr sqrt sqrtdispflag sstatus
+syn keyword maximaFunc stardisp status string stringout sublis sublis_apply_lambda
+syn keyword maximaFunc sublist submatrix subst substinpart substpart subvarp sum
+syn keyword maximaFunc sumcontract sumexpand sumhack sumsplitfact supcontext symbolp
+syn keyword maximaFunc symmetric symmetricp system tan tanh taylor taylordepth
+syn keyword maximaFunc taylorinfo taylor_logexpand taylor_order_coefficients taylorp
+syn keyword maximaFunc taylor_simplifier taylor_truncate_polynomials taytorat tcl_output
+syn keyword maximaFunc tcontract tellrat tellsimp tellsimpafter tensorkill tentex tenth
+syn keyword maximaFunc tex %th third throw time timer timer_devalue timer_info
+syn keyword maximaFunc tldefint tlimit tlimswitch todd_coxeter to_lisp totaldisrep
+syn keyword maximaFunc totalfourier totient tpartpol tr trace trace_options
+syn keyword maximaFunc transcompile translate translate_file transpose transrun
+syn keyword maximaFunc tr_array_as_ref tr_bound_function_applyp treillis treinat
+syn keyword maximaFunc tr_file_tty_messagesp tr_float_can_branch_complex
+syn keyword maximaFunc tr_function_call_default triangularize trigexpand trigexpandplus
+syn keyword maximaFunc trigexpandtimes triginverses trigrat trigreduce trigsign trigsimp
+syn keyword maximaFunc tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars true
+syn keyword maximaFunc trunc truncate tr_warn_bad_function_calls tr_warn_fexpr
+syn keyword maximaFunc tr_warnings_get tr_warn_meval tr_warn_mode tr_warn_undeclared
+syn keyword maximaFunc tr_warn_undefined_variable tr_windy ttyoff ueivects ufg ug
+syn keyword maximaFunc ultraspherical undiff uniteigenvectors unitvector unknown unorder
+syn keyword maximaFunc unsum untellrat untimer untrace uric uricci uriem uriemann
+syn keyword maximaFunc use_fast_arrays uvect values vect_cross vectorpotential
+syn keyword maximaFunc vectorsimp verb verbify verbose weyl with_stdout writefile
+syn keyword maximaFunc xgraph_curves xthru zerobern zeroequiv zeromatrix zeta zeta%pi
+syn match maximaOp "[\*\/\+\-\#\!\~\^\=\:\<\>\@]"
+" ---------------------- END LIST OF ALL FUNCTIONS (EXCEPT KEYWORDS) ----------------------
+
+
+syn case match
+
+" Labels (supports maxima's goto)
+syn match maximaLabel "^\s*<[a-zA-Z_][a-zA-Z0-9%_]*>"
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match maximaSpecial contained "\\\d\d\d\|\\."
+syn region maximaString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=maximaSpecial
+syn match maximaCharacter "'[^\\]'"
+syn match maximaSpecialChar "'\\.'"
+
+" number with no fractional part or exponent
+syn match maximaNumber /\<\d\+\>/
+" floating point number with integer and fractional parts and optional exponent
+syn match maximaFloat /\<\d\+\.\d*\([BbDdEeSs][-+]\=\d\+\)\=\>/
+" floating point number with no integer part and optional exponent
+syn match maximaFloat /\<\.\d\+\([BbDdEeSs][-+]\=\d\+\)\=\>/
+" floating point number with no fractional part and optional exponent
+syn match maximaFloat /\<\d\+[BbDdEeSs][-+]\=\d\+\>/
+
+" Comments:
+" maxima supports /* ... */ (like C)
+syn keyword maximaTodo contained TODO Todo DEBUG
+syn region maximaCommentBlock start="/\*" end="\*/" contains=maximaString,maximaTodo,maximaCommentBlock
+
+" synchronizing
+syn sync match maximaSyncComment grouphere maximaCommentBlock "/*"
+syn sync match maximaSyncComment groupthere NONE "*/"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link maximaBraceError maximaError
+hi def link maximaCmd maximaStatement
+hi def link maximaCurlyError maximaError
+hi def link maximaFuncCmd maximaStatement
+hi def link maximaParenError maximaError
+
+" The default methods for highlighting. Can be overridden later
+hi def link maximaCharacter Character
+hi def link maximaComma Function
+hi def link maximaCommentBlock Comment
+hi def link maximaConditional Conditional
+hi def link maximaError Error
+hi def link maximaFunc Delimiter
+hi def link maximaOp Delimiter
+hi def link maximaLabel PreProc
+hi def link maximaNumber Number
+hi def link maximaFloat Float
+hi def link maximaRepeat Repeat
+hi def link maximaSpecial Type
+hi def link maximaSpecialChar SpecialChar
+hi def link maximaStatement Statement
+hi def link maximaString String
+hi def link maximaTodo Todo
+
+
+let b:current_syntax = "maxima"
diff --git a/runtime/syntax/mel.vim b/runtime/syntax/mel.vim
new file mode 100644
index 0000000..f0f1bca
--- /dev/null
+++ b/runtime/syntax/mel.vim
@@ -0,0 +1,108 @@
+" Vim syntax file
+" Language: MEL (Maya Extension Language)
+" Maintainer: Robert Minsk <egbert@centropolisfx.com>
+" Last Change: May 27 1999
+" Based on: Bram Moolenaar <Bram@vim.org> C syntax file
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" when wanted, highlight trailing white space and spaces before tabs
+if exists("mel_space_errors")
+ sy match melSpaceError "\s\+$"
+ sy match melSpaceError " \+\t"me=e-1
+endif
+
+" A bunch of usefull MEL keyworks
+sy keyword melBoolean true false yes no on off
+
+sy keyword melFunction proc
+sy match melIdentifier "\$\(\a\|_\)\w*"
+
+sy keyword melStatement break continue return
+sy keyword melConditional if else switch
+sy keyword melRepeat while for do in
+sy keyword melLabel case default
+sy keyword melOperator size eval env exists whatIs
+sy keyword melKeyword alias
+sy keyword melException catch error warning
+
+sy keyword melInclude source
+
+sy keyword melType int float string vector matrix
+sy keyword melStorageClass global
+
+sy keyword melDebug trace
+
+sy keyword melTodo contained TODO FIXME XXX
+
+" MEL data types
+sy match melCharSpecial contained "\\[ntr\\"]"
+sy match melCharError contained "\\[^ntr\\"]"
+
+sy region melString start=+"+ skip=+\\"+ end=+"+ contains=melCharSpecial,melCharError
+
+sy case ignore
+sy match melInteger "\<\d\+\(e[-+]\=\d\+\)\=\>"
+sy match melFloat "\<\d\+\(e[-+]\=\d\+\)\=f\>"
+sy match melFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=f\=\>"
+sy match melFloat "\.\d\+\(e[-+]\=\d\+\)\=f\=\>"
+sy case match
+
+sy match melCommaSemi contained "[,;]"
+sy region melMatrixVector start=/<</ end=/>>/ contains=melInteger,melFloat,melIdentifier,melCommaSemi
+
+sy cluster melGroup contains=melFunction,melStatement,melConditional,melLabel,melKeyword,melStorageClass,melTODO,melCharSpecial,melCharError,melCommaSemi
+
+" catch errors caused by wrong parenthesis
+sy region melParen transparent start='(' end=')' contains=ALLBUT,@melGroup,melParenError,melInParen
+sy match melParenError ")"
+sy match melInParen contained "[{}]"
+
+" comments
+sy region melComment start="/\*" end="\*/" contains=melTodo,melSpaceError
+sy match melComment "//.*" contains=melTodo,melSpaceError
+sy match melCommentError "\*/"
+
+sy region melQuestionColon matchgroup=melConditional transparent start='?' end=':' contains=ALLBUT,@melGroup
+
+if !exists("mel_minlines")
+ let mel_minlines=15
+endif
+exec "sy sync ccomment melComment minlines=" . mel_minlines
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link melBoolean Boolean
+hi def link melFunction Function
+hi def link melIdentifier Identifier
+hi def link melStatement Statement
+hi def link melConditional Conditional
+hi def link melRepeat Repeat
+hi def link melLabel Label
+hi def link melOperator Operator
+hi def link melKeyword Keyword
+hi def link melException Exception
+hi def link melInclude Include
+hi def link melType Type
+hi def link melStorageClass StorageClass
+hi def link melDebug Debug
+hi def link melTodo Todo
+hi def link melCharSpecial SpecialChar
+hi def link melString String
+hi def link melInteger Number
+hi def link melFloat Float
+hi def link melMatrixVector Float
+hi def link melComment Comment
+hi def link melError Error
+hi def link melSpaceError melError
+hi def link melCharError melError
+hi def link melParenError melError
+hi def link melInParen melError
+hi def link melCommentError melError
+
+
+let b:current_syntax = "mel"
diff --git a/runtime/syntax/mermaid.vim b/runtime/syntax/mermaid.vim
new file mode 100644
index 0000000..afdbcc3
--- /dev/null
+++ b/runtime/syntax/mermaid.vim
@@ -0,0 +1,155 @@
+" Vim syntax file
+" Language: Mermaid
+" Maintainer: Craig MacEahern <https://github.com/craigmac/vim-mermaid>
+" Filenames: *.mmd
+" Last Change: 2022 Nov 22
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syntax iskeyword @,48-57,192-255,$,_,-,:
+syntax keyword mermaidKeyword
+ \ _blank
+ \ _self
+ \ _parent
+ \ _top
+ \ ::icon
+ \ accDescr
+ \ accTitle
+ \ actor
+ \ activate
+ \ alt
+ \ and
+ \ as
+ \ autonumber
+ \ branch
+ \ break
+ \ callback
+ \ checkout
+ \ class
+ \ classDef
+ \ classDiagram
+ \ click
+ \ commit
+ \ commitgitGraph
+ \ critical
+ \ dataFormat
+ \ dateFormat
+ \ deactivate
+ \ direction
+ \ element
+ \ else
+ \ end
+ \ erDiagram
+ \ flowchart
+ \ gantt
+ \ gitGraph
+ \ graph
+ \ journey
+ \ link
+ \ LR
+ \ TD
+ \ TB
+ \ RL
+ \ loop
+ \ merge
+ \ mindmap root
+ \ Note
+ \ Note right of
+ \ Note left of
+ \ Note over
+ \ note
+ \ note right of
+ \ note left of
+ \ note over
+ \ opt
+ \ option
+ \ par
+ \ participant
+ \ pie
+ \ rect
+ \ requirement
+ \ rgb
+ \ section
+ \ sequenceDiagram
+ \ state
+ \ stateDiagram
+ \ stateDiagram-v2
+ \ style
+ \ subgraph
+ \ title
+highlight link mermaidKeyword Keyword
+
+syntax match mermaidStatement "|"
+syntax match mermaidStatement "--\?[>x)]>\?+\?-\?"
+syntax match mermaidStatement "\~\~\~"
+syntax match mermaidStatement "--"
+syntax match mermaidStatement "---"
+syntax match mermaidStatement "-->"
+syntax match mermaidStatement "-\."
+syntax match mermaidStatement "\.->"
+syntax match mermaidStatement "-\.-"
+syntax match mermaidStatement "-\.\.-"
+syntax match mermaidStatement "-\.\.\.-"
+syntax match mermaidStatement "=="
+syntax match mermaidStatement "==>"
+syntax match mermaidStatement "===>"
+syntax match mermaidStatement "====>"
+syntax match mermaidStatement "&"
+syntax match mermaidStatement "--o"
+syntax match mermaidStatement "--x"
+syntax match mermaidStatement "x--x"
+syntax match mermaidStatement "-----"
+syntax match mermaidStatement "---->"
+syntax match mermaidStatement "==="
+syntax match mermaidStatement "===="
+syntax match mermaidStatement "====="
+syntax match mermaidStatement ":::"
+syntax match mermaidStatement "<|--"
+syntax match mermaidStatement "\*--"
+syntax match mermaidStatement "o--"
+syntax match mermaidStatement "o--o"
+syntax match mermaidStatement "<--"
+syntax match mermaidStatement "<-->"
+syntax match mermaidStatement "\.\."
+syntax match mermaidStatement "<\.\."
+syntax match mermaidStatement "<|\.\."
+syntax match mermaidStatement "--|>"
+syntax match mermaidStatement "--\*"
+syntax match mermaidStatement "--o"
+syntax match mermaidStatement "\.\.>"
+syntax match mermaidStatement "\.\.|>"
+syntax match mermaidStatement "<|--|>"
+syntax match mermaidStatement "||--o{"
+highlight link mermaidStatement Statement
+
+syntax match mermaidIdentifier "[\+-]\?\w\+(.*)[\$\*]\?"
+highlight link mermaidIdentifier Identifier
+
+syntax match mermaidType "[\+-\#\~]\?\cint\>"
+syntax match mermaidType "[\+-\#\~]\?\cString\>"
+syntax match mermaidType "[\+-\#\~]\?\cbool\>"
+syntax match mermaidType "[\+-\#\~]\?\cBigDecimal\>"
+syntax match mermaidType "[\+-\#\~]\?\cList\~.\+\~"
+syntax match mermaidType "<<\w\+>>"
+highlight link mermaidType Type
+
+syntax match mermaidComment "%%.*$"
+highlight link mermaidComment Comment
+
+syntax region mermaidDirective start="%%{" end="\}%%"
+highlight link mermaidDirective PreProc
+
+syntax region mermaidString start=/"/ skip=/\\"/ end=/"/
+highlight link mermaidString String
+
+let b:current_syntax = "mermaid"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim:set sw=2:
diff --git a/runtime/syntax/meson.vim b/runtime/syntax/meson.vim
new file mode 100644
index 0000000..0af0d77
--- /dev/null
+++ b/runtime/syntax/meson.vim
@@ -0,0 +1,158 @@
+" Vim syntax file
+" Language: Meson
+" License: VIM License
+" Maintainer: Nirbheek Chauhan <nirbheek.chauhan@gmail.com>
+" Liam Beguin <liambeguin@gmail.com>
+" Last Change: 2021 Aug 16
+" Credits: Zvezdan Petkovic <zpetkovic@acm.org>
+" Neil Schemenauer <nas@meson.ca>
+" Dmitry Vasiliev
+"
+" This version is copied and edited from python.vim
+" It's very basic, and doesn't do many things I'd like it to
+" For instance, it should show errors for syntax that is valid in
+" Python but not in Meson.
+"
+" Optional highlighting can be controlled using these variables.
+"
+" let meson_space_error_highlight = 1
+"
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" We need nocompatible mode in order to continue lines with backslashes.
+" Original setting will be restored.
+let s:cpo_save = &cpo
+set cpo&vim
+
+" http://mesonbuild.com/Syntax.html
+syn keyword mesonConditional elif else if endif
+syn keyword mesonRepeat foreach endforeach
+syn keyword mesonOperator and not or in
+syn keyword mesonStatement continue break
+
+syn match mesonComment "#.*$" contains=mesonTodo,@Spell
+syn keyword mesonTodo FIXME NOTE NOTES TODO XXX contained
+
+" Strings can either be single quoted or triple counted across multiple lines,
+" but always with a '
+syn region mesonString
+ \ start="\z('\)" end="\z1" skip="\\\\\|\\\z1"
+ \ contains=mesonEscape,@Spell
+syn region mesonString
+ \ start="\z('''\)" end="\z1" keepend
+ \ contains=mesonEscape,mesonSpaceError,@Spell
+
+syn match mesonEscape "\\[abfnrtv'\\]" contained
+syn match mesonEscape "\\\o\{1,3}" contained
+syn match mesonEscape "\\x\x\{2}" contained
+syn match mesonEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained
+" Meson allows case-insensitive Unicode IDs: http://www.unicode.org/charts/
+syn match mesonEscape "\\N{\a\+\%(\s\a\+\)*}" contained
+syn match mesonEscape "\\$"
+
+" Meson only supports integer numbers
+" http://mesonbuild.com/Syntax.html#numbers
+syn match mesonNumber "\<\d\+\>"
+syn match mesonNumber "\<0x\x\+\>"
+syn match mesonNumber "\<0o\o\+\>"
+
+" booleans
+syn keyword mesonBoolean false true
+
+" Built-in functions
+syn keyword mesonBuiltin
+ \ add_global_arguments
+ \ add_global_link_arguments
+ \ add_languages
+ \ add_project_arguments
+ \ add_project_link_arguments
+ \ add_test_setup
+ \ alias_target
+ \ assert
+ \ benchmark
+ \ both_libraries
+ \ build_machine
+ \ build_target
+ \ configuration_data
+ \ configure_file
+ \ custom_target
+ \ declare_dependency
+ \ dependency
+ \ disabler
+ \ environment
+ \ error
+ \ executable
+ \ files
+ \ find_library
+ \ find_program
+ \ generator
+ \ get_option
+ \ get_variable
+ \ gettext
+ \ host_machine
+ \ import
+ \ include_directories
+ \ install_data
+ \ install_headers
+ \ install_man
+ \ install_subdir
+ \ install_emptydir
+ \ is_disabler
+ \ is_variable
+ \ jar
+ \ join_paths
+ \ library
+ \ meson
+ \ message
+ \ option
+ \ project
+ \ run_command
+ \ run_target
+ \ set_variable
+ \ shared_library
+ \ shared_module
+ \ static_library
+ \ subdir
+ \ subdir_done
+ \ subproject
+ \ summary
+ \ target_machine
+ \ test
+ \ unset_variable
+ \ vcs_tag
+ \ warning
+ \ range
+
+if exists("meson_space_error_highlight")
+ " trailing whitespace
+ syn match mesonSpaceError display excludenl "\s\+$"
+ " mixed tabs and spaces
+ syn match mesonSpaceError display " \+\t"
+ syn match mesonSpaceError display "\t\+ "
+endif
+
+" The default highlight links. Can be overridden later.
+hi def link mesonStatement Statement
+hi def link mesonConditional Conditional
+hi def link mesonRepeat Repeat
+hi def link mesonOperator Operator
+hi def link mesonComment Comment
+hi def link mesonTodo Todo
+hi def link mesonString String
+hi def link mesonEscape Special
+hi def link mesonNumber Number
+hi def link mesonBuiltin Function
+hi def link mesonBoolean Boolean
+if exists("meson_space_error_higlight")
+ hi def link mesonSpaceError Error
+endif
+
+let b:current_syntax = "meson"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim:set sw=2 sts=2 ts=8 noet:
diff --git a/runtime/syntax/messages.vim b/runtime/syntax/messages.vim
new file mode 100644
index 0000000..8b970aa
--- /dev/null
+++ b/runtime/syntax/messages.vim
@@ -0,0 +1,74 @@
+" Vim syntax file
+" Language: /var/log/messages file
+" Maintainer: Yakov Lerner <iler.ml@gmail.com>
+" Latest Revision: 2008-06-29
+" Changes: 2008-06-29 support for RFC3339 tuimestamps James Vega
+" 2016 Jan 19: messagesDate changed by Bram
+" 2021 Jan 27: messagesHourRFC3339 changed from #946
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match messagesBegin display '^' nextgroup=messagesDate,messagesDateRFC3339
+
+syn match messagesDate contained display '[[:lower:][:upper:]][[:lower:][:upper:]][[:lower:][:upper:]] [ 0-9]\d *'
+ \ nextgroup=messagesHour
+
+syn match messagesHour contained display '\d\d:\d\d:\d\d\s*'
+ \ nextgroup=messagesHost
+
+syn match messagesDateRFC3339 contained display '\d\{4}-\d\d-\d\d'
+ \ nextgroup=messagesRFC3339T
+
+syn match messagesRFC3339T contained display '\cT'
+ \ nextgroup=messagesHourRFC3339
+
+syn match messagesHourRFC3339 contained display '\c\d\d:\d\d:\d\d\(\.\d\+\)\=\([+-]\d\d:\d\d\|Z\)\s*'
+ \ nextgroup=messagesHost
+
+syn match messagesHost contained display '\S*\s*'
+ \ nextgroup=messagesLabel
+
+syn match messagesLabel contained display '\s*[^:]*:\s*'
+ \ nextgroup=messagesText contains=messagesKernel,messagesPID
+
+syn match messagesPID contained display '\[\zs\d\+\ze\]'
+
+syn match messagesKernel contained display 'kernel:'
+
+
+syn match messagesIP '\d\+\.\d\+\.\d\+\.\d\+'
+
+syn match messagesURL '\w\+://\S\+'
+
+syn match messagesText contained display '.*'
+ \ contains=messagesNumber,messagesIP,messagesURL,messagesError
+
+syn match messagesNumber contained '0x[0-9a-fA-F]*\|\[<[0-9a-f]\+>\]\|\<\d[0-9a-fA-F]*'
+
+syn match messagesError contained '\c.*\<\(FATAL\|ERROR\|ERRORS\|FAILED\|FAILURE\).*'
+
+
+hi def link messagesDate Constant
+hi def link messagesHour Type
+hi def link messagesDateRFC3339 Constant
+hi def link messagesHourRFC3339 Type
+hi def link messagesRFC3339T Normal
+hi def link messagesHost Identifier
+hi def link messagesLabel Operator
+hi def link messagesPID Constant
+hi def link messagesKernel Special
+hi def link messagesError ErrorMsg
+hi def link messagesIP Constant
+hi def link messagesURL Underlined
+hi def link messagesText Normal
+hi def link messagesNumber Number
+
+let b:current_syntax = "messages"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/mf.vim b/runtime/syntax/mf.vim
new file mode 100644
index 0000000..d1faa19
--- /dev/null
+++ b/runtime/syntax/mf.vim
@@ -0,0 +1,308 @@
+vim9script
+
+# Vim syntax file
+# Language: METAFONT
+# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
+# Former Maintainers: Andreas Scherer <andreas.scherer@pobox.com>
+# Latest Revision: 2022 Aug 12
+
+if exists("b:current_syntax")
+ finish
+endif
+
+# Deprecation warnings: to be removed eventually
+if exists("g:plain_mf_macros")
+ echomsg "[mf] g:plain_mf_macros is deprecated: use g:mf_plain_macros instead."
+endif
+if exists("g:plain_mf_modes")
+ echomsg "[mf] g:plain_mf_modes is deprecated: use g:mf_plain_modes instead."
+endif
+if exists("g:other_mf_macros")
+ echomsg "[mf] g:other_mf_macros is deprecated: use g:mf_other_macros instead."
+endif
+
+syn iskeyword @,_
+
+# METAFONT 'primitives' as defined in chapter 25 of 'The METAFONTbook'
+# Page 210: 'boolean expressions'
+syn keyword mfBoolExp and charexists false known not odd or true unknown
+
+# Page 210: 'numeric expression'
+syn keyword mfNumExp ASCII angle cosd directiontime floor hex length
+syn keyword mfNumExp mexp mlog normaldeviate oct sind sqrt totalweight
+syn keyword mfNumExp turningnumber uniformdeviate xpart xxpart xypart
+syn keyword mfNumExp ypart yxpart yypart
+
+# Page 211: 'internal quantities'
+syn keyword mfInternal autorounding boundarychar charcode chardp chardx
+syn keyword mfInternal chardy charext charht charic charwd day designsize
+syn keyword mfInternal fillin fontmaking granularity hppp jobname month
+syn keyword mfInternal pausing proofing showstopping smoothing time
+syn keyword mfInternal tracingcapsules tracingchoices tracingcommands
+syn keyword mfInternal tracingedges tracingequations tracingmacros
+syn keyword mfInternal tracingonline tracingoutput tracingpens
+syn keyword mfInternal tracingrestores tracingspecs tracingstats
+syn keyword mfInternal tracingtitles turningcheck vppp warningcheck
+syn keyword mfInternal xoffset year yoffset
+
+# Page 212: 'pair expressions'
+syn keyword mfPairExp of penoffset point postcontrol precontrol rotated
+syn keyword mfPairExp scaled shifted slanted transformed xscaled yscaled
+syn keyword mfPairExp zscaled
+
+# Page 213: 'path expressions'
+syn keyword mfPathExp atleast controls curl cycle makepath reverse
+syn keyword mfPathExp subpath tension
+
+# Page 214: 'pen expressions'
+syn keyword mfPenExp makepen nullpen pencircle
+
+# Page 214: 'picture expressions'
+syn keyword mfPicExp nullpicture
+
+# Page 214: 'string expressions'
+syn keyword mfStringExp char decimal readstring str substring
+
+# Page 217: 'commands and statements'
+syn keyword mfCommand addto also at batchmode contour cull delimiters
+syn keyword mfCommand display doublepath dropping dump end errhelp
+syn keyword mfCommand errmessage errorstopmode everyjob from interim
+syn keyword mfCommand inwindow keeping let message newinternal
+syn keyword mfCommand nonstopmode numspecial openwindow outer randomseed
+syn keyword mfCommand save scrollmode shipout show showdependencies
+syn keyword mfCommand showstats showtoken showvariable special to withpen
+syn keyword mfCommand withweight
+
+# Page 56: 'types'
+syn keyword mfType boolean numeric pair path pen picture string
+syn keyword mfType transform
+
+# Page 155: 'grouping'
+syn keyword mfStatement begingroup endgroup
+
+# Page 165: 'definitions'
+syn keyword mfDefinition def enddef expr primary primarydef secondary
+syn keyword mfDefinition secondarydef suffix tertiary tertiarydef text
+syn keyword mfDefinition vardef
+
+# Page 169: 'conditions and loops'
+syn keyword mfCondition else elseif endfor exitif fi for forever
+syn keyword mfCondition forsuffixes if step until
+
+# Other primitives listed in the index
+syn keyword mfPrimitive charlist endinput expandafter extensible fontdimen
+syn keyword mfPrimitive headerbyte inner input intersectiontimes kern
+syn keyword mfPrimitive ligtable quote scantokens skipto
+
+# Implicit suffix parameters
+syn match mfSuffixParam "@#\|#@\|@"
+
+# These are just tags, but given their special status, we
+# highlight them as variables
+syn keyword mfVariable x y
+
+# Keywords defined by plain.mf (defined on pp.262-278)
+if get(g:, "mf_plain_macros", get(g:, "plain_mf_macros", 1))
+ syn keyword mfDef addto_currentpicture beginchar capsule_def
+ syn keyword mfDef change_width clear_pen_memory clearit clearpen
+ syn keyword mfDef clearxy culldraw cullit cutdraw
+ syn keyword mfDef define_blacker_pixels define_corrected_pixels
+ syn keyword mfDef define_good_x_pixels define_good_y_pixels
+ syn keyword mfDef define_horizontal_corrected_pixels define_pixels
+ syn keyword mfDef define_whole_blacker_pixels define_whole_pixels
+ syn keyword mfDef define_whole_vertical_blacker_pixels
+ syn keyword mfDef define_whole_vertical_pixels downto draw drawdot
+ syn keyword mfDef endchar erase exitunless fill filldraw fix_units
+ syn keyword mfDef flex font_coding_scheme font_extra_space
+ syn keyword mfDef font_identifier font_normal_shrink
+ syn keyword mfDef font_normal_space font_normal_stretch font_quad
+ syn keyword mfDef font_size font_slant font_x_height gfcorners gobble
+ syn keyword mfDef hide imagerules interact italcorr killtext
+ syn keyword mfDef loggingall lowres_fix makebox makegrid maketicks
+ syn keyword mfDef mode_def mode_setup nodisplays notransforms numtok
+ syn keyword mfDef openit penrazor pensquare penstroke pickup
+ syn keyword mfDef proofoffset proofrule range reflectedabout
+ syn keyword mfDef rotatedaround screenchars screenrule screenstrokes
+ syn keyword mfDef shipit showit smode stop superellipse takepower
+ syn keyword mfDef tracingall tracingnone undraw undrawdot unfill
+ syn keyword mfDef unfilldraw upto z
+ syn match mfDef "???"
+ syn keyword mfVardef bot byte ceiling counterclockwise cutoff decr dir
+ syn keyword mfVardef direction directionpoint grayfont hround incr
+ syn keyword mfVardef interpath inverse labelfont labels lft magstep
+ # Note: nodot is not a vardef, it is used as in makelabel.lft.nodot("5",z5)
+ # (METAFONT only)
+ syn keyword mfVardef makelabel max min nodot penlabels penpos
+ syn keyword mfVardef proofrulethickness round rt savepen slantfont solve
+ syn keyword mfVardef tensepath titlefont top unitvector vround whatever
+ syn match mpVardef "\<good\.\%(x\|y\|lft\|rt\|top\|bot\)\>"
+ syn keyword mfPrimaryDef div dotprod gobbled mod
+ syn keyword mfSecondaryDef intersectionpoint
+ syn keyword mfTertiaryDef softjoin thru
+ syn keyword mfNewInternal blacker currentwindow displaying eps epsilon
+ syn keyword mfNewInternal infinity join_radius number_of_modes o_correction
+ syn keyword mfNewInternal pen_bot pen_lft pen_rt pen_top pixels_per_inch
+ syn keyword mfNewInternal screen_cols screen_rows tolerance
+ # Predefined constants
+ syn keyword mfConstant base_name base_version blankpicture ditto down
+ syn keyword mfConstant fullcircle halfcircle identity left lowres origin
+ syn keyword mfConstant penspeck proof quartercircle right rulepen smoke
+ syn keyword mfConstant unitpixel unitsquare up
+ # Other predefined variables
+ syn keyword mfVariable aspect_ratio currentpen extra_beginchar
+ syn keyword mfVariable extra_endchar currentpen_path currentpicture
+ syn keyword mfVariable currenttransform d extra_setup h localfont mag mode
+ syn keyword mfVariable mode_name w
+ # let statements:
+ syn keyword mfnumExp abs
+ syn keyword mfPairExp rotatedabout
+ syn keyword mfCommand bye relax
+endif
+
+# By default, METAFONT loads modes.mf, too
+if get(g:, "plain_mf_modes", get(g:, "mf_plain_modes", 1))
+ syn keyword mfConstant APSSixMed AgfaFourZeroZero AgfaThreeFourZeroZero
+ syn keyword mfConstant AtariNineFive AtariNineSix AtariSLMEightZeroFour
+ syn keyword mfConstant AtariSMOneTwoFour CItohEightFiveOneZero
+ syn keyword mfConstant CItohThreeOneZero CanonBJCSixZeroZero CanonCX
+ syn keyword mfConstant CanonEX CanonLBPLX CanonLBPTen CanonSX ChelgraphIBX
+ syn keyword mfConstant CompugraphicEightSixZeroZero
+ syn keyword mfConstant CompugraphicNineSixZeroZero DD DEClarge DECsmall
+ syn keyword mfConstant DataDiscNew EightThree EpsonAction
+ syn keyword mfConstant EpsonLQFiveZeroZeroLo EpsonLQFiveZeroZeroMed
+ syn keyword mfConstant EpsonMXFX EpsonSQEightSevenZero EpsonStylusPro
+ syn keyword mfConstant EpsonStylusProHigh EpsonStylusProLow
+ syn keyword mfConstant EpsonStylusProMed FourFour GThreefax HPDeskJet
+ syn keyword mfConstant HPLaserJetIIISi IBMFourTwoFiveZero IBMFourTwoOneSix
+ syn keyword mfConstant IBMFourTwoThreeZero IBMFourZeroOneNine
+ syn keyword mfConstant IBMFourZeroThreeNine IBMFourZeroTwoNine
+ syn keyword mfConstant IBMProPrinter IBMSixOneFiveFour IBMSixSixSevenZero
+ syn keyword mfConstant IBMThreeEightOneTwo IBMThreeEightTwoZero
+ syn keyword mfConstant IBMThreeOneNineThree IBMThreeOneSevenNine
+ syn keyword mfConstant IBMUlfHolleberg LASevenFive LNOthreR LNOthree
+ syn keyword mfConstant LNZeroOne LNZeroThree LPSFourZero LPSTwoZero
+ syn keyword mfConstant LexmarkFourZeroThreeNine LexmarkOptraR
+ syn keyword mfConstant LexmarkOptraS LinotypeLThreeThreeZero
+ syn keyword mfConstant LinotypeOneZeroZero LinotypeOneZeroZeroLo
+ syn keyword mfConstant LinotypeThreeZeroZeroHi MacTrueSize NeXTprinter
+ syn keyword mfConstant NeXTscreen NecTwoZeroOne Newgen NineOne
+ syn keyword mfConstant OCESixSevenFiveZeroPS OneTwoZero OneZeroZero
+ syn keyword mfConstant PrintwareSevenTwoZeroIQ Prism QMSOneSevenTwoFive
+ syn keyword mfConstant QMSOneSevenZeroZero QMSTwoFourTwoFive RicohA
+ syn keyword mfConstant RicohFortyEighty RicohFourZeroEightZero RicohLP
+ syn keyword mfConstant SparcPrinter StarNLOneZero VAXstation VTSix
+ syn keyword mfConstant VarityperFiveZeroSixZeroW
+ syn keyword mfConstant VarityperFourThreeZeroZeroHi
+ syn keyword mfConstant VarityperFourThreeZeroZeroLo
+ syn keyword mfConstant VarityperFourTwoZeroZero VarityperSixZeroZero
+ syn keyword mfConstant XeroxDocutech XeroxEightSevenNineZero
+ syn keyword mfConstant XeroxFourZeroFiveZero XeroxNineSevenZeroZero
+ syn keyword mfConstant XeroxPhaserSixTwoZeroZeroDP XeroxThreeSevenZeroZero
+ syn keyword mfConstant Xerox_world agfafzz agfatfzz amiga aps apssixhi
+ syn keyword mfConstant aselect atariezf atarinf atarins atariotf bitgraph
+ syn keyword mfConstant bjtenex bjtzzex bjtzzl bjtzzs boise canonbjc
+ syn keyword mfConstant canonex canonlbp cg cgl cgnszz citohtoz corona crs
+ syn keyword mfConstant cthreeten cx datadisc declarge decsmall deskjet
+ syn keyword mfConstant docutech dover dp dpdfezzz eighthre elvira epscszz
+ syn keyword mfConstant epsdraft epsdrft epsdrftl epsfast epsfastl epshi
+ syn keyword mfConstant epslo epsmed epsmedl epson epsonact epsonfx epsonl
+ syn keyword mfConstant epsonlo epsonlol epsonlq epsonsq epstylus epstylwr
+ syn keyword mfConstant epstyplo epstypmd epstypml epstypro epswlo epswlol
+ syn keyword mfConstant esphi fourfour gpx gtfax gtfaxhi gtfaxl gtfaxlo
+ syn keyword mfConstant gtfaxlol help hifax highfax hplaser hprugged ibm_a
+ syn keyword mfConstant ibmd ibmega ibmegal ibmfzon ibmfztn ibmpp ibmppl
+ syn keyword mfConstant ibmsoff ibmteot ibmtetz ibmtont ibmtosn ibmtosnl
+ syn keyword mfConstant ibmvga ibx imagen imagewriter itoh itohl itohtoz
+ syn keyword mfConstant itohtozl iw jetiiisi kyocera laserjet laserjetfive
+ syn keyword mfConstant laserjetfivemp laserjetfour laserjetfourthousand
+ syn keyword mfConstant laserjetfourzerozerozero laserjethi laserjetlo
+ syn keyword mfConstant laserjettwoonezerozero
+ syn keyword mfConstant laserjettwoonezerozerofastres lasermaster
+ syn keyword mfConstant laserwriter lasf lexmarkr lexmarks lexmarku
+ syn keyword mfConstant linohalf linohi linolo linolttz linoone linosuper
+ syn keyword mfConstant linothree linothreelo linotzzh ljfive ljfivemp
+ syn keyword mfConstant ljfour ljfzzz ljfzzzfr ljlo ljtozz ljtozzfr lmaster
+ syn keyword mfConstant lnotr lnzo lps lpstz lqhires lqlores lqmed lqmedl
+ syn keyword mfConstant lqmedres lview lviewl lwpro macmag mactrue modes_mf
+ syn keyword mfConstant ncd nec nechi neclm nectzo newdd newddl nexthi
+ syn keyword mfConstant nextscreen nextscrn nineone nullmode ocessfz
+ syn keyword mfConstant okidata okidatal okifourten okifte okihi onetz
+ syn keyword mfConstant onezz pcprevw pcscreen phaser phaserfs phasertf
+ syn keyword mfConstant phasertfl phasertl pixpt printware prntware
+ syn keyword mfConstant proprinter qms qmsesz qmsostf qmsoszz qmstftf ricoh
+ syn keyword mfConstant ricoha ricohlp ricohsp sherpa sparcptr starnlt
+ syn keyword mfConstant starnltl styletwo stylewr stylewri stylewriter sun
+ syn keyword mfConstant supre swtwo toshiba ultre varityper vs vtftzz
+ syn keyword mfConstant vtftzzhi vtftzzlo vtfzszw vtszz xpstzz xpstzzl
+ syn keyword mfConstant xrxesnz xrxfzfz xrxnszz xrxtszz
+ syn keyword mfDef BCPL_string coding_scheme font_face_byte
+ syn keyword mfDef font_family landscape
+ syn keyword mfDef mode_extra_info mode_help mode_param
+ syn keyword mfNewInternal blacker_min
+endif
+
+# Some other basic macro names, e.g., from cmbase, logo, etc.
+if get(g:, "mf_other_macros", get(g:, "other_mf_macros", 1))
+ syn keyword mfDef beginlogochar
+ syn keyword mfDef font_setup
+ syn keyword mfPrimitive generate
+endif
+
+# Numeric tokens
+syn match mfNumeric "[-]\=\d\+"
+syn match mfNumeric "[-]\=\.\d\+"
+syn match mfNumeric "[-]\=\d\+\.\d\+"
+
+# METAFONT lengths
+syn match mfLength "\<\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\>"
+syn match mfLength "[-]\=\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\="
+syn match mfLength "[-]\=\.\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\="
+syn match mfLength "[-]\=\d\+\.\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\="
+
+# String constants
+syn match mfOpenString /"[^"]*/
+syn region mfString oneline keepend start=+"+ end=+"+
+
+# Comments:
+syn keyword mfTodoComment contained TODO FIXME XXX DEBUG NOTE
+syn match mfComment "%.*$" contains=mfTodoComment,@Spell
+
+# synchronizing
+syn sync maxlines=100
+
+# Define the default highlighting
+hi def link mfBoolExp Statement
+hi def link mfNumExp Statement
+hi def link mfPairExp Statement
+hi def link mfPathExp Statement
+hi def link mfPenExp Statement
+hi def link mfPicExp Statement
+hi def link mfStringExp Statement
+hi def link mfInternal Identifier
+hi def link mfCommand Statement
+hi def link mfType Type
+hi def link mfStatement Statement
+hi def link mfDefinition Statement
+hi def link mfCondition Conditional
+hi def link mfPrimitive Statement
+hi def link mfDef Function
+hi def link mfVardef mfDef
+hi def link mfPrimaryDef mfDef
+hi def link mfSecondaryDef mfDef
+hi def link mfTertiaryDef mfDef
+hi def link mfCoord Identifier
+hi def link mfPoint Identifier
+hi def link mfNumeric Number
+hi def link mfLength Number
+hi def link mfComment Comment
+hi def link mfString String
+hi def link mfOpenString Todo
+hi def link mfSuffixParam Label
+hi def link mfNewInternal mfInternal
+hi def link mfVariable Identifier
+hi def link mfConstant Constant
+hi def link mfTodoComment Todo
+
+b:current_syntax = "mf"
+
+# vim: sw=2 fdm=marker
diff --git a/runtime/syntax/mgl.vim b/runtime/syntax/mgl.vim
new file mode 100644
index 0000000..f7bc617
--- /dev/null
+++ b/runtime/syntax/mgl.vim
@@ -0,0 +1,117 @@
+" Vim syntax file
+" Language: MGL
+" Version: 1.0
+" Last Change: 2006 Feb 21
+" Maintainer: Gero Kuhlmann <gero@gkminix.han.de>
+"
+" $Id: mgl.vim,v 1.1 2006/02/21 22:08:20 vimboss Exp $
+"
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+syn sync lines=250
+
+syn keyword mglBoolean true false
+syn keyword mglConditional if else then
+syn keyword mglConstant nil
+syn keyword mglPredefined maxint
+syn keyword mglLabel case goto label
+syn keyword mglOperator to downto in of with
+syn keyword mglOperator and not or xor div mod
+syn keyword mglRepeat do for repeat while to until
+syn keyword mglStatement procedure function break continue return restart
+syn keyword mglStatement program begin end const var type
+syn keyword mglStruct record
+syn keyword mglType integer string char boolean char ipaddr array
+
+
+" String
+if !exists("mgl_one_line_string")
+ syn region mglString matchgroup=mglString start=+'+ end=+'+ contains=mglStringEscape
+ syn region mglString matchgroup=mglString start=+"+ end=+"+ contains=mglStringEscapeGPC
+else
+ "wrong strings
+ syn region mglStringError matchgroup=mglStringError start=+'+ end=+'+ end=+$+ contains=mglStringEscape
+ syn region mglStringError matchgroup=mglStringError start=+"+ end=+"+ end=+$+ contains=mglStringEscapeGPC
+ "right strings
+ syn region mglString matchgroup=mglString start=+'+ end=+'+ oneline contains=mglStringEscape
+ syn region mglString matchgroup=mglString start=+"+ end=+"+ oneline contains=mglStringEscapeGPC
+end
+syn match mglStringEscape contained "''"
+syn match mglStringEscapeGPC contained '""'
+
+
+if exists("mgl_symbol_operator")
+ syn match mglSymbolOperator "[+\-/*=\%]"
+ syn match mglSymbolOperator "[<>]=\="
+ syn match mglSymbolOperator "<>"
+ syn match mglSymbolOperator ":="
+ syn match mglSymbolOperator "[()]"
+ syn match mglSymbolOperator "\.\."
+ syn match mglMatrixDelimiter "(."
+ syn match mglMatrixDelimiter ".)"
+ syn match mglMatrixDelimiter "[][]"
+endif
+
+syn match mglNumber "-\=\<\d\+\>"
+syn match mglHexNumber "\$[0-9a-fA-F]\+\>"
+syn match mglCharacter "\#[0-9]\+\>"
+syn match mglIpAddr "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\>"
+
+syn region mglComment start="(\*" end="\*)"
+syn region mglComment start="{" end="}"
+syn region mglComment start="//" end="$"
+
+if !exists("mgl_no_functions")
+ syn keyword mglFunction dispose new
+ syn keyword mglFunction get load print select
+ syn keyword mglFunction odd pred succ
+ syn keyword mglFunction chr ord abs sqr
+ syn keyword mglFunction exit
+ syn keyword mglOperator at timeout
+endif
+
+
+syn region mglPreProc start="(\*\$" end="\*)"
+syn region mglPreProc start="{\$" end="}"
+
+syn keyword mglException try except raise
+syn keyword mglPredefined exception
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link mglBoolean Boolean
+hi def link mglComment Comment
+hi def link mglConditional Conditional
+hi def link mglConstant Constant
+hi def link mglException Exception
+hi def link mglFunction Function
+hi def link mglLabel Label
+hi def link mglMatrixDelimiter Identifier
+hi def link mglNumber Number
+hi def link mglHexNumber Number
+hi def link mglCharacter Number
+hi def link mglIpAddr Number
+hi def link mglOperator Operator
+hi def link mglPredefined mglFunction
+hi def link mglPreProc PreProc
+hi def link mglRepeat Repeat
+hi def link mglStatement Statement
+hi def link mglString String
+hi def link mglStringEscape Special
+hi def link mglStringEscapeGPC Special
+hi def link mglStringError Error
+hi def link mglStruct mglStatement
+hi def link mglSymbolOperator mglOperator
+hi def link mglType Type
+
+
+
+let b:current_syntax = "mgl"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/mgp.vim b/runtime/syntax/mgp.vim
new file mode 100644
index 0000000..7227804
--- /dev/null
+++ b/runtime/syntax/mgp.vim
@@ -0,0 +1,69 @@
+" Vim syntax file
+" Language: mgp - MaGic Point
+" Maintainer: Gerfried Fuchs <alfie@ist.org>
+" Filenames: *.mgp
+" Last Change: 25 Apr 2001
+" URL: http://alfie.ist.org/vim/syntax/mgp.vim
+"
+" Comments are very welcome - but please make sure that you are commenting on
+" the latest version of this file.
+" SPAM is _NOT_ welcome - be ready to be reported!
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+syn match mgpLineSkip "\\$"
+
+" all the commands that are currently recognized
+syn keyword mgpCommand contained size fore back bgrad left leftfill center
+syn keyword mgpCommand contained right shrink lcutin rcutin cont xfont vfont
+syn keyword mgpCommand contained tfont tmfont tfont0 bar image newimage
+syn keyword mgpCommand contained prefix icon bimage default tab vgap hgap
+syn keyword mgpCommand contained pause mark again system filter endfilter
+syn keyword mgpCommand contained vfcap tfdir deffont font embed endembed
+syn keyword mgpCommand contained noop pcache include
+
+" charset is not yet supported :-)
+" syn keyword mgpCommand contained charset
+
+syn region mgpFile contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match mgpValue contained "\d\+"
+syn match mgpSize contained "\d\+x\d\+"
+syn match mgpLine +^%.*$+ contains=mgpCommand,mgpFile,mgpSize,mgpValue
+
+" Comments
+syn match mgpPercent +^%%.*$+
+syn match mgpHash +^#.*$+
+
+" these only work alone
+syn match mgpPage +^%page$+
+syn match mgpNoDefault +^%nodefault$+
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link mgpLineSkip Special
+
+hi def link mgpHash mgpComment
+hi def link mgpPercent mgpComment
+hi def link mgpComment Comment
+
+hi def link mgpCommand Identifier
+
+hi def link mgpLine Type
+
+hi def link mgpFile String
+hi def link mgpSize Number
+hi def link mgpValue Number
+
+hi def link mgpPage mgpDefine
+hi def link mgpNoDefault mgpDefine
+hi def link mgpDefine Define
+
+
+let b:current_syntax = "mgp"
diff --git a/runtime/syntax/mib.vim b/runtime/syntax/mib.vim
new file mode 100644
index 0000000..6062d50
--- /dev/null
+++ b/runtime/syntax/mib.vim
@@ -0,0 +1,57 @@
+" Vim syntax file
+" Language: Vim syntax file for SNMPv1 and SNMPv2 MIB and SMI files
+" Maintainer: Martin Smat <msmat@post.cz>
+" Original Author: David Pascoe <pascoedj@spamcop.net>
+" Written: Wed Jan 28 14:37:23 GMT--8:00 1998
+" Last Changed: Mon Mar 23 2010
+
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=@,48-57,_,128-167,224-235,-
+
+syn keyword mibImplicit ACCESS ANY AUGMENTS BEGIN BIT BITS BOOLEAN CHOICE
+syn keyword mibImplicit COMPONENTS CONTACT-INFO DEFINITIONS DEFVAL
+syn keyword mibImplicit DESCRIPTION DISPLAY-HINT END ENTERPRISE EXTERNAL FALSE
+syn keyword mibImplicit FROM GROUP IMPLICIT IMPLIED IMPORTS INDEX
+syn keyword mibImplicit LAST-UPDATED MANDATORY-GROUPS MAX-ACCESS
+syn keyword mibImplicit MIN-ACCESS MODULE MODULE-COMPLIANCE MODULE-IDENTITY
+syn keyword mibImplicit NOTIFICATION-GROUP NOTIFICATION-TYPE NOTIFICATIONS
+syn keyword mibImplicit NULL OBJECT-GROUP OBJECT-IDENTITY OBJECT-TYPE
+syn keyword mibImplicit OBJECTS OF OPTIONAL ORGANIZATION REFERENCE
+syn keyword mibImplicit REVISION SEQUENCE SET SIZE STATUS SYNTAX
+syn keyword mibImplicit TEXTUAL-CONVENTION TRAP-TYPE TRUE UNITS VARIABLES
+syn keyword mibImplicit WRITE-SYNTAX
+syn keyword mibValue accessible-for-notify current DisplayString
+syn keyword mibValue deprecated mandatory not-accessible obsolete optional
+syn keyword mibValue read-create read-only read-write write-only INTEGER
+syn keyword mibValue Counter Gauge IpAddress OCTET STRING experimental mib-2
+syn keyword mibValue TimeTicks RowStatus TruthValue UInteger32 snmpModules
+syn keyword mibValue Integer32 Counter32 TestAndIncr TimeStamp InstancePointer
+syn keyword mibValue OBJECT IDENTIFIER Gauge32 AutonomousType Counter64
+syn keyword mibValue PhysAddress TimeInterval MacAddress StorageType RowPointer
+syn keyword mibValue TDomain TAddress ifIndex
+
+" Epilogue SMI extensions
+syn keyword mibEpilogue FORCE-INCLUDE EXCLUDE cookie get-function set-function
+syn keyword mibEpilogue test-function get-function-async set-function-async
+syn keyword mibEpilogue test-function-async next-function next-function-async
+syn keyword mibEpilogue leaf-name
+syn keyword mibEpilogue DEFAULT contained
+
+syn match mibOperator "::="
+syn match mibComment "\ *--.\{-}\(--\|$\)"
+syn match mibNumber "\<['0-9a-fA-FhH]*\>"
+syn region mibDescription start="\"" end="\"" contains=DEFAULT
+
+hi def link mibImplicit Statement
+hi def link mibOperator Statement
+hi def link mibComment Comment
+hi def link mibConstants String
+hi def link mibNumber Number
+hi def link mibDescription Identifier
+hi def link mibEpilogue SpecialChar
+hi def link mibValue Structure
+
+let b:current_syntax = "mib"
diff --git a/runtime/syntax/mix.vim b/runtime/syntax/mix.vim
new file mode 100644
index 0000000..564d344
--- /dev/null
+++ b/runtime/syntax/mix.vim
@@ -0,0 +1,84 @@
+" Vim syntax file
+" Language: MIX (Donald Knuth's assembly language used in TAOCP)
+" Maintainer: Wu Yongwei <wuyongwei@gmail.com>
+" Filenames: *.mixal *.mix
+" Last Change: 2017-11-26 15:21:36 +0800
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case ignore
+
+" Special processing of ALF directive: implementations vary whether quotation
+" marks are needed
+syn match mixAlfParam #\s\{1,2\}"\?[^"]\{,5\}"\?# contains=mixString nextgroup=mixEndComment contained
+
+" Region for parameters
+syn match mixParam #[-+*/:=0-9a-z,()"]\+# contains=mixIdentifier,mixSpecial,mixNumber,mixString,mixLabel nextgroup=mixEndComment contained
+
+" Comment at the line end
+syn match mixEndComment ".*" contains=mixRegister contained
+
+" Identifier; must go before literals
+syn match mixIdentifier "[a-z0-9_]\+" contained
+
+" Literals
+syn match mixSpecial "[-+*/:=]" contained
+syn match mixNumber "[0-9]\+\>" contained
+syn region mixString start=+"+ skip=+\\"+ end=+"+ contained
+
+" Labels
+syn match mixLabel "^[a-z0-9_]\{,10\}\s\+" nextgroup=mixAlfSpecial,mixOpcode,mixDirective
+syn match mixLabel "[0-9][BF]" contained
+
+" Comments
+syn match mixComment "^\*.*" contains=mixRegister
+
+" Directives
+syn keyword mixDirective ORIG EQU CON END nextgroup=mixParam contained skipwhite
+syn keyword mixDirective ALF nextgroup=mixAlfParam contained
+
+" Opcodes
+syn keyword mixOpcode NOP HLT NUM CHAR FLOT FIX nextgroup=mixEndComment contained
+syn keyword mixOpcode FADD FSUB FMUL FDIV FCMP MOVE ADD SUB MUL DIV IOC IN OUT JRED JBUS JMP JSJ JOV JNOV JL JE JG JLE JNE JGE SLA SRA SLAX SRAX SLC SRC nextgroup=mixParam contained skipwhite
+syn keyword mixOpcode SLB SRB JAE JAO JXE JXO nextgroup=mixParam contained skipwhite
+
+syn match mixOpcode "LD[AX1-6]N\?\>" nextgroup=mixParam contained skipwhite
+syn match mixOpcode "ST[AX1-6JZ]\>" nextgroup=mixParam contained skipwhite
+syn match mixOpcode "EN[TN][AX1-6]\>" nextgroup=mixParam contained skipwhite
+syn match mixOpcode "INC[AX1-6]\>" nextgroup=mixParam contained skipwhite
+syn match mixOpcode "DEC[AX1-6]\>" nextgroup=mixParam contained skipwhite
+syn match mixOpcode "CMP[AX1-6]\>" nextgroup=mixParam contained skipwhite
+syn match mixOpcode "J[AX1-6]N\?[NZP]\>" nextgroup=mixParam contained skipwhite
+
+" Switch back to being case sensitive
+syn case match
+
+" Registers (only to be used in comments now)
+syn keyword mixRegister rA rX rI1 rI2 rI3 rI4 rI5 rI6 rJ contained
+
+" The default highlighting
+hi def link mixRegister Special
+hi def link mixLabel Define
+hi def link mixComment Comment
+hi def link mixEndComment Comment
+hi def link mixDirective Keyword
+hi def link mixOpcode Keyword
+
+hi def link mixSpecial Special
+hi def link mixNumber Number
+hi def link mixString String
+hi def link mixAlfParam String
+hi def link mixIdentifier Identifier
+
+let b:current_syntax = "mix"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8
diff --git a/runtime/syntax/mma.vim b/runtime/syntax/mma.vim
new file mode 100644
index 0000000..d2f22e9
--- /dev/null
+++ b/runtime/syntax/mma.vim
@@ -0,0 +1,321 @@
+" Vim syntax file
+" Language: Mathematica
+" Maintainer: steve layland <layland@wolfram.com>
+" Last Change: 2012 Feb 03 by Thilo Six
+" Source: http://members.wri.com/layland/vim/syntax/mma.vim
+" http://vim.sourceforge.net/scripts/script.php?script_id=1273
+" Id: $Id: mma.vim,v 1.4 2006/04/14 20:40:38 vimboss Exp $
+" NOTE:
+"
+" Empty .m files will automatically be presumed as Matlab files
+" unless you have the following in your .vimrc:
+"
+" let filetype_m="mma"
+"
+" I also recommend setting the default 'Comment' highlighting to something
+" other than the color used for 'Function', since both are plentiful in
+" most mathematica files, and they are often the same color (when using
+" background=dark).
+"
+" Credits:
+" o Original Mathematica syntax version written by
+" Wolfgang Waltenberger <wwalten@ben.tuwien.ac.at>
+" o Some ideas like the CommentStar,CommentTitle were adapted
+" from the Java vim syntax file by Claudio Fleiner. Thanks!
+" o Everything else written by steve <layland@wolfram.com>
+"
+" Bugs:
+" o Vim 6.1 didn't really have support for character classes
+" of other named character classes. For example, [\a\d]
+" didn't work. Therefore, a lot of this code uses explicit
+" character classes instead: [0-9a-zA-Z]
+"
+" TODO:
+" folding
+" fix nesting
+" finish populating popular symbols
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Group Definitions:
+syntax cluster mmaNotes contains=mmaTodo,mmaFixme
+syntax cluster mmaComments contains=mmaComment,mmaFunctionComment,mmaItem,mmaFunctionTitle,mmaCommentStar
+syntax cluster mmaCommentStrings contains=mmaLooseQuote,mmaCommentString,mmaUnicode
+syntax cluster mmaStrings contains=@mmaCommentStrings,mmaString
+syntax cluster mmaTop contains=mmaOperator,mmaGenericFunction,mmaPureFunction,mmaVariable
+
+" Predefined Constants:
+" to list all predefined Symbols would be too insane...
+" it's probably smarter to define a select few, and get the rest from
+" context if absolutely necessary.
+" TODO - populate this with other often used Symbols
+
+" standard fixed symbols:
+syntax keyword mmaVariable True False None Automatic All Null C General
+
+" mathematical constants:
+syntax keyword mmaVariable Pi I E Infinity ComplexInfinity Indeterminate GoldenRatio EulerGamma Degree Catalan Khinchin Glaisher
+
+" stream data / atomic heads:
+syntax keyword mmaVariable Byte Character Expression Number Real String Word EndOfFile Integer Symbol
+
+" sets:
+syntax keyword mmaVariable Integers Complexes Reals Booleans Rationals
+
+" character classes:
+syntax keyword mmaPattern DigitCharacter LetterCharacter WhitespaceCharacter WordCharacter EndOfString StartOfString EndOfLine StartOfLine WordBoundary
+
+" SelectionMove directions/units:
+syntax keyword mmaVariable Next Previous After Before Character Word Expression TextLine CellContents Cell CellGroup EvaluationCell ButtonCell GeneratedCell Notebook
+syntax keyword mmaVariable CellTags CellStyle CellLabel
+
+" TableForm positions:
+syntax keyword mmaVariable Above Below Left Right
+
+" colors:
+syntax keyword mmaVariable Black Blue Brown Cyan Gray Green Magenta Orange Pink Purple Red White Yellow
+
+" function attributes
+syntax keyword mmaVariable Protected Listable OneIdentity Orderless Flat Constant NumericFunction Locked ReadProtected HoldFirst HoldRest HoldAll HoldAllComplete SequenceHold NHoldFirst NHoldRest NHoldAll Temporary Stub
+
+" Comment Sections:
+" this:
+" :that:
+syntax match mmaItem "\%(^[( |*\t]*\)\@<=\%(:\+\|\w\)\w\+\%( \w\+\)\{0,3}:" contained contains=@mmaNotes
+
+" Comment Keywords:
+syntax keyword mmaTodo TODO NOTE HEY contained
+syntax match mmaTodo "X\{3,}" contained
+syntax keyword mmaFixme FIX[ME] FIXTHIS BROKEN contained
+syntax match mmaFixme "BUG\%( *\#\=[0-9]\+\)\=" contained
+" yay pirates...
+syntax match mmaFixme "\%(Y\=A\+R\+G\+\|GRR\+\|CR\+A\+P\+\)\%(!\+\)\=" contained
+
+" EmPHAsis:
+" this unnecessary, but whatever :)
+syntax match mmaemPHAsis "\%(^\|\s\)\([_/]\)[a-zA-Z0-9]\+\%([- \t':]\+[a-zA-Z0-9]\+\)*\1\%(\s\|$\)" contained contains=mmaemPHAsis
+syntax match mmaemPHAsis "\%(^\|\s\)(\@<!\*[a-zA-Z0-9]\+\%([- \t':]\+[a-zA-Z0-9]\+\)*)\@!\*\%(\s\|$\)" contained contains=mmaemPHAsis
+
+" Regular Comments:
+" (* *)
+" allow nesting (* (* *) *) even though the frontend
+" won't always like it.
+syntax region mmaComment start=+(\*+ end=+\*)+ skipempty contains=@mmaNotes,mmaItem,@mmaCommentStrings,mmaemPHAsis,mmaComment
+
+" Function Comments:
+" just like a normal comment except the first sentence is Special ala Java
+" (** *)
+" TODO - fix this for nesting, or not...
+syntax region mmaFunctionComment start="(\*\*\+" end="\*\+)" contains=@mmaNotes,mmaItem,mmaFunctionTitle,@mmaCommentStrings,mmaemPHAsis,mmaComment
+syntax region mmaFunctionTitle contained matchgroup=mmaFunctionComment start="\%((\*\*[ *]*\)" matchgroup=mmaFunctionTitle keepend end=".[.!-]\=\s*$" end="[.!-][ \t\r<&]"me=e-1 end="\%(\*\+)\)\@=" contained contains=@mmaNotes,mmaItem,mmaCommentStar
+
+" catch remaining (**********)'s
+syntax match mmaComment "(\*\*\+)"
+" catch preceding *
+syntax match mmaCommentStar "^\s*\*\+" contained
+
+" Variables:
+" Dollar sign variables
+syntax match mmaVariable "\$\a\+[0-9a-zA-Z$]*"
+
+" Preceding and Following Contexts
+syntax match mmaVariable "`[a-zA-Z$]\+[0-9a-zA-Z$]*" contains=mmaVariable
+syntax match mmaVariable "[a-zA-Z$]\+[0-9a-zA-Z$]*`" contains=mmaVariable
+
+" Strings:
+" "string"
+" 'string' is not accepted (until literal strings are supported!)
+syntax region mmaString start=+\\\@<!"+ skip=+\\\@<!\\\%(\\\\\)*"+ end=+"+
+syntax region mmaCommentString oneline start=+\\\@<!"+ skip=+\\\@<!\\\%(\\\\\)*"+ end=+"+ contained
+
+
+" Patterns:
+" Each pattern marker below can be Blank[] (_), BlankSequence[] (__)
+" or BlankNullSequence[] (___). Most examples below can also be
+" combined, for example Pattern tests with Default values.
+"
+" _Head Anonymous patterns
+" name_Head
+" name:(_Head|_Head2) Named patterns
+"
+" _Head : val
+" name:_Head:val Default values
+"
+" _Head?testQ,
+" _Head?(test[#]&) Pattern tests
+"
+" name_Head/;test[name] Conditionals
+"
+" _Head:. Predefined Default
+"
+" .. ... Pattern Repeat
+
+syntax match mmaPatternError "\%(_\{4,}\|)\s*&\s*)\@!\)" contained
+
+"pattern name:
+syntax match mmaPattern "[A-Za-z0-9`]\+\s*:\+[=>]\@!" contains=mmaOperator
+"pattern default:
+syntax match mmaPattern ": *[^ ,]\+[\], ]\@=" contains=@mmaCommentStrings,@mmaTop,mmaOperator
+"pattern head/test:
+syntax match mmaPattern "[A-Za-z0-9`]*_\+\%(\a\+\)\=\%(?([^)]\+)\|?[^\]},]\+\)\=" contains=@mmaTop,@mmaCommentStrings,mmaPatternError
+
+" Operators:
+" /: ^= ^:= UpValue
+" /; Conditional
+" := = DownValue
+" == === ||
+" != =!= && Logic
+" >= <= < >
+" += -= *=
+" /= ++ -- Math
+" ^*
+" -> :> Rules
+" @@ @@@ Apply
+" /@ //@ Map
+" /. //. Replace
+" // @ Function application
+" <> ~~ String/Pattern join
+" ~ infix operator
+" . : Pattern operators
+syntax match mmaOperator "\%(@\{1,3}\|//[.@]\=\)"
+syntax match mmaOperator "\%(/[;:@.]\=\|\^\=:\==\)"
+syntax match mmaOperator "\%([-:=]\=>\|<=\=\)"
+"syntax match mmaOperator "\%(++\=\|--\=\|[/+-*]=\|[^*]\)"
+syntax match mmaOperator "[*+=^.:?-]"
+syntax match mmaOperator "\%(\~\~\=\)"
+syntax match mmaOperator "\%(=\{2,3}\|=\=!=\|||\=\|&&\|!\)" contains=ALLBUT,mmaPureFunction
+
+" Symbol Tags:
+" "SymbolName::item"
+"syntax match mmaSymbol "`\=[a-zA-Z$]\+[0-9a-zA-Z$]*\%(`\%([a-zA-Z$]\+[0-9a-zA-Z$]*\)\=\)*" contained
+syntax match mmaMessage "`\=\([a-zA-Z$]\+[0-9a-zA-Z$]*\)\%(`\%([a-zA-Z$]\+[0-9a-zA-Z$]*\)\=\)*::\a\+" contains=mmaMessageType
+syntax match mmaMessageType "::\a\+"hs=s+2 contained
+
+" Pure Functions:
+syntax match mmaPureFunction "#\%(#\|\d\+\)\="
+syntax match mmaPureFunction "&"
+
+" Named Functions:
+" Since everything is pretty much a function, get this straight
+" from context
+syntax match mmaGenericFunction "[A-Za-z0-9`]\+\s*\%([@[]\|/:\|/\=/@\)\@=" contains=mmaOperator
+syntax match mmaGenericFunction "\~\s*[^~]\+\s*\~"hs=s+1,he=e-1 contains=mmaOperator,mmaBoring
+syntax match mmaGenericFunction "//\s*[A-Za-z0-9`]\+"hs=s+2 contains=mmaOperator
+
+" Numbers:
+syntax match mmaNumber "\<\%(\d\+\.\=\d*\|\d*\.\=\d\+\)\>"
+syntax match mmaNumber "`\d\+\%(\d\@!\.\|\>\)"
+
+" Special Characters:
+" \[Name] named character
+" \ooo octal
+" \.xx 2 digit hex
+" \:xxxx 4 digit hex (multibyte unicode)
+syntax match mmaUnicode "\\\[\w\+\d*\]"
+syntax match mmaUnicode "\\\%(\x\{3}\|\.\x\{2}\|:\x\{4}\)"
+
+" Syntax Errors:
+syntax match mmaError "\*)" containedin=ALLBUT,@mmaComments,@mmaStrings
+syntax match mmaError "\%([/]{3,}\|[&:|+*?~-]\{3,}\|[.=]\{4,}\|_\@<=\.\{2,}\|`\{2,}\)" containedin=ALLBUT,@mmaComments,@mmaStrings
+
+" Punctuation:
+" things that shouldn't really be highlighted, or highlighted
+" in they're own group if you _really_ want. :)
+" ( ) { }
+" TODO - use Delimiter group?
+syntax match mmaBoring "[(){}]" contained
+
+" ------------------------------------
+" future explorations...
+" ------------------------------------
+" Function Arguments:
+" anything between brackets []
+" (fold)
+"syntax region mmaArgument start="\[" end="\]" containedin=ALLBUT,@mmaComments,@mmaStrings transparent fold
+
+" Lists:
+" (fold)
+"syntax region mmaLists start="{" end="}" containedin=ALLBUT,@mmaComments,@mmaStrings transparent fold
+
+" Regions:
+" (fold)
+"syntax region mmaRegion start="(\*\+[^<]*<!--[^>]*\*\+)" end="--> \*)" containedin=ALLBUT,@mmaStrings transparent fold keepend
+
+" show fold text
+set commentstring='(*%s*)'
+"set foldtext=MmaFoldText()
+
+"function MmaFoldText()
+" let line = getline(v:foldstart)
+"
+" let lines = v:foldend-v:foldstart+1
+"
+" let sub = substitute(line, '(\*\+|\*\+)|[-*_]\+', '', 'g')
+"
+" if match(line, '(\*') != -1
+" let lines = lines.' line comment'
+" else
+" let lines = lines.' lines'
+" endif
+"
+" return v:folddashes.' '.lines.' '.sub
+"endf
+
+"this is slow for computing folds, but it does so accurately
+syntax sync fromstart
+
+" but this seems to do alright for non fold syntax coloring.
+" for folding, however, it doesn't get the nesting right.
+" TODO - find sync group for multiline modules? ick...
+
+" sync multi line comments
+"syntax sync match syncComments groupthere NONE "\*)"
+"syntax sync match syncComments groupthere mmaComment "(\*"
+
+"set foldmethod=syntax
+"set foldnestmax=1
+"set foldminlines=15
+
+
+" NOTE - the following links are not guaranteed to
+" look good under all colorschemes. You might need to
+" :so $VIMRUNTIME/syntax/hitest.vim and tweak these to
+" look good in yours
+
+
+hi def link mmaComment Comment
+hi def link mmaCommentStar Comment
+hi def link mmaFunctionComment Comment
+hi def link mmaLooseQuote Comment
+hi def link mmaGenericFunction Function
+hi def link mmaVariable Identifier
+" hi def link mmaSymbol Identifier
+hi def link mmaOperator Operator
+hi def link mmaPatternOp Operator
+hi def link mmaPureFunction Operator
+hi def link mmaString String
+hi def link mmaCommentString String
+hi def link mmaUnicode String
+hi def link mmaMessage Type
+hi def link mmaNumber Type
+hi def link mmaPattern Type
+hi def link mmaError Error
+hi def link mmaFixme Error
+hi def link mmaPatternError Error
+hi def link mmaTodo Todo
+hi def link mmaemPHAsis Special
+hi def link mmaFunctionTitle Special
+hi def link mmaMessageType Special
+hi def link mmaItem Preproc
+
+
+let b:current_syntax = "mma"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/mmix.vim b/runtime/syntax/mmix.vim
new file mode 100644
index 0000000..0590767
--- /dev/null
+++ b/runtime/syntax/mmix.vim
@@ -0,0 +1,152 @@
+" Vim syntax file
+" Language: MMIX
+" Maintainer: Dirk Hüsken, <huesken@informatik.uni-tuebingen.de>
+" Last Change: 2012 Jun 01
+" (Dominique Pelle added @Spell)
+" Filenames: *.mms
+" URL: http://homepages.uni-tuebingen.de/student/dirk.huesken/vim/syntax/mmix.vim
+
+" Limitations: Comments must start with either % or //
+" (preferably %, Knuth-Style)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" MMIX data types
+syn keyword mmixType byte wyde tetra octa
+
+" different literals...
+syn match decNumber "[0-9]*"
+syn match octNumber "0[0-7][0-7]\+"
+syn match hexNumber "#[0-9a-fA-F]\+"
+syn region mmixString start=+"+ skip=+\\"+ end=+"+ contains=@Spell
+syn match mmixChar "'.'"
+
+" ...and more special MMIX stuff
+syn match mmixAt "@"
+syn keyword mmixSegments Data_Segment Pool_Segment Stack_Segment
+
+syn match mmixIdentifier "[a-z_][a-z0-9_]*"
+
+" labels (for branches etc)
+syn match mmixLabel "^[a-z0-9_:][a-z0-9_]*"
+syn match mmixLabel "[0-9][HBF]"
+
+" pseudo-operations
+syn keyword mmixPseudo is loc greg
+
+" comments
+syn match mmixComment "%.*" contains=@Spell
+syn match mmixComment "//.*" contains=@Spell
+syn match mmixComment "^\*.*" contains=@Spell
+
+
+syn keyword mmixOpcode trap fcmp fun feql fadd fix fsub fixu
+syn keyword mmixOpcode fmul fcmpe fune feqle fdiv fsqrt frem fint
+
+syn keyword mmixOpcode floti flotui sfloti sflotui i
+syn keyword mmixOpcode muli mului divi divui
+syn keyword mmixOpcode addi addui subi subui
+syn keyword mmixOpcode 2addui 4addui 8addui 16addui
+syn keyword mmixOpcode cmpi cmpui negi negui
+syn keyword mmixOpcode sli slui sri srui
+syn keyword mmixOpcode bnb bzb bpb bodb
+syn keyword mmixOpcode bnnb bnzb bnpb bevb
+syn keyword mmixOpcode pbnb pbzb pbpb pbodb
+syn keyword mmixOpcode pbnnb pbnzb pbnpb pbevb
+syn keyword mmixOpcode csni cszi cspi csodi
+syn keyword mmixOpcode csnni csnzi csnpi csevi
+syn keyword mmixOpcode zsni zszi zspi zsodi
+syn keyword mmixOpcode zsnni zsnzi zsnpi zsevi
+syn keyword mmixOpcode ldbi ldbui ldwi ldwui
+syn keyword mmixOpcode ldti ldtui ldoi ldoui
+syn keyword mmixOpcode ldsfi ldhti cswapi ldunci
+syn keyword mmixOpcode ldvtsi preldi pregoi goi
+syn keyword mmixOpcode stbi stbui stwi stwui
+syn keyword mmixOpcode stti sttui stoi stoui
+syn keyword mmixOpcode stsfi sthti stcoi stunci
+syn keyword mmixOpcode syncdi presti syncidi pushgoi
+syn keyword mmixOpcode ori orni nori xori
+syn keyword mmixOpcode andi andni nandi nxori
+syn keyword mmixOpcode bdifi wdifi tdifi odifi
+syn keyword mmixOpcode muxi saddi mori mxori
+syn keyword mmixOpcode muli mului divi divui
+
+syn keyword mmixOpcode flot flotu sflot sflotu
+syn keyword mmixOpcode mul mulu div divu
+syn keyword mmixOpcode add addu sub subu
+syn keyword mmixOpcode 2addu 4addu 8addu 16addu
+syn keyword mmixOpcode cmp cmpu neg negu
+syn keyword mmixOpcode sl slu sr sru
+syn keyword mmixOpcode bn bz bp bod
+syn keyword mmixOpcode bnn bnz bnp bev
+syn keyword mmixOpcode pbn pbz pbp pbod
+syn keyword mmixOpcode pbnn pbnz pbnp pbev
+syn keyword mmixOpcode csn csz csp csod
+syn keyword mmixOpcode csnn csnz csnp csev
+syn keyword mmixOpcode zsn zsz zsp zsod
+syn keyword mmixOpcode zsnn zsnz zsnp zsev
+syn keyword mmixOpcode ldb ldbu ldw ldwu
+syn keyword mmixOpcode ldt ldtu ldo ldou
+syn keyword mmixOpcode ldsf ldht cswap ldunc
+syn keyword mmixOpcode ldvts preld prego go
+syn keyword mmixOpcode stb stbu stw stwu
+syn keyword mmixOpcode stt sttu sto stou
+syn keyword mmixOpcode stsf stht stco stunc
+syn keyword mmixOpcode syncd prest syncid pushgo
+syn keyword mmixOpcode or orn nor xor
+syn keyword mmixOpcode and andn nand nxor
+syn keyword mmixOpcode bdif wdif tdif odif
+syn keyword mmixOpcode mux sadd mor mxor
+
+syn keyword mmixOpcode seth setmh setml setl inch incmh incml incl
+syn keyword mmixOpcode orh ormh orml orl andh andmh andml andnl
+syn keyword mmixOpcode jmp pushj geta put
+syn keyword mmixOpcode pop resume save unsave sync swym get trip
+syn keyword mmixOpcode set lda
+
+" switch back to being case sensitive
+syn case match
+
+" general-purpose and special-purpose registers
+syn match mmixRegister "$[0-9]*"
+syn match mmixRegister "r[A-Z]"
+syn keyword mmixRegister rBB rTT rWW rXX rYY rZZ
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later
+hi def link mmixAt Type
+hi def link mmixPseudo Type
+hi def link mmixRegister Special
+hi def link mmixSegments Type
+
+hi def link mmixLabel Special
+hi def link mmixComment Comment
+hi def link mmixOpcode Keyword
+
+hi def link hexNumber Number
+hi def link decNumber Number
+hi def link octNumber Number
+
+hi def link mmixString String
+hi def link mmixChar String
+
+hi def link mmixType Type
+hi def link mmixIdentifier Normal
+hi def link mmixSpecialComment Comment
+
+" My default color overrides:
+" hi mmixSpecialComment ctermfg=red
+"hi mmixLabel ctermfg=lightcyan
+" hi mmixType ctermbg=black ctermfg=brown
+
+
+let b:current_syntax = "mmix"
+
+" vim: ts=8
diff --git a/runtime/syntax/mmp.vim b/runtime/syntax/mmp.vim
new file mode 100644
index 0000000..d0b9f7c
--- /dev/null
+++ b/runtime/syntax/mmp.vim
@@ -0,0 +1,49 @@
+" Vim syntax file
+" Language: Symbian meta-makefile definition (MMP)
+" Maintainer: Ron Aaron <ron@ronware.org>
+" Last Change: 2007/11/07
+" URL: http://ronware.org/wiki/vim/mmp
+" Filetypes: *.mmp
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+syn match mmpComment "//.*"
+syn region mmpComment start="/\*" end="\*\/"
+
+syn keyword mmpKeyword aif asspabi assplibrary aaspexports baseaddress
+syn keyword mmpKeyword debuglibrary deffile document epocheapsize
+syn keyword mmpKeyword epocprocesspriority epocstacksize exportunfrozen
+syn keyword mmpStorage lang library linkas macro nostrictdef option
+syn keyword mmpStorage resource source sourcepath srcdbg startbitmap
+syn keyword mmpStorage start end staticlibrary strictdepend systeminclude
+syn keyword mmpStorage systemresource target targettype targetpath uid
+syn keyword mmpStorage userinclude win32_library
+
+syn match mmpIfdef "\#\(include\|ifdef\|ifndef\|if\|endif\|else\|elif\)"
+
+syn match mmpNumber "\d+"
+syn match mmpNumber "0x\x\+"
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+if !exists("did_mmp_syntax_inits")
+ let did_mmp_syntax_inits=1
+
+ hi def link mmpComment Comment
+ hi def link mmpKeyword Keyword
+ hi def link mmpStorage StorageClass
+ hi def link mmpString String
+ hi def link mmpNumber Number
+ hi def link mmpOrdinal Operator
+ hi def link mmpIfdef PreCondit
+endif
+
+let b:current_syntax = "mmp"
+
+" vim: ts=8
diff --git a/runtime/syntax/modconf.vim b/runtime/syntax/modconf.vim
new file mode 100644
index 0000000..76b36ed
--- /dev/null
+++ b/runtime/syntax/modconf.vim
@@ -0,0 +1,44 @@
+" Vim syntax file
+" Language: modules.conf(5) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-10-25
+
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword+=-
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword modconfTodo FIXME TODO XXX NOTE
+
+syn region modconfComment start='#' skip='\\$' end='$'
+ \ contains=modconfTodo,@Spell
+
+syn keyword modconfConditional if else elseif endif
+
+syn keyword modconfPreProc alias define include keep prune
+ \ post-install post-remove pre-install
+ \ pre-remove persistdir blacklist
+
+syn keyword modconfKeyword add above below install options probe probeall
+ \ remove
+
+syn keyword modconfIdentifier depfile insmod_opt path generic_stringfile
+ \ pcimapfile isapnpmapfile usbmapfile
+ \ parportmapfile ieee1394mapfile pnpbiosmapfile
+syn match modconfIdentifier 'path\[[^]]\+\]'
+
+hi def link modconfTodo Todo
+hi def link modconfComment Comment
+hi def link modconfConditional Conditional
+hi def link modconfPreProc PreProc
+hi def link modconfKeyword Keyword
+hi def link modconfIdentifier Identifier
+
+let b:current_syntax = "modconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/model.vim b/runtime/syntax/model.vim
new file mode 100644
index 0000000..5f3b7f8
--- /dev/null
+++ b/runtime/syntax/model.vim
@@ -0,0 +1,44 @@
+" Vim syntax file
+" Language: Model
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last Change: 2005 Jun 20
+
+" very basic things only (based on the vgrindefs file).
+" If you use this language, please improve it, and send me the patches!
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" A bunch of keywords
+syn keyword modelKeyword abs and array boolean by case cdnl char copied dispose
+syn keyword modelKeyword div do dynamic else elsif end entry external FALSE false
+syn keyword modelKeyword fi file for formal fortran global if iff ift in integer include
+syn keyword modelKeyword inline is lbnd max min mod new NIL nil noresult not notin od of
+syn keyword modelKeyword or procedure public read readln readonly record recursive rem rep
+syn keyword modelKeyword repeat res result return set space string subscript such then TRUE
+syn keyword modelKeyword true type ubnd union until varies while width
+
+" Special keywords
+syn keyword modelBlock beginproc endproc
+
+" Comments
+syn region modelComment start="\$" end="\$" end="$"
+
+" Strings
+syn region modelString start=+"+ end=+"+
+
+" Character constant (is this right?)
+syn match modelString "'."
+
+" Define the default highlighting.
+" Only used when an item doesn't have highlighting yet
+hi def link modelKeyword Statement
+hi def link modelBlock PreProc
+hi def link modelComment Comment
+hi def link modelString String
+
+let b:current_syntax = "model"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/modsim3.vim b/runtime/syntax/modsim3.vim
new file mode 100644
index 0000000..ce35033
--- /dev/null
+++ b/runtime/syntax/modsim3.vim
@@ -0,0 +1,97 @@
+" Vim syntax file
+" Language: Modsim III, by compuware corporation (www.compuware.com)
+" Maintainer: Philipp Jocham <flip@sbox.tu-graz.ac.at>
+" Extension: *.mod
+" Last Change: 2001 May 10
+"
+" 2001 March 24:
+" - Modsim III is a registered trademark from compuware corporation
+" - made compatible with Vim 6.0
+"
+" 1999 Apr 22 : Changed modsim3Literal from region to match
+"
+" very basic things only (based on the modula2 and c files).
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+" syn case match " case sensitiv match is default
+
+" A bunch of keywords
+syn keyword modsim3Keyword ACTID ALL AND AS ASK
+syn keyword modsim3Keyword BY CALL CASE CLASS CONST DIV
+syn keyword modsim3Keyword DOWNTO DURATION ELSE ELSIF EXIT FALSE FIXED FOR
+syn keyword modsim3Keyword FOREACH FORWARD IF IN INHERITED INOUT
+syn keyword modsim3Keyword INTERRUPT LOOP
+syn keyword modsim3Keyword MOD MONITOR NEWVALUE
+syn keyword modsim3Keyword NONMODSIM NOT OBJECT OF ON OR ORIGINAL OTHERWISE OUT
+syn keyword modsim3Keyword OVERRIDE PRIVATE PROTO REPEAT
+syn keyword modsim3Keyword RETURN REVERSED SELF STRERR TELL
+syn keyword modsim3Keyword TERMINATE THISMETHOD TO TRUE TYPE UNTIL VALUE VAR
+syn keyword modsim3Keyword WAIT WAITFOR WHEN WHILE WITH
+
+" Builtin functions and procedures
+syn keyword modsim3Builtin ABS ACTIVATE ADDMONITOR CAP CHARTOSTR CHR CLONE
+syn keyword modsim3Builtin DEACTIVATE DEC DISPOSE FLOAT GETMONITOR HIGH INC
+syn keyword modsim3Builtin INPUT INSERT INTTOSTR ISANCESTOR LOW LOWER MAX MAXOF
+syn keyword modsim3Builtin MIN MINOF NEW OBJTYPEID OBJTYPENAME OBJVARID ODD
+syn keyword modsim3Builtin ONERROR ONEXIT ORD OUTPUT POSITION PRINT REALTOSTR
+syn keyword modsim3Builtin REPLACE REMOVEMONITOR ROUND SCHAR SIZEOF SPRINT
+syn keyword modsim3Builtin STRLEN STRTOCHAR STRTOINT STRTOREAL SUBSTR TRUNC
+syn keyword modsim3Builtin UPDATEVALUE UPPER VAL
+
+syn keyword modsim3BuiltinNoParen HALT TRACE
+
+" Special keywords
+syn keyword modsim3Block PROCEDURE METHOD MODULE MAIN DEFINITION IMPLEMENTATION
+syn keyword modsim3Block BEGIN END
+
+syn keyword modsim3Include IMPORT FROM
+
+syn keyword modsim3Type ANYARRAY ANYOBJ ANYREC ARRAY BOOLEAN CHAR INTEGER
+syn keyword modsim3Type LMONITORED LRMONITORED NILARRAY NILOBJ NILREC REAL
+syn keyword modsim3Type RECORD RMONITOR RMONITORED STRING
+
+" catch errros cause by wrong parenthesis
+" slight problem with "( *)" or "(* )". Hints?
+syn region modsim3Paren transparent start='(' end=')' contains=ALLBUT,modsim3ParenError
+syn match modsim3ParenError ")"
+
+" Comments
+syn region modsim3Comment1 start="{" end="}" contains=modsim3Comment1,modsim3Comment2
+syn region modsim3Comment2 start="(\*" end="\*)" contains=modsim3Comment1,modsim3Comment2
+" highlighting is wrong for constructs like "{ (* } *)",
+" which are allowed in Modsim III, but
+" I think something like that shouldn't be used anyway.
+
+" Strings
+syn region modsim3String start=+"+ end=+"+
+
+" Literals
+"syn region modsim3Literal start=+'+ end=+'+
+syn match modsim3Literal "'[^']'\|''''"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later
+hi def link modsim3Keyword Statement
+hi def link modsim3Block Statement
+hi def link modsim3Comment1 Comment
+hi def link modsim3Comment2 Comment
+hi def link modsim3String String
+hi def link modsim3Literal Character
+hi def link modsim3Include Statement
+hi def link modsim3Type Type
+hi def link modsim3ParenError Error
+hi def link modsim3Builtin Function
+hi def link modsim3BuiltinNoParen Function
+
+
+let b:current_syntax = "modsim3"
+
+" vim: ts=8 sw=2
+
diff --git a/runtime/syntax/modula2.vim b/runtime/syntax/modula2.vim
new file mode 100644
index 0000000..4a14cf1
--- /dev/null
+++ b/runtime/syntax/modula2.vim
@@ -0,0 +1,73 @@
+" Vim syntax file
+" Language: Modula 2
+" Maintainer: pf@artcom0.north.de (Peter Funk)
+" based on original work of Bram Moolenaar <Bram@vim.org>
+" Last Change: 2001 May 09
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Don't ignore case (Modula-2 is case significant). This is the default in vim
+
+" Especially emphasize headers of procedures and modules:
+syn region modula2Header matchgroup=modula2Header start="PROCEDURE " end="(" contains=modula2Ident oneline
+syn region modula2Header matchgroup=modula2Header start="MODULE " end=";" contains=modula2Ident oneline
+syn region modula2Header matchgroup=modula2Header start="BEGIN (\*" end="\*)" contains=modula2Ident oneline
+syn region modula2Header matchgroup=modula2Header start="END " end=";" contains=modula2Ident oneline
+syn region modula2Keyword start="END" end=";" contains=ALLBUT,modula2Ident oneline
+
+" Some very important keywords which should be emphasized more than others:
+syn keyword modula2AttKeyword CONST EXIT HALT RETURN TYPE VAR
+" All other keywords in alphabetical order:
+syn keyword modula2Keyword AND ARRAY BY CASE DEFINITION DIV DO ELSE
+syn keyword modula2Keyword ELSIF EXPORT FOR FROM IF IMPLEMENTATION IMPORT
+syn keyword modula2Keyword IN LOOP MOD NOT OF OR POINTER QUALIFIED RECORD
+syn keyword modula2Keyword SET THEN TO UNTIL WHILE WITH
+
+syn keyword modula2Type ADDRESS BITSET BOOLEAN CARDINAL CHAR INTEGER REAL WORD
+syn keyword modula2StdFunc ABS CAP CHR DEC EXCL INC INCL ORD SIZE TSIZE VAL
+syn keyword modula2StdConst FALSE NIL TRUE
+" The following may be discussed, since NEW and DISPOSE are some kind of
+" special builtin macro functions:
+syn keyword modula2StdFunc NEW DISPOSE
+" The following types are added later on and may be missing from older
+" Modula-2 Compilers (they are at least missing from the original report
+" by N.Wirth from March 1980 ;-) Highlighting should apply nevertheless:
+syn keyword modula2Type BYTE LONGCARD LONGINT LONGREAL PROC SHORTCARD SHORTINT
+" same note applies to min and max, which were also added later to m2:
+syn keyword modula2StdFunc MAX MIN
+" The underscore was originally disallowed in m2 ids, it was also added later:
+syn match modula2Ident " [A-Z,a-z][A-Z,a-z,0-9,_]*" contained
+
+" Comments may be nested in Modula-2:
+syn region modula2Comment start="(\*" end="\*)" contains=modula2Comment,modula2Todo
+syn keyword modula2Todo contained TODO FIXME XXX
+
+" Strings
+syn region modula2String start=+"+ end=+"+
+syn region modula2String start="'" end="'"
+syn region modula2Set start="{" end="}"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link modula2Ident Identifier
+hi def link modula2StdConst Boolean
+hi def link modula2Type Identifier
+hi def link modula2StdFunc Identifier
+hi def link modula2Header Type
+hi def link modula2Keyword Statement
+hi def link modula2AttKeyword PreProc
+hi def link modula2Comment Comment
+" The following is just a matter of taste (you want to try this instead):
+" hi modula2Comment term=bold ctermfg=DarkBlue guifg=Blue gui=bold
+hi def link modula2Todo Todo
+hi def link modula2String String
+hi def link modula2Set String
+
+
+let b:current_syntax = "modula2"
+
+" vim: ts=8
diff --git a/runtime/syntax/modula3.vim b/runtime/syntax/modula3.vim
new file mode 100644
index 0000000..67243db
--- /dev/null
+++ b/runtime/syntax/modula3.vim
@@ -0,0 +1,145 @@
+" Vim syntax file
+" Language: Modula-3
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Timo Pedersen <dat97tpe@ludat.lth.se>
+" Last Change: 2022 Oct 31
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" Whitespace errors {{{1
+if exists("modula3_space_errors")
+ if !exists("modula3_no_trail_space_error")
+ syn match modula3SpaceError display excludenl "\s\+$"
+ endif
+ if !exists("modula3_no_tab_space_error")
+ syn match modula3SpaceError display " \+\t"me=e-1
+ endif
+endif
+
+" Keywords {{{1
+syn keyword modula3Keyword ANY ARRAY AS BITS BRANDED BY CASE CONST
+syn keyword modula3Keyword DEFINITION EVAL EXIT EXCEPT EXCEPTION EXIT
+syn keyword modula3Keyword EXPORTS FINALLY FROM GENERIC IMPORT LOCK METHOD
+syn keyword modula3Keyword OF RAISE RAISES READONLY RECORD REF
+syn keyword modula3Keyword RETURN SET TRY TYPE TYPECASE UNSAFE
+syn keyword modula3Keyword VALUE VAR WITH
+
+syn match modula3keyword "\<UNTRACED\>"
+
+" Special keywords, block delimiters etc
+syn keyword modula3Block PROCEDURE FUNCTION MODULE INTERFACE REPEAT THEN
+syn keyword modula3Block BEGIN END OBJECT METHODS OVERRIDES RECORD REVEAL
+syn keyword modula3Block WHILE UNTIL DO TO IF FOR ELSIF ELSE LOOP
+
+" Reserved identifiers {{{1
+syn keyword modula3Identifier ABS ADR ADRSIZE BITSIZE BYTESIZE CEILING DEC
+syn keyword modula3Identifier DISPOSE FIRST FLOAT FLOOR INC ISTYPE LAST
+syn keyword modula3Identifier LOOPHOLE MAX MIN NARROW NEW NUMBER ORD ROUND
+syn keyword modula3Identifier SUBARRAY TRUNC TYPECODE VAL
+
+" Predefined types {{{1
+syn keyword modula3Type ADDRESS BOOLEAN CARDINAL CHAR EXTENDED INTEGER
+syn keyword modula3Type LONGCARD LONGINT LONGREAL MUTEX NULL REAL REFANY TEXT
+syn keyword modula3Type WIDECHAR
+
+syn match modula3Type "\<\%(UNTRACED\s\+\)\=ROOT\>"
+
+" Operators {{{1
+syn keyword modula3Operator DIV MOD
+syn keyword modula3Operator IN
+syn keyword modula3Operator NOT AND OR
+
+" TODO: exclude = from declarations
+if exists("modula3_operators")
+ syn match modula3Operator "\^"
+ syn match modula3Operator "[-+/*]"
+ syn match modula3Operator "&"
+ syn match modula3Operator "<=\|<:\@!\|>=\|>"
+ syn match modula3Operator ":\@<!=\|#"
+endif
+
+" Literals {{{1
+
+" Booleans
+syn keyword modula3Boolean TRUE FALSE
+
+" Nil
+syn keyword modula3Nil NIL
+
+" Numbers {{{2
+
+" NOTE: Negated numbers are constant expressions not literals
+
+syn case ignore
+
+ " Integers
+
+ syn match modula3Integer "\<\d\+L\=\>"
+
+ if exists("modula3_number_errors")
+ syn match modula3IntegerError "\<\d\d\=_\x\+L\=\>"
+ endif
+
+ let s:digits = "0123456789ABCDEF"
+ for s:radix in range(2, 16)
+ exe $'syn match modula3Integer "\<{s:radix}_[{s:digits[:s:radix - 1]}]\+L\=\>"'
+ endfor
+ unlet s:digits s:radix
+
+ " Reals
+ syn match modula3Real "\<\d\+\.\d\+\%([EDX][+-]\=\d\+\)\=\>"
+
+syn case match
+
+" Strings and characters {{{2
+
+" String escape sequences
+syn match modula3Escape "\\['"ntrf]" contained display
+" TODO: limit to <= 377 (255)
+syn match modula3Escape "\\\o\{3}" contained display
+syn match modula3Escape "\\\\" contained display
+
+" Characters
+syn match modula3Character "'\%([^']\|\\.\|\\\o\{3}\)'" contains=modula3Escape
+
+" Strings
+syn region modula3String start=+"+ end=+"+ contains=modula3Escape
+
+" Pragmas {{{1
+" EXTERNAL INLINE ASSERT TRACE FATAL UNUSED OBSOLETE CALLBACK EXPORTED PRAGMA NOWARN LINE LL LL.sup SPEC
+" Documented: INLINE ASSERT TRACE FATAL UNUSED OBSOLETE NOWARN
+syn region modula3Pragma start="<\*" end="\*>"
+
+" Comments {{{1
+if !exists("modula3_no_comment_fold")
+ syn region modula3Comment start="(\*" end="\*)" contains=modula3Comment,@Spell fold
+ syn region modula3LineCommentBlock start="^\s*(\*.*\*)\s*\n\%(^\s*(\*.*\*)\s*$\)\@=" end="^\s*(\*.*\*)\s*\n\%(^\s*(\*.*\*)\s*$\)\@!" contains=modula3Comment transparent fold keepend
+else
+ syn region modula3Comment start="(\*" end="\*)" contains=modula3Comment,@Spell
+endif
+
+" Syncing "{{{1
+syn sync minlines=100
+
+" Default highlighting {{{1
+hi def link modula3Block Statement
+hi def link modula3Boolean Boolean
+hi def link modula3Character Character
+hi def link modula3Comment Comment
+hi def link modula3Escape Special
+hi def link modula3Identifier Keyword
+hi def link modula3Integer Number
+hi def link modula3Keyword Statement
+hi def link modula3Nil Constant
+hi def link modula3IntegerError Error
+hi def link modula3Operator Operator
+hi def link modula3Pragma PreProc
+hi def link modula3Real Float
+hi def link modula3String String
+hi def link modula3Type Type "}}}
+
+let b:current_syntax = "modula3"
+
+" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
diff --git a/runtime/syntax/monk.vim b/runtime/syntax/monk.vim
new file mode 100644
index 0000000..3af8101
--- /dev/null
+++ b/runtime/syntax/monk.vim
@@ -0,0 +1,217 @@
+" Vim syntax file
+" Language: Monk (See-Beyond Technologies)
+" Maintainer: Mike Litherland <litherm@ccf.org>
+" Last Change: 2012 Feb 03 by Thilo Six
+
+" This syntax file is good enough for my needs, but others
+" may desire more features. Suggestions and bug reports
+" are solicited by the author (above).
+
+" Originally based on the Scheme syntax file by:
+
+" Maintainer: Dirk van Deun <dvandeun@poboxes.com>
+" Last Change: April 30, 1998
+
+" In fact it's almost identical. :)
+
+" The original author's notes:
+" This script incorrectly recognizes some junk input as numerals:
+" parsing the complete system of Scheme numerals using the pattern
+" language is practically impossible: I did a lax approximation.
+
+" Initializing:
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case ignore
+
+" Fascist highlighting: everything that doesn't fit the rules is an error...
+
+syn match monkError oneline ![^ \t()";]*!
+syn match monkError oneline ")"
+
+" Quoted and backquoted stuff
+
+syn region monkQuoted matchgroup=Delimiter start="['`]" end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc
+
+syn region monkQuoted matchgroup=Delimiter start="['`](" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc
+syn region monkQuoted matchgroup=Delimiter start="['`]#(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc
+
+syn region monkStrucRestricted matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc
+syn region monkStrucRestricted matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc
+
+syn region monkUnquote matchgroup=Delimiter start="," end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc
+syn region monkUnquote matchgroup=Delimiter start=",@" end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc
+
+syn region monkUnquote matchgroup=Delimiter start=",(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc
+syn region monkUnquote matchgroup=Delimiter start=",@(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc
+
+syn region monkUnquote matchgroup=Delimiter start=",#(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc
+syn region monkUnquote matchgroup=Delimiter start=",@#(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc
+
+" R5RS Scheme Functions and Syntax:
+
+setlocal iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_
+
+syn keyword monkSyntax lambda and or if cond case define let let* letrec
+syn keyword monkSyntax begin do delay set! else =>
+syn keyword monkSyntax quote quasiquote unquote unquote-splicing
+syn keyword monkSyntax define-syntax let-syntax letrec-syntax syntax-rules
+
+syn keyword monkFunc not boolean? eq? eqv? equal? pair? cons car cdr set-car!
+syn keyword monkFunc set-cdr! caar cadr cdar cddr caaar caadr cadar caddr
+syn keyword monkFunc cdaar cdadr cddar cdddr caaaar caaadr caadar caaddr
+syn keyword monkFunc cadaar cadadr caddar cadddr cdaaar cdaadr cdadar cdaddr
+syn keyword monkFunc cddaar cddadr cdddar cddddr null? list? list length
+syn keyword monkFunc append reverse list-ref memq memv member assq assv assoc
+syn keyword monkFunc symbol? symbol->string string->symbol number? complex?
+syn keyword monkFunc real? rational? integer? exact? inexact? = < > <= >=
+syn keyword monkFunc zero? positive? negative? odd? even? max min + * - / abs
+syn keyword monkFunc quotient remainder modulo gcd lcm numerator denominator
+syn keyword monkFunc floor ceiling truncate round rationalize exp log sin cos
+syn keyword monkFunc tan asin acos atan sqrt expt make-rectangular make-polar
+syn keyword monkFunc real-part imag-part magnitude angle exact->inexact
+syn keyword monkFunc inexact->exact number->string string->number char=?
+syn keyword monkFunc char-ci=? char<? char-ci<? char>? char-ci>? char<=?
+syn keyword monkFunc char-ci<=? char>=? char-ci>=? char-alphabetic? char?
+syn keyword monkFunc char-numeric? char-whitespace? char-upper-case?
+syn keyword monkFunc char-lower-case?
+syn keyword monkFunc char->integer integer->char char-upcase char-downcase
+syn keyword monkFunc string? make-string string string-length string-ref
+syn keyword monkFunc string-set! string=? string-ci=? string<? string-ci<?
+syn keyword monkFunc string>? string-ci>? string<=? string-ci<=? string>=?
+syn keyword monkFunc string-ci>=? substring string-append vector? make-vector
+syn keyword monkFunc vector vector-length vector-ref vector-set! procedure?
+syn keyword monkFunc apply map for-each call-with-current-continuation
+syn keyword monkFunc call-with-input-file call-with-output-file input-port?
+syn keyword monkFunc output-port? current-input-port current-output-port
+syn keyword monkFunc open-input-file open-output-file close-input-port
+syn keyword monkFunc close-output-port eof-object? read read-char peek-char
+syn keyword monkFunc write display newline write-char call/cc
+syn keyword monkFunc list-tail string->list list->string string-copy
+syn keyword monkFunc string-fill! vector->list list->vector vector-fill!
+syn keyword monkFunc force with-input-from-file with-output-to-file
+syn keyword monkFunc char-ready? load transcript-on transcript-off eval
+syn keyword monkFunc dynamic-wind port? values call-with-values
+syn keyword monkFunc monk-report-environment null-environment
+syn keyword monkFunc interaction-environment
+
+" Keywords specific to STC's implementation
+
+syn keyword monkFunc $event-clear $event-parse $event->string $make-event-map
+syn keyword monkFunc $resolve-event-definition change-pattern copy copy-strip
+syn keyword monkFunc count-data-children count-map-children count-rep data-map
+syn keyword monkFunc duplicate duplicate-strip file-check file-lookup get
+syn keyword monkFunc insert list-lookup node-has-data? not-verify path?
+syn keyword monkFunc path-defined-as-repeating? path-nodeclear path-nodedepth
+syn keyword monkFunc path-nodename path-nodeparentname path->string path-valid?
+syn keyword monkFunc regex string->path timestamp uniqueid verify
+
+" Keywords from the Monk function library (from e*Gate 4.1 programmers ref)
+syn keyword monkFunc allcap? capitalize char-punctuation? char-substitute
+syn keyword monkFunc char-to-char conv count-used-children degc->degf
+syn keyword monkFunc diff-two-dates display-error empty-string? fail_id
+syn keyword monkFunc fail_id_if fail_translation fail_translation_if
+syn keyword monkFunc find-get-after find-get-before get-timestamp julian-date?
+syn keyword monkFunc julian->standard leap-year? map-string not-empty-string?
+syn keyword monkFunc standard-date? standard->julian string-begins-with?
+syn keyword monkFunc string-contains? string-ends-with? string-search-from-left
+syn keyword monkFunc string-search-from-right string->ssn strip-punct
+syn keyword monkFunc strip-string substring=? symbol-table-get symbol-table-put
+syn keyword monkFunc trim-string-left trim-string-right valid-decimal?
+syn keyword monkFunc valid-integer? verify-type
+
+" Writing out the complete description of Scheme numerals without
+" using variables is a day's work for a trained secretary...
+" This is a useful lax approximation:
+
+syn match monkNumber oneline "[-#+0-9.][-#+/0-9a-f@i.boxesfdl]*"
+syn match monkError oneline ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t()";][^ \t()";]*!
+
+syn match monkOther oneline ![+-][ \t()";]!me=e-1
+syn match monkOther oneline ![+-]$!
+" ... so that a single + or -, inside a quoted context, would not be
+" interpreted as a number (outside such contexts, it's a monkFunc)
+
+syn match monkDelimiter oneline !\.[ \t()";]!me=e-1
+syn match monkDelimiter oneline !\.$!
+" ... and a single dot is not a number but a delimiter
+
+" Simple literals:
+
+syn match monkBoolean oneline "#[tf]"
+syn match monkError oneline !#[tf][^ \t()";]\+!
+
+syn match monkChar oneline "#\\"
+syn match monkChar oneline "#\\."
+syn match monkError oneline !#\\.[^ \t()";]\+!
+syn match monkChar oneline "#\\space"
+syn match monkError oneline !#\\space[^ \t()";]\+!
+syn match monkChar oneline "#\\newline"
+syn match monkError oneline !#\\newline[^ \t()";]\+!
+
+" This keeps all other stuff unhighlighted, except *stuff* and <stuff>:
+
+syn match monkOther oneline ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*,
+syn match monkError oneline ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*,
+
+syn match monkOther oneline "\.\.\."
+syn match monkError oneline !\.\.\.[^ \t()";]\+!
+" ... a special identifier
+
+syn match monkConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[ \t()";],me=e-1
+syn match monkConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*$,
+syn match monkError oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*,
+
+syn match monkConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t()";],me=e-1
+syn match monkConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$,
+syn match monkError oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*,
+
+" Monk input and output structures
+syn match monkSyntax oneline "\(\~input\|\[I\]->\)[^ \t]*"
+syn match monkFunc oneline "\(\~output\|\[O\]->\)[^ \t]*"
+
+" Non-quoted lists, and strings:
+
+syn region monkStruc matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALL
+syn region monkStruc matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALL
+
+syn region monkString start=+"+ skip=+\\[\\"]+ end=+"+
+
+" Comments:
+
+syn match monkComment ";.*$"
+
+" Synchronization and the wrapping up...
+
+syn sync match matchPlace grouphere NONE "^[^ \t]"
+" ... i.e. synchronize on a line that starts at the left margin
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link monkSyntax Statement
+hi def link monkFunc Function
+
+hi def link monkString String
+hi def link monkChar Character
+hi def link monkNumber Number
+hi def link monkBoolean Boolean
+
+hi def link monkDelimiter Delimiter
+hi def link monkConstant Constant
+
+hi def link monkComment Comment
+hi def link monkError Error
+
+
+let b:current_syntax = "monk"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/moo.vim b/runtime/syntax/moo.vim
new file mode 100644
index 0000000..6f2dd59
--- /dev/null
+++ b/runtime/syntax/moo.vim
@@ -0,0 +1,173 @@
+" Vim syntax file
+" Language: MOO
+" Maintainer: Timo Frenay <timo@frenay.net>
+" Last Change: 2020 Oct 19
+" Note: Requires Vim 6.0 or above
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Initializations
+syn case ignore
+
+" C-style comments
+syn match mooUncommentedError display ~\*/~
+syn match mooCStyleCommentError display ~/\ze\*~ contained
+syn region mooCStyleComment matchgroup=mooComment start=~/\*~ end=~\*/~ contains=mooCStyleCommentError
+
+" Statements
+if exists("moo_extended_cstyle_comments")
+ syn match mooIdentifier display ~\%(\%(/\*.\{-}\*/\s*\)*\)\@>\<\h\w*\>~ contained transparent contains=mooCStyleComment,@mooKeyword,mooType,mooVariable
+else
+ syn match mooIdentifier display ~\<\h\w*\>~ contained transparent contains=@mooKeyword,mooType,mooVariable
+endif
+syn keyword mooStatement break continue else elseif endfor endfork endif endtry endwhile finally for if try
+syn keyword mooStatement except fork while nextgroup=mooIdentifier skipwhite
+syn keyword mooStatement return nextgroup=mooString skipwhite
+
+" Operators
+syn keyword mooOperatorIn in
+
+" Error constants
+syn keyword mooAny ANY
+syn keyword mooErrorConstant E_ARGS E_INVARG E_DIV E_FLOAT E_INVIND E_MAXREC E_NACC E_NONE E_PERM E_PROPNF E_QUOTA E_RANGE E_RECMOVE E_TYPE E_VARNF E_VERBNF
+
+" Builtin variables
+syn match mooType display ~\<\%(ERR\|FLOAT\|INT\|LIST\|NUM\|OBJ\|STR\)\>~
+syn match mooVariable display ~\<\%(args\%(tr\)\=\|caller\|dobj\%(str\)\=\|iobj\%(str\)\=\|player\|prepstr\|this\|verb\)\>~
+
+" Strings
+syn match mooStringError display ~[^\t -[\]-~]~ contained
+syn match mooStringSpecialChar display ~\\["\\]~ contained
+if !exists("moo_no_regexp")
+ " Regular expressions
+ syn match mooRegexp display ~%%~ contained containedin=mooString,mooRegexpParentheses transparent contains=NONE
+ syn region mooRegexpParentheses display matchgroup=mooRegexpOr start=~%(~ skip=~%%~ end=~%)~ contained containedin=mooString,mooRegexpParentheses transparent oneline
+ syn match mooRegexpOr display ~%|~ contained containedin=mooString,mooRegexpParentheses
+endif
+if !exists("moo_no_pronoun_sub")
+ " Pronoun substitutions
+ syn match mooPronounSub display ~%%~ contained containedin=mooString transparent contains=NONE
+ syn match mooPronounSub display ~%[#dilnopqrst]~ contained containedin=mooString
+ syn match mooPronounSub display ~%\[#[dilnt]\]~ contained containedin=mooString
+ syn match mooPronounSub display ~%(\h\w*)~ contained containedin=mooString
+ syn match mooPronounSub display ~%\[[dilnt]\h\w*\]~ contained containedin=mooString
+ syn match mooPronounSub display ~%<\%([dilnt]:\)\=\a\+>~ contained containedin=mooString
+endif
+if exists("moo_unmatched_quotes")
+ syn region mooString matchgroup=mooStringError start=~"~ end=~$~ contains=@mooStringContents keepend
+ syn region mooString start=~"~ skip=~\\.~ end=~"~ contains=@mooStringContents oneline keepend
+else
+ syn region mooString start=~"~ skip=~\\.~ end=~"\|$~ contains=@mooStringContents keepend
+endif
+
+" Numbers and object numbers
+syn match mooNumber display ~\%(\%(\<\d\+\)\=\.\d\+\|\<\d\+\)\%(e[+\-]\=\d\+\)\=\>~
+syn match mooObject display ~#-\=\d\+\>~
+
+" Properties and verbs
+if exists("moo_builtin_properties")
+ "Builtin properties
+ syn keyword mooBuiltinProperty contents f location name owner programmer r w wizard contained containedin=mooPropRef
+endif
+if exists("moo_extended_cstyle_comments")
+ syn match mooPropRef display ~\.\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\h\w*\>~ transparent contains=mooCStyleComment,@mooKeyword
+ syn match mooVerbRef display ~:\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\h\w*\>~ transparent contains=mooCStyleComment,@mooKeyword
+else
+ syn match mooPropRef display ~\.\s*\h\w*\>~ transparent contains=@mooKeyword
+ syn match mooVerbRef display ~:\s*\h\w*\>~ transparent contains=@mooKeyword
+endif
+
+" Builtin functions, core properties and core verbs
+if exists("moo_extended_cstyle_comments")
+ syn match mooBuiltinFunction display ~\<\h\w*\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\ze(~ contains=mooCStyleComment
+ syn match mooCorePropOrVerb display ~\$\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\%(in\>\)\@!\h\w*\>~ contains=mooCStyleComment,@mooKeyword
+else
+ syn match mooBuiltinFunction display ~\<\h\w*\s*\ze(~ contains=NONE
+ syn match mooCorePropOrVerb display ~\$\s*\%(in\>\)\@!\h\w*\>~ contains=@mooKeyword
+endif
+if exists("moo_unknown_builtin_functions")
+ syn match mooUnknownBuiltinFunction ~\<\h\w*\>~ contained containedin=mooBuiltinFunction contains=mooKnownBuiltinFunction
+ " Known builtin functions as of version 1.8.1 of the server
+ " Add your own extensions to this group if you like
+ syn keyword mooKnownBuiltinFunction abs acos add_property add_verb asin atan binary_hash boot_player buffered_output_length callers caller_perms call_function ceil children chparent clear_property connected_players connected_seconds connection_name connection_option connection_options cos cosh create crypt ctime db_disk_size decode_binary delete_property delete_verb disassemble dump_database encode_binary equal eval exp floatstr floor flush_input force_input function_info idle_seconds index is_clear_property is_member is_player kill_task length listappend listdelete listen listeners listinsert listset log log10 match max max_object memory_usage min move notify object_bytes open_network_connection output_delimiters parent pass players properties property_info queued_tasks queue_info raise random read recycle renumber reset_max_object resume rindex rmatch seconds_left server_log server_version setadd setremove set_connection_option set_player_flag set_property_info set_task_perms set_verb_args set_verb_code set_verb_info shutdown sin sinh sqrt strcmp string_hash strsub substitute suspend tan tanh task_id task_stack ticks_left time tofloat toint toliteral tonum toobj tostr trunc typeof unlisten valid value_bytes value_hash verbs verb_args verb_code verb_info contained
+endif
+
+" Enclosed expressions
+syn match mooUnenclosedError display ~[')\]|}]~
+syn match mooParenthesesError display ~[';\]|}]~ contained
+syn region mooParentheses start=~(~ end=~)~ transparent contains=@mooEnclosedContents,mooParenthesesError
+syn match mooBracketsError display ~[');|}]~ contained
+syn region mooBrackets start=~\[~ end=~\]~ transparent contains=@mooEnclosedContents,mooBracketsError
+syn match mooBracesError display ~[');\]|]~ contained
+syn region mooBraces start=~{~ end=~}~ transparent contains=@mooEnclosedContents,mooBracesError
+syn match mooQuestionError display ~[');\]}]~ contained
+syn region mooQuestion start=~?~ end=~|~ transparent contains=@mooEnclosedContents,mooQuestionError
+syn match mooCatchError display ~[);\]|}]~ contained
+syn region mooCatch matchgroup=mooExclamation start=~`~ end=~'~ transparent contains=@mooEnclosedContents,mooCatchError,mooExclamation
+if exists("moo_extended_cstyle_comments")
+ syn match mooExclamation display ~[\t !%&(*+,\-/<=>?@[^`{|]\@<!\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>!=\@!~ contained contains=mooCStyleComment
+else
+ syn match mooExclamation display ~[\t !%&(*+,\-/<=>?@[^`{|]\@<!\s*!=\@!~ contained
+endif
+
+" Comments
+syn match mooCommentSpecialChar display ~\\["\\]~ contained transparent contains=NONE
+syn match mooComment ~[\t !%&*+,\-/<=>?@^|]\@<!\s*"\([^\"]\|\\.\)*"\s*;~ contains=mooStringError,mooCommentSpecialChar
+
+" Non-code
+syn region mooNonCode start=~^\s*@\<~ end=~$~
+syn match mooNonCode display ~^\.$~
+syn match mooNonCode display ~^\s*\d\+:~he=e-1
+
+" Overriding matches
+syn match mooRangeOperator display ~\.\.~ transparent contains=NONE
+syn match mooOrOperator display ~||~ transparent contains=NONE
+if exists("moo_extended_cstyle_comments")
+ syn match mooScattering ~[,{]\@<=\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>?~ transparent contains=mooCStyleComment
+else
+ syn match mooScattering ~[,{]\@<=\s*?~ transparent contains=NONE
+endif
+
+" Clusters
+syn cluster mooKeyword contains=mooStatement,mooOperatorIn,mooAny,mooErrorConstant
+syn cluster mooStringContents contains=mooStringError,mooStringSpecialChar
+syn cluster mooEnclosedContents contains=TOP,mooUnenclosedError,mooComment,mooNonCode
+
+" Define the default highlighting.
+hi def link mooUncommentedError Error
+hi def link mooCStyleCommentError Error
+hi def link mooCStyleComment Comment
+hi def link mooStatement Statement
+hi def link mooOperatorIn Operator
+hi def link mooAny Constant " link this to Keyword if you want
+hi def link mooErrorConstant Constant
+hi def link mooType Type
+hi def link mooVariable Type
+hi def link mooStringError Error
+hi def link mooStringSpecialChar SpecialChar
+hi def link mooRegexpOr SpecialChar
+hi def link mooPronounSub SpecialChar
+hi def link mooString String
+hi def link mooNumber Number
+hi def link mooObject Number
+hi def link mooBuiltinProperty Type
+hi def link mooBuiltinFunction Function
+hi def link mooUnknownBuiltinFunction Error
+hi def link mooKnownBuiltinFunction Function
+hi def link mooCorePropOrVerb Identifier
+hi def link mooUnenclosedError Error
+hi def link mooParenthesesError Error
+hi def link mooBracketsError Error
+hi def link mooBracesError Error
+hi def link mooQuestionError Error
+hi def link mooCatchError Error
+hi def link mooExclamation Exception
+hi def link mooComment Comment
+hi def link mooNonCode PreProc
+
+let b:current_syntax = "moo"
+
+" vim: ts=8
diff --git a/runtime/syntax/mp.vim b/runtime/syntax/mp.vim
new file mode 100644
index 0000000..36c07e6
--- /dev/null
+++ b/runtime/syntax/mp.vim
@@ -0,0 +1,273 @@
+vim9script
+
+# Vim syntax file
+# Language: MetaPost
+# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
+# Former Maintainers: Andreas Scherer <andreas.scherer@pobox.com>
+# Latest Revision: 2022 Aug 12
+
+if exists("b:current_syntax")
+ finish
+endif
+
+# Deprecation warnings: to be removed eventually
+if exists("g:plain_mp_macros")
+ echomsg "[mp] g:plain_mp_macros is deprecated: use g:mp_plain_macros instead."
+endif
+if exists("mfplain_mp_macros")
+ echomsg "[mp] g:mfplain_mp_macros is deprecated: use g:mp_mfplain_macros instead."
+endif
+if exists("other_mp_macros")
+ echomsg "[mp] g:other_mp_macros is deprecated: use g:mp_other_macros instead."
+endif
+
+# Store the current values of METAFONT global options
+const mf_plain_macros = get(g:, "mf_plain_macros", get(g:, "plain_mf_macros", -1))
+const mf_plain_modes = get(g:, "mf_plain_modes", get(g:, "plain_mf_modes", -1))
+const mf_other_macros = get(g:, "mf_other_macros", get(g:, "other_mf_macros", -1))
+
+g:mf_plain_macros = 0 # plain.mf has no special meaning for MetaPost
+g:mf_plain_modes = 0 # No METAFONT modes
+g:mf_other_macros = 0 # cmbase.mf, logo.mf, ... neither
+
+# Read the METAFONT syntax to start with
+runtime! syntax/mf.vim
+unlet b:current_syntax # Necessary for syn include below
+
+# Restore the value of existing global variables
+if mf_plain_macros == -1
+ unlet g:mf_plain_macros
+else
+ g:plain_mf_macros = mf_plain_macros
+endif
+if mf_plain_modes == -1
+ unlet g:mf_plain_modes
+else
+ g:mf_plain_modes = mf_plain_modes
+endif
+if mf_other_macros == -1
+ unlet g:mf_other_macros
+else
+ g:mf_other_macros = mf_other_macros
+endif
+
+# Use TeX highlighting inside verbatimtex/btex... etex
+syn include @MPTeX syntax/tex.vim
+unlet b:current_syntax
+# These are defined as keywords rather than using matchgroup
+# in order to make them available to syntaxcomplete.
+syn keyword mpTeXdelim btex etex verbatimtex contained
+syn region mpTeXinsert matchgroup=mpTeXdelim start=/\<verbatimtex\>\|\<btex\>/ end=/\<etex\>/ keepend contains=@MPTeX,mpTeXdelim
+
+# iskeyword must be set after the syn include above, because tex.vim sets `syn
+# iskeyword`. Note that keywords do not contain numbers (numbers are
+# subscripts)
+syntax iskeyword @,_
+
+# MetaPost primitives not found in METAFONT
+syn keyword mpBoolExp bounded clipped filled stroked textual arclength
+syn keyword mpNumExp arctime blackpart bluepart colormodel cyanpart
+syn keyword mpNumExp fontsize greenpart greypart magentapart redpart
+syn keyword mpPairExp yellowpart llcorner lrcorner ulcorner urcorner
+syn keyword mpPathExp envelope pathpart
+syn keyword mpPenExp penpart
+syn keyword mpPicExp dashpart glyph infont
+syn keyword mpStringExp fontpart readfrom textpart
+syn keyword mpType cmykcolor color rgbcolor
+# Other MetaPost primitives listed in the manual
+syn keyword mpPrimitive mpxbreak within
+# Internal quantities not found in METAFONT
+# (Table 6 in MetaPost: A User's Manual)
+syn keyword mpInternal defaultcolormodel hour minute linecap linejoin
+syn keyword mpInternal miterlimit mpprocset mpversion numberprecision
+syn keyword mpInternal numbersystem outputfilename outputformat
+syn keyword mpInternal outputformatoptions outputtemplate prologues
+syn keyword mpInternal restoreclipcolor tracinglostchars troffmode
+syn keyword mpInternal truecorners
+# List of commands not found in METAFONT (from MetaPost: A User's Manual)
+syn keyword mpCommand clip closefrom dashed filenametemplate fontmapfile
+syn keyword mpCommand fontmapline setbounds withcmykcolor withcolor
+syn keyword mpCommand withgreyscale withoutcolor withpostscript
+syn keyword mpCommand withprescript withrgbcolor write
+# METAFONT internal variables not found in MetaPost
+syn keyword notDefined autorounding chardx chardy fillin granularity
+syn keyword notDefined proofing smoothing tracingedges tracingpens
+syn keyword notDefined turningcheck xoffset yoffset
+# Suffix defined only in METAFONT:
+syn keyword notDefined nodot
+# Other not implemented primitives (see MetaPost: A User's Manual, §C.1)
+syn keyword notDefined cull display openwindow numspecial totalweight
+syn keyword notDefined withweight
+
+# Keywords defined by plain.mp
+if get(g:, "mp_plain_macros", get(g:, "plain_mp_macros", 1)) || get(b:, "mp_metafun", get(g:, "mp_metafun", 0))
+ syn keyword mpDef beginfig clear_pen_memory clearit clearpen clearpen
+ syn keyword mpDef clearxy colorpart cutdraw downto draw drawarrow
+ syn keyword mpDef drawdblarrow drawdot drawoptions endfig erase
+ syn keyword mpDef exitunless fill filldraw flex gobble hide interact
+ syn keyword mpDef label loggingall makelabel numtok penstroke pickup
+ syn keyword mpDef range reflectedabout rotatedaround shipit
+ syn keyword mpDef stop superellipse takepower tracingall tracingnone
+ syn keyword mpDef undraw undrawdot unfill unfilldraw upto
+ syn match mpDef "???"
+ syn keyword mpVardef arrowhead bbox bot buildcycle byte ceiling center
+ syn keyword mpVardef counterclockwise decr dir direction directionpoint
+ syn keyword mpVardef dotlabel dotlabels image incr interpath inverse
+ syn keyword mpVardef labels lft magstep max min penlabels penpos round
+ syn keyword mpVardef rt savepen solve tensepath thelabel top unitvector
+ syn keyword mpVardef whatever z
+ syn keyword mpPrimaryDef div dotprod gobbled mod
+ syn keyword mpSecondaryDef intersectionpoint
+ syn keyword mpTertiaryDef cutafter cutbefore softjoin thru
+ syn keyword mpNewInternal ahangle ahlength bboxmargin beveled butt defaultpen
+ syn keyword mpNewInternal defaultscale dotlabeldiam eps epsilon infinity
+ syn keyword mpNewInternal join_radius labeloffset mitered pen_bot pen_lft
+ syn keyword mpNewInternal pen_rt pen_top rounded squared tolerance
+ # Predefined constants
+ syn keyword mpConstant EOF background base_name base_version black
+ syn keyword mpConstant blankpicture blue ditto down evenly fullcircle
+ syn keyword mpConstant green halfcircle identity left origin penrazor
+ syn keyword mpConstant penspeck pensquare quartercircle red right
+ syn keyword mpConstant unitsquare up white withdots
+ # Other predefined variables
+ syn keyword mpVariable currentpen currentpen_path currentpicture cuttings
+ syn keyword mpVariable defaultfont extra_beginfig extra_endfig
+ syn keyword mpVariable laboff labxf labyf laboff labxf labyf
+ syn match mpVariable /\.\%(lft\|rt\|bot\|top\|ulft\|urt\|llft\|lrt\)\>/
+ # let statements:
+ syn keyword mpnumExp abs
+ syn keyword mpDef rotatedabout
+ syn keyword mpCommand bye relax
+ # on and off are not technically keywords, but it is nice to highlight them
+ # inside dashpattern().
+ syn keyword mpOnOff off on contained
+ syn keyword mpDash dashpattern contained
+ syn region mpDashPattern start="dashpattern\s*" end=")"he=e-1 contains=mfNumeric,mfLength,mpOnOff,mpDash
+endif
+
+# Keywords defined by mfplain.mp
+if get(g:, "mp_mfplain_macros", get(g:, "mfplain_mp_macros", 0))
+ syn keyword mpDef beginchar capsule_def change_width
+ syn keyword mpDef define_blacker_pixels define_corrected_pixels
+ syn keyword mpDef define_good_x_pixels define_good_y_pixels
+ syn keyword mpDef define_horizontal_corrected_pixels define_pixels
+ syn keyword mpDef define_whole_blacker_pixels define_whole_pixels
+ syn keyword mpDef define_whole_vertical_blacker_pixels
+ syn keyword mpDef define_whole_vertical_pixels endchar
+ syn keyword mpDef font_coding_scheme font_extra_space font_identifier
+ syn keyword mpDef font_normal_shrink font_normal_space
+ syn keyword mpDef font_normal_stretch font_quad font_size font_slant
+ syn keyword mpDef font_x_height italcorr labelfont lowres_fix makebox
+ syn keyword mpDef makegrid maketicks mode_def mode_setup proofrule
+ syn keyword mpDef smode
+ syn keyword mpVardef hround proofrulethickness vround
+ syn keyword mpNewInternal blacker o_correction
+ syn keyword mpVariable extra_beginchar extra_endchar extra_setup rulepen
+ # plus some no-ops, also from mfplain.mp
+ syn keyword mpDef cull cullit gfcorners imagerules nodisplays
+ syn keyword mpDef notransforms openit proofoffset screenchars
+ syn keyword mpDef screenrule screenstrokes showit
+ syn keyword mpVardef grayfont slantfont titlefont
+ syn keyword mpVariable currenttransform
+ syn keyword mpConstant unitpixel
+ # These are not listed in the MetaPost manual, and some are ignored by
+ # MetaPost, but are nonetheless defined in mfplain.mp
+ syn keyword mpDef killtext
+ syn match mpVardef "\<good\.\%(x\|y\|lft\|rt\|top\|bot\)\>"
+ syn keyword mpVariable aspect_ratio localfont mag mode mode_name
+ syn keyword mpVariable proofcolor
+ syn keyword mpConstant lowres proof smoke
+ syn keyword mpNewInternal autorounding bp_per_pixel granularity
+ syn keyword mpNewInternal number_of_modes proofing smoothing turningcheck
+endif
+
+# Keywords defined by all base macro packages:
+# - (r)boxes.mp
+# - format.mp
+# - graph.mp
+# - marith.mp
+# - sarith.mp
+# - string.mp
+# - TEX.mp
+if get(g:, "mp_other_macros", get(g:, "other_mp_macros", 1))
+ # boxes and rboxes
+ syn keyword mpDef boxjoin drawboxed drawboxes drawunboxed
+ syn keyword mpNewInternal circmargin defaultdx defaultdy rbox_radius
+ syn keyword mpVardef boxit bpath circleit fixpos fixsize generic_declare
+ syn keyword mpVardef generic_redeclare generisize pic rboxit str_prefix
+ # format
+ syn keyword mpVardef Mformat format init_numbers roundd
+ syn keyword mpVariable Fe_base Fe_plus
+ syn keyword mpConstant Ten_to
+ # graph
+ syn keyword mpDef Gfor Gxyscale OUT auto begingraph endgraph gdata
+ syn keyword mpDef gdraw gdrawarrow gdrawdblarrow gfill plot
+ syn keyword mpVardef augment autogrid frame gdotlabel glabel grid itick
+ syn keyword mpVardef otick
+ syn keyword mpVardef Mreadpath setcoords setrange
+ syn keyword mpNewInternal Gmarks Gminlog Gpaths linear log
+ syn keyword mpVariable Autoform Gemarks Glmarks Gumarks
+ syn keyword mpConstant Gtemplate
+ syn match mpVariable /Gmargin\.\%(low\|high\)/
+ # marith
+ syn keyword mpVardef Mabs Meform Mexp Mexp_str Mlog Mlog_Str Mlog_str
+ syn keyword mpPrimaryDef Mdiv Mmul
+ syn keyword mpSecondaryDef Madd Msub
+ syn keyword mpTertiaryDef Mleq
+ syn keyword mpNewInternal Mten Mzero
+ # sarith
+ syn keyword mpVardef Sabs Scvnum
+ syn keyword mpPrimaryDef Sdiv Smul
+ syn keyword mpSecondaryDef Sadd Ssub
+ syn keyword mpTertiaryDef Sleq Sneq
+ # string
+ syn keyword mpVardef cspan isdigit loptok
+ # TEX
+ syn keyword mpVardef TEX TEXPOST TEXPRE
+endif
+
+if get(b:, "mp_metafun", get(g:, "mp_metafun", 0))
+ # MetaFun additions to MetaPost base file
+ syn keyword mpConstant cyan magenta yellow
+ syn keyword mpConstant penspec
+ syn keyword mpNumExp graypart greycolor graycolor
+
+ # Highlight TeX keywords (for MetaPost embedded in ConTeXt documents)
+ syn match mpTeXKeyword '\\[a-zA-Z@]\+'
+
+ syn keyword mpPrimitive runscript
+
+ runtime! syntax/shared/context-data-metafun.vim
+
+ hi def link metafunCommands Statement
+ hi def link metafunInternals Identifier
+endif
+
+# Define the default highlighting
+hi def link mpTeXdelim mpPrimitive
+hi def link mpBoolExp mfBoolExp
+hi def link mpNumExp mfNumExp
+hi def link mpPairExp mfPairExp
+hi def link mpPathExp mfPathExp
+hi def link mpPenExp mfPenExp
+hi def link mpPicExp mfPicExp
+hi def link mpStringExp mfStringExp
+hi def link mpInternal mfInternal
+hi def link mpCommand mfCommand
+hi def link mpType mfType
+hi def link mpPrimitive mfPrimitive
+hi def link mpDef mfDef
+hi def link mpVardef mpDef
+hi def link mpPrimaryDef mpDef
+hi def link mpSecondaryDef mpDef
+hi def link mpTertiaryDef mpDef
+hi def link mpNewInternal mpInternal
+hi def link mpVariable mfVariable
+hi def link mpConstant mfConstant
+hi def link mpOnOff mpPrimitive
+hi def link mpDash mpPrimitive
+hi def link mpTeXKeyword Identifier
+
+b:current_syntax = "mp"
+
+# vim: sw=2 fdm=marker
diff --git a/runtime/syntax/mplayerconf.vim b/runtime/syntax/mplayerconf.vim
new file mode 100644
index 0000000..84ad2da
--- /dev/null
+++ b/runtime/syntax/mplayerconf.vim
@@ -0,0 +1,128 @@
+" Vim syntax file
+" Language: mplayer(1) configuration file
+" Maintainer: Dmitri Vereshchagin <dmitri.vereshchagin@gmail.com>
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2015-01-24
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword+=-
+
+syn keyword mplayerconfTodo contained TODO FIXME XXX NOTE
+
+syn region mplayerconfComment display oneline start='#' end='$'
+ \ contains=mplayerconfTodo,@Spell
+
+syn keyword mplayerconfPreProc include
+
+syn keyword mplayerconfBoolean yes no true false
+
+syn match mplayerconfNumber '\<\d\+\>'
+
+syn keyword mplayerconfOption hardframedrop nomouseinput bandwidth dumpstream
+ \ rtsp-stream-over-tcp tv overlapsub
+ \ sub-bg-alpha subfont-outline unicode format
+ \ vo edl cookies fps zrfd af-adv nosound
+ \ audio-density passlogfile vobsuboutindex autoq
+ \ autosync benchmark colorkey nocolorkey edlout
+ \ enqueue fixed-vo framedrop h identify input
+ \ lircconf list-options loop menu menu-cfg
+ \ menu-root nojoystick nolirc nortc playlist
+ \ quiet really-quiet shuffle skin slave
+ \ softsleep speed sstep use-stdin aid alang
+ \ audio-demuxer audiofile audiofile-cache
+ \ cdrom-device cache cdda channels chapter
+ \ cookies-file demuxer dumpaudio dumpfile
+ \ dumpvideo dvbin dvd-device dvdangle forceidx
+ \ frames hr-mp3-seek idx ipv4-only-proxy
+ \ loadidx mc mf ni nobps noextbased
+ \ passwd prefer-ipv4 prefer-ipv6 rawaudio
+ \ rawvideo saveidx sb srate ss tskeepbroken
+ \ tsprog tsprobe user user-agent vid vivo
+ \ dumpjacosub dumpmicrodvdsub dumpmpsub dumpsami
+ \ dumpsrtsub dumpsub ffactor flip-hebrew font
+ \ forcedsubsonly fribidi-charset ifo noautosub
+ \ osdlevel sid slang spuaa spualign spugauss
+ \ sub sub-bg-color sub-demuxer sub-fuzziness
+ \ sub-no-text-pp subalign subcc subcp subdelay
+ \ subfile subfont-autoscale subfont-blur
+ \ subfont-encoding subfont-osd-scale
+ \ subfont-text-scale subfps subpos subwidth
+ \ utf8 vobsub vobsubid abs ao aofile aop delay
+ \ mixer nowaveheader aa bpp brightness contrast
+ \ dfbopts display double dr dxr2 fb fbmode
+ \ fbmodeconfig forcexv fs fsmode-dontuse fstype
+ \ geometry guiwid hue jpeg monitor-dotclock
+ \ monitor-hfreq monitor-vfreq monitoraspect
+ \ nograbpointer nokeepaspect noxv ontop panscan
+ \ rootwin saturation screenw stop-xscreensaver
+ \ vm vsync wid xineramascreen z zrbw zrcrop
+ \ zrdev zrhelp zrnorm zrquality zrvdec zrxdoff
+ \ ac af afm aspect flip lavdopts noaspect
+ \ noslices novideo oldpp pp pphelp ssf stereo
+ \ sws vc vfm x xvidopts xy y zoom vf vop
+ \ audio-delay audio-preload endpos ffourcc
+ \ include info noautoexpand noskip o oac of
+ \ ofps ovc skiplimit v vobsubout vobsuboutid
+ \ lameopts lavcopts nuvopts xvidencopts a52drc
+ \ adapter af-add af-clr af-del af-pre
+ \ allow-dangerous-playlist-parsing ass
+ \ ass-border-color ass-bottom-margin ass-color
+ \ ass-font-scale ass-force-style ass-hinting
+ \ ass-line-spacing ass-styles ass-top-margin
+ \ ass-use-margins ausid bluray-angle
+ \ bluray-device border border-pos-x border-pos-y
+ \ cache-min cache-seek-min capture codecpath
+ \ codecs-file correct-pts crash-debug
+ \ doubleclick-time dvd-speed edl-backward-delay
+ \ edl-start-pts embeddedfonts fafmttag
+ \ field-dominance fontconfig force-avi-aspect
+ \ force-key-frames frameno-file fullscreen gamma
+ \ gui gui-include gui-wid heartbeat-cmd
+ \ heartbeat-interval hr-edl-seek
+ \ http-header-fields idle ignore-start
+ \ key-fifo-size list-properties menu-chroot
+ \ menu-keepdir menu-startup mixer-channel
+ \ monitor-orientation monitorpixelaspect
+ \ mouse-movements msgcharset msgcolor msglevel
+ \ msgmodule name noar nocache noconfig
+ \ noconsolecontrols nocorrect-pts nodouble
+ \ noedl-start-pts noencodedups
+ \ noflip-hebrew-commas nogui noidx noodml
+ \ nostop-xscreensaver nosub noterm-osd
+ \ osd-duration osd-fractions panscanrange
+ \ pausing playing-msg priority profile
+ \ progbar-align psprobe pvr radio referrer
+ \ refreshrate reuse-socket rtc rtc-device
+ \ rtsp-destination rtsp-port
+ \ rtsp-stream-over-http screenh show-profile
+ \ softvol softvol-max sub-paths subfont
+ \ term-osd-esc title tvscan udp-ip udp-master
+ \ udp-port udp-seek-threshold udp-slave
+ \ unrarexec use-filedir-conf use-filename-title
+ \ vf-add vf-clr vf-del vf-pre volstep volume
+ \ zrhdec zrydoff
+
+syn region mplayerconfString display oneline start=+"+ end=+"+
+syn region mplayerconfString display oneline start=+'+ end=+'+
+
+syn region mplayerconfProfile display oneline start='^\s*\[' end='\]'
+
+hi def link mplayerconfTodo Todo
+hi def link mplayerconfComment Comment
+hi def link mplayerconfPreProc PreProc
+hi def link mplayerconfBoolean Boolean
+hi def link mplayerconfNumber Number
+hi def link mplayerconfOption Keyword
+hi def link mplayerconfString String
+hi def link mplayerconfProfile Special
+
+let b:current_syntax = "mplayerconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/mrxvtrc.vim b/runtime/syntax/mrxvtrc.vim
new file mode 100644
index 0000000..2ef434d
--- /dev/null
+++ b/runtime/syntax/mrxvtrc.vim
@@ -0,0 +1,282 @@
+" Description : Vim syntax file for mrxvtrc (for mrxvt-0.5.0 and up)
+" Created : Wed 26 Apr 2006 01:20:53 AM CDT
+" Modified : Thu 02 Feb 2012 08:37:45 PM EST
+" Maintainer : GI <a@b.c>, where a='gi1242+vim', b='gmail', c='com'
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case match
+
+" Errors
+syn match mrxvtrcError contained '\v\S+'
+
+" Comments
+syn match mrxvtrcComment contains=@Spell '^\s*[!#].*$'
+syn match mrxvtrcComment '\v^\s*[#!]\s*\w+[.*]\w+.*:.*'
+
+"
+" Options.
+"
+syn match mrxvtrcClass '\v^\s*\w+[.*]'
+ \ nextgroup=mrxvtrcOptions,mrxvtrcProfile,@mrxvtrcPOpts,mrxvtrcError
+
+" Boolean options
+syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcBColon,mrxvtrcError
+ \ highlightTabOnBell syncTabTitle hideTabbar
+ \ autohideTabbar bottomTabbar hideButtons
+ \ syncTabIcon veryBoldFont maximized
+ \ fullscreen reverseVideo loginShell
+ \ jumpScroll scrollBar scrollbarRight
+ \ scrollbarFloating scrollTtyOutputInhibit
+ \ scrollTtyKeypress transparentForce
+ \ transparentScrollbar transparentMenubar
+ \ transparentTabbar tabUsePixmap utmpInhibit
+ \ visualBell mapAlert meta8
+ \ mouseWheelScrollPage multibyte_cursor
+ \ tripleclickwords showMenu xft xftNomFont
+ \ xftSlowOutput xftAntialias xftHinting
+ \ xftAutoHint xftGlobalAdvance cmdAllTabs
+ \ protectSecondary thai borderLess
+ \ overrideRedirect broadcast smartResize
+ \ pointerBlank cursorBlink noSysConfig
+ \ disableMacros linuxHomeEndKey sessionMgt
+ \ boldColors smoothResize useFifo veryBright
+syn match mrxvtrcOptions contained nextgroup=mrxvtrcBColon,mrxvtrcError
+ \ '\v<transparent>'
+syn match mrxvtrcBColon contained skipwhite
+ \ nextgroup=mrxvtrcBoolVal,mrxvtrcError ':'
+syn case ignore
+syn keyword mrxvtrcBoolVal contained skipwhite nextgroup=mrxvtrcError
+ \ 0 1 yes no on off true false
+syn case match
+
+" Color options
+syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcCColon,mrxvtrcError
+ \ ufBackground textShadow tabForeground
+ \ itabForeground tabBackground itabBackground
+ \ scrollColor troughColor highlightColor
+ \ cursorColor cursorColor2 pointerColor
+ \ borderColor tintColor
+syn match mrxvtrcOptions contained nextgroup=mrxvtrcCColon,mrxvtrcError
+ \ '\v<color([0-9]|1[0-5]|BD|UL|RV)>'
+syn match mrxvtrcCColon contained skipwhite
+ \ nextgroup=mrxvtrcColorVal ':'
+syn match mrxvtrcColorVal contained skipwhite nextgroup=mrxvtrcError
+ \ '\v#[0-9a-fA-F]{6}'
+
+" Numeric options
+syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcNColon,mrxvtrcError
+ \ maxTabWidth minVisibleTabs
+ \ scrollbarThickness xftmSize xftSize desktop
+ \ externalBorder internalBorder lineSpace
+ \ pointerBlankDelay cursorBlinkInterval
+ \ shading backgroundFade bgRefreshInterval
+ \ fading opacity opacityDegree xftPSize
+syn match mrxvtrcNColon contained skipwhite
+ \ nextgroup=mrxvtrcNumVal,mrxvtrcError ':'
+syn match mrxvtrcNumVal contained skipwhite nextgroup=mrxvtrcError
+ \ '\v[+-]?<(0[0-7]+|\d+|0x[0-9a-f]+)>'
+
+" String options
+syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcSColon,mrxvtrcError
+ \ tabTitle termName title clientName iconName
+ \ bellCommand backspaceKey deleteKey
+ \ printPipe cutChars answerbackString
+ \ smClientID geometry path boldFont xftFont
+ \ xftmFont xftPFont inputMethod
+ \ greektoggle_key menu menubarPixmap
+ \ scrollbarPixmap tabbarPixmap appIcon
+ \ multichar_encoding initProfileList
+syn match mrxvtrcOptions contained nextgroup=mrxvtrcSColon,mrxvtrcError
+ \ '\v<m?font[1-5]?>'
+syn match mrxvtrcSColon contained skipwhite nextgroup=mrxvtrcStrVal ':'
+syn match mrxvtrcStrVal contained '\v\S.*'
+
+" Profile options
+syn cluster mrxvtrcPOpts contains=mrxvtrcPSOpts,mrxvtrcPCOpts,mrxvtrcPNOpts
+syn match mrxvtrcProfile contained nextgroup=@mrxvtrcPOpts,mrxvtrcError
+ \ '\vprofile\d+\.'
+syn keyword mrxvtrcPSOpts contained nextgroup=mrxvtrcSColon,mrxvtrcError
+ \ tabTitle command holdExitText holdExitTitle
+ \ Pixmap workingDirectory titleFormat
+ \ winTitleFormat
+syn keyword mrxvtrcPCOpts contained nextgroup=mrxvtrcCColon,mrxvtrcError
+ \ background foreground
+syn keyword mrxvtrcPNOpts contained nextgroup=mrxvtrcNColon,mrxvtrcError
+ \ holdExit saveLines
+
+" scrollbarStyle
+syn match mrxvtrcOptions contained skipwhite
+ \ nextgroup=mrxvtrcSBstyle,mrxvtrcError
+ \ '\v<scrollbarStyle:'
+syn keyword mrxvtrcSBstyle contained skipwhite nextgroup=mrxvtrcError
+ \ plain xterm rxvt next sgi
+
+" scrollbarAlign
+syn match mrxvtrcOptions contained skipwhite
+ \ nextgroup=mrxvtrcSBalign,mrxvtrcError
+ \ '\v<scrollbarAlign:'
+syn keyword mrxvtrcSBalign contained skipwhite nextgroup=mrxvtrcError
+ \ top bottom
+
+" textShadowMode
+syn match mrxvtrcOptions contained skipwhite
+ \ nextgroup=mrxvtrcTSmode,mrxvtrcError
+ \ '\v<textShadowMode:'
+syn keyword mrxvtrcTSmode contained skipwhite nextgroup=mrxvtrcError
+ \ none top bottom left right topleft topright
+ \ botleft botright
+
+" greek_keyboard
+syn match mrxvtrcOptions contained skipwhite
+ \ nextgroup=mrxvtrcGrkKbd,mrxvtrcError
+ \ '\v<greek_keyboard:'
+syn keyword mrxvtrcGrkKbd contained skipwhite nextgroup=mrxvtrcError
+ \ iso ibm
+
+" xftWeight
+syn match mrxvtrcOptions contained skipwhite
+ \ nextgroup=mrxvtrcXftWt,mrxvtrcError
+ \ '\v<(xftWeight|xftBoldWeight):'
+syn keyword mrxvtrcXftWt contained skipwhite nextgroup=mrxvtrcError
+ \ light medium demibold bold black
+
+" xftSlant
+syn match mrxvtrcOptions contained skipwhite
+ \ nextgroup=mrxvtrcXftSl,mrxvtrcError
+ \ '\v<xftSlant:'
+syn keyword mrxvtrcXftSl contained skipwhite nextgroup=mrxvtrcError
+ \ roman italic oblique
+
+" xftWidth
+syn match mrxvtrcOptions contained skipwhite
+ \ nextgroup=mrxvtrcXftWd,mrxvtrcError
+ \ '\v<xftWidth:'
+syn keyword mrxvtrcXftWd contained skipwhite nextgroup=mrxvtrcError
+ \ ultracondensed ultraexpanded
+ \ condensed expanded normal
+
+" xftRGBA
+syn match mrxvtrcOptions contained skipwhite
+ \ nextgroup=mrxvtrcXftHt,mrxvtrcError
+ \ '\v<xftRGBA:'
+syn keyword mrxvtrcXftHt contained skipwhite nextgroup=mrxvtrcError
+ \ rgb bgr vrgb vbgr none
+
+" preeditType
+syn match mrxvtrcOptions contained skipwhite
+ \ nextgroup=mrxvtrcPedit,mrxvtrcError
+ \ '\v<preeditType:'
+syn keyword mrxvtrcPedit contained skipwhite nextgroup=mrxvtrcError
+ \ OverTheSpot OffTheSpot Root
+
+" modifier
+syn match mrxvtrcOptions contained skipwhite
+ \ nextgroup=mrxvtrcMod,mrxvtrcError
+ \ '\v<modifier:'
+syn keyword mrxvtrcMod contained skipwhite nextgroup=mrxvtrcError
+ \ alt meta hyper super mod1 mod2 mod3 mod4 mod5
+
+" selectStyle
+syn match mrxvtrcOptions contained skipwhite
+ \ nextgroup=mrxvtrcSelSty,mrxvtrcError
+ \ '\v<selectStyle:'
+syn keyword mrxvtrcSelSty contained skipwhite nextgroup=mrxvtrcError
+ \ old oldword
+
+
+"
+" Macros
+"
+syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcKey,mrxvtrcError
+ \ macro
+syn case ignore
+syn match mrxvtrcKey contained skipwhite
+ \ nextgroup=mrxvtrcMacro,mrxvtrcError
+ \ '\v\.((primary|add|ctrl|alt|meta|shift)\+)*\w+:'
+syn case match
+
+" Macros without arguments
+syn keyword mrxvtrcMacro contained skipwhite nextgroup=mrxvtrcError
+ \ Dummy Copy Paste ToggleVeryBold
+ \ ToggleTransparency ToggleBroadcast
+ \ ToggleHold SetTitle ToggleMacros
+ \ ToggleFullscreen Raise
+
+" Macros with a string argument
+syn keyword mrxvtrcMacro contained skipwhite nextgroup=mrxvtrcStrVal
+ \ Esc Str Exec Scroll PrintScreen SaveConfig
+
+" Macros with a numeric argument
+syn keyword mrxvtrcMacro contained skipwhite
+ \ nextgroup=mrxvtrcNumVal,mrxvtrcError
+ \ Close GotoTab MoveTab ResizeFont UseFifo
+
+" NewTab macro
+syn keyword mrxvtrcMacro contained skipwhite
+ \ nextgroup=mrxvtrcTitle,mrxvtrcShell,mrxvtrcCmd
+ \ NewTab
+syn region mrxvtrcTitle contained oneline skipwhite
+ \ nextgroup=mrxvtrcShell,mrxvtrcCmd
+ \ start='"' end='"'
+syn match mrxvtrcShell contained nextgroup=mrxvtrcCmd '!'
+syn match mrxvtrcCmd contained '\v[^!" \t].*'
+
+" ToggleSubwin macro
+syn keyword mrxvtrcMacro contained skipwhite
+ \ nextgroup=mrxvtrcSubwin,mrxvtrcError
+ \ ToggleSubwin
+syn match mrxvtrcSubwin contained skipwhite nextgroup=mrxvtrcError
+ \ '\v[-+]?[bmst]>'
+
+"
+" Highlighting groups
+"
+hi def link mrxvtrcError Error
+hi def link mrxvtrcComment Comment
+
+hi def link mrxvtrcClass Statement
+hi def link mrxvtrcOptions mrxvtrcClass
+hi def link mrxvtrcBColon mrxvtrcClass
+hi def link mrxvtrcCColon mrxvtrcClass
+hi def link mrxvtrcNColon mrxvtrcClass
+hi def link mrxvtrcSColon mrxvtrcClass
+hi def link mrxvtrcProfile mrxvtrcClass
+hi def link mrxvtrcPSOpts mrxvtrcClass
+hi def link mrxvtrcPCOpts mrxvtrcClass
+hi def link mrxvtrcPNOpts mrxvtrcClass
+
+hi def link mrxvtrcBoolVal Boolean
+hi def link mrxvtrcStrVal String
+hi def link mrxvtrcColorVal Constant
+hi def link mrxvtrcNumVal Number
+
+hi def link mrxvtrcSBstyle mrxvtrcStrVal
+hi def link mrxvtrcSBalign mrxvtrcStrVal
+hi def link mrxvtrcTSmode mrxvtrcStrVal
+hi def link mrxvtrcGrkKbd mrxvtrcStrVal
+hi def link mrxvtrcXftWt mrxvtrcStrVal
+hi def link mrxvtrcXftSl mrxvtrcStrVal
+hi def link mrxvtrcXftWd mrxvtrcStrVal
+hi def link mrxvtrcXftHt mrxvtrcStrVal
+hi def link mrxvtrcPedit mrxvtrcStrVal
+hi def link mrxvtrcMod mrxvtrcStrVal
+hi def link mrxvtrcSelSty mrxvtrcStrVal
+
+hi def link mrxvtrcMacro Identifier
+hi def link mrxvtrcKey mrxvtrcClass
+hi def link mrxvtrcTitle mrxvtrcStrVal
+hi def link mrxvtrcShell Special
+hi def link mrxvtrcCmd PreProc
+hi def link mrxvtrcSubwin mrxvtrcStrVal
+
+let b:current_syntax = "mrxvtrc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/msidl.vim b/runtime/syntax/msidl.vim
new file mode 100644
index 0000000..57eaeca
--- /dev/null
+++ b/runtime/syntax/msidl.vim
@@ -0,0 +1,84 @@
+" Vim syntax file
+" Language: MS IDL (Microsoft dialect of Interface Description Language)
+" Maintainer: Vadim Zeitlin <vadim@wxwindows.org>
+" Last Change: 2012 Feb 12 by Thilo Six
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Misc basic
+syn match msidlId "[a-zA-Z][a-zA-Z0-9_]*"
+syn match msidlUUID "{\?[[:xdigit:]]\{8}-\([[:xdigit:]]\{4}-\)\{3}[[:xdigit:]]\{12}}\?"
+syn region msidlString start=/"/ skip=/\\\(\\\\\)*"/ end=/"/
+syn match msidlLiteral "\d\+\(\.\d*\)\="
+syn match msidlLiteral "\.\d\+"
+syn match msidlSpecial contained "[]\[{}:]"
+
+" Comments
+syn keyword msidlTodo contained TODO FIXME XXX
+syn region msidlComment start="/\*" end="\*/" contains=msidlTodo
+syn match msidlComment "//.*" contains=msidlTodo
+syn match msidlCommentError "\*/"
+
+" C style Preprocessor
+syn region msidlIncluded contained start=+"+ skip=+\\\(\\\\\)*"+ end=+"+
+syn match msidlIncluded contained "<[^>]*>"
+syn match msidlInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=msidlIncluded,msidlString
+syn region msidlPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=msidlComment,msidlCommentError
+syn region msidlDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=msidlLiteral, msidlString
+
+" Attributes
+syn keyword msidlAttribute contained in out propget propput propputref retval
+syn keyword msidlAttribute contained aggregatable appobject binadable coclass control custom default defaultbind defaultcollelem defaultvalue defaultvtable dispinterface displaybind dual entry helpcontext helpfile helpstring helpstringdll hidden id immediatebind lcid library licensed nonbrowsable noncreatable nonextensible oleautomation optional object public readonly requestedit restricted source string uidefault usesgetlasterror vararg version
+syn match msidlAttribute /uuid(.*)/he=s+4 contains=msidlUUID
+syn match msidlAttribute /helpstring(.*)/he=s+10 contains=msidlString
+syn region msidlAttributes start="\[" end="]" keepend contains=msidlSpecial,msidlString,msidlAttribute,msidlComment,msidlCommentError
+
+" Keywords
+syn keyword msidlEnum enum
+syn keyword msidlImport import importlib
+syn keyword msidlStruct interface library coclass
+syn keyword msidlTypedef typedef
+
+" Types
+syn keyword msidlStandardType byte char double float hyper int long short void wchar_t
+syn keyword msidlStandardType BOOL BSTR HRESULT VARIANT VARIANT_BOOL
+syn region msidlSafeArray start="SAFEARRAY(" end=")" contains=msidlStandardType
+
+syn sync lines=50
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link msidlInclude Include
+hi def link msidlPreProc PreProc
+hi def link msidlPreCondit PreCondit
+hi def link msidlDefine Macro
+hi def link msidlIncluded String
+hi def link msidlString String
+hi def link msidlComment Comment
+hi def link msidlTodo Todo
+hi def link msidlSpecial SpecialChar
+hi def link msidlLiteral Number
+hi def link msidlUUID Number
+
+hi def link msidlImport Include
+hi def link msidlEnum StorageClass
+hi def link msidlStruct Structure
+hi def link msidlTypedef Typedef
+hi def link msidlAttribute StorageClass
+
+hi def link msidlStandardType Type
+hi def link msidlSafeArray Type
+
+
+let b:current_syntax = "msidl"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vi: set ts=8 sw=4:
diff --git a/runtime/syntax/msmessages.vim b/runtime/syntax/msmessages.vim
new file mode 100644
index 0000000..5faee97
--- /dev/null
+++ b/runtime/syntax/msmessages.vim
@@ -0,0 +1,132 @@
+" Vim syntax file
+" Language: MS Message Text files (*.mc)
+" Maintainer: Kevin Locke <kwl7@cornell.edu>
+" Last Change: 2008 April 09
+" Location: http://kevinlocke.name/programs/vim/syntax/msmessages.vim
+
+" See format description at <http://msdn2.microsoft.com/en-us/library/aa385646.aspx>
+" This file is based on the rc.vim and c.vim
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Common MS Messages keywords
+syn case ignore
+syn keyword msmessagesIdentifier MessageIdTypedef
+syn keyword msmessagesIdentifier SeverityNames
+syn keyword msmessagesIdentifier FacilityNames
+syn keyword msmessagesIdentifier LanguageNames
+syn keyword msmessagesIdentifier OutputBase
+
+syn keyword msmessagesIdentifier MessageId
+syn keyword msmessagesIdentifier Severity
+syn keyword msmessagesIdentifier Facility
+syn keyword msmessagesIdentifier OutputBase
+
+syn match msmessagesIdentifier /\<SymbolicName\>/ nextgroup=msmessagesIdentEq skipwhite
+syn match msmessagesIdentEq transparent /=/ nextgroup=msmessagesIdentDef skipwhite contained
+syn match msmessagesIdentDef display /\w\+/ contained
+" Note: The Language keyword is highlighted as part of an msmessagesLangEntry
+
+" Set value
+syn case match
+syn region msmessagesSet start="(" end=")" transparent fold contains=msmessagesName keepend
+syn match msmessagesName /\w\+/ nextgroup=msmessagesSetEquals skipwhite contained
+syn match msmessagesSetEquals /=/ display transparent nextgroup=msmessagesNumVal skipwhite contained
+syn match msmessagesNumVal display transparent "\<\d\|\.\d" contains=msmessagesNumber,msmessagesFloat,msmessagesOctalError,msmessagesOctal nextgroup=msmessagesValSep
+syn match msmessagesValSep /:/ display nextgroup=msmessagesNameDef contained
+syn match msmessagesNameDef /\w\+/ display contained
+
+
+" Comments are converted to C source (by removing leading ;)
+" So we highlight the comments as C
+syn include @msmessagesC syntax/c.vim
+unlet b:current_syntax
+syn region msmessagesCComment matchgroup=msmessagesComment start=/;/ end=/$/ contains=@msmessagesC keepend
+
+" String and Character constants
+" Highlight special characters (those which have a escape) differently
+syn case ignore
+syn region msmessagesLangEntry start=/\<Language\>\s*=\s*\S\+\s*$/hs=e+1 end=/^\./ contains=msmessagesFormat,msmessagesLangEntryEnd,msmessagesLanguage keepend
+syn match msmessagesLanguage /\<Language\(\s*=\)\@=/ contained
+syn match msmessagesLangEntryEnd display /^\./ contained
+syn case match
+syn match msmessagesFormat display /%[1-9]\d\?\(![-+0 #]*\d*\(\.\d\+\)\?\(h\|l\|ll\|I\|I32\|I64\)\?[aAcCdeEfgGinopsSuxX]!\)\?/ contained
+syn match msmessagesFormat display /%[0.%\\br]/ contained
+syn match msmessagesFormat display /%!\(\s\)\@=/ contained
+
+" Integer number, or floating point number without a dot and with "f".
+" Copied from c.vim
+syn case ignore
+"(long) integer
+syn match msmessagesNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
+"hex number
+syn match msmessagesNumber display contained "\<0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+" Flag the first zero of an octal number as something special
+syn match msmessagesOctal display contained "\<0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=msmessagesOctalZero
+syn match msmessagesOctalZero display contained "\<0"
+" flag an octal number with wrong digits
+syn match msmessagesOctalError display contained "\<0\o*[89]\d*"
+syn match msmessagesFloat display contained "\d\+f"
+"floating point number, with dot, optional exponent
+syn match msmessagesFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+"floating point number, starting with a dot, optional exponent
+syn match msmessagesFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match msmessagesFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>"
+"hexadecimal floating point number, optional leading digits, with dot, with exponent
+syn match msmessagesFloat display contained "0x\x*\.\x\+p[-+]\=\d\+[fl]\=\>"
+"hexadecimal floating point number, with leading digits, optional dot, with exponent
+syn match msmessagesFloat display contained "0x\x\+\.\=p[-+]\=\d\+[fl]\=\>"
+
+" Types (used in MessageIdTypedef statement)
+syn case match
+syn keyword msmessagesType int long short char
+syn keyword msmessagesType signed unsigned
+syn keyword msmessagesType size_t ssize_t sig_atomic_t
+syn keyword msmessagesType int8_t int16_t int32_t int64_t
+syn keyword msmessagesType uint8_t uint16_t uint32_t uint64_t
+syn keyword msmessagesType int_least8_t int_least16_t int_least32_t int_least64_t
+syn keyword msmessagesType uint_least8_t uint_least16_t uint_least32_t uint_least64_t
+syn keyword msmessagesType int_fast8_t int_fast16_t int_fast32_t int_fast64_t
+syn keyword msmessagesType uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t
+syn keyword msmessagesType intptr_t uintptr_t
+syn keyword msmessagesType intmax_t uintmax_t
+" Add some Windows datatypes that will be common in msmessages files
+syn keyword msmessagesType BYTE CHAR SHORT SIZE_T SSIZE_T TBYTE TCHAR UCHAR USHORT
+syn keyword msmessagesType DWORD DWORDLONG DWORD32 DWORD64
+syn keyword msmessagesType INT INT32 INT64 UINT UINT32 UINT64
+syn keyword msmessagesType LONG LONGLONG LONG32 LONG64
+syn keyword msmessagesType ULONG ULONGLONG ULONG32 ULONG64
+
+" Sync to language entries, since they should be most common
+syn sync match msmessagesLangSync grouphere msmessagesLangEntry "\<Language\s*="
+syn sync match msmessagesLangEndSync grouphere NONE "^\."
+
+" Define the default highlighting.
+hi def link msmessagesNumber Number
+hi def link msmessagesOctal Number
+hi def link msmessagesFloat Float
+hi def link msmessagesOctalError msmessagesError
+hi def link msmessagesSetError msmessagesError
+hi def link msmessagesError Error
+hi def link msmessagesLangEntry String
+hi def link msmessagesLangEntryEnd Special
+hi def link msmessagesComment Comment
+hi def link msmessagesFormat msmessagesSpecial
+hi def link msmessagesSpecial SpecialChar
+
+hi def link msmessagesType Type
+hi def link msmessagesIdentifier Identifier
+hi def link msmessagesLanguage msmessagesIdentifier
+hi def link msmessagesName msmessagesIdentifier
+hi def link msmessagesNameDef Macro
+hi def link msmessagesIdentDef Macro
+hi def link msmessagesValSep Special
+hi def link msmessagesNameErr Error
+
+let b:current_syntax = "msmessages"
+
+" vim: ts=8
diff --git a/runtime/syntax/msql.vim b/runtime/syntax/msql.vim
new file mode 100644
index 0000000..60e75a7
--- /dev/null
+++ b/runtime/syntax/msql.vim
@@ -0,0 +1,83 @@
+" Vim syntax file
+" Language: msql
+" Maintainer: Lutz Eymers <ixtab@polzin.com>
+" URL: http://www.isp.de/data/msql.vim
+" Email: Subject: send syntax_vim.tgz
+" Last Change: 2001 May 10
+"
+" Options msql_sql_query = 1 for SQL syntax highligthing inside strings
+" msql_minlines = x to sync at least x lines backwards
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'msql'
+endif
+
+runtime! syntax/html.vim
+unlet b:current_syntax
+
+syn cluster htmlPreproc add=msqlRegion
+
+syn case match
+
+" Internal Variables
+syn keyword msqlIntVar ERRMSG contained
+
+" Env Variables
+syn keyword msqlEnvVar SERVER_SOFTWARE SERVER_NAME SERVER_URL GATEWAY_INTERFACE contained
+syn keyword msqlEnvVar SERVER_PROTOCOL SERVER_PORT REQUEST_METHOD PATH_INFO contained
+syn keyword msqlEnvVar PATH_TRANSLATED SCRIPT_NAME QUERY_STRING REMOTE_HOST contained
+syn keyword msqlEnvVar REMOTE_ADDR AUTH_TYPE REMOTE_USER CONTEN_TYPE contained
+syn keyword msqlEnvVar CONTENT_LENGTH HTTPS HTTPS_KEYSIZE HTTPS_SECRETKEYSIZE contained
+syn keyword msqlEnvVar HTTP_ACCECT HTTP_USER_AGENT HTTP_IF_MODIFIED_SINCE contained
+syn keyword msqlEnvVar HTTP_FROM HTTP_REFERER contained
+
+" Inlclude lLite
+syn include @msqlLite <sfile>:p:h/lite.vim
+
+" Msql Region
+syn region msqlRegion matchgroup=Delimiter start="<!$" start="<![^!->D]" end=">" contains=@msqlLite,msql.*
+
+" sync
+if exists("msql_minlines")
+ exec "syn sync minlines=" . msql_minlines
+else
+ syn sync minlines=100
+endif
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link msqlComment Comment
+hi def link msqlString String
+hi def link msqlNumber Number
+hi def link msqlFloat Float
+hi def link msqlIdentifier Identifier
+hi def link msqlGlobalIdentifier Identifier
+hi def link msqlIntVar Identifier
+hi def link msqlEnvVar Identifier
+hi def link msqlFunctions Function
+hi def link msqlRepeat Repeat
+hi def link msqlConditional Conditional
+hi def link msqlStatement Statement
+hi def link msqlType Type
+hi def link msqlInclude Include
+hi def link msqlDefine Define
+hi def link msqlSpecialChar SpecialChar
+hi def link msqlParentError Error
+hi def link msqlTodo Todo
+hi def link msqlOperator Operator
+hi def link msqlRelation Operator
+
+
+let b:current_syntax = "msql"
+
+if main_syntax == 'msql'
+ unlet main_syntax
+endif
+
+" vim: ts=8
diff --git a/runtime/syntax/mupad.vim b/runtime/syntax/mupad.vim
new file mode 100644
index 0000000..df87ad1
--- /dev/null
+++ b/runtime/syntax/mupad.vim
@@ -0,0 +1,284 @@
+" Vim syntax file
+" Language: MuPAD source
+" Maintainer: Dave Silvia <dsilvia@mchsi.com>
+" Filenames: *.mu
+" Date: 6/30/2004
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Set default highlighting to Win2k
+if !exists("mupad_cmdextversion")
+ let mupad_cmdextversion = 2
+endif
+
+syn case match
+
+syn match mupadComment "//\p*$"
+syn region mupadComment start="/\*" end="\*/"
+
+syn region mupadString start="\"" skip=/\\"/ end="\""
+
+syn match mupadOperator "(\|)\|:=\|::\|:\|;"
+" boolean
+syn keyword mupadOperator and or not xor
+syn match mupadOperator "==>\|\<=\>"
+
+" Informational
+syn keyword mupadSpecial FILEPATH NOTEBOOKFILE NOTEBOOKPATH
+" Set-able, e.g., DIGITS:=10
+syn keyword mupadSpecial DIGITS HISTORY LEVEL
+syn keyword mupadSpecial MAXLEVEL MAXDEPTH ORDER
+syn keyword mupadSpecial TEXTWIDTH
+" Set-able, e.g., PRETTYPRINT:=TRUE
+syn keyword mupadSpecial PRETTYPRINT
+" Set-able, e.g., LIBPATH:="C:\\MuPAD Pro\\mylibdir" or LIBPATH:="/usr/MuPAD Pro/mylibdir"
+syn keyword mupadSpecial LIBPATH PACKAGEPATH
+syn keyword mupadSpecial READPATH TESTPATH WRITEPATH
+" Symbols and Constants
+syn keyword mupadDefine FAIL NIL
+syn keyword mupadDefine TRUE FALSE UNKNOWN
+syn keyword mupadDefine complexInfinity infinity
+syn keyword mupadDefine C_ CATALAN E EULER I PI Q_ R_
+syn keyword mupadDefine RD_INF RD_NINF undefined unit universe Z_
+" print() directives
+syn keyword mupadDefine Unquoted NoNL KeepOrder Typeset
+" domain specifics
+syn keyword mupadStatement domain begin end_domain end
+syn keyword mupadIdentifier inherits category axiom info doc interface
+" basic programming statements
+syn keyword mupadStatement proc begin end_proc
+syn keyword mupadUnderlined name local option save
+syn keyword mupadConditional if then elif else end_if
+syn keyword mupadConditional case of do break end_case
+syn keyword mupadRepeat for do next break end_for
+syn keyword mupadRepeat while do next break end_while
+syn keyword mupadRepeat repeat next break until end_repeat
+" domain packages/libraries
+syn keyword mupadType detools import linalg numeric numlib plot polylib
+syn match mupadType '\<DOM_\w*\>'
+
+"syn keyword mupadFunction contains
+" Functions dealing with prime numbers
+syn keyword mupadFunction phi invphi mersenne nextprime numprimedivisors
+syn keyword mupadFunction pollard prevprime primedivisors
+" Functions operating on Lists, Matrices, Sets, ...
+syn keyword mupadFunction array _index
+" Evaluation
+syn keyword mupadFunction float contains
+" stdlib
+syn keyword mupadFunction _exprseq _invert _lazy_and _lazy_or _negate
+syn keyword mupadFunction _stmtseq _invert intersect minus union
+syn keyword mupadFunction Ci D Ei O Re Im RootOf Si
+syn keyword mupadFunction Simplify
+syn keyword mupadFunction abs airyAi airyBi alias unalias anames append
+syn keyword mupadFunction arcsin arccos arctan arccsc arcsec arccot
+syn keyword mupadFunction arcsinh arccosh arctanh arccsch arcsech arccoth
+syn keyword mupadFunction arg args array assert assign assignElements
+syn keyword mupadFunction assume assuming asympt bernoulli
+syn keyword mupadFunction besselI besselJ besselK besselY beta binomial bool
+syn keyword mupadFunction bytes card
+syn keyword mupadFunction ceil floor round trunc
+syn keyword mupadFunction coeff coerce collect combine copyClosure
+syn keyword mupadFunction conjugate content context contfrac
+syn keyword mupadFunction debug degree degreevec delete _delete denom
+syn keyword mupadFunction densematrix diff dilog dirac discont div _div
+syn keyword mupadFunction divide domtype doprint erf erfc error eval evalassign
+syn keyword mupadFunction evalp exp expand export unexport expose expr
+syn keyword mupadFunction expr2text external extnops extop extsubsop
+syn keyword mupadFunction fact fact2 factor fclose finput fname fopen fprint
+syn keyword mupadFunction fread ftextinput readbitmap readdata pathname
+syn keyword mupadFunction protocol read readbytes write writebytes
+syn keyword mupadFunction float frac frame _frame frandom freeze unfreeze
+syn keyword mupadFunction funcenv gamma gcd gcdex genident genpoly
+syn keyword mupadFunction getpid getprop ground has hastype heaviside help
+syn keyword mupadFunction history hold hull hypergeom icontent id
+syn keyword mupadFunction ifactor igamma igcd igcdex ilcm in _in
+syn keyword mupadFunction indets indexval info input int int2text
+syn keyword mupadFunction interpolate interval irreducible is
+syn keyword mupadFunction isprime isqrt iszero ithprime kummerU lambertW
+syn keyword mupadFunction last lasterror lcm lcoeff ldegree length
+syn keyword mupadFunction level lhs rhs limit linsolve lllint
+syn keyword mupadFunction lmonomial ln loadmod loadproc log lterm
+syn keyword mupadFunction match map mapcoeffs maprat matrix max min
+syn keyword mupadFunction mod modp mods monomials multcoeffs new
+syn keyword mupadFunction newDomain _next nextprime nops
+syn keyword mupadFunction norm normal nterms nthcoeff nthmonomial nthterm
+syn keyword mupadFunction null numer ode op operator package
+syn keyword mupadFunction pade partfrac patchlevel pdivide
+syn keyword mupadFunction piecewise plot plotfunc2d plotfunc3d
+syn keyword mupadFunction poly poly2list polylog powermod print
+syn keyword mupadFunction product protect psi quit _quit radsimp random rationalize
+syn keyword mupadFunction rec rectform register reset return revert
+syn keyword mupadFunction rewrite select series setuserinfo share sign signIm
+syn keyword mupadFunction simplify
+syn keyword mupadFunction sin cos tan csc sec cot
+syn keyword mupadFunction sinh cosh tanh csch sech coth
+syn keyword mupadFunction slot solve
+syn keyword mupadFunction pdesolve matlinsolve matlinsolveLU toeplitzSolve
+syn keyword mupadFunction vandermondeSolve fsolve odesolve odesolve2
+syn keyword mupadFunction polyroots polysysroots odesolveGeometric
+syn keyword mupadFunction realroot realroots mroots lincongruence
+syn keyword mupadFunction msqrts
+syn keyword mupadFunction sort split sqrt strmatch strprint
+syn keyword mupadFunction subs subset subsex subsop substring sum
+syn keyword mupadFunction surd sysname sysorder system table taylor tbl2text
+syn keyword mupadFunction tcoeff testargs testeq testtype text2expr
+syn keyword mupadFunction text2int text2list text2tbl rtime time
+syn keyword mupadFunction traperror type unassume unit universe
+syn keyword mupadFunction unloadmod unprotect userinfo val version
+syn keyword mupadFunction warning whittakerM whittakerW zeta zip
+
+" graphics plot::
+syn keyword mupadFunction getDefault setDefault copy modify Arc2d Arrow2d
+syn keyword mupadFunction Arrow3d Bars2d Bars3d Box Boxplot Circle2d Circle3d
+syn keyword mupadFunction Cone Conformal Curve2d Curve3d Cylinder Cylindrical
+syn keyword mupadFunction Density Ellipse2d Function2d Function3d Hatch
+syn keyword mupadFunction Histogram2d HOrbital Implicit2d Implicit3d
+syn keyword mupadFunction Inequality Iteration Line2d Line3d Lsys Matrixplot
+syn keyword mupadFunction MuPADCube Ode2d Ode3d Parallelogram2d Parallelogram3d
+syn keyword mupadFunction Piechart2d Piechart3d Point2d Point3d Polar
+syn keyword mupadFunction Polygon2d Polygon3d Raster Rectangle Sphere
+syn keyword mupadFunction Ellipsoid Spherical Sum Surface SurfaceSet
+syn keyword mupadFunction SurfaceSTL Tetrahedron Hexahedron Octahedron
+syn keyword mupadFunction Dodecahedron Icosahedron Text2d Text3d Tube Turtle
+syn keyword mupadFunction VectorField2d XRotate ZRotate Canvas CoordinateSystem2d
+syn keyword mupadFunction CoordinateSystem3d Group2d Group3d Scene2d Scene3d ClippingBox
+syn keyword mupadFunction Rotate2d Rotate3d Scale2d Scale3d Transform2d
+syn keyword mupadFunction Transform3d Translate2d Translate3d AmbientLight
+syn keyword mupadFunction Camera DistantLight PointLight SpotLight
+
+" graphics Attributes
+" graphics Output Attributes
+syn keyword mupadIdentifier OutputFile OutputOptions
+" graphics Defining Attributes
+syn keyword mupadIdentifier Angle AngleRange AngleBegin AngleEnd
+syn keyword mupadIdentifier Area Axis AxisX AxisY AxisZ Base Top
+syn keyword mupadIdentifier BaseX TopX BaseY TopY BaseZ TopZ
+syn keyword mupadIdentifier BaseRadius TopRadius Cells
+syn keyword mupadIdentifier Center CenterX CenterY CenterZ
+syn keyword mupadIdentifier Closed ColorData CommandList Contours CoordinateType
+syn keyword mupadIdentifier Data DensityData DensityFunction From To
+syn keyword mupadIdentifier FromX ToX FromY ToY FromZ ToZ
+syn keyword mupadIdentifier Function FunctionX FunctionY FunctionZ
+syn keyword mupadIdentifier Function1 Function2 Baseline
+syn keyword mupadIdentifier Generations RotationAngle IterationRules StartRule StepLength
+syn keyword mupadIdentifier TurtleRules Ground Heights Moves Inequalities
+syn keyword mupadIdentifier InputFile Iterations StartingPoint
+syn keyword mupadIdentifier LineColorFunction FillColorFunction
+syn keyword mupadIdentifier Matrix2d Matrix3d
+syn keyword mupadIdentifier MeshList MeshListType MeshListNormals
+syn keyword mupadIdentifier MagneticQuantumNumber MomentumQuantumNumber PrincipalQuantumNumber
+syn keyword mupadIdentifier Name Normal NormalX NormalY NormalZ
+syn keyword mupadIdentifier ParameterName ParameterBegin ParameterEnd ParameterRange
+syn keyword mupadIdentifier Points2d Points3d Radius RadiusFunction
+syn keyword mupadIdentifier Position PositionX PositionY PositionZ
+syn keyword mupadIdentifier Scale ScaleX ScaleY ScaleZ Shift ShiftX ShiftY ShiftZ
+syn keyword mupadIdentifier SemiAxes SemiAxisX SemiAxisY SemiAxisZ
+syn keyword mupadIdentifier Tangent1 Tangent1X Tangent1Y Tangent1Z
+syn keyword mupadIdentifier Tangent2 Tangent2X Tangent2Y Tangent2Z
+syn keyword mupadIdentifier Text TextOrientation TextRotation
+syn keyword mupadIdentifier UName URange UMin UMax VName VRange VMin VMax
+syn keyword mupadIdentifier XName XRange XMin XMax YName YRange YMin YMax
+syn keyword mupadIdentifier ZName ZRange ZMin ZMax ViewingBox
+syn keyword mupadIdentifier ViewingBoxXMin ViewingBoxXMax ViewingBoxXRange
+syn keyword mupadIdentifier ViewingBoxYMin ViewingBoxYMax ViewingBoxYRange
+syn keyword mupadIdentifier ViewingBoxZMin ViewingBoxZMax ViewingBoxZRange
+syn keyword mupadIdentifier Visible
+" graphics Axis Attributes
+syn keyword mupadIdentifier Axes AxesInFront AxesLineColor AxesLineWidth
+syn keyword mupadIdentifier AxesOrigin AxesOriginX AxesOriginY AxesOriginZ
+syn keyword mupadIdentifier AxesTips AxesTitleAlignment
+syn keyword mupadIdentifier AxesTitleAlignmentX AxesTitleAlignmentY AxesTitleAlignmentZ
+syn keyword mupadIdentifier AxesTitles XAxisTitle YAxisTitle ZAxisTitle
+syn keyword mupadIdentifier AxesVisible XAxisVisible YAxisVisible ZAxisVisible
+syn keyword mupadIdentifier YAxisTitleOrientation
+" graphics Tick Marks Attributes
+syn keyword mupadIdentifier TicksAnchor XTicksAnchor YTicksAnchor ZTicksAnchor
+syn keyword mupadIdentifier TicksAt XTicksAt YTicksAt ZTicksAt
+syn keyword mupadIdentifier TicksBetween XTicksBetween YTicksBetween ZTicksBetween
+syn keyword mupadIdentifier TicksDistance XTicksDistance YTicksDistance ZTicksDistance
+syn keyword mupadIdentifier TicksNumber XTicksNumber YTicksNumber ZTicksNumber
+syn keyword mupadIdentifier TicksVisible XTicksVisible YTicksVisible ZTicksVisible
+syn keyword mupadIdentifier TicksLength TicksLabelStyle
+syn keyword mupadIdentifier XTicksLabelStyle YTicksLabelStyle ZTicksLabelStyle
+syn keyword mupadIdentifier TicksLabelsVisible
+syn keyword mupadIdentifier XTicksLabelsVisible YTicksLabelsVisible ZTicksLabelsVisible
+" graphics Grid Lines Attributes
+syn keyword mupadIdentifier GridInFront GridLineColor SubgridLineColor
+syn keyword mupadIdentifier GridLineStyle SubgridLineStyle GridLineWidth SubgridLineWidth
+syn keyword mupadIdentifier GridVisible XGridVisible YGridVisible ZGridVisible
+syn keyword mupadIdentifier SubgridVisible XSubgridVisible YSubgridVisible ZSubgridVisible
+" graphics Animation Attributes
+syn keyword mupadIdentifier Frames TimeRange TimeBegin TimeEnd
+syn keyword mupadIdentifier VisibleAfter VisibleBefore VisibleFromTo
+syn keyword mupadIdentifier VisibleAfterEnd VisibleBeforeBegin
+" graphics Annotation Attributes
+syn keyword mupadIdentifier Footer Header FooterAlignment HeaderAlignment
+syn keyword mupadIdentifier HorizontalAlignment TitleAlignment VerticalAlignment
+syn keyword mupadIdentifier Legend LegendEntry LegendText
+syn keyword mupadIdentifier LegendAlignment LegendPlacement LegendVisible
+syn keyword mupadIdentifier Title Titles
+syn keyword mupadIdentifier TitlePosition TitlePositionX TitlePositionY TitlePositionZ
+" graphics Layout Attributes
+syn keyword mupadIdentifier Bottom Left Height Width Layout Rows Columns
+syn keyword mupadIdentifier Margin BottomMargin TopMargin LeftMargin RightMargin
+syn keyword mupadIdentifier OutputUnits Spacing
+" graphics Calculation Attributes
+syn keyword mupadIdentifier AdaptiveMesh DiscontinuitySearch Mesh SubMesh
+syn keyword mupadIdentifier UMesh USubMesh VMesh VSubMesh
+syn keyword mupadIdentifier XMesh XSubMesh YMesh YSubMesh Zmesh
+" graphics Camera and Lights Attributes
+syn keyword mupadIdentifier CameraCoordinates CameraDirection
+syn keyword mupadIdentifier CameraDirectionX CameraDirectionY CameraDirectionZ
+syn keyword mupadIdentifier FocalPoint FocalPointX FocalPointY FocalPointZ
+syn keyword mupadIdentifier LightColor Lighting LightIntensity OrthogonalProjection
+syn keyword mupadIdentifier SpotAngle ViewingAngle
+syn keyword mupadIdentifier Target TargetX TargetY TargetZ
+" graphics Presentation Style and Fonts Attributes
+syn keyword mupadIdentifier ArrowLength
+syn keyword mupadIdentifier AxesTitleFont FooterFont HeaderFont LegendFont
+syn keyword mupadIdentifier TextFont TicksLabelFont TitleFont
+syn keyword mupadIdentifier BackgroundColor BackgroundColor2 BackgroundStyle
+syn keyword mupadIdentifier BackgroundTransparent Billboarding BorderColor BorderWidth
+syn keyword mupadIdentifier BoxCenters BoxWidths DrawMode Gap XGap YGap
+syn keyword mupadIdentifier Notched NotchWidth Scaling YXRatio ZXRatio
+syn keyword mupadIdentifier VerticalAsymptotesVisible VerticalAsymptotesStyle
+syn keyword mupadIdentifier VerticalAsymptotesColor VerticalAsymptotesWidth
+" graphics Line Style Attributes
+syn keyword mupadIdentifier LineColor LineColor2 LineColorType LineStyle
+syn keyword mupadIdentifier LinesVisible ULinesVisible VLinesVisible XLinesVisible
+syn keyword mupadIdentifier YLinesVisible LineWidth MeshVisible
+" graphics Point Style Attributes
+syn keyword mupadIdentifier PointColor PointSize PointStyle PointsVisible
+" graphics Surface Style Attributes
+syn keyword mupadIdentifier BarStyle Shadows Color Colors FillColor FillColor2
+syn keyword mupadIdentifier FillColorTrue FillColorFalse FillColorUnknown FillColorType
+syn keyword mupadIdentifier Filled FillPattern FillPatterns FillStyle
+syn keyword mupadIdentifier InterpolationStyle Shading UseNormals
+" graphics Arrow Style Attributes
+syn keyword mupadIdentifier TipAngle TipLength TipStyle TubeDiameter
+syn keyword mupadIdentifier Tubular
+" graphics meta-documentation Attributes
+syn keyword mupadIdentifier objectGroupsListed
+
+
+hi def link mupadComment Comment
+hi def link mupadString String
+hi def link mupadOperator Operator
+hi def link mupadSpecial Special
+hi def link mupadStatement Statement
+hi def link mupadUnderlined Underlined
+hi def link mupadConditional Conditional
+hi def link mupadRepeat Repeat
+hi def link mupadFunction Function
+hi def link mupadType Type
+hi def link mupadDefine Define
+hi def link mupadIdentifier Identifier
+
+let b:current_syntax = 'mupad'
+
+" TODO More comprehensive listing.
diff --git a/runtime/syntax/murphi.vim b/runtime/syntax/murphi.vim
new file mode 100644
index 0000000..347e17f
--- /dev/null
+++ b/runtime/syntax/murphi.vim
@@ -0,0 +1,126 @@
+" Vim syntax file
+" Language: Murphi model checking language
+" Maintainer: Matthew Fernandez <matthew.fernandez@gmail.com>
+" Last Change: 2019 Aug 27
+" Version: 2
+" Remark: Originally authored by Diego Ongaro <ongaro@cs.stanford.edu>
+
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+" Keywords are case insensitive.
+" Keep these in alphabetical order.
+syntax case ignore
+syn keyword murphiKeyword alias
+syn keyword murphiStructure array
+syn keyword murphiKeyword assert
+syn keyword murphiKeyword begin
+syn keyword murphiType boolean
+syn keyword murphiKeyword by
+syn keyword murphiLabel case
+syn keyword murphiKeyword clear
+syn keyword murphiLabel const
+syn keyword murphiRepeat do
+syn keyword murphiConditional else
+syn keyword murphiConditional elsif
+syn keyword murphiKeyword end
+syn keyword murphiKeyword endalias
+syn keyword murphiRepeat endexists
+syn keyword murphiRepeat endfor
+syn keyword murphiRepeat endforall
+syn keyword murphiKeyword endfunction
+syn keyword murphiConditional endif
+syn keyword murphiKeyword endprocedure
+syn keyword murphiStructure endrecord
+syn keyword murphiKeyword endrule
+syn keyword murphiKeyword endruleset
+syn keyword murphiKeyword endstartstate
+syn keyword murphiConditional endswitch
+syn keyword murphiRepeat endwhile
+syn keyword murphiStructure enum
+syn keyword murphiKeyword error
+syn keyword murphiRepeat exists
+syn keyword murphiBoolean false
+syn keyword murphiRepeat for
+syn keyword murphiRepeat forall
+syn keyword murphiKeyword function
+syn keyword murphiConditional if
+syn keyword murphiKeyword in
+syn keyword murphiKeyword interleaved
+syn keyword murphiLabel invariant
+syn keyword murphiFunction ismember
+syn keyword murphiFunction isundefined
+syn keyword murphiKeyword log
+syn keyword murphiStructure of
+syn keyword murphiType multiset
+syn keyword murphiFunction multisetadd
+syn keyword murphiFunction multisetcount
+syn keyword murphiFunction multisetremove
+syn keyword murphiFunction multisetremovepred
+syn keyword murphiKeyword procedure
+syn keyword murphiKeyword program
+syn keyword murphiKeyword put
+syn keyword murphiStructure record
+syn keyword murphiKeyword return
+syn keyword murphiLabel rule
+syn keyword murphiLabel ruleset
+syn keyword murphiType scalarset
+syn keyword murphiLabel startstate
+syn keyword murphiConditional switch
+syn keyword murphiConditional then
+syn keyword murphiRepeat to
+syn keyword murphiKeyword traceuntil
+syn keyword murphiBoolean true
+syn keyword murphiLabel type
+syn keyword murphiKeyword undefine
+syn keyword murphiStructure union
+syn keyword murphiLabel var
+syn keyword murphiRepeat while
+
+syn keyword murphiTodo contained todo xxx fixme
+syntax case match
+
+" Integers.
+syn match murphiNumber "\<\d\+\>"
+
+" Operators and special characters.
+syn match murphiOperator "[\+\-\*\/%&|=!<>:\?]\|\."
+syn match murphiDelimiter "\(:=\@!\|[;,]\)"
+syn match murphiSpecial "[()\[\]]"
+
+" Double equal sign is a common error: use one equal sign for equality testing.
+syn match murphiError "==[^>]"he=e-1
+" Double && and || are errors.
+syn match murphiError "&&\|||"
+
+" Strings. This is defined so late so that it overrides previous matches.
+syn region murphiString start=+"+ end=+"+
+
+" Comments. This is defined so late so that it overrides previous matches.
+syn region murphiComment start="--" end="$" contains=murphiTodo
+syn region murphiComment start="/\*" end="\*/" contains=murphiTodo
+
+" Link the rules to some groups.
+hi def link murphiComment Comment
+hi def link murphiString String
+hi def link murphiNumber Number
+hi def link murphiBoolean Boolean
+hi def link murphiIdentifier Identifier
+hi def link murphiFunction Function
+hi def link murphiStatement Statement
+hi def link murphiConditional Conditional
+hi def link murphiRepeat Repeat
+hi def link murphiLabel Label
+hi def link murphiOperator Operator
+hi def link murphiKeyword Keyword
+hi def link murphiType Type
+hi def link murphiStructure Structure
+hi def link murphiSpecial Special
+hi def link murphiDelimiter Delimiter
+hi def link murphiError Error
+hi def link murphiTodo Todo
+
+let b:current_syntax = "murphi"
diff --git a/runtime/syntax/mush.vim b/runtime/syntax/mush.vim
new file mode 100644
index 0000000..efaae50
--- /dev/null
+++ b/runtime/syntax/mush.vim
@@ -0,0 +1,215 @@
+" MUSHcode syntax file
+" Maintainer: Rick Bird <nveid@nveid.com>
+" Based on vim Syntax file by: Bek Oberin <gossamer@tertius.net.au>
+" Last Updated: Fri Nov 04 20:28:15 2005
+"
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+" regular mush functions
+
+syntax keyword mushFunction contained @@ abs accent accname acos add after align
+syntax keyword mushFunction contained allof alphamax alphamin and andflags
+syntax keyword mushFunction contained andlflags andlpowers andpowers ansi aposs art
+syntax keyword mushFunction contained asin atan atan2 atrlock attrcnt band baseconv
+syntax keyword mushFunction contained beep before blank2tilde bnand bnot bor bound
+syntax keyword mushFunction contained brackets break bxor cand cansee capstr case
+syntax keyword mushFunction contained caseall cat ceil center checkpass children
+syntax keyword mushFunction contained chr clone cmds cnetpost comp con config conn
+syntax keyword mushFunction contained controls convsecs convtime convutcsecs cor
+syntax keyword mushFunction contained cos create ctime ctu dec decrypt default
+syntax keyword mushFunction contained delete die dig digest dist2d dist3d div
+syntax keyword mushFunction contained division divscope doing downdiv dynhelp e
+syntax keyword mushFunction contained edefault edit element elements elist elock
+syntax keyword mushFunction contained emit empire empower encrypt endtag entrances
+syntax keyword mushFunction contained eq escape etimefmt eval exit exp extract fdiv
+syntax keyword mushFunction contained filter filterbool findable first firstof
+syntax keyword mushFunction contained flags flip floor floordiv fmod fold
+syntax keyword mushFunction contained folderstats followers following foreach
+syntax keyword mushFunction contained fraction fullname functions get get_eval grab
+syntax keyword mushFunction contained graball grep grepi gt gte hasattr hasattrp
+syntax keyword mushFunction contained hasattrpval hasattrval hasdivpower hasflag
+syntax keyword mushFunction contained haspower haspowergroup hastype height hidden
+syntax keyword mushFunction contained home host hostname html idle idlesecs
+syntax keyword mushFunction contained idle_average idle_times idle_total if ifelse
+syntax keyword mushFunction contained ilev iname inc index indiv indivall insert
+syntax keyword mushFunction contained inum ipaddr isdaylight isdbref isint isnum
+syntax keyword mushFunction contained isword itemize items iter itext last lattr
+syntax keyword mushFunction contained lcon lcstr ldelete ldivisions left lemit
+syntax keyword mushFunction contained level lexits lflags link list lit ljust lmath
+syntax keyword mushFunction contained ln lnum loc localize locate lock loctree log
+syntax keyword mushFunction contained lparent lplayers lports lpos lsearch lsearchr
+syntax keyword mushFunction contained lstats lt lte lthings lvcon lvexits lvplayers
+syntax keyword mushFunction contained lvthings lwho mail maildstats mailfrom
+syntax keyword mushFunction contained mailfstats mailstats mailstatus mailsubject
+syntax keyword mushFunction contained mailtime map match matchall max mean median
+syntax keyword mushFunction contained member merge mid min mix mod modulo modulus
+syntax keyword mushFunction contained money mtime mudname mul munge mwho name nand
+syntax keyword mushFunction contained nattr ncon nearby neq nexits next nor not
+syntax keyword mushFunction contained nplayers nsemit nslemit nsoemit nspemit
+syntax keyword mushFunction contained nsremit nszemit nthings null num nvcon
+syntax keyword mushFunction contained nvexits nvplayers nvthings obj objeval objid
+syntax keyword mushFunction contained objmem oemit ooref open or ord orflags
+syntax keyword mushFunction contained orlflags orlpowers orpowers owner parent
+syntax keyword mushFunction contained parse pcreate pemit pi pickrand playermem
+syntax keyword mushFunction contained pmatch poll ports pos poss power powergroups
+syntax keyword mushFunction contained powers powover program prompt pueblo quitprog
+syntax keyword mushFunction contained quota r rand randword recv regedit regeditall
+syntax keyword mushFunction contained regeditalli regediti regmatch regmatchi
+syntax keyword mushFunction contained regrab regraball regraballi regrabi regrep
+syntax keyword mushFunction contained regrepi remainder remit remove repeat replace
+syntax keyword mushFunction contained rest restarts restarttime reswitch
+syntax keyword mushFunction contained reswitchall reswitchalli reswitchi reverse
+syntax keyword mushFunction contained revwords right rjust rloc rnum room root
+syntax keyword mushFunction contained round s scan scramble search secs secure sent
+syntax keyword mushFunction contained set setdiff setinter setq setr setunion sha0
+syntax keyword mushFunction contained shl shr shuffle sign signal sin sort sortby
+syntax keyword mushFunction contained soundex soundlike soundslike space spellnum
+syntax keyword mushFunction contained splice sql sqlescape sqrt squish ssl
+syntax keyword mushFunction contained starttime stats stddev step strcat strinsert
+syntax keyword mushFunction contained stripaccents stripansi strlen strmatch
+syntax keyword mushFunction contained strreplace sub subj switch switchall t table
+syntax keyword mushFunction contained tag tagwrap tan tel terminfo textfile
+syntax keyword mushFunction contained tilde2blank time timefmt timestring tr
+syntax keyword mushFunction contained trigger trim trimpenn trimtiny trunc type u
+syntax keyword mushFunction contained ucstr udefault ufun uldefault ulocal updiv
+syntax keyword mushFunction contained utctime v vadd val valid vcross vdim vdot
+syntax keyword mushFunction contained version visible vmag vmax vmin vmul vsub
+syntax keyword mushFunction contained vtattr vtcount vtcreate vtdestroy vtlcon
+syntax keyword mushFunction contained vtloc vtlocate vtmaster vtname vtref vttel
+syntax keyword mushFunction contained vunit wait where width wipe wordpos words
+syntax keyword mushFunction contained wrap xcon xexits xget xor xplayers xthings
+syntax keyword mushFunction contained xvcon xvexits xvplayers xvthings zemit zfun
+syntax keyword mushFunction contained zmwho zone zwho
+
+" only highligh functions when they have an in-bracket immediately after
+syntax match mushFunctionBrackets "\i*(" contains=mushFunction
+"
+" regular mush commands
+syntax keyword mushAtCommandList contained @ALLHALT @ALLQUOTA @ASSERT @ATRCHOWN @ATRLOCK @ATTRIBUTE @BOOT
+syntax keyword mushAtCommandList contained @BREAK @CEMIT @CHANNEL @CHAT @CHOWN @CHOWNALL @CHZONE @CHZONEALL
+syntax keyword mushAtCommandList contained @CLOCK @CLONE @COBJ @COMMAND @CONFIG @CPATTR @CREATE @CRPLOG @DBCK
+syntax keyword mushAtCommandList contained @DECOMPILE @DESTROY @DIG @DISABLE @DIVISION @DOING @DOLIST @DRAIN
+syntax keyword mushAtCommandList contained @DUMP @EDIT @ELOCK @EMIT @EMPOWER @ENABLE @ENTRANCES @EUNLOCK @FIND
+syntax keyword mushAtCommandList contained @FIRSTEXIT @FLAG @FORCE @FUNCTION @EDIT @GREP @HALT @HIDE @HOOK @KICK
+syntax keyword mushAtCommandList contained @LEMIT @LEVEL @LINK @LIST @LISTMOTD @LOCK @LOG @LOGWIPE @LSET @MAIL @MALIAS
+syntax keyword mushAtCommandList contained @MAP @MOTD @MVATTR @NAME @NEWPASSWORD @NOTIFY @NSCEMIT @NSEMIT @NSLEMIT
+syntax keyword mushAtCommandList contained @NSOEMIT @NSPEMIT @NSPEMIT @NSREMIT @NSZEMIT @NUKE @OEMIT @OPEN @PARENT @PASSWORD
+syntax keyword mushAtCommandList contained @PCREATE @PEMIT @POLL @POOR @POWERLEVEL @PROGRAM @PROMPT @PS @PURGE @QUOTA
+syntax keyword mushAtCommandList contained @READCACHE @RECYCLE @REJECTMOTD @REMIT @RESTART @SCAN @SEARCH @SELECT @SET
+syntax keyword mushAtCommandList contained @SHUTDOWN @SITELOCK @SNOOP @SQL @SQUOTA @STATS @SWITCH @SWEEP @SWITCH @TELEPORT
+syntax keyword mushAtCommandList contained @TRIGGER @ULOCK @UNDESTROY @UNLINK @UNLOCK @UNRECYCLE @UPTIME @UUNLOCK @VERB
+syntax keyword mushAtCommandList contained @VERSION @WAIT @WALL @WARNINGS @WCHECK @WHEREIS @WIPE @ZCLONE @ZEMIT
+syntax match mushCommand "@\i\I*" contains=mushAtCommandList
+
+
+syntax keyword mushCommand AHELP ANEWS ATTRIB_SET BRIEF BRIEF BUY CHANGES DESERT
+syntax keyword mushCommand DISMISS DROP EMPTY ENTER EXAMINE FOLLOW GET GIVE GOTO
+syntax keyword mushCommand HELP HUH_COMMAND INVENTORY INVENTORY LOOK LEAVE LOOK
+syntax keyword mushCommand GOTO NEWS PAGE PAGE POSE RULES SAY SCORE SEMIPOSE
+syntax keyword mushCommand SPECIALNEWS TAKE TEACH THINK UNFOLLOW USE WHISPER WHISPER
+syntax keyword mushCommand WARN_ON_MISSING WHISPER WITH
+
+syntax match mushSpecial "\*\|!\|=\|-\|\\\|+"
+syntax match mushSpecial2 contained "\*"
+
+syn region mushString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=mushSpecial,mushSpecial2,@Spell
+
+
+syntax match mushIdentifier "&[^ ]\+"
+
+syntax match mushVariable "%r\|%t\|%cr\|%[A-Za-z0-9]\+\|%#\|##\|here"
+
+" numbers
+syntax match mushNumber +[0-9]\++
+
+" A comment line starts with a or # or " at the start of the line
+" or an @@
+syntax keyword mushTodo contained TODO FIXME XXX
+syntax cluster mushCommentGroup contains=mushTodo
+syntax match mushComment "^\s*@@.*$" contains=mushTodo
+syntax match mushComment "^#[^define|^ifdef|^else|^pragma|^ifndef|^echo|^elif|^undef|^warning].*$" contains=mushTodo
+syntax match mushComment "^#$" contains=mushTodo
+syntax region mushComment matchgroup=mushCommentStart start="/@@" end="@@/" contains=@mushCommentGroup,mushCommentStartError,mushCommentString,@Spell
+syntax region mushCommentString contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+@@/+me=s-1 contains=mushCommentSkip
+syntax match mushCommentSkip contained "^\s*@@\($\|\s\+\)"
+
+
+syntax match mushCommentStartError display "/@@"me=e-1 contained
+
+" syntax match mushComment +^".*$+ contains=mushTodo
+" Work on this one
+" syntax match mushComment +^#.*$+ contains=mushTodo
+
+syn region mushPreCondit start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=mushComment
+syn match mushPreCondit display "^\s*\(%:\|#\)\s*\(else\|endif\)\>"
+
+syn cluster mushPreProcGroup contains=mushPreCondit,mushIncluded,mushInclude,mushDefine,mushSpecial,mushString,mushCommentSkip,mushCommentString,@mushCommentGroup,mushCommentStartError
+
+syn region mushIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match mushIncluded display contained "<[^>]*>"
+syn match mushInclude display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=mushIncluded
+syn region mushDefine start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@mushPreProcGroup,@Spell
+syn region mushPreProc start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@mushPreProcGroup
+
+
+syntax region mushFuncBoundaries start="\[" end="\]" contains=mushFunction,mushFlag,mushAttributes,mushNumber,mushCommand,mushVariable,mushSpecial2
+
+" FLAGS
+syntax keyword mushFlag PLAYER ABODE BUILDER CHOWN_OK DARK FLOATING
+syntax keyword mushFlag GOING HAVEN INHERIT JUMP_OK KEY LINK_OK MONITOR
+syntax keyword mushFlag NOSPOOF OPAQUE QUIET STICKY TRACE UNFINDABLE VISUAL
+syntax keyword mushFlag WIZARD PARENT_OK ZONE AUDIBLE CONNECTED DESTROY_OK
+syntax keyword mushFlag ENTER_OK HALTED IMMORTAL LIGHT MYOPIC PUPPET TERSE
+syntax keyword mushFlag ROBOT SAFE TRANSPARENT VERBOSE CONTROL_OK COMMANDS
+
+syntax keyword mushAttribute aahear aclone aconnect adesc adfail adisconnect
+syntax keyword mushAttribute adrop aefail aenter afail agfail ahear akill
+syntax keyword mushAttribute aleave alfail alias amhear amove apay arfail
+syntax keyword mushAttribute asucc atfail atport aufail ause away charges
+syntax keyword mushAttribute cost desc dfail drop ealias efail enter fail
+syntax keyword mushAttribute filter forwardlist gfail idesc idle infilter
+syntax keyword mushAttribute inprefix kill lalias last lastsite leave lfail
+syntax keyword mushAttribute listen move odesc odfail odrop oefail oenter
+syntax keyword mushAttribute ofail ogfail okill oleave olfail omove opay
+syntax keyword mushAttribute orfail osucc otfail otport oufail ouse oxenter
+syntax keyword mushAttribute oxleave oxtport pay prefix reject rfail runout
+syntax keyword mushAttribute semaphore sex startup succ tfail tport ufail
+syntax keyword mushAttribute use va vb vc vd ve vf vg vh vi vj vk vl vm vn
+syntax keyword mushAttribute vo vp vq vr vs vt vu vv vw vx vy vz
+
+
+
+" The default methods for highlighting. Can be overridden later
+hi def link mushAttribute Constant
+hi def link mushCommand Function
+hi def link mushNumber Number
+hi def link mushSetting PreProc
+hi def link mushFunction Statement
+hi def link mushVariable Identifier
+hi def link mushSpecial Special
+hi def link mushTodo Todo
+hi def link mushFlag Special
+hi def link mushIdentifier Identifier
+hi def link mushDefine Macro
+hi def link mushPreProc PreProc
+hi def link mushPreProcGroup PreProc
+hi def link mushPreCondit PreCondit
+hi def link mushIncluded cString
+hi def link mushInclude Include
+
+
+
+" Comments
+hi def link mushCommentStart mushComment
+hi def link mushComment Comment
+hi def link mushCommentString mushString
+
+
+
+let b:current_syntax = "mush"
+
+" mush: ts=17
diff --git a/runtime/syntax/muttrc.vim b/runtime/syntax/muttrc.vim
new file mode 100644
index 0000000..830664e
--- /dev/null
+++ b/runtime/syntax/muttrc.vim
@@ -0,0 +1,821 @@
+" Vim syntax file
+" Language: Mutt setup files
+" Original: Preben 'Peppe' Guldberg <peppe-vim@wielders.org>
+" Maintainer: Kyle Wheeler <kyle-muttrc.vim@memoryhole.net>
+" Last Change: 21 May 2018
+
+" This file covers mutt version 1.10.0
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Set the keyword characters
+setlocal isk=@,48-57,_,-
+
+" handling optional variables
+if !exists("use_mutt_sidebar")
+ let use_mutt_sidebar=0
+endif
+
+syn match muttrcComment "^# .*$" contains=@Spell
+syn match muttrcComment "^#[^ ].*$"
+syn match muttrcComment "^#$"
+syn match muttrcComment "[^\\]#.*$"lc=1
+
+" Escape sequences (back-tick and pipe goes here too)
+syn match muttrcEscape +\\[#tnr"'Cc ]+
+syn match muttrcEscape +[`|]+
+syn match muttrcEscape +\\$+
+
+" The variables takes the following arguments
+"syn match muttrcString contained "=\s*[^ #"'`]\+"lc=1 contains=muttrcEscape
+syn region muttrcString contained keepend start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcCommand,muttrcAction,muttrcShellString
+syn region muttrcString contained keepend start=+'+ms=e skip=+\\'+ end=+'+ contains=muttrcEscape,muttrcCommand,muttrcAction
+syn match muttrcStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcString,muttrcStringNL
+
+syn region muttrcShellString matchgroup=muttrcEscape keepend start=+`+ skip=+\\`+ end=+`+ contains=muttrcVarStr,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcCommand
+
+syn match muttrcRXChars contained /[^\\][][.*?+]\+/hs=s+1
+syn match muttrcRXChars contained /[][|()][.*?+]*/
+syn match muttrcRXChars contained /['"]^/ms=s+1
+syn match muttrcRXChars contained /$['"]/me=e-1
+syn match muttrcRXChars contained /\\/
+" Why does muttrcRXString2 work with one \ when muttrcRXString requires two?
+syn region muttrcRXString contained skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXChars
+syn region muttrcRXString contained skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXChars
+syn region muttrcRXString contained skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXChars
+" For some reason, skip refuses to match backslashes here...
+syn region muttrcRXString contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXChars
+syn region muttrcRXString contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXChars
+syn region muttrcRXString2 contained skipwhite start=+'+ skip=+\'+ end=+'+ contains=muttrcRXChars
+syn region muttrcRXString2 contained skipwhite start=+"+ skip=+\"+ end=+"+ contains=muttrcRXChars
+
+" these must be kept synchronized with muttrcRXString, but are intended for
+" muttrcRXHooks
+syn region muttrcRXHookString contained keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syn region muttrcRXHookString contained keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syn region muttrcRXHookString contained keepend skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syn region muttrcRXHookString contained keepend skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syn region muttrcRXHookString contained keepend matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syn match muttrcRXHookStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcRXHookString,muttrcRXHookStringNL
+
+" these are exclusively for args lists (e.g. -rx pat pat pat ...)
+syn region muttrcRXPat contained keepend skipwhite start=+'+ skip=+\\'+ end=+'\s*+ contains=muttrcRXString nextgroup=muttrcRXPat
+syn region muttrcRXPat contained keepend skipwhite start=+"+ skip=+\\"+ end=+"\s*+ contains=muttrcRXString nextgroup=muttrcRXPat
+syn match muttrcRXPat contained /[^-'"#!]\S\+/ skipwhite contains=muttrcRXChars nextgroup=muttrcRXPat
+syn match muttrcRXDef contained "-rx\s\+" skipwhite nextgroup=muttrcRXPat
+
+syn match muttrcSpecial +\(['"]\)!\1+
+
+syn match muttrcSetStrAssignment contained skipwhite /=\s*\%(\\\?\$\)\?[0-9A-Za-z_-]\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syn region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*"+hs=s+1 end=+"+ skip=+\\"+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString
+syn region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*'+hs=s+1 end=+'+ skip=+\\'+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString
+syn match muttrcSetBoolAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syn match muttrcSetBoolAssignment contained skipwhite /=\s*\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn match muttrcSetBoolAssignment contained skipwhite /=\s*"\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn match muttrcSetBoolAssignment contained skipwhite /=\s*'\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn match muttrcSetQuadAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syn match muttrcSetQuadAssignment contained skipwhite /=\s*\%(ask-\)\?\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn match muttrcSetQuadAssignment contained skipwhite /=\s*"\%(ask-\)\?\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn match muttrcSetQuadAssignment contained skipwhite /=\s*'\%(ask-\)\?\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn match muttrcSetNumAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syn match muttrcSetNumAssignment contained skipwhite /=\s*\d\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn match muttrcSetNumAssignment contained skipwhite /=\s*"\d\+"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn match muttrcSetNumAssignment contained skipwhite /=\s*'\d\+'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+" Now catch some email addresses and headers (purified version from mail.vim)
+syn match muttrcEmail "[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+"
+syn match muttrcHeader "\<\c\%(From\|To\|C[Cc]\|B[Cc][Cc]\|Reply-To\|Subject\|Return-Path\|Received\|Date\|Replied\|Attach\)\>:\="
+
+syn match muttrcKeySpecial contained +\%(\\[Cc'"]\|\^\|\\[01]\d\{2}\)+
+syn match muttrcKey contained "\S\+" contains=muttrcKeySpecial,muttrcKeyName
+syn region muttrcKey contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=muttrcKeySpecial,muttrcKeyName
+syn region muttrcKey contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=muttrcKeySpecial,muttrcKeyName
+syn match muttrcKeyName contained "\<f\%(\d\|10\)\>"
+syn match muttrcKeyName contained "\\[trne]"
+syn match muttrcKeyName contained "\c<\%(BackSpace\|BackTab\|Delete\|Down\|End\|Enter\|Esc\|Home\|Insert\|Left\|PageDown\|PageUp\|Return\|Right\|Space\|Tab\|Up\)>"
+syn match muttrcKeyName contained "<F[0-9]\+>"
+
+syn keyword muttrcVarBool skipwhite contained
+ \ allow_8bit allow_ansi arrow_cursor ascii_chars askbcc askcc attach_split
+ \ auto_tag autoedit beep beep_new bounce_delivered braille_friendly
+ \ browser_abbreviate_mailboxes change_folder_next check_mbox_size check_new
+ \ collapse_unread confirmappend confirmcreate crypt_autoencrypt crypt_autopgp
+ \ crypt_autosign crypt_autosmime crypt_confirmhook crypt_opportunistic_encrypt
+ \ crypt_replyencrypt crypt_replysign crypt_replysignencrypted crypt_timestamp
+ \ crypt_use_gpgme crypt_use_pka delete_untag digest_collapse duplicate_threads
+ \ edit_hdrs edit_headers encode_from envelope_from fast_reply fcc_clear
+ \ flag_safe followup_to force_name forw_decode forw_decrypt forw_quote
+ \ forward_decode forward_decrypt forward_quote hdrs header
+ \ header_color_partial help hidden_host hide_limited hide_missing
+ \ hide_thread_subject hide_top_limited hide_top_missing history_remove_dups
+ \ honor_disposition idn_decode idn_encode ignore_linear_white_space
+ \ ignore_list_reply_to imap_check_subscribed imap_list_subscribed imap_passive
+ \ imap_peek imap_servernoise implicit_autoview include_onlyfirst keep_flagged
+ \ mail_check_recent mail_check_stats mailcap_sanitize maildir_check_cur
+ \ maildir_header_cache_verify maildir_trash mark_old markers menu_move_off
+ \ menu_scroll message_cache_clean meta_key metoo mh_purge mime_forward_decode
+ \ mime_type_query_first narrow_tree pager_stop pgp_auto_decode
+ \ pgp_auto_traditional pgp_autoencrypt pgp_autoinline pgp_autosign
+ \ pgp_check_exit pgp_create_traditional pgp_ignore_subkeys pgp_long_ids
+ \ pgp_replyencrypt pgp_replyinline pgp_replysign pgp_replysignencrypted
+ \ pgp_retainable_sigs pgp_self_encrypt pgp_self_encrypt_as pgp_show_unusable
+ \ pgp_strict_enc pgp_use_gpg_agent pipe_decode pipe_split pop_auth_try_all
+ \ pop_last postpone_encrypt postpone_encrypt_as print_decode print_split
+ \ prompt_after read_only reflow_space_quotes reflow_text reflow_wrap
+ \ reply_self resolve resume_draft_files resume_edited_draft_files
+ \ reverse_alias reverse_name reverse_realname rfc2047_parameters save_address
+ \ save_empty save_name score sidebar_folder_indent sidebar_new_mail_only
+ \ sidebar_next_new_wrap sidebar_short_path sidebar_sort sidebar_visible
+ \ sig_dashes sig_on_top smart_wrap smime_ask_cert_label
+ \ smime_decrypt_use_default_key smime_is_default smime_self_encrypt
+ \ smime_self_encrypt_as sort_re ssl_force_tls ssl_use_sslv2 ssl_use_sslv3
+ \ ssl_use_tlsv1 ssl_usesystemcerts ssl_verify_dates ssl_verify_host
+ \ ssl_verify_partial_chains status_on_top strict_mime strict_threads suspend
+ \ text_flowed thorough_search thread_received tilde ts_enabled uncollapse_jump
+ \ use_8bitmime use_domain use_envelope_from use_from use_idn use_ipv6
+ \ uncollapse_new user_agent wait_key weed wrap_search write_bcc
+ \ nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn keyword muttrcVarBool skipwhite contained
+ \ noallow_8bit noallow_ansi noarrow_cursor noascii_chars noaskbcc noaskcc
+ \ noattach_split noauto_tag noautoedit nobeep nobeep_new nobounce_delivered
+ \ nobraille_friendly nobrowser_abbreviate_mailboxes nochange_folder_next
+ \ nocheck_mbox_size nocheck_new nocollapse_unread noconfirmappend
+ \ noconfirmcreate nocrypt_autoencrypt nocrypt_autopgp nocrypt_autosign
+ \ nocrypt_autosmime nocrypt_confirmhook nocrypt_opportunistic_encrypt
+ \ nocrypt_replyencrypt nocrypt_replysign nocrypt_replysignencrypted
+ \ nocrypt_timestamp nocrypt_use_gpgme nocrypt_use_pka nodelete_untag
+ \ nodigest_collapse noduplicate_threads noedit_hdrs noedit_headers
+ \ noencode_from noenvelope_from nofast_reply nofcc_clear noflag_safe
+ \ nofollowup_to noforce_name noforw_decode noforw_decrypt noforw_quote
+ \ noforward_decode noforward_decrypt noforward_quote nohdrs noheader
+ \ noheader_color_partial nohelp nohidden_host nohide_limited nohide_missing
+ \ nohide_thread_subject nohide_top_limited nohide_top_missing
+ \ nohistory_remove_dups nohonor_disposition noidn_decode noidn_encode
+ \ noignore_linear_white_space noignore_list_reply_to noimap_check_subscribed
+ \ noimap_list_subscribed noimap_passive noimap_peek noimap_servernoise
+ \ noimplicit_autoview noinclude_onlyfirst nokeep_flagged nomail_check_recent
+ \ nomail_check_stats nomailcap_sanitize nomaildir_check_cur
+ \ nomaildir_header_cache_verify nomaildir_trash nomark_old nomarkers
+ \ nomenu_move_off nomenu_scroll nomessage_cache_clean nometa_key nometoo
+ \ nomh_purge nomime_forward_decode nomime_type_query_first nonarrow_tree
+ \ nopager_stop nopgp_auto_decode nopgp_auto_traditional nopgp_autoencrypt
+ \ nopgp_autoinline nopgp_autosign nopgp_check_exit nopgp_create_traditional
+ \ nopgp_ignore_subkeys nopgp_long_ids nopgp_replyencrypt nopgp_replyinline
+ \ nopgp_replysign nopgp_replysignencrypted nopgp_retainable_sigs
+ \ nopgp_self_encrypt nopgp_self_encrypt_as nopgp_show_unusable
+ \ nopgp_strict_enc nopgp_use_gpg_agent nopipe_decode nopipe_split
+ \ nopop_auth_try_all nopop_last nopostpone_encrypt nopostpone_encrypt_as
+ \ noprint_decode noprint_split noprompt_after noread_only
+ \ noreflow_space_quotes noreflow_text noreflow_wrap noreply_self noresolve
+ \ noresume_draft_files noresume_edited_draft_files noreverse_alias
+ \ noreverse_name noreverse_realname norfc2047_parameters nosave_address
+ \ nosave_empty nosave_name noscore nosidebar_folder_indent
+ \ nosidebar_new_mail_only nosidebar_next_new_wrap nosidebar_short_path
+ \ nosidebar_sort nosidebar_visible nosig_dashes nosig_on_top nosmart_wrap
+ \ nosmime_ask_cert_label nosmime_decrypt_use_default_key nosmime_is_default
+ \ nosmime_self_encrypt nosmime_self_encrypt_as nosort_re nossl_force_tls
+ \ nossl_use_sslv2 nossl_use_sslv3 nossl_use_tlsv1 nossl_usesystemcerts
+ \ nossl_verify_dates nossl_verify_host nossl_verify_partial_chains
+ \ nostatus_on_top nostrict_mime nostrict_threads nosuspend notext_flowed
+ \ nothorough_search nothread_received notilde nots_enabled nouncollapse_jump
+ \ nouse_8bitmime nouse_domain nouse_envelope_from nouse_from nouse_idn
+ \ nouse_ipv6 nouncollapse_new nouser_agent nowait_key noweed nowrap_search
+ \ nowrite_bcc
+ \ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn keyword muttrcVarBool skipwhite contained
+ \ invallow_8bit invallow_ansi invarrow_cursor invascii_chars invaskbcc
+ \ invaskcc invattach_split invauto_tag invautoedit invbeep invbeep_new
+ \ invbounce_delivered invbraille_friendly invbrowser_abbreviate_mailboxes
+ \ invchange_folder_next invcheck_mbox_size invcheck_new invcollapse_unread
+ \ invconfirmappend invconfirmcreate invcrypt_autoencrypt invcrypt_autopgp
+ \ invcrypt_autosign invcrypt_autosmime invcrypt_confirmhook
+ \ invcrypt_opportunistic_encrypt invcrypt_replyencrypt invcrypt_replysign
+ \ invcrypt_replysignencrypted invcrypt_timestamp invcrypt_use_gpgme
+ \ invcrypt_use_pka invdelete_untag invdigest_collapse invduplicate_threads
+ \ invedit_hdrs invedit_headers invencode_from invenvelope_from invfast_reply
+ \ invfcc_clear invflag_safe invfollowup_to invforce_name invforw_decode
+ \ invforw_decrypt invforw_quote invforward_decode invforward_decrypt
+ \ invforward_quote invhdrs invheader invheader_color_partial invhelp
+ \ invhidden_host invhide_limited invhide_missing invhide_thread_subject
+ \ invhide_top_limited invhide_top_missing invhistory_remove_dups
+ \ invhonor_disposition invidn_decode invidn_encode
+ \ invignore_linear_white_space invignore_list_reply_to
+ \ invimap_check_subscribed invimap_list_subscribed invimap_passive
+ \ invimap_peek invimap_servernoise invimplicit_autoview invinclude_onlyfirst
+ \ invkeep_flagged invmail_check_recent invmail_check_stats invmailcap_sanitize
+ \ invmaildir_check_cur invmaildir_header_cache_verify invmaildir_trash
+ \ invmark_old invmarkers invmenu_move_off invmenu_scroll
+ \ invmessage_cache_clean invmeta_key invmetoo invmh_purge
+ \ invmime_forward_decode invmime_type_query_first invnarrow_tree invpager_stop
+ \ invpgp_auto_decode invpgp_auto_traditional invpgp_autoencrypt
+ \ invpgp_autoinline invpgp_autosign invpgp_check_exit
+ \ invpgp_create_traditional invpgp_ignore_subkeys invpgp_long_ids
+ \ invpgp_replyencrypt invpgp_replyinline invpgp_replysign
+ \ invpgp_replysignencrypted invpgp_retainable_sigs invpgp_self_encrypt
+ \ invpgp_self_encrypt_as invpgp_show_unusable invpgp_strict_enc
+ \ invpgp_use_gpg_agent invpipe_decode invpipe_split invpop_auth_try_all
+ \ invpop_last invpostpone_encrypt invpostpone_encrypt_as invprint_decode
+ \ invprint_split invprompt_after invread_only invreflow_space_quotes
+ \ invreflow_text invreflow_wrap invreply_self invresolve invresume_draft_files
+ \ invresume_edited_draft_files invreverse_alias invreverse_name
+ \ invreverse_realname invrfc2047_parameters invsave_address invsave_empty
+ \ invsave_name invscore invsidebar_folder_indent invsidebar_new_mail_only
+ \ invsidebar_next_new_wrap invsidebar_short_path invsidebar_sort
+ \ invsidebar_visible invsig_dashes invsig_on_top invsmart_wrap
+ \ invsmime_ask_cert_label invsmime_decrypt_use_default_key invsmime_is_default
+ \ invsmime_self_encrypt invsmime_self_encrypt_as invsort_re invssl_force_tls
+ \ invssl_use_sslv2 invssl_use_sslv3 invssl_use_tlsv1 invssl_usesystemcerts
+ \ invssl_verify_dates invssl_verify_host invssl_verify_partial_chains
+ \ invstatus_on_top invstrict_mime invstrict_threads invsuspend invtext_flowed
+ \ invthorough_search invthread_received invtilde invts_enabled
+ \ invuncollapse_jump invuse_8bitmime invuse_domain invuse_envelope_from
+ \ invuse_from invuse_idn invuse_ipv6 invuncollapse_new invuser_agent
+ \ invwait_key invweed invwrap_search invwrite_bcc
+ \ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn keyword muttrcVarQuad skipwhite contained
+ \ abort_nosubject abort_unmodified abort_noattach bounce copy crypt_verify_sig
+ \ delete fcc_attach forward_edit honor_followup_to include mime_forward
+ \ mime_forward_rest mime_fwd move pgp_mime_auto pgp_verify_sig pop_delete
+ \ pop_reconnect postpone print quit recall reply_to ssl_starttls
+ \ nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn keyword muttrcVarQuad skipwhite contained
+ \ noabort_nosubject noabort_unmodified noabort_noattach nobounce nocopy
+ \ nocrypt_verify_sig nodelete nofcc_attach noforward_edit nohonor_followup_to
+ \ noinclude nomime_forward nomime_forward_rest nomime_fwd nomove
+ \ nopgp_mime_auto nopgp_verify_sig nopop_delete nopop_reconnect nopostpone
+ \ noprint noquit norecall noreply_to nossl_starttls
+ \ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn keyword muttrcVarQuad skipwhite contained
+ \ invabort_nosubject invabort_unmodified invabort_noattach invbounce invcopy
+ \ invcrypt_verify_sig invdelete invfcc_attach invforward_edit
+ \ invhonor_followup_to invinclude invmime_forward invmime_forward_rest
+ \ invmime_fwd invmove invpgp_mime_auto invpgp_verify_sig invpop_delete
+ \ invpop_reconnect invpostpone invprint invquit invrecall invreply_to
+ \ invssl_starttls
+ \ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn keyword muttrcVarNum skipwhite contained
+ \ connect_timeout error_history history imap_keepalive imap_pipeline_depth
+ \ imap_poll_timeout mail_check mail_check_stats_interval menu_context net_inc
+ \ pager_context pager_index_lines pgp_timeout pop_checkinterval read_inc
+ \ save_history score_threshold_delete score_threshold_flag
+ \ score_threshold_read search_context sendmail_wait sidebar_width sleep_time
+ \ smime_timeout ssl_min_dh_prime_bits time_inc timeout wrap wrap_headers
+ \ wrapmargin write_inc
+ \ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn match muttrcFormatErrors contained /%./
+
+syn match muttrcStrftimeEscapes contained /%[AaBbCcDdeFGgHhIjklMmnpRrSsTtUuVvWwXxYyZz+%]/
+syn match muttrcStrftimeEscapes contained /%E[cCxXyY]/
+syn match muttrcStrftimeEscapes contained /%O[BdeHImMSuUVwWy]/
+
+syn region muttrcIndexFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcIndexFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcQueryFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcQueryFormatEscapes,muttrcQueryFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcAliasFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcAliasFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcAttachFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcAttachFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcComposeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcComposeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcFolderFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcFolderFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcMixFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcMixFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcPGPFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcPGPFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcPGPCmdFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcPGPCmdFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcStatusFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcStatusFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcPGPGetKeysFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcPGPGetKeysFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcSmimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcSmimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcStrftimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcStrftimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+" The following info was pulled from hdr_format_str in hdrline.c
+syn match muttrcIndexFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[aAbBcCdDeEfFHilLmMnNOPsStTuvXyYZ%]/
+syn match muttrcIndexFormatEscapes contained /%[>|*]./
+syn match muttrcIndexFormatConditionals contained /%?[EFHlLMNOXyY]?/ nextgroup=muttrcFormatConditionals2
+" The following info was pulled from alias_format_str in addrbook.c
+syn match muttrcAliasFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[afnrt%]/
+" The following info was pulled from query_format_str in query.c
+syn match muttrcQueryFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[acent%]/
+syn match muttrcQueryFormatConditionals contained /%?[e]?/ nextgroup=muttrcFormatConditionals2
+" The following info was pulled from mutt_attach_fmt in recvattach.c
+syn match muttrcAttachFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[CcDdeFfImMnQstTuX%]/
+syn match muttrcAttachFormatEscapes contained /%[>|*]./
+syn match muttrcAttachFormatConditionals contained /%?[CcdDefInmMQstTuX]?/ nextgroup=muttrcFormatConditionals2
+syn match muttrcFormatConditionals2 contained /[^?]*?/
+" The following info was pulled from compose_format_str in compose.c
+syn match muttrcComposeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ahlv%]/
+syn match muttrcComposeFormatEscapes contained /%[>|*]./
+" The following info was pulled from folder_format_str in browser.c
+syn match muttrcFolderFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[CDdfFglNstu%]/
+syn match muttrcFolderFormatEscapes contained /%[>|*]./
+syn match muttrcFolderFormatConditionals contained /%?[N]?/
+" The following info was pulled from mix_entry_fmt in remailer.c
+syn match muttrcMixFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ncsa%]/
+syn match muttrcMixFormatConditionals contained /%?[ncsa]?/
+" The following info was pulled from crypt_entry_fmt in crypt-gpgme.c
+" and pgp_entry_fmt in pgpkey.c (note that crypt_entry_fmt supports
+" 'p', but pgp_entry_fmt does not).
+syn match muttrcPGPFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[nkualfctp%]/
+syn match muttrcPGPFormatConditionals contained /%?[nkualfct]?/
+" The following info was pulled from _mutt_fmt_pgp_command in
+" pgpinvoke.c
+syn match muttrcPGPCmdFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[pfsar%]/
+syn match muttrcPGPCmdFormatConditionals contained /%?[pfsar]?/ nextgroup=muttrcFormatConditionals2
+" The following info was pulled from status_format_str in status.c
+syn match muttrcStatusFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[bdfFhlLmMnopPRrsStuvV%]/
+syn match muttrcStatusFormatEscapes contained /%[>|*]./
+syn match muttrcStatusFormatConditionals contained /%?[bdFlLmMnoptuV]?/ nextgroup=muttrcFormatConditionals2
+" This matches the documentation, but directly contradicts the code
+" (according to the code, this should be identical to the
+" muttrcPGPCmdFormatEscapes
+syn match muttrcPGPGetKeysFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[r%]/
+" The following info was pulled from _mutt_fmt_smime_command in
+" smime.c
+syn match muttrcSmimeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[Cciskaf%]/
+syn match muttrcSmimeFormatConditionals contained /%?[Cciskaf]?/ nextgroup=muttrcFormatConditionals2
+
+syn region muttrcTimeEscapes contained start=+%{+ end=+}+ contains=muttrcStrftimeEscapes
+syn region muttrcTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes
+syn region muttrcTimeEscapes contained start=+%(+ end=+)+ contains=muttrcStrftimeEscapes
+syn region muttrcTimeEscapes contained start=+%<+ end=+>+ contains=muttrcStrftimeEscapes
+syn region muttrcPGPTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes
+
+syn keyword muttrcVarStr contained skipwhite attribution index_format message_format pager_format nextgroup=muttrcVarEqualsIdxFmt
+syn match muttrcVarEqualsIdxFmt contained skipwhite "=" nextgroup=muttrcIndexFormatStr
+syn keyword muttrcVarStr contained skipwhite alias_format nextgroup=muttrcVarEqualsAliasFmt
+syn match muttrcVarEqualsAliasFmt contained skipwhite "=" nextgroup=muttrcAliasFormatStr
+syn keyword muttrcVarStr contained skipwhite attach_format nextgroup=muttrcVarEqualsAttachFmt
+syn match muttrcVarEqualsAttachFmt contained skipwhite "=" nextgroup=muttrcAttachFormatStr
+syn keyword muttrcVarStr contained skipwhite compose_format nextgroup=muttrcVarEqualsComposeFmt
+syn match muttrcVarEqualsComposeFmt contained skipwhite "=" nextgroup=muttrcComposeFormatStr
+syn keyword muttrcVarStr contained skipwhite folder_format nextgroup=muttrcVarEqualsFolderFmt
+syn match muttrcVarEqualsFolderFmt contained skipwhite "=" nextgroup=muttrcFolderFormatStr
+syn keyword muttrcVarStr contained skipwhite mix_entry_format nextgroup=muttrcVarEqualsMixFmt
+syn match muttrcVarEqualsMixFmt contained skipwhite "=" nextgroup=muttrcMixFormatStr
+syn keyword muttrcVarStr contained skipwhite pgp_entry_format nextgroup=muttrcVarEqualsPGPFmt
+syn match muttrcVarEqualsPGPFmt contained skipwhite "=" nextgroup=muttrcPGPFormatStr
+syn keyword muttrcVarStr contained skipwhite query_format nextgroup=muttrcVarEqualsQueryFmt
+syn match muttrcVarEqualsQueryFmt contained skipwhite "=" nextgroup=muttrcQueryFormatStr
+syn keyword muttrcVarStr contained skipwhite pgp_decode_command pgp_verify_command pgp_decrypt_command pgp_clearsign_command pgp_sign_command pgp_encrypt_sign_command pgp_encrypt_only_command pgp_import_command pgp_export_command pgp_verify_key_command pgp_list_secring_command pgp_list_pubring_command nextgroup=muttrcVarEqualsPGPCmdFmt
+syn match muttrcVarEqualsPGPCmdFmt contained skipwhite "=" nextgroup=muttrcPGPCmdFormatStr
+syn keyword muttrcVarStr contained skipwhite ts_icon_format ts_status_format status_format nextgroup=muttrcVarEqualsStatusFmt
+syn match muttrcVarEqualsStatusFmt contained skipwhite "=" nextgroup=muttrcStatusFormatStr
+syn keyword muttrcVarStr contained skipwhite pgp_getkeys_command nextgroup=muttrcVarEqualsPGPGetKeysFmt
+syn match muttrcVarEqualsPGPGetKeysFmt contained skipwhite "=" nextgroup=muttrcPGPGetKeysFormatStr
+syn keyword muttrcVarStr contained skipwhite smime_decrypt_command smime_verify_command smime_verify_opaque_command smime_sign_command smime_sign_opaque_command smime_encrypt_command smime_pk7out_command smime_get_cert_command smime_get_signer_cert_command smime_import_cert_command smime_get_cert_email_command nextgroup=muttrcVarEqualsSmimeFmt
+syn match muttrcVarEqualsSmimeFmt contained skipwhite "=" nextgroup=muttrcSmimeFormatStr
+syn keyword muttrcVarStr contained skipwhite date_format nextgroup=muttrcVarEqualsStrftimeFmt
+syn match muttrcVarEqualsStrftimeFmt contained skipwhite "=" nextgroup=muttrcStrftimeFormatStr
+
+syn match muttrcVPrefix contained /[?&]/ nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn match muttrcVarStr contained skipwhite 'my_[a-zA-Z0-9_]\+' nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr contained skipwhite
+ \ abort_noattach_regexp alias_file assumed_charset attach_charset attach_sep
+ \ attribution_locale certificate_file charset config_charset content_type
+ \ default_hook display_filter dotlock_program dsn_notify dsn_return editor
+ \ entropy_file envelope_from_address escape folder forw_format
+ \ forward_attribution_intro forward_attribution_trailer forward_format from gecos_mask
+ \ hdr_format header_cache header_cache_compress header_cache_pagesize history_file
+ \ hostname imap_authenticators imap_delim_chars imap_headers imap_idle imap_login
+ \ imap_pass imap_user indent_str indent_string ispell locale mailcap_path
+ \ mark_macro_prefix mask mbox mbox_type message_cachedir mh_seq_flagged mh_seq_replied
+ \ mh_seq_unseen mime_type_query_command mixmaster msg_format new_mail_command pager
+ \ pgp_default_key pgp_decryption_okay pgp_good_sign pgp_mime_signature_description
+ \ pgp_mime_signature_filename pgp_sign_as pgp_sort_keys pipe_sep pop_authenticators
+ \ pop_host pop_pass pop_user post_indent_str post_indent_string postpone_encrypt_as
+ \ postponed preconnect print_cmd print_command query_command quote_regexp realname
+ \ record reply_regexp send_charset sendmail shell sidebar_delim sidebar_delim_chars
+ \ sidebar_divider_char sidebar_format sidebar_indent_string sidebar_sort_method
+ \ signature simple_search smileys smime_ca_location smime_certificates
+ \ smime_default_key smime_encrypt_with smime_keys smime_sign_as smime_sign_digest_alg
+ \ smtp_authenticators smtp_pass smtp_url sort sort_alias sort_aux sort_browser
+ \ spam_separator spoolfile ssl_ca_certificates_file ssl_ciphers ssl_client_cert
+ \ status_chars tmpdir to_chars trash ts_icon_format ts_status_format tunnel visual
+ \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+" Present in 1.4.2.1 (pgp_create_traditional was a bool then)
+syn keyword muttrcVarBool contained skipwhite imap_force_ssl noimap_force_ssl invimap_force_ssl nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+"syn keyword muttrcVarQuad contained pgp_create_traditional nopgp_create_traditional invpgp_create_traditional
+syn keyword muttrcVarStr contained skipwhite alternates nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn keyword muttrcMenu contained alias attach browser compose editor index pager postpone pgp mix query generic
+syn match muttrcMenuList "\S\+" contained contains=muttrcMenu
+syn match muttrcMenuCommas /,/ contained
+
+syn keyword muttrcHooks contained skipwhite account-hook charset-hook iconv-hook message-hook folder-hook mbox-hook save-hook fcc-hook fcc-save-hook send-hook send2-hook reply-hook crypt-hook
+
+syn keyword muttrcCommand skipwhite
+ \ alternative_order auto_view exec hdr_order iconv-hook ignore mailboxes
+ \ mailto_allow mime_lookup my_hdr pgp-hook push score sidebar_whitelist source
+ \ unalternative_order unalternative_order unauto_view ungroup unhdr_order
+ \ unignore unmailboxes unmailto_allow unmime_lookup unmono unmy_hdr unscore
+ \ unsidebar_whitelist
+syn keyword muttrcCommand skipwhite charset-hook nextgroup=muttrcRXString
+syn keyword muttrcCommand skipwhite unhook nextgroup=muttrcHooks
+
+syn keyword muttrcCommand skipwhite spam nextgroup=muttrcSpamPattern
+syn region muttrcSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL
+syn region muttrcSpamPattern contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL
+
+syn keyword muttrcCommand skipwhite nospam nextgroup=muttrcNoSpamPattern
+syn region muttrcNoSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern
+syn region muttrcNoSpamPattern contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern
+
+syn match muttrcAttachmentsMimeType contained "[*a-z0-9_-]\+/[*a-z0-9._-]\+\s*" skipwhite nextgroup=muttrcAttachmentsMimeType
+syn match muttrcAttachmentsFlag contained "[+-]\%([AI]\|inline\|attachment\)\s\+" skipwhite nextgroup=muttrcAttachmentsMimeType
+syn match muttrcAttachmentsLine "^\s*\%(un\)\?attachments\s\+" skipwhite nextgroup=muttrcAttachmentsFlag
+
+syn match muttrcUnHighlightSpace contained "\%(\s\+\|\\$\)"
+
+syn keyword muttrcAsterisk contained *
+syn keyword muttrcListsKeyword lists skipwhite nextgroup=muttrcGroupDef,muttrcComment
+syn keyword muttrcListsKeyword unlists skipwhite nextgroup=muttrcAsterisk,muttrcComment
+
+syn keyword muttrcSubscribeKeyword subscribe nextgroup=muttrcGroupDef,muttrcComment
+syn keyword muttrcSubscribeKeyword unsubscribe nextgroup=muttrcAsterisk,muttrcComment
+
+syn keyword muttrcAlternateKeyword contained alternates unalternates
+syn region muttrcAlternatesLine keepend start=+^\s*\%(un\)\?alternates\s+ skip=+\\$+ end=+$+ contains=muttrcAlternateKeyword,muttrcGroupDef,muttrcRXPat,muttrcUnHighlightSpace,muttrcComment
+
+" muttrcVariable includes a prefix because partial strings are considered
+" valid.
+syn match muttrcVariable contained "\\\@<![a-zA-Z_-]*\$[a-zA-Z_-]\+" contains=muttrcVariableInner
+syn match muttrcVariableInner contained "\$[a-zA-Z_-]\+"
+syn match muttrcEscapedVariable contained "\\\$[a-zA-Z_-]\+"
+
+syn match muttrcBadAction contained "[^<>]\+" contains=muttrcEmail
+syn match muttrcFunction contained "\<\%(attach\|bounce\|copy\|delete\|display\|flag\|forward\|mark\|parent\|pipe\|postpone\|print\|purge\|recall\|resend\|root\|save\|send\|tag\|undelete\)-message\>"
+syn match muttrcFunction contained "\<\%(delete\|next\|previous\|read\|tag\|break\|undelete\)-thread\>"
+syn match muttrcFunction contained "\<link-threads\>"
+syn match muttrcFunction contained "\<\%(backward\|capitalize\|downcase\|forward\|kill\|upcase\)-word\>"
+syn match muttrcFunction contained "\<\%(delete\|filter\|first\|last\|next\|pipe\|previous\|print\|save\|select\|tag\|undelete\)-entry\>"
+syn match muttrcFunction contained "\<attach-\%(file\|key\)\>"
+syn match muttrcFunction contained "\<change-\%(dir\|folder\|folder-readonly\)\>"
+syn match muttrcFunction contained "\<check-\%(new\|traditional-pgp\)\>"
+syn match muttrcFunction contained "\<current-\%(bottom\|middle\|top\)\>"
+syn match muttrcFunction contained "\<decode-\%(copy\|save\)\>"
+syn match muttrcFunction contained "\<delete-\%(char\|pattern\|subthread\)\>"
+syn match muttrcFunction contained "\<display-\%(address\|toggle-weed\)\>"
+syn match muttrcFunction contained "\<echo\>"
+syn match muttrcFunction contained "\<edit\%(-\%(bcc\|cc\|description\|encoding\|fcc\|file\|from\|headers\|label\|mime\|reply-to\|subject\|to\|type\)\)\?\>"
+syn match muttrcFunction contained "\<enter-\%(command\|mask\)\>"
+syn match muttrcFunction contained "\<error-history\>"
+syn match muttrcFunction contained "\<half-\%(up\|down\)\>"
+syn match muttrcFunction contained "\<history-\%(up\|down\|search\)\>"
+syn match muttrcFunction contained "\<kill-\%(eol\|eow\|line\)\>"
+syn match muttrcFunction contained "\<next-\%(line\|new\%(-then-unread\)\?\|page\|subthread\|undeleted\|unread\|unread-mailbox\)\>"
+syn match muttrcFunction contained "\<previous-\%(line\|new\%(-then-unread\)\?\|page\|subthread\|undeleted\|unread\)\>"
+syn match muttrcFunction contained "\<search\%(-\%(next\|opposite\|reverse\|toggle\)\)\?\>"
+syn match muttrcFunction contained "\<show-\%(limit\|version\)\>"
+syn match muttrcFunction contained "\<sort-\%(mailbox\|reverse\)\>"
+syn match muttrcFunction contained "\<tag-\%(pattern\|\%(sub\)\?thread\|prefix\%(-cond\)\?\)\>"
+syn match muttrcFunction contained "\<end-cond\>"
+syn match muttrcFunction contained "\<sidebar-\%(next\|next-new\|open\|page-down\|page-up\|prev\|prev-new\|toggle-visible\)\>"
+syn match muttrcFunction contained "\<toggle-\%(mailboxes\|new\|quoted\|subscribed\|unlink\|write\)\>"
+syn match muttrcFunction contained "\<undelete-\%(pattern\|subthread\)\>"
+syn match muttrcFunction contained "\<collapse-\%(parts\|thread\|all\)\>"
+syn match muttrcFunction contained "\<rename-attachment\>"
+syn match muttrcFunction contained "\<subjectrx\>"
+syn match muttrcFunction contained "\<\%(un\)\?setenv\>"
+syn match muttrcFunction contained "\<view-\%(attach\|attachments\|file\|mailcap\|name\|text\)\>"
+syn match muttrcFunction contained "\<\%(backspace\|backward-char\|bol\|bottom\|bottom-page\|buffy-cycle\|clear-flag\|complete\%(-query\)\?\|copy-file\|create-alias\|detach-file\|eol\|exit\|extract-keys\|\%(imap-\)\?fetch-mail\|forget-passphrase\|forward-char\|group-reply\|help\|ispell\|jump\|limit\|list-reply\|mail\|mail-key\|mark-as-new\|middle-page\|new-mime\|noop\|pgp-menu\|query\|query-append\|quit\|quote-char\|read-subthread\|redraw-screen\|refresh\|rename-file\|reply\|select-new\|set-flag\|shell-escape\|skip-quoted\|sort\|subscribe\|sync-mailbox\|top\|top-page\|transpose-chars\|unsubscribe\|untag-pattern\|verify-key\|what-key\|write-fcc\)\>"
+syn keyword muttrcFunction contained imap-logout-all
+if use_mutt_sidebar == 1
+ syn match muttrcFunction contained "\<sidebar-\%(prev\|next\|open\|scroll-up\|scroll-down\)"
+endif
+syn match muttrcAction contained "<[^>]\{-}>" contains=muttrcBadAction,muttrcFunction,muttrcKeyName
+
+syn keyword muttrcCommand set skipwhite nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcCommand unset skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcCommand reset skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcCommand toggle skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+" First, functions that take regular expressions:
+syn match muttrcRXHookNot contained /!\s*/ skipwhite nextgroup=muttrcRXHookString,muttrcRXHookStringNL
+syn match muttrcRXHooks /\<\%(account\|folder\)-hook\>/ skipwhite nextgroup=muttrcRXHookNot,muttrcRXHookString,muttrcRXHookStringNL
+
+" Now, functions that take patterns
+syn match muttrcPatHookNot contained /!\s*/ skipwhite nextgroup=muttrcPattern
+syn match muttrcPatHooks /\<\%(mbox\|crypt\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcPattern
+syn match muttrcPatHooks /\<\%(message\|reply\|send\|send2\|save\|\|fcc\%(-save\)\?\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcOptPattern
+
+syn match muttrcBindFunction contained /\S\+\>/ skipwhite contains=muttrcFunction
+syn match muttrcBindFunctionNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindFunction,muttrcBindFunctionNL
+syn match muttrcBindKey contained /\S\+/ skipwhite contains=muttrcKey nextgroup=muttrcBindFunction,muttrcBindFunctionNL
+syn match muttrcBindKeyNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindKey,muttrcBindKeyNL
+syn match muttrcBindMenuList contained /\S\+/ skipwhite contains=muttrcMenu,muttrcMenuCommas nextgroup=muttrcBindKey,muttrcBindKeyNL
+syn match muttrcBindMenuListNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindMenuList,muttrcBindMenuListNL
+syn keyword muttrcCommand skipwhite bind nextgroup=muttrcBindMenuList,muttrcBindMenuListNL
+
+syn region muttrcMacroDescr contained keepend skipwhite start=+\s*\S+ms=e skip=+\\ + end=+ \|$+me=s
+syn region muttrcMacroDescr contained keepend skipwhite start=+'+ms=e skip=+\\'+ end=+'+me=s
+syn region muttrcMacroDescr contained keepend skipwhite start=+"+ms=e skip=+\\"+ end=+"+me=s
+syn match muttrcMacroDescrNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syn region muttrcMacroBody contained skipwhite start="\S" skip='\\ \|\\$' end=' \|$' contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syn region muttrcMacroBody matchgroup=Type contained skipwhite start=+'+ms=e skip=+\\'+ end=+'\|\%(\%(\\\\\)\@<!$\)+me=s contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcSpam,muttrcNoSpam,muttrcCommand,muttrcAction,muttrcVariable nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syn region muttrcMacroBody matchgroup=Type contained skipwhite start=+"+ms=e skip=+\\"+ end=+"\|\%(\%(\\\\\)\@<!$\)+me=s contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcSpam,muttrcNoSpam,muttrcCommand,muttrcAction,muttrcVariable nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syn match muttrcMacroBodyNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroBody,muttrcMacroBodyNL
+syn match muttrcMacroKey contained /\S\+/ skipwhite contains=muttrcKey nextgroup=muttrcMacroBody,muttrcMacroBodyNL
+syn match muttrcMacroKeyNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroKey,muttrcMacroKeyNL
+syn match muttrcMacroMenuList contained /\S\+/ skipwhite contains=muttrcMenu,muttrcMenuCommas nextgroup=muttrcMacroKey,muttrcMacroKeyNL
+syn match muttrcMacroMenuListNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroMenuList,muttrcMacroMenuListNL
+syn keyword muttrcCommand skipwhite macro nextgroup=muttrcMacroMenuList,muttrcMacroMenuListNL
+
+syn match muttrcAddrContent contained "[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+\s*" skipwhite contains=muttrcEmail nextgroup=muttrcAddrContent
+syn region muttrcAddrContent contained start=+'+ end=+'\s*+ skip=+\\'+ skipwhite contains=muttrcEmail nextgroup=muttrcAddrContent
+syn region muttrcAddrContent contained start=+"+ end=+"\s*+ skip=+\\"+ skipwhite contains=muttrcEmail nextgroup=muttrcAddrContent
+syn match muttrcAddrDef contained "-addr\s\+" skipwhite nextgroup=muttrcAddrContent
+
+syn match muttrcGroupFlag contained "-group"
+syn region muttrcGroupDef contained start="-group\s\+" skip="\\$" end="\s" skipwhite keepend contains=muttrcGroupFlag,muttrcUnHighlightSpace
+
+syn keyword muttrcGroupKeyword contained group ungroup
+syn region muttrcGroupLine keepend start=+^\s*\%(un\)\?group\s+ skip=+\\$+ end=+$+ contains=muttrcGroupKeyword,muttrcGroupDef,muttrcAddrDef,muttrcRXDef,muttrcUnHighlightSpace,muttrcComment
+
+syn match muttrcAliasGroupName contained /\w\+/ skipwhite nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL
+syn match muttrcAliasGroupDefNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasGroupName,muttrcAliasGroupDefNL
+syn match muttrcAliasGroupDef contained /\s*-group/ skipwhite nextgroup=muttrcAliasGroupName,muttrcAliasGroupDefNL contains=muttrcGroupFlag
+syn match muttrcAliasComma contained /,/ skipwhite nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL
+syn match muttrcAliasEmail contained /\S\+@\S\+/ contains=muttrcEmail nextgroup=muttrcAliasName,muttrcAliasNameNL skipwhite
+syn match muttrcAliasEncEmail contained /<[^>]\+>/ contains=muttrcEmail nextgroup=muttrcAliasComma
+syn match muttrcAliasEncEmailNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEncEmail,muttrcAliasEncEmailNL
+syn match muttrcAliasNameNoParens contained /[^<(@]\+\s\+/ nextgroup=muttrcAliasEncEmail,muttrcAliasEncEmailNL
+syn region muttrcAliasName contained matchgroup=Type start=/(/ end=/)/ skipwhite
+syn match muttrcAliasNameNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasName,muttrcAliasNameNL
+syn match muttrcAliasENNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL
+syn match muttrcAliasKey contained /\s*[^- \t]\S\+/ skipwhite nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL
+syn match muttrcAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL
+syn keyword muttrcCommand skipwhite alias nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL
+
+syn match muttrcUnAliasKey contained "\s*\w\+\s*" skipwhite nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
+syn match muttrcUnAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
+syn keyword muttrcCommand skipwhite unalias nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
+
+syn match muttrcSimplePat contained "!\?\^\?[~][ADEFgGklNOpPQRSTuUvV=$]"
+syn match muttrcSimplePat contained "!\?\^\?[~][mnXz]\s*\%([<>-][0-9]\+[kM]\?\|[0-9]\+[kM]\?[-]\%([0-9]\+[kM]\?\)\?\)"
+syn match muttrcSimplePat contained "!\?\^\?[~][dr]\s*\%(\%(-\?[0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)\|\%(\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)-\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)\?\)\?\)\|\%([<>=][0-9]\+[ymwd]\)\|\%(`[^`]\+`\)\|\%(\$[a-zA-Z0-9_-]\+\)\)" contains=muttrcShellString,muttrcVariable
+syn match muttrcSimplePat contained "!\?\^\?[~][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatRXContainer
+syn match muttrcSimplePat contained "!\?\^\?[%][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString
+syn match muttrcSimplePat contained "!\?\^\?[=][bcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString
+syn region muttrcSimplePat contained keepend start=+!\?\^\?[~](+ end=+)+ contains=muttrcSimplePat
+"syn match muttrcSimplePat contained /'[^~=%][^']*/ contains=muttrcRXString
+syn region muttrcSimplePatString contained keepend start=+"+ end=+"+ skip=+\\"+
+syn region muttrcSimplePatString contained keepend start=+'+ end=+'+ skip=+\\'+
+syn region muttrcSimplePatString contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1
+syn region muttrcSimplePatRXContainer contained keepend start=+"+ end=+"+ skip=+\\"+ contains=muttrcRXString
+syn region muttrcSimplePatRXContainer contained keepend start=+'+ end=+'+ skip=+\\'+ contains=muttrcRXString
+syn region muttrcSimplePatRXContainer contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1 contains=muttrcRXString
+syn match muttrcSimplePatMetas contained /[(|)]/
+
+syn match muttrcOptSimplePat contained skipwhite /[~=%!(^].*/ contains=muttrcSimplePat,muttrcSimplePatMetas
+syn match muttrcOptSimplePat contained skipwhite /[^~=%!(^].*/ contains=muttrcRXString
+syn region muttrcOptPattern contained matchgroup=Type keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcOptSimplePat,muttrcUnHighlightSpace nextgroup=muttrcString,muttrcStringNL
+syn region muttrcOptPattern contained matchgroup=Type keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcOptSimplePat,muttrcUnHighlightSpace nextgroup=muttrcString,muttrcStringNL
+syn region muttrcOptPattern contained keepend skipwhite start=+[~](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat nextgroup=muttrcString,muttrcStringNL
+syn match muttrcOptPattern contained skipwhite /[~][A-Za-z]/ contains=muttrcSimplePat nextgroup=muttrcString,muttrcStringNL
+syn match muttrcOptPattern contained skipwhite /[.]/ nextgroup=muttrcString,muttrcStringNL
+" Keep muttrcPattern and muttrcOptPattern synchronized
+syn region muttrcPattern contained matchgroup=Type keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas
+syn region muttrcPattern contained matchgroup=Type keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas
+syn region muttrcPattern contained keepend skipwhite start=+[~](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat
+syn region muttrcPattern contained keepend skipwhite start=+[~][<>](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat
+syn match muttrcPattern contained skipwhite /[~][A-Za-z]/ contains=muttrcSimplePat
+syn match muttrcPattern contained skipwhite /[.]/
+syn region muttrcPatternInner contained keepend start=+"[~=%!(^]+ms=s+1 skip=+\\"+ end=+"+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas
+syn region muttrcPatternInner contained keepend start=+'[~=%!(^]+ms=s+1 skip=+\\'+ end=+'+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas
+
+" Colour definitions takes object, foreground and background arguments (regexps excluded).
+syn match muttrcColorMatchCount contained "[0-9]\+"
+syn match muttrcColorMatchCountNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL
+syn region muttrcColorRXPat contained start=+\s*'+ skip=+\\'+ end=+'\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL
+syn region muttrcColorRXPat contained start=+\s*"+ skip=+\\"+ end=+"\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL
+syn keyword muttrcColorField skipwhite contained
+ \ attachment body bold error hdrdefault header index indicator markers message
+ \ normal prompt quoted search sidebar-divider sidebar-flagged sidebar-highlight
+ \ sidebar-indicator sidebar-new sidebar-spoolfile signature status tilde tree
+ \ underline
+syn match muttrcColorField contained "\<quoted\d\=\>"
+if use_mutt_sidebar == 1
+ syn keyword muttrcColorField contained sidebar_new
+endif
+syn keyword muttrcColor contained black blue cyan default green magenta red white yellow
+syn keyword muttrcColor contained brightblack brightblue brightcyan brightdefault brightgreen brightmagenta brightred brightwhite brightyellow
+syn match muttrcColor contained "\<\%(bright\)\=color\d\{1,3}\>"
+" Now for the structure of the color line
+syn match muttrcColorRXNL contained skipnl "\s*\\$" nextgroup=muttrcColorRXPat,muttrcColorRXNL
+syn match muttrcColorBG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorRXPat,muttrcColorRXNL
+syn match muttrcColorBGNL contained skipnl "\s*\\$" nextgroup=muttrcColorBG,muttrcColorBGNL
+syn match muttrcColorFG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBG,muttrcColorBGNL
+syn match muttrcColorFGNL contained skipnl "\s*\\$" nextgroup=muttrcColorFG,muttrcColorFGNL
+syn match muttrcColorContext contained /\s*[$]\?\w\+/ contains=muttrcColorField,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorFG,muttrcColorFGNL
+syn match muttrcColorNL contained skipnl "\s*\\$" nextgroup=muttrcColorContext,muttrcColorNL
+syn match muttrcColorKeyword contained /^\s*color\s\+/ nextgroup=muttrcColorContext,muttrcColorNL
+syn region muttrcColorLine keepend start=/^\s*color\s\+\%(index\|header\)\@!/ skip=+\\$+ end=+$+ contains=muttrcColorKeyword,muttrcComment,muttrcUnHighlightSpace
+" Now for the structure of the color index line
+syn match muttrcPatternNL contained skipnl "\s*\\$" nextgroup=muttrcPattern,muttrcPatternNL
+syn match muttrcColorBGI contained /\s*[$]\?\w\+\s*/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcPattern,muttrcPatternNL
+syn match muttrcColorBGNLI contained skipnl "\s*\\$" nextgroup=muttrcColorBGI,muttrcColorBGNLI
+syn match muttrcColorFGI contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBGI,muttrcColorBGNLI
+syn match muttrcColorFGNLI contained skipnl "\s*\\$" nextgroup=muttrcColorFGI,muttrcColorFGNLI
+syn match muttrcColorContextI contained /\s*\<index\>/ contains=muttrcUnHighlightSpace nextgroup=muttrcColorFGI,muttrcColorFGNLI
+syn match muttrcColorNLI contained skipnl "\s*\\$" nextgroup=muttrcColorContextI,muttrcColorNLI
+syn match muttrcColorKeywordI contained skipwhite /\<color\>/ nextgroup=muttrcColorContextI,muttrcColorNLI
+syn region muttrcColorLine keepend skipwhite start=/\<color\s\+index\>/ skip=+\\$+ end=+$+ contains=muttrcColorKeywordI,muttrcComment,muttrcUnHighlightSpace
+" Now for the structure of the color header line
+syn match muttrcRXPatternNL contained skipnl "\s*\\$" nextgroup=muttrcRXString,muttrcRXPatternNL
+syn match muttrcColorBGH contained /\s*[$]\?\w\+\s*/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcRXString,muttrcRXPatternNL
+syn match muttrcColorBGNLH contained skipnl "\s*\\$" nextgroup=muttrcColorBGH,muttrcColorBGNLH
+syn match muttrcColorFGH contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBGH,muttrcColorBGNLH
+syn match muttrcColorFGNLH contained skipnl "\s*\\$" nextgroup=muttrcColorFGH,muttrcColorFGNLH
+syn match muttrcColorContextH contained /\s*\<header\>/ contains=muttrcUnHighlightSpace nextgroup=muttrcColorFGH,muttrcColorFGNLH
+syn match muttrcColorNLH contained skipnl "\s*\\$" nextgroup=muttrcColorContextH,muttrcColorNLH
+syn match muttrcColorKeywordH contained skipwhite /\<color\>/ nextgroup=muttrcColorContextH,muttrcColorNLH
+syn region muttrcColorLine keepend skipwhite start=/\<color\s\+header\>/ skip=+\\$+ end=+$+ contains=muttrcColorKeywordH,muttrcComment,muttrcUnHighlightSpace
+" And now color's brother:
+syn region muttrcUnColorPatterns contained skipwhite start=+\s*'+ end=+'+ skip=+\\'+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL
+syn region muttrcUnColorPatterns contained skipwhite start=+\s*"+ end=+"+ skip=+\\"+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL
+syn match muttrcUnColorPatterns contained skipwhite /\s*[^'"\s]\S\*/ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL
+syn match muttrcUnColorPatNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL
+syn match muttrcUnColorAll contained skipwhite /[*]/
+syn match muttrcUnColorAPNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorPatterns,muttrcUnColorAll,muttrcUnColorAPNL
+syn match muttrcUnColorIndex contained skipwhite /\s*index\s\+/ nextgroup=muttrcUnColorPatterns,muttrcUnColorAll,muttrcUnColorAPNL
+syn match muttrcUnColorIndexNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorIndex,muttrcUnColorIndexNL
+syn match muttrcUnColorKeyword contained skipwhite /^\s*uncolor\s\+/ nextgroup=muttrcUnColorIndex,muttrcUnColorIndexNL
+syn region muttrcUnColorLine keepend start=+^\s*uncolor\s+ skip=+\\$+ end=+$+ contains=muttrcUnColorKeyword,muttrcComment,muttrcUnHighlightSpace
+
+" Mono are almost like color (ojects inherited from color)
+syn keyword muttrcMonoAttrib contained bold none normal reverse standout underline
+syn keyword muttrcMono contained mono skipwhite nextgroup=muttrcColorField
+syn match muttrcMonoLine "^\s*mono\s\+\S\+" skipwhite nextgroup=muttrcMonoAttrib contains=muttrcMono
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link muttrcComment Comment
+hi def link muttrcEscape SpecialChar
+hi def link muttrcRXChars SpecialChar
+hi def link muttrcString String
+hi def link muttrcRXString String
+hi def link muttrcRXString2 String
+hi def link muttrcSpecial Special
+hi def link muttrcHooks Type
+hi def link muttrcGroupFlag Type
+hi def link muttrcGroupDef Macro
+hi def link muttrcAddrDef muttrcGroupFlag
+hi def link muttrcRXDef muttrcGroupFlag
+hi def link muttrcRXPat String
+hi def link muttrcAliasGroupName Macro
+hi def link muttrcAliasKey Identifier
+hi def link muttrcUnAliasKey Identifier
+hi def link muttrcAliasEncEmail Identifier
+hi def link muttrcAliasParens Type
+hi def link muttrcSetNumAssignment Number
+hi def link muttrcSetBoolAssignment Boolean
+hi def link muttrcSetQuadAssignment Boolean
+hi def link muttrcSetStrAssignment String
+hi def link muttrcEmail Special
+hi def link muttrcVariableInner Special
+hi def link muttrcEscapedVariable String
+hi def link muttrcHeader Type
+hi def link muttrcKeySpecial SpecialChar
+hi def link muttrcKey Type
+hi def link muttrcKeyName SpecialChar
+hi def link muttrcVarBool Identifier
+hi def link muttrcVarQuad Identifier
+hi def link muttrcVarNum Identifier
+hi def link muttrcVarStr Identifier
+hi def link muttrcMenu Identifier
+hi def link muttrcCommand Keyword
+hi def link muttrcMacroDescr String
+hi def link muttrcAction Macro
+hi def link muttrcBadAction Error
+hi def link muttrcBindFunction Error
+hi def link muttrcBindMenuList Error
+hi def link muttrcFunction Macro
+hi def link muttrcGroupKeyword muttrcCommand
+hi def link muttrcGroupLine Error
+hi def link muttrcSubscribeKeyword muttrcCommand
+hi def link muttrcSubscribeLine Error
+hi def link muttrcListsKeyword muttrcCommand
+hi def link muttrcListsLine Error
+hi def link muttrcAlternateKeyword muttrcCommand
+hi def link muttrcAlternatesLine Error
+hi def link muttrcAttachmentsLine muttrcCommand
+hi def link muttrcAttachmentsFlag Type
+hi def link muttrcAttachmentsMimeType String
+hi def link muttrcColorLine Error
+hi def link muttrcColorContext Error
+hi def link muttrcColorContextI Identifier
+hi def link muttrcColorContextH Identifier
+hi def link muttrcColorKeyword muttrcCommand
+hi def link muttrcColorKeywordI muttrcColorKeyword
+hi def link muttrcColorKeywordH muttrcColorKeyword
+hi def link muttrcColorField Identifier
+hi def link muttrcColor Type
+hi def link muttrcColorFG Error
+hi def link muttrcColorFGI Error
+hi def link muttrcColorFGH Error
+hi def link muttrcColorBG Error
+hi def link muttrcColorBGI Error
+hi def link muttrcColorBGH Error
+hi def link muttrcMonoAttrib muttrcColor
+hi def link muttrcMono muttrcCommand
+hi def link muttrcSimplePat Identifier
+hi def link muttrcSimplePatString Macro
+hi def link muttrcSimplePatMetas Special
+hi def link muttrcPattern Error
+hi def link muttrcUnColorLine Error
+hi def link muttrcUnColorKeyword muttrcCommand
+hi def link muttrcUnColorIndex Identifier
+hi def link muttrcShellString muttrcEscape
+hi def link muttrcRXHooks muttrcCommand
+hi def link muttrcRXHookNot Type
+hi def link muttrcPatHooks muttrcCommand
+hi def link muttrcPatHookNot Type
+hi def link muttrcFormatConditionals2 Type
+hi def link muttrcIndexFormatStr muttrcString
+hi def link muttrcIndexFormatEscapes muttrcEscape
+hi def link muttrcIndexFormatConditionals muttrcFormatConditionals2
+hi def link muttrcAliasFormatStr muttrcString
+hi def link muttrcAliasFormatEscapes muttrcEscape
+hi def link muttrcAttachFormatStr muttrcString
+hi def link muttrcAttachFormatEscapes muttrcEscape
+hi def link muttrcAttachFormatConditionals muttrcFormatConditionals2
+hi def link muttrcComposeFormatStr muttrcString
+hi def link muttrcComposeFormatEscapes muttrcEscape
+hi def link muttrcFolderFormatStr muttrcString
+hi def link muttrcFolderFormatEscapes muttrcEscape
+hi def link muttrcFolderFormatConditionals muttrcFormatConditionals2
+hi def link muttrcMixFormatStr muttrcString
+hi def link muttrcMixFormatEscapes muttrcEscape
+hi def link muttrcMixFormatConditionals muttrcFormatConditionals2
+hi def link muttrcPGPFormatStr muttrcString
+hi def link muttrcPGPFormatEscapes muttrcEscape
+hi def link muttrcPGPFormatConditionals muttrcFormatConditionals2
+hi def link muttrcPGPCmdFormatStr muttrcString
+hi def link muttrcPGPCmdFormatEscapes muttrcEscape
+hi def link muttrcPGPCmdFormatConditionals muttrcFormatConditionals2
+hi def link muttrcStatusFormatStr muttrcString
+hi def link muttrcStatusFormatEscapes muttrcEscape
+hi def link muttrcStatusFormatConditionals muttrcFormatConditionals2
+hi def link muttrcPGPGetKeysFormatStr muttrcString
+hi def link muttrcPGPGetKeysFormatEscapes muttrcEscape
+hi def link muttrcSmimeFormatStr muttrcString
+hi def link muttrcSmimeFormatEscapes muttrcEscape
+hi def link muttrcSmimeFormatConditionals muttrcFormatConditionals2
+hi def link muttrcTimeEscapes muttrcEscape
+hi def link muttrcPGPTimeEscapes muttrcEscape
+hi def link muttrcStrftimeEscapes Type
+hi def link muttrcStrftimeFormatStr muttrcString
+hi def link muttrcFormatErrors Error
+
+hi def link muttrcBindFunctionNL SpecialChar
+hi def link muttrcBindKeyNL SpecialChar
+hi def link muttrcBindMenuListNL SpecialChar
+hi def link muttrcMacroDescrNL SpecialChar
+hi def link muttrcMacroBodyNL SpecialChar
+hi def link muttrcMacroKeyNL SpecialChar
+hi def link muttrcMacroMenuListNL SpecialChar
+hi def link muttrcColorMatchCountNL SpecialChar
+hi def link muttrcColorNL SpecialChar
+hi def link muttrcColorRXNL SpecialChar
+hi def link muttrcColorBGNL SpecialChar
+hi def link muttrcColorFGNL SpecialChar
+hi def link muttrcAliasNameNL SpecialChar
+hi def link muttrcAliasENNL SpecialChar
+hi def link muttrcAliasNL SpecialChar
+hi def link muttrcUnAliasNL SpecialChar
+hi def link muttrcAliasGroupDefNL SpecialChar
+hi def link muttrcAliasEncEmailNL SpecialChar
+hi def link muttrcPatternNL SpecialChar
+hi def link muttrcUnColorPatNL SpecialChar
+hi def link muttrcUnColorAPNL SpecialChar
+hi def link muttrcUnColorIndexNL SpecialChar
+hi def link muttrcStringNL SpecialChar
+
+
+let b:current_syntax = "muttrc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+"EOF vim: ts=8 noet tw=100 sw=8 sts=0 ft=vim
diff --git a/runtime/syntax/mysql.vim b/runtime/syntax/mysql.vim
new file mode 100644
index 0000000..8bd7b64
--- /dev/null
+++ b/runtime/syntax/mysql.vim
@@ -0,0 +1,288 @@
+" Vim syntax file
+" Language: mysql
+" Maintainer: Kenneth J. Pronovici <pronovic@ieee.org>
+" Last Change: $LastChangedDate: 2016-04-11 10:31:04 -0500 (Mon, 11 Apr 2016) $
+" Filenames: *.mysql
+" URL: ftp://cedar-solutions.com/software/mysql.vim
+" Note: The definitions below are taken from the mysql user manual as of April 2002, for version 3.23
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Always ignore case
+syn case ignore
+
+" General keywords which don't fall into other categories
+syn keyword mysqlKeyword action add after aggregate all alter as asc auto_increment avg_row_length
+syn keyword mysqlKeyword both by
+syn keyword mysqlKeyword cascade change character check checksum column columns comment constraint create cross
+syn keyword mysqlKeyword current_date current_time current_timestamp
+syn keyword mysqlKeyword data database databases day day_hour day_minute day_second
+syn keyword mysqlKeyword default delayed delay_key_write delete desc describe distinct distinctrow drop
+syn keyword mysqlKeyword enclosed escape escaped explain
+syn keyword mysqlKeyword fields file first flush for foreign from full function
+syn keyword mysqlKeyword global grant grants group
+syn keyword mysqlKeyword having heap high_priority hosts hour hour_minute hour_second
+syn keyword mysqlKeyword identified ignore index infile inner insert insert_id into isam
+syn keyword mysqlKeyword join
+syn keyword mysqlKeyword key keys kill last_insert_id leading left limit lines load local lock logs long
+syn keyword mysqlKeyword low_priority
+syn keyword mysqlKeyword match max_rows middleint min_rows minute minute_second modify month myisam
+syn keyword mysqlKeyword natural no
+syn keyword mysqlKeyword on optimize option optionally order outer outfile
+syn keyword mysqlKeyword pack_keys partial password primary privileges procedure process processlist
+syn keyword mysqlKeyword read references reload rename replace restrict returns revoke right row rows
+syn keyword mysqlKeyword second select show shutdown soname sql_big_result sql_big_selects sql_big_tables sql_log_off
+syn keyword mysqlKeyword sql_log_update sql_low_priority_updates sql_select_limit sql_small_result sql_warnings starting
+syn keyword mysqlKeyword status straight_join string
+syn keyword mysqlKeyword table tables temporary terminated to trailing type
+syn keyword mysqlKeyword unique unlock unsigned update usage use using
+syn keyword mysqlKeyword values varbinary variables varying
+syn keyword mysqlKeyword where with write
+syn keyword mysqlKeyword year_month
+syn keyword mysqlKeyword zerofill
+
+" Special values
+syn keyword mysqlSpecial false null true
+
+" Strings (single- and double-quote)
+syn region mysqlString start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn region mysqlString start=+'+ skip=+\\\\\|\\'+ end=+'+
+
+" Numbers and hexidecimal values
+syn match mysqlNumber "-\=\<[0-9]*\>"
+syn match mysqlNumber "-\=\<[0-9]*\.[0-9]*\>"
+syn match mysqlNumber "-\=\<[0-9][0-9]*e[+-]\=[0-9]*\>"
+syn match mysqlNumber "-\=\<[0-9]*\.[0-9]*e[+-]\=[0-9]*\>"
+syn match mysqlNumber "\<0x[abcdefABCDEF0-9]*\>"
+
+" User variables
+syn match mysqlVariable "@\a*[A-Za-z0-9]*\([._]*[A-Za-z0-9]\)*"
+
+" Escaped column names
+syn match mysqlEscaped "`[^`]*`"
+
+" Comments (c-style, mysql-style and modified sql-style)
+syn region mysqlComment start="/\*" end="\*/"
+syn match mysqlComment "#.*"
+syn match mysqlComment "--\_s.*"
+syn sync ccomment mysqlComment
+
+" Column types
+"
+" This gets a bit ugly. There are two different problems we have to
+" deal with.
+"
+" The first problem is that some keywords like 'float' can be used
+" both with and without specifiers, i.e. 'float', 'float(1)' and
+" 'float(@var)' are all valid. We have to account for this and we
+" also have to make sure that garbage like floatn or float_(1) is not
+" highlighted.
+"
+" The second problem is that some of these keywords are included in
+" function names. For instance, year() is part of the name of the
+" dayofyear() function, and the dec keyword (no parenthesis) is part of
+" the name of the decode() function.
+
+syn keyword mysqlType tinyint smallint mediumint int integer bigint
+syn keyword mysqlType date datetime time bit bool
+syn keyword mysqlType tinytext mediumtext longtext text
+syn keyword mysqlType tinyblob mediumblob longblob blob
+syn region mysqlType start="float\W" end="."me=s-1
+syn region mysqlType start="float$" end="."me=s-1
+syn region mysqlType start="float(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="double\W" end="."me=s-1
+syn region mysqlType start="double$" end="."me=s-1
+syn region mysqlType start="double(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="double precision\W" end="."me=s-1
+syn region mysqlType start="double precision$" end="."me=s-1
+syn region mysqlType start="double precision(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="real\W" end="."me=s-1
+syn region mysqlType start="real$" end="."me=s-1
+syn region mysqlType start="real(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="numeric(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="dec\W" end="."me=s-1
+syn region mysqlType start="dec$" end="."me=s-1
+syn region mysqlType start="dec(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="decimal\W" end="."me=s-1
+syn region mysqlType start="decimal$" end="."me=s-1
+syn region mysqlType start="decimal(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="\Wtimestamp\W" end="."me=s-1
+syn region mysqlType start="\Wtimestamp$" end="."me=s-1
+syn region mysqlType start="\Wtimestamp(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="^timestamp\W" end="."me=s-1
+syn region mysqlType start="^timestamp$" end="."me=s-1
+syn region mysqlType start="^timestamp(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="\Wyear(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="^year(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="char(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="varchar(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType start="enum(" end=")" contains=mysqlString,mysqlVariable
+syn region mysqlType start="\Wset(" end=")" contains=mysqlString,mysqlVariable
+syn region mysqlType start="^set(" end=")" contains=mysqlString,mysqlVariable
+
+" Logical, string and numeric operators
+syn keyword mysqlOperator between not and or is in like regexp rlike binary exists
+syn region mysqlOperator start="isnull(" end=")" contains=ALL
+syn region mysqlOperator start="coalesce(" end=")" contains=ALL
+syn region mysqlOperator start="interval(" end=")" contains=ALL
+
+" Control flow functions
+syn keyword mysqlFlow case when then else end
+syn region mysqlFlow start="ifnull(" end=")" contains=ALL
+syn region mysqlFlow start="nullif(" end=")" contains=ALL
+syn region mysqlFlow start="if(" end=")" contains=ALL
+
+" General Functions
+"
+" I'm leery of just defining keywords for functions, since according to the MySQL manual:
+"
+" Function names do not clash with table or column names. For example, ABS is a
+" valid column name. The only restriction is that for a function call, no spaces
+" are allowed between the function name and the `(' that follows it.
+"
+" This means that if I want to highlight function names properly, I have to use a
+" region to define them, not just a keyword. This will probably cause the syntax file
+" to load more slowly, but at least it will be 'correct'.
+
+syn region mysqlFunction start="abs(" end=")" contains=ALL
+syn region mysqlFunction start="acos(" end=")" contains=ALL
+syn region mysqlFunction start="adddate(" end=")" contains=ALL
+syn region mysqlFunction start="ascii(" end=")" contains=ALL
+syn region mysqlFunction start="asin(" end=")" contains=ALL
+syn region mysqlFunction start="atan(" end=")" contains=ALL
+syn region mysqlFunction start="atan2(" end=")" contains=ALL
+syn region mysqlFunction start="avg(" end=")" contains=ALL
+syn region mysqlFunction start="benchmark(" end=")" contains=ALL
+syn region mysqlFunction start="bin(" end=")" contains=ALL
+syn region mysqlFunction start="bit_and(" end=")" contains=ALL
+syn region mysqlFunction start="bit_count(" end=")" contains=ALL
+syn region mysqlFunction start="bit_or(" end=")" contains=ALL
+syn region mysqlFunction start="ceiling(" end=")" contains=ALL
+syn region mysqlFunction start="character_length(" end=")" contains=ALL
+syn region mysqlFunction start="char_length(" end=")" contains=ALL
+syn region mysqlFunction start="concat(" end=")" contains=ALL
+syn region mysqlFunction start="concat_ws(" end=")" contains=ALL
+syn region mysqlFunction start="connection_id(" end=")" contains=ALL
+syn region mysqlFunction start="conv(" end=")" contains=ALL
+syn region mysqlFunction start="cos(" end=")" contains=ALL
+syn region mysqlFunction start="cot(" end=")" contains=ALL
+syn region mysqlFunction start="count(" end=")" contains=ALL
+syn region mysqlFunction start="curdate(" end=")" contains=ALL
+syn region mysqlFunction start="curtime(" end=")" contains=ALL
+syn region mysqlFunction start="date_add(" end=")" contains=ALL
+syn region mysqlFunction start="date_format(" end=")" contains=ALL
+syn region mysqlFunction start="date_sub(" end=")" contains=ALL
+syn region mysqlFunction start="dayname(" end=")" contains=ALL
+syn region mysqlFunction start="dayofmonth(" end=")" contains=ALL
+syn region mysqlFunction start="dayofweek(" end=")" contains=ALL
+syn region mysqlFunction start="dayofyear(" end=")" contains=ALL
+syn region mysqlFunction start="decode(" end=")" contains=ALL
+syn region mysqlFunction start="degrees(" end=")" contains=ALL
+syn region mysqlFunction start="elt(" end=")" contains=ALL
+syn region mysqlFunction start="encode(" end=")" contains=ALL
+syn region mysqlFunction start="encrypt(" end=")" contains=ALL
+syn region mysqlFunction start="exp(" end=")" contains=ALL
+syn region mysqlFunction start="export_set(" end=")" contains=ALL
+syn region mysqlFunction start="extract(" end=")" contains=ALL
+syn region mysqlFunction start="field(" end=")" contains=ALL
+syn region mysqlFunction start="find_in_set(" end=")" contains=ALL
+syn region mysqlFunction start="floor(" end=")" contains=ALL
+syn region mysqlFunction start="format(" end=")" contains=ALL
+syn region mysqlFunction start="from_days(" end=")" contains=ALL
+syn region mysqlFunction start="from_unixtime(" end=")" contains=ALL
+syn region mysqlFunction start="get_lock(" end=")" contains=ALL
+syn region mysqlFunction start="greatest(" end=")" contains=ALL
+syn region mysqlFunction start="group_unique_users(" end=")" contains=ALL
+syn region mysqlFunction start="hex(" end=")" contains=ALL
+syn region mysqlFunction start="inet_aton(" end=")" contains=ALL
+syn region mysqlFunction start="inet_ntoa(" end=")" contains=ALL
+syn region mysqlFunction start="instr(" end=")" contains=ALL
+syn region mysqlFunction start="lcase(" end=")" contains=ALL
+syn region mysqlFunction start="least(" end=")" contains=ALL
+syn region mysqlFunction start="length(" end=")" contains=ALL
+syn region mysqlFunction start="load_file(" end=")" contains=ALL
+syn region mysqlFunction start="locate(" end=")" contains=ALL
+syn region mysqlFunction start="log(" end=")" contains=ALL
+syn region mysqlFunction start="log10(" end=")" contains=ALL
+syn region mysqlFunction start="lower(" end=")" contains=ALL
+syn region mysqlFunction start="lpad(" end=")" contains=ALL
+syn region mysqlFunction start="ltrim(" end=")" contains=ALL
+syn region mysqlFunction start="make_set(" end=")" contains=ALL
+syn region mysqlFunction start="master_pos_wait(" end=")" contains=ALL
+syn region mysqlFunction start="max(" end=")" contains=ALL
+syn region mysqlFunction start="md5(" end=")" contains=ALL
+syn region mysqlFunction start="mid(" end=")" contains=ALL
+syn region mysqlFunction start="min(" end=")" contains=ALL
+syn region mysqlFunction start="mod(" end=")" contains=ALL
+syn region mysqlFunction start="monthname(" end=")" contains=ALL
+syn region mysqlFunction start="now(" end=")" contains=ALL
+syn region mysqlFunction start="oct(" end=")" contains=ALL
+syn region mysqlFunction start="octet_length(" end=")" contains=ALL
+syn region mysqlFunction start="ord(" end=")" contains=ALL
+syn region mysqlFunction start="period_add(" end=")" contains=ALL
+syn region mysqlFunction start="period_diff(" end=")" contains=ALL
+syn region mysqlFunction start="pi(" end=")" contains=ALL
+syn region mysqlFunction start="position(" end=")" contains=ALL
+syn region mysqlFunction start="pow(" end=")" contains=ALL
+syn region mysqlFunction start="power(" end=")" contains=ALL
+syn region mysqlFunction start="quarter(" end=")" contains=ALL
+syn region mysqlFunction start="radians(" end=")" contains=ALL
+syn region mysqlFunction start="rand(" end=")" contains=ALL
+syn region mysqlFunction start="release_lock(" end=")" contains=ALL
+syn region mysqlFunction start="repeat(" end=")" contains=ALL
+syn region mysqlFunction start="reverse(" end=")" contains=ALL
+syn region mysqlFunction start="round(" end=")" contains=ALL
+syn region mysqlFunction start="rpad(" end=")" contains=ALL
+syn region mysqlFunction start="rtrim(" end=")" contains=ALL
+syn region mysqlFunction start="sec_to_time(" end=")" contains=ALL
+syn region mysqlFunction start="session_user(" end=")" contains=ALL
+syn region mysqlFunction start="sign(" end=")" contains=ALL
+syn region mysqlFunction start="sin(" end=")" contains=ALL
+syn region mysqlFunction start="soundex(" end=")" contains=ALL
+syn region mysqlFunction start="space(" end=")" contains=ALL
+syn region mysqlFunction start="sqrt(" end=")" contains=ALL
+syn region mysqlFunction start="std(" end=")" contains=ALL
+syn region mysqlFunction start="stddev(" end=")" contains=ALL
+syn region mysqlFunction start="strcmp(" end=")" contains=ALL
+syn region mysqlFunction start="subdate(" end=")" contains=ALL
+syn region mysqlFunction start="substring(" end=")" contains=ALL
+syn region mysqlFunction start="substring_index(" end=")" contains=ALL
+syn region mysqlFunction start="subtime(" end=")" contains=ALL
+syn region mysqlFunction start="sum(" end=")" contains=ALL
+syn region mysqlFunction start="sysdate(" end=")" contains=ALL
+syn region mysqlFunction start="system_user(" end=")" contains=ALL
+syn region mysqlFunction start="tan(" end=")" contains=ALL
+syn region mysqlFunction start="time_format(" end=")" contains=ALL
+syn region mysqlFunction start="time_to_sec(" end=")" contains=ALL
+syn region mysqlFunction start="to_days(" end=")" contains=ALL
+syn region mysqlFunction start="trim(" end=")" contains=ALL
+syn region mysqlFunction start="ucase(" end=")" contains=ALL
+syn region mysqlFunction start="unique_users(" end=")" contains=ALL
+syn region mysqlFunction start="unix_timestamp(" end=")" contains=ALL
+syn region mysqlFunction start="upper(" end=")" contains=ALL
+syn region mysqlFunction start="user(" end=")" contains=ALL
+syn region mysqlFunction start="version(" end=")" contains=ALL
+syn region mysqlFunction start="week(" end=")" contains=ALL
+syn region mysqlFunction start="weekday(" end=")" contains=ALL
+syn region mysqlFunction start="yearweek(" end=")" contains=ALL
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link mysqlKeyword Statement
+hi def link mysqlSpecial Special
+hi def link mysqlString String
+hi def link mysqlNumber Number
+hi def link mysqlVariable Identifier
+hi def link mysqlComment Comment
+hi def link mysqlType Type
+hi def link mysqlOperator Statement
+hi def link mysqlFlow Statement
+hi def link mysqlFunction Function
+
+
+let b:current_syntax = "mysql"
+
diff --git a/runtime/syntax/n1ql.vim b/runtime/syntax/n1ql.vim
new file mode 100644
index 0000000..bef65d8
--- /dev/null
+++ b/runtime/syntax/n1ql.vim
@@ -0,0 +1,434 @@
+" Vim syntax file
+" Language: N1QL / Couchbase Server
+" Maintainer: Eugene Ciurana <n1ql AT cime.net>
+" Version: 1.0
+" Source: https://github.com/pr3d4t0r/n1ql-vim-syntax
+"
+" License: Vim is Charityware. n1ql.vim syntax is Charityware.
+" (c) Copyright 2017 by Eugene Ciurana / pr3d4t0r. Licensed
+" under the standard VIM LICENSE - Vim command :help uganda.txt
+" for details.
+"
+" Questions, comments: <n1ql AT cime.net>
+" https://ciurana.eu/pgp, https://keybase.io/pr3d4t0r
+"
+" vim: set fileencoding=utf-8:
+
+
+if exists("b:current_syntax")
+ finish
+endif
+
+
+syn case ignore
+
+syn keyword n1qlSpecial DATASTORES
+syn keyword n1qlSpecial DUAL
+syn keyword n1qlSpecial FALSE
+syn keyword n1qlSpecial INDEXES
+syn keyword n1qlSpecial KEYSPACES
+syn keyword n1qlSpecial MISSING
+syn keyword n1qlSpecial NAMESPACES
+syn keyword n1qlSpecial NULL
+syn keyword n1qlSpecial TRUE
+
+
+"
+" *** keywords ***
+"
+syn keyword n1qlKeyword ALL
+syn keyword n1qlKeyword ANY
+syn keyword n1qlKeyword ASC
+syn keyword n1qlKeyword BEGIN
+syn keyword n1qlKeyword BETWEEN
+syn keyword n1qlKeyword BREAK
+syn keyword n1qlKeyword BUCKET
+syn keyword n1qlKeyword CALL
+syn keyword n1qlKeyword CASE
+syn keyword n1qlKeyword CAST
+syn keyword n1qlKeyword CLUSTER
+syn keyword n1qlKeyword COLLATE
+syn keyword n1qlKeyword COLLECTION
+syn keyword n1qlKeyword CONNECT
+syn keyword n1qlKeyword CONTINUE
+syn keyword n1qlKeyword CORRELATE
+syn keyword n1qlKeyword COVER
+syn keyword n1qlKeyword DATABASE
+syn keyword n1qlKeyword DATASET
+syn keyword n1qlKeyword DATASTORE
+syn keyword n1qlKeyword DECLARE
+syn keyword n1qlKeyword DECREMENT
+syn keyword n1qlKeyword DERIVED
+syn keyword n1qlKeyword DESC
+syn keyword n1qlKeyword DESCRIBE
+syn keyword n1qlKeyword DO
+syn keyword n1qlKeyword EACH
+syn keyword n1qlKeyword ELEMENT
+syn keyword n1qlKeyword ELSE
+syn keyword n1qlKeyword END
+syn keyword n1qlKeyword EVERY
+syn keyword n1qlKeyword EXCLUDE
+syn keyword n1qlKeyword EXISTS
+syn keyword n1qlKeyword FETCH
+syn keyword n1qlKeyword FIRST
+syn keyword n1qlKeyword FLATTEN
+syn keyword n1qlKeyword FOR
+syn keyword n1qlKeyword FORCE
+syn keyword n1qlKeyword FROM
+syn keyword n1qlKeyword FUNCTION
+syn keyword n1qlKeyword GROUP
+syn keyword n1qlKeyword GSI
+syn keyword n1qlKeyword HAVING
+syn keyword n1qlKeyword IF
+syn keyword n1qlKeyword IGNORE
+syn keyword n1qlKeyword INCLUDE
+syn keyword n1qlKeyword INCREMENT
+syn keyword n1qlKeyword INDEX
+syn keyword n1qlKeyword INITIAL
+syn keyword n1qlKeyword INLINE
+syn keyword n1qlKeyword INNER
+syn keyword n1qlKeyword INTO
+syn keyword n1qlKeyword KEY
+syn keyword n1qlKeyword KEYS
+syn keyword n1qlKeyword KEYSPACE
+syn keyword n1qlKeyword KNOWN
+syn keyword n1qlKeyword LAST
+syn keyword n1qlKeyword LET
+syn keyword n1qlKeyword LETTING
+syn keyword n1qlKeyword LIMIT
+syn keyword n1qlKeyword LOOP
+syn keyword n1qlKeyword LSM
+syn keyword n1qlKeyword MAP
+syn keyword n1qlKeyword MAPPING
+syn keyword n1qlKeyword MATCHED
+syn keyword n1qlKeyword MATERIALIZED
+syn keyword n1qlKeyword MERGE
+syn keyword n1qlKeyword NAMESPACE
+syn keyword n1qlKeyword NEST
+syn keyword n1qlKeyword OPTION
+syn keyword n1qlKeyword ORDER
+syn keyword n1qlKeyword OUTER
+syn keyword n1qlKeyword OVER
+syn keyword n1qlKeyword PARSE
+syn keyword n1qlKeyword PARTITION
+syn keyword n1qlKeyword PASSWORD
+syn keyword n1qlKeyword PATH
+syn keyword n1qlKeyword POOL
+syn keyword n1qlKeyword PRIMARY
+syn keyword n1qlKeyword PRIVATE
+syn keyword n1qlKeyword PRIVILEGE
+syn keyword n1qlKeyword PROCEDURE
+syn keyword n1qlKeyword PUBLIC
+syn keyword n1qlKeyword REALM
+syn keyword n1qlKeyword REDUCE
+syn keyword n1qlKeyword RETURN
+syn keyword n1qlKeyword RETURNING
+syn keyword n1qlKeyword ROLE
+syn keyword n1qlKeyword SATISFIES
+syn keyword n1qlKeyword SCHEMA
+syn keyword n1qlKeyword SELF
+syn keyword n1qlKeyword SEMI
+syn keyword n1qlKeyword SHOW
+syn keyword n1qlKeyword START
+syn keyword n1qlKeyword STATISTICS
+syn keyword n1qlKeyword SYSTEM
+syn keyword n1qlKeyword THEN
+syn keyword n1qlKeyword TRANSACTION
+syn keyword n1qlKeyword TRIGGER
+syn keyword n1qlKeyword UNDER
+syn keyword n1qlKeyword UNKNOWN
+syn keyword n1qlKeyword UNSET
+syn keyword n1qlKeyword USE
+syn keyword n1qlKeyword USER
+syn keyword n1qlKeyword USING
+syn keyword n1qlKeyword VALIDATE
+syn keyword n1qlKeyword VALUE
+syn keyword n1qlKeyword VALUED
+syn keyword n1qlKeyword VALUES
+syn keyword n1qlKeyword VIEW
+syn keyword n1qlKeyword WHEN
+syn keyword n1qlKeyword WHERE
+syn keyword n1qlKeyword WHILE
+syn keyword n1qlKeyword WITHIN
+syn keyword n1qlKeyword WORK
+
+
+"
+" *** functions ***
+"
+syn keyword n1qlOperator ABS
+syn keyword n1qlOperator ACOS
+syn keyword n1qlOperator ARRAY_AGG
+syn keyword n1qlOperator ARRAY_APPEND
+syn keyword n1qlOperator ARRAY_AVG
+syn keyword n1qlOperator ARRAY_CONCAT
+syn keyword n1qlOperator ARRAY_CONTAINS
+syn keyword n1qlOperator ARRAY_COUNT
+syn keyword n1qlOperator ARRAY_DISTINCT
+syn keyword n1qlOperator ARRAY_FLATTEN
+syn keyword n1qlOperator ARRAY_IFNULL
+syn keyword n1qlOperator ARRAY_INSERT
+syn keyword n1qlOperator ARRAY_INTERSECT
+syn keyword n1qlOperator ARRAY_LENGTH
+syn keyword n1qlOperator ARRAY_MAX
+syn keyword n1qlOperator ARRAY_MIN
+syn keyword n1qlOperator ARRAY_POSITION
+syn keyword n1qlOperator ARRAY_PREPEND
+syn keyword n1qlOperator ARRAY_PUT
+syn keyword n1qlOperator ARRAY_RANGE
+syn keyword n1qlOperator ARRAY_REMOVE
+syn keyword n1qlOperator ARRAY_REPEAT
+syn keyword n1qlOperator ARRAY_REPLACE
+syn keyword n1qlOperator ARRAY_REVERSE
+syn keyword n1qlOperator ARRAY_SORT
+syn keyword n1qlOperator ARRAY_START
+syn keyword n1qlOperator ARRAY_SUM
+syn keyword n1qlOperator ARRAY_SYMDIFF
+syn keyword n1qlOperator ARRAY_UNION
+syn keyword n1qlOperator ASIN
+syn keyword n1qlOperator ATAN
+syn keyword n1qlOperator ATAN2
+syn keyword n1qlOperator AVG
+syn keyword n1qlOperator BASE64
+syn keyword n1qlOperator BASE64_DECODE
+syn keyword n1qlOperator BASE64_ENCODE
+syn keyword n1qlOperator CEIL
+syn keyword n1qlOperator CLOCK_LOCAL
+syn keyword n1qlOperator CLOCK_STR
+syn keyword n1qlOperator CLOCK_TZ
+syn keyword n1qlOperator CLOCK_UTC
+syn keyword n1qlOperator CLOCL_MILLIS
+syn keyword n1qlOperator CONTAINS
+syn keyword n1qlOperator COS
+syn keyword n1qlOperator COUNT
+syn keyword n1qlOperator DATE_ADD_MILLIS
+syn keyword n1qlOperator DATE_ADD_STR
+syn keyword n1qlOperator DATE_DIFF_MILLIS
+syn keyword n1qlOperator DATE_DIFF_STR
+syn keyword n1qlOperator DATE_FORMAT_STR
+syn keyword n1qlOperator DATE_PART_MILLIS
+syn keyword n1qlOperator DATE_PART_STR
+syn keyword n1qlOperator DATE_RANGE_MILLIS
+syn keyword n1qlOperator DATE_RANGE_STR
+syn keyword n1qlOperator DATE_TRUC_STR
+syn keyword n1qlOperator DATE_TRUNC_MILLIS
+syn keyword n1qlOperator DECODE_JSON
+syn keyword n1qlOperator DEGREES
+syn keyword n1qlOperator DURATION_TO_STR
+syn keyword n1qlOperator E
+syn keyword n1qlOperator ENCODED_SIZE
+syn keyword n1qlOperator ENCODE_JSON
+syn keyword n1qlOperator EXP
+syn keyword n1qlOperator FLOOR
+syn keyword n1qlOperator GREATEST
+syn keyword n1qlOperator IFINF
+syn keyword n1qlOperator IFMISSING
+syn keyword n1qlOperator IFMISSINGORNULL
+syn keyword n1qlOperator IFNAN
+syn keyword n1qlOperator IFNANORINF
+syn keyword n1qlOperator IFNULL
+syn keyword n1qlOperator INITCAP
+syn keyword n1qlOperator ISARRAY
+syn keyword n1qlOperator ISATOM
+syn keyword n1qlOperator ISBOOLEAN
+syn keyword n1qlOperator ISNUMBER
+syn keyword n1qlOperator ISOBJECT
+syn keyword n1qlOperator ISSTRING
+syn keyword n1qlOperator LEAST
+syn keyword n1qlOperator LENGTH
+syn keyword n1qlOperator LN
+syn keyword n1qlOperator LOG
+syn keyword n1qlOperator LOWER
+syn keyword n1qlOperator LTRIM
+syn keyword n1qlOperator MAX
+syn keyword n1qlOperator META
+syn keyword n1qlOperator MILLIS
+syn keyword n1qlOperator MILLIS_TO_LOCAL
+syn keyword n1qlOperator MILLIS_TO_STR
+syn keyword n1qlOperator MILLIS_TO_TZ
+syn keyword n1qlOperator MILLIS_TO_UTC
+syn keyword n1qlOperator MILLIS_TO_ZONE_NAME
+syn keyword n1qlOperator MIN
+syn keyword n1qlOperator MISSINGIF
+syn keyword n1qlOperator NANIF
+syn keyword n1qlOperator NEGINFIF
+syn keyword n1qlOperator NOW_LOCAL
+syn keyword n1qlOperator NOW_MILLIS
+syn keyword n1qlOperator NOW_STR
+syn keyword n1qlOperator NOW_TZ
+syn keyword n1qlOperator NOW_UTC
+syn keyword n1qlOperator NULLIF
+syn keyword n1qlOperator OBJECT_ADD
+syn keyword n1qlOperator OBJECT_CONCAT
+syn keyword n1qlOperator OBJECT_INNER_PAIRS
+syn keyword n1qlOperator OBJECT_INNER_VALUES
+syn keyword n1qlOperator OBJECT_LENGTH
+syn keyword n1qlOperator OBJECT_NAMES
+syn keyword n1qlOperator OBJECT_PAIRS
+syn keyword n1qlOperator OBJECT_PUT
+syn keyword n1qlOperator OBJECT_REMOVE
+syn keyword n1qlOperator OBJECT_RENAME
+syn keyword n1qlOperator OBJECT_REPLACE
+syn keyword n1qlOperator OBJECT_UNWRAP
+syn keyword n1qlOperator OBJECT_VALUES
+syn keyword n1qlOperator PI
+syn keyword n1qlOperator POLY_LENGTH
+syn keyword n1qlOperator POSINIF
+syn keyword n1qlOperator POSITION
+syn keyword n1qlOperator POWER
+syn keyword n1qlOperator RADIANS
+syn keyword n1qlOperator RANDOM
+syn keyword n1qlOperator REGEXP_CONTAINS
+syn keyword n1qlOperator REGEXP_LIKE
+syn keyword n1qlOperator REGEXP_POSITION
+syn keyword n1qlOperator REGEXP_REPLACE
+syn keyword n1qlOperator REPEAT
+syn keyword n1qlOperator REPLACE
+syn keyword n1qlOperator REVERSE
+syn keyword n1qlOperator ROUND
+syn keyword n1qlOperator RTRIM
+syn keyword n1qlOperator SIGN
+syn keyword n1qlOperator SIN
+syn keyword n1qlOperator SPLIT
+syn keyword n1qlOperator SQRT
+syn keyword n1qlOperator STR_TO_DURATION
+syn keyword n1qlOperator STR_TO_MILLIS
+syn keyword n1qlOperator STR_TO_TZ
+syn keyword n1qlOperator STR_TO_UTC
+syn keyword n1qlOperator STR_TO_ZONE_NAME
+syn keyword n1qlOperator SUBSTR
+syn keyword n1qlOperator SUFFIXES
+syn keyword n1qlOperator SUM
+syn keyword n1qlOperator TAN
+syn keyword n1qlOperator TITLE
+syn keyword n1qlOperator TOARRAY
+syn keyword n1qlOperator TOATOM
+syn keyword n1qlOperator TOBOOLEAN
+syn keyword n1qlOperator TOKENS
+syn keyword n1qlOperator TONUMBER
+syn keyword n1qlOperator TOOBJECT
+syn keyword n1qlOperator TOSTRING
+syn keyword n1qlOperator TRIM
+syn keyword n1qlOperator TRUNC
+syn keyword n1qlOperator TYPE
+syn keyword n1qlOperator UPPER
+syn keyword n1qlOperator UUID
+syn keyword n1qlOperator WEEKDAY_MILLIS
+syn keyword n1qlOperator WEEKDAY_STR
+
+
+"
+" *** operators ***
+"
+syn keyword n1qlOperator AND
+syn keyword n1qlOperator AS
+syn keyword n1qlOperator BY
+syn keyword n1qlOperator DISTINCT
+syn keyword n1qlOperator EXCEPT
+syn keyword n1qlOperator ILIKE
+syn keyword n1qlOperator IN
+syn keyword n1qlOperator INTERSECT
+syn keyword n1qlOperator IS
+syn keyword n1qlOperator JOIN
+syn keyword n1qlOperator LEFT
+syn keyword n1qlOperator LIKE
+syn keyword n1qlOperator MINUS
+syn keyword n1qlOperator NEST
+syn keyword n1qlOperator NESTING
+syn keyword n1qlOperator NOT
+syn keyword n1qlOperator OFFSET
+syn keyword n1qlOperator ON
+syn keyword n1qlOperator OR
+syn keyword n1qlOperator OUT
+syn keyword n1qlOperator RIGHT
+syn keyword n1qlOperator SOME
+syn keyword n1qlOperator TO
+syn keyword n1qlOperator UNION
+syn keyword n1qlOperator UNIQUE
+syn keyword n1qlOperator UNNEST
+syn keyword n1qlOperator VIA
+syn keyword n1qlOperator WITH
+syn keyword n1qlOperator XOR
+
+
+"
+" *** statements ***
+"
+syn keyword n1qlStatement ALTER
+syn keyword n1qlStatement ANALYZE
+syn keyword n1qlStatement BUILD
+syn keyword n1qlStatement COMMIT
+syn keyword n1qlStatement CREATE
+syn keyword n1qlStatement DELETE
+syn keyword n1qlStatement DROP
+syn keyword n1qlStatement EXECUTE
+syn keyword n1qlStatement EXPLAIN
+syn keyword n1qlStatement GRANT
+syn keyword n1qlStatement INFER
+syn keyword n1qlStatement INSERT
+syn keyword n1qlStatement MERGE
+syn keyword n1qlStatement PREPARE
+syn keyword n1qlStatement RENAME
+syn keyword n1qlStatement REVOKE
+syn keyword n1qlStatement ROLLBACK
+syn keyword n1qlStatement SELECT
+syn keyword n1qlStatement SET
+syn keyword n1qlStatement TRUNCATE
+syn keyword n1qlStatement UPDATE
+syn keyword n1qlStatement UPSERT
+
+
+"
+" *** types ***
+"
+syn keyword n1qlType ARRAY
+syn keyword n1qlType BINARY
+syn keyword n1qlType BOOLEAN
+syn keyword n1qlType NUMBER
+syn keyword n1qlType OBJECT
+syn keyword n1qlType RAW
+syn keyword n1qlType STRING
+
+
+"
+" *** strings and characters ***
+"
+syn region n1qlString start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn region n1qlString start=+'+ skip=+\\\\\|\\'+ end=+'+
+syn region n1qlBucketSpec start=+`+ skip=+\\\\\|\\'+ end=+`+
+
+
+"
+" *** numbers ***
+"
+syn match n1qlNumber "-\=\<\d*\.\=[0-9_]\>"
+
+
+"
+" *** comments ***
+"
+syn region n1qlComment start="/\*" end="\*/" contains=n1qlTODO
+syn match n1qlComment "--.*$" contains=n1qlTODO
+syn sync ccomment n1qlComment
+
+
+"
+" *** TODO ***
+"
+syn keyword n1qlTODO contained TODO FIXME XXX DEBUG NOTE
+
+
+"
+" *** enable ***
+"
+hi def link n1qlBucketSpec Underlined
+hi def link n1qlComment Comment
+hi def link n1qlKeyword Macro
+hi def link n1qlOperator Function
+hi def link n1qlSpecial Special
+hi def link n1qlStatement Statement
+hi def link n1qlString String
+hi def link n1qlTODO Todo
+hi def link n1qlType Type
+
+let b:current_syntax = "n1ql"
diff --git a/runtime/syntax/named.vim b/runtime/syntax/named.vim
new file mode 100644
index 0000000..292d1b2
--- /dev/null
+++ b/runtime/syntax/named.vim
@@ -0,0 +1,229 @@
+" Vim syntax file
+" Language: BIND configuration file
+" Maintainer: Nick Hibma <nick@van-laarhoven.org>
+" Last Change: 2019 Oct 08
+" Filenames: named.conf, rndc.conf
+" Location: http://www.van-laarhoven.org/vim/syntax/named.vim
+"
+" Previously maintained by glory hump <rnd@web-drive.ru> and updated by Marcin
+" Dalecki.
+"
+" This file could do with a lot of improvements, so comments are welcome.
+" Please submit the named.conf (segment) with any comments.
+"
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+setlocal iskeyword=.,-,48-58,A-Z,a-z,_
+
+syn sync match namedSync grouphere NONE "^(zone|controls|acl|key)"
+
+let s:save_cpo = &cpo
+set cpo-=C
+
+" BIND configuration file
+
+syn match namedComment "//.*"
+syn match namedComment "#.*"
+syn region namedComment start="/\*" end="\*/"
+syn region namedString start=/"/ end=/"/ contained
+" --- omitted trailing semicolon
+syn match namedError /[^;{#]$/
+
+" --- top-level keywords
+
+syn keyword namedInclude include nextgroup=namedString skipwhite
+syn keyword namedKeyword acl key nextgroup=namedIntIdent skipwhite
+syn keyword namedKeyword server nextgroup=namedIdentifier skipwhite
+syn keyword namedKeyword controls nextgroup=namedSection skipwhite
+syn keyword namedKeyword trusted-keys nextgroup=namedIntSection skipwhite
+syn keyword namedKeyword logging nextgroup=namedLogSection skipwhite
+syn keyword namedKeyword options nextgroup=namedOptSection skipwhite
+syn keyword namedKeyword zone nextgroup=namedZoneString skipwhite
+
+" --- Identifier: name of following { ... } Section
+syn match namedIdentifier contained /\k\+/ nextgroup=namedSection skipwhite
+" --- IntIdent: name of following IntSection
+syn match namedIntIdent contained /"\=\k\+"\=/ nextgroup=namedIntSection skipwhite
+
+" --- Section: { ... } clause
+syn region namedSection contained start=+{+ end=+};+ contains=namedSection,namedIntKeyword
+
+" --- IntSection: section that does not contain other sections
+syn region namedIntSection contained start=+{+ end=+}+ contains=namedIntKeyword,namedError,namedComment
+
+" --- IntKeyword: keywords contained within `{ ... }' sections only
+" + these keywords are contained within `key' and `acl' sections
+syn keyword namedIntKeyword contained key algorithm
+syn keyword namedIntKeyword contained secret nextgroup=namedString skipwhite
+
+" + these keywords are contained within `server' section only
+syn keyword namedIntKeyword contained bogus support-ixfr nextgroup=namedBool,namedNotBool skipwhite
+syn keyword namedIntKeyword contained transfers nextgroup=namedNumber,namedNotNumber skipwhite
+syn keyword namedIntKeyword contained transfer-format
+syn keyword namedIntKeyword contained keys nextgroup=namedIntSection skipwhite
+
+" + these keywords are contained within `controls' section only
+syn keyword namedIntKeyword contained inet nextgroup=namedIPaddr,namedIPerror skipwhite
+syn keyword namedIntKeyword contained unix nextgroup=namedString skipwhite
+syn keyword namedIntKeyword contained port perm owner group nextgroup=namedNumber,namedNotNumber skipwhite
+syn keyword namedIntKeyword contained allow nextgroup=namedIntSection skipwhite
+
+" + these keywords are contained within `update-policy' section only
+syn keyword namedIntKeyword contained grant nextgroup=namedString skipwhite
+syn keyword namedIntKeyword contained name self subdomain wildcard nextgroup=namedString skipwhite
+syn keyword namedIntKeyword TXT A PTR NS SOA A6 CNAME MX ANY skipwhite
+
+" --- options
+syn region namedOptSection contained start=+{+ end=+};+ contains=namedOption,namedCNOption,namedComment,namedParenError
+
+syn keyword namedOption contained version directory
+\ nextgroup=namedString skipwhite
+syn keyword namedOption contained named-xfer dump-file pid-file
+\ nextgroup=namedString skipwhite
+syn keyword namedOption contained mem-statistics-file statistics-file
+\ nextgroup=namedString skipwhite
+syn keyword namedOption contained auth-nxdomain deallocate-on-exit
+\ nextgroup=namedBool,namedNotBool skipwhite
+syn keyword namedOption contained dialup fake-iquery fetch-glue
+\ nextgroup=namedBool,namedNotBool skipwhite
+syn keyword namedOption contained has-old-clients host-statistics
+\ nextgroup=namedBool,namedNotBool skipwhite
+syn keyword namedOption contained maintain-ixfr-base multiple-cnames
+\ nextgroup=namedBool,namedNotBool skipwhite
+syn keyword namedOption contained notify recursion rfc2308-type1
+\ nextgroup=namedBool,namedNotBool skipwhite
+syn keyword namedOption contained use-id-pool treat-cr-as-space
+\ nextgroup=namedBool,namedNotBool skipwhite
+syn keyword namedOption contained also-notify forwarders
+\ nextgroup=namedIPlist skipwhite
+syn keyword namedOption contained forward check-names
+syn keyword namedOption contained allow-query allow-transfer allow-recursion
+\ nextgroup=namedAML skipwhite
+syn keyword namedOption contained blackhole listen-on
+\ nextgroup=namedIntSection skipwhite
+syn keyword namedOption contained lame-ttl max-transfer-time-in
+\ nextgroup=namedNumber,namedNotNumber skipwhite
+syn keyword namedOption contained max-ncache-ttl min-roots
+\ nextgroup=namedNumber,namedNotNumber skipwhite
+syn keyword namedOption contained serial-queries transfers-in
+\ nextgroup=namedNumber,namedNotNumber skipwhite
+syn keyword namedOption contained transfers-out transfers-per-ns
+syn keyword namedOption contained transfer-format
+syn keyword namedOption contained transfer-source
+\ nextgroup=namedIPaddr,namedIPerror skipwhite
+syn keyword namedOption contained max-ixfr-log-size
+\ nextgroup=namedNumber,namedNotNumber skipwhite
+syn keyword namedOption contained coresize datasize files stacksize
+syn keyword namedOption contained cleaning-interval interface-interval statistics-interval heartbeat-interval
+\ nextgroup=namedNumber,namedNotNumber skipwhite
+syn keyword namedOption contained topology sortlist rrset-order
+\ nextgroup=namedIntSection skipwhite
+
+syn match namedOption contained /\<query-source\s\+.*;/he=s+12 contains=namedQSKeywords
+syn keyword namedQSKeywords contained address port
+syn match namedCNOption contained /\<check-names\s\+.*;/he=s+11 contains=namedCNKeywords
+syn keyword namedCNKeywords contained fail warn ignore master slave response
+
+" --- logging facilities
+syn region namedLogSection contained start=+{+ end=+};+ contains=namedLogOption
+syn keyword namedLogOption contained channel nextgroup=namedIntIdent skipwhite
+syn keyword namedLogOption contained category nextgroup=namedIntIdent skipwhite
+syn keyword namedIntKeyword contained syslog null versions size severity
+syn keyword namedIntKeyword contained file nextgroup=namedString skipwhite
+syn keyword namedIntKeyword contained print-category print-severity print-time nextgroup=namedBool,namedNotBool skipwhite
+
+" --- zone section
+syn region namedZoneString contained oneline start=+"+ end=+"+ skipwhite
+\ contains=namedDomain,namedIllegalDom
+\ nextgroup=namedZoneClass,namedZoneSection
+syn keyword namedZoneClass contained in hs hesiod chaos
+\ IN HS HESIOD CHAOS
+\ nextgroup=namedZoneSection skipwhite
+
+syn region namedZoneSection contained start=+{+ end=+};+ contains=namedZoneOpt,namedCNOption,namedComment,namedMasters,namedParenError
+syn keyword namedZoneOpt contained file ixfr-base
+\ nextgroup=namedString skipwhite
+syn keyword namedZoneOpt contained notify dialup
+\ nextgroup=namedBool,namedNotBool skipwhite
+syn keyword namedZoneOpt contained pubkey forward
+syn keyword namedZoneOpt contained max-transfer-time-in
+\ nextgroup=namedNumber,namedNotNumber skipwhite
+syn keyword namedZoneOpt contained type nextgroup=namedZoneType skipwhite
+syn keyword namedZoneType contained master slave stub forward hint
+
+syn keyword namedZoneOpt contained masters forwarders
+\ nextgroup=namedIPlist skipwhite
+syn region namedIPlist contained start=+{+ end=+};+ contains=namedIPaddr,namedIPerror,namedParenError,namedComment
+syn keyword namedZoneOpt contained allow-update allow-query allow-transfer
+\ nextgroup=namedAML skipwhite
+syn keyword namedZoneOpt contained update-policy
+\ nextgroup=namedIntSection skipwhite
+
+" --- boolean parameter
+syn match namedNotBool contained "[^ ;]\+"
+syn keyword namedBool contained yes no true false 1 0
+
+" --- number parameter
+syn match namedNotNumber contained "[^ 0-9;]\+"
+syn match namedNumber contained "\d\+"
+
+" --- address match list
+syn region namedAML contained start=+{+ end=+};+ contains=namedParenError,namedComment,namedString
+
+" --- IPs & Domains
+syn match namedIPaddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{3};/he=e-1
+syn match namedDomain contained /\<[0-9A-Za-z][-0-9A-Za-z.]\+\>/ nextgroup=namedSpareDot
+syn match namedDomain contained /"\."/ms=s+1,me=e-1
+syn match namedSpareDot contained /\./
+
+" --- syntax errors
+syn match namedIllegalDom contained /"\S*[^-A-Za-z0-9.[:space:]]\S*"/ms=s+1,me=e-1
+syn match namedIPerror contained /\<\S*[^0-9.[:space:];]\S*/
+syn match namedEParenError contained +{+
+syn match namedParenError +}\([^;]\|$\)+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link namedComment Comment
+hi def link namedInclude Include
+hi def link namedKeyword Keyword
+hi def link namedIntKeyword Keyword
+hi def link namedIdentifier Identifier
+hi def link namedIntIdent Identifier
+
+hi def link namedString String
+hi def link namedBool Type
+hi def link namedNotBool Error
+hi def link namedNumber Number
+hi def link namedNotNumber Error
+
+hi def link namedOption namedKeyword
+hi def link namedLogOption namedKeyword
+hi def link namedCNOption namedKeyword
+hi def link namedQSKeywords Type
+hi def link namedCNKeywords Type
+hi def link namedLogCategory Type
+hi def link namedIPaddr Number
+hi def link namedDomain Identifier
+hi def link namedZoneOpt namedKeyword
+hi def link namedZoneType Type
+hi def link namedParenError Error
+hi def link namedEParenError Error
+hi def link namedIllegalDom Error
+hi def link namedIPerror Error
+hi def link namedSpareDot Error
+hi def link namedError Error
+
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
+
+let b:current_syntax = "named"
+
+" vim: ts=17
diff --git a/runtime/syntax/nanorc.vim b/runtime/syntax/nanorc.vim
new file mode 100644
index 0000000..606ac7f
--- /dev/null
+++ b/runtime/syntax/nanorc.vim
@@ -0,0 +1,243 @@
+" Vim syntax file
+" Language: nanorc(5) - GNU nano configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword nanorcTodo contained TODO FIXME XXX NOTE
+
+syn region nanorcComment display oneline start='^\s*#' end='$'
+ \ contains=nanorcTodo,@Spell
+
+syn match nanorcBegin display '^'
+ \ nextgroup=nanorcKeyword,nanorcComment
+ \ skipwhite
+
+syn keyword nanorcKeyword contained set unset
+ \ nextgroup=nanorcBoolOption,
+ \ nanorcStringOption,nanorcNumberOption
+ \ skipwhite
+
+syn keyword nanorcKeyword contained syntax
+ \ nextgroup=nanorcSynGroupName skipwhite
+
+syn keyword nanorcKeyword contained color
+ \ nextgroup=@nanorcFGColor skipwhite
+
+syn keyword nanorcBoolOption contained autoindent backup const cut
+ \ historylog morespace mouse multibuffer
+ \ noconvert nofollow nohelp nowrap preserve
+ \ rebinddelete regexp smarthome smooth suspend
+ \ tempfile view
+
+syn keyword nanorcStringOption contained backupdir brackets operatingdir
+ \ punct quotestr speller whitespace
+ \ nextgroup=nanorcString skipwhite
+
+syn keyword nanorcNumberOption contained fill tabsize
+ \ nextgroup=nanorcNumber skipwhite
+
+syn region nanorcSynGroupName contained display oneline start=+"+
+ \ end=+"\ze\%([[:blank:]]\|$\)+
+ \ nextgroup=nanorcRegexes skipwhite
+
+syn match nanorcString contained display '".*"'
+
+syn region nanorcRegexes contained display oneline start=+"+
+ \ end=+"\ze\%([[:blank:]]\|$\)+
+ \ nextgroup=nanorcRegexes skipwhite
+
+syn match nanorcNumber contained display '[+-]\=\<\d\+\>'
+
+syn cluster nanorcFGColor contains=nanorcFGWhite,nanorcFGBlack,
+ \ nanorcFGRed,nanorcFGBlue,nanorcFGGreen,
+ \ nanorcFGYellow,nanorcFGMagenta,nanorcFGCyan,
+ \ nanorcFGBWhite,nanorcFGBBlack,nanorcFGBRed,
+ \ nanorcFGBBlue,nanorcFGBGreen,nanorcFGBYellow,
+ \ nanorcFGBMagenta,nanorcFGBCyan
+
+syn keyword nanorcFGWhite contained white
+ \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBlack contained black
+ \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGRed contained red
+ \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBlue contained blue
+ \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGGreen contained green
+ \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGYellow contained yellow
+ \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGMagenta contained magenta
+ \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGCyan contained cyan
+ \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBWhite contained brightwhite
+ \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBBlack contained brightblack
+ \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBRed contained brightred
+ \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBBlue contained brightblue
+ \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBGreen contained brightgreen
+ \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBYellow contained brightyellow
+ \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBMagenta contained brightmagenta
+ \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBCyan contained brightcyan
+ \ nextgroup=@nanorcFGSpec skipwhite
+
+syn cluster nanorcBGColor contains=nanorcBGWhite,nanorcBGBlack,
+ \ nanorcBGRed,nanorcBGBlue,nanorcBGGreen,
+ \ nanorcBGYellow,nanorcBGMagenta,nanorcBGCyan,
+ \ nanorcBGBWhite,nanorcBGBBlack,nanorcBGBRed,
+ \ nanorcBGBBlue,nanorcBGBGreen,nanorcBGBYellow,
+ \ nanorcBGBMagenta,nanorcBGBCyan
+
+syn keyword nanorcBGWhite contained white
+ \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBlack contained black
+ \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGRed contained red
+ \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBlue contained blue
+ \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGGreen contained green
+ \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGYellow contained yellow
+ \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGMagenta contained magenta
+ \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGCyan contained cyan
+ \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBWhite contained brightwhite
+ \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBBlack contained brightblack
+ \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBRed contained brightred
+ \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBBlue contained brightblue
+ \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBGreen contained brightgreen
+ \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBYellow contained brightyellow
+ \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBMagenta contained brightmagenta
+ \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBCyan contained brightcyan
+ \ nextgroup=@nanorcBGSpec skipwhite
+
+syn match nanorcBGColorSep contained ',' nextgroup=@nanorcBGColor
+
+syn cluster nanorcFGSpec contains=nanorcBGColorSep,nanorcRegexes,
+ \ nanorcStartRegion
+
+syn cluster nanorcBGSpec contains=nanorcRegexes,nanorcStartRegion
+
+syn keyword nanorcStartRegion contained start nextgroup=nanorcStartRegionEq
+
+syn match nanorcStartRegionEq contained '=' nextgroup=nanorcRegion
+
+syn region nanorcRegion contained display oneline start=+"+
+ \ end=+"\ze\%([[:blank:]]\|$\)+
+ \ nextgroup=nanorcEndRegion skipwhite
+
+syn keyword nanorcEndRegion contained end nextgroup=nanorcStartRegionEq
+
+syn match nanorcEndRegionEq contained '=' nextgroup=nanorcRegex
+
+syn region nanorcRegex contained display oneline start=+"+
+ \ end=+"\ze\%([[:blank:]]\|$\)+
+
+hi def link nanorcTodo Todo
+hi def link nanorcComment Comment
+hi def link nanorcKeyword Keyword
+hi def link nanorcBoolOption Identifier
+hi def link nanorcStringOption Identifier
+hi def link nanorcNumberOption Identifier
+hi def link nanorcSynGroupName String
+hi def link nanorcString String
+hi def link nanorcRegexes nanorcString
+hi def link nanorcNumber Number
+hi def nanorcFGWhite ctermfg=Gray guifg=Gray
+hi def nanorcFGBlack ctermfg=Black guifg=Black
+hi def nanorcFGRed ctermfg=DarkRed guifg=DarkRed
+hi def nanorcFGBlue ctermfg=DarkBlue guifg=DarkBlue
+hi def nanorcFGGreen ctermfg=DarkGreen guifg=DarkGreen
+hi def nanorcFGYellow ctermfg=Brown guifg=Brown
+hi def nanorcFGMagenta ctermfg=DarkMagenta guifg=DarkMagenta
+hi def nanorcFGCyan ctermfg=DarkCyan guifg=DarkCyan
+hi def nanorcFGBWhite ctermfg=White guifg=White
+hi def nanorcFGBBlack ctermfg=DarkGray guifg=DarkGray
+hi def nanorcFGBRed ctermfg=Red guifg=Red
+hi def nanorcFGBBlue ctermfg=Blue guifg=Blue
+hi def nanorcFGBGreen ctermfg=Green guifg=Green
+hi def nanorcFGBYellow ctermfg=Yellow guifg=Yellow
+hi def nanorcFGBMagenta ctermfg=Magenta guifg=Magenta
+hi def nanorcFGBCyan ctermfg=Cyan guifg=Cyan
+hi def link nanorcBGColorSep Normal
+hi def nanorcBGWhite ctermbg=Gray guibg=Gray
+hi def nanorcBGBlack ctermbg=Black guibg=Black
+hi def nanorcBGRed ctermbg=DarkRed guibg=DarkRed
+hi def nanorcBGBlue ctermbg=DarkBlue guibg=DarkBlue
+hi def nanorcBGGreen ctermbg=DarkGreen guibg=DarkGreen
+hi def nanorcBGYellow ctermbg=Brown guibg=Brown
+hi def nanorcBGMagenta ctermbg=DarkMagenta guibg=DarkMagenta
+hi def nanorcBGCyan ctermbg=DarkCyan guibg=DarkCyan
+hi def nanorcBGBWhite ctermbg=White guibg=White
+hi def nanorcBGBBlack ctermbg=DarkGray guibg=DarkGray
+hi def nanorcBGBRed ctermbg=Red guibg=Red
+hi def nanorcBGBBlue ctermbg=Blue guibg=Blue
+hi def nanorcBGBGreen ctermbg=Green guibg=Green
+hi def nanorcBGBYellow ctermbg=Yellow guibg=Yellow
+hi def nanorcBGBMagenta ctermbg=Magenta guibg=Magenta
+hi def nanorcBGBCyan ctermbg=Cyan guibg=Cyan
+hi def link nanorcStartRegion Type
+hi def link nanorcStartRegionEq Operator
+hi def link nanorcRegion nanorcString
+hi def link nanorcEndRegion Type
+hi def link nanorcEndRegionEq Operator
+hi def link nanorcRegex nanoRegexes
+
+let b:current_syntax = "nanorc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/nasm.vim b/runtime/syntax/nasm.vim
new file mode 100644
index 0000000..d763033
--- /dev/null
+++ b/runtime/syntax/nasm.vim
@@ -0,0 +1,527 @@
+" Vim syntax file
+" Language: NASM - The Netwide Assembler (v0.98)
+" Maintainer: Andrii Sokolov <andriy145@gmail.com>
+" Original Author: Manuel M.H. Stol <Manuel.Stol@allieddata.nl>
+" Former Maintainer: Manuel M.H. Stol <Manuel.Stol@allieddata.nl>
+" Contributors: Leonard König <leonard.r.koenig@gmail.com> (C string highlighting), Peter Stanhope <dev.rptr@gmail.com> (Add missing 64-bit mode registers)
+" Last Change: 2017 Jan 23
+" NASM Home: http://www.nasm.us/
+
+
+
+" Setup Syntax:
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+" Assembler syntax is case insensetive
+syn case ignore
+
+
+
+" Vim search and movement commands on identifers
+" Comments at start of a line inside which to skip search for indentifiers
+setlocal comments=:;
+" Identifier Keyword characters (defines \k)
+setlocal iskeyword=@,48-57,#,$,.,?,@-@,_,~
+
+
+" Comments:
+syn region nasmComment start=";" keepend end="$" contains=@nasmGrpInComments
+syn region nasmSpecialComment start=";\*\*\*" keepend end="$"
+syn keyword nasmInCommentTodo contained TODO FIXME XXX[XXXXX]
+syn cluster nasmGrpInComments contains=nasmInCommentTodo
+syn cluster nasmGrpComments contains=@nasmGrpInComments,nasmComment,nasmSpecialComment
+
+
+
+" Label Identifiers:
+" in NASM: 'Everything is a Label'
+" Definition Label = label defined by %[i]define or %[i]assign
+" Identifier Label = label defined as first non-keyword on a line or %[i]macro
+syn match nasmLabelError "$\=\(\d\+\K\|[#.@]\|\$\$\k\)\k*\>"
+syn match nasmLabel "\<\(\h\|[?@]\)\k*\>"
+syn match nasmLabel "[\$\~]\(\h\|[?@]\)\k*\>"lc=1
+" Labels starting with one or two '.' are special
+syn match nasmLocalLabel "\<\.\(\w\|[#$?@~]\)\k*\>"
+syn match nasmLocalLabel "\<\$\.\(\w\|[#$?@~]\)\k*\>"ms=s+1
+if !exists("nasm_no_warn")
+ syn match nasmLabelWarn "\<\~\=\$\=[_.][_.\~]*\>"
+endif
+if exists("nasm_loose_syntax")
+ syn match nasmSpecialLabel "\<\.\.@\k\+\>"
+ syn match nasmSpecialLabel "\<\$\.\.@\k\+\>"ms=s+1
+ if !exists("nasm_no_warn")
+ syn match nasmLabelWarn "\<\$\=\.\.@\(\d\|[#$\.~]\)\k*\>"
+ endif
+ " disallow use of nasm internal label format
+ syn match nasmLabelError "\<\$\=\.\.@\d\+\.\k*\>"
+else
+ syn match nasmSpecialLabel "\<\.\.@\(\h\|[?@]\)\k*\>"
+ syn match nasmSpecialLabel "\<\$\.\.@\(\h\|[?@]\)\k*\>"ms=s+1
+endif
+" Labels can be dereferenced with '$' to destinguish them from reserved words
+syn match nasmLabelError "\<\$\K\k*\s*:"
+syn match nasmLabelError "^\s*\$\K\k*\>"
+syn match nasmLabelError "\<\~\s*\(\k*\s*:\|\$\=\.\k*\)"
+
+
+
+" Constants:
+syn match nasmStringError +["'`]+
+" NASM is case sensitive here: eg. u-prefix allows for 4-digit, U-prefix for
+" 8-digit Unicode characters
+syn case match
+" one-char escape-sequences
+syn match nasmCStringEscape display contained "\\[’"‘\\\?abtnvfre]"
+" hex and octal numbers
+syn match nasmCStringEscape display contained "\\\(x\x\{2}\|\o\{1,3}\)"
+" Unicode characters
+syn match nasmCStringEscape display contained "\\\(u\x\{4}\|U\x\{8}\)"
+" ISO C99 format strings (copied from cFormat in runtime/syntax/c.vim)
+syn match nasmCStringFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjzt]\|ll\|hh\)\=\([aAbdiuoxXDOUfFeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
+syn match nasmCStringFormat display "%%" contained
+syn match nasmString +\("[^"]\{-}"\|'[^']\{-}'\)+
+" Highlight C escape- and format-sequences within ``-strings
+syn match nasmCString +\(`[^`]\{-}`\)+ contains=nasmCStringEscape,nasmCStringFormat extend
+syn case ignore
+syn match nasmBinNumber "\<[0-1]\+b\>"
+syn match nasmBinNumber "\<\~[0-1]\+b\>"lc=1
+syn match nasmOctNumber "\<\o\+q\>"
+syn match nasmOctNumber "\<\~\o\+q\>"lc=1
+syn match nasmDecNumber "\<\d\+\>"
+syn match nasmDecNumber "\<\~\d\+\>"lc=1
+syn match nasmHexNumber "\<\(\d\x*h\|0x\x\+\|\$\d\x*\)\>"
+syn match nasmHexNumber "\<\~\(\d\x*h\|0x\x\+\|\$\d\x*\)\>"lc=1
+syn match nasmFltNumber "\<\d\+\.\d*\(e[+-]\=\d\+\)\=\>"
+syn keyword nasmFltNumber Inf Infinity Indefinite NaN SNaN QNaN
+syn match nasmNumberError "\<\~\s*\d\+\.\d*\(e[+-]\=\d\+\)\=\>"
+
+
+" Netwide Assembler Storage Directives:
+" Storage types
+syn keyword nasmTypeError DF EXTRN FWORD RESF TBYTE
+syn keyword nasmType FAR NEAR SHORT
+syn keyword nasmType BYTE WORD DWORD QWORD DQWORD HWORD DHWORD TWORD
+syn keyword nasmType CDECL FASTCALL NONE PASCAL STDCALL
+syn keyword nasmStorage DB DW DD DQ DDQ DT
+syn keyword nasmStorage RESB RESW RESD RESQ RESDQ REST
+syn keyword nasmStorage EXTERN GLOBAL COMMON
+" Structured storage types
+syn match nasmTypeError "\<\(AT\|I\=\(END\)\=\(STRUCT\=\|UNION\)\|I\=END\)\>"
+syn match nasmStructureLabel contained "\<\(AT\|I\=\(END\)\=\(STRUCT\=\|UNION\)\|I\=END\)\>"
+" structures cannot be nested (yet) -> use: 'keepend' and 're='
+syn cluster nasmGrpCntnStruc contains=ALLBUT,@nasmGrpInComments,nasmMacroDef,@nasmGrpInMacros,@nasmGrpInPreCondits,nasmStructureDef,@nasmGrpInStrucs
+syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="^\s*STRUCT\>"hs=e-5 end="^\s*ENDSTRUCT\>"re=e-9 contains=@nasmGrpCntnStruc
+syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="^\s*STRUC\>"hs=e-4 end="^\s*ENDSTRUC\>"re=e-8 contains=@nasmGrpCntnStruc
+syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="\<ISTRUCT\=\>" end="\<IEND\(STRUCT\=\)\=\>" contains=@nasmGrpCntnStruc,nasmInStructure
+" union types are not part of nasm (yet)
+"syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="^\s*UNION\>"hs=e-4 end="^\s*ENDUNION\>"re=e-8 contains=@nasmGrpCntnStruc
+"syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="\<IUNION\>" end="\<IEND\(UNION\)\=\>" contains=@nasmGrpCntnStruc,nasmInStructure
+syn match nasmInStructure contained "^\s*AT\>"hs=e-1
+syn cluster nasmGrpInStrucs contains=nasmStructure,nasmInStructure,nasmStructureLabel
+
+
+
+" PreProcessor Instructions:
+" NAsm PreProcs start with %, but % is not a character
+syn match nasmPreProcError "%{\=\(%\=\k\+\|%%\+\k*\|[+-]\=\d\+\)}\="
+if exists("nasm_loose_syntax")
+ syn cluster nasmGrpNxtCtx contains=nasmStructureLabel,nasmLabel,nasmLocalLabel,nasmSpecialLabel,nasmLabelError,nasmPreProcError
+else
+ syn cluster nasmGrpNxtCtx contains=nasmStructureLabel,nasmLabel,nasmLabelError,nasmPreProcError
+endif
+
+" Multi-line macro
+syn cluster nasmGrpCntnMacro contains=ALLBUT,@nasmGrpInComments,nasmStructureDef,@nasmGrpInStrucs,nasmMacroDef,@nasmGrpPreCondits,nasmMemReference,nasmInMacPreCondit,nasmInMacStrucDef
+syn region nasmMacroDef matchgroup=nasmMacro keepend start="^\s*%macro\>"hs=e-5 start="^\s*%imacro\>"hs=e-6 end="^\s*%endmacro\>"re=e-9 contains=@nasmGrpCntnMacro,nasmInMacStrucDef
+if exists("nasm_loose_syntax")
+ syn match nasmInMacLabel contained "%\(%\k\+\>\|{%\k\+}\)"
+ syn match nasmInMacLabel contained "%\($\+\(\w\|[#\.?@~]\)\k*\>\|{$\+\(\w\|[#\.?@~]\)\k*}\)"
+ syn match nasmInMacPreProc contained "^\s*%\(push\|repl\)\>"hs=e-4 skipwhite nextgroup=nasmStructureLabel,nasmLabel,nasmInMacParam,nasmLocalLabel,nasmSpecialLabel,nasmLabelError,nasmPreProcError
+ if !exists("nasm_no_warn")
+ syn match nasmInMacLblWarn contained "%\(%[$\.]\k*\>\|{%[$\.]\k*}\)"
+ syn match nasmInMacLblWarn contained "%\($\+\(\d\|[#\.@~]\)\k*\|{\$\+\(\d\|[#\.@~]\)\k*}\)"
+ hi link nasmInMacCatLabel nasmInMacLblWarn
+ else
+ hi link nasmInMacCatLabel nasmInMacLabel
+ endif
+else
+ syn match nasmInMacLabel contained "%\(%\(\w\|[#?@~]\)\k*\>\|{%\(\w\|[#?@~]\)\k*}\)"
+ syn match nasmInMacLabel contained "%\($\+\(\h\|[?@]\)\k*\>\|{$\+\(\h\|[?@]\)\k*}\)"
+ hi link nasmInMacCatLabel nasmLabelError
+endif
+syn match nasmInMacCatLabel contained "\d\K\k*"lc=1
+syn match nasmInMacLabel contained "\d}\k\+"lc=2
+if !exists("nasm_no_warn")
+ syn match nasmInMacLblWarn contained "%\(\($\+\|%\)[_~][._~]*\>\|{\($\+\|%\)[_~][._~]*}\)"
+endif
+syn match nasmInMacPreProc contained "^\s*%pop\>"hs=e-3
+syn match nasmInMacPreProc contained "^\s*%\(push\|repl\)\>"hs=e-4 skipwhite nextgroup=@nasmGrpNxtCtx
+" structures cannot be nested (yet) -> use: 'keepend' and 're='
+syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="^\s*STRUCT\>"hs=e-5 end="^\s*ENDSTRUCT\>"re=e-9 contains=@nasmGrpCntnMacro
+syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="^\s*STRUC\>"hs=e-4 end="^\s*ENDSTRUC\>"re=e-8 contains=@nasmGrpCntnMacro
+syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="\<ISTRUCT\=\>" end="\<IEND\(STRUCT\=\)\=\>" contains=@nasmGrpCntnMacro,nasmInStructure
+" union types are not part of nasm (yet)
+"syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="^\s*UNION\>"hs=e-4 end="^\s*ENDUNION\>"re=e-8 contains=@nasmGrpCntnMacro
+"syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="\<IUNION\>" end="\<IEND\(UNION\)\=\>" contains=@nasmGrpCntnMacro,nasmInStructure
+syn region nasmInMacPreConDef contained transparent matchgroup=nasmInMacPreCondit start="^\s*%ifnidni\>"hs=e-7 start="^\s*%if\(idni\|n\(ctx\|def\|idn\|num\|str\)\)\>"hs=e-6 start="^\s*%if\(ctx\|def\|idn\|nid\|num\|str\)\>"hs=e-5 start="^\s*%ifid\>"hs=e-4 start="^\s*%if\>"hs=e-2 end="%endif\>" contains=@nasmGrpCntnMacro,nasmInMacPreCondit,nasmInPreCondit
+" Todo: allow STRUC/ISTRUC to be used inside preprocessor conditional block
+syn match nasmInMacPreCondit contained transparent "ctx\s"lc=3 skipwhite nextgroup=@nasmGrpNxtCtx
+syn match nasmInMacPreCondit contained "^\s*%elifctx\>"hs=e-7 skipwhite nextgroup=@nasmGrpNxtCtx
+syn match nasmInMacPreCondit contained "^\s*%elifnctx\>"hs=e-8 skipwhite nextgroup=@nasmGrpNxtCtx
+syn match nasmInMacParamNum contained "\<\d\+\.list\>"me=e-5
+syn match nasmInMacParamNum contained "\<\d\+\.nolist\>"me=e-7
+syn match nasmInMacDirective contained "\.\(no\)\=list\>"
+syn match nasmInMacMacro contained transparent "macro\s"lc=5 skipwhite nextgroup=nasmStructureLabel
+syn match nasmInMacMacro contained "^\s*%rotate\>"hs=e-6
+syn match nasmInMacParam contained "%\([+-]\=\d\+\|{[+-]\=\d\+}\)"
+" nasm conditional macro operands/arguments
+" Todo: check feasebility; add too nasmGrpInMacros, etc.
+"syn match nasmInMacCond contained "\<\(N\=\([ABGL]E\=\|[CEOSZ]\)\|P[EO]\=\)\>"
+syn cluster nasmGrpInMacros contains=nasmMacro,nasmInMacMacro,nasmInMacParam,nasmInMacParamNum,nasmInMacDirective,nasmInMacLabel,nasmInMacLblWarn,nasmInMacMemRef,nasmInMacPreConDef,nasmInMacPreCondit,nasmInMacPreProc,nasmInMacStrucDef
+
+" Context pre-procs that are better used inside a macro
+if exists("nasm_ctx_outside_macro")
+ syn region nasmPreConditDef transparent matchgroup=nasmCtxPreCondit start="^\s*%ifnctx\>"hs=e-6 start="^\s*%ifctx\>"hs=e-5 end="%endif\>" contains=@nasmGrpCntnPreCon
+ syn match nasmCtxPreProc "^\s*%pop\>"hs=e-3
+ if exists("nasm_loose_syntax")
+ syn match nasmCtxLocLabel "%$\+\(\w\|[#.?@~]\)\k*\>"
+ else
+ syn match nasmCtxLocLabel "%$\+\(\h\|[?@]\)\k*\>"
+ endif
+ syn match nasmCtxPreProc "^\s*%\(push\|repl\)\>"hs=e-4 skipwhite nextgroup=@nasmGrpNxtCtx
+ syn match nasmCtxPreCondit contained transparent "ctx\s"lc=3 skipwhite nextgroup=@nasmGrpNxtCtx
+ syn match nasmCtxPreCondit contained "^\s*%elifctx\>"hs=e-7 skipwhite nextgroup=@nasmGrpNxtCtx
+ syn match nasmCtxPreCondit contained "^\s*%elifnctx\>"hs=e-8 skipwhite nextgroup=@nasmGrpNxtCtx
+ if exists("nasm_no_warn")
+ hi link nasmCtxPreCondit nasmPreCondit
+ hi link nasmCtxPreProc nasmPreProc
+ hi link nasmCtxLocLabel nasmLocalLabel
+ else
+ hi link nasmCtxPreCondit nasmPreProcWarn
+ hi link nasmCtxPreProc nasmPreProcWarn
+ hi link nasmCtxLocLabel nasmLabelWarn
+ endif
+endif
+
+" Conditional assembly
+syn cluster nasmGrpCntnPreCon contains=ALLBUT,@nasmGrpInComments,@nasmGrpInMacros,@nasmGrpInStrucs
+syn region nasmPreConditDef transparent matchgroup=nasmPreCondit start="^\s*%ifnidni\>"hs=e-7 start="^\s*%if\(idni\|n\(def\|idn\|num\|str\)\)\>"hs=e-6 start="^\s*%if\(def\|idn\|nid\|num\|str\)\>"hs=e-5 start="^\s*%ifid\>"hs=e-4 start="^\s*%if\>"hs=e-2 end="%endif\>" contains=@nasmGrpCntnPreCon
+syn match nasmInPreCondit contained "^\s*%el\(if\|se\)\>"hs=e-4
+syn match nasmInPreCondit contained "^\s*%elifid\>"hs=e-6
+syn match nasmInPreCondit contained "^\s*%elif\(def\|idn\|nid\|num\|str\)\>"hs=e-7
+syn match nasmInPreCondit contained "^\s*%elif\(n\(def\|idn\|num\|str\)\|idni\)\>"hs=e-8
+syn match nasmInPreCondit contained "^\s*%elifnidni\>"hs=e-9
+syn cluster nasmGrpInPreCondits contains=nasmPreCondit,nasmInPreCondit,nasmCtxPreCondit
+syn cluster nasmGrpPreCondits contains=nasmPreConditDef,@nasmGrpInPreCondits,nasmCtxPreProc,nasmCtxLocLabel
+
+" Other pre-processor statements
+syn match nasmPreProc "^\s*%\(rep\|use\)\>"hs=e-3
+syn match nasmPreProc "^\s*%line\>"hs=e-4
+syn match nasmPreProc "^\s*%\(clear\|error\|fatal\)\>"hs=e-5
+syn match nasmPreProc "^\s*%\(endrep\|strlen\|substr\)\>"hs=e-6
+syn match nasmPreProc "^\s*%\(exitrep\|warning\)\>"hs=e-7
+syn match nasmDefine "^\s*%undef\>"hs=e-5
+syn match nasmDefine "^\s*%\(assign\|define\)\>"hs=e-6
+syn match nasmDefine "^\s*%i\(assign\|define\)\>"hs=e-7
+syn match nasmDefine "^\s*%unmacro\>"hs=e-7
+syn match nasmInclude "^\s*%include\>"hs=e-7
+" Todo: Treat the line tail after %fatal, %error, %warning as text
+
+" Multiple pre-processor instructions on single line detection (obsolete)
+"syn match nasmPreProcError +^\s*\([^\t "%';][^"%';]*\|[^\t "';][^"%';]\+\)%\a\+\>+
+syn cluster nasmGrpPreProcs contains=nasmMacroDef,@nasmGrpInMacros,@nasmGrpPreCondits,nasmPreProc,nasmDefine,nasmInclude,nasmPreProcWarn,nasmPreProcError
+
+
+
+" Register Identifiers:
+" Register operands:
+syn match nasmGen08Register "\<[A-D][HL]\>"
+syn match nasmGen16Register "\<\([A-D]X\|[DS]I\|[BS]P\)\>"
+syn match nasmGen32Register "\<E\([A-D]X\|[DS]I\|[BS]P\)\>"
+syn match nasmGen64Register "\<R\([A-D]X\|[DS]I\|[BS]P\|[89]\|1[0-5]\|[89][WDB]\|1[0-5][WDB]\)\>"
+syn match nasmExtRegister "\<\([SB]PL\|[SD]IL\)\>"
+syn match nasmSegRegister "\<[C-GS]S\>"
+syn match nasmSpcRegister "\<E\=IP\>"
+syn match nasmFpuRegister "\<ST\o\>"
+syn match nasmMmxRegister "\<MM\o\>"
+syn match nasmSseRegister "\<XMM\o\>"
+syn match nasmCtrlRegister "\<CR\o\>"
+syn match nasmDebugRegister "\<DR\o\>"
+syn match nasmTestRegister "\<TR\o\>"
+syn match nasmRegisterError "\<\(CR[15-9]\|DR[4-58-9]\|TR[0-28-9]\)\>"
+syn match nasmRegisterError "\<X\=MM[8-9]\>"
+syn match nasmRegisterError "\<ST\((\d)\|[8-9]\>\)"
+syn match nasmRegisterError "\<E\([A-D][HL]\|[C-GS]S\)\>"
+" Memory reference operand (address):
+syn match nasmMemRefError "[[\]]"
+syn cluster nasmGrpCntnMemRef contains=ALLBUT,@nasmGrpComments,@nasmGrpPreProcs,@nasmGrpInStrucs,nasmMemReference,nasmMemRefError
+syn match nasmInMacMemRef contained "\[[^;[\]]\{-}\]" contains=@nasmGrpCntnMemRef,nasmPreProcError,nasmInMacLabel,nasmInMacLblWarn,nasmInMacParam
+syn match nasmMemReference "\[[^;[\]]\{-}\]" contains=@nasmGrpCntnMemRef,nasmPreProcError,nasmCtxLocLabel
+
+
+
+" Netwide Assembler Directives:
+" Compilation constants
+syn keyword nasmConstant __BITS__ __DATE__ __FILE__ __FORMAT__ __LINE__
+syn keyword nasmConstant __NASM_MAJOR__ __NASM_MINOR__ __NASM_VERSION__
+syn keyword nasmConstant __TIME__
+" Instruction modifiers
+syn match nasmInstructnError "\<TO\>"
+syn match nasmInstrModifier "\(^\|:\)\s*[C-GS]S\>"ms=e-1
+syn keyword nasmInstrModifier A16 A32 O16 O32
+syn match nasmInstrModifier "\<F\(ADD\|MUL\|\(DIV\|SUB\)R\=\)\s\+TO\>"lc=5,ms=e-1
+" the 'to' keyword is not allowed for fpu-pop instructions (yet)
+"syn match nasmInstrModifier "\<F\(ADD\|MUL\|\(DIV\|SUB\)R\=\)P\s\+TO\>"lc=6,ms=e-1
+" NAsm directives
+syn keyword nasmRepeat TIMES
+syn keyword nasmDirective ALIGN[B] INCBIN EQU NOSPLIT SPLIT
+syn keyword nasmDirective ABSOLUTE BITS SECTION SEGMENT
+syn keyword nasmDirective ENDSECTION ENDSEGMENT
+syn keyword nasmDirective __SECT__
+" Macro created standard directives: (requires %include)
+syn case match
+syn keyword nasmStdDirective ENDPROC EPILOGUE LOCALS PROC PROLOGUE USES
+syn keyword nasmStdDirective ENDIF ELSE ELIF ELSIF IF
+"syn keyword nasmStdDirective BREAK CASE DEFAULT ENDSWITCH SWITCH
+"syn keyword nasmStdDirective CASE OF ENDCASE
+syn keyword nasmStdDirective DO ENDFOR ENDWHILE FOR REPEAT UNTIL WHILE EXIT
+syn case ignore
+" Format specific directives: (all formats)
+" (excluded: extension directives to section, global, common and extern)
+syn keyword nasmFmtDirective ORG
+syn keyword nasmFmtDirective EXPORT IMPORT GROUP UPPERCASE SEG WRT
+syn keyword nasmFmtDirective LIBRARY
+syn case match
+syn keyword nasmFmtDirective _GLOBAL_OFFSET_TABLE_ __GLOBAL_OFFSET_TABLE_
+syn keyword nasmFmtDirective ..start ..got ..gotoff ..gotpc ..plt ..sym
+syn case ignore
+
+
+
+" Standard Instructions:
+syn match nasmInstructnError "\<\(F\=CMOV\|SET\)N\=\a\{0,2}\>"
+syn keyword nasmInstructnError CMPS MOVS LCS LODS STOS XLAT
+syn match nasmStdInstruction "\<MOV\>"
+syn match nasmInstructnError "\<MOV\s[^,;[]*\<CS\>\s*[^:]"he=e-1
+syn match nasmStdInstruction "\<\(CMOV\|J\|SET\)\(N\=\([ABGL]E\=\|[CEOSZ]\)\|P[EO]\=\)\>"
+syn match nasmStdInstruction "\<POP\>"
+syn keyword nasmStdInstruction AAA AAD AAM AAS ADC ADD AND
+syn keyword nasmStdInstruction BOUND BSF BSR BSWAP BT[C] BTR BTS
+syn keyword nasmStdInstruction CALL CBW CDQ CLC CLD CMC CMP CMPSB CMPSD CMPSW CMPSQ
+syn keyword nasmStdInstruction CMPXCHG CMPXCHG8B CPUID CWD[E] CQO
+syn keyword nasmStdInstruction DAA DAS DEC DIV ENTER
+syn keyword nasmStdInstruction IDIV IMUL INC INT[O] IRET[D] IRETW IRETQ
+syn keyword nasmStdInstruction JCXZ JECXZ JMP
+syn keyword nasmStdInstruction LAHF LDS LEA LEAVE LES LFS LGS LODSB LODSD LODSQ
+syn keyword nasmStdInstruction LODSW LOOP[E] LOOPNE LOOPNZ LOOPZ LSS
+syn keyword nasmStdInstruction MOVSB MOVSD MOVSW MOVSX MOVSQ MOVZX MUL NEG NOP NOT
+syn keyword nasmStdInstruction OR POPA[D] POPAW POPF[D] POPFW POPFQ
+syn keyword nasmStdInstruction PUSH[AD] PUSHAW PUSHF[D] PUSHFW PUSHFQ
+syn keyword nasmStdInstruction RCL RCR RETF RET[N] ROL ROR
+syn keyword nasmStdInstruction SAHF SAL SAR SBB SCASB SCASD SCASW
+syn keyword nasmStdInstruction SHL[D] SHR[D] STC STD STOSB STOSD STOSW STOSQ SUB
+syn keyword nasmStdInstruction TEST XADD XCHG XLATB XOR
+syn keyword nasmStdInstruction LFENCE MFENCE SFENCE
+
+
+" System Instructions: (usually privileged)
+" Verification of pointer parameters
+syn keyword nasmSysInstruction ARPL LAR LSL VERR VERW
+" Addressing descriptor tables
+syn keyword nasmSysInstruction LLDT SLDT LGDT SGDT
+" Multitasking
+syn keyword nasmSysInstruction LTR STR
+" Coprocessing and Multiprocessing (requires fpu and multiple cpu's resp.)
+syn keyword nasmSysInstruction CLTS LOCK WAIT
+" Input and Output
+syn keyword nasmInstructnError INS OUTS
+syn keyword nasmSysInstruction IN INSB INSW INSD OUT OUTSB OUTSB OUTSW OUTSD
+" Interrupt control
+syn keyword nasmSysInstruction CLI STI LIDT SIDT
+" System control
+syn match nasmSysInstruction "\<MOV\s[^;]\{-}\<CR\o\>"me=s+3
+syn keyword nasmSysInstruction HLT INVD LMSW
+syn keyword nasmSseInstruction PREFETCHT0 PREFETCHT1 PREFETCHT2 PREFETCHNTA
+syn keyword nasmSseInstruction RSM SFENCE SMSW SYSENTER SYSEXIT UD2 WBINVD
+" TLB (Translation Lookahead Buffer) testing
+syn match nasmSysInstruction "\<MOV\s[^;]\{-}\<TR\o\>"me=s+3
+syn keyword nasmSysInstruction INVLPG
+
+" Debugging Instructions: (privileged)
+syn match nasmDbgInstruction "\<MOV\s[^;]\{-}\<DR\o\>"me=s+3
+syn keyword nasmDbgInstruction INT1 INT3 RDMSR RDTSC RDPMC WRMSR
+
+
+" Floating Point Instructions: (requires FPU)
+syn match nasmFpuInstruction "\<FCMOVN\=\([AB]E\=\|[CEPUZ]\)\>"
+syn keyword nasmFpuInstruction F2XM1 FABS FADD[P] FBLD FBSTP
+syn keyword nasmFpuInstruction FCHS FCLEX FCOM[IP] FCOMP[P] FCOS
+syn keyword nasmFpuInstruction FDECSTP FDISI FDIV[P] FDIVR[P] FENI FFREE
+syn keyword nasmFpuInstruction FIADD FICOM[P] FIDIV[R] FILD
+syn keyword nasmFpuInstruction FIMUL FINCSTP FINIT FIST[P] FISUB[R]
+syn keyword nasmFpuInstruction FLD[1] FLDCW FLDENV FLDL2E FLDL2T FLDLG2
+syn keyword nasmFpuInstruction FLDLN2 FLDPI FLDZ FMUL[P]
+syn keyword nasmFpuInstruction FNCLEX FNDISI FNENI FNINIT FNOP FNSAVE
+syn keyword nasmFpuInstruction FNSTCW FNSTENV FNSTSW FNSTSW
+syn keyword nasmFpuInstruction FPATAN FPREM[1] FPTAN FRNDINT FRSTOR
+syn keyword nasmFpuInstruction FSAVE FSCALE FSETPM FSIN FSINCOS FSQRT
+syn keyword nasmFpuInstruction FSTCW FSTENV FST[P] FSTSW FSUB[P] FSUBR[P]
+syn keyword nasmFpuInstruction FTST FUCOM[IP] FUCOMP[P]
+syn keyword nasmFpuInstruction FXAM FXCH FXTRACT FYL2X FYL2XP1
+
+
+" Multi Media Xtension Packed Instructions: (requires MMX unit)
+" Standard MMX instructions: (requires MMX1 unit)
+syn match nasmInstructnError "\<P\(ADD\|SUB\)U\=S\=[DQ]\=\>"
+syn match nasmInstructnError "\<PCMP\a\{0,2}[BDWQ]\=\>"
+syn keyword nasmMmxInstruction EMMS MOVD MOVQ
+syn keyword nasmMmxInstruction PACKSSDW PACKSSWB PACKUSWB PADDB PADDD PADDW
+syn keyword nasmMmxInstruction PADDSB PADDSW PADDUSB PADDUSW PAND[N]
+syn keyword nasmMmxInstruction PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD PCMPGTW
+syn keyword nasmMmxInstruction PMACHRIW PMADDWD PMULHW PMULLW POR
+syn keyword nasmMmxInstruction PSLLD PSLLQ PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW
+syn keyword nasmMmxInstruction PSUBB PSUBD PSUBW PSUBSB PSUBSW PSUBUSB PSUBUSW
+syn keyword nasmMmxInstruction PUNPCKHBW PUNPCKHDQ PUNPCKHWD
+syn keyword nasmMmxInstruction PUNPCKLBW PUNPCKLDQ PUNPCKLWD PXOR
+" Extended MMX instructions: (requires MMX2/SSE unit)
+syn keyword nasmMmxInstruction MASKMOVQ MOVNTQ
+syn keyword nasmMmxInstruction PAVGB PAVGW PEXTRW PINSRW PMAXSW PMAXUB
+syn keyword nasmMmxInstruction PMINSW PMINUB PMOVMSKB PMULHUW PSADBW PSHUFW
+
+
+" Streaming SIMD Extension Packed Instructions: (requires SSE unit)
+syn match nasmInstructnError "\<CMP\a\{1,5}[PS]S\>"
+syn match nasmSseInstruction "\<CMP\(N\=\(EQ\|L[ET]\)\|\(UN\)\=ORD\)\=[PS]S\>"
+syn keyword nasmSseInstruction ADDPS ADDSS ANDNPS ANDPS
+syn keyword nasmSseInstruction COMISS CVTPI2PS CVTPS2PI
+syn keyword nasmSseInstruction CVTSI2SS CVTSS2SI CVTTPS2PI CVTTSS2SI
+syn keyword nasmSseInstruction DIVPS DIVSS FXRSTOR FXSAVE LDMXCSR
+syn keyword nasmSseInstruction MAXPS MAXSS MINPS MINSS MOVAPS MOVHLPS MOVHPS
+syn keyword nasmSseInstruction MOVLHPS MOVLPS MOVMSKPS MOVNTPS MOVSS MOVUPS
+syn keyword nasmSseInstruction MULPS MULSS
+syn keyword nasmSseInstruction ORPS RCPPS RCPSS RSQRTPS RSQRTSS
+syn keyword nasmSseInstruction SHUFPS SQRTPS SQRTSS STMXCSR SUBPS SUBSS
+syn keyword nasmSseInstruction UCOMISS UNPCKHPS UNPCKLPS XORPS
+
+
+" Three Dimensional Now Packed Instructions: (requires 3DNow! unit)
+syn keyword nasmNowInstruction FEMMS PAVGUSB PF2ID PFACC PFADD PFCMPEQ PFCMPGE
+syn keyword nasmNowInstruction PFCMPGT PFMAX PFMIN PFMUL PFRCP PFRCPIT1
+syn keyword nasmNowInstruction PFRCPIT2 PFRSQIT1 PFRSQRT PFSUB[R] PI2FD
+syn keyword nasmNowInstruction PMULHRWA PREFETCH[W]
+
+
+" Vendor Specific Instructions:
+" Cyrix instructions (requires Cyrix processor)
+syn keyword nasmCrxInstruction PADDSIW PAVEB PDISTIB PMAGW PMULHRW[C] PMULHRIW
+syn keyword nasmCrxInstruction PMVGEZB PMVLZB PMVNZB PMVZB PSUBSIW
+syn keyword nasmCrxInstruction RDSHR RSDC RSLDT SMINT SMINTOLD SVDC SVLDT SVTS
+syn keyword nasmCrxInstruction WRSHR
+" AMD instructions (requires AMD processor)
+syn keyword nasmAmdInstruction SYSCALL SYSRET
+
+
+" Undocumented Instructions:
+syn match nasmUndInstruction "\<POP\s[^;]*\<CS\>"me=s+3
+syn keyword nasmUndInstruction CMPXCHG486 IBTS ICEBP INT01 INT03 LOADALL
+syn keyword nasmUndInstruction LOADALL286 LOADALL386 SALC SMI UD1 UMOV XBTS
+
+
+
+" Synchronize Syntax:
+syn sync clear
+syn sync minlines=50 "for multiple region nesting
+syn sync match nasmSync grouphere nasmMacroDef "^\s*%i\=macro\>"me=s-1
+syn sync match nasmSync grouphere NONE "^\s*%endmacro\>"
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" Sub Links:
+hi def link nasmInMacDirective nasmDirective
+hi def link nasmInMacLabel nasmLocalLabel
+hi def link nasmInMacLblWarn nasmLabelWarn
+hi def link nasmInMacMacro nasmMacro
+hi def link nasmInMacParam nasmMacro
+hi def link nasmInMacParamNum nasmDecNumber
+hi def link nasmInMacPreCondit nasmPreCondit
+hi def link nasmInMacPreProc nasmPreProc
+hi def link nasmInPreCondit nasmPreCondit
+hi def link nasmInStructure nasmStructure
+hi def link nasmStructureLabel nasmStructure
+
+" Comment Group:
+hi def link nasmComment Comment
+hi def link nasmSpecialComment SpecialComment
+hi def link nasmInCommentTodo Todo
+
+" Constant Group:
+hi def link nasmString String
+hi def link nasmCString String
+hi def link nasmStringError Error
+hi def link nasmCStringEscape SpecialChar
+hi def link nasmCStringFormat SpecialChar
+hi def link nasmBinNumber Number
+hi def link nasmOctNumber Number
+hi def link nasmDecNumber Number
+hi def link nasmHexNumber Number
+hi def link nasmFltNumber Float
+hi def link nasmNumberError Error
+
+" Identifier Group:
+hi def link nasmLabel Identifier
+hi def link nasmLocalLabel Identifier
+hi def link nasmSpecialLabel Special
+hi def link nasmLabelError Error
+hi def link nasmLabelWarn Todo
+
+" PreProc Group:
+hi def link nasmPreProc PreProc
+hi def link nasmDefine Define
+hi def link nasmInclude Include
+hi def link nasmMacro Macro
+hi def link nasmPreCondit PreCondit
+hi def link nasmPreProcError Error
+hi def link nasmPreProcWarn Todo
+
+" Type Group:
+hi def link nasmType Type
+hi def link nasmStorage StorageClass
+hi def link nasmStructure Structure
+hi def link nasmTypeError Error
+
+" Directive Group:
+hi def link nasmConstant Constant
+hi def link nasmInstrModifier Operator
+hi def link nasmRepeat Repeat
+hi def link nasmDirective Keyword
+hi def link nasmStdDirective Operator
+hi def link nasmFmtDirective Keyword
+
+" Register Group:
+hi def link nasmCtrlRegister Special
+hi def link nasmDebugRegister Debug
+hi def link nasmTestRegister Special
+hi def link nasmRegisterError Error
+hi def link nasmMemRefError Error
+
+" Instruction Group:
+hi def link nasmStdInstruction Statement
+hi def link nasmSysInstruction Statement
+hi def link nasmDbgInstruction Debug
+hi def link nasmFpuInstruction Statement
+hi def link nasmMmxInstruction Statement
+hi def link nasmSseInstruction Statement
+hi def link nasmNowInstruction Statement
+hi def link nasmAmdInstruction Special
+hi def link nasmCrxInstruction Special
+hi def link nasmUndInstruction Todo
+hi def link nasmInstructnError Error
+
+
+let b:current_syntax = "nasm"
+
+" vim:ts=8 sw=4
diff --git a/runtime/syntax/nastran.vim b/runtime/syntax/nastran.vim
new file mode 100644
index 0000000..239fd6e
--- /dev/null
+++ b/runtime/syntax/nastran.vim
@@ -0,0 +1,181 @@
+" Vim syntax file
+" Language: NASTRAN input/DMAP
+" Maintainer: Tom Kowalski <trk@schaefferas.com>
+" Last change: April 27, 2001
+" Thanks to the authors and maintainers of fortran.vim.
+" Since DMAP shares some traits with fortran, this syntax file
+" is based on the fortran.vim syntax file.
+"----------------------------------------------------------------------
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+" DMAP is not case dependent
+syn case ignore
+"
+"--------------------DMAP SYNTAX---------------------------------------
+"
+" -------Executive Modules and Statements
+"
+syn keyword nastranDmapexecmod call dbview delete end equiv equivx exit
+syn keyword nastranDmapexecmod file message purge purgex return subdmap
+syn keyword nastranDmapType type
+syn keyword nastranDmapLabel go to goto
+syn keyword nastranDmapRepeat if else elseif endif then
+syn keyword nastranDmapRepeat do while
+syn region nastranDmapString start=+"+ end=+"+ oneline
+syn region nastranDmapString start=+'+ end=+'+ oneline
+" If you don't like initial tabs in dmap (or at all)
+"syn match nastranDmapIniTab "^\t.*$"
+"syn match nastranDmapTab "\t"
+
+" Any integer
+syn match nastranDmapNumber "-\=\<[0-9]\+\>"
+" floating point number, with dot, optional exponent
+syn match nastranDmapFloat "\<[0-9]\+\.[0-9]*\([edED][-+]\=[0-9]\+\)\=\>"
+" floating point number, starting with a dot, optional exponent
+syn match nastranDmapFloat "\.[0-9]\+\([edED][-+]\=[0-9]\+\)\=\>"
+" floating point number, without dot, with exponent
+syn match nastranDmapFloat "\<[0-9]\+[edED][-+]\=[0-9]\+\>"
+
+syn match nastranDmapLogical "\(true\|false\)"
+
+syn match nastranDmapPreCondit "^#define\>"
+syn match nastranDmapPreCondit "^#include\>"
+"
+" -------Comments may be contained in another line.
+"
+syn match nastranDmapComment "^[\$].*$"
+syn match nastranDmapComment "\$.*$"
+syn match nastranDmapComment "^[\$].*$" contained
+syn match nastranDmapComment "\$.*$" contained
+" Treat all past 72nd column as a comment. Do not work with tabs!
+" Breaks down when 72-73rd column is in another match (eg number or keyword)
+syn match nastranDmapComment "^.\{-72}.*$"lc=72 contained
+
+"
+" -------Utility Modules
+"
+syn keyword nastranDmapUtilmod append copy dbc dbdict dbdir dmin drms1
+syn keyword nastranDmapUtilmod dtiin eltprt ifp ifp1 inputt2 inputt4 lamx
+syn keyword nastranDmapUtilmod matgen matgpr matmod matpch matprn matprt
+syn keyword nastranDmapUtilmod modtrl mtrxin ofp output2 output4 param
+syn keyword nastranDmapUtilmod paraml paramr prtparam pvt scalar
+syn keyword nastranDmapUtilmod seqp setval tabedit tabprt tabpt vec vecplot
+syn keyword nastranDmapUtilmod xsort
+"
+" -------Matrix Modules
+"
+syn keyword nastranDmapMatmod add add5 cead dcmp decomp diagonal fbs merge
+syn keyword nastranDmapMatmod mpyad norm read reigl smpyad solve solvit
+syn keyword nastranDmapMatmod trnsp umerge umerge1 upartn dmiin partn
+syn region nastranDmapMatmod start=+^ *[Dd][Mm][Ii]+ end=+[\/]+
+"
+" -------Implicit Functions
+"
+syn keyword nastranDmapImplicit abs acos acosh andl asin asinh atan atan2
+syn keyword nastranDmapImplicit atanh atanh2 char clen clock cmplx concat1
+syn keyword nastranDmapImplicit concat2 concat3 conjg cos cosh dble diagoff
+syn keyword nastranDmapImplicit diagon dim dlablank dlxblank dprod eqvl exp
+syn keyword nastranDmapImplicit getdiag getsys ichar imag impl index indexstr
+syn keyword nastranDmapImplicit int itol leq lge lgt lle llt lne log log10
+syn keyword nastranDmapImplicit logx ltoi mcgetsys mcputsys max min mod neqvl
+syn keyword nastranDmapImplicit nint noop normal notl numeq numge numgt numle
+syn keyword nastranDmapImplicit numlt numne orl pi precison putdiag putsys
+syn keyword nastranDmapImplicit rand rdiagon real rtimtogo setcore sign sin
+syn keyword nastranDmapImplicit sinh sngl sprod sqrt substrin tan tanh
+syn keyword nastranDmapImplicit timetogo wlen xorl
+"
+"
+"--------------------INPUT FILE SYNTAX---------------------------------------
+"
+"
+" -------Nastran Statement
+"
+syn keyword nastranNastranCard nastran
+"
+" -------The File Management Section (FMS)
+"
+syn region nastranFMSCard start=+^ *[Aa][Cc][Qq][Uu][Ii]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Aa][Ss][Ss][Ii][Gg]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Cc][oO][Nn][Nn][Ee]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Dd][Bb][Cc][Ll][Ee]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Dd][Bb][Dd][Ii][Cc]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Dd][Bb][Dd][Ii][Rr]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Dd][Bb][Ff][Ii][Xx]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Dd][Bb][Ll][Oo][Aa]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Dd][Bb][Ll][Oo][Cc]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Dd][Bb][Ss][Ee][Tt]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Dd][Bb][Uu][Nn][Ll]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Dd][Bb][Uu][Pp][Dd]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Dd][Ee][Ff][Ii][Nn]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Ee][Nn][Dd][Jj][Oo]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Ee][Xx][Pp][Aa][Nn]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Ii][Nn][Cc][Ll][Uu]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Ii][Nn][Ii][Tt]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Pp][Rr][Oo][Jj]+ end=+$+ oneline
+syn region nastranFMSCard start=+^ *[Rr][Ee][Ss][Tt]+ end=+$+ oneline
+syn match nastranDmapUtilmod "^ *[Rr][Ee][Ss][Tt][Aa].*,.*," contains=nastranDmapComment
+"
+" -------Executive Control Section
+"
+syn region nastranECSCard start=+^ *[Aa][Ll][Tt][Ee][Rr]+ end=+$+ oneline
+syn region nastranECSCard start=+^ *[Aa][Pp][Pp]+ end=+$+ oneline
+syn region nastranECSCard start=+^ *[Cc][Oo][Mm][Pp][Ii]+ end=+$+ oneline
+syn region nastranECSCard start=+^ *[Dd][Ii][Aa][Gg] + end=+$+ oneline
+syn region nastranECSCard start=+^ *[Ee][Cc][Hh][Oo]+ end=+$+ oneline
+syn region nastranECSCard start=+^ *[Ee][Nn][Dd][Aa][Ll]+ end=+$+ oneline
+syn region nastranECSCard start=+^ *[Ii][Dd]+ end=+$+ oneline
+syn region nastranECSCard start=+^ *[Ii][Nn][Cc][Ll][Uu]+ end=+$+ oneline
+syn region nastranECSCard start=+^ *[Ll][Ii][Nn][Kk]+ end=+$+ oneline
+syn region nastranECSCard start=+^ *[Mm][Aa][Ll][Tt][Ee]+ end=+$+ oneline
+syn region nastranECSCard start=+^ *[Ss][Oo][Ll] + end=+$+ oneline
+syn region nastranECSCard start=+^ *[Tt][Ii][Mm][Ee]+ end=+$+ oneline
+"
+" -------Delimiters
+"
+syn match nastranDelimiter "[Cc][Ee][Nn][Dd]" contained
+syn match nastranDelimiter "[Bb][Ee][Gg][Ii][Nn]" contained
+syn match nastranDelimiter " *[Bb][Uu][Ll][Kk]" contained
+syn match nastranDelimiter "[Ee][Nn][Dd] *[dD][Aa][Tt][Aa]" contained
+"
+" -------Case Control section
+"
+syn region nastranCC start=+^ *[Cc][Ee][Nn][Dd]+ end=+^ *[Bb][Ee][Gg][Ii][Nn]+ contains=nastranDelimiter,nastranBulkData,nastranDmapComment
+
+"
+" -------Bulk Data section
+"
+syn region nastranBulkData start=+ *[Bb][Uu][Ll][Kk] *$+ end=+^ [Ee][Nn][Dd] *[Dd]+ contains=nastranDelimiter,nastranDmapComment
+"
+" -------The following cards may appear in multiple sections of the file
+"
+syn keyword nastranUtilCard ECHOON ECHOOFF INCLUDE PARAM
+
+
+" The default methods for highlighting. Can be overridden later
+hi def link nastranDmapexecmod Statement
+hi def link nastranDmapType Type
+hi def link nastranDmapPreCondit Error
+hi def link nastranDmapUtilmod PreProc
+hi def link nastranDmapMatmod nastranDmapUtilmod
+hi def link nastranDmapString String
+hi def link nastranDmapNumber Constant
+hi def link nastranDmapFloat nastranDmapNumber
+hi def link nastranDmapInitTab nastranDmapNumber
+hi def link nastranDmapTab nastranDmapNumber
+hi def link nastranDmapLogical nastranDmapExecmod
+hi def link nastranDmapImplicit Identifier
+hi def link nastranDmapComment Comment
+hi def link nastranDmapRepeat nastranDmapexecmod
+hi def link nastranNastranCard nastranDmapPreCondit
+hi def link nastranECSCard nastranDmapUtilmod
+hi def link nastranFMSCard nastranNastranCard
+hi def link nastranCC nastranDmapexecmod
+hi def link nastranDelimiter Special
+hi def link nastranBulkData nastranDmapType
+hi def link nastranUtilCard nastranDmapexecmod
+
+let b:current_syntax = "nastran"
+
+"EOF vim: ts=8 noet tw=120 sw=8 sts=0
diff --git a/runtime/syntax/natural.vim b/runtime/syntax/natural.vim
new file mode 100644
index 0000000..be529f2
--- /dev/null
+++ b/runtime/syntax/natural.vim
@@ -0,0 +1,201 @@
+" Vim syntax file
+"
+" Language: NATURAL
+" Version: 2.1.0.5
+" Maintainer: Marko von Oppen <marko@von-oppen.com>
+" Last Changed: 2012-02-05 18:50:43
+" Support: http://www.von-oppen.com/
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+setlocal iskeyword+=-,*,#,+,_,/
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" NATURAL is case insensitive
+syntax case ignore
+
+" preprocessor
+syn keyword naturalInclude include nextgroup=naturalObjName skipwhite
+
+" define data
+syn keyword naturalKeyword define data end-define
+syn keyword naturalKeyword independent global parameter local redefine view
+syn keyword naturalKeyword const[ant] init initial
+
+" loops
+syn keyword naturalLoop read end-read end-work find end-find histogram end-histogram
+syn keyword naturalLoop end-all sort end-sort sorted descending ascending
+syn keyword naturalRepeat repeat end-repeat while until for step end-for
+syn keyword naturalKeyword in file with field starting from ending at thru by isn where
+syn keyword naturalError on error end-error
+syn keyword naturalKeyword accept reject end-enddata number unique retain as release
+syn keyword naturalKeyword start end-start break end-break physical page top sequence
+syn keyword naturalKeyword end-toppage end-endpage end-endfile before processing
+syn keyword naturalKeyword end-before
+
+" conditionals
+syn keyword naturalConditional if then else end-if end-norec
+syn keyword naturalConditional decide end-decide value when condition none any
+
+" assignment / calculation
+syn keyword naturalKeyword reset assign move left right justified compress to into edited
+syn keyword naturalKeyword add subtract multiply divide compute name
+syn keyword naturalKeyword all giving remainder rounded leaving space numeric
+syn keyword naturalKeyword examine full replace giving separate delimiter modified
+syn keyword naturalKeyword suspend identical suppress
+
+" program flow
+syn keyword naturalFlow callnat fetch return enter escape bottom top stack formatted
+syn keyword naturalFlow command call
+syn keyword naturalflow end-subroutine routine
+
+" file operations
+syn keyword naturalKeyword update store get delete end transaction work once close
+
+" other keywords
+syn keyword naturalKeyword first every of no record[s] found ignore immediate
+syn keyword naturalKeyword set settime key control stop terminate
+
+" in-/output
+syn keyword naturalKeyword write display input reinput notitle nohdr map newpage
+syn keyword naturalKeyword alarm text help eject index window base size
+syn keyword naturalKeyword format printer skip lines
+
+" functions
+syn keyword naturalKeyword abs atn cos exp frac int log sgn sin sqrt tan val old
+syn keyword naturalKeyword pos
+
+" report mode keywords
+syn keyword naturalRMKeyword same loop obtain indexed do doend
+
+" Subroutine name
+syn keyword naturalFlow perform subroutine nextgroup=naturalFunction skipwhite
+syn match naturalFunction "\<[a-z][-_a-z0-9]*\>"
+
+syn keyword naturalFlow using nextgroup=naturalKeyword,naturalObjName skipwhite
+syn match naturalObjName "\<[a-z][-_a-z0-9]\{,7}\>"
+
+" Labels
+syn match naturalLabel "\<[+#a-z][-_#a-z0-9]*\."
+syn match naturalRef "\<[+#a-z][-_#a-z0-9]*\>\.\<[+#a-z][*]\=[-_#a-z0-9]*\>"
+
+" mark keyword special handling
+syn keyword naturalKeyword mark nextgroup=naturalMark skipwhite
+syn match naturalMark "\<\*[a-z][-_#.a-z0-9]*\>"
+
+" System variables
+syn match naturalSysVar "\<\*[a-z][-a-z0-9]*\>"
+
+"integer number, or floating point number without a dot.
+syn match naturalNumber "\<-\=\d\+\>"
+"floating point number, with dot
+syn match naturalNumber "\<-\=\d\+\.\d\+\>"
+"floating point number, starting with a dot
+syn match naturalNumber "\.\d\+"
+
+" Formats in write statement
+syn match naturalFormat "\<\d\+[TX]\>"
+
+" String and Character contstants
+syn match naturalString "H'\x\+'"
+syn region naturalString start=+"+ end=+"+
+syn region naturalString start=+'+ end=+'+
+
+" Type definition
+syn match naturalAttribute "\<[-a-z][a-z]=[-a-z0-9_\.,]\+\>"
+syn match naturalType contained "\<[ABINP]\d\+\(,\d\+\)\=\>"
+syn match naturalType contained "\<[CL]\>"
+
+" "TODO" / other comments
+syn keyword naturalTodo contained todo test
+syn match naturalCommentMark contained "[a-z][^ \t/:|]*\(\s[^ \t/:'"|]\+\)*:\s"he=e-1
+
+" comments
+syn region naturalComment start="/\*" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark
+syn region naturalComment start="^\*[ *]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark
+syn region naturalComment start="^\d\{4} \*[\ \*]"lc=5 end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark
+syn match naturalComment "^\*$"
+syn match naturalComment "^\d\{4} \*$"lc=5
+" /* is legal syntax in parentheses e.g. "#ident(label./*)"
+syn region naturalPComment contained start="/\*\s*[^),]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark
+
+" operators
+syn keyword naturalOperator and or not eq ne gt lt ge le mask scan modified
+
+" constants
+syn keyword naturalBoolean true false
+syn match naturalLineNo "^\d\{4}"
+
+" identifiers
+syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*\>[^\.']"me=e-1
+syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*$"
+syn match naturalLegalIdent "[+#a-z][-_#a-z0-9]*/[-_#a-z0-9]*"
+
+" parentheses
+syn region naturalPar matchgroup=naturalParGui start="(" end=")" contains=naturalLabel,naturalRef,naturalOperator,@naturalConstant,naturalType,naturalSysVar,naturalPar,naturalLineNo,naturalPComment
+syn match naturalLineRef "(\d\{4})"
+
+" build syntax groups
+syntax cluster naturalConstant contains=naturalString,naturalNumber,naturalAttribute,naturalBoolean
+
+" folding
+if v:version >= 600
+ set foldignore=*
+endif
+
+
+" The default methods for highlighting. Can be overridden later
+
+" Constants
+hi def link naturalFormat Constant
+hi def link naturalAttribute Constant
+hi def link naturalNumber Number
+hi def link naturalString String
+hi def link naturalBoolean Boolean
+
+" All kinds of keywords
+hi def link naturalConditional Conditional
+hi def link naturalRepeat Repeat
+hi def link naturalLoop Repeat
+hi def link naturalFlow Keyword
+hi def link naturalError Keyword
+hi def link naturalKeyword Keyword
+hi def link naturalOperator Operator
+hi def link naturalParGui Operator
+
+" Labels
+hi def link naturalLabel Label
+hi def link naturalRefLabel Label
+
+" Comments
+hi def link naturalPComment Comment
+hi def link naturalComment Comment
+hi def link naturalTodo Todo
+hi def link naturalCommentMark PreProc
+
+hi def link naturalInclude Include
+hi def link naturalSysVar Identifier
+hi def link naturalLineNo LineNr
+hi def link naturalLineRef Error
+hi def link naturalSpecial Special
+hi def link naturalComKey Todo
+
+" illegal things
+hi def link naturalRMKeyword Error
+hi def link naturalLegalIdent Error
+
+hi def link naturalType Type
+hi def link naturalFunction Function
+hi def link naturalObjName PreProc
+
+
+let b:current_syntax = "natural"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim:set ts=8 sw=8 noet ft=vim list:
diff --git a/runtime/syntax/ncf.vim b/runtime/syntax/ncf.vim
new file mode 100644
index 0000000..0027fd4
--- /dev/null
+++ b/runtime/syntax/ncf.vim
@@ -0,0 +1,247 @@
+" Vim syntax file
+" Language: Novell "NCF" Batch File
+" Maintainer: Jonathan J. Miner <miner@doit.wisc.edu>
+" Last Change: Tue, 04 Sep 2001 16:20:33 CDT
+" $Id: ncf.vim,v 1.1 2004/06/13 16:31:58 vimboss Exp $
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+syn keyword ncfCommands mount load unload
+syn keyword ncfBoolean on off
+syn keyword ncfCommands set nextgroup=ncfSetCommands
+syn keyword ncfTimeTypes Reference Primary Secondary Single
+syn match ncfLoad "\(unl\|l\)oad .*"lc=4 contains=ALLBUT,Error
+syn match ncfMount "mount .*"lc=5 contains=ALLBUT,Error
+
+syn match ncfComment "^\ *rem.*$"
+syn match ncfComment "^\ *;.*$"
+syn match ncfComment "^\ *#.*$"
+
+syn match ncfSearchPath "search \(add\|del\) " nextgroup=ncfPath
+syn match ncfPath "\<[^: ]\+:\([A-Za-z0-9._]\|\\\)*\>"
+syn match ncfServerName "^file server name .*$"
+syn match ncfIPXNet "^ipx internal net"
+
+" String
+syn region ncfString start=+"+ end=+"+
+syn match ncfContString "= \(\(\.\{0,1}\(OU=\|O=\)\{0,1}[A-Z_]\+\)\+;\{0,1}\)\+"lc=2
+
+syn match ncfHexNumber "\<\d\(\d\+\|[A-F]\+\)*\>"
+syn match ncfNumber "\<\d\+\.\{0,1}\d*\>"
+syn match ncfIPAddr "\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}"
+syn match ncfTime "\(+|=\)\{0,1}\d\{1,2}:\d\{1,2}:\d\{1,2}"
+syn match ncfDSTTime "([^ ]\+ [^ ]\+ \(FIRST\|LAST\)\s*\d\{1,2}:\d\{1,2}:\d\{1,2} \(AM\|PM\))"
+syn match ncfTimeZone "[A-Z]\{3}\d[A-Z]\{3}"
+
+syn match ncfLogins "^\([Dd]is\|[Ee]n\)able login[s]*"
+syn match ncfScript "[^ ]*\.ncf"
+
+" SET Commands that take a Number following
+syn match ncfSetCommandsNum "\(Alert Message Nodes\)\s*="
+syn match ncfSetCommandsNum "\(Auto Restart After Abend\)\s*="
+syn match ncfSetCommandsNum "\(Auto Restart After Abend Delay Time\)\s*="
+syn match ncfSetCommandsNum "\(Compression Daily Check Starting Hour\)\s*="
+syn match ncfSetCommandsNum "\(Compression Daily Check Stop Hour\)\s*="
+syn match ncfSetCommandsNum "\(Concurrent Remirror Requests\)\s*="
+syn match ncfSetCommandsNum "\(Convert Compressed to Uncompressed Option\)\s*="
+syn match ncfSetCommandsNum "\(Days Untouched Before Compression\)\s*="
+syn match ncfSetCommandsNum "\(Decompress Free Space Warning Interval\)\s*="
+syn match ncfSetCommandsNum "\(Decompress Percent Disk Space Free to Allow Commit\)\s*="
+syn match ncfSetCommandsNum "\(Deleted Files Compression Option\)\s*="
+syn match ncfSetCommandsNum "\(Directory Cache Allocation Wait Time\)\s*="
+syn match ncfSetCommandsNum "\(Enable IPX Checksums\)\s*="
+syn match ncfSetCommandsNum "\(Garbage Collection Interval\)\s*="
+syn match ncfSetCommandsNum "\(IPX NetBIOS Replication Option\)\s*="
+syn match ncfSetCommandsNum "\(Maximum Concurrent Compressions\)\s*="
+syn match ncfSetCommandsNum "\(Maximum Concurrent Directory Cache Writes\)\s*="
+syn match ncfSetCommandsNum "\(Maximum Concurrent Disk Cache Writes\)\s*="
+syn match ncfSetCommandsNum "\(Maximum Directory Cache Buffers\)\s*="
+syn match ncfSetCommandsNum "\(Maximum Extended Attributes per File or Path\)\s*="
+syn match ncfSetCommandsNum "\(Maximum File Locks\)\s*="
+syn match ncfSetCommandsNum "\(Maximum File Locks Per Connection\)\s*="
+syn match ncfSetCommandsNum "\(Maximum Interrupt Events\)\s*="
+syn match ncfSetCommandsNum "\(Maximum Number of Directory Handles\)\s*="
+syn match ncfSetCommandsNum "\(Maximum Number of Internal Directory Handles\)\s*="
+syn match ncfSetCommandsNum "\(Maximum Outstanding NCP Searches\)\s*="
+syn match ncfSetCommandsNum "\(Maximum Packet Receive Buffers\)\s*="
+syn match ncfSetCommandsNum "\(Maximum Physical Receive Packet Size\)\s*="
+syn match ncfSetCommandsNum "\(Maximum Record Locks\)\s*="
+syn match ncfSetCommandsNum "\(Maximum Record Locks Per Connection\)\s*="
+syn match ncfSetCommandsNum "\(Maximum Service Processes\)\s*="
+syn match ncfSetCommandsNum "\(Maximum Subdirectory Tree Depth\)\s*="
+syn match ncfSetCommandsNum "\(Maximum Transactions\)\s*="
+syn match ncfSetCommandsNum "\(Minimum Compression Percentage Gain\)\s*="
+syn match ncfSetCommandsNum "\(Minimum Directory Cache Buffers\)\s*="
+syn match ncfSetCommandsNum "\(Minimum File Cache Buffers\)\s*="
+syn match ncfSetCommandsNum "\(Minimum File Cache Report Threshold\)\s*="
+syn match ncfSetCommandsNum "\(Minimum Free Memory for Garbage Collection\)\s*="
+syn match ncfSetCommandsNum "\(Minimum Packet Receive Buffers\)\s*="
+syn match ncfSetCommandsNum "\(Minimum Service Processes\)\s*="
+syn match ncfSetCommandsNum "\(NCP Packet Signature Option\)\s*="
+syn match ncfSetCommandsNum "\(NDS Backlink Interval\)\s*="
+syn match ncfSetCommandsNum "\(NDS Client NCP Retries\)\s*="
+syn match ncfSetCommandsNum "\(NDS External Reference Life Span\)\s*="
+syn match ncfSetCommandsNum "\(NDS Inactivity Synchronization Interval\)\s*="
+syn match ncfSetCommandsNum "\(NDS Janitor Interval\)\s*="
+syn match ncfSetCommandsNum "\(New Service Process Wait Time\)\s*="
+syn match ncfSetCommandsNum "\(Number of Frees for Garbage Collection\)\s*="
+syn match ncfSetCommandsNum "\(Number of Watchdog Packets\)\s*="
+syn match ncfSetCommandsNum "\(Pseudo Preemption Count\)\s*="
+syn match ncfSetCommandsNum "\(Read Ahead LRU Sitting Time Threshold\)\s*="
+syn match ncfSetCommandsNum "\(Remirror Block Size\)\s*="
+syn match ncfSetCommandsNum "\(Reserved Buffers Below 16 Meg\)\s*="
+syn match ncfSetCommandsNum "\(Server Log File Overflow Size\)\s*="
+syn match ncfSetCommandsNum "\(Server Log File State\)\s*="
+syn match ncfSetCommandsNum "\(SMP Polling Count\)\s*="
+syn match ncfSetCommandsNum "\(SMP Stack Size\)\s*="
+syn match ncfSetCommandsNum "\(TIMESYNC Polling Count\)\s*="
+syn match ncfSetCommandsNum "\(TIMESYNC Polling Interval\)\s*="
+syn match ncfSetCommandsNum "\(TIMESYNC Synchronization Radius\)\s*="
+syn match ncfSetCommandsNum "\(TIMESYNC Write Value\)\s*="
+syn match ncfSetCommandsNum "\(Volume Log File Overflow Size\)\s*="
+syn match ncfSetCommandsNum "\(Volume Log File State\)\s*="
+syn match ncfSetCommandsNum "\(Volume Low Warning Reset Threshold\)\s*="
+syn match ncfSetCommandsNum "\(Volume Low Warning Threshold\)\s*="
+syn match ncfSetCommandsNum "\(Volume TTS Log File Overflow Size\)\s*="
+syn match ncfSetCommandsNum "\(Volume TTS Log File State\)\s*="
+syn match ncfSetCommandsNum "\(Worker Thread Execute In a Row Count\)\s*="
+
+" SET Commands that take a Boolean (ON/OFF)
+
+syn match ncfSetCommandsBool "\(Alloc Memory Check Flag\)\s*="
+syn match ncfSetCommandsBool "\(Allow Audit Passwords\)\s*="
+syn match ncfSetCommandsBool "\(Allow Change to Client Rights\)\s*="
+syn match ncfSetCommandsBool "\(Allow Deletion of Active Directories\)\s*="
+syn match ncfSetCommandsBool "\(Allow Invalid Pointers\)\s*="
+syn match ncfSetCommandsBool "\(Allow LIP\)\s*="
+syn match ncfSetCommandsBool "\(Allow Unencrypted Passwords\)\s*="
+syn match ncfSetCommandsBool "\(Allow Unowned Files To Be Extended\)\s*="
+syn match ncfSetCommandsBool "\(Auto Register Memory Above 16 Megabytes\)\s*="
+syn match ncfSetCommandsBool "\(Auto TTS Backout Flag\)\s*="
+syn match ncfSetCommandsBool "\(Automatically Repair Bad Volumes\)\s*="
+syn match ncfSetCommandsBool "\(Check Equivalent to Me\)\s*="
+syn match ncfSetCommandsBool "\(Command Line Prompt Default Choice\)\s*="
+syn match ncfSetCommandsBool "\(Console Display Watchdog Logouts\)\s*="
+syn match ncfSetCommandsBool "\(Daylight Savings Time Status\)\s*="
+syn match ncfSetCommandsBool "\(Developer Option\)\s*="
+syn match ncfSetCommandsBool "\(Display Incomplete IPX Packet Alerts\)\s*="
+syn match ncfSetCommandsBool "\(Display Lost Interrupt Alerts\)\s*="
+syn match ncfSetCommandsBool "\(Display NCP Bad Component Warnings\)\s*="
+syn match ncfSetCommandsBool "\(Display NCP Bad Length Warnings\)\s*="
+syn match ncfSetCommandsBool "\(Display Old API Names\)\s*="
+syn match ncfSetCommandsBool "\(Display Relinquish Control Alerts\)\s*="
+syn match ncfSetCommandsBool "\(Display Spurious Interrupt Alerts\)\s*="
+syn match ncfSetCommandsBool "\(Enable Deadlock Detection\)\s*="
+syn match ncfSetCommandsBool "\(Enable Disk Read After Write Verify\)\s*="
+syn match ncfSetCommandsBool "\(Enable File Compression\)\s*="
+syn match ncfSetCommandsBool "\(Enable IO Handicap Attribute\)\s*="
+syn match ncfSetCommandsBool "\(Enable SECURE.NCF\)\s*="
+syn match ncfSetCommandsBool "\(Fast Volume Mounts\)\s*="
+syn match ncfSetCommandsBool "\(Global Pseudo Preemption\)\s*="
+syn match ncfSetCommandsBool "\(Halt System on Invalid Parameters\)\s*="
+syn match ncfSetCommandsBool "\(Ignore Disk Geometry\)\s*="
+syn match ncfSetCommandsBool "\(Immediate Purge of Deleted Files\)\s*="
+syn match ncfSetCommandsBool "\(NCP File Commit\)\s*="
+syn match ncfSetCommandsBool "\(NDS Trace File Length to Zero\)\s*="
+syn match ncfSetCommandsBool "\(NDS Trace to File\)\s*="
+syn match ncfSetCommandsBool "\(NDS Trace to Screen\)\s*="
+syn match ncfSetCommandsBool "\(New Time With Daylight Savings Time Status\)\s*="
+syn match ncfSetCommandsBool "\(Read Ahead Enabled\)\s*="
+syn match ncfSetCommandsBool "\(Read Fault Emulation\)\s*="
+syn match ncfSetCommandsBool "\(Read Fault Notification\)\s*="
+syn match ncfSetCommandsBool "\(Reject NCP Packets with Bad Components\)\s*="
+syn match ncfSetCommandsBool "\(Reject NCP Packets with Bad Lengths\)\s*="
+syn match ncfSetCommandsBool "\(Replace Console Prompt with Server Name\)\s*="
+syn match ncfSetCommandsBool "\(Reply to Get Nearest Server\)\s*="
+syn match ncfSetCommandsBool "\(SMP Developer Option\)\s*="
+syn match ncfSetCommandsBool "\(SMP Flush Processor Cache\)\s*="
+syn match ncfSetCommandsBool "\(SMP Intrusive Abend Mode\)\s*="
+syn match ncfSetCommandsBool "\(SMP Memory Protection\)\s*="
+syn match ncfSetCommandsBool "\(Sound Bell for Alerts\)\s*="
+syn match ncfSetCommandsBool "\(TIMESYNC Configured Sources\)\s*="
+syn match ncfSetCommandsBool "\(TIMESYNC Directory Tree Mode\)\s*="
+syn match ncfSetCommandsBool "\(TIMESYNC Hardware Clock\)\s*="
+syn match ncfSetCommandsBool "\(TIMESYNC RESET\)\s*="
+syn match ncfSetCommandsBool "\(TIMESYNC Restart Flag\)\s*="
+syn match ncfSetCommandsBool "\(TIMESYNC Service Advertising\)\s*="
+syn match ncfSetCommandsBool "\(TIMESYNC Write Parameters\)\s*="
+syn match ncfSetCommandsBool "\(TTS Abort Dump Flag\)\s*="
+syn match ncfSetCommandsBool "\(Upgrade Low Priority Threads\)\s*="
+syn match ncfSetCommandsBool "\(Volume Low Warn All Users\)\s*="
+syn match ncfSetCommandsBool "\(Write Fault Emulation\)\s*="
+syn match ncfSetCommandsBool "\(Write Fault Notification\)\s*="
+
+" Set Commands that take a "string" -- NOT QUOTED
+
+syn match ncfSetCommandsStr "\(Default Time Server Type\)\s*="
+syn match ncfSetCommandsStr "\(SMP NetWare Kernel Mode\)\s*="
+syn match ncfSetCommandsStr "\(Time Zone\)\s*="
+syn match ncfSetCommandsStr "\(TIMESYNC ADD Time Source\)\s*="
+syn match ncfSetCommandsStr "\(TIMESYNC REMOVE Time Source\)\s*="
+syn match ncfSetCommandsStr "\(TIMESYNC Time Source\)\s*="
+syn match ncfSetCommandsStr "\(TIMESYNC Type\)\s*="
+
+" SET Commands that take a "Time"
+
+syn match ncfSetCommandsTime "\(Command Line Prompt Time Out\)\s*="
+syn match ncfSetCommandsTime "\(Delay Before First Watchdog Packet\)\s*="
+syn match ncfSetCommandsTime "\(Delay Between Watchdog Packets\)\s*="
+syn match ncfSetCommandsTime "\(Directory Cache Buffer NonReferenced Delay\)\s*="
+syn match ncfSetCommandsTime "\(Dirty Directory Cache Delay Time\)\s*="
+syn match ncfSetCommandsTime "\(Dirty Disk Cache Delay Time\)\s*="
+syn match ncfSetCommandsTime "\(File Delete Wait Time\)\s*="
+syn match ncfSetCommandsTime "\(Minimum File Delete Wait Time\)\s*="
+syn match ncfSetCommandsTime "\(Mirrored Devices Are Out of Sync Message Frequency\)\s*="
+syn match ncfSetCommandsTime "\(New Packet Receive Buffer Wait Time\)\s*="
+syn match ncfSetCommandsTime "\(TTS Backout File Truncation Wait Time\)\s*="
+syn match ncfSetCommandsTime "\(TTS UnWritten Cache Wait Time\)\s*="
+syn match ncfSetCommandsTime "\(Turbo FAT Re-Use Wait Time\)\s*="
+syn match ncfSetCommandsTime "\(Daylight Savings Time Offset\)\s*="
+
+syn match ncfSetCommandsTimeDate "\(End of Daylight Savings Time\)\s*="
+syn match ncfSetCommandsTimeDate "\(Start of Daylight Savings Time\)\s*="
+
+syn match ncfSetCommandsBindCon "\(Bindery Context\)\s*=" nextgroup=ncfContString
+
+syn cluster ncfSetCommands contains=ncfSetCommandsNum,ncfSetCommandsBool,ncfSetCommandsStr,ncfSetCommandsTime,ncfSetCommandsTimeDate,ncfSetCommandsBindCon
+
+
+if exists("ncf_highlight_unknowns")
+ syn match Error "[^ \t]*" contains=ALL
+endif
+
+
+" The default methods for highlighting. Can be overridden later
+hi def link ncfCommands Statement
+hi def link ncfSetCommands ncfCommands
+hi def link ncfLogins ncfCommands
+hi def link ncfString String
+hi def link ncfContString ncfString
+hi def link ncfComment Comment
+hi def link ncfImplicit Type
+hi def link ncfBoolean Boolean
+hi def link ncfScript Identifier
+hi def link ncfNumber Number
+hi def link ncfIPAddr ncfNumber
+hi def link ncfHexNumber ncfNumber
+hi def link ncfTime ncfNumber
+hi def link ncfDSTTime ncfNumber
+hi def link ncfPath Constant
+hi def link ncfServerName Special
+hi def link ncfIPXNet ncfServerName
+hi def link ncfTimeTypes Constant
+hi def link ncfSetCommandsNum ncfSetCommands
+hi def link ncfSetCommandsBool ncfSetCommands
+hi def link ncfSetCommandsStr ncfSetCommands
+hi def link ncfSetCommandsTime ncfSetCommands
+hi def link ncfSetCommandsTimeDate ncfSetCommands
+hi def link ncfSetCommandsBindCon ncfSetCommands
+
+
+
+let b:current_syntax = "ncf"
diff --git a/runtime/syntax/neomuttrc.vim b/runtime/syntax/neomuttrc.vim
new file mode 100644
index 0000000..421b11f
--- /dev/null
+++ b/runtime/syntax/neomuttrc.vim
@@ -0,0 +1,880 @@
+" Vim syntax file
+" Language: NeoMutt setup files
+" Maintainer: Richard Russon <rich@flatcap.org>
+" Previous Maintainer: Guillaume Brogi <gui-gui@netcourrier.com>
+" Last Change: 2022-04-08
+" Original version based on syntax/muttrc.vim
+
+" This file covers NeoMutt 2022-04-08
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Set the keyword characters
+setlocal isk=@,48-57,_,-
+
+" handling optional variables
+syntax match muttrcComment "^# .*$" contains=@Spell
+syntax match muttrcComment "^#[^ ].*$"
+syntax match muttrcComment "^#$"
+syntax match muttrcComment "[^\\]#.*$"lc=1
+
+" Escape sequences (back-tick and pipe goes here too)
+syntax match muttrcEscape +\\[#tnr"'Cc ]+
+syntax match muttrcEscape +[`|]+
+syntax match muttrcEscape +\\$+
+
+" The variables takes the following arguments
+syntax region muttrcString contained keepend start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcCommand,muttrcAction,muttrcShellString
+syntax region muttrcString contained keepend start=+'+ms=e skip=+\\'+ end=+'+ contains=muttrcEscape,muttrcCommand,muttrcAction
+syntax match muttrcStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcString,muttrcStringNL
+
+syntax region muttrcShellString matchgroup=muttrcEscape keepend start=+`+ skip=+\\`+ end=+`+ contains=muttrcVarStr,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcCommand
+
+syntax match muttrcRXChars contained /[^\\][][.*?+]\+/hs=s+1
+syntax match muttrcRXChars contained /[][|()][.*?+]*/
+syntax match muttrcRXChars contained /['"]^/ms=s+1
+syntax match muttrcRXChars contained /$['"]/me=e-1
+syntax match muttrcRXChars contained /\\/
+" Why does muttrcRXString2 work with one \ when muttrcRXString requires two?
+syntax region muttrcRXString contained skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXChars
+syntax region muttrcRXString contained skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXChars
+syntax region muttrcRXString contained skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXChars
+" For some reason, skip refuses to match backslashes here...
+syntax region muttrcRXString contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXChars
+syntax region muttrcRXString contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXChars
+syntax region muttrcRXString2 contained skipwhite start=+'+ skip=+\'+ end=+'+ contains=muttrcRXChars
+syntax region muttrcRXString2 contained skipwhite start=+"+ skip=+\"+ end=+"+ contains=muttrcRXChars
+
+" these must be kept synchronized with muttrcRXString, but are intended for muttrcRXHooks
+syntax region muttrcRXHookString contained keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syntax region muttrcRXHookString contained keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syntax region muttrcRXHookString contained keepend skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syntax region muttrcRXHookString contained keepend skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syntax region muttrcRXHookString contained keepend matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syntax match muttrcRXHookStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcRXHookString,muttrcRXHookStringNL
+
+" these are exclusively for args lists (e.g. -rx pat pat pat ...)
+syntax region muttrcRXPat contained keepend skipwhite start=+'+ skip=+\\'+ end=+'\s*+ contains=muttrcRXString nextgroup=muttrcRXPat
+syntax region muttrcRXPat contained keepend skipwhite start=+"+ skip=+\\"+ end=+"\s*+ contains=muttrcRXString nextgroup=muttrcRXPat
+syntax match muttrcRXPat contained /[^-'"#!]\S\+/ skipwhite contains=muttrcRXChars nextgroup=muttrcRXPat
+syntax match muttrcRXDef contained "-rx\s\+" skipwhite nextgroup=muttrcRXPat
+
+syntax match muttrcSpecial +\(['"]\)!\1+
+
+syntax match muttrcSetStrAssignment contained skipwhite /=\s*\%(\\\?\$\)\?[0-9A-Za-z_-]\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syntax region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*"+hs=s+1 end=+"+ skip=+\\"+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString
+syntax region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*'+hs=s+1 end=+'+ skip=+\\'+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString
+syntax match muttrcSetBoolAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syntax match muttrcSetBoolAssignment contained skipwhite /=\s*\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetBoolAssignment contained skipwhite /=\s*"\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetBoolAssignment contained skipwhite /=\s*'\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetQuadAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syntax match muttrcSetQuadAssignment contained skipwhite /=\s*\%(ask-\)\?\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetQuadAssignment contained skipwhite /=\s*"\%(ask-\)\?\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetQuadAssignment contained skipwhite /=\s*'\%(ask-\)\?\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetNumAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syntax match muttrcSetNumAssignment contained skipwhite /=\s*\d\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetNumAssignment contained skipwhite /=\s*"\d\+"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetNumAssignment contained skipwhite /=\s*'\d\+'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+" Now catch some email addresses and headers (purified version from mail.vim)
+syntax match muttrcEmail "[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+"
+syntax match muttrcHeader "\<\c\%(From\|To\|C[Cc]\|B[Cc][Cc]\|Reply-To\|Subject\|Return-Path\|Received\|Date\|Replied\|Attach\)\>:\="
+
+syntax match muttrcKeySpecial contained +\%(\\[Cc'"]\|\^\|\\[01]\d\{2}\)+
+syntax match muttrcKey contained "\S\+" contains=muttrcKeySpecial,muttrcKeyName
+syntax region muttrcKey contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=muttrcKeySpecial,muttrcKeyName
+syntax region muttrcKey contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=muttrcKeySpecial,muttrcKeyName
+syntax match muttrcKeyName contained "\\[trne]"
+syntax match muttrcKeyName contained "\c<\%(BackSpace\|BackTab\|Delete\|Down\|End\|Enter\|Esc\|Home\|Insert\|Left\|Next\|PageDown\|PageUp\|Return\|Right\|Space\|Tab\|Up\)>"
+syntax match muttrcKeyName contained "\c<F\d\+>"
+
+syntax match muttrcFormatErrors contained /%./
+
+syntax match muttrcStrftimeEscapes contained /%[AaBbCcDdeFGgHhIjklMmnpRrSsTtUuVvWwXxYyZz+%]/
+syntax match muttrcStrftimeEscapes contained /%E[cCxXyY]/
+syntax match muttrcStrftimeEscapes contained /%O[BdeHImMSuUVwWy]/
+
+syntax region muttrcAliasFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAliasFormatEscapes,muttrcAliasFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcAliasFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAliasFormatEscapes,muttrcAliasFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcAttachFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcAttachFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcComposeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcComposeFormatEscapes,muttrcComposeFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcComposeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcComposeFormatEscapes,muttrcComposeFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcFolderFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcFolderFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcGroupIndexFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcGroupIndexFormatEscapes,muttrcGroupIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcGroupIndexFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcGroupIndexFormatEscapes,muttrcGroupIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcIndexFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcIndexFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcMixFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcMixFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcPatternFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPatternFormatEscapes,muttrcPatternFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcPatternFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPatternFormatEscapes,muttrcPatternFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcPGPCmdFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcPGPCmdFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcPGPFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcPGPFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcQueryFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcQueryFormatEscapes,muttrcQueryFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcQueryFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcQueryFormatEscapes,muttrcQueryFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcSidebarFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSidebarFormatEscapes,muttrcSidebarFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcSidebarFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSidebarFormatEscapes,muttrcSidebarFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcSmimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcSmimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcStatusFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcStatusFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcStrftimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcStrftimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+" Format escapes and conditionals
+syntax match muttrcFormatConditionals2 contained /[^?]*?/
+function! s:escapesConditionals(baseName, sequence, padding, conditional)
+ exec 'syntax match muttrc' . a:baseName . 'Escapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?\%(' . a:sequence . '\|%\)/'
+ if a:padding
+ exec 'syntax match muttrc' . a:baseName . 'Escapes contained /%[>|*]./'
+ endif
+ if a:conditional
+ exec 'syntax match muttrc' . a:baseName . 'Conditionals contained /%?\%(' . a:sequence . '\)?/ nextgroup=muttrcFormatConditionals2'
+ else
+ exec 'syntax match muttrc' . a:baseName . 'Conditionals contained /%?\%(' . a:sequence . '\)?/'
+ endif
+endfunction
+
+" CHECKED 2022-04-08
+" Ref: alias_format_str() in alias/dlg_alias.c
+call s:escapesConditionals('AliasFormat', '[acfnrt]', 1, 0)
+" Ref: attach_format_str() in attach/dlg_attach.c
+call s:escapesConditionals('AttachFormat', '[CcDdeFfIMmnQsTtuX]', 1, 1)
+" Ref: compose_format_str() in compose/cbar.c
+call s:escapesConditionals('ComposeFormat', '[ahlv]', 1, 1)
+" Ref: folder_format_str() in browser/browser.c
+call s:escapesConditionals('FolderFormat', '[CDdFfgilmNnstu]', 1, 0)
+" Ref: group_index_format_str() in nntp/browse.c
+call s:escapesConditionals('GroupIndexFormat', '[CdfMNns]', 1, 1)
+" Ref: index_format_str() in hdrline.c
+call s:escapesConditionals('IndexFormat', '[AaBbCDdEefgHIiJKLlMmNnOPqRrSsTtuvWXxYyZ(<[{]\|@\i\+@\|G[a-zA-Z]\+\|Fp\=\|z[cst]\|cr\=', 1, 1)
+" Ref: mix_format_str() in remailer.c
+call s:escapesConditionals('MixFormat', '[acns]', 1, 0)
+" Ref: pattern_format_str() in pattern/dlg_pattern.c
+call s:escapesConditionals('PatternFormat', '[den]', 1, 0)
+" Ref: pgp_command_format_str() in ncrypt/pgpinvoke.c
+call s:escapesConditionals('PGPCmdFormat', '[afprs]', 0, 1)
+" Ref: crypt_format_str() in ncrypt/dlg_gpgme.c
+" Ref: pgp_entry_format_str() in ncrypt/dlg_pgp.c
+" Note: crypt_format_str() supports 'p', but pgp_entry_fmt() does not
+call s:escapesConditionals('PGPFormat', '[AaCcFfKkLlnptu[]', 0, 0)
+" Ref: query_format_str() in alias/dlg_query.c
+call s:escapesConditionals('QueryFormat', '[acent]', 1, 1)
+" Ref: sidebar_format_str() in sidebar/window.c
+call s:escapesConditionals('SidebarFormat', '[!BDdFLNnorStZ]', 1, 1)
+" Ref: smime_command_format_str() in ncrypt/smime.c
+call s:escapesConditionals('SmimeFormat', '[aCcdfiks]', 0, 1)
+" Ref: status_format_str() in status.c
+call s:escapesConditionals('StatusFormat', '[bDdFfhLlMmnoPpRrSsTtuVv]', 1, 1)
+
+syntax region muttrcPGPTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes
+syntax region muttrcTimeEscapes contained start=+%(+ end=+)+ contains=muttrcStrftimeEscapes
+syntax region muttrcTimeEscapes contained start=+%<+ end=+>+ contains=muttrcStrftimeEscapes
+syntax region muttrcTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes
+syntax region muttrcTimeEscapes contained start=+%{+ end=+}+ contains=muttrcStrftimeEscapes
+
+syntax match muttrcVarEqualsAliasFmt contained skipwhite "=" nextgroup=muttrcAliasFormatStr
+syntax match muttrcVarEqualsAttachFmt contained skipwhite "=" nextgroup=muttrcAttachFormatStr
+syntax match muttrcVarEqualsComposeFmt contained skipwhite "=" nextgroup=muttrcComposeFormatStr
+syntax match muttrcVarEqualsFolderFmt contained skipwhite "=" nextgroup=muttrcFolderFormatStr
+syntax match muttrcVarEqualsGrpIdxFmt contained skipwhite "=" nextgroup=muttrcGroupIndexFormatStr
+syntax match muttrcVarEqualsIdxFmt contained skipwhite "=" nextgroup=muttrcIndexFormatStr
+syntax match muttrcVarEqualsMixFmt contained skipwhite "=" nextgroup=muttrcMixFormatStr
+syntax match muttrcVarEqualsPatternFmt contained skipwhite "=" nextgroup=muttrcPatternFormatStr
+syntax match muttrcVarEqualsPGPCmdFmt contained skipwhite "=" nextgroup=muttrcPGPCmdFormatStr
+syntax match muttrcVarEqualsPGPFmt contained skipwhite "=" nextgroup=muttrcPGPFormatStr
+syntax match muttrcVarEqualsQueryFmt contained skipwhite "=" nextgroup=muttrcQueryFormatStr
+syntax match muttrcVarEqualsSdbFmt contained skipwhite "=" nextgroup=muttrcSidebarFormatStr
+syntax match muttrcVarEqualsSmimeFmt contained skipwhite "=" nextgroup=muttrcSmimeFormatStr
+syntax match muttrcVarEqualsStatusFmt contained skipwhite "=" nextgroup=muttrcStatusFormatStr
+syntax match muttrcVarEqualsStrftimeFmt contained skipwhite "=" nextgroup=muttrcStrftimeFormatStr
+
+syntax match muttrcVPrefix contained /[?&]/ nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+" CHECKED 2022-04-08
+" List of the different screens in NeoMutt (see MenuNames in menu/type.c)
+syntax keyword muttrcMenu contained alias attach autocrypt browser compose editor generic index key_select_pgp key_select_smime mix pager pgp postpone query smime
+syntax match muttrcMenuList "\S\+" contained contains=muttrcMenu
+syntax match muttrcMenuCommas /,/ contained
+
+syntax region muttrcSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL
+syntax region muttrcSpamPattern contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL
+
+syntax region muttrcNoSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern
+syntax region muttrcNoSpamPattern contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern
+
+syntax match muttrcAttachmentsMimeType contained "[*a-z0-9_-]\+/[*a-z0-9._-]\+\s*" skipwhite nextgroup=muttrcAttachmentsMimeType
+syntax match muttrcAttachmentsFlag contained "[+-]\%([AI]\|inline\|attachment\)\s\+" skipwhite nextgroup=muttrcAttachmentsMimeType
+syntax match muttrcAttachmentsLine "^\s*\%(un\)\?attachments\s\+" skipwhite nextgroup=muttrcAttachmentsFlag
+
+syntax match muttrcUnHighlightSpace contained "\%(\s\+\|\\$\)"
+
+syntax keyword muttrcAsterisk contained *
+
+syntax keyword muttrcListsKeyword lists skipwhite nextgroup=muttrcGroupDef,muttrcComment
+syntax keyword muttrcListsKeyword unlists skipwhite nextgroup=muttrcAsterisk,muttrcComment
+
+syntax keyword muttrcSubscribeKeyword subscribe skipwhite nextgroup=muttrcGroupDef,muttrcComment
+syntax keyword muttrcSubscribeKeyword unsubscribe skipwhite nextgroup=muttrcAsterisk,muttrcComment
+
+syntax keyword muttrcAlternateKeyword contained alternates unalternates
+syntax region muttrcAlternatesLine keepend start=+^\s*\%(un\)\?alternates\s+ skip=+\\$+ end=+$+ contains=muttrcAlternateKeyword,muttrcGroupDef,muttrcRXPat,muttrcUnHighlightSpace,muttrcComment
+
+" muttrcVariable includes a prefix because partial strings are considered valid.
+syntax match muttrcVariable contained "\\\@<![a-zA-Z_-]*\$[a-zA-Z_-]\+" contains=muttrcVariableInner
+syntax match muttrcVariableInner contained "\$[a-zA-Z_-]\+"
+syntax match muttrcEscapedVariable contained "\\\$[a-zA-Z_-]\+"
+
+syntax match muttrcBadAction contained "[^<>]\+" contains=muttrcEmail
+syntax match muttrcAction contained "<[^>]\{-}>" contains=muttrcBadAction,muttrcFunction,muttrcKeyName
+
+" CHECKED 2022-04-08
+" First, hooks that take regular expressions:
+syntax match muttrcRXHookNot contained /!\s*/ skipwhite nextgroup=muttrcRXHookString,muttrcRXHookStringNL
+syntax match muttrcRXHooks /\<\%(account\|append\|close\|crypt\|folder\|mbox\|open\|pgp\)-hook\>/ skipwhite nextgroup=muttrcRXHookNot,muttrcRXHookString,muttrcRXHookStringNL
+
+" Now, hooks that take patterns
+syntax match muttrcPatHookNot contained /!\s*/ skipwhite nextgroup=muttrcPattern
+syntax match muttrcPatHooks /\<\%(charset\|iconv\|index-format\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcPattern
+syntax match muttrcPatHooks /\<\%(message\|reply\|send\|send2\|save\|fcc\|fcc-save\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcOptPattern
+
+" Global hooks that take a command
+syntax keyword muttrcHooks skipwhite shutdown-hook startup-hook timeout-hook nextgroup=muttrcCommand
+
+syntax match muttrcBindFunction contained /\S\+\>/ skipwhite contains=muttrcFunction
+syntax match muttrcBindFunctionNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindFunction,muttrcBindFunctionNL
+syntax match muttrcBindKey contained /\S\+/ skipwhite contains=muttrcKey nextgroup=muttrcBindFunction,muttrcBindFunctionNL
+syntax match muttrcBindKeyNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindKey,muttrcBindKeyNL
+syntax match muttrcBindMenuList contained /\S\+/ skipwhite contains=muttrcMenu,muttrcMenuCommas nextgroup=muttrcBindKey,muttrcBindKeyNL
+syntax match muttrcBindMenuListNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindMenuList,muttrcBindMenuListNL
+
+syntax region muttrcMacroDescr contained keepend skipwhite start=+\s*\S+ms=e skip=+\\ + end=+ \|$+me=s
+syntax region muttrcMacroDescr contained keepend skipwhite start=+'+ms=e skip=+\\'+ end=+'+me=s
+syntax region muttrcMacroDescr contained keepend skipwhite start=+"+ms=e skip=+\\"+ end=+"+me=s
+syntax match muttrcMacroDescrNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syntax region muttrcMacroBody contained skipwhite start="\S" skip='\\ \|\\$' end=' \|$' contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syntax region muttrcMacroBody matchgroup=Type contained skipwhite start=+'+ms=e skip=+\\'+ end=+'\|\%(\%(\\\\\)\@<!$\)+me=s contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcSpam,muttrcNoSpam,muttrcCommand,muttrcAction,muttrcVariable nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syntax region muttrcMacroBody matchgroup=Type contained skipwhite start=+"+ms=e skip=+\\"+ end=+"\|\%(\%(\\\\\)\@<!$\)+me=s contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcSpam,muttrcNoSpam,muttrcCommand,muttrcAction,muttrcVariable nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syntax match muttrcMacroBodyNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroBody,muttrcMacroBodyNL
+syntax match muttrcMacroKey contained /\S\+/ skipwhite contains=muttrcKey nextgroup=muttrcMacroBody,muttrcMacroBodyNL
+syntax match muttrcMacroKeyNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroKey,muttrcMacroKeyNL
+syntax match muttrcMacroMenuList contained /\S\+/ skipwhite contains=muttrcMenu,muttrcMenuCommas nextgroup=muttrcMacroKey,muttrcMacroKeyNL
+syntax match muttrcMacroMenuListNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroMenuList,muttrcMacroMenuListNL
+
+syntax match muttrcAddrContent contained "[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+\s*" skipwhite contains=muttrcEmail nextgroup=muttrcAddrContent
+syntax region muttrcAddrContent contained start=+'+ end=+'\s*+ skip=+\\'+ skipwhite contains=muttrcEmail nextgroup=muttrcAddrContent
+syntax region muttrcAddrContent contained start=+"+ end=+"\s*+ skip=+\\"+ skipwhite contains=muttrcEmail nextgroup=muttrcAddrContent
+syntax match muttrcAddrDef contained "-addr\s\+" skipwhite nextgroup=muttrcAddrContent
+
+syntax match muttrcGroupFlag contained "-group"
+syntax region muttrcGroupDef contained start="-group\s\+" skip="\\$" end="\s" skipwhite keepend contains=muttrcGroupFlag,muttrcUnHighlightSpace
+
+syntax keyword muttrcGroupKeyword contained group ungroup
+syntax region muttrcGroupLine keepend start=+^\s*\%(un\)\?group\s+ skip=+\\$+ end=+$+ contains=muttrcGroupKeyword,muttrcGroupDef,muttrcAddrDef,muttrcRXDef,muttrcUnHighlightSpace,muttrcComment
+
+syntax match muttrcAliasGroupName contained /\w\+/ skipwhite nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL
+syntax match muttrcAliasGroupDefNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasGroupName,muttrcAliasGroupDefNL
+syntax match muttrcAliasGroupDef contained /\s*-group/ skipwhite nextgroup=muttrcAliasGroupName,muttrcAliasGroupDefNL contains=muttrcGroupFlag
+syntax match muttrcAliasComma contained /,/ skipwhite nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL
+syntax match muttrcAliasEmail contained /\S\+@\S\+/ contains=muttrcEmail nextgroup=muttrcAliasName,muttrcAliasNameNL skipwhite
+syntax match muttrcAliasEncEmail contained /<[^>]\+>/ contains=muttrcEmail nextgroup=muttrcAliasComma
+syntax match muttrcAliasEncEmailNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEncEmail,muttrcAliasEncEmailNL
+syntax match muttrcAliasNameNoParens contained /[^<(@]\+\s\+/ nextgroup=muttrcAliasEncEmail,muttrcAliasEncEmailNL
+syntax region muttrcAliasName contained matchgroup=Type start=/(/ end=/)/ skipwhite
+syntax match muttrcAliasNameNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasName,muttrcAliasNameNL
+syntax match muttrcAliasENNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL
+syntax match muttrcAliasKey contained /\s*[^- \t]\S\+/ skipwhite nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL
+syntax match muttrcAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL
+
+syntax match muttrcUnAliasKey contained "\s*\w\+\s*" skipwhite nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
+syntax match muttrcUnAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
+
+" CHECKED 2022-04-08
+" List of letters in Flags in pattern/flags.c
+" Parameter: none
+syntax match muttrcSimplePat contained "!\?\^\?[~][ADEFGgklNOPpQRSTUuVv#$=]"
+" Parameter: range
+syntax match muttrcSimplePat contained "!\?\^\?[~][mnXz]\s*\%([<>-][0-9]\+[kM]\?\|[0-9]\+[kM]\?[-]\%([0-9]\+[kM]\?\)\?\)"
+" Parameter: date
+syntax match muttrcSimplePat contained "!\?\^\?[~][dr]\s*\%(\%(-\?[0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)\|\%(\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)-\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)\?\)\?\)\|\%([<>=][0-9]\+[ymwd]\)\|\%(`[^`]\+`\)\|\%(\$[a-zA-Z0-9_-]\+\)\)" contains=muttrcShellString,muttrcVariable
+" Parameter: regex
+syntax match muttrcSimplePat contained "!\?\^\?[~][BbCcefHhIiLMstwxYy]\s*" nextgroup=muttrcSimplePatRXContainer
+" Parameter: pattern
+syntax match muttrcSimplePat contained "!\?\^\?[%][BbCcefHhiLstxy]\s*" nextgroup=muttrcSimplePatString
+" Parameter: pattern
+syntax match muttrcSimplePat contained "!\?\^\?[=][bcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString
+syntax region muttrcSimplePat contained keepend start=+!\?\^\?[~](+ end=+)+ contains=muttrcSimplePat
+
+"syn match muttrcSimplePat contained /'[^~=%][^']*/ contains=muttrcRXString
+syntax region muttrcSimplePatString contained keepend start=+"+ end=+"+ skip=+\\"+
+syntax region muttrcSimplePatString contained keepend start=+'+ end=+'+ skip=+\\'+
+syntax region muttrcSimplePatString contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1
+syntax region muttrcSimplePatRXContainer contained keepend start=+"+ end=+"+ skip=+\\"+ contains=muttrcRXString
+syntax region muttrcSimplePatRXContainer contained keepend start=+'+ end=+'+ skip=+\\'+ contains=muttrcRXString
+syntax region muttrcSimplePatRXContainer contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1 contains=muttrcRXString
+syntax match muttrcSimplePatMetas contained /[(|)]/
+
+syntax match muttrcOptSimplePat contained skipwhite /[~=%!(^].*/ contains=muttrcSimplePat,muttrcSimplePatMetas
+syntax match muttrcOptSimplePat contained skipwhite /[^~=%!(^].*/ contains=muttrcRXString
+syntax region muttrcOptPattern contained matchgroup=Type keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcOptSimplePat,muttrcUnHighlightSpace nextgroup=muttrcString,muttrcStringNL
+syntax region muttrcOptPattern contained matchgroup=Type keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcOptSimplePat,muttrcUnHighlightSpace nextgroup=muttrcString,muttrcStringNL
+syntax region muttrcOptPattern contained keepend skipwhite start=+[~](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat nextgroup=muttrcString,muttrcStringNL
+syntax match muttrcOptPattern contained skipwhite /[~][A-Za-z]/ contains=muttrcSimplePat nextgroup=muttrcString,muttrcStringNL
+syntax match muttrcOptPattern contained skipwhite /[.]/ nextgroup=muttrcString,muttrcStringNL
+" Keep muttrcPattern and muttrcOptPattern synchronized
+syntax region muttrcPattern contained matchgroup=Type keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas
+syntax region muttrcPattern contained matchgroup=Type keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas
+syntax region muttrcPattern contained keepend skipwhite start=+[~](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat
+syntax match muttrcPattern contained skipwhite /[~][A-Za-z]/ contains=muttrcSimplePat
+syntax match muttrcPattern contained skipwhite /[.]/
+syntax region muttrcPatternInner contained keepend start=+"[~=%!(^]+ms=s+1 skip=+\\"+ end=+"+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas
+syntax region muttrcPatternInner contained keepend start=+'[~=%!(^]+ms=s+1 skip=+\\'+ end=+'+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas
+
+" Colour definitions takes object, foreground and background arguments (regexps excluded).
+syntax match muttrcColorMatchCount contained "[0-9]\+"
+syntax match muttrcColorMatchCountNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL
+syntax region muttrcColorRXPat contained start=+\s*'+ skip=+\\'+ end=+'\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL
+syntax region muttrcColorRXPat contained start=+\s*"+ skip=+\\"+ end=+"\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL
+syntax keyword muttrcColor contained black blue cyan default green magenta red white yellow
+syntax keyword muttrcColor contained brightblack brightblue brightcyan brightdefault brightgreen brightmagenta brightred brightwhite brightyellow
+syntax match muttrcColor contained "\<\%(bright\)\=color\d\{1,3}\>"
+" Now for the structure of the color line
+syntax match muttrcColorRXNL contained skipnl "\s*\\$" nextgroup=muttrcColorRXPat,muttrcColorRXNL
+syntax match muttrcColorBG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorRXPat,muttrcColorRXNL
+syntax match muttrcColorBGNL contained skipnl "\s*\\$" nextgroup=muttrcColorBG,muttrcColorBGNL
+syntax match muttrcColorFG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBG,muttrcColorBGNL
+syntax match muttrcColorFGNL contained skipnl "\s*\\$" nextgroup=muttrcColorFG,muttrcColorFGNL
+syntax match muttrcColorContext contained /\s*[$]\?\w\+/ contains=muttrcColorField,muttrcVariable,muttrcUnHighlightSpace,muttrcColorCompose nextgroup=muttrcColorFG,muttrcColorFGNL
+syntax match muttrcColorNL contained skipnl "\s*\\$" nextgroup=muttrcColorContext,muttrcColorNL,muttrcColorCompose
+syntax match muttrcColorKeyword contained /^\s*color\s\+/ nextgroup=muttrcColorContext,muttrcColorNL,muttrcColorCompose
+" And now color's brother:
+syntax region muttrcUnColorPatterns contained skipwhite start=+\s*'+ end=+'+ skip=+\\'+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL
+syntax region muttrcUnColorPatterns contained skipwhite start=+\s*"+ end=+"+ skip=+\\"+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL
+syntax match muttrcUnColorPatterns contained skipwhite /\s*[^'"\s]\S\*/ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL
+syntax match muttrcUnColorPatNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL
+syntax match muttrcUnColorAll contained skipwhite /[*]/
+syntax match muttrcUnColorAPNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorPatterns,muttrcUnColorAll,muttrcUnColorAPNL
+syntax match muttrcUnColorIndex contained skipwhite /\s*index\s\+/ nextgroup=muttrcUnColorPatterns,muttrcUnColorAll,muttrcUnColorAPNL
+syntax match muttrcUnColorIndexNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorIndex,muttrcUnColorIndexNL
+syntax match muttrcUnColorKeyword contained skipwhite /^\s*uncolor\s\+/ nextgroup=muttrcUnColorIndex,muttrcUnColorIndexNL
+syntax region muttrcUnColorLine keepend start=+^\s*uncolor\s+ skip=+\\$+ end=+$+ contains=muttrcUnColorKeyword,muttrcComment,muttrcUnHighlightSpace
+
+syntax keyword muttrcMonoAttrib contained bold none normal reverse standout underline
+syntax keyword muttrcMono contained mono skipwhite nextgroup=muttrcColorField,muttrcColorCompose
+syntax match muttrcMonoLine "^\s*mono\s\+\S\+" skipwhite nextgroup=muttrcMonoAttrib contains=muttrcMono
+
+" CHECKED 2022-04-08
+" List of fields in ColorFields in color/commmand.c
+syntax keyword muttrcColorField skipwhite contained
+ \ attachment attach_headers body bold error hdrdefault header index index_author
+ \ index_collapsed index_date index_flags index_label index_number index_size index_subject
+ \ index_tag index_tags indicator markers message normal options progress prompt quoted
+ \ search sidebar_divider sidebar_flagged sidebar_highlight sidebar_indicator sidebar_new
+ \ sidebar_ordinary sidebar_spoolfile sidebar_unread signature status tilde tree underline
+ \ warning nextgroup=muttrcColor
+
+syntax match muttrcColorField contained "\<quoted\d\=\>"
+
+syntax match muttrcColorCompose skipwhite contained /\s*compose\s*/ nextgroup=muttrcColorComposeField
+
+" CHECKED 2022-04-08
+" List of fields in ComposeColorFields in color/command.c
+syntax keyword muttrcColorComposeField skipwhite contained
+ \ header security_both security_encrypt security_none security_sign
+ \ nextgroup=muttrcColorFG,muttrcColorFGNL
+syntax region muttrcColorLine keepend start=/^\s*color\s\+/ skip=+\\$+ end=+$+ contains=muttrcColorKeyword,muttrcComment,muttrcUnHighlightSpace
+
+function! s:boolQuadGen(type, vars, deprecated)
+ let l:novars = copy(a:vars)
+ call map(l:novars, '"no" . v:val')
+ let l:invvars = copy(a:vars)
+ call map(l:invvars, '"inv" . v:val')
+
+ let l:orig_type = copy(a:type)
+ if a:deprecated
+ let l:type = 'Deprecated' . a:type
+ exec 'syntax keyword muttrcVar' . l:type . ' ' . join(a:vars)
+ exec 'syntax keyword muttrcVar' . l:type . ' ' . join(l:novars)
+ exec 'syntax keyword muttrcVar' . l:type . ' ' . join(l:invvars)
+ else
+ let l:type = a:type
+ exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(a:vars) . ' nextgroup=muttrcSet' . l:orig_type . 'Assignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr'
+ exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(l:novars) . ' nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr'
+ exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(l:invvars) . ' nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr'
+ endif
+
+endfunction
+
+" CHECKED 2022-04-08
+" List of DT_BOOL in MuttVars in mutt_config.c
+call s:boolQuadGen('Bool', [
+ \ 'abort_backspace', 'allow_8bit', 'allow_ansi', 'arrow_cursor', 'ascii_chars', 'ask_bcc',
+ \ 'ask_cc', 'ask_follow_up', 'ask_x_comment_to', 'attach_save_without_prompting',
+ \ 'attach_split', 'autocrypt', 'autocrypt_reply', 'auto_edit', 'auto_subscribe', 'auto_tag',
+ \ 'beep', 'beep_new', 'bounce_delivered', 'braille_friendly',
+ \ 'browser_abbreviate_mailboxes', 'change_folder_next', 'check_mbox_size', 'check_new',
+ \ 'collapse_all', 'collapse_flagged', 'collapse_unread', 'compose_show_user_headers',
+ \ 'confirm_append', 'confirm_create', 'copy_decode_weed', 'count_alternatives',
+ \ 'crypt_auto_encrypt', 'crypt_auto_pgp', 'crypt_auto_sign', 'crypt_auto_smime',
+ \ 'crypt_confirm_hook', 'crypt_opportunistic_encrypt',
+ \ 'crypt_opportunistic_encrypt_strong_keys', 'crypt_protected_headers_read',
+ \ 'crypt_protected_headers_save', 'crypt_protected_headers_write', 'crypt_reply_encrypt',
+ \ 'crypt_reply_sign', 'crypt_reply_sign_encrypted', 'crypt_timestamp', 'crypt_use_gpgme',
+ \ 'crypt_use_pka', 'delete_untag', 'digest_collapse', 'duplicate_threads', 'edit_headers',
+ \ 'encode_from', 'fast_reply', 'fcc_before_send', 'fcc_clear', 'flag_safe', 'followup_to',
+ \ 'force_name', 'forward_decode', 'forward_decrypt', 'forward_quote', 'forward_references',
+ \ 'hdrs', 'header', 'header_color_partial', 'help', 'hidden_host', 'hide_limited',
+ \ 'hide_missing', 'hide_thread_subject', 'hide_top_limited', 'hide_top_missing',
+ \ 'history_remove_dups', 'honor_disposition', 'idn_decode', 'idn_encode',
+ \ 'ignore_list_reply_to', 'imap_check_subscribed', 'imap_condstore', 'imap_deflate',
+ \ 'imap_idle', 'imap_list_subscribed', 'imap_passive', 'imap_peek', 'imap_qresync',
+ \ 'imap_rfc5161', 'imap_server_noise', 'implicit_autoview', 'include_encrypted',
+ \ 'include_only_first', 'keep_flagged', 'local_date_header', 'mailcap_sanitize',
+ \ 'maildir_check_cur', 'maildir_header_cache_verify', 'maildir_trash', 'mail_check_recent',
+ \ 'mail_check_stats', 'markers', 'mark_old', 'menu_move_off', 'menu_scroll',
+ \ 'message_cache_clean', 'meta_key', 'me_too', 'mh_purge', 'mime_forward_decode',
+ \ 'mime_type_query_first', 'narrow_tree', 'nm_query_window_enable', 'nm_record',
+ \ 'nntp_listgroup', 'nntp_load_description', 'pager_stop', 'pgp_auto_decode',
+ \ 'pgp_auto_inline', 'pgp_check_exit', 'pgp_check_gpg_decrypt_status_fd',
+ \ 'pgp_ignore_subkeys', 'pgp_long_ids', 'pgp_reply_inline', 'pgp_retainable_sigs',
+ \ 'pgp_self_encrypt', 'pgp_show_unusable', 'pgp_strict_enc', 'pgp_use_gpg_agent',
+ \ 'pipe_decode', 'pipe_decode_weed', 'pipe_split', 'pop_auth_try_all', 'pop_last',
+ \ 'postpone_encrypt', 'print_decode', 'print_decode_weed', 'print_split', 'prompt_after',
+ \ 'read_only', 'reflow_space_quotes', 'reflow_text', 'reply_self', 'reply_with_xorig',
+ \ 'resolve', 'resume_draft_files', 'resume_edited_draft_files', 'reverse_alias',
+ \ 'reverse_name', 'reverse_real_name', 'rfc2047_parameters', 'save_address', 'save_empty',
+ \ 'save_name', 'save_unsubscribed', 'score', 'show_new_news', 'show_only_unread',
+ \ 'sidebar_folder_indent', 'sidebar_new_mail_only', 'sidebar_next_new_wrap',
+ \ 'sidebar_non_empty_mailbox_only', 'sidebar_on_right', 'sidebar_short_path',
+ \ 'sidebar_visible', 'sig_dashes', 'sig_on_top', 'size_show_bytes', 'size_show_fractions',
+ \ 'size_show_mb', 'size_units_on_left', 'smart_wrap', 'smime_ask_cert_label',
+ \ 'smime_decrypt_use_default_key', 'smime_is_default', 'smime_self_encrypt', 'sort_re',
+ \ 'ssl_force_tls', 'ssl_use_sslv2', 'ssl_use_sslv3', 'ssl_use_system_certs',
+ \ 'ssl_use_tlsv1', 'ssl_use_tlsv1_1', 'ssl_use_tlsv1_2', 'ssl_use_tlsv1_3',
+ \ 'ssl_verify_dates', 'ssl_verify_host', 'ssl_verify_partial_chains', 'status_on_top',
+ \ 'strict_threads', 'suspend', 'text_flowed', 'thorough_search', 'thread_received', 'tilde',
+ \ 'ts_enabled', 'tunnel_is_secure', 'uncollapse_jump', 'uncollapse_new', 'user_agent',
+ \ 'use_8bit_mime', 'use_domain', 'use_envelope_from', 'use_from', 'use_ipv6',
+ \ 'virtual_spool_file', 'wait_key', 'weed', 'wrap_search', 'write_bcc', 'x_comment_to'
+ \ ], 0)
+
+" CHECKED 2022-04-08
+" Deprecated Bools
+" List of DT_SYNONYM or DT_DEPRECATED Bools in MuttVars in mutt_config.c
+call s:boolQuadGen('Bool', [
+ \ 'askbcc', 'askcc', 'autoedit', 'confirmappend', 'confirmcreate', 'crypt_autoencrypt',
+ \ 'crypt_autopgp', 'crypt_autosign', 'crypt_autosmime', 'crypt_confirmhook',
+ \ 'crypt_replyencrypt', 'crypt_replysign', 'crypt_replysignencrypted', 'edit_hdrs',
+ \ 'envelope_from', 'forw_decode', 'forw_decrypt', 'forw_quote', 'header_cache_compress',
+ \ 'ignore_linear_white_space', 'imap_servernoise', 'include_onlyfirst', 'metoo',
+ \ 'mime_subject', 'pgp_autoencrypt', 'pgp_autoinline', 'pgp_autosign',
+ \ 'pgp_auto_traditional', 'pgp_create_traditional', 'pgp_replyencrypt', 'pgp_replyinline',
+ \ 'pgp_replysign', 'pgp_replysignencrypted', 'reverse_realname', 'ssl_usesystemcerts',
+ \ 'use_8bitmime', 'virtual_spoolfile', 'xterm_set_titles'
+ \ ], 1)
+
+" CHECKED 2022-04-08
+" List of DT_QUAD in MuttVars in mutt_config.c
+call s:boolQuadGen('Quad', [
+ \ 'abort_noattach', 'abort_nosubject', 'abort_unmodified', 'bounce', 'catchup_newsgroup',
+ \ 'copy', 'crypt_verify_sig', 'delete', 'fcc_attach', 'followup_to_poster',
+ \ 'forward_attachments', 'forward_edit', 'honor_followup_to', 'include', 'mime_forward',
+ \ 'mime_forward_rest', 'move', 'pgp_mime_auto', 'pop_delete', 'pop_reconnect', 'postpone',
+ \ 'post_moderated', 'print', 'quit', 'recall', 'reply_to', 'ssl_starttls',
+ \ ], 0)
+
+" CHECKED 2022-04-08
+" Deprecated Quads
+" List of DT_SYNONYM or DT_DEPRECATED Quads in MuttVars in mutt_config.c
+call s:boolQuadGen('Quad', [
+ \ 'mime_fwd', 'pgp_encrypt_self', 'pgp_verify_sig', 'smime_encrypt_self'
+ \ ], 1)
+
+" CHECKED 2022-04-08
+" List of DT_NUMBER or DT_LONG in MuttVars in mutt_config.c
+syntax keyword muttrcVarNum skipwhite contained
+ \ connect_timeout debug_level header_cache_compress_level history imap_fetch_chunk_size
+ \ imap_keepalive imap_pipeline_depth imap_poll_timeout mail_check mail_check_stats_interval
+ \ menu_context net_inc nm_db_limit nm_open_timeout nm_query_window_current_position
+ \ nm_query_window_duration nntp_context nntp_poll pager_context pager_index_lines
+ \ pager_read_delay pager_skip_quoted_context pgp_timeout pop_check_interval read_inc
+ \ reflow_wrap save_history score_threshold_delete score_threshold_flag score_threshold_read
+ \ search_context sendmail_wait sidebar_component_depth sidebar_width sleep_time
+ \ smime_timeout ssl_min_dh_prime_bits timeout time_inc toggle_quoted_show_levels wrap
+ \ wrap_headers write_inc
+ \ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+" CHECKED 2022-04-08
+" Deprecated Numbers
+syntax keyword muttrcVarDeprecatedNum contained skipwhite
+ \ header_cache_pagesize pop_checkinterval skip_quoted_offset
+
+" CHECKED 2022-04-08
+" List of DT_STRING in MuttVars in mutt_config.c
+" Special cases first, and all the rest at the end
+" Formats themselves must be updated in their respective groups
+" See s:escapesConditionals
+syntax match muttrcVarStr contained skipwhite 'my_[a-zA-Z0-9_]\+' nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax keyword muttrcVarStr contained skipwhite alias_format nextgroup=muttrcVarEqualsAliasFmt
+syntax keyword muttrcVarStr contained skipwhite attach_format nextgroup=muttrcVarEqualsAttachFmt
+syntax keyword muttrcVarStr contained skipwhite compose_format nextgroup=muttrcVarEqualsComposeFmt
+syntax keyword muttrcVarStr contained skipwhite folder_format vfolder_format nextgroup=muttrcVarEqualsFolderFmt
+syntax keyword muttrcVarStr contained skipwhite attribution forward_format index_format message_format pager_format nextgroup=muttrcVarEqualsIdxFmt
+syntax keyword muttrcVarStr contained skipwhite mix_entry_format nextgroup=muttrcVarEqualsMixFmt
+syntax keyword muttrcVarStr contained skipwhite pattern_format nextgroup=muttrcVarEqualsPatternFmt
+syntax keyword muttrcVarStr contained skipwhite
+ \ pgp_clear_sign_command pgp_decode_command pgp_decrypt_command pgp_encrypt_only_command
+ \ pgp_encrypt_sign_command pgp_export_command pgp_get_keys_command pgp_import_command
+ \ pgp_list_pubring_command pgp_list_secring_command pgp_sign_command pgp_verify_command
+ \ pgp_verify_key_command
+ \ nextgroup=muttrcVarEqualsPGPCmdFmt
+syntax keyword muttrcVarStr contained skipwhite pgp_entry_format nextgroup=muttrcVarEqualsPGPFmt
+syntax keyword muttrcVarStr contained skipwhite query_format nextgroup=muttrcVarEqualsQueryFmt
+syntax keyword muttrcVarStr contained skipwhite
+ \ smime_decrypt_command smime_encrypt_command smime_get_cert_command
+ \ smime_get_cert_email_command smime_get_signer_cert_command smime_import_cert_command
+ \ smime_pk7out_command smime_sign_command smime_verify_command smime_verify_opaque_command
+ \ nextgroup=muttrcVarEqualsSmimeFmt
+syntax keyword muttrcVarStr contained skipwhite status_format ts_icon_format ts_status_format nextgroup=muttrcVarEqualsStatusFmt
+syntax keyword muttrcVarStr contained skipwhite date_format nextgroup=muttrcVarEqualsStrftimeFmt
+syntax keyword muttrcVarStr contained skipwhite group_index_format nextgroup=muttrcVarEqualsGrpIdxFmt
+syntax keyword muttrcVarStr contained skipwhite sidebar_format nextgroup=muttrcVarEqualsSdbFmt
+syntax keyword muttrcVarStr contained skipwhite
+ \ abort_key arrow_string assumed_charset attach_charset attach_sep attribution_locale
+ \ autocrypt_acct_format charset config_charset content_type crypt_protected_headers_subject
+ \ default_hook dsn_notify dsn_return empty_subject forward_attribution_intro
+ \ forward_attribution_trailer greeting header_cache_backend header_cache_compress_method
+ \ hidden_tags hostname imap_authenticators imap_delim_chars imap_headers imap_login
+ \ imap_pass imap_user indent_string mailcap_path mark_macro_prefix mh_seq_flagged
+ \ mh_seq_replied mh_seq_unseen newsgroups_charset news_server nm_default_url nm_exclude_tags
+ \ nm_flagged_tag nm_query_type nm_query_window_current_search nm_query_window_or_terms
+ \ nm_query_window_timebase nm_record_tags nm_replied_tag nm_unread_tag nntp_authenticators
+ \ nntp_pass nntp_user pgp_default_key pgp_sign_as pipe_sep pop_authenticators pop_host
+ \ pop_pass pop_user postpone_encrypt_as post_indent_string preconnect preferred_languages
+ \ real_name send_charset show_multipart_alternative sidebar_delim_chars sidebar_divider_char
+ \ sidebar_indent_string simple_search smime_default_key smime_encrypt_with smime_sign_as
+ \ smime_sign_digest_alg smtp_authenticators smtp_pass smtp_url smtp_user spam_separator
+ \ ssl_ciphers
+ \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+" Deprecated strings
+syntax keyword muttrcVarDeprecatedStr
+ \ abort_noattach_regexp attach_keyword escape forw_format hdr_format indent_str msg_format
+ \ nm_default_uri pgp_clearsign_command pgp_getkeys_command pgp_self_encrypt_as
+ \ post_indent_str print_cmd quote_regexp realname reply_regexp smime_self_encrypt_as
+ \ spoolfile visual xterm_icon xterm_title
+
+" CHECKED 2022-04-08
+" List of DT_ADDRESS
+syntax keyword muttrcVarStr contained skipwhite envelope_from_address from nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+" List of DT_ENUM
+syntax keyword muttrcVarStr contained skipwhite mbox_type use_threads nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+" List of DT_MBTABLE
+syntax keyword muttrcVarStr contained skipwhite crypt_chars flag_chars from_chars status_chars to_chars nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+" CHECKED 2022-04-08
+" List of DT_PATH or DT_MAILBOX
+syntax keyword muttrcVarStr contained skipwhite
+ \ alias_file attach_save_dir autocrypt_dir certificate_file debug_file
+ \ entropy_file folder header_cache history_file mbox message_cachedir newsrc
+ \ news_cache_dir postponed record signature smime_ca_location
+ \ smime_certificates smime_keys spool_file ssl_ca_certificates_file ssl_client_cert
+ \ tmpdir trash
+ \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+" List of DT_COMMAND (excluding pgp_*_command and smime_*_command)
+syntax keyword muttrcVarStr contained skipwhite
+ \ display_filter editor inews ispell mixmaster new_mail_command pager
+ \ print_command query_command sendmail shell external_search_command
+ \ imap_oauth_refresh_command pop_oauth_refresh_command
+ \ mime_type_query_command smtp_oauth_refresh_command tunnel
+ \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+" CHECKED 2022-04-08
+" List of DT_REGEX
+syntax keyword muttrcVarStr contained skipwhite
+ \ abort_noattach_regex gecos_mask mask pgp_decryption_okay pgp_good_sign quote_regex
+ \ reply_regex smileys
+ \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+" List of DT_SORT
+syntax keyword muttrcVarStr contained skipwhite
+ \ pgp_sort_keys sidebar_sort_method sort sort_alias sort_aux sort_browser
+ \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+" CHECKED 2022-04-08
+" List of commands in mutt_commands in mutt_commands.c
+" Remember to remove hooks, they have already been dealt with
+syntax keyword muttrcCommand skipwhite alias nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL
+syntax keyword muttrcCommand skipwhite bind nextgroup=muttrcBindMenuList,muttrcBindMenuListNL
+syntax keyword muttrcCommand skipwhite exec nextgroup=muttrcFunction
+syntax keyword muttrcCommand skipwhite macro nextgroup=muttrcMacroMenuList,muttrcMacroMenuListNL
+syntax keyword muttrcCommand skipwhite nospam nextgroup=muttrcNoSpamPattern
+syntax keyword muttrcCommand skipwhite set unset reset toggle nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax keyword muttrcCommand skipwhite spam nextgroup=muttrcSpamPattern
+syntax keyword muttrcCommand skipwhite unalias nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
+syntax keyword muttrcCommand skipwhite unhook nextgroup=muttrcHooks
+syntax keyword muttrcCommand skipwhite
+ \ alternative_order attachments auto_view cd echo finish hdr_order ifdef ifndef ignore lua
+ \ lua-source mailboxes mailto_allow mime_lookup my_hdr named-mailboxes push score setenv
+ \ sidebar_whitelist source subjectrx subscribe-to tag-formats tag-transforms
+ \ unalternative_order unattachments unauto_view unbind uncolor unhdr_order unignore unmacro
+ \ unmailboxes unmailto_allow unmime_lookup unmono unmy_hdr unscore unsetenv
+ \ unsidebar_whitelist unsubjectrx unsubscribe-from unvirtual-mailboxes virtual-mailboxes
+
+function! s:genFunctions(functions)
+ for f in a:functions
+ exec 'syntax match muttrcFunction contained "\<' . l:f . '\>"'
+ endfor
+endfunction
+
+" CHECKED 2022-04-08
+" List of functions in functions.c
+" Note: 'noop' is included but is elsewhere in the source
+call s:genFunctions(['noop',
+ \ 'accept', 'alias-dialog', 'append', 'attach-file', 'attach-key', 'attach-message',
+ \ 'attach-news-message', 'autocrypt-acct-menu', 'autocrypt-menu', 'backspace',
+ \ 'backward-char', 'backward-word', 'bol', 'bottom', 'bottom-page', 'bounce-message',
+ \ 'break-thread', 'buffy-cycle', 'buffy-list', 'capitalize-word', 'catchup', 'chain-next',
+ \ 'chain-prev', 'change-dir', 'change-folder', 'change-folder-readonly', 'change-newsgroup',
+ \ 'change-newsgroup-readonly', 'change-vfolder', 'check-new', 'check-stats',
+ \ 'check-traditional-pgp', 'clear-flag', 'collapse-all', 'collapse-parts',
+ \ 'collapse-thread', 'complete', 'complete-query', 'compose-to-sender', 'copy-file',
+ \ 'copy-message', 'create-account', 'create-alias', 'create-mailbox', 'current-bottom',
+ \ 'current-middle', 'current-top', 'decode-copy', 'decode-save', 'decrypt-copy',
+ \ 'decrypt-save', 'delete', 'delete-account', 'delete-char', 'delete-entry',
+ \ 'delete-mailbox', 'delete-message', 'delete-pattern', 'delete-subthread', 'delete-thread',
+ \ 'descend-directory', 'detach-file', 'display-address', 'display-filename',
+ \ 'display-message', 'display-toggle-weed', 'downcase-word', 'edit', 'edit-bcc', 'edit-cc',
+ \ 'edit-content-id', 'edit-description', 'edit-encoding', 'edit-fcc', 'edit-file',
+ \ 'edit-followup-to', 'edit-from', 'edit-headers', 'edit-label', 'edit-language',
+ \ 'edit-message', 'edit-mime', 'edit-newsgroups', 'edit-or-view-raw-message',
+ \ 'edit-raw-message', 'edit-reply-to', 'edit-subject', 'edit-to', 'edit-type',
+ \ 'edit-x-comment-to', 'end-cond', 'enter-command', 'enter-mask', 'entire-thread', 'eol',
+ \ 'error-history', 'exit', 'extract-keys', 'fetch-mail', 'filter-entry', 'first-entry',
+ \ 'flag-message', 'followup-message', 'forget-passphrase', 'forward-char',
+ \ 'forward-message', 'forward-to-group', 'forward-word', 'get-attachment', 'get-children',
+ \ 'get-message', 'get-parent', 'goto-folder', 'goto-parent', 'group-alternatives',
+ \ 'group-chat-reply', 'group-multilingual', 'group-related', 'group-reply', 'half-down',
+ \ 'half-up', 'help', 'history-down', 'history-search', 'history-up', 'imap-fetch-mail',
+ \ 'imap-logout-all', 'insert', 'ispell', 'jump', 'kill-eol', 'kill-eow', 'kill-line',
+ \ 'kill-word', 'last-entry', 'limit', 'limit-current-thread', 'link-threads', 'list-reply',
+ \ 'list-subscribe', 'list-unsubscribe', 'mail', 'mail-key', 'mailbox-cycle', 'mailbox-list',
+ \ 'mark-as-new', 'mark-message', 'middle-page', 'mix', 'modify-labels',
+ \ 'modify-labels-then-hide', 'modify-tags', 'modify-tags-then-hide', 'move-down', 'move-up',
+ \ 'new-mime', 'next-entry', 'next-line', 'next-new', 'next-new-then-unread', 'next-page',
+ \ 'next-subthread', 'next-thread', 'next-undeleted', 'next-unread', 'next-unread-mailbox',
+ \ 'parent-message', 'pgp-menu', 'pipe-entry', 'pipe-message', 'post-message',
+ \ 'postpone-message', 'previous-entry', 'previous-line', 'previous-new',
+ \ 'previous-new-then-unread', 'previous-page', 'previous-subthread', 'previous-thread',
+ \ 'previous-undeleted', 'previous-unread', 'print-entry', 'print-message', 'purge-message',
+ \ 'purge-thread', 'quasi-delete', 'query', 'query-append', 'quit', 'quote-char',
+ \ 'read-subthread', 'read-thread', 'recall-message', 'reconstruct-thread', 'redraw-screen',
+ \ 'refresh', 'reload-active', 'rename-attachment', 'rename-file', 'rename-mailbox', 'reply',
+ \ 'resend-message', 'root-message', 'save-entry', 'save-message', 'search', 'search-next',
+ \ 'search-opposite', 'search-reverse', 'search-toggle', 'select-entry', 'select-new',
+ \ 'send-message', 'set-flag', 'shell-escape', 'show-limit', 'show-log-messages',
+ \ 'show-version', 'sidebar-first', 'sidebar-last', 'sidebar-next', 'sidebar-next-new',
+ \ 'sidebar-open', 'sidebar-page-down', 'sidebar-page-up', 'sidebar-prev',
+ \ 'sidebar-prev-new', 'sidebar-toggle-virtual', 'sidebar-toggle-visible', 'skip-headers',
+ \ 'skip-quoted', 'smime-menu', 'sort', 'sort-alias', 'sort-alias-reverse', 'sort-mailbox',
+ \ 'sort-reverse', 'subscribe', 'subscribe-pattern', 'sync-mailbox', 'tag-entry',
+ \ 'tag-message', 'tag-pattern', 'tag-prefix', 'tag-prefix-cond', 'tag-subthread',
+ \ 'tag-thread', 'toggle-active', 'toggle-disposition', 'toggle-mailboxes', 'toggle-new',
+ \ 'toggle-prefer-encrypt', 'toggle-quoted', 'toggle-read', 'toggle-recode',
+ \ 'toggle-subscribed', 'toggle-unlink', 'toggle-write', 'top', 'top-page',
+ \ 'transpose-chars', 'uncatchup', 'undelete-entry', 'undelete-message', 'undelete-pattern',
+ \ 'undelete-subthread', 'undelete-thread', 'ungroup-attachment', 'unsubscribe',
+ \ 'unsubscribe-pattern', 'untag-pattern', 'upcase-word', 'update-encoding', 'verify-key',
+ \ 'vfolder-from-query', 'vfolder-from-query-readonly', 'vfolder-window-backward',
+ \ 'vfolder-window-forward', 'vfolder-window-reset', 'view-attach', 'view-attachments',
+ \ 'view-file', 'view-mailcap', 'view-name', 'view-pager', 'view-raw-message', 'view-text',
+ \ 'what-key', 'write-fcc'
+ \ ])
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+highlight def link muttrcSetBoolAssignment Boolean
+highlight def link muttrcSetQuadAssignment Boolean
+
+highlight def link muttrcComment Comment
+
+highlight def link muttrcAlternatesLine Error
+highlight def link muttrcBadAction Error
+highlight def link muttrcBindFunction Error
+highlight def link muttrcBindMenuList Error
+highlight def link muttrcColorBG Error
+highlight def link muttrcColorBGH Error
+highlight def link muttrcColorBGI Error
+highlight def link muttrcColorContext Error
+highlight def link muttrcColorFG Error
+highlight def link muttrcColorFGH Error
+highlight def link muttrcColorFGI Error
+highlight def link muttrcColorLine Error
+highlight def link muttrcFormatErrors Error
+highlight def link muttrcGroupLine Error
+highlight def link muttrcListsLine Error
+highlight def link muttrcPattern Error
+highlight def link muttrcSubscribeLine Error
+highlight def link muttrcUnColorLine Error
+highlight def link muttrcVarDeprecatedBool Error
+highlight def link muttrcVarDeprecatedQuad Error
+highlight def link muttrcVarDeprecatedStr Error
+
+highlight def link muttrcAliasEncEmail Identifier
+highlight def link muttrcAliasKey Identifier
+highlight def link muttrcColorCompose Identifier
+highlight def link muttrcColorComposeField Identifier
+highlight def link muttrcColorContextH Identifier
+highlight def link muttrcColorContextI Identifier
+highlight def link muttrcColorField Identifier
+highlight def link muttrcMenu Identifier
+highlight def link muttrcSimplePat Identifier
+highlight def link muttrcUnAliasKey Identifier
+highlight def link muttrcUnColorIndex Identifier
+highlight def link muttrcVarBool Identifier
+highlight def link muttrcVarNum Identifier
+highlight def link muttrcVarQuad Identifier
+highlight def link muttrcVarStr Identifier
+
+highlight def link muttrcCommand Keyword
+
+highlight def link muttrcAction Macro
+highlight def link muttrcAliasGroupName Macro
+highlight def link muttrcFunction Macro
+highlight def link muttrcGroupDef Macro
+highlight def link muttrcSimplePatString Macro
+
+highlight def link muttrcMonoAttrib muttrcColor
+
+highlight def link muttrcAlternateKeyword muttrcCommand
+highlight def link muttrcAttachmentsLine muttrcCommand
+highlight def link muttrcColorKeyword muttrcCommand
+highlight def link muttrcGroupKeyword muttrcCommand
+highlight def link muttrcListsKeyword muttrcCommand
+highlight def link muttrcMono muttrcCommand
+highlight def link muttrcPatHooks muttrcCommand
+highlight def link muttrcRXHooks muttrcCommand
+highlight def link muttrcSubscribeKeyword muttrcCommand
+highlight def link muttrcUnColorKeyword muttrcCommand
+
+highlight def link muttrcAliasFormatEscapes muttrcEscape
+highlight def link muttrcAttachFormatEscapes muttrcEscape
+highlight def link muttrcComposeFormatEscapes muttrcEscape
+highlight def link muttrcFolderFormatEscapes muttrcEscape
+highlight def link muttrcGroupIndexFormatEscapes muttrcEscape
+highlight def link muttrcIndexFormatEscapes muttrcEscape
+highlight def link muttrcMixFormatEscapes muttrcEscape
+highlight def link muttrcPatternFormatEscapes muttrcEscape
+highlight def link muttrcPGPCmdFormatEscapes muttrcEscape
+highlight def link muttrcPGPFormatEscapes muttrcEscape
+highlight def link muttrcPGPTimeEscapes muttrcEscape
+highlight def link muttrcQueryFormatEscapes muttrcEscape
+highlight def link muttrcShellString muttrcEscape
+highlight def link muttrcSidebarFormatEscapes muttrcEscape
+highlight def link muttrcSmimeFormatEscapes muttrcEscape
+highlight def link muttrcStatusFormatEscapes muttrcEscape
+highlight def link muttrcTimeEscapes muttrcEscape
+
+highlight def link muttrcAliasFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcAttachFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcComposeFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcFolderFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcIndexFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcMixFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcPatternFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcPGPCmdFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcPGPFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcSmimeFormatConditionals muttrcFormatConditionals2
+highlight def link muttrcStatusFormatConditionals muttrcFormatConditionals2
+
+highlight def link muttrcAddrDef muttrcGroupFlag
+highlight def link muttrcRXDef muttrcGroupFlag
+
+highlight def link muttrcAliasFormatStr muttrcString
+highlight def link muttrcAttachFormatStr muttrcString
+highlight def link muttrcComposeFormatStr muttrcString
+highlight def link muttrcFolderFormatStr muttrcString
+highlight def link muttrcGroupIndexFormatStr muttrcString
+highlight def link muttrcIndexFormatStr muttrcString
+highlight def link muttrcMixFormatStr muttrcString
+highlight def link muttrcPatternFormatStr muttrcString
+highlight def link muttrcPGPCmdFormatStr muttrcString
+highlight def link muttrcPGPFormatStr muttrcString
+highlight def link muttrcQueryFormatStr muttrcString
+highlight def link muttrcSidebarFormatStr muttrcString
+highlight def link muttrcSmimeFormatStr muttrcString
+highlight def link muttrcStatusFormatStr muttrcString
+highlight def link muttrcStrftimeFormatStr muttrcString
+
+highlight def link muttrcSetNumAssignment Number
+
+highlight def link muttrcEmail Special
+highlight def link muttrcSimplePatMetas Special
+highlight def link muttrcSpecial Special
+highlight def link muttrcVariableInner Special
+
+highlight def link muttrcAliasEncEmailNL SpecialChar
+highlight def link muttrcAliasENNL SpecialChar
+highlight def link muttrcAliasGroupDefNL SpecialChar
+highlight def link muttrcAliasNameNL SpecialChar
+highlight def link muttrcAliasNL SpecialChar
+highlight def link muttrcBindFunctionNL SpecialChar
+highlight def link muttrcBindKeyNL SpecialChar
+highlight def link muttrcBindMenuListNL SpecialChar
+highlight def link muttrcColorBGNL SpecialChar
+highlight def link muttrcColorFGNL SpecialChar
+highlight def link muttrcColorMatchCountNL SpecialChar
+highlight def link muttrcColorNL SpecialChar
+highlight def link muttrcColorRXNL SpecialChar
+highlight def link muttrcEscape SpecialChar
+highlight def link muttrcKeyName SpecialChar
+highlight def link muttrcKeySpecial SpecialChar
+highlight def link muttrcMacroBodyNL SpecialChar
+highlight def link muttrcMacroDescrNL SpecialChar
+highlight def link muttrcMacroKeyNL SpecialChar
+highlight def link muttrcMacroMenuListNL SpecialChar
+highlight def link muttrcPatternNL SpecialChar
+highlight def link muttrcRXChars SpecialChar
+highlight def link muttrcStringNL SpecialChar
+highlight def link muttrcUnAliasNL SpecialChar
+highlight def link muttrcUnColorAPNL SpecialChar
+highlight def link muttrcUnColorIndexNL SpecialChar
+highlight def link muttrcUnColorPatNL SpecialChar
+
+highlight def link muttrcAttachmentsMimeType String
+highlight def link muttrcEscapedVariable String
+highlight def link muttrcMacroDescr String
+highlight def link muttrcRXPat String
+highlight def link muttrcRXString String
+highlight def link muttrcRXString2 String
+highlight def link muttrcSetStrAssignment String
+highlight def link muttrcString String
+
+highlight def link muttrcAliasParens Type
+highlight def link muttrcAttachmentsFlag Type
+highlight def link muttrcColor Type
+highlight def link muttrcFormatConditionals2 Type
+highlight def link muttrcGroupFlag Type
+highlight def link muttrcHeader Type
+highlight def link muttrcHooks Type
+highlight def link muttrcKey Type
+highlight def link muttrcPatHookNot Type
+highlight def link muttrcRXHookNot Type
+highlight def link muttrcStrftimeEscapes Type
+
+let b:current_syntax = "neomuttrc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 noet tw=100 sw=8 sts=0 ft=vim isk+=-
diff --git a/runtime/syntax/netrc.vim b/runtime/syntax/netrc.vim
new file mode 100644
index 0000000..4d068a1
--- /dev/null
+++ b/runtime/syntax/netrc.vim
@@ -0,0 +1,52 @@
+" Vim syntax file
+" Language: netrc(5) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2010-01-03
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword netrcKeyword machine nextgroup=netrcMachine skipwhite skipnl
+syn keyword netrcKeyword account
+ \ login
+ \ nextgroup=netrcLogin,netrcSpecial skipwhite skipnl
+syn keyword netrcKeyword password nextgroup=netrcPassword skipwhite skipnl
+syn keyword netrcKeyword default
+syn keyword netrcKeyword macdef
+ \ nextgroup=netrcInit,netrcMacroName skipwhite skipnl
+syn region netrcMacro contained start='.' end='^$'
+
+syn match netrcMachine contained display '\S\+'
+syn match netrcMachine contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
+syn match netrcLogin contained display '\S\+'
+syn match netrcLogin contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
+syn match netrcPassword contained display '\S\+'
+syn match netrcPassword contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
+syn match netrcMacroName contained display '\S\+'
+ \ nextgroup=netrcMacro skipwhite skipnl
+syn match netrcMacroName contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
+ \ nextgroup=netrcMacro skipwhite skipnl
+
+syn keyword netrcSpecial contained anonymous
+syn match netrcInit contained '\<init$'
+ \ nextgroup=netrcMacro skipwhite skipnl
+
+syn sync fromstart
+
+hi def link netrcKeyword Keyword
+hi def link netrcMacro PreProc
+hi def link netrcMachine Identifier
+hi def link netrcLogin String
+hi def link netrcPassword String
+hi def link netrcMacroName String
+hi def link netrcSpecial Special
+hi def link netrcInit Special
+
+let b:current_syntax = "netrc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/netrw.vim b/runtime/syntax/netrw.vim
new file mode 100644
index 0000000..1f02bbe
--- /dev/null
+++ b/runtime/syntax/netrw.vim
@@ -0,0 +1,146 @@
+" Language : Netrw Listing Syntax
+" Maintainer : Charles E. Campbell
+" Last change: Nov 07, 2019
+" Version : 20
+" ---------------------------------------------------------------------
+if exists("b:current_syntax")
+ finish
+endif
+
+" ---------------------------------------------------------------------
+" Directory List Syntax Highlighting: {{{1
+syn cluster NetrwGroup contains=netrwHide,netrwSortBy,netrwSortSeq,netrwQuickHelp,netrwVersion,netrwCopyTgt
+syn cluster NetrwTreeGroup contains=netrwDir,netrwSymLink,netrwExe
+
+syn match netrwPlain "\(\S\+ \)*\S\+" contains=netrwLink,@NoSpell
+syn match netrwSpecial "\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell
+syn match netrwDir "\.\{1,2}/" contains=netrwClassify,@NoSpell
+syn match netrwDir "\%(\S\+ \)*\S\+/\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell
+syn match netrwSizeDate "\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s" skipwhite contains=netrwDateSep,@NoSpell nextgroup=netrwTime
+syn match netrwSymLink "\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell
+syn match netrwExe "\%(\S\+ \)*\S*[^~]\*\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell
+if has("gui_running") && (&enc == 'utf-8' || &enc == 'utf-16' || &enc == 'ucs-4')
+syn match netrwTreeBar "^\%([-+|│] \)\+" contains=netrwTreeBarSpace nextgroup=@netrwTreeGroup
+else
+syn match netrwTreeBar "^\%([-+|] \)\+" contains=netrwTreeBarSpace nextgroup=@netrwTreeGroup
+endif
+syn match netrwTreeBarSpace " " contained
+
+syn match netrwClassify "[*=|@/]\ze\%(\s\{2,}\|$\)" contained
+syn match netrwDateSep "/" contained
+syn match netrwTime "\d\{1,2}:\d\{2}:\d\{2}" contained contains=netrwTimeSep
+syn match netrwTimeSep ":"
+
+syn match netrwComment '".*\%(\t\|$\)' contains=@NetrwGroup,@NoSpell
+syn match netrwHide '^"\s*\(Hid\|Show\)ing:' skipwhite contains=@NoSpell nextgroup=netrwHidePat
+syn match netrwSlash "/" contained
+syn match netrwHidePat "[^,]\+" contained skipwhite contains=@NoSpell nextgroup=netrwHideSep
+syn match netrwHideSep "," contained skipwhite nextgroup=netrwHidePat
+syn match netrwSortBy "Sorted by" contained transparent skipwhite nextgroup=netrwList
+syn match netrwSortSeq "Sort sequence:" contained transparent skipwhite nextgroup=netrwList
+syn match netrwCopyTgt "Copy/Move Tgt:" contained transparent skipwhite nextgroup=netrwList
+syn match netrwList ".*$" contained contains=netrwComma,@NoSpell
+syn match netrwComma "," contained
+syn region netrwQuickHelp matchgroup=Comment start="Quick Help:\s\+" end="$" contains=netrwHelpCmd,netrwQHTopic,@NoSpell keepend contained
+syn match netrwHelpCmd "\S\+\ze:" contained skipwhite contains=@NoSpell nextgroup=netrwCmdSep
+syn match netrwQHTopic "([a-zA-Z &]\+)" contained skipwhite
+syn match netrwCmdSep ":" contained nextgroup=netrwCmdNote
+syn match netrwCmdNote ".\{-}\ze " contained contains=@NoSpell
+syn match netrwVersion "(netrw.*)" contained contains=@NoSpell
+syn match netrwLink "-->" contained skipwhite
+
+" -----------------------------
+" Special filetype highlighting {{{1
+" -----------------------------
+if exists("g:netrw_special_syntax") && g:netrw_special_syntax
+ if exists("+suffixes") && &suffixes != ""
+ let suflist= join(split(&suffixes,','))
+ let suflist= escape(substitute(suflist," ",'\\|','g'),'.~')
+ exe "syn match netrwSpecFile '\\(\\S\\+ \\)*\\S*\\(".suflist."\\)\\>' contains=netrwTreeBar,@NoSpell"
+ endif
+ syn match netrwBak "\(\S\+ \)*\S\+\.bak\>" contains=netrwTreeBar,@NoSpell
+ syn match netrwCompress "\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>" contains=netrwTreeBar,@NoSpell
+ if has("unix")
+ syn match netrwCoreDump "\<core\%(\.\d\+\)\=\>" contains=netrwTreeBar,@NoSpell
+ endif
+ syn match netrwLex "\(\S\+ \)*\S\+\.\%(l\|lex\)\>" contains=netrwTreeBar,@NoSpell
+ syn match netrwYacc "\(\S\+ \)*\S\+\.y\>" contains=netrwTreeBar,@NoSpell
+ syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar,@NoSpell
+ syn match netrwDoc "\(\S\+ \)*\S\+\.\%(doc\|txt\|pdf\|ps\|docx\)\>" contains=netrwTreeBar,@NoSpell
+ syn match netrwHdr "\(\S\+ \)*\S\+\.\%(h\|hpp\)\>" contains=netrwTreeBar,@NoSpell
+ syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar,@NoSpell
+ syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar,@NoSpell
+ syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar,@NoSpell
+ syn match netrwPix "\c\(\S\+ \)*\S*\.\%(bmp\|fits\=\|gif\|je\=pg\|pcx\|ppc\|pgm\|png\|ppm\|psd\|rgb\|tif\|xbm\|xcf\)\>" contains=netrwTreeBar,@NoSpell
+ syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar,@NoSpell
+ syn match netrwTags "\<tags\>" contains=netrwTreeBar,@NoSpell
+ syn match netrwTilde "\(\S\+ \)*\S\+\~\*\=\>" contains=netrwTreeBar,@NoSpell
+ syn match netrwTmp "\<tmp\(\S\+ \)*\S\+\>\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar,@NoSpell
+endif
+
+" ---------------------------------------------------------------------
+" Highlighting Links: {{{1
+if !exists("did_drchip_netrwlist_syntax")
+ let did_drchip_netrwlist_syntax= 1
+ hi default link netrwClassify Function
+ hi default link netrwCmdSep Delimiter
+ hi default link netrwComment Comment
+ hi default link netrwDir Directory
+ hi default link netrwHelpCmd Function
+ hi default link netrwQHTopic Number
+ hi default link netrwHidePat Statement
+ hi default link netrwHideSep netrwComment
+ hi default link netrwList Statement
+ hi default link netrwVersion Identifier
+ hi default link netrwSymLink Question
+ hi default link netrwExe PreProc
+ hi default link netrwDateSep Delimiter
+
+ hi default link netrwTreeBar Special
+ hi default link netrwTimeSep netrwDateSep
+ hi default link netrwComma netrwComment
+ hi default link netrwHide netrwComment
+ hi default link netrwMarkFile TabLineSel
+ hi default link netrwLink Special
+
+ " special syntax highlighting (see :he g:netrw_special_syntax)
+ hi default link netrwCoreDump WarningMsg
+ hi default link netrwData Folded
+ hi default link netrwHdr netrwPlain
+ hi default link netrwLex netrwPlain
+ hi default link netrwLib DiffChange
+ hi default link netrwMakefile DiffChange
+ hi default link netrwYacc netrwPlain
+ hi default link netrwPix Special
+
+ hi default link netrwBak netrwGray
+ hi default link netrwCompress netrwGray
+ hi default link netrwSpecFile netrwGray
+ hi default link netrwObj netrwGray
+ hi default link netrwTags netrwGray
+ hi default link netrwTilde netrwGray
+ hi default link netrwTmp netrwGray
+endif
+
+ " set up netrwGray to be understated (but not Ignore'd or Conceal'd, as those
+ " can be hard/impossible to read). Users may override this in a colorscheme by
+ " specifying netrwGray highlighting.
+ redir => s:netrwgray
+ sil hi netrwGray
+ redir END
+ if s:netrwgray !~ 'guifg'
+ if has("gui") && has("gui_running")
+ if &bg == "dark"
+ exe "hi netrwGray gui=NONE guifg=gray30"
+ else
+ exe "hi netrwGray gui=NONE guifg=gray70"
+ endif
+ else
+ hi link netrwGray Folded
+ endif
+ endif
+
+" Current Syntax: {{{1
+let b:current_syntax = "netrwlist"
+" ---------------------------------------------------------------------
+" vim: ts=8 fdm=marker
diff --git a/runtime/syntax/nginx.vim b/runtime/syntax/nginx.vim
new file mode 100644
index 0000000..04760e4
--- /dev/null
+++ b/runtime/syntax/nginx.vim
@@ -0,0 +1,2338 @@
+" Vim syntax file
+" Language: nginx.conf
+" Maintainer: Chris Aumann <me@chr4.org>
+" Last Change: Jan 25, 2023
+
+if exists("b:current_syntax")
+ finish
+end
+
+let b:current_syntax = "nginx"
+
+syn match ngxVariable '\$\(\w\+\|{\w\+}\)'
+syn match ngxVariableBlock '\$\(\w\+\|{\w\+}\)' contained
+syn match ngxVariableString '\$\(\w\+\|{\w\+}\)' contained
+syn region ngxBlock start=+^+ end=+{+ skip=+\${\|{{\|{%+ contains=ngxComment,ngxInteger,ngxIPaddr,ngxDirectiveBlock,ngxVariableBlock,ngxString,ngxThirdPartyLuaBlock oneline
+syn region ngxString start=+[^:a-zA-Z>!\\@]\z(["']\)+lc=1 end=+\z1+ skip=+\\\\\|\\\z1+ contains=ngxVariableString,ngxSSLCipherInsecure
+syn match ngxComment ' *#.*$'
+
+" These regular expressions where taken (and adapted) from
+" http://vim.1045645.n5.nabble.com/IPv6-support-for-quot-dns-quot-zonefile-syntax-highlighting-td1197292.html
+syn match ngxInteger '\W\zs\(\d[0-9.]*\|[0-9.]*\d\)\w\?\ze\W'
+syn match ngxIPaddr '\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}'
+syn match ngxIPaddr '\[\(\x\{1,4}:\)\{6}\(\x\{1,4}:\x\{1,4}\|\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\]'
+syn match ngxIPaddr '\[::\(\(\x\{1,4}:\)\{,6}\x\{1,4}\|\(\x\{1,4}:\)\{,5}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\]'
+syn match ngxIPaddr '\[\(\x\{1,4}:\)\{1}:\(\(\x\{1,4}:\)\{,5}\x\{1,4}\|\(\x\{1,4}:\)\{,4}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\]'
+syn match ngxIPaddr '\[\(\x\{1,4}:\)\{2}:\(\(\x\{1,4}:\)\{,4}\x\{1,4}\|\(\x\{1,4}:\)\{,3}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\]'
+syn match ngxIPaddr '\[\(\x\{1,4}:\)\{3}:\(\(\x\{1,4}:\)\{,3}\x\{1,4}\|\(\x\{1,4}:\)\{,2}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\]'
+syn match ngxIPaddr '\[\(\x\{1,4}:\)\{4}:\(\(\x\{1,4}:\)\{,2}\x\{1,4}\|\(\x\{1,4}:\)\{,1}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\]'
+syn match ngxIPaddr '\[\(\x\{1,4}:\)\{5}:\(\(\x\{1,4}:\)\{,1}\x\{1,4}\|\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\]'
+syn match ngxIPaddr '\[\(\x\{1,4}:\)\{6}:\x\{1,4}\]'
+
+" Highlight wildcard listening signs also as IPaddr
+syn match ngxIPaddr '\s\zs\[::]'
+syn match ngxIPaddr '\s\zs\*'
+
+syn keyword ngxBoolean on
+syn keyword ngxBoolean off
+
+syn keyword ngxDirectiveBlock http contained
+syn keyword ngxDirectiveBlock mail contained
+syn keyword ngxDirectiveBlock events contained
+syn keyword ngxDirectiveBlock server contained
+syn keyword ngxDirectiveBlock match contained
+syn keyword ngxDirectiveBlock types contained
+syn keyword ngxDirectiveBlock location contained
+syn keyword ngxDirectiveBlock upstream contained
+syn keyword ngxDirectiveBlock charset_map contained
+syn keyword ngxDirectiveBlock limit_except contained
+syn keyword ngxDirectiveBlock if contained
+syn keyword ngxDirectiveBlock geo contained
+syn keyword ngxDirectiveBlock map contained
+syn keyword ngxDirectiveBlock split_clients contained
+
+syn keyword ngxDirectiveImportant include
+syn keyword ngxDirectiveImportant root
+syn keyword ngxDirectiveImportant server contained
+syn region ngxDirectiveImportantServer matchgroup=ngxDirectiveImportant start=+^\s*\zsserver\ze\s.*;+ skip=+\\\\\|\\\;+ end=+;+he=e-1 contains=ngxUpstreamServerOptions,ngxString,ngxIPaddr,ngxBoolean,ngxInteger,ngxTemplateVar
+syn keyword ngxDirectiveImportant server_name
+syn keyword ngxDirectiveImportant listen contained
+syn region ngxDirectiveImportantListen matchgroup=ngxDirectiveImportant start=+listen+ skip=+\\\\\|\\\;+ end=+;+he=e-1 contains=ngxListenOptions,ngxString,ngxIPaddr,ngxBoolean,ngxInteger,ngxTemplateVar
+syn keyword ngxDirectiveImportant internal
+syn keyword ngxDirectiveImportant proxy_pass
+syn keyword ngxDirectiveImportant memcached_pass
+syn keyword ngxDirectiveImportant fastcgi_pass
+syn keyword ngxDirectiveImportant scgi_pass
+syn keyword ngxDirectiveImportant uwsgi_pass
+syn keyword ngxDirectiveImportant try_files
+syn keyword ngxDirectiveImportant error_page
+syn keyword ngxDirectiveImportant post_action
+
+syn keyword ngxUpstreamServerOptions weight contained
+syn keyword ngxUpstreamServerOptions max_conns contained
+syn keyword ngxUpstreamServerOptions max_fails contained
+syn keyword ngxUpstreamServerOptions fail_timeout contained
+syn keyword ngxUpstreamServerOptions backup contained
+syn keyword ngxUpstreamServerOptions down contained
+syn keyword ngxUpstreamServerOptions resolve contained
+syn keyword ngxUpstreamServerOptions route contained
+syn keyword ngxUpstreamServerOptions service contained
+syn keyword ngxUpstreamServerOptions default_server contained
+syn keyword ngxUpstreamServerOptions slow_start contained
+
+syn keyword ngxListenOptions default_server contained
+syn keyword ngxListenOptions ssl contained
+syn keyword ngxListenOptions http2 contained
+syn keyword ngxListenOptions spdy contained
+syn keyword ngxListenOptions http3 contained
+syn keyword ngxListenOptions quic contained
+syn keyword ngxListenOptions proxy_protocol contained
+syn keyword ngxListenOptions setfib contained
+syn keyword ngxListenOptions fastopen contained
+syn keyword ngxListenOptions backlog contained
+syn keyword ngxListenOptions rcvbuf contained
+syn keyword ngxListenOptions sndbuf contained
+syn keyword ngxListenOptions accept_filter contained
+syn keyword ngxListenOptions deferred contained
+syn keyword ngxListenOptions bind contained
+syn keyword ngxListenOptions ipv6only contained
+syn keyword ngxListenOptions reuseport contained
+syn keyword ngxListenOptions so_keepalive contained
+syn keyword ngxListenOptions keepidle contained
+
+syn keyword ngxDirectiveControl break
+syn keyword ngxDirectiveControl return
+syn keyword ngxDirectiveControl rewrite
+syn keyword ngxDirectiveControl set
+
+syn keyword ngxDirectiveDeprecated connections
+syn keyword ngxDirectiveDeprecated imap
+syn keyword ngxDirectiveDeprecated limit_zone
+syn keyword ngxDirectiveDeprecated mysql_test
+syn keyword ngxDirectiveDeprecated open_file_cache_retest
+syn keyword ngxDirectiveDeprecated optimize_server_names
+syn keyword ngxDirectiveDeprecated satisfy_any
+syn keyword ngxDirectiveDeprecated so_keepalive
+
+syn keyword ngxDirective absolute_redirect
+syn keyword ngxDirective accept_mutex
+syn keyword ngxDirective accept_mutex_delay
+syn keyword ngxDirective acceptex_read
+syn keyword ngxDirective access_log
+syn keyword ngxDirective add_after_body
+syn keyword ngxDirective add_before_body
+syn keyword ngxDirective add_header
+syn keyword ngxDirective addition_types
+syn keyword ngxDirective aio
+syn keyword ngxDirective aio_write
+syn keyword ngxDirective alias
+syn keyword ngxDirective allow
+syn keyword ngxDirective ancient_browser
+syn keyword ngxDirective ancient_browser_value
+syn keyword ngxDirective auth_basic
+syn keyword ngxDirective auth_basic_user_file
+syn keyword ngxDirective auth_http
+syn keyword ngxDirective auth_http_header
+syn keyword ngxDirective auth_http_pass_client_cert
+syn keyword ngxDirective auth_http_timeout
+syn keyword ngxDirective auth_jwt
+syn keyword ngxDirective auth_jwt_key_file
+syn keyword ngxDirective auth_request
+syn keyword ngxDirective auth_request_set
+syn keyword ngxDirective autoindex
+syn keyword ngxDirective autoindex_exact_size
+syn keyword ngxDirective autoindex_format
+syn keyword ngxDirective autoindex_localtime
+syn keyword ngxDirective charset
+syn keyword ngxDirective charset_map
+syn keyword ngxDirective charset_types
+syn keyword ngxDirective chunked_transfer_encoding
+syn keyword ngxDirective client_body_buffer_size
+syn keyword ngxDirective client_body_in_file_only
+syn keyword ngxDirective client_body_in_single_buffer
+syn keyword ngxDirective client_body_temp_path
+syn keyword ngxDirective client_body_timeout
+syn keyword ngxDirective client_header_buffer_size
+syn keyword ngxDirective client_header_timeout
+syn keyword ngxDirective client_max_body_size
+syn keyword ngxDirective connection_pool_size
+syn keyword ngxDirective create_full_put_path
+syn keyword ngxDirective daemon
+syn keyword ngxDirective dav_access
+syn keyword ngxDirective dav_methods
+syn keyword ngxDirective debug_connection
+syn keyword ngxDirective debug_points
+syn keyword ngxDirective default_type
+syn keyword ngxDirective degradation
+syn keyword ngxDirective degrade
+syn keyword ngxDirective deny
+syn keyword ngxDirective devpoll_changes
+syn keyword ngxDirective devpoll_events
+syn keyword ngxDirective directio
+syn keyword ngxDirective directio_alignment
+syn keyword ngxDirective disable_symlinks
+syn keyword ngxDirective empty_gif
+syn keyword ngxDirective env
+syn keyword ngxDirective epoll_events
+syn keyword ngxDirective error_log
+syn keyword ngxDirective etag
+syn keyword ngxDirective eventport_events
+syn keyword ngxDirective expires
+syn keyword ngxDirective f4f
+syn keyword ngxDirective f4f_buffer_size
+syn keyword ngxDirective fastcgi_bind
+syn keyword ngxDirective fastcgi_buffer_size
+syn keyword ngxDirective fastcgi_buffering
+syn keyword ngxDirective fastcgi_buffers
+syn keyword ngxDirective fastcgi_busy_buffers_size
+syn keyword ngxDirective fastcgi_cache
+syn keyword ngxDirective fastcgi_cache_bypass
+syn keyword ngxDirective fastcgi_cache_key
+syn keyword ngxDirective fastcgi_cache_lock
+syn keyword ngxDirective fastcgi_cache_lock_age
+syn keyword ngxDirective fastcgi_cache_lock_timeout
+syn keyword ngxDirective fastcgi_cache_max_range_offset
+syn keyword ngxDirective fastcgi_cache_methods
+syn keyword ngxDirective fastcgi_cache_min_uses
+syn keyword ngxDirective fastcgi_cache_path
+syn keyword ngxDirective fastcgi_cache_purge
+syn keyword ngxDirective fastcgi_cache_revalidate
+syn keyword ngxDirective fastcgi_cache_use_stale
+syn keyword ngxDirective fastcgi_cache_valid
+syn keyword ngxDirective fastcgi_catch_stderr
+syn keyword ngxDirective fastcgi_connect_timeout
+syn keyword ngxDirective fastcgi_force_ranges
+syn keyword ngxDirective fastcgi_hide_header
+syn keyword ngxDirective fastcgi_ignore_client_abort
+syn keyword ngxDirective fastcgi_ignore_headers
+syn keyword ngxDirective fastcgi_index
+syn keyword ngxDirective fastcgi_intercept_errors
+syn keyword ngxDirective fastcgi_keep_conn
+syn keyword ngxDirective fastcgi_limit_rate
+syn keyword ngxDirective fastcgi_max_temp_file_size
+syn keyword ngxDirective fastcgi_next_upstream
+syn keyword ngxDirective fastcgi_next_upstream_timeout
+syn keyword ngxDirective fastcgi_next_upstream_tries
+syn keyword ngxDirective fastcgi_no_cache
+syn keyword ngxDirective fastcgi_param
+syn keyword ngxDirective fastcgi_pass_header
+syn keyword ngxDirective fastcgi_pass_request_body
+syn keyword ngxDirective fastcgi_pass_request_headers
+syn keyword ngxDirective fastcgi_read_timeout
+syn keyword ngxDirective fastcgi_request_buffering
+syn keyword ngxDirective fastcgi_send_lowat
+syn keyword ngxDirective fastcgi_send_timeout
+syn keyword ngxDirective fastcgi_split_path_info
+syn keyword ngxDirective fastcgi_store
+syn keyword ngxDirective fastcgi_store_access
+syn keyword ngxDirective fastcgi_temp_file_write_size
+syn keyword ngxDirective fastcgi_temp_path
+syn keyword ngxDirective flv
+syn keyword ngxDirective geoip_city
+syn keyword ngxDirective geoip_country
+syn keyword ngxDirective geoip_org
+syn keyword ngxDirective geoip_proxy
+syn keyword ngxDirective geoip_proxy_recursive
+syn keyword ngxDirective google_perftools_profiles
+syn keyword ngxDirective gunzip
+syn keyword ngxDirective gunzip_buffers
+syn keyword ngxDirective gzip nextgroup=ngxGzipOn,ngxGzipOff skipwhite
+syn keyword ngxGzipOn on contained
+syn keyword ngxGzipOff off contained
+syn keyword ngxDirective gzip_buffers
+syn keyword ngxDirective gzip_comp_level
+syn keyword ngxDirective gzip_disable
+syn keyword ngxDirective gzip_hash
+syn keyword ngxDirective gzip_http_version
+syn keyword ngxDirective gzip_min_length
+syn keyword ngxDirective gzip_no_buffer
+syn keyword ngxDirective gzip_proxied
+syn keyword ngxDirective gzip_static
+syn keyword ngxDirective gzip_types
+syn keyword ngxDirective gzip_vary
+syn keyword ngxDirective gzip_window
+syn keyword ngxDirective hash
+syn keyword ngxDirective health_check
+syn keyword ngxDirective health_check_timeout
+syn keyword ngxDirective hls
+syn keyword ngxDirective hls_buffers
+syn keyword ngxDirective hls_forward_args
+syn keyword ngxDirective hls_fragment
+syn keyword ngxDirective hls_mp4_buffer_size
+syn keyword ngxDirective hls_mp4_max_buffer_size
+syn keyword ngxDirective http2_chunk_size
+syn keyword ngxDirective http2_body_preread_size
+syn keyword ngxDirective http2_idle_timeout
+syn keyword ngxDirective http2_max_concurrent_streams
+syn keyword ngxDirective http2_max_field_size
+syn keyword ngxDirective http2_max_header_size
+syn keyword ngxDirective http2_max_requests
+syn keyword ngxDirective http2_push
+syn keyword ngxDirective http2_push_preload
+syn keyword ngxDirective http2_recv_buffer_size
+syn keyword ngxDirective http2_recv_timeout
+syn keyword ngxDirective http3_hq
+syn keyword ngxDirective http3_max_concurrent_pushes
+syn keyword ngxDirective http3_max_concurrent_streams
+syn keyword ngxDirective http3_push
+syn keyword ngxDirective http3_push_preload
+syn keyword ngxDirective http3_stream_buffer_size
+syn keyword ngxDirective if_modified_since
+syn keyword ngxDirective ignore_invalid_headers
+syn keyword ngxDirective image_filter
+syn keyword ngxDirective image_filter_buffer
+syn keyword ngxDirective image_filter_interlace
+syn keyword ngxDirective image_filter_jpeg_quality
+syn keyword ngxDirective image_filter_sharpen
+syn keyword ngxDirective image_filter_transparency
+syn keyword ngxDirective image_filter_webp_quality
+syn keyword ngxDirective imap_auth
+syn keyword ngxDirective imap_capabilities
+syn keyword ngxDirective imap_client_buffer
+syn keyword ngxDirective index
+syn keyword ngxDirective iocp_threads
+syn keyword ngxDirective ip_hash
+syn keyword ngxDirective js_access
+syn keyword ngxDirective js_content
+syn keyword ngxDirective js_filter
+syn keyword ngxDirective js_include
+syn keyword ngxDirective js_preread
+syn keyword ngxDirective js_set
+syn keyword ngxDirective keepalive
+syn keyword ngxDirective keepalive_disable
+syn keyword ngxDirective keepalive_requests
+syn keyword ngxDirective keepalive_timeout
+syn keyword ngxDirective kqueue_changes
+syn keyword ngxDirective kqueue_events
+syn keyword ngxDirective large_client_header_buffers
+syn keyword ngxDirective least_conn
+syn keyword ngxDirective least_time
+syn keyword ngxDirective limit_conn
+syn keyword ngxDirective limit_conn_dry_run
+syn keyword ngxDirective limit_conn_log_level
+syn keyword ngxDirective limit_conn_status
+syn keyword ngxDirective limit_conn_zone
+syn keyword ngxDirective limit_except
+syn keyword ngxDirective limit_rate
+syn keyword ngxDirective limit_rate_after
+syn keyword ngxDirective limit_req
+syn keyword ngxDirective limit_req_dry_run
+syn keyword ngxDirective limit_req_log_level
+syn keyword ngxDirective limit_req_status
+syn keyword ngxDirective limit_req_zone
+syn keyword ngxDirective lingering_close
+syn keyword ngxDirective lingering_time
+syn keyword ngxDirective lingering_timeout
+syn keyword ngxDirective load_module
+syn keyword ngxDirective lock_file
+syn keyword ngxDirective log_format
+syn keyword ngxDirective log_not_found
+syn keyword ngxDirective log_subrequest
+syn keyword ngxDirective map_hash_bucket_size
+syn keyword ngxDirective map_hash_max_size
+syn keyword ngxDirective master_process
+syn keyword ngxDirective max_ranges
+syn keyword ngxDirective memcached_bind
+syn keyword ngxDirective memcached_buffer_size
+syn keyword ngxDirective memcached_connect_timeout
+syn keyword ngxDirective memcached_force_ranges
+syn keyword ngxDirective memcached_gzip_flag
+syn keyword ngxDirective memcached_next_upstream
+syn keyword ngxDirective memcached_next_upstream_timeout
+syn keyword ngxDirective memcached_next_upstream_tries
+syn keyword ngxDirective memcached_read_timeout
+syn keyword ngxDirective memcached_send_timeout
+syn keyword ngxDirective merge_slashes
+syn keyword ngxDirective min_delete_depth
+syn keyword ngxDirective modern_browser
+syn keyword ngxDirective modern_browser_value
+syn keyword ngxDirective mp4
+syn keyword ngxDirective mp4_buffer_size
+syn keyword ngxDirective mp4_max_buffer_size
+syn keyword ngxDirective mp4_limit_rate
+syn keyword ngxDirective mp4_limit_rate_after
+syn keyword ngxDirective msie_padding
+syn keyword ngxDirective msie_refresh
+syn keyword ngxDirective multi_accept
+syn keyword ngxDirective ntlm
+syn keyword ngxDirective open_file_cache
+syn keyword ngxDirective open_file_cache_errors
+syn keyword ngxDirective open_file_cache_events
+syn keyword ngxDirective open_file_cache_min_uses
+syn keyword ngxDirective open_file_cache_valid
+syn keyword ngxDirective open_log_file_cache
+syn keyword ngxDirective output_buffers
+syn keyword ngxDirective override_charset
+syn keyword ngxDirective pcre_jit
+syn keyword ngxDirective perl
+syn keyword ngxDirective perl_modules
+syn keyword ngxDirective perl_require
+syn keyword ngxDirective perl_set
+syn keyword ngxDirective pid
+syn keyword ngxDirective pop3_auth
+syn keyword ngxDirective pop3_capabilities
+syn keyword ngxDirective port_in_redirect
+syn keyword ngxDirective post_acceptex
+syn keyword ngxDirective postpone_gzipping
+syn keyword ngxDirective postpone_output
+syn keyword ngxDirective preread_buffer_size
+syn keyword ngxDirective preread_timeout
+syn keyword ngxDirective protocol nextgroup=ngxMailProtocol skipwhite
+syn keyword ngxMailProtocol imap pop3 smtp contained
+syn keyword ngxDirective proxy
+syn keyword ngxDirective proxy_bind
+syn keyword ngxDirective proxy_buffer
+syn keyword ngxDirective proxy_buffer_size
+syn keyword ngxDirective proxy_buffering
+syn keyword ngxDirective proxy_buffers
+syn keyword ngxDirective proxy_busy_buffers_size
+syn keyword ngxDirective proxy_cache
+syn keyword ngxDirective proxy_cache_bypass
+syn keyword ngxDirective proxy_cache_convert_head
+syn keyword ngxDirective proxy_cache_key
+syn keyword ngxDirective proxy_cache_lock
+syn keyword ngxDirective proxy_cache_lock_age
+syn keyword ngxDirective proxy_cache_lock_timeout
+syn keyword ngxDirective proxy_cache_max_range_offset
+syn keyword ngxDirective proxy_cache_methods
+syn keyword ngxDirective proxy_cache_min_uses
+syn keyword ngxDirective proxy_cache_path
+syn keyword ngxDirective proxy_cache_purge
+syn keyword ngxDirective proxy_cache_revalidate
+syn keyword ngxDirective proxy_cache_use_stale
+syn keyword ngxDirective proxy_cache_valid
+syn keyword ngxDirective proxy_connect_timeout
+syn keyword ngxDirective proxy_cookie_domain
+syn keyword ngxDirective proxy_cookie_path
+syn keyword ngxDirective proxy_download_rate
+syn keyword ngxDirective proxy_force_ranges
+syn keyword ngxDirective proxy_headers_hash_bucket_size
+syn keyword ngxDirective proxy_headers_hash_max_size
+syn keyword ngxDirective proxy_hide_header
+syn keyword ngxDirective proxy_http_version
+syn keyword ngxDirective proxy_ignore_client_abort
+syn keyword ngxDirective proxy_ignore_headers
+syn keyword ngxDirective proxy_intercept_errors
+syn keyword ngxDirective proxy_limit_rate
+syn keyword ngxDirective proxy_max_temp_file_size
+syn keyword ngxDirective proxy_method
+syn keyword ngxDirective proxy_next_upstream contained
+syn region ngxDirectiveProxyNextUpstream matchgroup=ngxDirective start=+^\s*\zsproxy_next_upstream\ze\s.*;+ skip=+\\\\\|\\\;+ end=+;+he=e-1 contains=ngxProxyNextUpstreamOptions,ngxString,ngxTemplateVar
+syn keyword ngxDirective proxy_next_upstream_timeout
+syn keyword ngxDirective proxy_next_upstream_tries
+syn keyword ngxDirective proxy_no_cache
+syn keyword ngxDirective proxy_pass_error_message
+syn keyword ngxDirective proxy_pass_header
+syn keyword ngxDirective proxy_pass_request_body
+syn keyword ngxDirective proxy_pass_request_headers
+syn keyword ngxDirective proxy_protocol
+syn keyword ngxDirective proxy_protocol_timeout
+syn keyword ngxDirective proxy_read_timeout
+syn keyword ngxDirective proxy_redirect
+syn keyword ngxDirective proxy_request_buffering
+syn keyword ngxDirective proxy_responses
+syn keyword ngxDirective proxy_send_lowat
+syn keyword ngxDirective proxy_send_timeout
+syn keyword ngxDirective proxy_set_body
+syn keyword ngxDirective proxy_set_header
+syn keyword ngxDirective proxy_ssl_certificate
+syn keyword ngxDirective proxy_ssl_certificate_key
+syn keyword ngxDirective proxy_ssl_ciphers
+syn keyword ngxDirective proxy_ssl_crl
+syn keyword ngxDirective proxy_ssl_name
+syn keyword ngxDirective proxy_ssl_password_file
+syn keyword ngxDirective proxy_ssl_protocols nextgroup=ngxSSLProtocol skipwhite
+syn keyword ngxDirective proxy_ssl_server_name
+syn keyword ngxDirective proxy_ssl_session_reuse
+syn keyword ngxDirective proxy_ssl_trusted_certificate
+syn keyword ngxDirective proxy_ssl_verify
+syn keyword ngxDirective proxy_ssl_verify_depth
+syn keyword ngxDirective proxy_store
+syn keyword ngxDirective proxy_store_access
+syn keyword ngxDirective proxy_temp_file_write_size
+syn keyword ngxDirective proxy_temp_path
+syn keyword ngxDirective proxy_timeout
+syn keyword ngxDirective proxy_upload_rate
+syn keyword ngxDirective queue
+syn keyword ngxDirective quic_gso
+syn keyword ngxDirective quic_host_key
+syn keyword ngxDirective quic_mtu
+syn keyword ngxDirective quic_retry
+syn keyword ngxDirective random_index
+syn keyword ngxDirective read_ahead
+syn keyword ngxDirective real_ip_header
+syn keyword ngxDirective real_ip_recursive
+syn keyword ngxDirective recursive_error_pages
+syn keyword ngxDirective referer_hash_bucket_size
+syn keyword ngxDirective referer_hash_max_size
+syn keyword ngxDirective request_pool_size
+syn keyword ngxDirective reset_timedout_connection
+syn keyword ngxDirective resolver
+syn keyword ngxDirective resolver_timeout
+syn keyword ngxDirective rewrite_log
+syn keyword ngxDirective rtsig_overflow_events
+syn keyword ngxDirective rtsig_overflow_test
+syn keyword ngxDirective rtsig_overflow_threshold
+syn keyword ngxDirective rtsig_signo
+syn keyword ngxDirective satisfy
+syn keyword ngxDirective scgi_bind
+syn keyword ngxDirective scgi_buffer_size
+syn keyword ngxDirective scgi_buffering
+syn keyword ngxDirective scgi_buffers
+syn keyword ngxDirective scgi_busy_buffers_size
+syn keyword ngxDirective scgi_cache
+syn keyword ngxDirective scgi_cache_bypass
+syn keyword ngxDirective scgi_cache_key
+syn keyword ngxDirective scgi_cache_lock
+syn keyword ngxDirective scgi_cache_lock_age
+syn keyword ngxDirective scgi_cache_lock_timeout
+syn keyword ngxDirective scgi_cache_max_range_offset
+syn keyword ngxDirective scgi_cache_methods
+syn keyword ngxDirective scgi_cache_min_uses
+syn keyword ngxDirective scgi_cache_path
+syn keyword ngxDirective scgi_cache_purge
+syn keyword ngxDirective scgi_cache_revalidate
+syn keyword ngxDirective scgi_cache_use_stale
+syn keyword ngxDirective scgi_cache_valid
+syn keyword ngxDirective scgi_connect_timeout
+syn keyword ngxDirective scgi_force_ranges
+syn keyword ngxDirective scgi_hide_header
+syn keyword ngxDirective scgi_ignore_client_abort
+syn keyword ngxDirective scgi_ignore_headers
+syn keyword ngxDirective scgi_intercept_errors
+syn keyword ngxDirective scgi_limit_rate
+syn keyword ngxDirective scgi_max_temp_file_size
+syn keyword ngxDirective scgi_next_upstream
+syn keyword ngxDirective scgi_next_upstream_timeout
+syn keyword ngxDirective scgi_next_upstream_tries
+syn keyword ngxDirective scgi_no_cache
+syn keyword ngxDirective scgi_param
+syn keyword ngxDirective scgi_pass_header
+syn keyword ngxDirective scgi_pass_request_body
+syn keyword ngxDirective scgi_pass_request_headers
+syn keyword ngxDirective scgi_read_timeout
+syn keyword ngxDirective scgi_request_buffering
+syn keyword ngxDirective scgi_send_timeout
+syn keyword ngxDirective scgi_store
+syn keyword ngxDirective scgi_store_access
+syn keyword ngxDirective scgi_temp_file_write_size
+syn keyword ngxDirective scgi_temp_path
+syn keyword ngxDirective secure_link
+syn keyword ngxDirective secure_link_md5
+syn keyword ngxDirective secure_link_secret
+syn keyword ngxDirective send_lowat
+syn keyword ngxDirective send_timeout
+syn keyword ngxDirective sendfile
+syn keyword ngxDirective sendfile_max_chunk
+syn keyword ngxDirective server_name_in_redirect
+syn keyword ngxDirective server_names_hash_bucket_size
+syn keyword ngxDirective server_names_hash_max_size
+syn keyword ngxDirective server_tokens
+syn keyword ngxDirective session_log
+syn keyword ngxDirective session_log_format
+syn keyword ngxDirective session_log_zone
+syn keyword ngxDirective set_real_ip_from
+syn keyword ngxDirective slice
+syn keyword ngxDirective smtp_auth
+syn keyword ngxDirective smtp_capabilities
+syn keyword ngxDirective smtp_client_buffer
+syn keyword ngxDirective smtp_greeting_delay
+syn keyword ngxDirective source_charset
+syn keyword ngxDirective spdy_chunk_size
+syn keyword ngxDirective spdy_headers_comp
+syn keyword ngxDirective spdy_keepalive_timeout
+syn keyword ngxDirective spdy_max_concurrent_streams
+syn keyword ngxDirective spdy_pool_size
+syn keyword ngxDirective spdy_recv_buffer_size
+syn keyword ngxDirective spdy_recv_timeout
+syn keyword ngxDirective spdy_streams_index_size
+syn keyword ngxDirective ssi
+syn keyword ngxDirective ssi_ignore_recycled_buffers
+syn keyword ngxDirective ssi_last_modified
+syn keyword ngxDirective ssi_min_file_chunk
+syn keyword ngxDirective ssi_silent_errors
+syn keyword ngxDirective ssi_types
+syn keyword ngxDirective ssi_value_length
+syn keyword ngxDirective ssl
+syn keyword ngxDirective ssl_buffer_size
+syn keyword ngxDirective ssl_certificate
+syn keyword ngxDirective ssl_certificate_key
+syn keyword ngxDirective ssl_ciphers
+syn keyword ngxDirective ssl_client_certificate
+syn keyword ngxDirective ssl_conf_command
+syn keyword ngxDirective ssl_crl
+syn keyword ngxDirective ssl_dhparam
+syn keyword ngxDirective ssl_early_data
+syn keyword ngxDirective ssl_ecdh_curve
+syn keyword ngxDirective ssl_engine
+syn keyword ngxDirective ssl_handshake_timeout
+syn keyword ngxDirective ssl_password_file
+syn keyword ngxDirective ssl_prefer_server_ciphers nextgroup=ngxSSLPreferServerCiphersOff,ngxSSLPreferServerCiphersOn skipwhite
+syn keyword ngxSSLPreferServerCiphersOn on contained
+syn keyword ngxSSLPreferServerCiphersOff off contained
+syn keyword ngxDirective ssl_preread
+syn keyword ngxDirective ssl_protocols nextgroup=ngxSSLProtocol,ngxSSLProtocolDeprecated skipwhite
+syn keyword ngxDirective ssl_reject_handshake
+syn match ngxSSLProtocol 'TLSv1' contained nextgroup=ngxSSLProtocol,ngxSSLProtocolDeprecated skipwhite
+syn match ngxSSLProtocol 'TLSv1\.1' contained nextgroup=ngxSSLProtocol,ngxSSLProtocolDeprecated skipwhite
+syn match ngxSSLProtocol 'TLSv1\.2' contained nextgroup=ngxSSLProtocol,ngxSSLProtocolDeprecated skipwhite
+syn match ngxSSLProtocol 'TLSv1\.3' contained nextgroup=ngxSSLProtocol,ngxSSLProtocolDeprecated skipwhite
+
+" Do not enable highlighting of insecure protocols if sslecure is loaded
+if !exists('g:loaded_sslsecure')
+ syn keyword ngxSSLProtocolDeprecated SSLv2 SSLv3 contained nextgroup=ngxSSLProtocol,ngxSSLProtocolDeprecated skipwhite
+else
+ syn match ngxSSLProtocol 'SSLv2' contained nextgroup=ngxSSLProtocol,ngxSSLProtocolDeprecated skipwhite
+ syn match ngxSSLProtocol 'SSLv3' contained nextgroup=ngxSSLProtocol,ngxSSLProtocolDeprecated skipwhite
+endif
+
+syn keyword ngxDirective ssl_session_cache
+syn keyword ngxDirective ssl_session_ticket_key
+syn keyword ngxDirective ssl_session_tickets nextgroup=ngxSSLSessionTicketsOn,ngxSSLSessionTicketsOff skipwhite
+syn keyword ngxSSLSessionTicketsOn on contained
+syn keyword ngxSSLSessionTicketsOff off contained
+syn keyword ngxDirective ssl_session_timeout
+syn keyword ngxDirective ssl_stapling
+syn keyword ngxDirective ssl_stapling_file
+syn keyword ngxDirective ssl_stapling_responder
+syn keyword ngxDirective ssl_stapling_verify
+syn keyword ngxDirective ssl_trusted_certificate
+syn keyword ngxDirective ssl_verify_client
+syn keyword ngxDirective ssl_verify_depth
+syn keyword ngxDirective starttls
+syn keyword ngxDirective state
+syn keyword ngxDirective status
+syn keyword ngxDirective status_format
+syn keyword ngxDirective status_zone
+syn keyword ngxDirective sticky contained
+syn keyword ngxDirective sticky_cookie_insert contained
+syn region ngxDirectiveSticky matchgroup=ngxDirective start=+^\s*\zssticky\ze\s.*;+ skip=+\\\\\|\\\;+ end=+;+he=e-1 contains=ngxCookieOptions,ngxString,ngxBoolean,ngxInteger,ngxTemplateVar
+syn keyword ngxDirective stub_status
+syn keyword ngxDirective sub_filter
+syn keyword ngxDirective sub_filter_last_modified
+syn keyword ngxDirective sub_filter_once
+syn keyword ngxDirective sub_filter_types
+syn keyword ngxDirective tcp_nodelay
+syn keyword ngxDirective tcp_nopush
+syn keyword ngxDirective thread_pool
+syn keyword ngxDirective thread_stack_size
+syn keyword ngxDirective timeout
+syn keyword ngxDirective timer_resolution
+syn keyword ngxDirective types_hash_bucket_size
+syn keyword ngxDirective types_hash_max_size
+syn keyword ngxDirective underscores_in_headers
+syn keyword ngxDirective uninitialized_variable_warn
+syn keyword ngxDirective upstream_conf
+syn keyword ngxDirective use
+syn keyword ngxDirective user
+syn keyword ngxDirective userid
+syn keyword ngxDirective userid_domain
+syn keyword ngxDirective userid_expires
+syn keyword ngxDirective userid_mark
+syn keyword ngxDirective userid_name
+syn keyword ngxDirective userid_p3p
+syn keyword ngxDirective userid_path
+syn keyword ngxDirective userid_service
+syn keyword ngxDirective uwsgi_bind
+syn keyword ngxDirective uwsgi_buffer_size
+syn keyword ngxDirective uwsgi_buffering
+syn keyword ngxDirective uwsgi_buffers
+syn keyword ngxDirective uwsgi_busy_buffers_size
+syn keyword ngxDirective uwsgi_cache
+syn keyword ngxDirective uwsgi_cache_background_update
+syn keyword ngxDirective uwsgi_cache_bypass
+syn keyword ngxDirective uwsgi_cache_key
+syn keyword ngxDirective uwsgi_cache_lock
+syn keyword ngxDirective uwsgi_cache_lock_age
+syn keyword ngxDirective uwsgi_cache_lock_timeout
+syn keyword ngxDirective uwsgi_cache_methods
+syn keyword ngxDirective uwsgi_cache_min_uses
+syn keyword ngxDirective uwsgi_cache_path
+syn keyword ngxDirective uwsgi_cache_purge
+syn keyword ngxDirective uwsgi_cache_revalidate
+syn keyword ngxDirective uwsgi_cache_use_stale
+syn keyword ngxDirective uwsgi_cache_valid
+syn keyword ngxDirective uwsgi_connect_timeout
+syn keyword ngxDirective uwsgi_force_ranges
+syn keyword ngxDirective uwsgi_hide_header
+syn keyword ngxDirective uwsgi_ignore_client_abort
+syn keyword ngxDirective uwsgi_ignore_headers
+syn keyword ngxDirective uwsgi_intercept_errors
+syn keyword ngxDirective uwsgi_limit_rate
+syn keyword ngxDirective uwsgi_max_temp_file_size
+syn keyword ngxDirective uwsgi_modifier1
+syn keyword ngxDirective uwsgi_modifier2
+syn keyword ngxDirective uwsgi_next_upstream
+syn keyword ngxDirective uwsgi_next_upstream_timeout
+syn keyword ngxDirective uwsgi_next_upstream_tries
+syn keyword ngxDirective uwsgi_no_cache
+syn keyword ngxDirective uwsgi_param
+syn keyword ngxDirective uwsgi_pass
+syn keyword ngxDirective uwsgi_pass_header
+syn keyword ngxDirective uwsgi_pass_request_body
+syn keyword ngxDirective uwsgi_pass_request_headers
+syn keyword ngxDirective uwsgi_read_timeout
+syn keyword ngxDirective uwsgi_request_buffering
+syn keyword ngxDirective uwsgi_send_timeout
+syn keyword ngxDirective uwsgi_ssl_certificate
+syn keyword ngxDirective uwsgi_ssl_certificate_key
+syn keyword ngxDirective uwsgi_ssl_ciphers
+syn keyword ngxDirective uwsgi_ssl_crl
+syn keyword ngxDirective uwsgi_ssl_name
+syn keyword ngxDirective uwsgi_ssl_password_file
+syn keyword ngxDirective uwsgi_ssl_protocols nextgroup=ngxSSLProtocol skipwhite
+syn keyword ngxDirective uwsgi_ssl_server_name
+syn keyword ngxDirective uwsgi_ssl_session_reuse
+syn keyword ngxDirective uwsgi_ssl_trusted_certificate
+syn keyword ngxDirective uwsgi_ssl_verify
+syn keyword ngxDirective uwsgi_ssl_verify_depth
+syn keyword ngxDirective uwsgi_store
+syn keyword ngxDirective uwsgi_store_access
+syn keyword ngxDirective uwsgi_string
+syn keyword ngxDirective uwsgi_temp_file_write_size
+syn keyword ngxDirective uwsgi_temp_path
+syn keyword ngxDirective valid_referers
+syn keyword ngxDirective variables_hash_bucket_size
+syn keyword ngxDirective variables_hash_max_size
+syn keyword ngxDirective worker_aio_requests
+syn keyword ngxDirective worker_connections
+syn keyword ngxDirective worker_cpu_affinity
+syn keyword ngxDirective worker_priority
+syn keyword ngxDirective worker_processes
+syn keyword ngxDirective worker_rlimit_core
+syn keyword ngxDirective worker_rlimit_nofile
+syn keyword ngxDirective worker_rlimit_sigpending
+syn keyword ngxDirective worker_threads
+syn keyword ngxDirective working_directory
+syn keyword ngxDirective xclient
+syn keyword ngxDirective xml_entities
+syn keyword ngxDirective xslt_last_modified
+syn keyword ngxDirective xslt_param
+syn keyword ngxDirective xslt_string_param
+syn keyword ngxDirective xslt_stylesheet
+syn keyword ngxDirective xslt_types
+syn keyword ngxDirective zone
+
+" Do not enable highlighting of insecure ciphers if sslecure is loaded
+if !exists('g:loaded_sslsecure')
+ " Mark insecure SSL Ciphers (Note: List might not not complete)
+ " Reference: https://www.openssl.org/docs/man1.0.2/apps/ciphers.html
+ syn match ngxSSLCipherInsecure '[^!]\zsSSLv3'
+ syn match ngxSSLCipherInsecure '[^!]\zsSSLv2'
+ syn match ngxSSLCipherInsecure '[^!]\zsHIGH'
+ syn match ngxSSLCipherInsecure '[^!]\zsMEDIUM'
+ syn match ngxSSLCipherInsecure '[^!]\zsLOW'
+ syn match ngxSSLCipherInsecure '[^!]\zsDEFAULT'
+ syn match ngxSSLCipherInsecure '[^!]\zsCOMPLEMENTOFDEFAULT'
+ syn match ngxSSLCipherInsecure '[^!]\zsALL'
+ syn match ngxSSLCipherInsecure '[^!]\zsCOMPLEMENTOFALL'
+
+ " SHA ciphers are only used in HMAC with all known OpenSSL/ LibreSSL cipher suites and MAC
+ " usage is still considered safe
+ " syn match ngxSSLCipherInsecure '[^!]\zsSHA\ze\D' " Match SHA1 without matching SHA256+
+ " syn match ngxSSLCipherInsecure '[^!]\zsSHA1'
+ syn match ngxSSLCipherInsecure '[^!]\zsMD5'
+ syn match ngxSSLCipherInsecure '[^!]\zsRC2'
+ syn match ngxSSLCipherInsecure '[^!]\zsRC4'
+ syn match ngxSSLCipherInsecure '[^!]\zs3DES'
+ syn match ngxSSLCipherInsecure '[^!3]\zsDES'
+ syn match ngxSSLCipherInsecure '[^!]\zsaDSS'
+ syn match ngxSSLCipherInsecure '[^!a]\zsDSS'
+ syn match ngxSSLCipherInsecure '[^!]\zsPSK'
+ syn match ngxSSLCipherInsecure '[^!]\zsIDEA'
+ syn match ngxSSLCipherInsecure '[^!]\zsSEED'
+ syn match ngxSSLCipherInsecure '[^!]\zsEXP\w*' " Match all EXPORT ciphers
+ syn match ngxSSLCipherInsecure '[^!]\zsaGOST\w*' " Match all GOST ciphers
+ syn match ngxSSLCipherInsecure '[^!]\zskGOST\w*'
+ syn match ngxSSLCipherInsecure '[^!ak]\zsGOST\w*'
+ syn match ngxSSLCipherInsecure '[^!]\zs[kae]\?FZA' " Not implemented
+ syn match ngxSSLCipherInsecure '[^!]\zsECB'
+ syn match ngxSSLCipherInsecure '[^!]\zs[aes]NULL'
+
+ " Anonymous cipher suites should never be used
+ syn match ngxSSLCipherInsecure '[^!ECa]\zsDH\ze[^E]' " Try to match DH without DHE, EDH, EECDH, etc.
+ syn match ngxSSLCipherInsecure '[^!EA]\zsECDH\ze[^E]' " Do not match EECDH, ECDHE
+ syn match ngxSSLCipherInsecure '[^!]\zsADH'
+ syn match ngxSSLCipherInsecure '[^!]\zskDHE'
+ syn match ngxSSLCipherInsecure '[^!]\zskEDH'
+ syn match ngxSSLCipherInsecure '[^!]\zskECDHE'
+ syn match ngxSSLCipherInsecure '[^!]\zskEECDH'
+ syn match ngxSSLCipherInsecure '[^!E]\zsAECDH'
+endif
+
+syn keyword ngxProxyNextUpstreamOptions error contained
+syn keyword ngxProxyNextUpstreamOptions timeout contained
+syn keyword ngxProxyNextUpstreamOptions invalid_header contained
+syn keyword ngxProxyNextUpstreamOptions http_500 contained
+syn keyword ngxProxyNextUpstreamOptions http_502 contained
+syn keyword ngxProxyNextUpstreamOptions http_503 contained
+syn keyword ngxProxyNextUpstreamOptions http_504 contained
+syn keyword ngxProxyNextUpstreamOptions http_403 contained
+syn keyword ngxProxyNextUpstreamOptions http_404 contained
+syn keyword ngxProxyNextUpstreamOptions http_429 contained
+syn keyword ngxProxyNextUpstreamOptions non_idempotent contained
+syn keyword ngxProxyNextUpstreamOptions off contained
+
+syn keyword ngxStickyOptions cookie contained
+syn region ngxStickyOptionsCookie matchgroup=ngxStickyOptions start=+^\s*\zssticky\s\s*cookie\ze\s.*;+ skip=+\\\\\|\\\;+ end=+;+he=e-1 contains=ngxCookieOptions,ngxString,ngxBoolean,ngxInteger,ngxTemplateVar
+syn keyword ngxStickyOptions route contained
+syn keyword ngxStickyOptions learn contained
+
+syn keyword ngxCookieOptions expires contained
+syn keyword ngxCookieOptions domain contained
+syn keyword ngxCookieOptions httponly contained
+syn keyword ngxCookieOptions secure contained
+syn keyword ngxCookieOptions path contained
+
+" 3rd party module list:
+" https://www.nginx.com/resources/wiki/modules/
+
+" Accept Language Module <https://www.nginx.com/resources/wiki/modules/accept_language/>
+" Parses the Accept-Language header and gives the most suitable locale from a list of supported locales.
+syn keyword ngxDirectiveThirdParty set_from_accept_language
+
+" Access Key Module (DEPRECATED) <http://wiki.nginx.org/NginxHttpAccessKeyModule>
+" Denies access unless the request URL contains an access key.
+syn keyword ngxDirectiveDeprecated accesskey
+syn keyword ngxDirectiveDeprecated accesskey_arg
+syn keyword ngxDirectiveDeprecated accesskey_hashmethod
+syn keyword ngxDirectiveDeprecated accesskey_signature
+
+" Asynchronous FastCGI Module <https://github.com/rsms/afcgi>
+" Primarily a modified version of the Nginx FastCGI module which implements multiplexing of connections, allowing a single FastCGI server to handle many concurrent requests.
+" syn keyword ngxDirectiveThirdParty fastcgi_bind
+" syn keyword ngxDirectiveThirdParty fastcgi_buffer_size
+" syn keyword ngxDirectiveThirdParty fastcgi_buffers
+" syn keyword ngxDirectiveThirdParty fastcgi_busy_buffers_size
+" syn keyword ngxDirectiveThirdParty fastcgi_cache
+" syn keyword ngxDirectiveThirdParty fastcgi_cache_key
+" syn keyword ngxDirectiveThirdParty fastcgi_cache_methods
+" syn keyword ngxDirectiveThirdParty fastcgi_cache_min_uses
+" syn keyword ngxDirectiveThirdParty fastcgi_cache_path
+" syn keyword ngxDirectiveThirdParty fastcgi_cache_use_stale
+" syn keyword ngxDirectiveThirdParty fastcgi_cache_valid
+" syn keyword ngxDirectiveThirdParty fastcgi_catch_stderr
+" syn keyword ngxDirectiveThirdParty fastcgi_connect_timeout
+" syn keyword ngxDirectiveThirdParty fastcgi_hide_header
+" syn keyword ngxDirectiveThirdParty fastcgi_ignore_client_abort
+" syn keyword ngxDirectiveThirdParty fastcgi_ignore_headers
+" syn keyword ngxDirectiveThirdParty fastcgi_index
+" syn keyword ngxDirectiveThirdParty fastcgi_intercept_errors
+" syn keyword ngxDirectiveThirdParty fastcgi_max_temp_file_size
+" syn keyword ngxDirectiveThirdParty fastcgi_next_upstream
+" syn keyword ngxDirectiveThirdParty fastcgi_param
+" syn keyword ngxDirectiveThirdParty fastcgi_pass
+" syn keyword ngxDirectiveThirdParty fastcgi_pass_header
+" syn keyword ngxDirectiveThirdParty fastcgi_pass_request_body
+" syn keyword ngxDirectiveThirdParty fastcgi_pass_request_headers
+" syn keyword ngxDirectiveThirdParty fastcgi_read_timeout
+" syn keyword ngxDirectiveThirdParty fastcgi_send_lowat
+" syn keyword ngxDirectiveThirdParty fastcgi_send_timeout
+" syn keyword ngxDirectiveThirdParty fastcgi_split_path_info
+" syn keyword ngxDirectiveThirdParty fastcgi_store
+" syn keyword ngxDirectiveThirdParty fastcgi_store_access
+" syn keyword ngxDirectiveThirdParty fastcgi_temp_file_write_size
+" syn keyword ngxDirectiveThirdParty fastcgi_temp_path
+syn keyword ngxDirectiveDeprecated fastcgi_upstream_fail_timeout
+syn keyword ngxDirectiveDeprecated fastcgi_upstream_max_fails
+
+" Akamai G2O Module <https://github.com/kaltura/nginx_mod_akamai_g2o>
+" Nginx Module for Authenticating Akamai G2O requests
+syn keyword ngxDirectiveThirdParty g2o
+syn keyword ngxDirectiveThirdParty g2o_nonce
+syn keyword ngxDirectiveThirdParty g2o_key
+
+" Lua Module <https://github.com/alacner/nginx_lua_module>
+" You can be very simple to execute lua code for nginx
+syn keyword ngxDirectiveThirdParty lua_file
+
+" Array Variable Module <https://github.com/openresty/array-var-nginx-module>
+" Add support for array-typed variables to nginx config files
+syn keyword ngxDirectiveThirdParty array_split
+syn keyword ngxDirectiveThirdParty array_join
+syn keyword ngxDirectiveThirdParty array_map
+syn keyword ngxDirectiveThirdParty array_map_op
+
+" Nginx Audio Track for HTTP Live Streaming <https://github.com/flavioribeiro/nginx-audio-track-for-hls-module>
+" This nginx module generates audio track for hls streams on the fly.
+syn keyword ngxDirectiveThirdParty ngx_hls_audio_track
+syn keyword ngxDirectiveThirdParty ngx_hls_audio_track_rootpath
+syn keyword ngxDirectiveThirdParty ngx_hls_audio_track_output_format
+syn keyword ngxDirectiveThirdParty ngx_hls_audio_track_output_header
+
+" AWS Proxy Module <https://github.com/anomalizer/ngx_aws_auth>
+" Nginx module to proxy to authenticated AWS services
+syn keyword ngxDirectiveThirdParty aws_access_key
+syn keyword ngxDirectiveThirdParty aws_key_scope
+syn keyword ngxDirectiveThirdParty aws_signing_key
+syn keyword ngxDirectiveThirdParty aws_endpoint
+syn keyword ngxDirectiveThirdParty aws_s3_bucket
+syn keyword ngxDirectiveThirdParty aws_sign
+
+" Backtrace module <https://github.com/alibaba/nginx-backtrace>
+" A Nginx module to dump backtrace when a worker process exits abnormally
+syn keyword ngxDirectiveThirdParty backtrace_log
+syn keyword ngxDirectiveThirdParty backtrace_max_stack_size
+
+" Brotli Module <https://github.com/google/ngx_brotli>
+" Nginx module for Brotli compression
+syn keyword ngxDirectiveThirdParty brotli_static
+syn keyword ngxDirectiveThirdParty brotli
+syn keyword ngxDirectiveThirdParty brotli_types
+syn keyword ngxDirectiveThirdParty brotli_buffers
+syn keyword ngxDirectiveThirdParty brotli_comp_level
+syn keyword ngxDirectiveThirdParty brotli_window
+syn keyword ngxDirectiveThirdParty brotli_min_length
+
+" Cache Purge Module <https://github.com/FRiCKLE/ngx_cache_purge>
+" Adds ability to purge content from FastCGI, proxy, SCGI and uWSGI caches.
+syn keyword ngxDirectiveThirdParty fastcgi_cache_purge
+syn keyword ngxDirectiveThirdParty proxy_cache_purge
+" syn keyword ngxDirectiveThirdParty scgi_cache_purge
+" syn keyword ngxDirectiveThirdParty uwsgi_cache_purge
+
+" Chunkin Module (DEPRECATED) <http://wiki.nginx.org/NginxHttpChunkinModule>
+" HTTP 1.1 chunked-encoding request body support for Nginx.
+syn keyword ngxDirectiveDeprecated chunkin
+syn keyword ngxDirectiveDeprecated chunkin_keepalive
+syn keyword ngxDirectiveDeprecated chunkin_max_chunks_per_buf
+syn keyword ngxDirectiveDeprecated chunkin_resume
+
+" Circle GIF Module <https://github.com/evanmiller/nginx_circle_gif>
+" Generates simple circle images with the colors and size specified in the URL.
+syn keyword ngxDirectiveThirdParty circle_gif
+syn keyword ngxDirectiveThirdParty circle_gif_max_radius
+syn keyword ngxDirectiveThirdParty circle_gif_min_radius
+syn keyword ngxDirectiveThirdParty circle_gif_step_radius
+
+" Nginx-Clojure Module <http://nginx-clojure.github.io/index.html>
+" Parses the Accept-Language header and gives the most suitable locale from a list of supported locales.
+syn keyword ngxDirectiveThirdParty jvm_path
+syn keyword ngxDirectiveThirdParty jvm_var
+syn keyword ngxDirectiveThirdParty jvm_classpath
+syn keyword ngxDirectiveThirdParty jvm_classpath_check
+syn keyword ngxDirectiveThirdParty jvm_workers
+syn keyword ngxDirectiveThirdParty jvm_options
+syn keyword ngxDirectiveThirdParty jvm_handler_type
+syn keyword ngxDirectiveThirdParty jvm_init_handler_name
+syn keyword ngxDirectiveThirdParty jvm_init_handler_code
+syn keyword ngxDirectiveThirdParty jvm_exit_handler_name
+syn keyword ngxDirectiveThirdParty jvm_exit_handler_code
+syn keyword ngxDirectiveThirdParty handlers_lazy_init
+syn keyword ngxDirectiveThirdParty auto_upgrade_ws
+syn keyword ngxDirectiveThirdParty content_handler_type
+syn keyword ngxDirectiveThirdParty content_handler_name
+syn keyword ngxDirectiveThirdParty content_handler_code
+syn keyword ngxDirectiveThirdParty rewrite_handler_type
+syn keyword ngxDirectiveThirdParty rewrite_handler_name
+syn keyword ngxDirectiveThirdParty rewrite_handler_code
+syn keyword ngxDirectiveThirdParty access_handler_type
+syn keyword ngxDirectiveThirdParty access_handler_name
+syn keyword ngxDirectiveThirdParty access_handler_code
+syn keyword ngxDirectiveThirdParty header_filter_type
+syn keyword ngxDirectiveThirdParty header_filter_name
+syn keyword ngxDirectiveThirdParty header_filter_code
+syn keyword ngxDirectiveThirdParty content_handler_property
+syn keyword ngxDirectiveThirdParty rewrite_handler_property
+syn keyword ngxDirectiveThirdParty access_handler_property
+syn keyword ngxDirectiveThirdParty header_filter_property
+syn keyword ngxDirectiveThirdParty always_read_body
+syn keyword ngxDirectiveThirdParty shared_map
+syn keyword ngxDirectiveThirdParty write_page_size
+
+" Upstream Consistent Hash <https://www.nginx.com/resources/wiki/modules/consistent_hash/>
+" A load balancer that uses an internal consistent hash ring to select the right backend node.
+syn keyword ngxDirectiveThirdParty consistent_hash
+
+" Nginx Development Kit <https://github.com/simpl/ngx_devel_kit>
+" The NDK is an Nginx module that is designed to extend the core functionality of the excellent Nginx webserver in a way that can be used as a basis of other Nginx modules.
+" NDK_UPSTREAM_LIST
+" This submodule provides a directive that creates a list of upstreams, with optional weighting. This list can then be used by other modules to hash over the upstreams however they choose.
+syn keyword ngxDirectiveThirdParty upstream_list
+
+" Drizzle Module <https://www.nginx.com/resources/wiki/modules/drizzle/>
+" Upstream module for talking to MySQL and Drizzle directly
+syn keyword ngxDirectiveThirdParty drizzle_server
+syn keyword ngxDirectiveThirdParty drizzle_keepalive
+syn keyword ngxDirectiveThirdParty drizzle_query
+syn keyword ngxDirectiveThirdParty drizzle_pass
+syn keyword ngxDirectiveThirdParty drizzle_connect_timeout
+syn keyword ngxDirectiveThirdParty drizzle_send_query_timeout
+syn keyword ngxDirectiveThirdParty drizzle_recv_cols_timeout
+syn keyword ngxDirectiveThirdParty drizzle_recv_rows_timeout
+syn keyword ngxDirectiveThirdParty drizzle_buffer_size
+syn keyword ngxDirectiveThirdParty drizzle_module_header
+syn keyword ngxDirectiveThirdParty drizzle_status
+
+" Dynamic ETags Module <https://github.com/kali/nginx-dynamic-etags>
+" Attempt at handling ETag / If-None-Match on proxied content.
+syn keyword ngxDirectiveThirdParty dynamic_etags
+
+" Echo Module <https://www.nginx.com/resources/wiki/modules/echo/>
+" Bringing the power of "echo", "sleep", "time" and more to Nginx's config file
+syn keyword ngxDirectiveThirdParty echo
+syn keyword ngxDirectiveThirdParty echo_duplicate
+syn keyword ngxDirectiveThirdParty echo_flush
+syn keyword ngxDirectiveThirdParty echo_sleep
+syn keyword ngxDirectiveThirdParty echo_blocking_sleep
+syn keyword ngxDirectiveThirdParty echo_reset_timer
+syn keyword ngxDirectiveThirdParty echo_read_request_body
+syn keyword ngxDirectiveThirdParty echo_location_async
+syn keyword ngxDirectiveThirdParty echo_location
+syn keyword ngxDirectiveThirdParty echo_subrequest_async
+syn keyword ngxDirectiveThirdParty echo_subrequest
+syn keyword ngxDirectiveThirdParty echo_foreach_split
+syn keyword ngxDirectiveThirdParty echo_end
+syn keyword ngxDirectiveThirdParty echo_request_body
+syn keyword ngxDirectiveThirdParty echo_exec
+syn keyword ngxDirectiveThirdParty echo_status
+syn keyword ngxDirectiveThirdParty echo_before_body
+syn keyword ngxDirectiveThirdParty echo_after_body
+
+" Encrypted Session Module <https://github.com/openresty/encrypted-session-nginx-module>
+" Encrypt and decrypt nginx variable values
+syn keyword ngxDirectiveThirdParty encrypted_session_key
+syn keyword ngxDirectiveThirdParty encrypted_session_iv
+syn keyword ngxDirectiveThirdParty encrypted_session_expires
+syn keyword ngxDirectiveThirdParty set_encrypt_session
+syn keyword ngxDirectiveThirdParty set_decrypt_session
+
+" Enhanced Memcached Module <https://github.com/bpaquet/ngx_http_enhanced_memcached_module>
+" This module is based on the standard Nginx Memcached module, with some additonal features
+syn keyword ngxDirectiveThirdParty enhanced_memcached_pass
+syn keyword ngxDirectiveThirdParty enhanced_memcached_hash_keys_with_md5
+syn keyword ngxDirectiveThirdParty enhanced_memcached_allow_put
+syn keyword ngxDirectiveThirdParty enhanced_memcached_allow_delete
+syn keyword ngxDirectiveThirdParty enhanced_memcached_stats
+syn keyword ngxDirectiveThirdParty enhanced_memcached_flush
+syn keyword ngxDirectiveThirdParty enhanced_memcached_flush_namespace
+syn keyword ngxDirectiveThirdParty enhanced_memcached_bind
+syn keyword ngxDirectiveThirdParty enhanced_memcached_connect_timeout
+syn keyword ngxDirectiveThirdParty enhanced_memcached_send_timeout
+syn keyword ngxDirectiveThirdParty enhanced_memcached_buffer_size
+syn keyword ngxDirectiveThirdParty enhanced_memcached_read_timeout
+
+" Events Module (DEPRECATED) <http://docs.dutov.org/nginx_modules_events_en.html>
+" Provides options for start/stop events.
+syn keyword ngxDirectiveDeprecated on_start
+syn keyword ngxDirectiveDeprecated on_stop
+
+" EY Balancer Module <https://github.com/ezmobius/nginx-ey-balancer>
+" Adds a request queue to Nginx that allows the limiting of concurrent requests passed to the upstream.
+syn keyword ngxDirectiveThirdParty max_connections
+syn keyword ngxDirectiveThirdParty max_connections_max_queue_length
+syn keyword ngxDirectiveThirdParty max_connections_queue_timeout
+
+" Upstream Fair Balancer <https://www.nginx.com/resources/wiki/modules/fair_balancer/>
+" Sends an incoming request to the least-busy backend server, rather than distributing requests round-robin.
+syn keyword ngxDirectiveThirdParty fair
+syn keyword ngxDirectiveThirdParty upstream_fair_shm_size
+
+" Fancy Indexes Module <https://github.com/aperezdc/ngx-fancyindex>
+" Like the built-in autoindex module, but fancier.
+syn keyword ngxDirectiveThirdParty fancyindex
+syn keyword ngxDirectiveThirdParty fancyindex_default_sort
+syn keyword ngxDirectiveThirdParty fancyindex_directories_first
+syn keyword ngxDirectiveThirdParty fancyindex_css_href
+syn keyword ngxDirectiveThirdParty fancyindex_exact_size
+syn keyword ngxDirectiveThirdParty fancyindex_name_length
+syn keyword ngxDirectiveThirdParty fancyindex_footer
+syn keyword ngxDirectiveThirdParty fancyindex_header
+syn keyword ngxDirectiveThirdParty fancyindex_show_path
+syn keyword ngxDirectiveThirdParty fancyindex_ignore
+syn keyword ngxDirectiveThirdParty fancyindex_hide_symlinks
+syn keyword ngxDirectiveThirdParty fancyindex_localtime
+syn keyword ngxDirectiveThirdParty fancyindex_time_format
+
+" Form Auth Module <https://github.com/veruu/ngx_form_auth>
+" Provides authentication and authorization with credentials submitted via POST request
+syn keyword ngxDirectiveThirdParty form_auth
+syn keyword ngxDirectiveThirdParty form_auth_pam_service
+syn keyword ngxDirectiveThirdParty form_auth_login
+syn keyword ngxDirectiveThirdParty form_auth_password
+syn keyword ngxDirectiveThirdParty form_auth_remote_user
+
+" Form Input Module <https://github.com/calio/form-input-nginx-module>
+" Reads HTTP POST and PUT request body encoded in "application/x-www-form-urlencoded" and parses the arguments into nginx variables.
+syn keyword ngxDirectiveThirdParty set_form_input
+syn keyword ngxDirectiveThirdParty set_form_input_multi
+
+" GeoIP Module (DEPRECATED) <http://wiki.nginx.org/NginxHttp3rdPartyGeoIPModule>
+" Country code lookups via the MaxMind GeoIP API.
+syn keyword ngxDirectiveDeprecated geoip_country_file
+
+" GeoIP 2 Module <https://github.com/leev/ngx_http_geoip2_module>
+" Creates variables with values from the maxmind geoip2 databases based on the client IP
+syn keyword ngxDirectiveThirdParty geoip2
+
+" GridFS Module <https://github.com/mdirolf/nginx-gridfs>
+" Nginx module for serving files from MongoDB's GridFS
+syn keyword ngxDirectiveThirdParty gridfs
+
+" Headers More Module <https://github.com/openresty/headers-more-nginx-module>
+" Set and clear input and output headers...more than "add"!
+syn keyword ngxDirectiveThirdParty more_clear_headers
+syn keyword ngxDirectiveThirdParty more_clear_input_headers
+syn keyword ngxDirectiveThirdParty more_set_headers
+syn keyword ngxDirectiveThirdParty more_set_input_headers
+
+" Health Checks Upstreams Module <https://www.nginx.com/resources/wiki/modules/healthcheck/>
+" Polls backends and if they respond with HTTP 200 + an optional request body, they are marked good. Otherwise, they are marked bad.
+syn keyword ngxDirectiveThirdParty healthcheck_enabled
+syn keyword ngxDirectiveThirdParty healthcheck_delay
+syn keyword ngxDirectiveThirdParty healthcheck_timeout
+syn keyword ngxDirectiveThirdParty healthcheck_failcount
+syn keyword ngxDirectiveThirdParty healthcheck_send
+syn keyword ngxDirectiveThirdParty healthcheck_expected
+syn keyword ngxDirectiveThirdParty healthcheck_buffer
+syn keyword ngxDirectiveThirdParty healthcheck_status
+
+" HTTP Accounting Module <https://github.com/Lax/ngx_http_accounting_module>
+" Add traffic stat function to nginx. Useful for http accounting based on nginx configuration logic
+syn keyword ngxDirectiveThirdParty http_accounting
+syn keyword ngxDirectiveThirdParty http_accounting_log
+syn keyword ngxDirectiveThirdParty http_accounting_id
+syn keyword ngxDirectiveThirdParty http_accounting_interval
+syn keyword ngxDirectiveThirdParty http_accounting_perturb
+
+" Nginx Digest Authentication module <https://github.com/atomx/nginx-http-auth-digest>
+" Digest Authentication for Nginx
+syn keyword ngxDirectiveThirdParty auth_digest
+syn keyword ngxDirectiveThirdParty auth_digest_user_file
+syn keyword ngxDirectiveThirdParty auth_digest_timeout
+syn keyword ngxDirectiveThirdParty auth_digest_expires
+syn keyword ngxDirectiveThirdParty auth_digest_replays
+syn keyword ngxDirectiveThirdParty auth_digest_shm_size
+
+" Auth PAM Module <https://github.com/sto/ngx_http_auth_pam_module>
+" HTTP Basic Authentication using PAM.
+syn keyword ngxDirectiveThirdParty auth_pam
+syn keyword ngxDirectiveThirdParty auth_pam_service_name
+
+" HTTP Auth Request Module <http://nginx.org/en/docs/http/ngx_http_auth_request_module.html>
+" Implements client authorization based on the result of a subrequest
+" syn keyword ngxDirectiveThirdParty auth_request
+" syn keyword ngxDirectiveThirdParty auth_request_set
+
+" HTTP Concatenation module for Nginx <https://github.com/alibaba/nginx-http-concat>
+" A Nginx module for concatenating files in a given context: CSS and JS files usually
+syn keyword ngxDirectiveThirdParty concat
+syn keyword ngxDirectiveThirdParty concat_types
+syn keyword ngxDirectiveThirdParty concat_unique
+syn keyword ngxDirectiveThirdParty concat_max_files
+syn keyword ngxDirectiveThirdParty concat_delimiter
+syn keyword ngxDirectiveThirdParty concat_ignore_file_error
+
+" HTTP Dynamic Upstream Module <https://github.com/yzprofile/ngx_http_dyups_module>
+" Update upstreams' config by restful interface
+syn keyword ngxDirectiveThirdParty dyups_interface
+syn keyword ngxDirectiveThirdParty dyups_read_msg_timeout
+syn keyword ngxDirectiveThirdParty dyups_shm_zone_size
+syn keyword ngxDirectiveThirdParty dyups_upstream_conf
+syn keyword ngxDirectiveThirdParty dyups_trylock
+
+" HTTP Footer If Filter Module <https://github.com/flygoast/ngx_http_footer_if_filter>
+" The ngx_http_footer_if_filter_module is used to add given content to the end of the response according to the condition specified.
+syn keyword ngxDirectiveThirdParty footer_if
+
+" HTTP Footer Filter Module <https://github.com/alibaba/nginx-http-footer-filter>
+" This module implements a body filter that adds a given string to the page footer.
+syn keyword ngxDirectiveThirdParty footer
+syn keyword ngxDirectiveThirdParty footer_types
+
+" HTTP Internal Redirect Module <https://github.com/flygoast/ngx_http_internal_redirect>
+" Make an internal redirect to the uri specified according to the condition specified.
+syn keyword ngxDirectiveThirdParty internal_redirect_if
+syn keyword ngxDirectiveThirdParty internal_redirect_if_no_postponed
+
+" HTTP JavaScript Module <https://github.com/peter-leonov/ngx_http_js_module>
+" Embedding SpiderMonkey. Nearly full port on Perl module.
+syn keyword ngxDirectiveThirdParty js
+syn keyword ngxDirectiveThirdParty js_filter
+syn keyword ngxDirectiveThirdParty js_filter_types
+syn keyword ngxDirectiveThirdParty js_load
+syn keyword ngxDirectiveThirdParty js_maxmem
+syn keyword ngxDirectiveThirdParty js_require
+syn keyword ngxDirectiveThirdParty js_set
+syn keyword ngxDirectiveThirdParty js_utf8
+
+" HTTP Push Module (DEPRECATED) <http://pushmodule.slact.net/>
+" Turn Nginx into an adept long-polling HTTP Push (Comet) server.
+syn keyword ngxDirectiveDeprecated push_buffer_size
+syn keyword ngxDirectiveDeprecated push_listener
+syn keyword ngxDirectiveDeprecated push_message_timeout
+syn keyword ngxDirectiveDeprecated push_queue_messages
+syn keyword ngxDirectiveDeprecated push_sender
+
+" HTTP Redis Module <https://www.nginx.com/resources/wiki/modules/redis/>
+" Redis <http://code.google.com/p/redis/> support.
+syn keyword ngxDirectiveThirdParty redis_bind
+syn keyword ngxDirectiveThirdParty redis_buffer_size
+syn keyword ngxDirectiveThirdParty redis_connect_timeout
+syn keyword ngxDirectiveThirdParty redis_next_upstream
+syn keyword ngxDirectiveThirdParty redis_pass
+syn keyword ngxDirectiveThirdParty redis_read_timeout
+syn keyword ngxDirectiveThirdParty redis_send_timeout
+
+" Iconv Module <https://github.com/calio/iconv-nginx-module>
+" A character conversion nginx module using libiconv
+syn keyword ngxDirectiveThirdParty set_iconv
+syn keyword ngxDirectiveThirdParty iconv_buffer_size
+syn keyword ngxDirectiveThirdParty iconv_filter
+
+" IP Blocker Module <https://github.com/tmthrgd/nginx-ip-blocker>
+" An efficient shared memory IP blocking system for nginx.
+syn keyword ngxDirectiveThirdParty ip_blocker
+
+" IP2Location Module <https://github.com/chrislim2888/ip2location-nginx>
+" Allows user to lookup for geolocation information using IP2Location database
+syn keyword ngxDirectiveThirdParty ip2location_database
+
+" JS Module <https://github.com/peter-leonov/ngx_http_js_module>
+" Reflect the nginx functionality in JS
+syn keyword ngxDirectiveThirdParty js
+syn keyword ngxDirectiveThirdParty js_access
+syn keyword ngxDirectiveThirdParty js_load
+syn keyword ngxDirectiveThirdParty js_set
+
+" Limit Upload Rate Module <https://github.com/cfsego/limit_upload_rate>
+" Limit client-upload rate when they are sending request bodies to you
+syn keyword ngxDirectiveThirdParty limit_upload_rate
+syn keyword ngxDirectiveThirdParty limit_upload_rate_after
+
+" Limit Upstream Module <https://github.com/cfsego/nginx-limit-upstream>
+" Limit the number of connections to upstream for NGINX
+syn keyword ngxDirectiveThirdParty limit_upstream_zone
+syn keyword ngxDirectiveThirdParty limit_upstream_conn
+syn keyword ngxDirectiveThirdParty limit_upstream_log_level
+
+" Log If Module <https://github.com/cfsego/ngx_log_if>
+" Conditional accesslog for nginx
+syn keyword ngxDirectiveThirdParty access_log_bypass_if
+
+" Log Request Speed (DEPRECATED) <http://wiki.nginx.org/NginxHttpLogRequestSpeed>
+" Log the time it took to process each request.
+syn keyword ngxDirectiveDeprecated log_request_speed_filter
+syn keyword ngxDirectiveDeprecated log_request_speed_filter_timeout
+
+" Log ZeroMQ Module <https://github.com/alticelabs/nginx-log-zmq>
+" ZeroMQ logger module for nginx
+syn keyword ngxDirectiveThirdParty log_zmq_server
+syn keyword ngxDirectiveThirdParty log_zmq_endpoint
+syn keyword ngxDirectiveThirdParty log_zmq_format
+syn keyword ngxDirectiveThirdParty log_zmq_off
+
+" Lower/UpperCase Module <https://github.com/replay/ngx_http_lower_upper_case>
+" This module simply uppercases or lowercases a string and saves it into a new variable.
+syn keyword ngxDirectiveThirdParty lower
+syn keyword ngxDirectiveThirdParty upper
+
+" Lua Upstream Module <https://github.com/openresty/lua-upstream-nginx-module>
+" Nginx C module to expose Lua API to ngx_lua for Nginx upstreams
+
+" Lua Module <https://github.com/openresty/lua-nginx-module>
+" Embed the Power of Lua into NGINX HTTP servers
+syn keyword ngxDirectiveThirdParty lua_use_default_type
+syn keyword ngxDirectiveThirdParty lua_malloc_trim
+syn keyword ngxDirectiveThirdParty lua_code_cache
+syn keyword ngxDirectiveThirdParty lua_regex_cache_max_entries
+syn keyword ngxDirectiveThirdParty lua_regex_match_limit
+syn keyword ngxDirectiveThirdParty lua_package_path
+syn keyword ngxDirectiveThirdParty lua_package_cpath
+syn keyword ngxDirectiveThirdParty init_by_lua
+syn keyword ngxDirectiveThirdParty init_by_lua_file
+syn keyword ngxDirectiveThirdParty init_worker_by_lua
+syn keyword ngxDirectiveThirdParty init_worker_by_lua_file
+syn keyword ngxDirectiveThirdParty set_by_lua
+syn keyword ngxDirectiveThirdParty set_by_lua_file
+syn keyword ngxDirectiveThirdParty content_by_lua
+syn keyword ngxDirectiveThirdParty content_by_lua_file
+syn keyword ngxDirectiveThirdParty rewrite_by_lua
+syn keyword ngxDirectiveThirdParty rewrite_by_lua_file
+syn keyword ngxDirectiveThirdParty access_by_lua
+syn keyword ngxDirectiveThirdParty access_by_lua_file
+syn keyword ngxDirectiveThirdParty header_filter_by_lua
+syn keyword ngxDirectiveThirdParty header_filter_by_lua_file
+syn keyword ngxDirectiveThirdParty body_filter_by_lua
+syn keyword ngxDirectiveThirdParty body_filter_by_lua_file
+syn keyword ngxDirectiveThirdParty log_by_lua
+syn keyword ngxDirectiveThirdParty log_by_lua_file
+syn keyword ngxDirectiveThirdParty balancer_by_lua_file
+syn keyword ngxDirectiveThirdParty lua_need_request_body
+syn keyword ngxDirectiveThirdParty ssl_certificate_by_lua_file
+syn keyword ngxDirectiveThirdParty ssl_session_fetch_by_lua_file
+syn keyword ngxDirectiveThirdParty ssl_session_store_by_lua_file
+syn keyword ngxDirectiveThirdParty lua_shared_dict
+syn keyword ngxDirectiveThirdParty lua_socket_connect_timeout
+syn keyword ngxDirectiveThirdParty lua_socket_send_timeout
+syn keyword ngxDirectiveThirdParty lua_socket_send_lowat
+syn keyword ngxDirectiveThirdParty lua_socket_read_timeout
+syn keyword ngxDirectiveThirdParty lua_socket_buffer_size
+syn keyword ngxDirectiveThirdParty lua_socket_pool_size
+syn keyword ngxDirectiveThirdParty lua_socket_keepalive_timeout
+syn keyword ngxDirectiveThirdParty lua_socket_log_errors
+syn keyword ngxDirectiveThirdParty lua_ssl_ciphers
+syn keyword ngxDirectiveThirdParty lua_ssl_crl
+syn keyword ngxDirectiveThirdParty lua_ssl_protocols
+syn keyword ngxDirectiveThirdParty lua_ssl_trusted_certificate
+syn keyword ngxDirectiveThirdParty lua_ssl_verify_depth
+syn keyword ngxDirectiveThirdParty lua_http10_buffering
+syn keyword ngxDirectiveThirdParty rewrite_by_lua_no_postpone
+syn keyword ngxDirectiveThirdParty access_by_lua_no_postpone
+syn keyword ngxDirectiveThirdParty lua_transform_underscores_in_response_headers
+syn keyword ngxDirectiveThirdParty lua_check_client_abort
+syn keyword ngxDirectiveThirdParty lua_max_pending_timers
+syn keyword ngxDirectiveThirdParty lua_max_running_timers
+
+" MD5 Filter Module <https://github.com/kainswor/nginx_md5_filter>
+" A content filter for nginx, which returns the md5 hash of the content otherwise returned.
+syn keyword ngxDirectiveThirdParty md5_filter
+
+" Memc Module <https://github.com/openresty/memc-nginx-module>
+" An extended version of the standard memcached module that supports set, add, delete, and many more memcached commands.
+syn keyword ngxDirectiveThirdParty memc_buffer_size
+syn keyword ngxDirectiveThirdParty memc_cmds_allowed
+syn keyword ngxDirectiveThirdParty memc_connect_timeout
+syn keyword ngxDirectiveThirdParty memc_flags_to_last_modified
+syn keyword ngxDirectiveThirdParty memc_next_upstream
+syn keyword ngxDirectiveThirdParty memc_pass
+syn keyword ngxDirectiveThirdParty memc_read_timeout
+syn keyword ngxDirectiveThirdParty memc_send_timeout
+syn keyword ngxDirectiveThirdParty memc_upstream_fail_timeout
+syn keyword ngxDirectiveThirdParty memc_upstream_max_fails
+
+" Mod Security Module <https://github.com/SpiderLabs/ModSecurity>
+" ModSecurity is an open source, cross platform web application firewall (WAF) engine
+syn keyword ngxDirectiveThirdParty ModSecurityConfig
+syn keyword ngxDirectiveThirdParty ModSecurityEnabled
+syn keyword ngxDirectiveThirdParty pool_context
+syn keyword ngxDirectiveThirdParty pool_context_hash_size
+
+" Mogilefs Module <http://www.grid.net.ru/nginx/mogilefs.en.html>
+" MogileFS client for nginx web server.
+syn keyword ngxDirectiveThirdParty mogilefs_pass
+syn keyword ngxDirectiveThirdParty mogilefs_methods
+syn keyword ngxDirectiveThirdParty mogilefs_domain
+syn keyword ngxDirectiveThirdParty mogilefs_class
+syn keyword ngxDirectiveThirdParty mogilefs_tracker
+syn keyword ngxDirectiveThirdParty mogilefs_noverify
+syn keyword ngxDirectiveThirdParty mogilefs_connect_timeout
+syn keyword ngxDirectiveThirdParty mogilefs_send_timeout
+syn keyword ngxDirectiveThirdParty mogilefs_read_timeout
+
+" Mongo Module <https://github.com/simpl/ngx_mongo>
+" Upstream module that allows nginx to communicate directly with MongoDB database.
+syn keyword ngxDirectiveThirdParty mongo_auth
+syn keyword ngxDirectiveThirdParty mongo_pass
+syn keyword ngxDirectiveThirdParty mongo_query
+syn keyword ngxDirectiveThirdParty mongo_json
+syn keyword ngxDirectiveThirdParty mongo_bind
+syn keyword ngxDirectiveThirdParty mongo_connect_timeout
+syn keyword ngxDirectiveThirdParty mongo_send_timeout
+syn keyword ngxDirectiveThirdParty mongo_read_timeout
+syn keyword ngxDirectiveThirdParty mongo_buffering
+syn keyword ngxDirectiveThirdParty mongo_buffer_size
+syn keyword ngxDirectiveThirdParty mongo_buffers
+syn keyword ngxDirectiveThirdParty mongo_busy_buffers_size
+syn keyword ngxDirectiveThirdParty mongo_next_upstream
+
+" MP4 Streaming Lite Module <https://www.nginx.com/resources/wiki/modules/mp4_streaming/>
+" Will seek to a certain time within H.264/MP4 files when provided with a 'start' parameter in the URL.
+" syn keyword ngxDirectiveThirdParty mp4
+
+" NAXSI Module <https://github.com/nbs-system/naxsi>
+" NAXSI is an open-source, high performance, low rules maintenance WAF for NGINX
+syn keyword ngxDirectiveThirdParty DeniedUrl denied_url
+syn keyword ngxDirectiveThirdParty LearningMode learning_mode
+syn keyword ngxDirectiveThirdParty SecRulesEnabled rules_enabled
+syn keyword ngxDirectiveThirdParty SecRulesDisabled rules_disabled
+syn keyword ngxDirectiveThirdParty CheckRule check_rule
+syn keyword ngxDirectiveThirdParty BasicRule basic_rule
+syn keyword ngxDirectiveThirdParty MainRule main_rule
+syn keyword ngxDirectiveThirdParty LibInjectionSql libinjection_sql
+syn keyword ngxDirectiveThirdParty LibInjectionXss libinjection_xss
+
+" Nchan Module <https://nchan.slact.net/>
+" Fast, horizontally scalable, multiprocess pub/sub queuing server and proxy for HTTP, long-polling, Websockets and EventSource (SSE)
+syn keyword ngxDirectiveThirdParty nchan_channel_id
+syn keyword ngxDirectiveThirdParty nchan_channel_id_split_delimiter
+syn keyword ngxDirectiveThirdParty nchan_eventsource_event
+syn keyword ngxDirectiveThirdParty nchan_longpoll_multipart_response
+syn keyword ngxDirectiveThirdParty nchan_publisher
+syn keyword ngxDirectiveThirdParty nchan_publisher_channel_id
+syn keyword ngxDirectiveThirdParty nchan_publisher_upstream_request
+syn keyword ngxDirectiveThirdParty nchan_pubsub
+syn keyword ngxDirectiveThirdParty nchan_subscribe_request
+syn keyword ngxDirectiveThirdParty nchan_subscriber
+syn keyword ngxDirectiveThirdParty nchan_subscriber_channel_id
+syn keyword ngxDirectiveThirdParty nchan_subscriber_compound_etag_message_id
+syn keyword ngxDirectiveThirdParty nchan_subscriber_first_message
+syn keyword ngxDirectiveThirdParty nchan_subscriber_http_raw_stream_separator
+syn keyword ngxDirectiveThirdParty nchan_subscriber_last_message_id
+syn keyword ngxDirectiveThirdParty nchan_subscriber_message_id_custom_etag_header
+syn keyword ngxDirectiveThirdParty nchan_subscriber_timeout
+syn keyword ngxDirectiveThirdParty nchan_unsubscribe_request
+syn keyword ngxDirectiveThirdParty nchan_websocket_ping_interval
+syn keyword ngxDirectiveThirdParty nchan_authorize_request
+syn keyword ngxDirectiveThirdParty nchan_max_reserved_memory
+syn keyword ngxDirectiveThirdParty nchan_message_buffer_length
+syn keyword ngxDirectiveThirdParty nchan_message_timeout
+syn keyword ngxDirectiveThirdParty nchan_redis_idle_channel_cache_timeout
+syn keyword ngxDirectiveThirdParty nchan_redis_namespace
+syn keyword ngxDirectiveThirdParty nchan_redis_pass
+syn keyword ngxDirectiveThirdParty nchan_redis_ping_interval
+syn keyword ngxDirectiveThirdParty nchan_redis_server
+syn keyword ngxDirectiveThirdParty nchan_redis_storage_mode
+syn keyword ngxDirectiveThirdParty nchan_redis_url
+syn keyword ngxDirectiveThirdParty nchan_store_messages
+syn keyword ngxDirectiveThirdParty nchan_use_redis
+syn keyword ngxDirectiveThirdParty nchan_access_control_allow_origin
+syn keyword ngxDirectiveThirdParty nchan_channel_group
+syn keyword ngxDirectiveThirdParty nchan_channel_group_accounting
+syn keyword ngxDirectiveThirdParty nchan_group_location
+syn keyword ngxDirectiveThirdParty nchan_group_max_channels
+syn keyword ngxDirectiveThirdParty nchan_group_max_messages
+syn keyword ngxDirectiveThirdParty nchan_group_max_messages_disk
+syn keyword ngxDirectiveThirdParty nchan_group_max_messages_memory
+syn keyword ngxDirectiveThirdParty nchan_group_max_subscribers
+syn keyword ngxDirectiveThirdParty nchan_subscribe_existing_channels_only
+syn keyword ngxDirectiveThirdParty nchan_channel_event_string
+syn keyword ngxDirectiveThirdParty nchan_channel_events_channel_id
+syn keyword ngxDirectiveThirdParty nchan_stub_status
+syn keyword ngxDirectiveThirdParty nchan_max_channel_id_length
+syn keyword ngxDirectiveThirdParty nchan_max_channel_subscribers
+syn keyword ngxDirectiveThirdParty nchan_channel_timeout
+syn keyword ngxDirectiveThirdParty nchan_storage_engine
+
+" Nginx Notice Module <https://github.com/kr/nginx-notice>
+" Serve static file to POST requests.
+syn keyword ngxDirectiveThirdParty notice
+syn keyword ngxDirectiveThirdParty notice_type
+
+" OCSP Proxy Module <https://github.com/kyprizel/nginx_ocsp_proxy-module>
+" Nginx OCSP processing module designed for response caching
+syn keyword ngxDirectiveThirdParty ocsp_proxy
+syn keyword ngxDirectiveThirdParty ocsp_cache_timeout
+
+" Eval Module <https://github.com/openresty/nginx-eval-module>
+" Module for nginx web server evaluates response of proxy or memcached module into variables.
+syn keyword ngxDirectiveThirdParty eval
+syn keyword ngxDirectiveThirdParty eval_escalate
+syn keyword ngxDirectiveThirdParty eval_buffer_size
+syn keyword ngxDirectiveThirdParty eval_override_content_type
+syn keyword ngxDirectiveThirdParty eval_subrequest_in_memory
+
+" OpenSSL Version Module <https://github.com/apcera/nginx-openssl-version>
+" Nginx OpenSSL version check at startup
+syn keyword ngxDirectiveThirdParty openssl_version_minimum
+syn keyword ngxDirectiveThirdParty openssl_builddate_minimum
+
+" Owner Match Module <https://www.nginx.com/resources/wiki/modules/owner_match/>
+" Control access for specific owners and groups of files
+syn keyword ngxDirectiveThirdParty omallow
+syn keyword ngxDirectiveThirdParty omdeny
+
+" Accept Language Module <https://www.nginx.com/resources/wiki/modules/accept_language/>
+" Parses the Accept-Language header and gives the most suitable locale from a list of supported locales.
+syn keyword ngxDirectiveThirdParty pagespeed
+
+" PHP Memcache Standard Balancer Module <https://github.com/replay/ngx_http_php_memcache_standard_balancer>
+" Loadbalancer that is compatible to the standard loadbalancer in the php-memcache module
+syn keyword ngxDirectiveThirdParty hash_key
+
+" PHP Session Module <https://github.com/replay/ngx_http_php_session>
+" Nginx module to parse php sessions
+syn keyword ngxDirectiveThirdParty php_session_parse
+syn keyword ngxDirectiveThirdParty php_session_strip_formatting
+
+" Phusion Passenger Module <https://www.phusionpassenger.com/library/config/nginx/>
+" Passenger is an open source web application server.
+syn keyword ngxDirectiveThirdParty passenger_root
+syn keyword ngxDirectiveThirdParty passenger_enabled
+syn keyword ngxDirectiveThirdParty passenger_base_uri
+syn keyword ngxDirectiveThirdParty passenger_document_root
+syn keyword ngxDirectiveThirdParty passenger_ruby
+syn keyword ngxDirectiveThirdParty passenger_python
+syn keyword ngxDirectiveThirdParty passenger_nodejs
+syn keyword ngxDirectiveThirdParty passenger_meteor_app_settings
+syn keyword ngxDirectiveThirdParty passenger_app_env
+syn keyword ngxDirectiveThirdParty passenger_app_root
+syn keyword ngxDirectiveThirdParty passenger_app_group_name
+syn keyword ngxDirectiveThirdParty passenger_app_type
+syn keyword ngxDirectiveThirdParty passenger_startup_file
+syn keyword ngxDirectiveThirdParty passenger_restart_dir
+syn keyword ngxDirectiveThirdParty passenger_spawn_method
+syn keyword ngxDirectiveThirdParty passenger_env_var
+syn keyword ngxDirectiveThirdParty passenger_load_shell_envvars
+syn keyword ngxDirectiveThirdParty passenger_rolling_restarts
+syn keyword ngxDirectiveThirdParty passenger_resist_deployment_errors
+syn keyword ngxDirectiveThirdParty passenger_user_switching
+syn keyword ngxDirectiveThirdParty passenger_user
+syn keyword ngxDirectiveThirdParty passenger_group
+syn keyword ngxDirectiveThirdParty passenger_default_user
+syn keyword ngxDirectiveThirdParty passenger_default_group
+syn keyword ngxDirectiveThirdParty passenger_show_version_in_header
+syn keyword ngxDirectiveThirdParty passenger_friendly_error_pages
+syn keyword ngxDirectiveThirdParty passenger_disable_security_update_check
+syn keyword ngxDirectiveThirdParty passenger_security_update_check_proxy
+syn keyword ngxDirectiveThirdParty passenger_max_pool_size
+syn keyword ngxDirectiveThirdParty passenger_min_instances
+syn keyword ngxDirectiveThirdParty passenger_max_instances
+syn keyword ngxDirectiveThirdParty passenger_max_instances_per_app
+syn keyword ngxDirectiveThirdParty passenger_pool_idle_time
+syn keyword ngxDirectiveThirdParty passenger_max_preloader_idle_time
+syn keyword ngxDirectiveThirdParty passenger_force_max_concurrent_requests_per_process
+syn keyword ngxDirectiveThirdParty passenger_start_timeout
+syn keyword ngxDirectiveThirdParty passenger_concurrency_model
+syn keyword ngxDirectiveThirdParty passenger_thread_count
+syn keyword ngxDirectiveThirdParty passenger_max_requests
+syn keyword ngxDirectiveThirdParty passenger_max_request_time
+syn keyword ngxDirectiveThirdParty passenger_memory_limit
+syn keyword ngxDirectiveThirdParty passenger_stat_throttle_rate
+syn keyword ngxDirectiveThirdParty passenger_core_file_descriptor_ulimit
+syn keyword ngxDirectiveThirdParty passenger_app_file_descriptor_ulimit
+syn keyword ngxDirectiveThirdParty passenger_pre_start
+syn keyword ngxDirectiveThirdParty passenger_set_header
+syn keyword ngxDirectiveThirdParty passenger_max_request_queue_size
+syn keyword ngxDirectiveThirdParty passenger_request_queue_overflow_status_code
+syn keyword ngxDirectiveThirdParty passenger_sticky_sessions
+syn keyword ngxDirectiveThirdParty passenger_sticky_sessions_cookie_name
+syn keyword ngxDirectiveThirdParty passenger_abort_websockets_on_process_shutdown
+syn keyword ngxDirectiveThirdParty passenger_ignore_client_abort
+syn keyword ngxDirectiveThirdParty passenger_intercept_errors
+syn keyword ngxDirectiveThirdParty passenger_pass_header
+syn keyword ngxDirectiveThirdParty passenger_ignore_headers
+syn keyword ngxDirectiveThirdParty passenger_headers_hash_bucket_size
+syn keyword ngxDirectiveThirdParty passenger_headers_hash_max_size
+syn keyword ngxDirectiveThirdParty passenger_buffer_response
+syn keyword ngxDirectiveThirdParty passenger_response_buffer_high_watermark
+syn keyword ngxDirectiveThirdParty passenger_buffer_size, passenger_buffers, passenger_busy_buffers_size
+syn keyword ngxDirectiveThirdParty passenger_socket_backlog
+syn keyword ngxDirectiveThirdParty passenger_log_level
+syn keyword ngxDirectiveThirdParty passenger_log_file
+syn keyword ngxDirectiveThirdParty passenger_file_descriptor_log_file
+syn keyword ngxDirectiveThirdParty passenger_debugger
+syn keyword ngxDirectiveThirdParty passenger_instance_registry_dir
+syn keyword ngxDirectiveThirdParty passenger_data_buffer_dir
+syn keyword ngxDirectiveThirdParty passenger_fly_with
+syn keyword ngxDirectiveThirdParty union_station_support
+syn keyword ngxDirectiveThirdParty union_station_key
+syn keyword ngxDirectiveThirdParty union_station_proxy_address
+syn keyword ngxDirectiveThirdParty union_station_filter
+syn keyword ngxDirectiveThirdParty union_station_gateway_address
+syn keyword ngxDirectiveThirdParty union_station_gateway_port
+syn keyword ngxDirectiveThirdParty union_station_gateway_cert
+syn keyword ngxDirectiveDeprecated rails_spawn_method
+syn keyword ngxDirectiveDeprecated passenger_debug_log_file
+
+" Postgres Module <http://labs.frickle.com/nginx_ngx_postgres/>
+" Upstream module that allows nginx to communicate directly with PostgreSQL database.
+syn keyword ngxDirectiveThirdParty postgres_server
+syn keyword ngxDirectiveThirdParty postgres_keepalive
+syn keyword ngxDirectiveThirdParty postgres_pass
+syn keyword ngxDirectiveThirdParty postgres_query
+syn keyword ngxDirectiveThirdParty postgres_rewrite
+syn keyword ngxDirectiveThirdParty postgres_output
+syn keyword ngxDirectiveThirdParty postgres_set
+syn keyword ngxDirectiveThirdParty postgres_escape
+syn keyword ngxDirectiveThirdParty postgres_connect_timeout
+syn keyword ngxDirectiveThirdParty postgres_result_timeout
+
+" Pubcookie Module <https://www.vanko.me/book/page/pubcookie-module-nginx>
+" Authorizes users using encrypted cookies
+syn keyword ngxDirectiveThirdParty pubcookie_inactive_expire
+syn keyword ngxDirectiveThirdParty pubcookie_hard_expire
+syn keyword ngxDirectiveThirdParty pubcookie_app_id
+syn keyword ngxDirectiveThirdParty pubcookie_dir_depth
+syn keyword ngxDirectiveThirdParty pubcookie_catenate_app_ids
+syn keyword ngxDirectiveThirdParty pubcookie_app_srv_id
+syn keyword ngxDirectiveThirdParty pubcookie_login
+syn keyword ngxDirectiveThirdParty pubcookie_login_method
+syn keyword ngxDirectiveThirdParty pubcookie_post
+syn keyword ngxDirectiveThirdParty pubcookie_domain
+syn keyword ngxDirectiveThirdParty pubcookie_granting_cert_file
+syn keyword ngxDirectiveThirdParty pubcookie_session_key_file
+syn keyword ngxDirectiveThirdParty pubcookie_session_cert_file
+syn keyword ngxDirectiveThirdParty pubcookie_crypt_key_file
+syn keyword ngxDirectiveThirdParty pubcookie_end_session
+syn keyword ngxDirectiveThirdParty pubcookie_encryption
+syn keyword ngxDirectiveThirdParty pubcookie_session_reauth
+syn keyword ngxDirectiveThirdParty pubcookie_auth_type_names
+syn keyword ngxDirectiveThirdParty pubcookie_no_prompt
+syn keyword ngxDirectiveThirdParty pubcookie_on_demand
+syn keyword ngxDirectiveThirdParty pubcookie_addl_request
+syn keyword ngxDirectiveThirdParty pubcookie_no_obscure_cookies
+syn keyword ngxDirectiveThirdParty pubcookie_no_clean_creds
+syn keyword ngxDirectiveThirdParty pubcookie_egd_device
+syn keyword ngxDirectiveThirdParty pubcookie_no_blank
+syn keyword ngxDirectiveThirdParty pubcookie_super_debug
+syn keyword ngxDirectiveThirdParty pubcookie_set_remote_user
+
+" Push Stream Module <https://github.com/wandenberg/nginx-push-stream-module>
+" A pure stream http push technology for your Nginx setup
+syn keyword ngxDirectiveThirdParty push_stream_channels_statistics
+syn keyword ngxDirectiveThirdParty push_stream_publisher
+syn keyword ngxDirectiveThirdParty push_stream_subscriber
+syn keyword ngxDirectiveThirdParty push_stream_shared_memory_size
+syn keyword ngxDirectiveThirdParty push_stream_channel_deleted_message_text
+syn keyword ngxDirectiveThirdParty push_stream_channel_inactivity_time
+syn keyword ngxDirectiveThirdParty push_stream_ping_message_text
+syn keyword ngxDirectiveThirdParty push_stream_timeout_with_body
+syn keyword ngxDirectiveThirdParty push_stream_message_ttl
+syn keyword ngxDirectiveThirdParty push_stream_max_subscribers_per_channel
+syn keyword ngxDirectiveThirdParty push_stream_max_messages_stored_per_channel
+syn keyword ngxDirectiveThirdParty push_stream_max_channel_id_length
+syn keyword ngxDirectiveThirdParty push_stream_max_number_of_channels
+syn keyword ngxDirectiveThirdParty push_stream_max_number_of_wildcard_channels
+syn keyword ngxDirectiveThirdParty push_stream_wildcard_channel_prefix
+syn keyword ngxDirectiveThirdParty push_stream_events_channel_id
+syn keyword ngxDirectiveThirdParty push_stream_channels_path
+syn keyword ngxDirectiveThirdParty push_stream_store_messages
+syn keyword ngxDirectiveThirdParty push_stream_channel_info_on_publish
+syn keyword ngxDirectiveThirdParty push_stream_authorized_channels_only
+syn keyword ngxDirectiveThirdParty push_stream_header_template_file
+syn keyword ngxDirectiveThirdParty push_stream_header_template
+syn keyword ngxDirectiveThirdParty push_stream_message_template
+syn keyword ngxDirectiveThirdParty push_stream_footer_template
+syn keyword ngxDirectiveThirdParty push_stream_wildcard_channel_max_qtd
+syn keyword ngxDirectiveThirdParty push_stream_ping_message_interval
+syn keyword ngxDirectiveThirdParty push_stream_subscriber_connection_ttl
+syn keyword ngxDirectiveThirdParty push_stream_longpolling_connection_ttl
+syn keyword ngxDirectiveThirdParty push_stream_websocket_allow_publish
+syn keyword ngxDirectiveThirdParty push_stream_last_received_message_time
+syn keyword ngxDirectiveThirdParty push_stream_last_received_message_tag
+syn keyword ngxDirectiveThirdParty push_stream_last_event_id
+syn keyword ngxDirectiveThirdParty push_stream_user_agent
+syn keyword ngxDirectiveThirdParty push_stream_padding_by_user_agent
+syn keyword ngxDirectiveThirdParty push_stream_allowed_origins
+syn keyword ngxDirectiveThirdParty push_stream_allow_connections_to_events_channel
+
+" rDNS Module <https://github.com/flant/nginx-http-rdns>
+" Make a reverse DNS (rDNS) lookup for incoming connection and provides simple access control of incoming hostname by allow/deny rules
+syn keyword ngxDirectiveThirdParty rdns
+syn keyword ngxDirectiveThirdParty rdns_allow
+syn keyword ngxDirectiveThirdParty rdns_deny
+
+" RDS CSV Module <https://github.com/openresty/rds-csv-nginx-module>
+" Nginx output filter module to convert Resty-DBD-Streams (RDS) to Comma-Separated Values (CSV)
+syn keyword ngxDirectiveThirdParty rds_csv
+syn keyword ngxDirectiveThirdParty rds_csv_row_terminator
+syn keyword ngxDirectiveThirdParty rds_csv_field_separator
+syn keyword ngxDirectiveThirdParty rds_csv_field_name_header
+syn keyword ngxDirectiveThirdParty rds_csv_content_type
+syn keyword ngxDirectiveThirdParty rds_csv_buffer_size
+
+" RDS JSON Module <https://github.com/openresty/rds-json-nginx-module>
+" An output filter that formats Resty DBD Streams generated by ngx_drizzle and others to JSON
+syn keyword ngxDirectiveThirdParty rds_json
+syn keyword ngxDirectiveThirdParty rds_json_buffer_size
+syn keyword ngxDirectiveThirdParty rds_json_format
+syn keyword ngxDirectiveThirdParty rds_json_root
+syn keyword ngxDirectiveThirdParty rds_json_success_property
+syn keyword ngxDirectiveThirdParty rds_json_user_property
+syn keyword ngxDirectiveThirdParty rds_json_errcode_key
+syn keyword ngxDirectiveThirdParty rds_json_errstr_key
+syn keyword ngxDirectiveThirdParty rds_json_ret
+syn keyword ngxDirectiveThirdParty rds_json_content_type
+
+" Redis Module <https://www.nginx.com/resources/wiki/modules/redis/>
+" Use this module to perform simple caching
+syn keyword ngxDirectiveThirdParty redis_pass
+syn keyword ngxDirectiveThirdParty redis_bind
+syn keyword ngxDirectiveThirdParty redis_connect_timeout
+syn keyword ngxDirectiveThirdParty redis_read_timeout
+syn keyword ngxDirectiveThirdParty redis_send_timeout
+syn keyword ngxDirectiveThirdParty redis_buffer_size
+syn keyword ngxDirectiveThirdParty redis_next_upstream
+syn keyword ngxDirectiveThirdParty redis_gzip_flag
+
+" Redis 2 Module <https://github.com/openresty/redis2-nginx-module>
+" Nginx upstream module for the Redis 2.0 protocol
+syn keyword ngxDirectiveThirdParty redis2_query
+syn keyword ngxDirectiveThirdParty redis2_raw_query
+syn keyword ngxDirectiveThirdParty redis2_raw_queries
+syn keyword ngxDirectiveThirdParty redis2_literal_raw_query
+syn keyword ngxDirectiveThirdParty redis2_pass
+syn keyword ngxDirectiveThirdParty redis2_connect_timeout
+syn keyword ngxDirectiveThirdParty redis2_send_timeout
+syn keyword ngxDirectiveThirdParty redis2_read_timeout
+syn keyword ngxDirectiveThirdParty redis2_buffer_size
+syn keyword ngxDirectiveThirdParty redis2_next_upstream
+
+" Replace Filter Module <https://github.com/openresty/replace-filter-nginx-module>
+" Streaming regular expression replacement in response bodies
+syn keyword ngxDirectiveThirdParty replace_filter
+syn keyword ngxDirectiveThirdParty replace_filter_types
+syn keyword ngxDirectiveThirdParty replace_filter_max_buffered_size
+syn keyword ngxDirectiveThirdParty replace_filter_last_modified
+syn keyword ngxDirectiveThirdParty replace_filter_skip
+
+" Roboo Module <https://github.com/yuri-gushin/Roboo>
+" HTTP Robot Mitigator
+
+" RRD Graph Module <https://www.nginx.com/resources/wiki/modules/rrd_graph/>
+" This module provides an HTTP interface to RRDtool's graphing facilities.
+syn keyword ngxDirectiveThirdParty rrd_graph
+syn keyword ngxDirectiveThirdParty rrd_graph_root
+
+" RTMP Module <https://github.com/arut/nginx-rtmp-module>
+" NGINX-based Media Streaming Server
+syn keyword ngxDirectiveThirdParty rtmp
+" syn keyword ngxDirectiveThirdParty server
+" syn keyword ngxDirectiveThirdParty listen
+syn keyword ngxDirectiveThirdParty application
+" syn keyword ngxDirectiveThirdParty timeout
+syn keyword ngxDirectiveThirdParty ping
+syn keyword ngxDirectiveThirdParty ping_timeout
+syn keyword ngxDirectiveThirdParty max_streams
+syn keyword ngxDirectiveThirdParty ack_window
+syn keyword ngxDirectiveThirdParty chunk_size
+syn keyword ngxDirectiveThirdParty max_queue
+syn keyword ngxDirectiveThirdParty max_message
+syn keyword ngxDirectiveThirdParty out_queue
+syn keyword ngxDirectiveThirdParty out_cork
+" syn keyword ngxDirectiveThirdParty allow
+" syn keyword ngxDirectiveThirdParty deny
+syn keyword ngxDirectiveThirdParty exec_push
+syn keyword ngxDirectiveThirdParty exec_pull
+syn keyword ngxDirectiveThirdParty exec
+syn keyword ngxDirectiveThirdParty exec_options
+syn keyword ngxDirectiveThirdParty exec_static
+syn keyword ngxDirectiveThirdParty exec_kill_signal
+syn keyword ngxDirectiveThirdParty respawn
+syn keyword ngxDirectiveThirdParty respawn_timeout
+syn keyword ngxDirectiveThirdParty exec_publish
+syn keyword ngxDirectiveThirdParty exec_play
+syn keyword ngxDirectiveThirdParty exec_play_done
+syn keyword ngxDirectiveThirdParty exec_publish_done
+syn keyword ngxDirectiveThirdParty exec_record_done
+syn keyword ngxDirectiveThirdParty live
+syn keyword ngxDirectiveThirdParty meta
+syn keyword ngxDirectiveThirdParty interleave
+syn keyword ngxDirectiveThirdParty wait_key
+syn keyword ngxDirectiveThirdParty wait_video
+syn keyword ngxDirectiveThirdParty publish_notify
+syn keyword ngxDirectiveThirdParty drop_idle_publisher
+syn keyword ngxDirectiveThirdParty sync
+syn keyword ngxDirectiveThirdParty play_restart
+syn keyword ngxDirectiveThirdParty idle_streams
+syn keyword ngxDirectiveThirdParty record
+syn keyword ngxDirectiveThirdParty record_path
+syn keyword ngxDirectiveThirdParty record_suffix
+syn keyword ngxDirectiveThirdParty record_unique
+syn keyword ngxDirectiveThirdParty record_append
+syn keyword ngxDirectiveThirdParty record_lock
+syn keyword ngxDirectiveThirdParty record_max_size
+syn keyword ngxDirectiveThirdParty record_max_frames
+syn keyword ngxDirectiveThirdParty record_interval
+syn keyword ngxDirectiveThirdParty recorder
+syn keyword ngxDirectiveThirdParty record_notify
+syn keyword ngxDirectiveThirdParty play
+syn keyword ngxDirectiveThirdParty play_temp_path
+syn keyword ngxDirectiveThirdParty play_local_path
+syn keyword ngxDirectiveThirdParty pull
+syn keyword ngxDirectiveThirdParty push
+syn keyword ngxDirectiveThirdParty push_reconnect
+syn keyword ngxDirectiveThirdParty session_relay
+syn keyword ngxDirectiveThirdParty on_connect
+syn keyword ngxDirectiveThirdParty on_play
+syn keyword ngxDirectiveThirdParty on_publish
+syn keyword ngxDirectiveThirdParty on_done
+syn keyword ngxDirectiveThirdParty on_play_done
+syn keyword ngxDirectiveThirdParty on_publish_done
+syn keyword ngxDirectiveThirdParty on_record_done
+syn keyword ngxDirectiveThirdParty on_update
+syn keyword ngxDirectiveThirdParty notify_update_timeout
+syn keyword ngxDirectiveThirdParty notify_update_strict
+syn keyword ngxDirectiveThirdParty notify_relay_redirect
+syn keyword ngxDirectiveThirdParty notify_method
+syn keyword ngxDirectiveThirdParty hls
+syn keyword ngxDirectiveThirdParty hls_path
+syn keyword ngxDirectiveThirdParty hls_fragment
+syn keyword ngxDirectiveThirdParty hls_playlist_length
+syn keyword ngxDirectiveThirdParty hls_sync
+syn keyword ngxDirectiveThirdParty hls_continuous
+syn keyword ngxDirectiveThirdParty hls_nested
+syn keyword ngxDirectiveThirdParty hls_base_url
+syn keyword ngxDirectiveThirdParty hls_cleanup
+syn keyword ngxDirectiveThirdParty hls_fragment_naming
+syn keyword ngxDirectiveThirdParty hls_fragment_slicing
+syn keyword ngxDirectiveThirdParty hls_variant
+syn keyword ngxDirectiveThirdParty hls_type
+syn keyword ngxDirectiveThirdParty hls_keys
+syn keyword ngxDirectiveThirdParty hls_key_path
+syn keyword ngxDirectiveThirdParty hls_key_url
+syn keyword ngxDirectiveThirdParty hls_fragments_per_key
+syn keyword ngxDirectiveThirdParty dash
+syn keyword ngxDirectiveThirdParty dash_path
+syn keyword ngxDirectiveThirdParty dash_fragment
+syn keyword ngxDirectiveThirdParty dash_playlist_length
+syn keyword ngxDirectiveThirdParty dash_nested
+syn keyword ngxDirectiveThirdParty dash_cleanup
+" syn keyword ngxDirectiveThirdParty access_log
+" syn keyword ngxDirectiveThirdParty log_format
+syn keyword ngxDirectiveThirdParty max_connections
+syn keyword ngxDirectiveThirdParty rtmp_stat
+syn keyword ngxDirectiveThirdParty rtmp_stat_stylesheet
+syn keyword ngxDirectiveThirdParty rtmp_auto_push
+syn keyword ngxDirectiveThirdParty rtmp_auto_push_reconnect
+syn keyword ngxDirectiveThirdParty rtmp_socket_dir
+syn keyword ngxDirectiveThirdParty rtmp_control
+
+" RTMPT Module <https://github.com/kwojtek/nginx-rtmpt-proxy-module>
+" Module for nginx to proxy rtmp using http protocol
+syn keyword ngxDirectiveThirdParty rtmpt_proxy_target
+syn keyword ngxDirectiveThirdParty rtmpt_proxy_rtmp_timeout
+syn keyword ngxDirectiveThirdParty rtmpt_proxy_http_timeout
+syn keyword ngxDirectiveThirdParty rtmpt_proxy
+syn keyword ngxDirectiveThirdParty rtmpt_proxy_stat
+syn keyword ngxDirectiveThirdParty rtmpt_proxy_stylesheet
+
+" Syntactically Awesome Module <https://github.com/mneudert/sass-nginx-module>
+" Providing on-the-fly compiling of Sass files as an NGINX module.
+syn keyword ngxDirectiveThirdParty sass_compile
+syn keyword ngxDirectiveThirdParty sass_error_log
+syn keyword ngxDirectiveThirdParty sass_include_path
+syn keyword ngxDirectiveThirdParty sass_indent
+syn keyword ngxDirectiveThirdParty sass_is_indented_syntax
+syn keyword ngxDirectiveThirdParty sass_linefeed
+syn keyword ngxDirectiveThirdParty sass_precision
+syn keyword ngxDirectiveThirdParty sass_output_style
+syn keyword ngxDirectiveThirdParty sass_source_comments
+syn keyword ngxDirectiveThirdParty sass_source_map_embed
+
+" Secure Download Module <https://www.nginx.com/resources/wiki/modules/secure_download/>
+" Enables you to create links which are only valid until a certain datetime is reached
+syn keyword ngxDirectiveThirdParty secure_download
+syn keyword ngxDirectiveThirdParty secure_download_secret
+syn keyword ngxDirectiveThirdParty secure_download_path_mode
+
+" Selective Cache Purge Module <https://github.com/wandenberg/nginx-selective-cache-purge-module>
+" A module to purge cache by GLOB patterns. The supported patterns are the same as supported by Redis.
+syn keyword ngxDirectiveThirdParty selective_cache_purge_redis_unix_socket
+syn keyword ngxDirectiveThirdParty selective_cache_purge_redis_host
+syn keyword ngxDirectiveThirdParty selective_cache_purge_redis_port
+syn keyword ngxDirectiveThirdParty selective_cache_purge_redis_database
+syn keyword ngxDirectiveThirdParty selective_cache_purge_query
+
+" Set cconv Module <https://github.com/liseen/set-cconv-nginx-module>
+" Cconv rewrite set commands
+syn keyword ngxDirectiveThirdParty set_cconv_to_simp
+syn keyword ngxDirectiveThirdParty set_cconv_to_trad
+syn keyword ngxDirectiveThirdParty set_pinyin_to_normal
+
+" Set Hash Module <https://github.com/simpl/ngx_http_set_hash>
+" Nginx module that allows the setting of variables to the value of a variety of hashes
+syn keyword ngxDirectiveThirdParty set_md5
+syn keyword ngxDirectiveThirdParty set_md5_upper
+syn keyword ngxDirectiveThirdParty set_murmur2
+syn keyword ngxDirectiveThirdParty set_murmur2_upper
+syn keyword ngxDirectiveThirdParty set_sha1
+syn keyword ngxDirectiveThirdParty set_sha1_upper
+
+" Set Lang Module <https://github.com/simpl/ngx_http_set_lang>
+" Provides a variety of ways for setting a variable denoting the langauge that content should be returned in.
+syn keyword ngxDirectiveThirdParty set_lang
+syn keyword ngxDirectiveThirdParty set_lang_method
+syn keyword ngxDirectiveThirdParty lang_cookie
+syn keyword ngxDirectiveThirdParty lang_get_var
+syn keyword ngxDirectiveThirdParty lang_list
+syn keyword ngxDirectiveThirdParty lang_post_var
+syn keyword ngxDirectiveThirdParty lang_host
+syn keyword ngxDirectiveThirdParty lang_referer
+
+" Set Misc Module <https://github.com/openresty/set-misc-nginx-module>
+" Various set_xxx directives added to nginx's rewrite module
+syn keyword ngxDirectiveThirdParty set_if_empty
+syn keyword ngxDirectiveThirdParty set_quote_sql_str
+syn keyword ngxDirectiveThirdParty set_quote_pgsql_str
+syn keyword ngxDirectiveThirdParty set_quote_json_str
+syn keyword ngxDirectiveThirdParty set_unescape_uri
+syn keyword ngxDirectiveThirdParty set_escape_uri
+syn keyword ngxDirectiveThirdParty set_hashed_upstream
+syn keyword ngxDirectiveThirdParty set_encode_base32
+syn keyword ngxDirectiveThirdParty set_base32_padding
+syn keyword ngxDirectiveThirdParty set_misc_base32_padding
+syn keyword ngxDirectiveThirdParty set_base32_alphabet
+syn keyword ngxDirectiveThirdParty set_decode_base32
+syn keyword ngxDirectiveThirdParty set_encode_base64
+syn keyword ngxDirectiveThirdParty set_decode_base64
+syn keyword ngxDirectiveThirdParty set_encode_hex
+syn keyword ngxDirectiveThirdParty set_decode_hex
+syn keyword ngxDirectiveThirdParty set_sha1
+syn keyword ngxDirectiveThirdParty set_md5
+syn keyword ngxDirectiveThirdParty set_hmac_sha1
+syn keyword ngxDirectiveThirdParty set_random
+syn keyword ngxDirectiveThirdParty set_secure_random_alphanum
+syn keyword ngxDirectiveThirdParty set_secure_random_lcalpha
+syn keyword ngxDirectiveThirdParty set_rotate
+syn keyword ngxDirectiveThirdParty set_local_today
+syn keyword ngxDirectiveThirdParty set_formatted_gmt_time
+syn keyword ngxDirectiveThirdParty set_formatted_local_time
+
+" SFlow Module <https://github.com/sflow/nginx-sflow-module>
+" A binary, random-sampling nginx module designed for: lightweight, centralized, continuous, real-time monitoring of very large and very busy web farms.
+syn keyword ngxDirectiveThirdParty sflow
+
+" Shibboleth Module <https://github.com/nginx-shib/nginx-http-shibboleth>
+" Shibboleth auth request module for nginx
+syn keyword ngxDirectiveThirdParty shib_request
+syn keyword ngxDirectiveThirdParty shib_request_set
+syn keyword ngxDirectiveThirdParty shib_request_use_headers
+
+" Slice Module <https://github.com/alibaba/nginx-http-slice>
+" Nginx module for serving a file in slices (reverse byte-range)
+" syn keyword ngxDirectiveThirdParty slice
+syn keyword ngxDirectiveThirdParty slice_arg_begin
+syn keyword ngxDirectiveThirdParty slice_arg_end
+syn keyword ngxDirectiveThirdParty slice_header
+syn keyword ngxDirectiveThirdParty slice_footer
+syn keyword ngxDirectiveThirdParty slice_header_first
+syn keyword ngxDirectiveThirdParty slice_footer_last
+
+" SlowFS Cache Module <https://github.com/FRiCKLE/ngx_slowfs_cache/>
+" Module adding ability to cache static files.
+syn keyword ngxDirectiveThirdParty slowfs_big_file_size
+syn keyword ngxDirectiveThirdParty slowfs_cache
+syn keyword ngxDirectiveThirdParty slowfs_cache_key
+syn keyword ngxDirectiveThirdParty slowfs_cache_min_uses
+syn keyword ngxDirectiveThirdParty slowfs_cache_path
+syn keyword ngxDirectiveThirdParty slowfs_cache_purge
+syn keyword ngxDirectiveThirdParty slowfs_cache_valid
+syn keyword ngxDirectiveThirdParty slowfs_temp_path
+
+" Small Light Module <https://github.com/cubicdaiya/ngx_small_light>
+" Dynamic Image Transformation Module For nginx.
+syn keyword ngxDirectiveThirdParty small_light
+syn keyword ngxDirectiveThirdParty small_light_getparam_mode
+syn keyword ngxDirectiveThirdParty small_light_material_dir
+syn keyword ngxDirectiveThirdParty small_light_pattern_define
+syn keyword ngxDirectiveThirdParty small_light_radius_max
+syn keyword ngxDirectiveThirdParty small_light_sigma_max
+syn keyword ngxDirectiveThirdParty small_light_imlib2_temp_dir
+syn keyword ngxDirectiveThirdParty small_light_buffer
+
+" Sorted Querystring Filter Module <https://github.com/wandenberg/nginx-sorted-querystring-module>
+" Nginx module to expose querystring parameters sorted in a variable to be used on cache_key as example
+syn keyword ngxDirectiveThirdParty sorted_querystring_filter_parameter
+
+" Sphinx2 Module <https://github.com/reeteshranjan/sphinx2-nginx-module>
+" Nginx upstream module for Sphinx 2.x
+syn keyword ngxDirectiveThirdParty sphinx2_pass
+syn keyword ngxDirectiveThirdParty sphinx2_bind
+syn keyword ngxDirectiveThirdParty sphinx2_connect_timeout
+syn keyword ngxDirectiveThirdParty sphinx2_send_timeout
+syn keyword ngxDirectiveThirdParty sphinx2_buffer_size
+syn keyword ngxDirectiveThirdParty sphinx2_read_timeout
+syn keyword ngxDirectiveThirdParty sphinx2_next_upstream
+
+" HTTP SPNEGO auth Module <https://github.com/stnoonan/spnego-http-auth-nginx-module>
+" This module implements adds SPNEGO support to nginx(http://nginx.org). It currently supports only Kerberos authentication via GSSAPI
+syn keyword ngxDirectiveThirdParty auth_gss
+syn keyword ngxDirectiveThirdParty auth_gss_keytab
+syn keyword ngxDirectiveThirdParty auth_gss_realm
+syn keyword ngxDirectiveThirdParty auth_gss_service_name
+syn keyword ngxDirectiveThirdParty auth_gss_authorized_principal
+syn keyword ngxDirectiveThirdParty auth_gss_allow_basic_fallback
+
+" SR Cache Module <https://github.com/openresty/srcache-nginx-module>
+" Transparent subrequest-based caching layout for arbitrary nginx locations
+syn keyword ngxDirectiveThirdParty srcache_fetch
+syn keyword ngxDirectiveThirdParty srcache_fetch_skip
+syn keyword ngxDirectiveThirdParty srcache_store
+syn keyword ngxDirectiveThirdParty srcache_store_max_size
+syn keyword ngxDirectiveThirdParty srcache_store_skip
+syn keyword ngxDirectiveThirdParty srcache_store_statuses
+syn keyword ngxDirectiveThirdParty srcache_store_ranges
+syn keyword ngxDirectiveThirdParty srcache_header_buffer_size
+syn keyword ngxDirectiveThirdParty srcache_store_hide_header
+syn keyword ngxDirectiveThirdParty srcache_store_pass_header
+syn keyword ngxDirectiveThirdParty srcache_methods
+syn keyword ngxDirectiveThirdParty srcache_ignore_content_encoding
+syn keyword ngxDirectiveThirdParty srcache_request_cache_control
+syn keyword ngxDirectiveThirdParty srcache_response_cache_control
+syn keyword ngxDirectiveThirdParty srcache_store_no_store
+syn keyword ngxDirectiveThirdParty srcache_store_no_cache
+syn keyword ngxDirectiveThirdParty srcache_store_private
+syn keyword ngxDirectiveThirdParty srcache_default_expire
+syn keyword ngxDirectiveThirdParty srcache_max_expire
+
+" SSSD Info Module <https://github.com/veruu/ngx_sssd_info>
+" Retrives additional attributes from SSSD for current authentizated user
+syn keyword ngxDirectiveThirdParty sssd_info
+syn keyword ngxDirectiveThirdParty sssd_info_output_to
+syn keyword ngxDirectiveThirdParty sssd_info_groups
+syn keyword ngxDirectiveThirdParty sssd_info_group
+syn keyword ngxDirectiveThirdParty sssd_info_group_separator
+syn keyword ngxDirectiveThirdParty sssd_info_attributes
+syn keyword ngxDirectiveThirdParty sssd_info_attribute
+syn keyword ngxDirectiveThirdParty sssd_info_attribute_separator
+
+" Static Etags Module <https://github.com/mikewest/nginx-static-etags>
+" Generate etags for static content
+syn keyword ngxDirectiveThirdParty FileETag
+
+" Statsd Module <https://github.com/zebrafishlabs/nginx-statsd>
+" An nginx module for sending statistics to statsd
+syn keyword ngxDirectiveThirdParty statsd_server
+syn keyword ngxDirectiveThirdParty statsd_sample_rate
+syn keyword ngxDirectiveThirdParty statsd_count
+syn keyword ngxDirectiveThirdParty statsd_timing
+
+" Sticky Module <https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng>
+" Add a sticky cookie to be always forwarded to the same upstream server
+" syn keyword ngxDirectiveThirdParty sticky
+
+" Stream Echo Module <https://github.com/openresty/stream-echo-nginx-module>
+" TCP/stream echo module for NGINX (a port of ngx_http_echo_module)
+syn keyword ngxDirectiveThirdParty echo
+syn keyword ngxDirectiveThirdParty echo_duplicate
+syn keyword ngxDirectiveThirdParty echo_flush_wait
+syn keyword ngxDirectiveThirdParty echo_sleep
+syn keyword ngxDirectiveThirdParty echo_send_timeout
+syn keyword ngxDirectiveThirdParty echo_read_bytes
+syn keyword ngxDirectiveThirdParty echo_read_line
+syn keyword ngxDirectiveThirdParty echo_request_data
+syn keyword ngxDirectiveThirdParty echo_discard_request
+syn keyword ngxDirectiveThirdParty echo_read_buffer_size
+syn keyword ngxDirectiveThirdParty echo_read_timeout
+syn keyword ngxDirectiveThirdParty echo_client_error_log_level
+syn keyword ngxDirectiveThirdParty echo_lingering_close
+syn keyword ngxDirectiveThirdParty echo_lingering_time
+syn keyword ngxDirectiveThirdParty echo_lingering_timeout
+
+" Stream Lua Module <https://github.com/openresty/stream-lua-nginx-module>
+" Embed the power of Lua into Nginx stream/TCP Servers.
+syn keyword ngxDirectiveThirdParty lua_resolver
+syn keyword ngxDirectiveThirdParty lua_resolver_timeout
+syn keyword ngxDirectiveThirdParty lua_lingering_close
+syn keyword ngxDirectiveThirdParty lua_lingering_time
+syn keyword ngxDirectiveThirdParty lua_lingering_timeout
+
+" Stream Upsync Module <https://github.com/xiaokai-wang/nginx-stream-upsync-module>
+" Sync upstreams from consul or others, dynamiclly modify backend-servers attribute(weight, max_fails,...), needn't reload nginx.
+syn keyword ngxDirectiveThirdParty upsync
+syn keyword ngxDirectiveThirdParty upsync_dump_path
+syn keyword ngxDirectiveThirdParty upsync_lb
+syn keyword ngxDirectiveThirdParty upsync_show
+
+" Strip Module <https://github.com/evanmiller/mod_strip>
+" Whitespace remover.
+syn keyword ngxDirectiveThirdParty strip
+
+" Subrange Module <https://github.com/Qihoo360/ngx_http_subrange_module>
+" Split one big HTTP/Range request to multiple subrange requesets
+syn keyword ngxDirectiveThirdParty subrange
+
+" Substitutions Module <https://www.nginx.com/resources/wiki/modules/substitutions/>
+" A filter module which can do both regular expression and fixed string substitutions on response bodies.
+syn keyword ngxDirectiveThirdParty subs_filter
+syn keyword ngxDirectiveThirdParty subs_filter_types
+
+" Summarizer Module <https://github.com/reeteshranjan/summarizer-nginx-module>
+" Upstream nginx module to get summaries of documents using the summarizer daemon service
+syn keyword ngxDirectiveThirdParty smrzr_filename
+syn keyword ngxDirectiveThirdParty smrzr_ratio
+
+" Supervisord Module <https://github.com/FRiCKLE/ngx_supervisord/>
+" Module providing nginx with API to communicate with supervisord and manage (start/stop) backends on-demand.
+syn keyword ngxDirectiveThirdParty supervisord
+syn keyword ngxDirectiveThirdParty supervisord_inherit_backend_status
+syn keyword ngxDirectiveThirdParty supervisord_name
+syn keyword ngxDirectiveThirdParty supervisord_start
+syn keyword ngxDirectiveThirdParty supervisord_stop
+
+" Tarantool Upstream Module <https://github.com/tarantool/nginx_upstream_module>
+" Tarantool NginX upstream module (REST, JSON API, websockets, load balancing)
+syn keyword ngxDirectiveThirdParty tnt_pass
+syn keyword ngxDirectiveThirdParty tnt_http_methods
+syn keyword ngxDirectiveThirdParty tnt_http_rest_methods
+syn keyword ngxDirectiveThirdParty tnt_pass_http_request
+syn keyword ngxDirectiveThirdParty tnt_pass_http_request_buffer_size
+syn keyword ngxDirectiveThirdParty tnt_method
+syn keyword ngxDirectiveThirdParty tnt_http_allowed_methods - experemental
+syn keyword ngxDirectiveThirdParty tnt_send_timeout
+syn keyword ngxDirectiveThirdParty tnt_read_timeout
+syn keyword ngxDirectiveThirdParty tnt_buffer_size
+syn keyword ngxDirectiveThirdParty tnt_next_upstream
+syn keyword ngxDirectiveThirdParty tnt_connect_timeout
+syn keyword ngxDirectiveThirdParty tnt_next_upstream
+syn keyword ngxDirectiveThirdParty tnt_next_upstream_tries
+syn keyword ngxDirectiveThirdParty tnt_next_upstream_timeout
+
+" TCP Proxy Module <http://yaoweibin.github.io/nginx_tcp_proxy_module/>
+" Add the feature of tcp proxy with nginx, with health check and status monitor
+syn keyword ngxDirectiveBlock tcp
+" syn keyword ngxDirectiveThirdParty server
+" syn keyword ngxDirectiveThirdParty listen
+" syn keyword ngxDirectiveThirdParty allow
+" syn keyword ngxDirectiveThirdParty deny
+" syn keyword ngxDirectiveThirdParty so_keepalive
+" syn keyword ngxDirectiveThirdParty tcp_nodelay
+" syn keyword ngxDirectiveThirdParty timeout
+" syn keyword ngxDirectiveThirdParty server_name
+" syn keyword ngxDirectiveThirdParty resolver
+" syn keyword ngxDirectiveThirdParty resolver_timeout
+" syn keyword ngxDirectiveThirdParty upstream
+syn keyword ngxDirectiveThirdParty check
+syn keyword ngxDirectiveThirdParty check_http_send
+syn keyword ngxDirectiveThirdParty check_http_expect_alive
+syn keyword ngxDirectiveThirdParty check_smtp_send
+syn keyword ngxDirectiveThirdParty check_smtp_expect_alive
+syn keyword ngxDirectiveThirdParty check_shm_size
+syn keyword ngxDirectiveThirdParty check_status
+" syn keyword ngxDirectiveThirdParty ip_hash
+" syn keyword ngxDirectiveThirdParty proxy_pass
+" syn keyword ngxDirectiveThirdParty proxy_buffer
+" syn keyword ngxDirectiveThirdParty proxy_connect_timeout
+" syn keyword ngxDirectiveThirdParty proxy_read_timeout
+syn keyword ngxDirectiveThirdParty proxy_write_timeout
+
+" Testcookie Module <https://github.com/kyprizel/testcookie-nginx-module>
+" NGINX module for L7 DDoS attack mitigation
+syn keyword ngxDirectiveThirdParty testcookie
+syn keyword ngxDirectiveThirdParty testcookie_name
+syn keyword ngxDirectiveThirdParty testcookie_domain
+syn keyword ngxDirectiveThirdParty testcookie_expires
+syn keyword ngxDirectiveThirdParty testcookie_path
+syn keyword ngxDirectiveThirdParty testcookie_secret
+syn keyword ngxDirectiveThirdParty testcookie_session
+syn keyword ngxDirectiveThirdParty testcookie_arg
+syn keyword ngxDirectiveThirdParty testcookie_max_attempts
+syn keyword ngxDirectiveThirdParty testcookie_p3p
+syn keyword ngxDirectiveThirdParty testcookie_fallback
+syn keyword ngxDirectiveThirdParty testcookie_whitelist
+syn keyword ngxDirectiveThirdParty testcookie_pass
+syn keyword ngxDirectiveThirdParty testcookie_redirect_via_refresh
+syn keyword ngxDirectiveThirdParty testcookie_refresh_template
+syn keyword ngxDirectiveThirdParty testcookie_refresh_status
+syn keyword ngxDirectiveThirdParty testcookie_deny_keepalive
+syn keyword ngxDirectiveThirdParty testcookie_get_only
+syn keyword ngxDirectiveThirdParty testcookie_https_location
+syn keyword ngxDirectiveThirdParty testcookie_refresh_encrypt_cookie
+syn keyword ngxDirectiveThirdParty testcookie_refresh_encrypt_cookie_key
+syn keyword ngxDirectiveThirdParty testcookie_refresh_encrypt_iv
+syn keyword ngxDirectiveThirdParty testcookie_internal
+syn keyword ngxDirectiveThirdParty testcookie_httponly_flag
+syn keyword ngxDirectiveThirdParty testcookie_secure_flag
+
+" Types Filter Module <https://github.com/flygoast/ngx_http_types_filter>
+" Change the `Content-Type` output header depending on an extension variable according to a condition specified in the 'if' clause.
+syn keyword ngxDirectiveThirdParty types_filter
+syn keyword ngxDirectiveThirdParty types_filter_use_default
+
+" Unzip Module <https://github.com/youzee/nginx-unzip-module>
+" Enabling fetching of files that are stored in zipped archives.
+syn keyword ngxDirectiveThirdParty file_in_unzip_archivefile
+syn keyword ngxDirectiveThirdParty file_in_unzip_extract
+syn keyword ngxDirectiveThirdParty file_in_unzip
+
+" Upload Progress Module <https://www.nginx.com/resources/wiki/modules/upload_progress/>
+" An upload progress system, that monitors RFC1867 POST upload as they are transmitted to upstream servers
+syn keyword ngxDirectiveThirdParty upload_progress
+syn keyword ngxDirectiveThirdParty track_uploads
+syn keyword ngxDirectiveThirdParty report_uploads
+syn keyword ngxDirectiveThirdParty upload_progress_content_type
+syn keyword ngxDirectiveThirdParty upload_progress_header
+syn keyword ngxDirectiveThirdParty upload_progress_jsonp_parameter
+syn keyword ngxDirectiveThirdParty upload_progress_json_output
+syn keyword ngxDirectiveThirdParty upload_progress_jsonp_output
+syn keyword ngxDirectiveThirdParty upload_progress_template
+
+" Upload Module <https://www.nginx.com/resources/wiki/modules/upload/>
+" Parses request body storing all files being uploaded to a directory specified by upload_store directive
+syn keyword ngxDirectiveThirdParty upload_pass
+syn keyword ngxDirectiveThirdParty upload_resumable
+syn keyword ngxDirectiveThirdParty upload_store
+syn keyword ngxDirectiveThirdParty upload_state_store
+syn keyword ngxDirectiveThirdParty upload_store_access
+syn keyword ngxDirectiveThirdParty upload_set_form_field
+syn keyword ngxDirectiveThirdParty upload_aggregate_form_field
+syn keyword ngxDirectiveThirdParty upload_pass_form_field
+syn keyword ngxDirectiveThirdParty upload_cleanup
+syn keyword ngxDirectiveThirdParty upload_buffer_size
+syn keyword ngxDirectiveThirdParty upload_max_part_header_len
+syn keyword ngxDirectiveThirdParty upload_max_file_size
+syn keyword ngxDirectiveThirdParty upload_limit_rate
+syn keyword ngxDirectiveThirdParty upload_max_output_body_len
+syn keyword ngxDirectiveThirdParty upload_tame_arrays
+syn keyword ngxDirectiveThirdParty upload_pass_args
+
+" Upstream Fair Module <https://github.com/gnosek/nginx-upstream-fair>
+" The fair load balancer module for nginx http://nginx.localdomain.pl
+syn keyword ngxDirectiveThirdParty fair
+syn keyword ngxDirectiveThirdParty upstream_fair_shm_size
+
+" Upstream Hash Module (DEPRECATED) <http://wiki.nginx.org/NginxHttpUpstreamRequestHashModule>
+" Provides simple upstream load distribution by hashing a configurable variable.
+" syn keyword ngxDirectiveDeprecated hash
+syn keyword ngxDirectiveDeprecated hash_again
+
+" Upstream Domain Resolve Module <https://www.nginx.com/resources/wiki/modules/domain_resolve/>
+" A load-balancer that resolves an upstream domain name asynchronously.
+syn keyword ngxDirectiveThirdParty jdomain
+
+" Upsync Module <https://github.com/weibocom/nginx-upsync-module>
+" Sync upstreams from consul or others, dynamiclly modify backend-servers attribute(weight, max_fails,...), needn't reload nginx
+syn keyword ngxDirectiveThirdParty upsync
+syn keyword ngxDirectiveThirdParty upsync_dump_path
+syn keyword ngxDirectiveThirdParty upsync_lb
+syn keyword ngxDirectiveThirdParty upstream_show
+
+" URL Module <https://github.com/vozlt/nginx-module-url>
+" Nginx url encoding converting module
+syn keyword ngxDirectiveThirdParty url_encoding_convert
+syn keyword ngxDirectiveThirdParty url_encoding_convert_from
+syn keyword ngxDirectiveThirdParty url_encoding_convert_to
+
+" User Agent Module <https://github.com/alibaba/nginx-http-user-agent>
+" Match browsers and crawlers
+syn keyword ngxDirectiveThirdParty user_agent
+
+" Upstrema Ketama Chash Module <https://github.com/flygoast/ngx_http_upstream_ketama_chash>
+" Nginx load-balancer module implementing ketama consistent hashing.
+syn keyword ngxDirectiveThirdParty ketama_chash
+
+" Video Thumbextractor Module <https://github.com/wandenberg/nginx-video-thumbextractor-module>
+" Extract thumbs from a video file
+syn keyword ngxDirectiveThirdParty video_thumbextractor
+syn keyword ngxDirectiveThirdParty video_thumbextractor_video_filename
+syn keyword ngxDirectiveThirdParty video_thumbextractor_video_second
+syn keyword ngxDirectiveThirdParty video_thumbextractor_image_width
+syn keyword ngxDirectiveThirdParty video_thumbextractor_image_height
+syn keyword ngxDirectiveThirdParty video_thumbextractor_only_keyframe
+syn keyword ngxDirectiveThirdParty video_thumbextractor_next_time
+syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_rows
+syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_cols
+syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_max_rows
+syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_max_cols
+syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_sample_interval
+syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_color
+syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_margin
+syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_padding
+syn keyword ngxDirectiveThirdParty video_thumbextractor_threads
+syn keyword ngxDirectiveThirdParty video_thumbextractor_processes_per_worker
+
+" Eval Module <http://www.grid.net.ru/nginx/eval.en.html>
+" Module for nginx web server evaluates response of proxy or memcached module into variables.
+syn keyword ngxDirectiveThirdParty eval
+syn keyword ngxDirectiveThirdParty eval_escalate
+syn keyword ngxDirectiveThirdParty eval_override_content_type
+
+" VTS Module <https://github.com/vozlt/nginx-module-vts>
+" Nginx virtual host traffic status module
+syn keyword ngxDirectiveThirdParty vhost_traffic_status
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_zone
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_display
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_display_format
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_display_jsonp
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_filter
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_filter_by_host
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_filter_by_set_key
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_filter_check_duplicate
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_limit
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_limit_traffic
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_limit_traffic_by_set_key
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_limit_check_duplicate
+
+" XSS Module <https://github.com/openresty/xss-nginx-module>
+" Native support for cross-site scripting (XSS) in an nginx.
+syn keyword ngxDirectiveThirdParty xss_get
+syn keyword ngxDirectiveThirdParty xss_callback_arg
+syn keyword ngxDirectiveThirdParty xss_override_status
+syn keyword ngxDirectiveThirdParty xss_check_status
+syn keyword ngxDirectiveThirdParty xss_input_types
+
+" CT Module <https://github.com/grahamedgecombe/nginx-ct>
+" Certificate Transparency module for nginx
+syn keyword ngxDirectiveThirdParty ssl_ct
+syn keyword ngxDirectiveThirdParty ssl_ct_static_scts
+
+" Dynamic TLS records patch <https://github.com/cloudflare/sslconfig/blob/master/patches/nginx__dynamic_tls_records.patch>
+" TLS Dynamic Record Resizing
+syn keyword ngxDirectiveThirdParty ssl_dyn_rec_enable
+syn keyword ngxDirectiveThirdParty ssl_dyn_rec_size_hi
+syn keyword ngxDirectiveThirdParty ssl_dyn_rec_size_lo
+syn keyword ngxDirectiveThirdParty ssl_dyn_rec_threshold
+syn keyword ngxDirectiveThirdParty ssl_dyn_rec_timeout
+
+" ZIP Module <https://www.nginx.com/resources/wiki/modules/zip/>
+" ZIP archiver for nginx
+
+" Contained LUA blocks for embedded syntax highlighting
+syn keyword ngxThirdPartyLuaBlock balancer_by_lua_block contained
+syn keyword ngxThirdPartyLuaBlock init_by_lua_block contained
+syn keyword ngxThirdPartyLuaBlock init_worker_by_lua_block contained
+syn keyword ngxThirdPartyLuaBlock set_by_lua_block contained
+syn keyword ngxThirdPartyLuaBlock content_by_lua_block contained
+syn keyword ngxThirdPartyLuaBlock rewrite_by_lua_block contained
+syn keyword ngxThirdPartyLuaBlock access_by_lua_block contained
+syn keyword ngxThirdPartyLuaBlock header_filter_by_lua_block contained
+syn keyword ngxThirdPartyLuaBlock body_filter_by_lua_block contained
+syn keyword ngxThirdPartyLuaBlock log_by_lua_block contained
+syn keyword ngxThirdPartyLuaBlock ssl_certificate_by_lua_block contained
+syn keyword ngxThirdPartyLuaBlock ssl_session_fetch_by_lua_block contained
+syn keyword ngxThirdPartyLuaBlock ssl_session_store_by_lua_block contained
+
+
+" Nested syntax in ERB templating statements
+" Subtype needs to be set to '', otherwise recursive errors occur when opening *.nginx files
+let b:eruby_subtype = ''
+unlet b:current_syntax
+syn include @ERB syntax/eruby.vim
+syn region ngxTemplate start=+<%[^\=]+ end=+%>+ oneline contains=@ERB
+syn region ngxTemplateVar start=+<%=+ end=+%>+ oneline
+let b:current_syntax = "nginx"
+
+" Nested syntax in Jinja templating statements
+" This dependend on https://github.com/lepture/vim-jinja
+unlet b:current_syntax
+try
+ syn include @JINJA syntax/jinja.vim
+ syn region ngxTemplate start=+{%+ end=+%}+ oneline contains=@JINJA
+ syn region ngxTemplateVar start=+{{+ end=+}}+ oneline
+catch
+endtry
+let b:current_syntax = "nginx"
+
+" Enable nested LUA syntax highlighting
+unlet b:current_syntax
+syn include @LUA syntax/lua.vim
+syn region ngxLua start=+^\s*\w\+_by_lua_block\s*{+ end=+}+me=s-1 contains=ngxBlock,@LUA
+let b:current_syntax = "nginx"
+
+
+" Highlight
+hi link ngxComment Comment
+hi link ngxVariable Identifier
+hi link ngxVariableBlock Identifier
+hi link ngxVariableString PreProc
+hi link ngxString String
+hi link ngxIPaddr Delimiter
+hi link ngxBoolean Boolean
+hi link ngxInteger Number
+hi link ngxDirectiveBlock Statement
+hi link ngxDirectiveImportant Type
+hi link ngxDirectiveControl Keyword
+hi link ngxDirectiveDeprecated Error
+hi link ngxDirective Function
+hi link ngxDirectiveThirdParty Function
+hi link ngxListenOptions PreProc
+hi link ngxUpstreamServerOptions PreProc
+hi link ngxProxyNextUpstreamOptions PreProc
+hi link ngxMailProtocol Keyword
+hi link ngxSSLProtocol PreProc
+hi link ngxSSLProtocolDeprecated Error
+hi link ngxStickyOptions ngxDirective
+hi link ngxCookieOptions PreProc
+hi link ngxTemplateVar Identifier
+
+hi link ngxSSLSessionTicketsOff ngxBoolean
+hi link ngxSSLSessionTicketsOn Error
+hi link ngxSSLPreferServerCiphersOn ngxBoolean
+hi link ngxSSLPreferServerCiphersOff Error
+hi link ngxGzipOff ngxBoolean
+hi link ngxGzipOn Error
+hi link ngxSSLCipherInsecure Error
+
+hi link ngxThirdPartyLuaBlock Function
diff --git a/runtime/syntax/ninja.vim b/runtime/syntax/ninja.vim
new file mode 100644
index 0000000..a53567e
--- /dev/null
+++ b/runtime/syntax/ninja.vim
@@ -0,0 +1,87 @@
+" ninja build file syntax.
+" Language: ninja build file as described at
+" http://ninja-build.org/manual.html
+" Version: 1.5
+" Last Change: 2018/04/05
+" Maintainer: Nicolas Weber <nicolasweber@gmx.de>
+" Version 1.5 of this script is in the upstream vim repository and will be
+" included in the next vim release. If you change this, please send your change
+" upstream.
+
+" ninja lexer and parser are at
+" https://github.com/ninja-build/ninja/blob/master/src/lexer.in.cc
+" https://github.com/ninja-build/ninja/blob/master/src/manifest_parser.cc
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case match
+
+" Comments are only matched when the # is at the beginning of the line (with
+" optional whitespace), as long as the prior line didn't end with a $
+" continuation.
+syn match ninjaComment /\(\$\n\)\@<!\_^\s*#.*$/ contains=@Spell
+
+" Toplevel statements are the ones listed here and
+" toplevel variable assignments (ident '=' value).
+" lexer.in.cc, ReadToken() and manifest_parser.cc, Parse()
+syn match ninjaKeyword "^build\>"
+syn match ninjaKeyword "^rule\>"
+syn match ninjaKeyword "^pool\>"
+syn match ninjaKeyword "^default\>"
+syn match ninjaKeyword "^include\>"
+syn match ninjaKeyword "^subninja\>"
+
+" Both 'build' and 'rule' begin a variable scope that ends
+" on the first line without indent. 'rule' allows only a
+" limited set of magic variables, 'build' allows general
+" let assignments.
+" manifest_parser.cc, ParseRule()
+syn region ninjaRule start="^rule" end="^\ze\S" contains=TOP transparent
+syn keyword ninjaRuleCommand contained containedin=ninjaRule command
+ \ deps depfile description generator
+ \ pool restat rspfile rspfile_content
+
+syn region ninjaPool start="^pool" end="^\ze\S" contains=TOP transparent
+syn keyword ninjaPoolCommand contained containedin=ninjaPool depth
+
+" Strings are parsed as follows:
+" lexer.in.cc, ReadEvalString()
+" simple_varname = [a-zA-Z0-9_-]+;
+" varname = [a-zA-Z0-9_.-]+;
+" $$ -> $
+" $\n -> line continuation
+" '$ ' -> escaped space
+" $simple_varname -> variable
+" ${varname} -> variable
+
+syn match ninjaDollar "\$\$"
+syn match ninjaWrapLineOperator "\$$"
+syn match ninjaSimpleVar "\$[a-zA-Z0-9_-]\+"
+syn match ninjaVar "\${[a-zA-Z0-9_.-]\+}"
+
+" operators are:
+" variable assignment =
+" rule definition :
+" implicit dependency |
+" order-only dependency ||
+syn match ninjaOperator "\(=\|:\||\|||\)\ze\s"
+
+hi def link ninjaComment Comment
+hi def link ninjaKeyword Keyword
+hi def link ninjaRuleCommand Statement
+hi def link ninjaPoolCommand Statement
+hi def link ninjaDollar ninjaOperator
+hi def link ninjaWrapLineOperator ninjaOperator
+hi def link ninjaOperator Operator
+hi def link ninjaSimpleVar ninjaVar
+hi def link ninjaVar Identifier
+
+let b:current_syntax = "ninja"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/nix.vim b/runtime/syntax/nix.vim
new file mode 100644
index 0000000..c07676a
--- /dev/null
+++ b/runtime/syntax/nix.vim
@@ -0,0 +1,210 @@
+" Vim syntax file
+" Language: Nix
+" Maintainer: James Fleming <james@electronic-quill.net>
+" Original Author: Daiderd Jordan <daiderd@gmail.com>
+" Acknowledgement: Based on vim-nix maintained by Daiderd Jordan <daiderd@gmail.com>
+" https://github.com/LnL7/vim-nix
+" License: MIT
+" Last Change: 2022 Dec 06
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword nixBoolean true false
+syn keyword nixNull null
+syn keyword nixRecKeyword rec
+
+syn keyword nixOperator or
+syn match nixOperator '!=\|!'
+syn match nixOperator '<=\?'
+syn match nixOperator '>=\?'
+syn match nixOperator '&&'
+syn match nixOperator '//\='
+syn match nixOperator '=='
+syn match nixOperator '?'
+syn match nixOperator '||'
+syn match nixOperator '++\='
+syn match nixOperator '-'
+syn match nixOperator '\*'
+syn match nixOperator '->'
+
+syn match nixParen '[()]'
+syn match nixInteger '\d\+'
+
+syn keyword nixTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained
+syn match nixComment '#.*' contains=nixTodo,@Spell
+syn region nixComment start=+/\*+ end=+\*/+ contains=nixTodo,@Spell
+
+syn region nixInterpolation matchgroup=nixInterpolationDelimiter start="\${" end="}" contained contains=@nixExpr,nixInterpolationParam
+
+syn match nixSimpleStringSpecial /\\\%([nrt"\\$]\|$\)/ contained
+syn match nixStringSpecial /''['$]/ contained
+syn match nixStringSpecial /\$\$/ contained
+syn match nixStringSpecial /''\\[nrt]/ contained
+
+syn match nixSimpleStringSpecial /\$\$/ contained
+
+syn match nixInvalidSimpleStringEscape /\\[^nrt"\\$]/ contained
+syn match nixInvalidStringEscape /''\\[^nrt]/ contained
+
+syn region nixSimpleString matchgroup=nixStringDelimiter start=+"+ skip=+\\"+ end=+"+ contains=nixInterpolation,nixSimpleStringSpecial,nixInvalidSimpleStringEscape
+syn region nixString matchgroup=nixStringDelimiter start=+''+ skip=+''['$\\]+ end=+''+ contains=nixInterpolation,nixStringSpecial,nixInvalidStringEscape
+
+syn match nixFunctionCall "[a-zA-Z_][a-zA-Z0-9_'-]*"
+
+syn match nixPath "[a-zA-Z0-9._+-]*\%(/[a-zA-Z0-9._+-]\+\)\+"
+syn match nixHomePath "\~\%(/[a-zA-Z0-9._+-]\+\)\+"
+syn match nixSearchPath "[a-zA-Z0-9._+-]\+\%(\/[a-zA-Z0-9._+-]\+\)*" contained
+syn match nixPathDelimiter "[<>]" contained
+syn match nixSearchPathRef "<[a-zA-Z0-9._+-]\+\%(\/[a-zA-Z0-9._+-]\+\)*>" contains=nixSearchPath,nixPathDelimiter
+syn match nixURI "[a-zA-Z][a-zA-Z0-9.+-]*:[a-zA-Z0-9%/?:@&=$,_.!~*'+-]\+"
+
+syn match nixAttributeDot "\." contained
+syn match nixAttribute "[a-zA-Z_][a-zA-Z0-9_'-]*\ze\%([^a-zA-Z0-9_'.-]\|$\)" contained
+syn region nixAttributeAssignment start="=" end="\ze;" contained contains=@nixExpr
+syn region nixAttributeDefinition start=/\ze[a-zA-Z_"$]/ end=";" contained contains=nixComment,nixAttribute,nixInterpolation,nixSimpleString,nixAttributeDot,nixAttributeAssignment
+
+syn region nixInheritAttributeScope start="(" end="\ze)" contained contains=@nixExpr
+syn region nixAttributeDefinition matchgroup=nixInherit start="\<inherit\>" end=";" contained contains=nixComment,nixInheritAttributeScope,nixAttribute
+
+syn region nixAttributeSet start="{" end="}" contains=nixComment,nixAttributeDefinition
+
+" vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+syn region nixArgumentDefinitionWithDefault matchgroup=nixArgumentDefinition start="[a-zA-Z_][a-zA-Z0-9_'-]*\ze\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*?\@=" matchgroup=NONE end="[,}]\@=" transparent contained contains=@nixExpr
+" vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+syn match nixArgumentDefinition "[a-zA-Z_][a-zA-Z0-9_'-]*\ze\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*[,}]\@=" contained
+syn match nixArgumentEllipsis "\.\.\." contained
+syn match nixArgumentSeparator "," contained
+
+" vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+syn match nixArgOperator '@\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*[a-zA-Z_][a-zA-Z0-9_'-]*\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*:'he=s+1 contained contains=nixAttribute
+
+" vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+syn match nixArgOperator '[a-zA-Z_][a-zA-Z0-9_'-]*\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*@'hs=e-1 contains=nixAttribute nextgroup=nixFunctionArgument
+
+" This is a bit more complicated, because function arguments can be passed in a
+" very similar form on how attribute sets are defined and two regions with the
+" same start patterns will shadow each other. Instead of a region we could use a
+" match on {\_.\{-\}}, which unfortunately doesn't take nesting into account.
+"
+" So what we do instead is that we look forward until we are sure that it's a
+" function argument. Unfortunately, we need to catch comments and both vertical
+" and horizontal white space, which the following regex should hopefully do:
+"
+" "\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*"
+"
+" It is also used throught the whole file and is marked with 'v's as well.
+"
+" Fortunately the matching rules for function arguments are much simpler than
+" for real attribute sets, because we can stop when we hit the first ellipsis or
+" default value operator, but we also need to paste the "whitespace & comments
+" eating" regex all over the place (marked with 'v's):
+"
+" Region match 1: { foo ? ... } or { foo, ... } or { ... } (ellipsis)
+" vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv {----- identifier -----}vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+syn region nixFunctionArgument start="{\ze\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*\%([a-zA-Z_][a-zA-Z0-9_'-]*\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*[,?}]\|\.\.\.\)" end="}" contains=nixComment,nixArgumentDefinitionWithDefault,nixArgumentDefinition,nixArgumentEllipsis,nixArgumentSeparator nextgroup=nixArgOperator
+
+" Now it gets more tricky, because we need to look forward for the colon, but
+" there could be something like "{}@foo:", even though it's highly unlikely.
+"
+" Region match 2: {}
+" vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv@vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv{----- identifier -----} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+syn region nixFunctionArgument start="{\ze\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*}\%(\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*@\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*[a-zA-Z_][a-zA-Z0-9_'-]*\)\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*:" end="}" contains=nixComment nextgroup=nixArgOperator
+
+" vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+syn match nixSimpleFunctionArgument "[a-zA-Z_][a-zA-Z0-9_'-]*\ze\%(\s\|#.\{-\}\n\|\n\|/\*\_.\{-\}\*/\)*:\([\n ]\)\@="
+
+syn region nixList matchgroup=nixListBracket start="\[" end="\]" contains=@nixExpr
+
+syn region nixLetExpr matchgroup=nixLetExprKeyword start="\<let\>" end="\<in\>" contains=nixComment,nixAttributeDefinition
+
+syn keyword nixIfExprKeyword then contained
+syn region nixIfExpr matchgroup=nixIfExprKeyword start="\<if\>" end="\<else\>" contains=@nixExpr,nixIfExprKeyword
+
+syn region nixWithExpr matchgroup=nixWithExprKeyword start="\<with\>" matchgroup=NONE end=";" contains=@nixExpr
+
+syn region nixAssertExpr matchgroup=nixAssertKeyword start="\<assert\>" matchgroup=NONE end=";" contains=@nixExpr
+
+syn cluster nixExpr contains=nixBoolean,nixNull,nixOperator,nixParen,nixInteger,nixRecKeyword,nixConditional,nixBuiltin,nixSimpleBuiltin,nixComment,nixFunctionCall,nixFunctionArgument,nixArgOperator,nixSimpleFunctionArgument,nixPath,nixHomePath,nixSearchPathRef,nixURI,nixAttributeSet,nixList,nixSimpleString,nixString,nixLetExpr,nixIfExpr,nixWithExpr,nixAssertExpr,nixInterpolation
+
+" These definitions override @nixExpr and have to come afterwards:
+
+syn match nixInterpolationParam "[a-zA-Z_][a-zA-Z0-9_'-]*\%(\.[a-zA-Z_][a-zA-Z0-9_'-]*\)*" contained
+
+" Non-namespaced Nix builtins as of version 2.0:
+syn keyword nixSimpleBuiltin
+ \ abort baseNameOf derivation derivationStrict dirOf fetchGit
+ \ fetchMercurial fetchTarball import isNull map mapAttrs placeholder removeAttrs
+ \ scopedImport throw toString
+
+
+" Namespaced and non-namespaced Nix builtins as of version 2.0:
+syn keyword nixNamespacedBuiltin contained
+ \ abort add addErrorContext all any attrNames attrValues baseNameOf
+ \ catAttrs compareVersions concatLists concatStringsSep currentSystem
+ \ currentTime deepSeq derivation derivationStrict dirOf div elem elemAt
+ \ fetchGit fetchMercurial fetchTarball fetchurl filter \ filterSource
+ \ findFile foldl' fromJSON functionArgs genList \ genericClosure getAttr
+ \ getEnv hasAttr hasContext hashString head import intersectAttrs isAttrs
+ \ isBool isFloat isFunction isInt isList isNull isString langVersion
+ \ length lessThan listToAttrs map mapAttrs match mul nixPath nixVersion
+ \ parseDrvName partition path pathExists placeholder readDir readFile
+ \ removeAttrs replaceStrings scopedImport seq sort split splitVersion
+ \ storeDir storePath stringLength sub substring tail throw toFile toJSON
+ \ toPath toString toXML trace tryEval typeOf unsafeDiscardOutputDependency
+ \ unsafeDiscardStringContext unsafeGetAttrPos valueSize fromTOML bitAnd
+ \ bitOr bitXor floor ceil
+
+syn match nixBuiltin "builtins\.[a-zA-Z']\+"he=s+9 contains=nixComment,nixNamespacedBuiltin
+
+hi def link nixArgOperator Operator
+hi def link nixArgumentDefinition Identifier
+hi def link nixArgumentEllipsis Operator
+hi def link nixAssertKeyword Keyword
+hi def link nixAttribute Identifier
+hi def link nixAttributeDot Operator
+hi def link nixBoolean Boolean
+hi def link nixBuiltin Special
+hi def link nixComment Comment
+hi def link nixConditional Conditional
+hi def link nixHomePath Include
+hi def link nixIfExprKeyword Keyword
+hi def link nixInherit Keyword
+hi def link nixInteger Integer
+hi def link nixInterpolation Macro
+hi def link nixInterpolationDelimiter Delimiter
+hi def link nixInterpolationParam Macro
+hi def link nixInvalidSimpleStringEscape Error
+hi def link nixInvalidStringEscape Error
+hi def link nixLetExprKeyword Keyword
+hi def link nixNamespacedBuiltin Special
+hi def link nixNull Constant
+hi def link nixOperator Operator
+hi def link nixPath Include
+hi def link nixPathDelimiter Delimiter
+hi def link nixRecKeyword Keyword
+hi def link nixSearchPath Include
+hi def link nixSimpleBuiltin Keyword
+hi def link nixSimpleFunctionArgument Identifier
+hi def link nixSimpleString String
+hi def link nixSimpleStringSpecial SpecialChar
+hi def link nixString String
+hi def link nixStringDelimiter Delimiter
+hi def link nixStringSpecial Special
+hi def link nixTodo Todo
+hi def link nixURI Include
+hi def link nixWithExprKeyword Keyword
+
+" This could lead up to slow syntax highlighting for large files, but usually
+" large files such as all-packages.nix are one large attribute set, so if we'd
+" use sync patterns we'd have to go back to the start of the file anyway
+syn sync fromstart
+
+let b:current_syntax = "nix"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/nosyntax.vim b/runtime/syntax/nosyntax.vim
new file mode 100644
index 0000000..0ab3412
--- /dev/null
+++ b/runtime/syntax/nosyntax.vim
@@ -0,0 +1,30 @@
+" Vim syntax support file
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last Change: 2006 Apr 16
+
+" This file is used for ":syntax off".
+" It removes the autocommands and stops highlighting for all buffers.
+
+if !has("syntax")
+ finish
+endif
+
+" Remove all autocommands for the Syntax event. This also avoids that
+" "syntax=foo" in a modeline triggers the SynSet() function of synload.vim.
+au! Syntax
+
+" remove all syntax autocommands and remove the syntax for each buffer
+augroup syntaxset
+ au!
+ au BufEnter * syn clear
+ au BufEnter * if exists("b:current_syntax") | unlet b:current_syntax | endif
+ doautoall syntaxset BufEnter *
+ au!
+augroup END
+
+if exists("syntax_on")
+ unlet syntax_on
+endif
+if exists("syntax_manual")
+ unlet syntax_manual
+endif
diff --git a/runtime/syntax/nqc.vim b/runtime/syntax/nqc.vim
new file mode 100644
index 0000000..d09c106
--- /dev/null
+++ b/runtime/syntax/nqc.vim
@@ -0,0 +1,365 @@
+" Vim syntax file
+" Language: NQC - Not Quite C, for LEGO mindstorms
+" NQC homepage: http://www.enteract.com/~dbaum/nqc/
+" Maintainer: Stefan Scherer <stefan@enotes.de>
+" Last Change: 2001 May 10
+" URL: http://www.enotes.de/twiki/pub/Home/LegoMindstorms/nqc.vim
+" Filenames: .nqc
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Statements
+syn keyword nqcStatement break return continue start stop abs sign
+syn keyword nqcStatement sub task
+syn keyword nqcLabel case default
+syn keyword nqcConditional if else switch
+syn keyword nqcRepeat while for do until repeat
+
+" Scout and RCX2
+syn keyword nqcEvents acquire catch monitor
+
+" types and classes
+syn keyword nqcType int true false void
+syn keyword nqcStorageClass asm const inline
+
+
+
+" Sensors --------------------------------------------
+" Input Sensors
+syn keyword nqcConstant SENSOR_1 SENSOR_2 SENSOR_3
+
+" Types for SetSensorType()
+syn keyword nqcConstant SENSOR_TYPE_TOUCH SENSOR_TYPE_TEMPERATURE
+syn keyword nqcConstant SENSOR_TYPE_LIGHT SENSOR_TYPE_ROTATION
+syn keyword nqcConstant SENSOR_LIGHT SENSOR_TOUCH
+
+" Modes for SetSensorMode()
+syn keyword nqcConstant SENSOR_MODE_RAW SENSOR_MODE_BOOL
+syn keyword nqcConstant SENSOR_MODE_EDGE SENSOR_MODE_PULSE
+syn keyword nqcConstant SENSOR_MODE_PERCENT SENSOR_MODE_CELSIUS
+syn keyword nqcConstant SENSOR_MODE_FAHRENHEIT SENSOR_MODE_ROTATION
+
+" Sensor configurations for SetSensor()
+syn keyword nqcConstant SENSOR_TOUCH SENSOR_LIGHT SENSOR_ROTATION
+syn keyword nqcConstant SENSOR_CELSIUS SENSOR_FAHRENHEIT SENSOR_PULSE
+syn keyword nqcConstant SENSOR_EDGE
+
+" Functions - All
+syn keyword nqcFunction ClearSensor
+syn keyword nqcFunction SensorValue SensorType
+
+" Functions - RCX
+syn keyword nqcFunction SetSensor SetSensorType
+syn keyword nqcFunction SensorValueBool
+
+" Functions - RCX, CyberMaster
+syn keyword nqcFunction SetSensorMode SensorMode
+
+" Functions - RCX, Scout
+syn keyword nqcFunction SensorValueRaw
+
+" Functions - Scout
+syn keyword nqcFunction SetSensorLowerLimit SetSensorUpperLimit
+syn keyword nqcFunction SetSensorHysteresis CalibrateSensor
+
+
+" Outputs --------------------------------------------
+" Outputs for On(), Off(), etc.
+syn keyword nqcConstant OUT_A OUT_B OUT_C
+
+" Modes for SetOutput()
+syn keyword nqcConstant OUT_ON OUT_OFF OUT_FLOAT
+
+" Directions for SetDirection()
+syn keyword nqcConstant OUT_FWD OUT_REV OUT_TOGGLE
+
+" Output power for SetPower()
+syn keyword nqcConstant OUT_LOW OUT_HALF OUT_FULL
+
+" Functions - All
+syn keyword nqcFunction SetOutput SetDirection SetPower OutputStatus
+syn keyword nqcFunction On Off Float Fwd Rev Toggle
+syn keyword nqcFunction OnFwd OnRev OnFor
+
+" Functions - RXC2, Scout
+syn keyword nqcFunction SetGlobalOutput SetGlobalDirection SetMaxPower
+syn keyword nqcFunction GlobalOutputStatus
+
+
+" Sound ----------------------------------------------
+" Sounds for PlaySound()
+syn keyword nqcConstant SOUND_CLICK SOUND_DOUBLE_BEEP SOUND_DOWN
+syn keyword nqcConstant SOUND_UP SOUND_LOW_BEEP SOUND_FAST_UP
+
+" Functions - All
+syn keyword nqcFunction PlaySound PlayTone
+
+" Functions - RCX2, Scout
+syn keyword nqcFunction MuteSound UnmuteSound ClearSound
+syn keyword nqcFunction SelectSounds
+
+
+" LCD ------------------------------------------------
+" Modes for SelectDisplay()
+syn keyword nqcConstant DISPLAY_WATCH DISPLAY_SENSOR_1 DISPLAY_SENSOR_2
+syn keyword nqcConstant DISPLAY_SENSOR_3 DISPLAY_OUT_A DISPLAY_OUT_B
+syn keyword nqcConstant DISPLAY_OUT_C
+" RCX2
+syn keyword nqcConstant DISPLAY_USER
+
+" Functions - RCX
+syn keyword nqcFunction SelectDisplay
+" Functions - RCX2
+syn keyword nqcFunction SetUserDisplay
+
+
+" Communication --------------------------------------
+" Messages - RCX, Scout ------------------------------
+" Tx power level for SetTxPower()
+syn keyword nqcConstant TX_POWER_LO TX_POWER_HI
+
+" Functions - RCX, Scout
+syn keyword nqcFunction Message ClearMessage SendMessage SetTxPower
+
+" Serial - RCX2 --------------------------------------
+" for SetSerialComm()
+syn keyword nqcConstant SERIAL_COMM_DEFAULT SERIAL_COMM_4800
+syn keyword nqcConstant SERIAL_COMM_DUTY25 SERIAL_COMM_76KHZ
+
+" for SetSerialPacket()
+syn keyword nqcConstant SERIAL_PACKET_DEFAULT SERIAL_PACKET_PREAMBLE
+syn keyword nqcConstant SERIAL_PACKET_NEGATED SERIAL_PACKET_CHECKSUM
+syn keyword nqcConstant SERIAL_PACKET_RCX
+
+" Functions - RCX2
+syn keyword nqcFunction SetSerialComm SetSerialPacket SetSerialData
+syn keyword nqcFunction SerialData SendSerial
+
+" VLL - Scout ----------------------------------------
+" Functions - Scout
+syn keyword nqcFunction SendVLL
+
+
+" Timers ---------------------------------------------
+" Functions - All
+syn keyword nqcFunction ClearTimer Timer
+
+" Functions - RCX2
+syn keyword nqcFunction SetTimer FastTimer
+
+
+" Counters -------------------------------------------
+" Functions - RCX2, Scout
+syn keyword nqcFunction ClearCounter IncCounter DecCounter Counter
+
+
+" Access Control -------------------------------------
+syn keyword nqcConstant ACQUIRE_OUT_A ACQUIRE_OUT_B ACQUIRE_OUT_C
+syn keyword nqcConstant ACQUIRE_SOUND
+" RCX2 only
+syn keyword nqcConstant ACQUIRE_USER_1 ACQUIRE_USER_2 ACQUIRE_USER_3
+syn keyword nqcConstant ACQUIRE_USER_4
+
+" Functions - RCX2, Scout
+syn keyword nqcFunction SetPriority
+
+
+" Events ---------------------------------------------
+" RCX2 Events
+syn keyword nqcConstant EVENT_TYPE_PRESSED EVENT_TYPE_RELEASED
+syn keyword nqcConstant EVENT_TYPE_PULSE EVENT_TYPE_EDGE
+syn keyword nqcConstant EVENT_TYPE_FAST_CHANGE EVENT_TYPE_LOW
+syn keyword nqcConstant EVENT_TYPE_NORMAL EVENT_TYPE_HIGH
+syn keyword nqcConstant EVENT_TYPE_CLICK EVENT_TYPE_DOUBLECLICK
+syn keyword nqcConstant EVENT_TYPE_MESSAGE
+
+" Scout Events
+syn keyword nqcConstant EVENT_1_PRESSED EVENT_1_RELEASED
+syn keyword nqcConstant EVENT_2_PRESSED EVENT_2_RELEASED
+syn keyword nqcConstant EVENT_LIGHT_HIGH EVENT_LIGHT_NORMAL
+syn keyword nqcConstant EVENT_LIGHT_LOW EVENT_LIGHT_CLICK
+syn keyword nqcConstant EVENT_LIGHT_DOUBLECLICK EVENT_COUNTER_0
+syn keyword nqcConstant EVENT_COUNTER_1 EVENT_TIMER_0 EVENT_TIMER_1
+syn keyword nqcConstant EVENT_TIMER_2 EVENT_MESSAGE
+
+" Functions - RCX2, Scout
+syn keyword nqcFunction ActiveEvents Event
+
+" Functions - RCX2
+syn keyword nqcFunction CurrentEvents
+syn keyword nqcFunction SetEvent ClearEvent ClearAllEvents EventState
+syn keyword nqcFunction CalibrateEvent SetUpperLimit UpperLimit
+syn keyword nqcFunction SetLowerLimit LowerLimit SetHysteresis
+syn keyword nqcFunction Hysteresis
+syn keyword nqcFunction SetClickTime ClickTime SetClickCounter
+syn keyword nqcFunction ClickCounter
+
+" Functions - Scout
+syn keyword nqcFunction SetSensorClickTime SetCounterLimit
+syn keyword nqcFunction SetTimerLimit
+
+
+" Data Logging ---------------------------------------
+" Functions - RCX
+syn keyword nqcFunction CreateDatalog AddToDatalog
+syn keyword nqcFunction UploadDatalog
+
+
+" General Features -----------------------------------
+" Functions - All
+syn keyword nqcFunction Wait StopAllTasks Random
+syn keyword nqcFunction SetSleepTime SleepNow
+
+" Functions - RCX
+syn keyword nqcFunction Program Watch SetWatch
+
+" Functions - RCX2
+syn keyword nqcFunction SetRandomSeed SelectProgram
+syn keyword nqcFunction BatteryLevel FirmwareVersion
+
+" Functions - Scout
+" Parameters for SetLight()
+syn keyword nqcConstant LIGHT_ON LIGHT_OFF
+syn keyword nqcFunction SetScoutRules ScoutRules SetScoutMode
+syn keyword nqcFunction SetEventFeedback EventFeedback SetLight
+
+" additional CyberMaster defines
+syn keyword nqcConstant OUT_L OUT_R OUT_X
+syn keyword nqcConstant SENSOR_L SENSOR_M SENSOR_R
+" Functions - CyberMaster
+syn keyword nqcFunction Drive OnWait OnWaitDifferent
+syn keyword nqcFunction ClearTachoCounter TachoCount TachoSpeed
+syn keyword nqcFunction ExternalMotorRunning AGC
+
+
+
+" nqcCommentGroup allows adding matches for special things in comments
+syn keyword nqcTodo contained TODO FIXME XXX
+syn cluster nqcCommentGroup contains=nqcTodo
+
+"when wanted, highlight trailing white space
+if exists("nqc_space_errors")
+ if !exists("nqc_no_trail_space_error")
+ syn match nqcSpaceError display excludenl "\s\+$"
+ endif
+ if !exists("nqc_no_tab_space_error")
+ syn match nqcSpaceError display " \+\t"me=e-1
+ endif
+endif
+
+"catch errors caused by wrong parenthesis and brackets
+syn cluster nqcParenGroup contains=nqcParenError,nqcIncluded,nqcCommentSkip,@nqcCommentGroup,nqcCommentStartError,nqcCommentSkip,nqcCppOut,nqcCppOut2,nqcCppSkip,nqcNumber,nqcFloat,nqcNumbers
+if exists("nqc_no_bracket_error")
+ syn region nqcParen transparent start='(' end=')' contains=ALLBUT,@nqcParenGroup,nqcCppParen
+ " nqcCppParen: same as nqcParen but ends at end-of-line; used in nqcDefine
+ syn region nqcCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcParen
+ syn match nqcParenError display ")"
+ syn match nqcErrInParen display contained "[{}]"
+else
+ syn region nqcParen transparent start='(' end=')' contains=ALLBUT,@nqcParenGroup,nqcCppParen,nqcErrInBracket,nqcCppBracket
+ " nqcCppParen: same as nqcParen but ends at end-of-line; used in nqcDefine
+ syn region nqcCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcErrInBracket,nqcParen,nqcBracket
+ syn match nqcParenError display "[\])]"
+ syn match nqcErrInParen display contained "[\]{}]"
+ syn region nqcBracket transparent start='\[' end=']' contains=ALLBUT,@nqcParenGroup,nqcErrInParen,nqcCppParen,nqcCppBracket
+ " nqcCppBracket: same as nqcParen but ends at end-of-line; used in nqcDefine
+ syn region nqcCppBracket transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcErrInParen,nqcParen,nqcBracket
+ syn match nqcErrInBracket display contained "[);{}]"
+endif
+
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match nqcNumbers display transparent "\<\d\|\.\d" contains=nqcNumber,nqcFloat
+" Same, but without octal error (for comments)
+syn match nqcNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
+"hex number
+syn match nqcNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+" Flag the first zero of an octal number as something special
+syn match nqcFloat display contained "\d\+f"
+"floating point number, with dot, optional exponent
+syn match nqcFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+"floating point number, starting with a dot, optional exponent
+syn match nqcFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match nqcFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>"
+" flag an octal number with wrong digits
+syn case match
+
+syn region nqcCommentL start="//" skip="\\$" end="$" keepend contains=@nqcCommentGroup,nqcSpaceError
+syn region nqcComment matchgroup=nqcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@nqcCommentGroup,nqcCommentStartError,nqcSpaceError
+
+" keep a // comment separately, it terminates a preproc. conditional
+syntax match nqcCommentError display "\*/"
+syntax match nqcCommentStartError display "/\*" contained
+
+
+
+
+
+syn region nqcPreCondit start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=nqcComment,nqcCharacter,nqcCppParen,nqcParenError,nqcNumbers,nqcCommentError,nqcSpaceError
+syn match nqcPreCondit display "^\s*#\s*\(else\|endif\)\>"
+if !exists("nqc_no_if0")
+ syn region nqcCppOut start="^\s*#\s*if\s\+0\>" end=".\|$" contains=nqcCppOut2
+ syn region nqcCppOut2 contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=nqcSpaceError,nqcCppSkip
+ syn region nqcCppSkip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=nqcSpaceError,nqcCppSkip
+endif
+syn region nqcIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match nqcInclude display "^\s*#\s*include\>\s*["]" contains=nqcIncluded
+"syn match nqcLineSkip "\\$"
+syn cluster nqcPreProcGroup contains=nqcPreCondit,nqcIncluded,nqcInclude,nqcDefine,nqcErrInParen,nqcErrInBracket,nqcCppOut,nqcCppOut2,nqcCppSkip,nqcNumber,nqcFloat,nqcNumbers,nqcCommentSkip,@nqcCommentGroup,nqcCommentStartError,nqcParen,nqcBracket
+syn region nqcDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" contains=ALLBUT,@nqcPreProcGroup
+syn region nqcPreProc start="^\s*#\s*\(pragma\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@nqcPreProcGroup
+
+if !exists("nqc_minlines")
+ if !exists("nqc_no_if0")
+ let nqc_minlines = 50 " #if 0 constructs can be long
+ else
+ let nqc_minlines = 15 " mostly for () constructs
+ endif
+endif
+exec "syn sync ccomment nqcComment minlines=" . nqc_minlines
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later
+hi def link nqcLabel Label
+hi def link nqcConditional Conditional
+hi def link nqcRepeat Repeat
+hi def link nqcCharacter Character
+hi def link nqcNumber Number
+hi def link nqcFloat Float
+hi def link nqcFunction Function
+hi def link nqcParenError nqcError
+hi def link nqcErrInParen nqcError
+hi def link nqcErrInBracket nqcError
+hi def link nqcCommentL nqcComment
+hi def link nqcCommentStart nqcComment
+hi def link nqcCommentError nqcError
+hi def link nqcCommentStartError nqcError
+hi def link nqcSpaceError nqcError
+hi def link nqcStorageClass StorageClass
+hi def link nqcInclude Include
+hi def link nqcPreProc PreProc
+hi def link nqcDefine Macro
+hi def link nqcIncluded String
+hi def link nqcError Error
+hi def link nqcStatement Statement
+hi def link nqcEvents Statement
+hi def link nqcPreCondit PreCondit
+hi def link nqcType Type
+hi def link nqcConstant Constant
+hi def link nqcCommentSkip nqcComment
+hi def link nqcComment Comment
+hi def link nqcTodo Todo
+hi def link nqcCppSkip nqcCppOut
+hi def link nqcCppOut2 nqcCppOut
+hi def link nqcCppOut Comment
+
+
+let b:current_syntax = "nqc"
+
+" vim: ts=8
diff --git a/runtime/syntax/nroff.vim b/runtime/syntax/nroff.vim
new file mode 100644
index 0000000..5667042
--- /dev/null
+++ b/runtime/syntax/nroff.vim
@@ -0,0 +1,249 @@
+" VIM syntax file
+" Language: nroff/groff
+" Maintainer: John Marshall <jmarshall@hey.com>
+" Previous Maintainer: Pedro Alejandro López-Valencia <palopezv@gmail.com>
+" Previous Maintainer: Jérôme Plût <Jerome.Plut@ens.fr>
+" Last Change: 2021 Mar 28
+"
+" {{{1 Todo
+"
+" TODO:
+"
+" * Write syntax highlighting files for the preprocessors,
+" and integrate with nroff.vim.
+"
+"
+" {{{1 Start syntax highlighting.
+"
+" quit when a syntax file was already loaded
+"
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+if exists("nroff_is_groff")
+ let b:nroff_is_groff = 1
+endif
+
+syn spell toplevel
+syn case match
+
+"
+" {{{1 plugin settings...
+"
+" {{{2 enable spacing error highlighting
+"
+if exists("nroff_space_errors")
+ syn match nroffError /\s\+$/
+ syn match nroffSpaceError /[.,:;!?]\s\{2,}/
+endif
+"
+"
+" {{{1 Special file settings
+"
+" {{{2 ms exdented paragraphs are not in the default paragraphs list.
+"
+setlocal paragraphs+=XP
+"
+" {{{2 Activate navigation to preprocessor sections.
+"
+if exists("b:preprocs_as_sections")
+ setlocal sections=EQTSPS[\ G1GS
+endif
+
+" {{{1 Escape sequences
+" ------------------------------------------------------------
+
+syn match nroffEscChar /\\[CN]/ nextgroup=nroffEscCharArg
+syn match nroffEscape /\\[*fgmnYV]/ nextgroup=nroffEscRegPar,nroffEscRegArg
+syn match nroffEscape /\\s[+-]\=/ nextgroup=nroffSize
+syn match nroffEscape /\\[$AbDhlLRvxXZ]/ nextgroup=nroffEscPar,nroffEscArg
+
+syn match nroffEscRegArg /./ contained
+syn match nroffEscRegArg2 /../ contained
+syn match nroffEscRegPar /(/ contained nextgroup=nroffEscRegArg2
+syn match nroffEscArg /./ contained
+syn match nroffEscArg2 /../ contained
+syn match nroffEscPar /(/ contained nextgroup=nroffEscArg2
+syn match nroffSize /\((\d\)\=\d/ contained
+
+syn region nroffEscCharArg start=/'/ end=/'/ contained
+syn region nroffEscArg start=/'/ end=/'/ contained contains=nroffEscape,@nroffSpecial
+
+if exists("b:nroff_is_groff")
+ syn region nroffEscRegArg matchgroup=nroffEscape start=/\[/ end=/\]/ contained oneline
+ syn region nroffSize matchgroup=nroffEscape start=/\[/ end=/\]/ contained
+endif
+
+syn match nroffEscape /\\[adprtu{}]/
+syn match nroffEscape /\\$/
+syn match nroffEscape /\\\$[@*]/
+
+" {{{1 Strings and special characters
+" ------------------------------------------------------------
+
+syn match nroffSpecialChar /\\[\\eE?!-]/
+syn match nroffSpace "\\[&%~|^0)/,]"
+syn match nroffSpecialChar /\\(../
+
+if exists("b:nroff_is_groff")
+ syn match nroffSpecialChar /\\\[[^]]*]/
+ syn region nroffPreserve matchgroup=nroffSpecialChar start=/\\?/ end=/\\?/ oneline
+endif
+
+syn region nroffPreserve matchgroup=nroffSpecialChar start=/\\!/ end=/$/ oneline
+
+syn cluster nroffSpecial contains=nroffSpecialChar,nroffSpace
+
+
+syn region nroffString start=/"/ end=/"/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained
+syn region nroffString start=/'/ end=/'/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained
+
+
+" {{{1 Numbers and units
+" ------------------------------------------------------------
+syn match nroffNumBlock /[0-9.]\a\=/ contained contains=nroffNumber
+syn match nroffNumber /\d\+\(\.\d*\)\=/ contained nextgroup=nroffUnit,nroffBadChar
+syn match nroffNumber /\.\d\+)/ contained nextgroup=nroffUnit,nroffBadChar
+syn match nroffBadChar /./ contained
+syn match nroffUnit /[icpPszmnvMu]/ contained
+
+
+" {{{1 Requests
+" ------------------------------------------------------------
+
+" Requests begin with . or ' at the beginning of a line, or
+" after .if or .ie.
+
+syn match nroffReqLeader /^[.']/ nextgroup=nroffReqName skipwhite
+syn match nroffReqLeader /[.']/ contained nextgroup=nroffReqName skipwhite
+
+if exists("b:nroff_is_groff")
+"
+" GNU troff allows long request names
+"
+ syn match nroffReqName /[^\t \\\[?]\+/ contained nextgroup=nroffReqArg
+else
+ syn match nroffReqName /[^\t \\\[?]\{1,2}/ contained nextgroup=nroffReqArg
+endif
+
+syn region nroffReqArg start=/\S/ skip=/\\$/ end=/$/ contained contains=nroffEscape,@nroffSpecial,nroffString,nroffError,nroffSpaceError,nroffNumBlock,nroffComment
+
+" {{{2 Conditional: .if .ie .el
+syn match nroffReqName /\(if\|ie\)/ contained nextgroup=nroffCond skipwhite
+syn match nroffReqName /el/ contained nextgroup=nroffReqLeader skipwhite
+syn match nroffCond /\S\+/ contained nextgroup=nroffReqLeader skipwhite
+
+" {{{2 String definition: .ds .as
+syn match nroffReqname /[da]s/ contained nextgroup=nroffDefIdent skipwhite
+syn match nroffDefIdent /\S\+/ contained nextgroup=nroffDefinition skipwhite
+syn region nroffDefinition matchgroup=nroffSpecialChar start=/"/ matchgroup=NONE end=/\\"/me=e-2 skip=/\\$/ start=/\S/ end=/$/ contained contains=nroffDefSpecial
+syn match nroffDefSpecial /\\$/ contained
+syn match nroffDefSpecial /\\\((.\)\=./ contained
+
+if exists("b:nroff_is_groff")
+ syn match nroffDefSpecial /\\\[[^]]*]/ contained
+endif
+
+" {{{2 Macro definition: .de .am, also diversion: .di
+syn match nroffReqName /\(d[ei]\|am\)/ contained nextgroup=nroffIdent skipwhite
+syn match nroffIdent /[^[?( \t]\+/ contained
+if exists("b:nroff_is_groff")
+ syn match nroffReqName /als/ contained nextgroup=nroffIdent skipwhite
+endif
+
+" {{{2 Register definition: .rn .rr
+syn match nroffReqName /[rn]r/ contained nextgroup=nroffIdent skipwhite
+if exists("b:nroff_is_groff")
+ syn match nroffReqName /\(rnn\|aln\)/ contained nextgroup=nroffIdent skipwhite
+endif
+
+
+" {{{1 eqn/tbl/pic
+" ------------------------------------------------------------
+" <jp>
+" XXX: write proper syntax highlight for eqn / tbl / pic ?
+" <jp />
+
+syn region nroffEquation start=/^\.\s*EQ\>/ end=/^\.\s*EN\>/
+syn region nroffTable start=/^\.\s*TS\>/ end=/^\.\s*TE\>/ contains=@Spell
+syn region nroffPicture start=/^\.\s*PS\>/ end=/^\.\s*PE\>/
+syn region nroffRefer start=/^\.\s*\[\>/ end=/^\.\s*\]\>/ contains=@Spell
+syn region nroffGrap start=/^\.\s*G1\>/ end=/^\.\s*G2\>/
+syn region nroffGremlin start=/^\.\s*GS\>/ end=/^\.\s*GE|GF\>/
+
+" {{{1 Comments
+" ------------------------------------------------------------
+
+syn region nroffIgnore start=/^[.']\s*ig/ end=/^['.]\s*\./
+syn match nroffComment /\(^[.']\s*\)\=\\".*/ contains=nroffTodo,@Spell
+syn match nroffComment /^'''.*/ contains=nroffTodo,@Spell
+
+if exists("b:nroff_is_groff")
+ syn match nroffComment "\\#.*$" contains=nroffTodo,@Spell
+endif
+
+syn keyword nroffTodo TODO XXX FIXME contained
+
+" {{{1 Hilighting
+" ------------------------------------------------------------
+"
+
+"
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+"
+
+hi def link nroffEscChar nroffSpecialChar
+hi def link nroffEscCharArg nroffSpecialChar
+hi def link nroffSpecialChar SpecialChar
+hi def link nroffSpace Delimiter
+
+hi def link nroffEscRegArg2 nroffEscRegArg
+hi def link nroffEscRegArg nroffIdent
+
+hi def link nroffEscArg2 nroffEscArg
+hi def link nroffEscPar nroffEscape
+
+hi def link nroffEscRegPar nroffEscape
+hi def link nroffEscArg nroffEscape
+hi def link nroffSize nroffEscape
+hi def link nroffEscape PreProc
+
+hi def link nroffIgnore Comment
+hi def link nroffComment Comment
+hi def link nroffTodo Todo
+
+hi def link nroffReqLeader nroffRequest
+hi def link nroffReqName nroffRequest
+hi def link nroffRequest Statement
+hi def link nroffCond PreCondit
+hi def link nroffDefIdent nroffIdent
+hi def link nroffIdent Identifier
+
+hi def link nroffEquation PreProc
+hi def link nroffTable PreProc
+hi def link nroffPicture PreProc
+hi def link nroffRefer PreProc
+hi def link nroffGrap PreProc
+hi def link nroffGremlin PreProc
+
+hi def link nroffNumber Number
+hi def link nroffBadChar nroffError
+hi def link nroffSpaceError nroffError
+hi def link nroffError Error
+
+hi def link nroffPreserve String
+hi def link nroffString String
+hi def link nroffDefinition String
+hi def link nroffDefSpecial Special
+
+
+let b:current_syntax = "nroff"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim600: set fdm=marker fdl=2:
diff --git a/runtime/syntax/nsis.vim b/runtime/syntax/nsis.vim
new file mode 100644
index 0000000..49fa17a
--- /dev/null
+++ b/runtime/syntax/nsis.vim
@@ -0,0 +1,730 @@
+" Vim syntax file
+" Language: NSIS script, for version of NSIS 3.08 and later
+" Maintainer: Ken Takata
+" URL: https://github.com/k-takata/vim-nsis
+" Previous Maintainer: Alex Jakushev <Alex.Jakushev@kemek.lt>
+" Last Change: 2022-11-05
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case ignore
+
+
+"Pseudo definitions
+syn match nsisLine nextgroup=@nsisPseudoStatement skipwhite "^"
+syn cluster nsisPseudoStatement contains=nsisFirstComment,nsisLocalLabel,nsisGlobalLabel
+syn cluster nsisPseudoStatement add=nsisDefine,nsisPreCondit,nsisMacro,nsisInclude,nsisSystem
+syn cluster nsisPseudoStatement add=nsisAttribute,nsisCompiler,nsisVersionInfo,nsisInstruction,nsisStatement
+
+"COMMENTS (4.1)
+syn keyword nsisTodo todo attention note fixme readme
+syn region nsisComment start="[;#]" end="$" contains=nsisTodo,nsisLineContinuation,@Spell oneline
+syn region nsisComment start=".\@1<=/\*" end="\*/" contains=nsisTodo,@Spell
+syn region nsisFirstComment start="/\*" end="\*/" contained contains=nsisTodo,@Spell skipwhite
+ \ nextgroup=@nsisPseudoStatement
+
+syn match nsisLineContinuation "\\$"
+
+"STRINGS (4.1)
+syn region nsisString start=/"/ end=/"/ contains=@nsisStringItems,@Spell
+syn region nsisString start=/'/ end=/'/ contains=@nsisStringItems,@Spell
+syn region nsisString start=/`/ end=/`/ contains=@nsisStringItems,@Spell
+
+syn cluster nsisStringItems contains=nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar,nsisUserVar,nsisSysVar,nsisRegistry,nsisLineContinuation
+
+"NUMBERS (4.1)
+syn match nsisNumber "\<[1-9]\d*\>"
+syn match nsisNumber "\<0x\x\+\>"
+syn match nsisNumber "\<0\o*\>"
+
+"STRING REPLACEMENT (5.4, 4.9.15.2, 5.3.1)
+syn region nsisPreprocSubst start="\${" end="}" contains=nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar
+syn region nsisPreprocLangStr start="\$(" end=")" contains=nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar
+syn region nsisPreprocEnvVar start="\$%" end="%" contains=nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar
+
+"VARIABLES (4.2.2)
+syn match nsisUserVar "$\d"
+syn match nsisUserVar "$R\d"
+syn match nsisSysVar "$INSTDIR"
+syn match nsisSysVar "$OUTDIR"
+syn match nsisSysVar "$CMDLINE"
+syn match nsisSysVar "$LANGUAGE"
+"CONSTANTS (4.2.3)
+syn match nsisSysVar "$PROGRAMFILES"
+syn match nsisSysVar "$PROGRAMFILES32"
+syn match nsisSysVar "$PROGRAMFILES64"
+syn match nsisSysVar "$COMMONFILES"
+syn match nsisSysVar "$COMMONFILES32"
+syn match nsisSysVar "$COMMONFILES64"
+syn match nsisSysVar "$DESKTOP"
+syn match nsisSysVar "$EXEDIR"
+syn match nsisSysVar "$EXEFILE"
+syn match nsisSysVar "$EXEPATH"
+syn match nsisSysVar "${NSISDIR}"
+syn match nsisSysVar "$WINDIR"
+syn match nsisSysVar "$SYSDIR"
+syn match nsisSysVar "$TEMP"
+syn match nsisSysVar "$STARTMENU"
+syn match nsisSysVar "$SMPROGRAMS"
+syn match nsisSysVar "$SMSTARTUP"
+syn match nsisSysVar "$QUICKLAUNCH"
+syn match nsisSysVar "$DOCUMENTS"
+syn match nsisSysVar "$SENDTO"
+syn match nsisSysVar "$RECENT"
+syn match nsisSysVar "$FAVORITES"
+syn match nsisSysVar "$MUSIC"
+syn match nsisSysVar "$PICTURES"
+syn match nsisSysVar "$VIDEOS"
+syn match nsisSysVar "$NETHOOD"
+syn match nsisSysVar "$FONTS"
+syn match nsisSysVar "$TEMPLATES"
+syn match nsisSysVar "$APPDATA"
+syn match nsisSysVar "$LOCALAPPDATA"
+syn match nsisSysVar "$PRINTHOOD"
+syn match nsisSysVar "$INTERNET_CACHE"
+syn match nsisSysVar "$COOKIES"
+syn match nsisSysVar "$HISTORY"
+syn match nsisSysVar "$PROFILE"
+syn match nsisSysVar "$ADMINTOOLS"
+syn match nsisSysVar "$RESOURCES"
+syn match nsisSysVar "$RESOURCES_LOCALIZED"
+syn match nsisSysVar "$CDBURN_AREA"
+syn match nsisSysVar "$HWNDPARENT"
+syn match nsisSysVar "$PLUGINSDIR"
+syn match nsisSysVar "$\%(USERTEMPLATES\|USERSTARTMENU\|USERSMPROGRAMS\|USERDESKTOP\)"
+syn match nsisSysVar "$\%(COMMONTEMPLATES\|COMMONSTARTMENU\|COMMONSMPROGRAMS\|COMMONDESKTOP\|COMMONPROGRAMDATA\)"
+syn match nsisSysVar "$\\r"
+syn match nsisSysVar "$\\n"
+syn match nsisSysVar "$\\t"
+syn match nsisSysVar "$\$"
+syn match nsisSysVar "$\\["'`]"
+
+"LABELS (4.3)
+syn match nsisLocalLabel contained "[^-+!$0-9;"'#. \t/*][^ \t:;#]*:\ze\%($\|[ \t;#]\|\/\*\)"
+syn match nsisGlobalLabel contained "\.[^-+!$0-9;"'# \t/*][^ \t:;#]*:\ze\%($\|[ \t;#]\|\/\*\)"
+
+"CONSTANTS
+syn keyword nsisBoolean contained true false
+syn keyword nsisOnOff contained on off
+
+syn keyword nsisRegistry contained HKCR HKLM HKCU HKU HKCC HKDD HKPD SHCTX
+syn keyword nsisRegistry contained HKCR32 HKCR64 HKCU32 HKCU64 HKLM32 HKLM64
+syn keyword nsisRegistry contained HKEY_CLASSES_ROOT HKEY_LOCAL_MACHINE HKEY_CURRENT_USER HKEY_USERS
+syn keyword nsisRegistry contained HKEY_CLASSES_ROOT32 HKEY_CLASSES_ROOT64
+syn keyword nsisRegistry contained HKEY_CURRENT_USER32 HKEY_CURRENT_USER64
+syn keyword nsisRegistry contained HKEY_LOCAL_MACHINE32 HKEY_LOCAL_MACHINE64
+syn keyword nsisRegistry contained HKEY_CURRENT_CONFIG HKEY_DYN_DATA HKEY_PERFORMANCE_DATA
+syn keyword nsisRegistry contained SHELL_CONTEXT
+
+
+" common options
+syn cluster nsisAnyOpt contains=nsisComment,nsisLineContinuation,nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar,nsisUserVar,nsisSysVar,nsisString,nsisNumber
+syn region nsisBooleanOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisBoolean
+syn region nsisOnOffOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisOnOff
+syn region nsisLangOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisLangKwd
+syn match nsisLangKwd contained "/LANG\>"
+syn region nsisFontOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisFontKwd
+syn match nsisFontKwd contained "/\%(ITALIC\|UNDERLINE\|STRIKE\)\>"
+
+"STATEMENTS - pages (4.5)
+syn keyword nsisStatement contained Page UninstPage nextgroup=nsisPageOpt skipwhite
+syn region nsisPageOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPageKwd
+syn keyword nsisPageKwd contained custom license components directory instfiles uninstConfirm
+syn match nsisPageKwd contained "/ENABLECANCEL\>"
+
+syn keyword nsisStatement contained PageEx nextgroup=nsisPageExOpt skipwhite
+syn region nsisPageExOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPageExKwd
+syn match nsisPageExKwd contained "\<\%(un\.\)\?\%(custom\|license\|components\|directory\|instfiles\|uninstConfirm\)\>"
+
+syn keyword nsisStatement contained PageExEnd PageCallbacks
+
+"STATEMENTS - sections (4.6.1)
+syn keyword nsisStatement contained AddSize SectionEnd SectionGroupEnd
+
+syn keyword nsisStatement contained Section nextgroup=nsisSectionOpt skipwhite
+syn region nsisSectionOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSectionKwd
+syn match nsisSectionKwd contained "/o\>"
+
+syn keyword nsisStatement contained SectionInstType SectionIn nextgroup=nsisSectionInOpt skipwhite
+syn region nsisSectionInOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSectionInKwd
+syn keyword nsisSectionInKwd contained RO
+
+syn keyword nsisStatement contained SectionGroup nextgroup=nsisSectionGroupOpt skipwhite
+syn region nsisSectionGroupOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSectionGroupKwd
+syn match nsisSectionGroupKwd contained "/e\>"
+
+"STATEMENTS - functions (4.7.1)
+syn keyword nsisStatement contained Function FunctionEnd
+
+
+"STATEMENTS - LogicLib.nsh
+syn match nsisStatement "${If}"
+syn match nsisStatement "${IfNot}"
+syn match nsisStatement "${Unless}"
+syn match nsisStatement "${ElseIf}"
+syn match nsisStatement "${ElseIfNot}"
+syn match nsisStatement "${ElseUnless}"
+syn match nsisStatement "${Else}"
+syn match nsisStatement "${EndIf}"
+syn match nsisStatement "${EndUnless}"
+syn match nsisStatement "${AndIf}"
+syn match nsisStatement "${AndIfNot}"
+syn match nsisStatement "${AndUnless}"
+syn match nsisStatement "${OrIf}"
+syn match nsisStatement "${OrIfNot}"
+syn match nsisStatement "${OrUnless}"
+syn match nsisStatement "${IfThen}"
+syn match nsisStatement "${IfNotThen}"
+syn match nsisStatement "${||\?}" nextgroup=@nsisPseudoStatement skipwhite
+syn match nsisStatement "${IfCmd}" nextgroup=@nsisPseudoStatement skipwhite
+syn match nsisStatement "${Select}"
+syn match nsisStatement "${Case}"
+syn match nsisStatement "${Case[2-5]}"
+syn match nsisStatement "${CaseElse}"
+syn match nsisStatement "${Default}"
+syn match nsisStatement "${EndSelect}"
+syn match nsisStatement "${Switch}"
+syn match nsisStatement "${EndSwitch}"
+syn match nsisStatement "${Break}"
+syn match nsisStatement "${Do}"
+syn match nsisStatement "${DoWhile}"
+syn match nsisStatement "${DoUntil}"
+syn match nsisStatement "${ExitDo}"
+syn match nsisStatement "${Continue}"
+syn match nsisStatement "${Loop}"
+syn match nsisStatement "${LoopWhile}"
+syn match nsisStatement "${LoopUntil}"
+syn match nsisStatement "${For}"
+syn match nsisStatement "${ForEach}"
+syn match nsisStatement "${ExitFor}"
+syn match nsisStatement "${Next}"
+"STATEMENTS - Memento.nsh
+syn match nsisStatement "${MementoSection}"
+syn match nsisStatement "${MementoSectionEnd}"
+
+
+"USER VARIABLES (4.2.1)
+syn keyword nsisInstruction contained Var nextgroup=nsisVarOpt skipwhite
+syn region nsisVarOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisVarKwd
+syn match nsisVarKwd contained "/GLOBAL\>"
+
+"INSTALLER ATTRIBUTES (4.8.1)
+syn keyword nsisAttribute contained Caption ChangeUI CheckBitmap CompletedText ComponentText
+syn keyword nsisAttribute contained DetailsButtonText DirText DirVar
+syn keyword nsisAttribute contained FileErrorText Icon InstallButtonText
+syn keyword nsisAttribute contained InstallDir InstProgressFlags
+syn keyword nsisAttribute contained LicenseData LicenseText
+syn keyword nsisAttribute contained MiscButtonText Name OutFile
+syn keyword nsisAttribute contained SpaceTexts SubCaption UninstallButtonText UninstallCaption
+syn keyword nsisAttribute contained UninstallIcon UninstallSubCaption UninstallText
+
+syn keyword nsisAttribute contained AddBrandingImage nextgroup=nsisAddBrandingImageOpt skipwhite
+syn region nsisAddBrandingImageOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisAddBrandingImageKwd
+syn keyword nsisAddBrandingImageKwd contained left right top bottom width height
+
+syn keyword nsisAttribute contained nextgroup=nsisBooleanOpt skipwhite
+ \ AllowRootDirInstall AutoCloseWindow
+
+syn keyword nsisAttribute contained BGFont nextgroup=nsisFontOpt skipwhite
+
+syn keyword nsisAttribute contained BGGradient nextgroup=nsisBGGradientOpt skipwhite
+syn region nsisBGGradientOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisBGGradientKwd
+syn keyword nsisBGGradientKwd contained off
+
+syn keyword nsisAttribute contained BrandingText nextgroup=nsisBrandingTextOpt skipwhite
+syn region nsisBrandingTextOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisBrandingTextKwd
+syn match nsisBrandingTextKwd contained "/TRIM\%(LEFT\|RIGHT\|CENTER\)\>"
+
+syn keyword nsisAttribute contained CRCCheck nextgroup=nsisCRCCheckOpt skipwhite
+syn region nsisCRCCheckOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisCRCCheckKwd
+syn keyword nsisCRCCheckKwd contained on off force
+
+syn keyword nsisAttribute contained DirVerify nextgroup=nsisDirVerifyOpt skipwhite
+syn region nsisDirVerifyOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDirVerifyKwd
+syn keyword nsisDirVerifyKwd contained auto leave
+
+syn keyword nsisAttribute contained InstallColors nextgroup=nsisInstallColorsOpt skipwhite
+syn region nsisInstallColorsOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisInstallColorsKwd
+syn match nsisInstallColorsKwd contained "/windows\>"
+
+syn keyword nsisAttribute contained InstallDirRegKey nextgroup=nsisRegistryOpt skipwhite
+
+syn keyword nsisAttribute contained InstType nextgroup=nsisInstTypeOpt skipwhite
+syn region nsisInstTypeOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisInstTypeKwd
+syn match nsisInstTypeKwd contained "/\%(NOCUSTOM\|CUSTOMSTRING\|COMPONENTSONLYONCUSTOM\)\>"
+
+syn keyword nsisAttribute contained LicenseBkColor nextgroup=nsisLicenseBkColorOpt skipwhite
+syn region nsisLicenseBkColorOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisLicenseBkColorKwd
+syn match nsisLicenseBkColorKwd contained "/\%(gray\|windows\)\>"
+
+syn keyword nsisAttribute contained LicenseForceSelection nextgroup=nsisLicenseForceSelectionOpt skipwhite
+syn region nsisLicenseForceSelectionOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisLicenseForceSelectionKwd
+syn keyword nsisLicenseForceSelectionKwd contained checkbox radiobuttons off
+
+syn keyword nsisAttribute contained ManifestDPIAware nextgroup=nsisManifestDPIAwareOpt skipwhite
+syn region nsisManifestDPIAwareOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisManifestDPIAwareKwd
+syn keyword nsisManifestDPIAwareKwd contained notset true false
+
+syn keyword nsisAttribute contained ManifestLongPathAware nextgroup=nsisManifestLongPathAwareOpt skipwhite
+syn region nsisManifestLongPathAwareOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisManifestLongPathAwareKwd
+syn match nsisManifestLongPathAwareKwd contained "\<\%(notset\|true\|false\)\>"
+
+syn keyword nsisAttribute contained ManifestSupportedOS nextgroup=nsisManifestSupportedOSOpt skipwhite
+syn region nsisManifestSupportedOSOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisManifestSupportedOSKwd
+syn match nsisManifestSupportedOSKwd contained "\<\%(none\|all\|WinVista\|Win7\|Win8\|Win8\.1\|Win10\)\>"
+
+syn keyword nsisAttribute contained PEAddResource nextgroup=nsisPEAddResourceOpt skipwhite
+syn region nsisPEAddResourceOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPEAddResourceKwd
+syn match nsisPEAddResourceKwd contained "/\%(OVERWRITE\|REPLACE\)\>"
+
+syn keyword nsisAttribute contained PERemoveResource nextgroup=nsisPERemoveResourceOpt skipwhite
+syn region nsisPERemoveResourceOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPERemoveResourceKwd
+syn match nsisPERemoveResourceKwd contained "/NOERRORS\>"
+
+syn keyword nsisAttribute contained RequestExecutionLevel nextgroup=nsisRequestExecutionLevelOpt skipwhite
+syn region nsisRequestExecutionLevelOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRequestExecutionLevelKwd
+syn keyword nsisRequestExecutionLevelKwd contained none user highest admin
+
+syn keyword nsisAttribute contained SetFont nextgroup=nsisLangOpt skipwhite
+
+syn keyword nsisAttribute contained nextgroup=nsisShowInstDetailsOpt skipwhite
+ \ ShowInstDetails ShowUninstDetails
+syn region nsisShowInstDetailsOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisShowInstDetailsKwd
+syn keyword nsisShowInstDetailsKwd contained hide show nevershow
+
+syn keyword nsisAttribute contained SilentInstall nextgroup=nsisSilentInstallOpt skipwhite
+syn region nsisSilentInstallOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSilentInstallKwd
+syn keyword nsisSilentInstallKwd contained normal silent silentlog
+
+syn keyword nsisAttribute contained SilentUnInstall nextgroup=nsisSilentUnInstallOpt skipwhite
+syn region nsisSilentUnInstallOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSilentUnInstallKwd
+syn keyword nsisSilentUnInstallKwd contained normal silent
+
+syn keyword nsisAttribute contained nextgroup=nsisOnOffOpt skipwhite
+ \ WindowIcon XPStyle
+
+"COMPILER FLAGS (4.8.2)
+syn keyword nsisCompiler contained nextgroup=nsisOnOffOpt skipwhite
+ \ AllowSkipFiles SetDatablockOptimize SetDateSave
+
+syn keyword nsisCompiler contained FileBufSize SetCompressorDictSize
+
+syn keyword nsisCompiler contained SetCompress nextgroup=nsisSetCompressOpt skipwhite
+syn region nsisSetCompressOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetCompressKwd
+syn keyword nsisSetCompressKwd contained auto force off
+
+syn keyword nsisCompiler contained SetCompressor nextgroup=nsisSetCompressorOpt skipwhite
+syn region nsisSetCompressorOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetCompressorKwd
+syn keyword nsisSetCompressorKwd contained zlib bzip2 lzma
+syn match nsisSetCompressorKwd contained "/\%(SOLID\|FINAL\)"
+
+syn keyword nsisCompiler contained SetOverwrite nextgroup=nsisSetOverwriteOpt skipwhite
+syn region nsisSetOverwriteOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetOverwriteKwd
+syn keyword nsisSetOverwriteKwd contained on off try ifnewer ifdiff lastused
+
+syn keyword nsisCompiler contained Unicode nextgroup=nsisBooleanOpt skipwhite
+
+"VERSION INFORMATION (4.8.3)
+syn keyword nsisVersionInfo contained VIAddVersionKey nextgroup=nsisLangOpt skipwhite
+
+syn keyword nsisVersionInfo contained VIProductVersion VIFileVersion
+
+
+"FUNCTIONS - basic (4.9.1)
+syn keyword nsisInstruction contained Delete Rename nextgroup=nsisDeleteOpt skipwhite
+syn region nsisDeleteOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDeleteKwd
+syn match nsisDeleteKwd contained "/REBOOTOK\>"
+
+syn keyword nsisInstruction contained Exec ExecWait SetOutPath
+
+syn keyword nsisInstruction contained ExecShell ExecShellWait nextgroup=nsisExecShellOpt skipwhite
+syn region nsisExecShellOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisExecShellKwd
+syn keyword nsisExecShellKwd contained SW_SHOWDEFAULT SW_SHOWNORMAL SW_SHOWMAXIMIZED SW_SHOWMINIMIZED SW_HIDE
+syn match nsisExecShellKwd contained "/INVOKEIDLIST\>"
+
+syn keyword nsisInstruction contained File nextgroup=nsisFileOpt skipwhite
+syn region nsisFileOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisFileKwd
+syn match nsisFileKwd contained "/\%(nonfatal\|[arx]\|oname\)\>"
+
+syn keyword nsisInstruction contained ReserveFile nextgroup=nsisReserveFileOpt skipwhite
+syn region nsisReserveFileOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisReserveFileKwd
+syn match nsisReserveFileKwd contained "/\%(nonfatal\|[rx]\|plugin\)\>"
+
+syn keyword nsisInstruction contained RMDir nextgroup=nsisRMDirOpt skipwhite
+syn region nsisRMDirOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRMDirKwd
+syn match nsisRMDirKwd contained "/\%(REBOOTOK\|r\)\>"
+
+
+"FUNCTIONS - registry & ini (4.9.2)
+syn keyword nsisInstruction contained DeleteINISec DeleteINIStr FlushINI ReadINIStr WriteINIStr
+syn keyword nsisInstruction contained ExpandEnvStrings ReadEnvStr
+
+syn keyword nsisInstruction contained DeleteRegKey nextgroup=nsisDeleteRegKeyOpt skipwhite
+syn region nsisDeleteRegKeyOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDeleteRegKeyKwd,nsisRegistry
+syn match nsisDeleteRegKeyKwd contained "/\%(ifempty\|ifnosubkeys\|ifnovalues\)\>"
+
+syn keyword nsisInstruction contained nextgroup=nsisRegistryOpt skipwhite
+ \ DeleteRegValue EnumRegKey EnumRegValue ReadRegDWORD ReadRegStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegStr
+syn region nsisRegistryOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRegistry
+
+syn keyword nsisInstruction contained WriteRegMultiStr nextgroup=nsisWriteRegMultiStrOpt skipwhite
+syn region nsisWriteRegMultiStrOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRegistry,nsisWriteRegMultiStrKwd
+syn match nsisWriteRegMultiStrKwd contained "/REGEDIT5\>"
+
+syn keyword nsisInstruction contained SetRegView nextgroup=nsisSetRegViewOpt skipwhite
+syn region nsisSetRegViewOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetRegViewKwd
+syn keyword nsisSetRegViewKwd contained default lastused
+
+"FUNCTIONS - general purpose (4.9.3)
+syn keyword nsisInstruction contained CallInstDLL CreateDirectory GetWinVer
+syn keyword nsisInstruction contained GetFileTime GetFileTimeLocal GetKnownFolderPath
+syn keyword nsisInstruction contained GetTempFileName SearchPath RegDLL UnRegDLL
+
+syn keyword nsisInstruction contained CopyFiles nextgroup=nsisCopyFilesOpt skipwhite
+syn region nsisCopyFilesOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisCopyFilesKwd
+syn match nsisCopyFilesKwd contained "/\%(SILENT\|FILESONLY\)\>"
+
+syn keyword nsisInstruction contained CreateShortcut nextgroup=nsisCreateShortcutOpt skipwhite
+syn region nsisCreateShortcutOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisCreateShortcutKwd
+syn match nsisCreateShortcutKwd contained "/NoWorkingDir\>"
+
+syn keyword nsisInstruction contained GetWinVer nextgroup=nsisGetWinVerOpt skipwhite
+syn region nsisGetWinVerOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisGetWinVerKwd
+syn keyword nsisGetWinVerKwd contained Major Minor Build ServicePack
+
+syn keyword nsisInstruction contained GetDLLVersion GetDLLVersionLocal nextgroup=nsisGetDLLVersionOpt skipwhite
+syn region nsisGetDLLVersionOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisGetDLLVersionKwd
+syn match nsisGetDLLVersionKwd contained "/ProductVersion\>"
+
+syn keyword nsisInstruction contained GetFullPathName nextgroup=nsisGetFullPathNameOpt skipwhite
+syn region nsisGetFullPathNameOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisGetFullPathNameKwd
+syn match nsisGetFullPathNameKwd contained "/SHORT\>"
+
+syn keyword nsisInstruction contained SetFileAttributes nextgroup=nsisSetFileAttributesOpt skipwhite
+syn region nsisSetFileAttributesOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisFileAttrib
+syn keyword nsisFileAttrib contained NORMAL ARCHIVE HIDDEN OFFLINE READONLY SYSTEM TEMPORARY
+syn keyword nsisFileAttrib contained FILE_ATTRIBUTE_NORMAL FILE_ATTRIBUTE_ARCHIVE FILE_ATTRIBUTE_HIDDEN
+syn keyword nsisFileAttrib contained FILE_ATTRIBUTE_OFFLINE FILE_ATTRIBUTE_READONLY FILE_ATTRIBUTE_SYSTEM
+syn keyword nsisFileAttrib contained FILE_ATTRIBUTE_TEMPORARY
+
+"FUNCTIONS - Flow Control (4.9.4)
+syn keyword nsisInstruction contained Abort Call ClearErrors GetCurrentAddress
+syn keyword nsisInstruction contained GetFunctionAddress GetLabelAddress Goto
+syn keyword nsisInstruction contained IfAbort IfErrors IfFileExists IfRebootFlag IfSilent
+syn keyword nsisInstruction contained IfShellVarContextAll IfRtlLanguage
+syn keyword nsisInstruction contained IntCmp IntCmpU Int64Cmp Int64CmpU IntPtrCmp IntPtrCmpU
+syn keyword nsisInstruction contained Return Quit SetErrors StrCmp StrCmpS
+
+syn keyword nsisInstruction contained MessageBox nextgroup=nsisMessageBoxOpt skipwhite
+syn region nsisMessageBoxOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisMessageBox
+syn keyword nsisMessageBox contained MB_OK MB_OKCANCEL MB_ABORTRETRYIGNORE MB_RETRYCANCEL MB_YESNO MB_YESNOCANCEL
+syn keyword nsisMessageBox contained MB_ICONEXCLAMATION MB_ICONINFORMATION MB_ICONQUESTION MB_ICONSTOP MB_USERICON
+syn keyword nsisMessageBox contained MB_TOPMOST MB_SETFOREGROUND MB_RIGHT MB_RTLREADING
+syn keyword nsisMessageBox contained MB_DEFBUTTON1 MB_DEFBUTTON2 MB_DEFBUTTON3 MB_DEFBUTTON4
+syn keyword nsisMessageBox contained IDABORT IDCANCEL IDIGNORE IDNO IDOK IDRETRY IDYES
+syn match nsisMessageBox contained "/SD\>"
+
+"FUNCTIONS - File and directory i/o instructions (4.9.5)
+syn keyword nsisInstruction contained FileClose FileOpen FileRead FileReadUTF16LE
+syn keyword nsisInstruction contained FileReadByte FileReadWord FileSeek FileWrite
+syn keyword nsisInstruction contained FileWriteByte FileWriteWord
+syn keyword nsisInstruction contained FindClose FindFirst FindNext
+
+syn keyword nsisInstruction contained FileWriteUTF16LE nextgroup=nsisFileWriteUTF16LEOpt skipwhite
+syn region nsisFileWriteUTF16LEOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisFileWriteUTF16LEKwd
+syn match nsisFileWriteUTF16LEKwd contained "/BOM\>"
+
+"FUNCTIONS - Uninstaller instructions (4.9.6)
+syn keyword nsisInstruction contained WriteUninstaller
+
+"FUNCTIONS - Misc instructions (4.9.7)
+syn keyword nsisInstruction contained GetErrorLevel GetInstDirError InitPluginsDir Nop
+syn keyword nsisInstruction contained SetErrorLevel Sleep
+
+syn keyword nsisInstruction contained SetShellVarContext nextgroup=nsisSetShellVarContextOpt skipwhite
+syn region nsisSetShellVarContextOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetShellVarContextKwd
+syn keyword nsisSetShellVarContextKwd contained current all
+
+"FUNCTIONS - String manipulation support (4.9.8)
+syn keyword nsisInstruction contained StrCpy StrLen
+
+"FUNCTIONS - Stack support (4.9.9)
+syn keyword nsisInstruction contained Exch Push Pop
+
+"FUNCTIONS - Integer manipulation support (4.9.10)
+syn keyword nsisInstruction contained IntFmt Int64Fmt IntOp IntPtrOp
+
+"FUNCTIONS - Rebooting support (4.9.11)
+syn keyword nsisInstruction contained Reboot SetRebootFlag
+
+"FUNCTIONS - Install logging instructions (4.9.12)
+syn keyword nsisInstruction contained LogSet nextgroup=nsisOnOffOpt skipwhite
+syn keyword nsisInstruction contained LogText
+
+"FUNCTIONS - Section management instructions (4.9.13)
+syn keyword nsisInstruction contained SectionSetFlags SectionGetFlags SectionSetText
+syn keyword nsisInstruction contained SectionGetText SectionSetInstTypes SectionGetInstTypes
+syn keyword nsisInstruction contained SectionSetSize SectionGetSize SetCurInstType GetCurInstType
+syn keyword nsisInstruction contained InstTypeSetText InstTypeGetText
+
+"FUNCTIONS - User Interface Instructions (4.9.14)
+syn keyword nsisInstruction contained BringToFront DetailPrint EnableWindow
+syn keyword nsisInstruction contained FindWindow GetDlgItem HideWindow IsWindow
+syn keyword nsisInstruction contained ShowWindow
+
+syn keyword nsisInstruction contained CreateFont nextgroup=nsisFontOpt skipwhite
+
+syn keyword nsisInstruction contained nextgroup=nsisBooleanOpt skipwhite
+ \ LockWindow SetAutoClose
+
+syn keyword nsisInstruction contained LoadAndSetImage nextgroup=nsisLoadAndSetImageOpt skipwhite
+syn region nsisLoadAndSetImageOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisLoadAndSetImageKwd
+syn match nsisLoadAndSetImageKwd contained "/\%(EXERESOURCE\|STRINGID\|RESIZETOFIT\%(WIDTH\|HEIGHT\)\)\>"
+
+syn keyword nsisInstruction contained SendMessage nextgroup=nsisSendMessageOpt skipwhite
+syn region nsisSendMessageOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSendMessageKwd
+syn match nsisSendMessageKwd contained "/TIMEOUT\>"
+
+syn keyword nsisInstruction contained SetBrandingImage nextgroup=nsisSetBrandingImageOpt skipwhite
+syn region nsisSetBrandingImageOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetBrandingImageKwd
+syn match nsisSetBrandingImageKwd contained "/\%(IMGID\|RESIZETOFIT\)\>"
+
+syn keyword nsisInstruction contained SetDetailsView nextgroup=nsisSetDetailsViewOpt skipwhite
+syn region nsisSetDetailsViewOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetDetailsViewKwd
+syn keyword nsisSetDetailsViewKwd contained show hide
+
+syn keyword nsisInstruction contained SetDetailsPrint nextgroup=nsisSetDetailsPrintOpt skipwhite
+syn region nsisSetDetailsPrintOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetDetailsPrintKwd
+syn keyword nsisSetDetailsPrintKwd contained none listonly textonly both lastused
+
+syn keyword nsisInstruction contained SetCtlColors nextgroup=nsisSetCtlColorsOpt skipwhite
+syn region nsisSetCtlColorsOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetCtlColorsKwd
+syn match nsisSetCtlColorsKwd contained "/BRANDING\>"
+
+syn keyword nsisInstruction contained SetSilent nextgroup=nsisSetSilentOpt skipwhite
+syn region nsisSetSilentOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetSilentKwd
+syn keyword nsisSetSilentKwd contained silent normal
+
+
+"FUNCTIONS - Multiple Languages Instructions (4.9.15)
+syn keyword nsisInstruction contained LoadLanguageFile LangString LicenseLangString
+
+
+"SPECIAL FUNCTIONS - install (4.7.2.1)
+syn match nsisCallback "\.onGUIInit"
+syn match nsisCallback "\.onInit"
+syn match nsisCallback "\.onInstFailed"
+syn match nsisCallback "\.onInstSuccess"
+syn match nsisCallback "\.onGUIEnd"
+syn match nsisCallback "\.onMouseOverSection"
+syn match nsisCallback "\.onRebootFailed"
+syn match nsisCallback "\.onSelChange"
+syn match nsisCallback "\.onUserAbort"
+syn match nsisCallback "\.onVerifyInstDir"
+
+"SPECIAL FUNCTIONS - uninstall (4.7.2.2)
+syn match nsisCallback "un\.onGUIInit"
+syn match nsisCallback "un\.onInit"
+syn match nsisCallback "un\.onUninstFailed"
+syn match nsisCallback "un\.onUninstSuccess"
+syn match nsisCallback "un\.onGUIEnd"
+syn match nsisCallback "un\.onRebootFailed"
+syn match nsisCallback "un\.onSelChange"
+syn match nsisCallback "un\.onUserAbort"
+
+
+"COMPILER UTILITY (5.1)
+syn match nsisInclude contained "!include\>" nextgroup=nsisIncludeOpt skipwhite
+syn region nsisIncludeOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisIncludeKwd
+syn match nsisIncludeKwd contained "/\%(NONFATAL\|CHARSET\)\>"
+
+syn match nsisSystem contained "!addincludedir\>"
+
+syn match nsisSystem contained "!addplugindir\>" nextgroup=nsisAddplugindirOpt skipwhite
+syn region nsisAddplugindirOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisAddplugindirKwd
+syn match nsisAddplugindirKwd contained "/\%(x86-ansi\|x86-unicode\)\>"
+
+syn match nsisSystem contained "!appendfile\>" nextgroup=nsisAppendfileOpt skipwhite
+syn region nsisAppendfileOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisAppendfileKwd
+syn match nsisAppendfileKwd contained "/\%(CHARSET\|RawNL\)\>"
+
+syn match nsisSystem contained "!cd\>"
+
+syn match nsisSystem contained "!delfile\>" nextgroup=nsisDelfileOpt skipwhite
+syn region nsisDelfileOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDelfileKwd
+syn match nsisDelfileKwd contained "/nonfatal\>"
+
+syn match nsisSystem contained "!echo\>"
+syn match nsisSystem contained "!error\>"
+syn match nsisSystem contained "!execute\>"
+syn match nsisSystem contained "!makensis\>"
+syn match nsisSystem contained "!packhdr\>"
+syn match nsisSystem contained "!finalize\>"
+syn match nsisSystem contained "!uninstfinalize\>"
+syn match nsisSystem contained "!system\>"
+syn match nsisSystem contained "!tempfile\>"
+
+" Add 'P' to avoid conflicts with nsisGetDLLVersionOpt. ('P' for preprocessor.)
+syn match nsisSystem contained "!getdllversion\>" nextgroup=nsisPGetdllversionOpt skipwhite
+syn region nsisPGetdllversionOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPGetdllversionKwd
+syn match nsisPGetdllversionKwd contained "/\%(noerrors\|packed\|productversion\)\>"
+
+syn match nsisSystem contained "!gettlbversion\>" nextgroup=nsisPGettlbversionOpt skipwhite
+syn region nsisPGettlbversionOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPGettlbversionKwd
+syn match nsisPGettlbversionKwd contained "/\%(noerrors\|packed\)\>"
+
+syn match nsisSystem contained "!warning\>"
+
+syn match nsisSystem contained "!pragma\>" nextgroup=nsisPragmaOpt skipwhite
+syn region nsisPragmaOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPragmaKwd
+syn keyword nsisPragmaKwd contained enable disable default push pop
+
+syn match nsisSystem contained "!verbose\>" nextgroup=nsisVerboseOpt skipwhite
+syn region nsisVerboseOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisVerboseKwd
+syn keyword nsisVerboseKwd contained push pop
+
+"PREPROCESSOR (5.4)
+syn match nsisDefine contained "!define\>" nextgroup=nsisDefineOpt skipwhite
+syn region nsisDefineOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDefineKwd
+syn match nsisDefineKwd contained "/\%(ifndef\|redef\|date\|utcdate\|file\|intfmt\|math\)\>"
+
+syn match nsisDefine contained "!undef\>" nextgroup=nsisUndefineOpt skipwhite
+syn region nsisUndefineOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisUndefineKwd
+syn match nsisUndefineKwd contained "/noerrors\>"
+
+syn match nsisPreCondit contained "!ifdef\>"
+syn match nsisPreCondit contained "!ifndef\>"
+
+syn match nsisPreCondit contained "!if\>" nextgroup=nsisIfOpt skipwhite
+syn region nsisIfOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisIfKwd
+syn match nsisIfKwd contained "/FileExists\>"
+
+syn match nsisPreCondit contained "!ifmacrodef\>"
+syn match nsisPreCondit contained "!ifmacrondef\>"
+syn match nsisPreCondit contained "!else\>"
+syn match nsisPreCondit contained "!endif\>"
+syn match nsisMacro contained "!insertmacro\>"
+syn match nsisMacro contained "!macro\>"
+syn match nsisMacro contained "!macroend\>"
+syn match nsisMacro contained "!macroundef\>"
+
+syn match nsisMacro contained "!searchparse\>" nextgroup=nsisSearchparseOpt skipwhite
+syn region nsisSearchparseOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSearchparseKwd
+syn match nsisSearchparseKwd contained "/\%(ignorecase\|noerrors\|file\)\>"
+
+syn match nsisMacro contained "!searchreplace\>" nextgroup=nsisSearchreplaceOpt skipwhite
+syn region nsisSearchreplaceOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSearchreplaceKwd
+syn match nsisSearchreplaceKwd contained "/ignorecase\>"
+
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link nsisInstruction Function
+hi def link nsisComment Comment
+hi def link nsisFirstComment Comment
+hi def link nsisLocalLabel Label
+hi def link nsisGlobalLabel Label
+hi def link nsisStatement Statement
+hi def link nsisString String
+hi def link nsisBoolean Boolean
+hi def link nsisOnOff Boolean
+hi def link nsisFontKwd Constant
+hi def link nsisLangKwd Constant
+hi def link nsisPageKwd Constant
+hi def link nsisPageExKwd Constant
+hi def link nsisSectionKwd Constant
+hi def link nsisSectionInKwd Constant
+hi def link nsisSectionGroupKwd Constant
+hi def link nsisVarKwd Constant
+hi def link nsisAddBrandingImageKwd Constant
+hi def link nsisBGGradientKwd Constant
+hi def link nsisBrandingTextKwd Constant
+hi def link nsisCRCCheckKwd Constant
+hi def link nsisDirVerifyKwd Constant
+hi def link nsisInstallColorsKwd Constant
+hi def link nsisInstTypeKwd Constant
+hi def link nsisLicenseBkColorKwd Constant
+hi def link nsisLicenseForceSelectionKwd Constant
+hi def link nsisManifestDPIAwareKwd Constant
+hi def link nsisManifestLongPathAwareKwd Constant
+hi def link nsisManifestSupportedOSKwd Constant
+hi def link nsisPEAddResourceKwd Constant
+hi def link nsisPERemoveResourceKwd Constant
+hi def link nsisRequestExecutionLevelKwd Constant
+hi def link nsisShowInstDetailsKwd Constant
+hi def link nsisSilentInstallKwd Constant
+hi def link nsisSilentUnInstallKwd Constant
+hi def link nsisSetCompressKwd Constant
+hi def link nsisSetCompressorKwd Constant
+hi def link nsisSetOverwriteKwd Constant
+hi def link nsisDeleteKwd Constant
+hi def link nsisExecShellKwd Constant
+hi def link nsisFileKwd Constant
+hi def link nsisReserveFileKwd Constant
+hi def link nsisRMDirKwd Constant
+hi def link nsisDeleteRegKeyKwd Constant
+hi def link nsisWriteRegMultiStrKwd Constant
+hi def link nsisSetRegViewKwd Constant
+hi def link nsisCopyFilesKwd Constant
+hi def link nsisCreateShortcutKwd Constant
+hi def link nsisGetWinVerKwd Constant
+hi def link nsisGetDLLVersionKwd Constant
+hi def link nsisGetFullPathNameKwd Constant
+hi def link nsisFileAttrib Constant
+hi def link nsisMessageBox Constant
+hi def link nsisFileWriteUTF16LEKwd Constant
+hi def link nsisSetShellVarContextKwd Constant
+hi def link nsisLoadAndSetImageKwd Constant
+hi def link nsisSendMessageKwd Constant
+hi def link nsisSetBrandingImageKwd Constant
+hi def link nsisSetDetailsViewKwd Constant
+hi def link nsisSetDetailsPrintKwd Constant
+hi def link nsisSetCtlColorsKwd Constant
+hi def link nsisSetSilentKwd Constant
+hi def link nsisRegistry Identifier
+hi def link nsisNumber Number
+hi def link nsisError Error
+hi def link nsisUserVar Identifier
+hi def link nsisSysVar Identifier
+hi def link nsisAttribute Type
+hi def link nsisCompiler Type
+hi def link nsisVersionInfo Type
+hi def link nsisTodo Todo
+hi def link nsisCallback Identifier
+" preprocessor commands
+hi def link nsisPreprocSubst PreProc
+hi def link nsisPreprocLangStr PreProc
+hi def link nsisPreprocEnvVar PreProc
+hi def link nsisDefine Define
+hi def link nsisMacro Macro
+hi def link nsisPreCondit PreCondit
+hi def link nsisInclude Include
+hi def link nsisSystem PreProc
+hi def link nsisLineContinuation Special
+hi def link nsisIncludeKwd Constant
+hi def link nsisAddplugindirKwd Constant
+hi def link nsisAppendfileKwd Constant
+hi def link nsisDelfileKwd Constant
+hi def link nsisPGetdllversionKwd Constant
+hi def link nsisPGettlbversionKwd Constant
+hi def link nsisPragmaKwd Constant
+hi def link nsisVerboseKwd Constant
+hi def link nsisDefineKwd Constant
+hi def link nsisUndefineKwd Constant
+hi def link nsisIfKwd Constant
+hi def link nsisSearchparseKwd Constant
+hi def link nsisSearchreplaceKwd Constant
+
+
+let b:current_syntax = "nsis"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/obj.vim b/runtime/syntax/obj.vim
new file mode 100644
index 0000000..df4dbca
--- /dev/null
+++ b/runtime/syntax/obj.vim
@@ -0,0 +1,83 @@
+" Vim syntax file
+" Language: 3D wavefront's obj file
+" Maintainer: Vincent Berthoux <twinside@gmail.com>
+" File Types: .obj (used in 3D)
+" Last Change: 2010 May 18
+"
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match objError "^\a\+"
+
+syn match objKeywords "^cstype\s"
+syn match objKeywords "^ctech\s"
+syn match objKeywords "^stech\s"
+syn match objKeywords "^deg\s"
+syn match objKeywords "^curv\(2\?\)\s"
+syn match objKeywords "^parm\s"
+syn match objKeywords "^surf\s"
+syn match objKeywords "^end\s"
+syn match objKeywords "^bzp\s"
+syn match objKeywords "^bsp\s"
+syn match objKeywords "^res\s"
+syn match objKeywords "^cdc\s"
+syn match objKeywords "^con\s"
+
+syn match objKeywords "^shadow_obj\s"
+syn match objKeywords "^trace_obj\s"
+syn match objKeywords "^usemap\s"
+syn match objKeywords "^lod\s"
+syn match objKeywords "^maplib\s"
+syn match objKeywords "^d_interp\s"
+syn match objKeywords "^c_interp\s"
+syn match objKeywords "^bevel\s"
+syn match objKeywords "^mg\s"
+syn match objKeywords "^s\s"
+syn match objKeywords "^con\s"
+syn match objKeywords "^trim\s"
+syn match objKeywords "^hole\s"
+syn match objKeywords "^scrv\s"
+syn match objKeywords "^sp\s"
+syn match objKeywords "^step\s"
+syn match objKeywords "^bmat\s"
+syn match objKeywords "^csh\s"
+syn match objKeywords "^call\s"
+
+syn match objComment "^#.*"
+syn match objVertex "^v\s"
+syn match objFace "^f\s"
+syn match objVertice "^vt\s"
+syn match objNormale "^vn\s"
+syn match objGroup "^g\s.*"
+syn match objMaterial "^usemtl\s.*"
+syn match objInclude "^mtllib\s.*"
+
+syn match objFloat "-\?\d\+\.\d\+\(e\(+\|-\)\d\+\)\?"
+syn match objInt "\d\+"
+syn match objIndex "\d\+\/\d*\/\d*"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link objError Error
+hi def link objComment Comment
+hi def link objInclude PreProc
+hi def link objFloat Float
+hi def link objInt Number
+hi def link objGroup Structure
+hi def link objIndex Constant
+hi def link objMaterial Label
+
+hi def link objVertex Keyword
+hi def link objNormale Keyword
+hi def link objVertice Keyword
+hi def link objFace Keyword
+hi def link objKeywords Keyword
+
+
+
+let b:current_syntax = "obj"
+
+" vim: ts=8
diff --git a/runtime/syntax/objc.vim b/runtime/syntax/objc.vim
new file mode 100644
index 0000000..7c6e2d5
--- /dev/null
+++ b/runtime/syntax/objc.vim
@@ -0,0 +1,534 @@
+" Vim syntax file
+" Language: Objective-C
+" Maintainer: Kazunobu Kuriyama <kazunobu.kuriyama@gmail.com>
+" Last Change: 2020 Jun 07
+" Last Change By Maintainer: 2015 Dec 14
+
+""" Preparation for loading ObjC stuff
+if exists("b:current_syntax")
+ finish
+endif
+if &filetype != 'objcpp'
+ syn clear
+ runtime! syntax/c.vim
+endif
+let s:cpo_save = &cpo
+set cpo&vim
+
+""" ObjC proper stuff follows...
+
+syn keyword objcPreProcMacro __OBJC__ __OBJC2__ __clang__
+
+" Defined Types
+syn keyword objcPrincipalType id Class SEL IMP BOOL instancetype
+syn keyword objcUsefulTerm nil Nil NO YES
+
+" Preprocessor Directives
+syn region objcImported display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match objcImported display contained "\(<\h[-+a-zA-Z0-9_/]*\.h>\|<[a-z0-9]\+>\)"
+syn match objcImport display "^\s*\(%:\|#\)\s*import\>\s*["<]" contains=objcImported
+
+" ObjC Compiler Directives
+syn match objcObjDef display /@interface\>\|@implementation\>\|@end\>\|@class\>/
+syn match objcProtocol display /@protocol\>\|@optional\>\|@required\>/
+syn match objcProperty display /@property\>\|@synthesize\>\|@dynamic\>/
+syn match objcIvarScope display /@private\>\|@protected\>\|@public\>\|@package\>/
+syn match objcInternalRep display /@selector\>\|@encode\>/
+syn match objcException display /@try\>\|@throw\>\|@catch\|@finally\>/
+syn match objcThread display /@synchronized\>/
+syn match objcPool display /@autoreleasepool\>/
+syn match objcModuleImport display /@import\>/
+
+" ObjC Constant Strings
+syn match objcSpecial display contained "%@"
+syn region objcString start=+\(@"\|"\)+ skip=+\\\\\|\\"+ end=+"+ contains=cFormat,cSpecial,objcSpecial
+
+" ObjC Hidden Arguments
+syn keyword objcHiddenArgument self _cmd super
+
+" ObjC Type Qualifiers for Blocks
+syn keyword objcBlocksQualifier __block
+" ObjC Type Qualifiers for Object Lifetime
+syn keyword objcObjectLifetimeQualifier __strong __weak __unsafe_unretained __autoreleasing
+" ObjC Type Qualifiers for Toll-Free Bridge
+syn keyword objcTollFreeBridgeQualifier __bridge __bridge_retained __bridge_transfer
+
+" ObjC Type Qualifiers for Remote Messaging
+syn match objcRemoteMessagingQualifier display contained /\((\s*oneway\s\+\|(\s*in\s\+\|(\s*out\s\+\|(\s*inout\s\+\|(\s*bycopy\s\+\(in\(out\)\?\|out\)\?\|(\s*byref\s\+\(in\(out\)\?\|out\)\?\)/hs=s+1
+
+" ObjC Storage Classes
+syn keyword objcStorageClass _Nullable _Nonnull _Null_unspecified
+syn keyword objcStorageClass __nullable __nonnull __null_unspecified
+syn keyword objcStorageClass nullable nonnull null_unspecified
+
+" ObjC type specifier
+syn keyword objcTypeSpecifier __kindof __covariant
+
+" ObjC Type Information Parameters
+syn keyword objcTypeInfoParams ObjectType KeyType
+
+" shorthand
+syn cluster objcTypeQualifier contains=objcBlocksQualifier,objcObjectLifetimeQualifier,objcTollFreeBridgeQualifier,objcRemoteMessagingQualifier
+
+" ObjC Fast Enumeration
+syn match objcFastEnumKeyword display /\sin\(\s\|$\)/
+
+" ObjC Literal Syntax
+syn match objcLiteralSyntaxNumber display /@\(YES\>\|NO\>\|\d\|-\|+\)/ contains=cNumber,cFloat,cOctal
+syn match objcLiteralSyntaxSpecialChar display /@'/ contains=cSpecialCharacter
+syn match objcLiteralSyntaxChar display /@'[^\\]'/
+syn match objcLiteralSyntaxOp display /@\((\|\[\|{\)/me=e-1,he=e-1
+
+" ObjC Declared Property Attributes
+syn match objDeclPropAccessorNameAssign display /\s*=\s*/ contained
+syn region objcDeclPropAccessorName display start=/\(getter\|setter\)/ end=/\h\w*/ contains=objDeclPropAccessorNameAssign
+syn keyword objcDeclPropAccessorType readonly readwrite contained
+syn keyword objcDeclPropAssignSemantics assign retain copy contained
+syn keyword objcDeclPropAtomicity nonatomic contained
+syn keyword objcDeclPropARC strong weak contained
+syn match objcDeclPropNullable /\((\|\s\)nullable\(,\|)\)/ms=s+1,hs=s+1,me=e-1,he=e-1 contained
+syn match objcDeclPropNonnull /\((\|\s\)nonnull\(,\|)\)/ms=s+1,hs=s+1,me=e-1,he=e-1 contained
+syn match objcDeclPropNullUnspecified /\((\|\s\)null_unspecified\(,\|)\)/ms=s+1,hs=s+1,me=e-1,he=e-1 contained
+syn keyword objcDeclProcNullResettable null_resettable contained
+syn region objcDeclProp display transparent keepend start=/@property\s*(/ end=/)/ contains=objcProperty,objcDeclPropAccessorName,objcDeclPropAccessorType,objcDeclPropAssignSemantics,objcDeclPropAtomicity,objcDeclPropARC,objcDeclPropNullable,objcDeclPropNonnull,objcDeclPropNullUnspecified,objcDeclProcNullResettable
+
+" To distinguish colons in methods and dictionaries from those in C's labels.
+syn match objcColon display /^\s*\h\w*\s*\:\(\s\|.\)/me=e-1,he=e-1
+
+" To distinguish a protocol list from system header files
+syn match objcProtocolList display /<\h\w*\(\s*,\s*\h\w*\)*>/ contains=objcPrincipalType,cType,Type,objcType,objcTypeInfoParams
+
+" Type info for collection classes
+syn match objcTypeInfo display /<\h\w*\s*<\(\h\w*\s*\**\|\h\w*\)>>/ contains=objcPrincipalType,cType,Type,objcType,objcTypeInfoParams
+
+" shorthand
+syn cluster objcCEntities contains=cType,cStructure,cStorageClass,cString,cCharacter,cSpecialCharacter,cNumbers,cConstant,cOperator,cComment,cCommentL,cStatement,cLabel,cConditional,cRepeat
+syn cluster objcObjCEntities contains=objcHiddenArgument,objcPrincipalType,objcString,objcUsefulTerm,objcProtocol,objcInternalRep,objcException,objcThread,objcPool,objcModuleImport,@objcTypeQualifier,objcLiteralSyntaxNumber,objcLiteralSyntaxOp,objcLiteralSyntaxChar,objcLiteralSyntaxSpecialChar,objcProtocolList,objcColon,objcFastEnumKeyword,objcType,objcClass,objcMacro,objcEnum,objcEnumValue,objcExceptionValue,objcNotificationValue,objcConstVar,objcPreProcMacro,objcTypeInfo
+
+" Objective-C Message Expressions
+syn region objcMethodCall start=/\[/ end=/\]/ contains=objcMethodCall,objcBlocks,@objcObjCEntities,@objcCEntities
+
+" To distinguish class method and instance method
+syn match objcInstanceMethod display /^s*-\s*/
+syn match objcClassMethod display /^s*+\s*/
+
+" ObjC Blocks
+syn region objcBlocks start=/\(\^\s*([^)]\+)\s*{\|\^\s*{\)/ end=/}/ contains=objcBlocks,objcMethodCall,@objcObjCEntities,@objcCEntities
+
+syn cluster cParenGroup add=objcMethodCall
+syn cluster cPreProcGroup add=objcMethodCall
+
+""" Foundation Framework
+syn match objcClass /Protocol\s*\*/me=s+8,he=s+8
+
+"""""""""""""""""
+" NSObjCRuntime.h
+syn keyword objcType NSInteger NSUInteger NSComparator
+syn keyword objcEnum NSComparisonResult
+syn keyword objcEnumValue NSOrderedAscending NSOrderedSame NSOrderedDescending
+syn keyword objcEnum NSEnumerationOptions
+syn keyword objcEnumValue NSEnumerationConcurrent NSEnumerationReverse
+syn keyword objcEnum NSSortOptions
+syn keyword objcEnumValue NSSortConcurrent NSSortStable
+syn keyword objcEnumValue NSNotFound
+syn keyword objcMacro NSIntegerMax NSIntegerMin NSUIntegerMax
+syn keyword objcMacro NS_INLINE NS_BLOCKS_AVAILABLE NS_NONATOMIC_IOSONLY NS_FORMAT_FUNCTION NS_FORMAT_ARGUMENT NS_RETURNS_RETAINED NS_RETURNS_NOT_RETAINED NS_RETURNS_INNER_POINTER NS_AUTOMATED_REFCOUNT_UNAVAILABLE NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLE NS_REQUIRES_PROPERTY_DEFINITIONS NS_REPLACES_RECEIVER NS_RELEASES_ARGUMENT NS_VALID_UNTIL_END_OF_SCOPE NS_ROOT_CLASS NS_REQUIRES_SUPER NS_PROTOCOL_REQUIRES_EXPLICIT_IMPLEMENTATION NS_DESIGNATED_INITIALIZER NS_REQUIRES_NIL_TERMINATION
+syn keyword objcEnum NSQualityOfService
+syn keyword objcEnumValue NSQualityOfServiceUserInteractive NSQualityOfServiceUserInitiated NSQualityOfServiceUtility NSQualityOfServiceBackground NSQualityOfServiceDefault
+" NSRange.h
+syn keyword objcType NSRange NSRangePointer
+" NSGeometry.h
+syn keyword objcType NSPoint NSPointPointer NSPointArray NSSize NSSizePointer NSSizeArray NSRect NSRectPointer NSRectArray NSEdgeInsets
+syn keyword objcEnum NSRectEdge
+syn keyword objcEnumValue NSMinXEdge NSMinYEdge NSMaxXEdge NSMaxYEdge
+syn keyword objcEnumValue NSRectEdgeMinX NSRectEdgeMinY NSRectEdgeMaxX NSRectEdgeMaxY
+syn keyword objcConstVar NSZeroPoint NSZeroSize NSZeroRect NSEdgeInsetsZero
+syn keyword cType CGFloat CGPoint CGSize CGRect
+syn keyword objcEnum NSAlignmentOptions
+syn keyword objcEnumValue NSAlignMinXInward NSAlignMinYInward NSAlignMaxXInward NSAlignMaxYInward NSAlignWidthInward NSAlignHeightInward NSAlignMinXOutward NSAlignMinYOutward NSAlignMaxXOutward NSAlignMaxYOutward NSAlignWidthOutward NSAlignHeightOutward NSAlignMinXNearest NSAlignMinYNearest NSAlignMaxXNearest NSAlignMaxYNearest NSAlignWidthNearest NSAlignHeightNearest NSAlignRectFlipped NSAlignAllEdgesInward NSAlignAllEdgesOutward NSAlignAllEdgesNearest
+" NSDecimal.h
+syn keyword objcType NSDecimal
+syn keyword objcEnum NSRoundingMode
+syn keyword objcEnumValue NSRoundPlain NSRoundDown NSRoundUp NSRoundBankers
+syn keyword objcEnum NSCalculationError
+syn keyword objcEnumValue NSCalculationNoError NSCalculationLossOfPrecision NSCalculationUnderflow NSCalculationOverflow NSCalculationDivideByZero
+syn keyword objcConstVar NSDecimalMaxSize NSDecimalNoScale
+" NSDate.h
+syn match objcClass /NSDate\s*\*/me=s+6,he=s+6
+syn keyword objcType NSTimeInterval
+syn keyword objcNotificationValue NSSystemClockDidChangeNotification
+syn keyword objcMacro NSTimeIntervalSince1970
+" NSZone.h
+syn match objcType /NSZone\s*\*/me=s+6,he=s+6
+syn keyword objcEnumValue NSScannedOption NSCollectorDisabledOption
+" NSError.h
+syn match objcClass /NSError\s*\*/me=s+7,he=s+7
+syn keyword objcConstVar NSCocoaErrorDomain NSPOSIXErrorDomain NSOSStatusErrorDomain NSMachErrorDomain NSUnderlyingErrorKey NSLocalizedDescriptionKey NSLocalizedFailureReasonErrorKey NSLocalizedRecoverySuggestionErrorKey NSLocalizedRecoveryOptionsErrorKey NSRecoveryAttempterErrorKey NSHelpAnchorErrorKey NSStringEncodingErrorKey NSURLErrorKey NSFilePathErrorKey
+" NSException.h
+syn match objcClass /NSException\s*\*/me=s+11,he=s+11
+syn match objcClass /NSAssertionHandler\s*\*/me=s+18,he=s+18
+syn keyword objcType NSUncaughtExceptionHandler
+syn keyword objcConstVar NSGenericException NSRangeException NSInvalidArgumentException NSInternalInconsistencyException NSMallocException NSObjectInaccessibleException NSObjectNotAvailableException NSDestinationInvalidException NSPortTimeoutException NSInvalidSendPortException NSInvalidReceivePortException NSPortSendException NSPortReceiveException NSOldStyleException
+" NSNotification.h
+syn match objcClass /NSNotification\s*\*/me=s+14,he=s+14
+syn match objcClass /NSNotificationCenter\s*\*/me=s+20,he=s+20
+" NSDistributedNotificationCenter.h
+syn match objcClass /NSDistributedNotificationCenter\s*\*/me=s+31,he=s+31
+syn keyword objcConstVar NSLocalNotificationCenterType
+syn keyword objcEnum NSNotificationSuspensionBehavior
+syn keyword objcEnumValue NSNotificationSuspensionBehaviorDrop NSNotificationSuspensionBehaviorCoalesce NSNotificationSuspensionBehaviorHold NSNotificationSuspensionBehaviorHold NSNotificationSuspensionBehaviorDeliverImmediately
+syn keyword objcEnumValue NSNotificationDeliverImmediately NSNotificationPostToAllSessions
+syn keyword objcEnum NSDistributedNotificationOptions
+syn keyword objcEnumValue NSDistributedNotificationDeliverImmediately NSDistributedNotificationPostToAllSessions
+" NSNotificationQueue.h
+syn match objcClass /NSNotificationQueue\s*\*/me=s+19,he=s+19
+syn keyword objcEnum NSPostingStyle
+syn keyword objcEnumValue NSPostWhenIdle NSPostASAP NSPostNow
+syn keyword objcEnum NSNotificationCoalescing
+syn keyword objcEnumValue NSNotificationNoCoalescing NSNotificationCoalescingOnName NSNotificationCoalescingOnSender
+" NSEnumerator.h
+syn match objcClass /NSEnumerator\s*\*/me=s+12,he=s+12
+syn match objcClass /NSEnumerator<.*>\s*\*/me=s+12,he=s+12 contains=objcTypeInfoParams
+syn keyword objcType NSFastEnumerationState
+" NSIndexSet.h
+syn match objcClass /NSIndexSet\s*\*/me=s+10,he=s+10
+syn match objcClass /NSMutableIndexSet\s*\*/me=s+17,he=s+17
+" NSCharecterSet.h
+syn match objcClass /NSCharacterSet\s*\*/me=s+14,he=s+14
+syn match objcClass /NSMutableCharacterSet\s*\*/me=s+21,he=s+21
+syn keyword objcConstVar NSOpenStepUnicodeReservedBase
+" NSURL.h
+syn match objcClass /NSURL\s*\*/me=s+5,he=s+5
+syn keyword objcEnum NSURLBookmarkCreationOptions
+syn keyword objcEnumValue NSURLBookmarkCreationPreferFileIDResolution NSURLBookmarkCreationMinimalBookmark NSURLBookmarkCreationSuitableForBookmarkFile NSURLBookmarkCreationWithSecurityScope NSURLBookmarkCreationSecurityScopeAllowOnlyReadAccess
+syn keyword objcEnum NSURLBookmarkResolutionOptions
+syn keyword objcEnumValue NSURLBookmarkResolutionWithoutUI NSURLBookmarkResolutionWithoutMounting NSURLBookmarkResolutionWithSecurityScope
+syn keyword objcType NSURLBookmarkFileCreationOptions
+syn keyword objcConstVar NSURLFileScheme NSURLKeysOfUnsetValuesKey
+syn keyword objcConstVar NSURLNameKey NSURLLocalizedNameKey NSURLIsRegularFileKey NSURLIsDirectoryKey NSURLIsSymbolicLinkKey NSURLIsVolumeKey NSURLIsPackageKey NSURLIsApplicationKey NSURLApplicationIsScriptableKey NSURLIsSystemImmutableKey NSURLIsUserImmutableKey NSURLIsHiddenKey NSURLHasHiddenExtensionKey NSURLCreationDateKey NSURLContentAccessDateKey NSURLContentModificationDateKey NSURLAttributeModificationDateKey NSURLLinkCountKey NSURLParentDirectoryURLKey NSURLVolumeURLKey NSURLTypeIdentifierKey NSURLLocalizedTypeDescriptionKey NSURLLabelNumberKey NSURLLabelColorKey NSURLLocalizedLabelKey NSURLEffectiveIconKey NSURLCustomIconKey NSURLFileResourceIdentifierKey NSURLVolumeIdentifierKey NSURLPreferredIOBlockSizeKey NSURLIsReadableKey NSURLIsWritableKey NSURLIsExecutableKey NSURLFileSecurityKey NSURLIsExcludedFromBackupKey NSURLTagNamesKey NSURLPathKey NSURLIsMountTriggerKey NSURLGenerationIdentifierKey NSURLDocumentIdentifierKey NSURLAddedToDirectoryDateKey NSURLQuarantinePropertiesKey NSURLFileResourceTypeKey
+syn keyword objcConstVar NSURLFileResourceTypeNamedPipe NSURLFileResourceTypeCharacterSpecial NSURLFileResourceTypeDirectory NSURLFileResourceTypeBlockSpecial NSURLFileResourceTypeRegular NSURLFileResourceTypeSymbolicLink NSURLFileResourceTypeSocket NSURLFileResourceTypeUnknown NSURLThumbnailDictionaryKey NSURLThumbnailKey NSThumbnail1024x1024SizeKey
+syn keyword objcConstVar NSURLFileSizeKey NSURLFileAllocatedSizeKey NSURLTotalFileSizeKey NSURLTotalFileAllocatedSizeKey NSURLIsAliasFileKey NSURLFileProtectionKey NSURLFileProtectionNone NSURLFileProtectionComplete NSURLFileProtectionCompleteUnlessOpen NSURLFileProtectionCompleteUntilFirstUserAuthentication
+syn keyword objcConstVar NSURLVolumeLocalizedFormatDescriptionKey NSURLVolumeTotalCapacityKey NSURLVolumeAvailableCapacityKey NSURLVolumeResourceCountKey NSURLVolumeSupportsPersistentIDsKey NSURLVolumeSupportsSymbolicLinksKey NSURLVolumeSupportsHardLinksKey NSURLVolumeSupportsJournalingKey NSURLVolumeIsJournalingKey NSURLVolumeSupportsSparseFilesKey NSURLVolumeSupportsZeroRunsKey NSURLVolumeSupportsCaseSensitiveNamesKey NSURLVolumeSupportsCasePreservedNamesKey NSURLVolumeSupportsRootDirectoryDatesKey NSURLVolumeSupportsVolumeSizesKey NSURLVolumeSupportsRenamingKey NSURLVolumeSupportsAdvisoryFileLockingKey NSURLVolumeSupportsExtendedSecurityKey NSURLVolumeIsBrowsableKey NSURLVolumeMaximumFileSizeKey NSURLVolumeIsEjectableKey NSURLVolumeIsRemovableKey NSURLVolumeIsInternalKey NSURLVolumeIsAutomountedKey NSURLVolumeIsLocalKey NSURLVolumeIsReadOnlyKey NSURLVolumeCreationDateKey NSURLVolumeURLForRemountingKey NSURLVolumeUUIDStringKey NSURLVolumeNameKey NSURLVolumeLocalizedNameKey
+syn keyword objcConstVar NSURLIsUbiquitousItemKey NSURLUbiquitousItemHasUnresolvedConflictsKey NSURLUbiquitousItemIsDownloadedKey NSURLUbiquitousItemIsDownloadingKey NSURLUbiquitousItemIsUploadedKey NSURLUbiquitousItemIsUploadingKey NSURLUbiquitousItemPercentDownloadedKey NSURLUbiquitousItemPercentUploadedKey NSURLUbiquitousItemDownloadingStatusKey NSURLUbiquitousItemDownloadingErrorKey NSURLUbiquitousItemUploadingErrorKey NSURLUbiquitousItemDownloadRequestedKey NSURLUbiquitousItemContainerDisplayNameKey NSURLUbiquitousItemDownloadingStatusNotDownloaded NSURLUbiquitousItemDownloadingStatusDownloaded NSURLUbiquitousItemDownloadingStatusCurrent
+""""""""""""
+" NSString.h
+syn match objcClass /NSString\s*\*/me=s+8,he=s+8
+syn match objcClass /NSMutableString\s*\*/me=s+15,he=s+15
+syn keyword objcType unichar
+syn keyword objcExceptionValue NSParseErrorException NSCharacterConversionException
+syn keyword objcMacro NSMaximumStringLength
+syn keyword objcEnum NSStringCompareOptions
+syn keyword objcEnumValue NSCaseInsensitiveSearch NSLiteralSearch NSBackwardsSearch NSAnchoredSearch NSNumericSearch NSDiacriticInsensitiveSearch NSWidthInsensitiveSearch NSForcedOrderingSearch NSRegularExpressionSearch
+syn keyword objcEnum NSStringEncoding
+syn keyword objcEnumValue NSProprietaryStringEncoding
+syn keyword objcEnumValue NSASCIIStringEncoding NSNEXTSTEPStringEncoding NSJapaneseEUCStringEncoding NSUTF8StringEncoding NSISOLatin1StringEncoding NSSymbolStringEncoding NSNonLossyASCIIStringEncoding NSShiftJISStringEncoding NSISOLatin2StringEncoding NSUnicodeStringEncoding NSWindowsCP1251StringEncoding NSWindowsCP1252StringEncoding NSWindowsCP1253StringEncoding NSWindowsCP1254StringEncoding NSWindowsCP1250StringEncoding NSISO2022JPStringEncoding NSMacOSRomanStringEncoding NSUTF16StringEncoding NSUTF16BigEndianStringEncoding NSUTF16LittleEndianStringEncoding NSUTF32StringEncoding NSUTF32BigEndianStringEncoding NSUTF32LittleEndianStringEncoding
+syn keyword objcEnum NSStringEncodingConversionOptions
+syn keyword objcEnumValue NSStringEncodingConversionAllowLossy NSStringEncodingConversionExternalRepresentation
+syn keyword objcEnum NSStringEnumerationOptions
+syn keyword objcEnumValue NSStringEnumerationByLines NSStringEnumerationByParagraphs NSStringEnumerationByComposedCharacterSequences NSStringEnumerationByWords NSStringEnumerationBySentences NSStringEnumerationReverse NSStringEnumerationSubstringNotRequired NSStringEnumerationLocalized
+syn keyword objcConstVar NSStringTransformLatinToKatakana NSStringTransformLatinToHiragana NSStringTransformLatinToHangul NSStringTransformLatinToArabic NSStringTransformLatinToHebrew NSStringTransformLatinToThai NSStringTransformLatinToCyrillic NSStringTransformLatinToGreek NSStringTransformToLatin NSStringTransformMandarinToLatin NSStringTransformHiraganaToKatakana NSStringTransformFullwidthToHalfwidth NSStringTransformToXMLHex NSStringTransformToUnicodeName NSStringTransformStripCombiningMarks NSStringTransformStripDiacritics
+syn keyword objcConstVar NSStringEncodingDetectionSuggestedEncodingsKey NSStringEncodingDetectionDisallowedEncodingsKey NSStringEncodingDetectionUseOnlySuggestedEncodingsKey NSStringEncodingDetectionAllowLossyKey NSStringEncodingDetectionFromWindowsKey NSStringEncodingDetectionLossySubstitutionKey NSStringEncodingDetectionLikelyLanguageKey
+" NSAttributedString.h
+syn match objcClass /NSAttributedString\s*\*/me=s+18,he=s+18
+syn match objcClass /NSMutableAttributedString\s*\*/me=s+25,he=s+25
+syn keyword objcEnum NSAttributedStringEnumerationOptions
+syn keyword objcEnumValue NSAttributedStringEnumerationReverse NSAttributedStringEnumerationLongestEffectiveRangeNotRequired
+" NSValue.h
+syn match objcClass /NSValue\s*\*/me=s+7,he=s+7
+syn match objcClass /NSNumber\s*\*/me=s+8,he=s+8
+" NSDecimalNumber.h
+syn match objcClass /NSDecimalNumber\s*\*/me=s+15,he=s+15
+syn match objcClass /NSDecimalNumberHandler\s*\*/me=s+22,he=s+22
+syn keyword objcExceptionValue NSDecimalNumberExactnessException NSDecimalNumberOverflowException NSDecimalNumberUnderflowException NSDecimalNumberDivideByZeroException
+" NSData.h
+syn match objcClass /NSData\s*\*/me=s+6,he=s+6
+syn match objcClass /NSMutableData\s*\*/me=s+13,he=s+13
+syn keyword objcEnum NSDataReadingOptions
+syn keyword objcEnumValue NSDataReadingMappedIfSafe NSDataReadingUncached NSDataReadingMappedAlways NSDataReadingMapped NSMappedRead NSUncachedRead
+syn keyword objcEnum NSDataWritingOptions
+syn keyword objcEnumValue NSDataWritingAtomic NSDataWritingWithoutOverwriting NSDataWritingFileProtectionNone NSDataWritingFileProtectionComplete NSDataWritingFileProtectionCompleteUnlessOpen NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication NSDataWritingFileProtectionMask NSAtomicWrite
+syn keyword objcEnum NSDataSearchOptions
+syn keyword objcEnumValue NSDataSearchBackwards NSDataSearchAnchored
+syn keyword objcEnum NSDataBase64EncodingOptions NSDataBase64DecodingOptions
+syn keyword objcEnumValue NSDataBase64Encoding64CharacterLineLength NSDataBase64Encoding76CharacterLineLength NSDataBase64EncodingEndLineWithCarriageReturn NSDataBase64EncodingEndLineWithLineFeed NSDataBase64DecodingIgnoreUnknownCharacters
+" NSArray.h
+syn match objcClass /NSArray\s*\*/me=s+7,he=s+7
+syn match objcClass /NSArray<.*>\s*\*/me=s+7,he=s+7 contains=objcTypeInfoParams
+syn match objcClass /NSMutableArray\s*\*/me=s+14,he=s+14
+syn match objcClass /NSMutableArray<.*>\s*\*/me=s+14,he=s+14 contains=objcTypeInfoParams
+syn keyword objcEnum NSBinarySearchingOptions
+syn keyword objcEnumValue NSBinarySearchingFirstEqual NSBinarySearchingLastEqual NSBinarySearchingInsertionIndex
+" NSDictionary.h
+syn match objcClass /NSDictionary\s*\*/me=s+12,he=s+12
+syn match objcClass /NSDictionary<.*>\s*\*/me=s+12,he=s+12 contains=objcTypeInfoParams
+syn match objcClass /NSMutableDictionary\s*\*/me=s+19,he=s+19
+syn match objcClass /NSMutableDictionary<.*>\s*\*/me=s+19,he=s+19 contains=objcTypeInfoParams
+" NSSet.h
+syn match objcClass /NSSet\s*\*/me=s+5,me=s+5
+syn match objcClass /NSSet<.*>\s*\*/me=s+5,me=s+5 contains=objcTypeInfoParams
+syn match objcClass /NSMutableSet\s*\*/me=s+12,me=s+12
+syn match objcClass /NSMutableSet<.*>\s*\*/me=s+12,me=s+12 contains=objcTypeInfoParams
+syn match objcClass /NSCountedSet\s*\*/me=s+12,me=s+12
+syn match objcClass /NSCountedSet<.*>\s*\*/me=s+12,me=s+12 contains=objcTypeInfoParams
+" NSOrderedSet.h
+syn match objcClass /NSOrderedSet\s*\*/me=s+12,me=s+12
+syn match objcClass /NSOrderedSet<.*>\s*\*/me=s+12,me=s+12 contains=objcTypeInfoParams
+syn match objcClass /NSMutableOrderedSet\s*\*/me=s+19,me=s+19
+syn match objcClass /NSMutableOrderedSet<.*>\s*\*/me=s+19,me=s+19
+"""""""""""""""""""
+" NSPathUtilities.h
+syn keyword objcEnum NSSearchPathDirectory
+syn keyword objcEnumValue NSApplicationDirectory NSDemoApplicationDirectory NSDeveloperApplicationDirectory NSAdminApplicationDirectory NSLibraryDirectory NSDeveloperDirectory NSUserDirectory NSDocumentationDirectory NSDocumentDirectory NSCoreServiceDirectory NSAutosavedInformationDirectory NSDesktopDirectory NSCachesDirectory NSApplicationSupportDirectory NSDownloadsDirectory NSInputMethodsDirectory NSMoviesDirectory NSMusicDirectory NSPicturesDirectory NSPrinterDescriptionDirectory NSSharedPublicDirectory NSPreferencePanesDirectory NSApplicationScriptsDirectory NSItemReplacementDirectory NSAllApplicationsDirectory NSAllLibrariesDirectory NSTrashDirectory
+syn keyword objcEnum NSSearchPathDomainMask
+syn keyword objcEnumValue NSUserDomainMask NSLocalDomainMask NSNetworkDomainMask NSSystemDomainMask NSAllDomainsMask
+" NSFileManger.h
+syn match objcClass /NSFileManager\s*\*/me=s+13,he=s+13
+syn match objcClass /NSDirectoryEnumerator\s*\*/me=s+21,he=s+21 contains=objcTypeInfoParams
+syn match objcClass /NSDirectoryEnumerator<.*>\s*\*/me=s+21,he=s+21
+syn keyword objcEnum NSVolumeEnumerationOptions
+syn keyword objcEnumValue NSVolumeEnumerationSkipHiddenVolumes NSVolumeEnumerationProduceFileReferenceURLs
+syn keyword objcEnum NSURLRelationship
+syn keyword objcEnumValue NSURLRelationshipContains NSURLRelationshipSame NSURLRelationshipOther
+syn keyword objcEnum NSFileManagerUnmountOptions
+syn keyword objcEnumValue NSFileManagerUnmountAllPartitionsAndEjectDisk NSFileManagerUnmountWithoutUI
+syn keyword objcConstVar NSFileManagerUnmountDissentingProcessIdentifierErrorKey
+syn keyword objcEnum NSDirectoryEnumerationOptions
+syn keyword objcEnumValue NSDirectoryEnumerationSkipsSubdirectoryDescendants NSDirectoryEnumerationSkipsPackageDescendants NSDirectoryEnumerationSkipsHiddenFiles
+syn keyword objcEnum NSFileManagerItemReplacementOptions
+syn keyword objcEnumValue NSFileManagerItemReplacementUsingNewMetadataOnly NSFileManagerItemReplacementWithoutDeletingBackupItem
+syn keyword objcNotificationValue NSUbiquityIdentityDidChangeNotification
+syn keyword objcConstVar NSFileType NSFileTypeDirectory NSFileTypeRegular NSFileTypeSymbolicLink NSFileTypeSocket NSFileTypeCharacterSpecial NSFileTypeBlockSpecial NSFileTypeUnknown NSFileSize NSFileModificationDate NSFileReferenceCount NSFileDeviceIdentifier NSFileOwnerAccountName NSFileGroupOwnerAccountName NSFilePosixPermissions NSFileSystemNumber NSFileSystemFileNumber NSFileExtensionHidden NSFileHFSCreatorCode NSFileHFSTypeCode NSFileImmutable NSFileAppendOnly NSFileCreationDate NSFileOwnerAccountID NSFileGroupOwnerAccountID NSFileBusy NSFileProtectionKey NSFileProtectionNone NSFileProtectionComplete NSFileProtectionCompleteUnlessOpen NSFileProtectionCompleteUntilFirstUserAuthentication NSFileSystemSize NSFileSystemFreeSize NSFileSystemNodes NSFileSystemFreeNodes
+" NSFileHandle.h
+syn match objcClass /NSFileHandle\s*\*/me=s+12,he=s+12
+syn keyword objcExceptionValue NSFileHandleOperationException
+syn keyword objcNotificationValue NSFileHandleReadCompletionNotification NSFileHandleReadToEndOfFileCompletionNotification NSFileHandleConnectionAcceptedNotification NSFileHandleDataAvailableNotification NSFileHandleNotificationDataItem NSFileHandleNotificationFileHandleItem NSFileHandleNotificationMonitorModes
+syn match objcClass /NSPipe\s*\*/me=s+6,he=s+6
+""""""""""""
+" NSLocale.h
+syn match objcClass /NSLocale\s*\*/me=s+8,he=s+8
+syn keyword objcEnum NSLocaleLanguageDirection
+syn keyword objcEnumValue NSLocaleLanguageDirectionUnknown NSLocaleLanguageDirectionLeftToRight NSLocaleLanguageDirectionRightToLeft NSLocaleLanguageDirectionTopToBottom NSLocaleLanguageDirectionBottomToTop
+syn keyword objcNotificationValue NSCurrentLocaleDidChangeNotification
+syn keyword objcConstVar NSLocaleIdentifier NSLocaleLanguageCode NSLocaleCountryCode NSLocaleScriptCode NSLocaleVariantCode NSLocaleExemplarCharacterSet NSLocaleCalendar NSLocaleCollationIdentifier NSLocaleUsesMetricSystem NSLocaleMeasurementSystem NSLocaleDecimalSeparator NSLocaleGroupingSeparator NSLocaleCurrencySymbol NSLocaleCurrencyCode NSLocaleCollatorIdentifier NSLocaleQuotationBeginDelimiterKey NSLocaleQuotationEndDelimiterKey NSLocaleAlternateQuotationBeginDelimiterKey NSLocaleAlternateQuotationEndDelimiterKey NSGregorianCalendar NSBuddhistCalendar NSChineseCalendar NSHebrewCalendar NSIslamicCalendar NSIslamicCivilCalendar NSJapaneseCalendar NSRepublicOfChinaCalendar NSPersianCalendar NSIndianCalendar NSISO8601Calendar
+" NSFormatter.h
+syn match objcClass /NSFormatter\s*\*/me=s+11,he=s+11
+syn keyword objcEnum NSFormattingContext NSFormattingUnitStyle
+syn keyword objcEnumValue NSFormattingContextUnknown NSFormattingContextDynamic NSFormattingContextStandalone NSFormattingContextListItem NSFormattingContextBeginningOfSentence NSFormattingContextMiddleOfSentence NSFormattingUnitStyleShort NSFormattingUnitStyleMedium NSFormattingUnitStyleLong
+" NSNumberFormatter.h
+syn match objcClass /NSNumberFormatter\s*\*/me=s+17,he=s+17
+syn keyword objcEnum NSNumberFormatterStyle
+syn keyword objcEnumValue NSNumberFormatterNoStyle NSNumberFormatterDecimalStyle NSNumberFormatterCurrencyStyle NSNumberFormatterPercentStyle NSNumberFormatterScientificStyle NSNumberFormatterSpellOutStyle NSNumberFormatterOrdinalStyle NSNumberFormatterCurrencyISOCodeStyle NSNumberFormatterCurrencyPluralStyle NSNumberFormatterCurrencyAccountingStyle
+syn keyword objcEnum NSNumberFormatterBehavior
+syn keyword objcEnumValue NSNumberFormatterBehaviorDefault NSNumberFormatterBehavior10_0 NSNumberFormatterBehavior10_4
+syn keyword objcEnum NSNumberFormatterPadPosition
+syn keyword objcEnumValue NSNumberFormatterPadBeforePrefix NSNumberFormatterPadAfterPrefix NSNumberFormatterPadBeforeSuffix NSNumberFormatterPadAfterSuffix
+syn keyword objcEnum NSNumberFormatterRoundingMode
+syn keyword objcEnumValue NSNumberFormatterRoundCeiling NSNumberFormatterRoundFloor NSNumberFormatterRoundDown NSNumberFormatterRoundUp NSNumberFormatterRoundHalfEven NSNumberFormatterRoundHalfDown NSNumberFormatterRoundHalfUp
+" NSDateFormatter.h
+syn match objcClass /NSDateFormatter\s*\*/me=s+15,he=s+15
+syn keyword objcEnum NSDateFormatterStyle
+syn keyword objcEnumValue NSDateFormatterNoStyle NSDateFormatterShortStyle NSDateFormatterMediumStyle NSDateFormatterLongStyle NSDateFormatterFullStyle
+syn keyword objcEnum NSDateFormatterBehavior
+syn keyword objcEnumValue NSDateFormatterBehaviorDefault NSDateFormatterBehavior10_0 NSDateFormatterBehavior10_4
+" NSCalendar.h
+syn match objcClass /NSCalendar\s*\*/me=s+10,he=s+10
+syn keyword objcConstVar NSCalendarIdentifierGregorian NSCalendarIdentifierBuddhist NSCalendarIdentifierChinese NSCalendarIdentifierCoptic NSCalendarIdentifierEthiopicAmeteMihret NSCalendarIdentifierEthiopicAmeteAlem NSCalendarIdentifierHebrew NSCalendarIdentifierISO8601 NSCalendarIdentifierIndian NSCalendarIdentifierIslamic NSCalendarIdentifierIslamicCivil NSCalendarIdentifierJapanese NSCalendarIdentifierPersian NSCalendarIdentifierRepublicOfChina NSCalendarIdentifierIslamicTabular NSCalendarIdentifierIslamicUmmAlQura
+syn keyword objcEnum NSCalendarUnit
+syn keyword objcEnumValue NSCalendarUnitEra NSCalendarUnitYear NSCalendarUnitMonth NSCalendarUnitDay NSCalendarUnitHour NSCalendarUnitMinute NSCalendarUnitSecond NSCalendarUnitWeekday NSCalendarUnitWeekdayOrdinal NSCalendarUnitQuarter NSCalendarUnitWeekOfMonth NSCalendarUnitWeekOfYear NSCalendarUnitYearForWeekOfYear NSCalendarUnitNanosecond NSCalendarUnitCalendar NSCalendarUnitTimeZone
+syn keyword objcEnumValue NSEraCalendarUnit NSYearCalendarUnit NSMonthCalendarUnit NSDayCalendarUnit NSHourCalendarUnit NSMinuteCalendarUnit NSSecondCalendarUnit NSWeekCalendarUnit NSWeekdayCalendarUnit NSWeekdayOrdinalCalendarUnit NSQuarterCalendarUnit NSWeekOfMonthCalendarUnit NSWeekOfYearCalendarUnit NSYearForWeekOfYearCalendarUnit NSCalendarCalendarUnit NSTimeZoneCalendarUnit
+syn keyword objcEnumValue NSWrapCalendarComponents NSUndefinedDateComponent NSDateComponentUndefined
+syn match objcClass /NSDateComponents\s*\*/me=s+16,he=s+16
+syn keyword objcEnum NSCalendarOptions
+syn keyword objcEnumValue NSCalendarWrapComponents NSCalendarMatchStrictly NSCalendarSearchBackwards NSCalendarMatchPreviousTimePreservingSmallerUnits NSCalendarMatchNextTimePreservingSmallerUnits NSCalendarMatchNextTime NSCalendarMatchFirst NSCalendarMatchLast
+syn keyword objcConstVar NSCalendarDayChangedNotification
+" NSTimeZone.h
+syn match objcClass /NSTimeZone\s*\*/me=s+10,he=s+10
+syn keyword objcEnum NSTimeZoneNameStyle
+syn keyword objcEnumValue NSTimeZoneNameStyleStandard NSTimeZoneNameStyleShortStandard NSTimeZoneNameStyleDaylightSaving NSTimeZoneNameStyleShortDaylightSaving NSTimeZoneNameStyleGeneric NSTimeZoneNameStyleShortGeneric
+syn keyword objcNotificationValue NSSystemTimeZoneDidChangeNotification
+"""""""""""
+" NSCoder.h
+syn match objcClass /NSCoder\s*\*/me=s+7,he=s+7
+" NSArchiver.h
+syn match objcClass /NSArchiver\s*\*/me=s+10,he=s+10
+syn match objcClass /NSUnarchiver\s*\*/me=s+12,he=s+12
+syn keyword objcExceptionValue NSInconsistentArchiveException
+" NSKeyedArchiver.h
+syn match objcClass /NSKeyedArchiver\s*\*/me=s+15,he=s+15
+syn match objcClass /NSKeyedUnarchiver\s*\*/me=s+17,he=s+17
+syn keyword objcExceptionValue NSInvalidArchiveOperationException NSInvalidUnarchiveOperationException
+syn keyword objcConstVar NSKeyedArchiveRootObjectKey
+""""""""""""""""""
+" NSPropertyList.h
+syn keyword objcEnum NSPropertyListMutabilityOptions
+syn keyword objcEnumValue NSPropertyListImmutable NSPropertyListMutableContainers NSPropertyListMutableContainersAndLeaves
+syn keyword objcEnum NSPropertyListFormat
+syn keyword objcEnumValue NSPropertyListOpenStepFormat NSPropertyListXMLFormat_v1_0 NSPropertyListBinaryFormat_v1_0
+syn keyword objcType NSPropertyListReadOptions NSPropertyListWriteOptions
+" NSUserDefaults.h
+syn match objcClass /NSUserDefaults\s*\*/me=s+14,he=s+14
+syn keyword objcConstVar NSGlobalDomain NSArgumentDomain NSRegistrationDomain
+syn keyword objcNotificationValue NSUserDefaultsDidChangeNotification
+" NSBundle.h
+syn match objcClass /NSBundle\s*\*/me=s+8,he=s+8
+syn keyword objcEnumValue NSBundleExecutableArchitectureI386 NSBundleExecutableArchitecturePPC NSBundleExecutableArchitectureX86_64 NSBundleExecutableArchitecturePPC64
+syn keyword objcNotificationValue NSBundleDidLoadNotification NSLoadedClasses NSBundleResourceRequestLowDiskSpaceNotification
+syn keyword objcConstVar NSBundleResourceRequestLoadingPriorityUrgent
+"""""""""""""""""
+" NSProcessInfo.h
+syn match objcClass /NSProcessInfo\s*\*/me=s+13,he=s+13
+syn keyword objcEnumValue NSWindowsNTOperatingSystem NSWindows95OperatingSystem NSSolarisOperatingSystem NSHPUXOperatingSystem NSMACHOperatingSystem NSSunOSOperatingSystem NSOSF1OperatingSystem
+syn keyword objcType NSOperatingSystemVersion
+syn keyword objcEnum NSActivityOptions NSProcessInfoThermalState
+syn keyword objcEnumValue NSActivityIdleDisplaySleepDisabled NSActivityIdleSystemSleepDisabled NSActivitySuddenTerminationDisabled NSActivityAutomaticTerminationDisabled NSActivityUserInitiated NSActivityUserInitiatedAllowingIdleSystemSleep NSActivityBackground NSActivityLatencyCritical NSProcessInfoThermalStateNominal NSProcessInfoThermalStateFair NSProcessInfoThermalStateSerious NSProcessInfoThermalStateCritical
+syn keyword objcNotificationValue NSProcessInfoThermalStateDidChangeNotification NSProcessInfoPowerStateDidChangeNotification
+" NSTask.h
+syn match objcClass /NSTask\s*\*/me=s+6,he=s+6
+syn keyword objcEnum NSTaskTerminationReason
+syn keyword objcEnumValue NSTaskTerminationReasonExit NSTaskTerminationReasonUncaughtSignal
+syn keyword objcNotificationValue NSTaskDidTerminateNotification
+" NSThread.h
+syn match objcClass /NSThread\s*\*/me=s+8,he=s+8
+syn keyword objcNotificationValue NSWillBecomeMultiThreadedNotification NSDidBecomeSingleThreadedNotification NSThreadWillExitNotification
+" NSLock.h
+syn match objcClass /NSLock\s*\*/me=s+6,he=s+6
+syn match objcClass /NSConditionLock\s*\*/me=s+15,he=s+15
+syn match objcClass /NSRecursiveLock\s*\*/me=s+15,he=s+15
+" NSDictributedLock
+syn match objcClass /NSDistributedLock\s*\*/me=s+17,he=s+17
+" NSOperation.h
+""""""""""""""""
+syn match objcClass /NSOperation\s*\*/me=s+11,he=s+11
+syn keyword objcEnum NSOperationQueuePriority
+syn keyword objcEnumValue NSOperationQueuePriorityVeryLow NSOperationQueuePriorityLow NSOperationQueuePriorityNormal NSOperationQueuePriorityHigh NSOperationQueuePriorityVeryHigh
+syn match objcClass /NSBlockOperation\s*\*/me=s+16,he=s+16
+syn match objcClass /NSInvocationOperation\s*\*/me=s+21,he=s+21
+syn keyword objcExceptionValue NSInvocationOperationVoidResultException NSInvocationOperationCancelledException
+syn match objcClass /NSOperationQueue\s*\*/me=s+16,he=s+16
+syn keyword objcEnumValue NSOperationQueueDefaultMaxConcurrentOperationCount
+" NSConnection.h
+syn match objcClass /NSConnection\s*\*/me=s+12,he=s+12
+syn keyword objcConstVar NSConnectionReplyMode
+syn keyword objcNotificationValue NSConnectionDidDieNotification NSConnectionDidInitializeNotification
+syn keyword objcExceptionValue NSFailedAuthenticationException
+" NSPort.h
+syn match objcClass /NSPort\s*\*/me=s+6,he=s+6
+syn keyword objcType NSSocketNativeHandle
+syn keyword objcNotificationValue NSPortDidBecomeInvalidNotification
+syn match objcClass /NSMachPort\s*\*/me=s+10,he=s+10
+syn keyword objcEnum NSMachPortOptions
+syn keyword objcEnumValue NSMachPortDeallocateNone NSMachPortDeallocateSendRight NSMachPortDeallocateReceiveRight
+syn match objcClass /NSMessagePort\s*\*/me=s+13,he=s+13
+syn match objcClass /NSSocketPort\s*\*/me=s+12,he=s+12
+" NSPortMessage.h
+syn match objcClass /NSPortMessage\s*\*/me=s+13,he=s+13
+" NSDistantObject.h
+syn match objcClass /NSDistantObject\s*\*/me=s+15,he=s+15
+" NSPortNameServer.h
+syn match objcClass /NSPortNameServer\s*\*/me=s+16,he=s+16
+syn match objcClass /NSMessagePortNameServer\s*\*/me=s+23,he=s+23
+syn match objcClass /NSSocketPortNameServer\s*\*/me=s+22,he=s+22
+" NSHost.h
+syn match objcClass /NSHost\s*\*/me=s+6,he=s+6
+" NSInvocation.h
+syn match objcClass /NSInvocation\s*\*/me=s+12,he=s+12
+" NSMethodSignature.h
+syn match objcClass /NSMethodSignature\s*\*/me=s+17,he=s+17
+"""""
+" NSScanner.h
+syn match objcClass /NSScanner\s*\*/me=s+9,he=s+9
+" NSTimer.h
+syn match objcClass /NSTimer\s*\*/me=s+7,he=s+7
+" NSAutoreleasePool.h
+syn match objcClass /NSAutoreleasePool\s*\*/me=s+17,he=s+17
+" NSRunLoop.h
+syn match objcClass /NSRunLoop\s*\*/me=s+9,he=s+9
+syn keyword objcConstVar NSDefaultRunLoopMode NSRunLoopCommonModes
+" NSNull.h
+syn match objcClass /NSNull\s*\*/me=s+6,he=s+6
+" NSProxy.h
+syn match objcClass /NSProxy\s*\*/me=s+7,he=s+7
+" NSObject.h
+syn match objcClass /NSObject\s*\*/me=s+8,he=s+8
+
+
+" NSCache.h
+syn match objcClass /NSCache\s*\*/me=s+7,he=s+7
+syn match objcClass /NSCache<.*>\s*\*/me=s+7,he=s+7 contains=objcTypeInfoParams
+" NSHashTable.h
+syn match objcClass /NSHashTable\s*\*/me=s+11,he=s+11
+syn match objcClass /NSHashTable<.*>\s*\*/me=s+11,he=s+11 contains=objcTypeInfoParams
+syn keyword objcConstVar NSHashTableStrongMemory NSHashTableZeroingWeakMemory NSHashTableCopyIn NSHashTableObjectPointerPersonality NSHashTableWeakMemory
+syn keyword objcType NSHashTableOptions NSHashEnumerator NSHashTableCallBacks
+syn keyword objcConstVar NSIntegerHashCallBacks NSNonOwnedPointerHashCallBacks NSNonRetainedObjectHashCallBacks NSObjectHashCallBacks NSOwnedObjectIdentityHashCallBacks NSOwnedPointerHashCallBacks NSPointerToStructHashCallBacks NSOwnedObjectIdentityHashCallBacks NSOwnedObjectIdentityHashCallBacks NSIntHashCallBacks
+" NSMapTable.h
+syn match objcClass /NSMapTable\s*\*/me=s+10,he=s+10
+syn match objcClass /NSMapTable<.*>\s*\*/me=s+10,he=s+10 contains=objcTypeInfoParams
+syn keyword objcConstVar NSPointerToStructHashCallBacks NSPointerToStructHashCallBacks NSPointerToStructHashCallBacks NSPointerToStructHashCallBacks NSPointerToStructHashCallBacks
+syn keyword objcConstVar NSMapTableStrongMemory NSMapTableZeroingWeakMemory NSMapTableCopyIn NSMapTableObjectPointerPersonality NSMapTableWeakMemory
+syn keyword objcType NSMapTableOptions NSMapEnumerator NSMapTableKeyCallBacks NSMapTableValueCallBacks
+syn keyword objcMacro NSNotAnIntMapKey NSNotAnIntegerMapKey NSNotAPointerMapKey
+syn keyword objcConstVar NSIntegerMapKeyCallBacks NSNonOwnedPointerMapKeyCallBacks NSNonOwnedPointerOrNullMapKeyCallBacks NSNonRetainedObjectMapKeyCallBacks NSObjectMapKeyCallBacks NSOwnedPointerMapKeyCallBacks NSIntMapKeyCallBacks NSIntegerMapValueCallBacks NSNonOwnedPointerMapValueCallBacks NSObjectMapValueCallBacks NSNonRetainedObjectMapValueCallBacks NSOwnedPointerMapValueCallBacks NSIntMapValueCallBacks
+
+" NSPointerFunctions.h
+syn match objcClass /NSPointerFunctions\s*\*/me=s+18,he=s+18
+syn keyword objcEnum NSPointerFunctionsOptions
+syn keyword objcEnumValue NSPointerFunctionsStrongMemory NSPointerFunctionsZeroingWeakMemory NSPointerFunctionsOpaqueMemory NSPointerFunctionsMallocMemory NSPointerFunctionsMachVirtualMemory NSPointerFunctionsWeakMemory NSPointerFunctionsObjectPersonality NSPointerFunctionsOpaquePersonality NSPointerFunctionsObjectPointerPersonality NSPointerFunctionsCStringPersonality NSPointerFunctionsStructPersonality NSPointerFunctionsIntegerPersonality NSPointerFunctionsCopyIn
+
+
+""" Default Highlighting
+hi def link objcPreProcMacro cConstant
+hi def link objcPrincipalType cType
+hi def link objcUsefulTerm cConstant
+hi def link objcImport cInclude
+hi def link objcImported cString
+hi def link objcObjDef cOperator
+hi def link objcProtocol cOperator
+hi def link objcProperty cOperator
+hi def link objcIvarScope cOperator
+hi def link objcInternalRep cOperator
+hi def link objcException cOperator
+hi def link objcThread cOperator
+hi def link objcPool cOperator
+hi def link objcModuleImport cOperator
+hi def link objcSpecial cSpecial
+hi def link objcString cString
+hi def link objcHiddenArgument cStatement
+hi def link objcBlocksQualifier cStorageClass
+hi def link objcObjectLifetimeQualifier cStorageClass
+hi def link objcTollFreeBridgeQualifier cStorageClass
+hi def link objcRemoteMessagingQualifier cStorageClass
+hi def link objcStorageClass cStorageClass
+hi def link objcFastEnumKeyword cStatement
+hi def link objcLiteralSyntaxNumber cNumber
+hi def link objcLiteralSyntaxChar cCharacter
+hi def link objcLiteralSyntaxSpecialChar cCharacter
+hi def link objcLiteralSyntaxOp cOperator
+hi def link objcDeclPropAccessorName cConstant
+hi def link objcDeclPropAccessorType cConstant
+hi def link objcDeclPropAssignSemantics cConstant
+hi def link objcDeclPropAtomicity cConstant
+hi def link objcDeclPropARC cConstant
+hi def link objcDeclPropNullable cConstant
+hi def link objcDeclPropNonnull cConstant
+hi def link objcDeclPropNullUnspecified cConstant
+hi def link objcDeclProcNullResettable cConstant
+hi def link objcInstanceMethod Function
+hi def link objcClassMethod Function
+hi def link objcType cType
+hi def link objcClass cType
+hi def link objcTypeSpecifier cType
+hi def link objcMacro cConstant
+hi def link objcEnum cType
+hi def link objcEnumValue cConstant
+hi def link objcExceptionValue cConstant
+hi def link objcNotificationValue cConstant
+hi def link objcConstVar cConstant
+hi def link objcTypeInfoParams Identifier
+
+""" Final step
+let b:current_syntax = "objc"
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 sw=2 sts=2
diff --git a/runtime/syntax/objcpp.vim b/runtime/syntax/objcpp.vim
new file mode 100644
index 0000000..f11e307
--- /dev/null
+++ b/runtime/syntax/objcpp.vim
@@ -0,0 +1,20 @@
+" Vim syntax file
+" Language: Objective C++
+" Maintainer: Kazunobu Kuriyama <kazunobu.kuriyama@nifty.com>
+" Ex-Maintainer: Anthony Hodsdon <ahodsdon@fastmail.fm>
+" Last Change: 2007 Oct 29
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read in C++ and ObjC syntax files
+runtime! syntax/cpp.vim
+unlet b:current_syntax
+runtime! syntax/objc.vim
+
+syn keyword objCppNonStructure class template namespace transparent contained
+syn keyword objCppNonStatement new delete friend using transparent contained
+
+let b:current_syntax = "objcpp"
diff --git a/runtime/syntax/obse.vim b/runtime/syntax/obse.vim
new file mode 100644
index 0000000..4ff0428
--- /dev/null
+++ b/runtime/syntax/obse.vim
@@ -0,0 +1,3360 @@
+" Vim syntax file
+" Language: Oblivion Language (obl)
+" Original Creator: Ulthar Seramis
+" Maintainer: Kat <katisntgood@gmail.com>
+" Latest Revision: 13 November 2022
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" obse is case insensitive
+syntax case ignore
+
+" Statements {{{
+syn keyword obseStatement set let to skipwhite
+" the second part needs to be separate as to not mess up the next group
+syn match obseStatementTwo ":="
+" }}}
+
+" Regex matched objects {{{
+" these are matched with regex and thus must be set first
+syn match obseNames '\w\+'
+syn match obseScriptNameRegion '\i\+' contained
+syn match obseVariable '\w*\S' contained
+syn match obseReference '\zs\w\+\>\ze\.'
+" }}}
+
+" Operators {{{
+syn match obseOperator "\v\*"
+syn match obseOperator "\v\-"
+syn match obseOperator "\v\+"
+syn match obseOperator "\v\/"
+syn match obseOperator "\v\^"
+syn match obseOperator "\v\="
+syn match obseOperator "\v\>"
+syn match obseOperator "\v\<"
+syn match obseOperator "\v\!"
+syn match obseOperator "\v\&"
+syn match obseOperator "\v\|"
+" }}}
+
+" Numbers {{{
+syn match obseInt '\d\+'
+syn match obseInt '[-+]\d\+'
+syn match obseFloat '\d\+\.\d*'
+syn match obseFloat '[-+]\d\+\.\d*'
+" }}}
+
+" Comments and strings {{{
+syn region obseComment start=";" end="$" keepend fold contains=obseToDo
+syn region obseString start=/"/ end=/"/ keepend fold contains=obseStringFormatting
+syn match obseStringFormatting "%%" contained
+syn match obseStringFormatting "%a" contained
+syn match obseStringFormatting "%B" contained
+syn match obseStringFormatting "%b" contained
+syn match obseStringFormatting "%c" contained
+syn match obseStringFormatting "%e" contained
+syn match obseStringFormatting "%g" contained
+syn match obseStringFormatting "%i" contained
+syn match obseStringFormatting "%k" contained
+syn match obseStringFormatting "%n" contained
+syn match obseStringFormatting "%p" contained
+syn match obseStringFormatting "%ps" contained
+syn match obseStringFormatting "%pp" contained
+syn match obseStringFormatting "%po" contained
+syn match obseStringFormatting "%q" contained
+syn match obseStringFormatting "%r" contained
+syn match obseStringFormatting "%v" contained
+syn match obseStringFormatting "%x" contained
+syn match obseStringFormatting "%z" contained
+syn match obseStringFormatting "%{" contained
+syn match obseStringFormatting "%}" contained
+syn match obseStringFormatting "%\d*.\d*f" contained
+syn match obseStringFormatting "% \d*.\d*f" contained
+syn match obseStringFormatting "%-\d*.\d*f" contained
+syn match obseStringFormatting "%+\d*.\d*f" contained
+syn match obseStringFormatting "%\d*.\d*e" contained
+syn match obseStringFormatting "%-\d*.\d*e" contained
+syn match obseStringFormatting "% \d*.\d*e" contained
+syn match obseStringFormatting "%+\d*.\d*e" contained
+syn keyword obseToDo contained TODO todo Todo ToDo FIXME fixme NOTE note
+" }}}
+
+
+" Conditionals {{{
+syn match obseCondition "If"
+syn match obseCondition "Eval"
+syn match obseCondition "Return"
+syn match obseCondition "EndIf"
+syn match obseCondition "ElseIf"
+syn match obseCondition "Else"
+" }}}
+
+" Repeat loops {{{
+syn match obseRepeat "Label"
+syn match obseRepeat "GoTo"
+syn match obseRepeat "While"
+syn match obseRepeat "Loop"
+syn match obseRepeat "ForEach"
+syn match obseRepeat "Break"
+syn match obseRepeat "Continue"
+" }}}
+
+" Basic Types {{{
+syn keyword obseTypes array_var float int long ref reference short string_var nextgroup=obseNames skipwhite
+syn keyword obseOtherKey Player player playerRef playerREF PlayerRef PlayerREF
+syn keyword obseScriptName ScriptName scriptname Scriptname scn nextgroup=obseScriptNameRegion skipwhite
+syn keyword obseBlock Begin End
+" }}}
+
+" Fold {{{
+setlocal foldmethod=syntax
+syn cluster obseNoFold contains=obseComment,obseString
+syn region obseFoldIfContainer
+ \ start="^\s*\<if\>"
+ \ end="^\s*\<endif\>"
+ \ keepend extend
+ \ containedin=ALLBUT,@obseNoFold
+ \ contains=ALLBUT,obseScriptName,obseScriptNameRegion
+syn region obseFoldIf
+ \ start="^\s*\<if\>"
+ \ end="^\s*\<endif\>"
+ \ fold
+ \ keepend
+ \ contained containedin=obseFoldIfContainer
+ \ nextgroup=obseFoldElseIf,obseFoldElse
+ \ contains=TOP,NONE
+syn region obseFoldElseIf
+ \ start="^\s*\<elseif\>"
+ \ end="^\s*\<endif\>"
+ \ fold
+ \ keepend
+ \ contained containedin=obseFoldIfContainer
+ \ nextgroup=obseFoldElseIf,obseFoldElse
+ \ contains=TOP
+syn region obseFoldElse
+ \ start="^\s*\<else\>"
+ \ end="^\s*\<endif\>"
+ \ fold
+ \ keepend
+ \ contained containedin=obseFoldIfContainer
+ \ contains=TOP
+syn region obseFoldWhile
+ \ start="^\s*\<while\>"
+ \ end="^\s*\<loop\>"
+ \ fold
+ \ keepend extend
+ \ contains=TOP
+ \ containedin=ALLBUT,@obseNoFold
+" fold for loops
+syn region obseFoldFor
+ \ start="^\s*\<foreach\>"
+ \ end="^\s*\<loop\>"
+ \ fold
+ \ keepend extend
+ \ contains=TOP
+ \ containedin=ALLBUT,@obseNoFold
+ \ nextgroup=obseVariable
+" }}}
+
+" Skills and Attributes {{{
+syn keyword skillAttribute
+ \ Strength
+ \ Willpower
+ \ Speed
+ \ Personality
+ \ Intelligence
+ \ Agility
+ \ Endurance
+ \ Luck
+ \ Armorer
+ \ Athletics
+ \ Blade
+ \ Block
+ \ Blunt
+ \ HandToHand
+ \ HeavyArmor
+ \ Alchemy
+ \ Alteration
+ \ Conjuration
+ \ Destruction
+ \ Illusion
+ \ Mysticism
+ \ Restoration
+ \ Acrobatics
+ \ LightArmor
+ \ Marksman
+ \ Mercantile
+ \ Security
+ \ Sneak
+ \ Speechcraft
+" }}}
+
+" Block Types {{{
+syn keyword obseBlockType
+ \ ExitGame
+ \ ExitToMainMenu
+ \ Function
+ \ GameMode
+ \ LoadGame
+ \ MenuMode
+ \ OnActivate
+ \ OnActorDrop
+ \ OnActorEquip
+ \ OnActorUnequip
+ \ OnAdd
+ \ OnAlarm
+ \ OnAlarmTrespass
+ \ OnAlarmVictim
+ \ OnAttack
+ \ OnBlock
+ \ OnBowAttack
+ \ OnClick
+ \ OnClose
+ \ OnCreatePotion
+ \ OnCreateSpell
+ \ OnDeath
+ \ OnDodge
+ \ OnDrinkPotion
+ \ OnDrop
+ \ OnEatIngredient
+ \ OnEnchant
+ \ OnEquip
+ \ OnFallImpact
+ \ OnHealthDamage
+ \ OnHit
+ \ OnHitWith
+ \ OnKnockout
+ \ OnLoad
+ \ OnMagicApply
+ \ OnMagicCast
+ \ OnMagicEffectHit
+ \ OnMagicEffectHit2
+ \ OnMapMarkerAdd
+ \ OnMouseover
+ \ OnMurder
+ \ OnNewGame
+ \ OnOpen
+ \ OnPackageChange
+ \ OnPackageDone
+ \ OnPackageStart
+ \ OnQuestComplete
+ \ OnRecoil
+ \ OnRelease
+ \ OnReset
+ \ OnSaveIni
+ \ OnScriptedSkillUp
+ \ OnScrollCast
+ \ OnSell
+ \ OnSkillUp
+ \ OnSoulTrap
+ \ OnSpellCast
+ \ OnStagger
+ \ OnStartCombat
+ \ OnTrigger
+ \ OnTriggerActor
+ \ OnTriggerMob
+ \ OnUnequip
+ \ OnVampireFeed
+ \ OnWaterDive
+ \ OnWaterSurface
+ \ PostLoadGame
+ \ QQQ
+ \ SaveGame
+ \ ScriptEffectFinish
+ \ ScriptEffectStart
+ \ ScriptEffectUpdate
+" }}}
+
+" Functions {{{
+" CS functions {{{
+syn keyword csFunction
+ \ Activate
+ \ AddAchievement
+ \ AddFlames
+ \ AddItem
+ \ AddScriptPackage
+ \ AddSpell
+ \ AddTopic
+ \ AdvSkill
+ \ AdvancePCLevel
+ \ AdvancePCSkill
+ \ Autosave
+ \ CanHaveFlames
+ \ CanPayCrimeGold
+ \ Cast
+ \ ClearOwnership
+ \ CloseCurrentOblivionGate
+ \ CloseOblivionGate
+ \ CompleteQuest
+ \ CreateFullActorCopy
+ \ DeleteFullActorCopy
+ \ Disable
+ \ DisableLinkedPathPoints
+ \ DisablePlayerControls
+ \ Dispel
+ \ DispelAllSpells
+ \ Drop
+ \ DropMe
+ \ DuplicateAllItems
+ \ DuplicateNPCStats
+ \ Enable
+ \ EnableFastTravel
+ \ EnableLinkedPathPoints
+ \ EnablePlayerControls
+ \ EquipItem
+ \ EssentialDeathReload
+ \ EvaluatePackage
+ \ ForceAV
+ \ ForceActorValue
+ \ ForceCloseOblivionGate
+ \ ForceFlee
+ \ ForceTakeCover
+ \ ForceWeather
+ \ GetAV
+ \ GetActionRef
+ \ GetActorValue
+ \ GetAlarmed
+ \ GetAmountSoldStolen
+ \ GetAngle
+ \ GetArmorRating
+ \ GetArmorRatingUpperBody
+ \ GetAttacked
+ \ GetBarterGold
+ \ GetBaseAV
+ \ GetBaseActorValue
+ \ GetButtonPressed
+ \ GetClassDefaultMatch
+ \ GetClothingValue
+ \ GetContainer
+ \ GetCrime
+ \ GetCrimeGold
+ \ GetCrimeKnown
+ \ GetCurrentAIPackage
+ \ GetCurrentAIProcedure
+ \ GetCurrentTime
+ \ GetCurrentWeatherPercent
+ \ GetDayOfWeek
+ \ GetDead
+ \ GetDeadCount
+ \ GetDestroyed
+ \ GetDetected
+ \ GetDetectionLevel
+ \ GetDisabled
+ \ GetDisposition
+ \ GetDistance
+ \ GetDoorDefaultOpen
+ \ GetEquipped
+ \ GetFactionRank
+ \ GetFactionRankDifference
+ \ GetFactionReaction
+ \ GetFatiguePercentage
+ \ GetForceRun
+ \ GetForceSneak
+ \ GetFriendHit
+ \ GetFurnitureMarkerID
+ \ GetGS
+ \ GetGameSetting
+ \ GetGlobalValue
+ \ GetGold
+ \ GetHeadingAngle
+ \ GetIdleDoneOnce
+ \ GetIgnoreFriendlyHits
+ \ GetInCell
+ \ GetInCellParam
+ \ GetInFaction
+ \ GetInSameCell
+ \ GetInWorldspace
+ \ GetInvestmentGold
+ \ GetIsAlerted
+ \ GetIsClass
+ \ GetIsClassDefault
+ \ GetIsCreature
+ \ GetIsCurrentPackage
+ \ GetIsCurrentWeather
+ \ GetIsGhost
+ \ GetIsID
+ \ GetIsPlayableRace
+ \ GetIsPlayerBirthsign
+ \ GetIsRace
+ \ GetIsReference
+ \ GetIsSex
+ \ GetIsUsedItem
+ \ GetIsUsedItemType
+ \ GetItemCount
+ \ GetKnockedState
+ \ GetLOS
+ \ GetLevel
+ \ GetLockLevel
+ \ GetLocked
+ \ GetMenuHasTrait
+ \ GetName
+ \ GetNoRumors
+ \ GetOffersServicesNow
+ \ GetOpenState
+ \ GetPCExpelled
+ \ GetPCFactionAttack
+ \ GetPCFactionMurder
+ \ GetPCFactionSteal
+ \ GetPCFactionSubmitAuthority
+ \ GetPCFame
+ \ GetPCInFaction
+ \ GetPCInfamy
+ \ GetPCIsClass
+ \ GetPCIsRace
+ \ GetPCIsSex
+ \ GetPCMiscStat
+ \ GetPCSleepHours
+ \ GetPackageTarget
+ \ GetParentRef
+ \ GetPersuasionNumber
+ \ GetPlayerControlsDisabled
+ \ GetPlayerHasLastRiddenHorse
+ \ GetPlayerInSEWorld
+ \ GetPos
+ \ GetQuestRunning
+ \ GetQuestVariable
+ \ GetRandomPercent
+ \ GetRestrained
+ \ GetScale
+ \ GetScriptVariable
+ \ GetSecondsPassed
+ \ GetSelf
+ \ GetShouldAttack
+ \ GetSitting
+ \ GetSleeping
+ \ GetStage
+ \ GetStageDone
+ \ GetStartingAngle
+ \ GetStartingPos
+ \ GetTalkedToPC
+ \ GetTalkedToPCParam
+ \ GetTimeDead
+ \ GetTotalPersuasionNumber
+ \ GetTrespassWarningLevel
+ \ GetUnconscious
+ \ GetUsedItemActivate
+ \ GetUsedItemLevel
+ \ GetVampire
+ \ GetWalkSpeed
+ \ GetWeaponAnimType
+ \ GetWeaponSkillType
+ \ GetWindSpeed
+ \ GoToJail
+ \ HasFlames
+ \ HasMagicEffect
+ \ HasVampireFed
+ \ IsActionRef
+ \ IsActor
+ \ IsActorAVictim
+ \ IsActorDetected
+ \ IsActorEvil
+ \ IsActorUsingATorch
+ \ IsActorsAIOff
+ \ IsAnimPlayer
+ \ IsCellOwner
+ \ IsCloudy
+ \ IsContinuingPackagePCNear
+ \ IsCurrentFurnitureObj
+ \ IsCurrentFurnitureRef
+ \ IsEssential
+ \ IsFacingUp
+ \ IsGuard
+ \ IsHorseStolen
+ \ IsIdlePlaying
+ \ IsInCombat
+ \ IsInDangerousWater
+ \ IsInInterior
+ \ IsInMyOwnedCell
+ \ IsLeftUp
+ \ IsOwner
+ \ IsPCAMurderer
+ \ IsPCSleeping
+ \ IsPlayerInJail
+ \ IsPlayerMovingIntoNewSpace
+ \ IsPlayersLastRiddenHorse
+ \ IsPleasant
+ \ IsRaining
+ \ IsRidingHorse
+ \ IsRunning
+ \ IsShieldOut
+ \ IsSneaking
+ \ IsSnowing
+ \ IsSpellTarget
+ \ IsSwimming
+ \ IsTalking
+ \ IsTimePassing
+ \ IsTorchOut
+ \ IsTrespassing
+ \ IsTurnArrest
+ \ IsWaiting
+ \ IsWeaponOut
+ \ IsXBox
+ \ IsYielding
+ \ Kill
+ \ KillActor
+ \ KillAllActors
+ \ Lock
+ \ Look
+ \ LoopGroup
+ \ Message
+ \ MessageBox
+ \ ModAV
+ \ ModActorValue
+ \ ModAmountSoldStolen
+ \ ModBarterGold
+ \ ModCrimeGold
+ \ ModDisposition
+ \ ModFactionRank
+ \ ModFactionReaction
+ \ ModPCAttribute
+ \ ModPCA
+ \ ModPCFame
+ \ ModPCInfamy
+ \ ModPCMiscStat
+ \ ModPCSkill
+ \ ModPCS
+ \ ModScale
+ \ MoveTo
+ \ MoveToMarker
+ \ PCB
+ \ PayFine
+ \ PayFineThief
+ \ PickIdle
+ \ PlaceAtMe
+ \ PlayBink
+ \ PlayGroup
+ \ PlayMagicEffectVisuals
+ \ PlayMagicShaderVisuals
+ \ PlaySound
+ \ PlaySound3D
+ \ PositionCell
+ \ PositionWorld
+ \ PreloadMagicEffect
+ \ PurgeCellBuffers
+ \ PushActorAway
+ \ RefreshTopicList
+ \ ReleaseWeatherOverride
+ \ RemoveAllItems
+ \ RemoveFlames
+ \ RemoveItem
+ \ RemoveMe
+ \ RemoveScriptPackage
+ \ RemoveSpell
+ \ Reset3DState
+ \ ResetFallDamageTimer
+ \ ResetHealth
+ \ ResetInterior
+ \ Resurrect
+ \ Rotate
+ \ SCAOnActor
+ \ SameFaction
+ \ SameFactionAsPC
+ \ SameRace
+ \ SameRaceAsPC
+ \ SameSex
+ \ SameSexAsPC
+ \ Say
+ \ SayTo
+ \ ScriptEffectElapsedSeconds
+ \ SelectPlayerSpell
+ \ SendTrespassAlarm
+ \ SetAV
+ \ SetActorAlpha
+ \ SetActorFullName
+ \ SetActorRefraction
+ \ SetActorValue
+ \ SetActorsAI
+ \ SetAlert
+ \ SetAllReachable
+ \ SetAllVisible
+ \ SetAngle
+ \ SetAtStart
+ \ SetBarterGold
+ \ SetCellFullName
+ \ SetCellOwnership
+ \ SetCellPublicFlag
+ \ SetClass
+ \ SetCrimeGold
+ \ SetDestroyed
+ \ SetDoorDefaultOpen
+ \ SetEssential
+ \ SetFactionRank
+ \ SetFactionReaction
+ \ SetForceRun
+ \ SetForceSneak
+ \ SetGhost
+ \ SetIgnoreFriendlyHits
+ \ SetInCharGen
+ \ SetInvestmentGold
+ \ SetItemValue
+ \ SetLevel
+ \ SetNoAvoidance
+ \ SetNoRumors
+ \ SetOpenState
+ \ SetOwnership
+ \ SetPCExpelled
+ \ SetPCFactionAttack
+ \ SetPCFactionMurder
+ \ SetPCFactionSteal
+ \ SetPCFactionSubmitAuthority
+ \ SetPCFame
+ \ SetPCInfamy
+ \ SetPCSleepHours
+ \ SetPackDuration
+ \ SetPlayerBirthsign
+ \ SetPlayerInSEWorld
+ \ SetPos
+ \ SetQuestObject
+ \ SetRestrained
+ \ SetRigidBodyMass
+ \ SetScale
+ \ SetSceneIsComplex
+ \ SetShowQuestItems
+ \ SetSize
+ \ SetStage
+ \ SetUnconscious
+ \ SetWeather
+ \ ShowBirthsignMenu
+ \ ShowClassMenu
+ \ ShowDialogSubtitles
+ \ ShowEnchantment
+ \ ShowMap
+ \ ShowRaceMenu
+ \ ShowSpellMaking
+ \ SkipAnim
+ \ StartCombat
+ \ StartConversation
+ \ StartQuest
+ \ StopCombat
+ \ StopCombatAlarmOnActor
+ \ StopLook
+ \ StopMagicEffectVisuals
+ \ StopMagicShaderVisuals
+ \ StopQuest
+ \ StopWaiting
+ \ StreamMusic
+ \ This
+ \ ToggleActorsAI
+ \ TrapUpdate
+ \ TriggerHitShader
+ \ UnequipItem
+ \ Unlock
+ \ VampireFeed
+ \ Wait
+ \ WakeUpPC
+ \ WhichServiceMenu
+ \ Yield
+ \ evp
+ \ pms
+ \ saa
+ \ sms
+" }}}
+
+" OBSE Functions {{{
+syn keyword obseFunction
+ \ abs
+ \ acos
+ \ activate2
+ \ actorvaluetocode
+ \ actorvaluetostring
+ \ actorvaluetostringc
+ \ addeffectitem
+ \ addeffectitemc
+ \ addfulleffectitem
+ \ addfulleffectitemc
+ \ additemns
+ \ addmagiceffectcounter
+ \ addmagiceffectcounterc
+ \ addmecounter
+ \ addmecounterc
+ \ addspellns
+ \ addtoleveledlist
+ \ ahammerkey
+ \ animpathincludes
+ \ appendtoname
+ \ asciitochar
+ \ asin
+ \ atan
+ \ atan2
+ \ avstring
+ \ calcleveleditem
+ \ calclevitemnr
+ \ calclevitems
+ \ cancastpower
+ \ cancorpsecheck
+ \ canfasttravelfromworld
+ \ cantraveltomapmarker
+ \ ceil
+ \ chartoascii
+ \ clearactivequest
+ \ clearhotkey
+ \ clearleveledlist
+ \ clearownershipt
+ \ clearplayerslastriddenhorse
+ \ clickmenubutton
+ \ cloneform
+ \ closeallmenus
+ \ closetextinput
+ \ colvec
+ \ comparefemalebipedpath
+ \ comparefemalegroundpath
+ \ comparefemaleiconpath
+ \ compareiconpath
+ \ comparemalebipedpath
+ \ comparemalegroundpath
+ \ comparemaleiconpath
+ \ comparemodelpath
+ \ comparename
+ \ comparenames
+ \ comparescripts
+ \ con_cal
+ \ con_getinisetting
+ \ con_hairtint
+ \ con_loadgame
+ \ con_modwatershader
+ \ con_playerspellbook
+ \ con_quitgame
+ \ con_refreshini
+ \ con_runmemorypass
+ \ con_save
+ \ con_saveini
+ \ con_setcamerafov
+ \ con_setclipdist
+ \ con_setfog
+ \ con_setgamesetting
+ \ con_setgamma
+ \ con_sethdrparam
+ \ con_setimagespaceglow
+ \ con_setinisetting
+ \ con_setskyparam
+ \ con_settargetrefraction
+ \ con_settargetrefractionfire
+ \ con_sexchange
+ \ con_tcl
+ \ con_tfc
+ \ con_tgm
+ \ con_toggleai
+ \ con_togglecombatai
+ \ con_toggledetection
+ \ con_togglemapmarkers
+ \ con_togglemenus
+ \ con_waterdeepcolor
+ \ con_waterreflectioncolor
+ \ con_watershallowcolor
+ \ copyalleffectitems
+ \ copyeyes
+ \ copyfemalebipedpath
+ \ copyfemalegroundpath
+ \ copyfemaleiconpath
+ \ copyhair
+ \ copyiconpath
+ \ copyir
+ \ copymalebipedpath
+ \ copymalegroundpath
+ \ copymaleiconpath
+ \ copymodelpath
+ \ copyname
+ \ copyntheffectitem
+ \ copyrace
+ \ cos
+ \ cosh
+ \ createtempref
+ \ creaturehasnohead
+ \ creaturehasnoleftarm
+ \ creaturehasnomovement
+ \ creaturehasnorightarm
+ \ creaturenocombatinwater
+ \ creatureusesweaponandshield
+ \ dacos
+ \ dasin
+ \ datan
+ \ datan2
+ \ dcos
+ \ dcosh
+ \ debugprint
+ \ deletefrominputtext
+ \ deletereference
+ \ disablecontrol
+ \ disablekey
+ \ disablemouse
+ \ dispatchevent
+ \ dispelnthactiveeffect
+ \ dispelnthae
+ \ dsin
+ \ dsinh
+ \ dtan
+ \ dtanh
+ \ enablecontrol
+ \ enablekey
+ \ enablemouse
+ \ equipitem2
+ \ equipitem2ns
+ \ equipitemns
+ \ equipitemsilent
+ \ equipme
+ \ eval
+ \ evaluatepackage
+ \ eventhandlerexist
+ \ exp
+ \ factionhasspecialcombat
+ \ fileexists
+ \ floor
+ \ fmod
+ \ forcecolumnvector
+ \ forcerowvector
+ \ generateidentitymatrix
+ \ generaterotationmatrix
+ \ generatezeromatrix
+ \ getactiveeffectcasters
+ \ getactiveeffectcodes
+ \ getactiveeffectcount
+ \ getactivemenucomponentid
+ \ getactivemenufilter
+ \ getactivemenumode
+ \ getactivemenuobject
+ \ getactivemenuref
+ \ getactivemenuselection
+ \ getactivequest
+ \ getactiveuicomponentfullname
+ \ getactiveuicomponentid
+ \ getactiveuicomponentname
+ \ getactoralpha
+ \ getactorbaselevel
+ \ getactorlightamount
+ \ getactormaxlevel
+ \ getactormaxswimbreath
+ \ getactorminlevel
+ \ getactorpackages
+ \ getactorsoullevel
+ \ getactorvaluec
+ \ getalchmenuapparatus
+ \ getalchmenuingredient
+ \ getalchmenuingredientcount
+ \ getallies
+ \ getallmodlocaldata
+ \ getaltcontrol2
+ \ getapbowench
+ \ getapench
+ \ getapparatustype
+ \ getappoison
+ \ getarmorar
+ \ getarmortype
+ \ getarrayvariable
+ \ getarrowprojectilebowenchantment
+ \ getarrowprojectileenchantment
+ \ getarrowprojectilepoison
+ \ getattackdamage
+ \ getavc
+ \ getavforbaseactor
+ \ getavforbaseactorc
+ \ getavmod
+ \ getavmodc
+ \ getavskillmastery
+ \ getavskillmasteryc
+ \ getbarteritem
+ \ getbarteritemquantity
+ \ getbaseactorvaluec
+ \ getbaseav2
+ \ getbaseav2c
+ \ getbaseav3
+ \ getbaseav3c
+ \ getbaseitems
+ \ getbaseobject
+ \ getbipediconpath
+ \ getbipedmodelpath
+ \ getbipedslotmask
+ \ getbirthsignspells
+ \ getbookcantbetaken
+ \ getbookisscroll
+ \ getbooklength
+ \ getbookskilltaught
+ \ getbooktext
+ \ getboundingbox
+ \ getboundingradius
+ \ getcalcalllevels
+ \ getcalceachincount
+ \ getcallingscript
+ \ getcellbehavesasexterior
+ \ getcellchanged
+ \ getcellclimate
+ \ getcelldetachtime
+ \ getcellfactionrank
+ \ getcelllighting
+ \ getcellmusictype
+ \ getcellnorthrotation
+ \ getcellresethours
+ \ getcellwatertype
+ \ getchancenone
+ \ getclass
+ \ getclassattribute
+ \ getclassmenuhighlightedclass
+ \ getclassmenuselectedclass
+ \ getclassskill
+ \ getclassskills
+ \ getclassspecialization
+ \ getclimatehasmasser
+ \ getclimatehassecunda
+ \ getclimatemoonphaselength
+ \ getclimatesunrisebegin
+ \ getclimatesunriseend
+ \ getclimatesunsetbegin
+ \ getclimatesunsetend
+ \ getclimatevolatility
+ \ getclosesound
+ \ getcloudspeedlower
+ \ getcloudspeedupper
+ \ getcombatspells
+ \ getcombatstyle
+ \ getcombatstyleacrobaticsdodgechance
+ \ getcombatstyleattackchance
+ \ getcombatstyleattackduringblockmult
+ \ getcombatstyleattacknotunderattackmult
+ \ getcombatstyleattackskillmodbase
+ \ getcombatstyleattackskillmodmult
+ \ getcombatstyleattackunderattackmult
+ \ getcombatstyleblockchance
+ \ getcombatstyleblocknotunderattackmult
+ \ getcombatstyleblockskillmodbase
+ \ getcombatstyleblockskillmodmult
+ \ getcombatstyleblockunderattackmult
+ \ getcombatstylebuffstandoffdist
+ \ getcombatstyledodgebacknotunderattackmult
+ \ getcombatstyledodgebacktimermax
+ \ getcombatstyledodgebacktimermin
+ \ getcombatstyledodgebackunderattackmult
+ \ getcombatstyledodgechance
+ \ getcombatstyledodgefatiguemodbase
+ \ getcombatstyledodgefatiguemodmult
+ \ getcombatstyledodgefwattackingmult
+ \ getcombatstyledodgefwnotattackingmult
+ \ getcombatstyledodgefwtimermax
+ \ getcombatstyledodgefwtimermin
+ \ getcombatstyledodgelrchance
+ \ getcombatstyledodgelrtimermax
+ \ getcombatstyledodgelrtimermin
+ \ getcombatstyledodgenotunderattackmult
+ \ getcombatstyledodgeunderattackmult
+ \ getcombatstyleencumberedspeedmodbase
+ \ getcombatstyleencumberedspeedmodmult
+ \ getcombatstylefleeingdisabled
+ \ getcombatstylegroupstandoffdist
+ \ getcombatstyleh2hbonustoattack
+ \ getcombatstyleholdtimermax
+ \ getcombatstyleholdtimermin
+ \ getcombatstyleidletimermax
+ \ getcombatstyleidletimermin
+ \ getcombatstyleignorealliesinarea
+ \ getcombatstylekobonustoattack
+ \ getcombatstylekobonustopowerattack
+ \ getcombatstylemeleealertok
+ \ getcombatstylepowerattackchance
+ \ getcombatstylepowerattackfatiguemodbase
+ \ getcombatstylepowerattackfatiguemodmult
+ \ getcombatstyleprefersranged
+ \ getcombatstylerangedstandoffdist
+ \ getcombatstylerangemaxmult
+ \ getcombatstylerangeoptimalmult
+ \ getcombatstylerejectsyields
+ \ getcombatstylerushattackchance
+ \ getcombatstylerushattackdistmult
+ \ getcombatstylestaggerbonustoattack
+ \ getcombatstylestaggerbonustopowerattack
+ \ getcombatstyleswitchdistmelee
+ \ getcombatstyleswitchdistranged
+ \ getcombatstylewillyield
+ \ getcombattarget
+ \ getcompletedquests
+ \ getcontainermenuview
+ \ getcontainerrespawns
+ \ getcontrol
+ \ getcreaturebasescale
+ \ getcreaturecombatskill
+ \ getcreatureflies
+ \ getcreaturemagicskill
+ \ getcreaturemodelpaths
+ \ getcreaturereach
+ \ getcreaturesoullevel
+ \ getcreaturesound
+ \ getcreaturesoundbase
+ \ getcreaturestealthskill
+ \ getcreatureswims
+ \ getcreaturetype
+ \ getcreaturewalks
+ \ getcrosshairref
+ \ getcurrentcharge
+ \ getcurrentclimateid
+ \ getcurrenteditorpackage
+ \ getcurrenteventname
+ \ getcurrenthealth
+ \ getcurrentpackage
+ \ getcurrentpackageprocedure
+ \ getcurrentquests
+ \ getcurrentregion
+ \ getcurrentregions
+ \ getcurrentscript
+ \ getcurrentsoullevel
+ \ getcurrentweatherid
+ \ getcursorpos
+ \ getdebugselection
+ \ getdescription
+ \ getdoorteleportrot
+ \ getdoorteleportx
+ \ getdoorteleporty
+ \ getdoorteleportz
+ \ geteditorid
+ \ geteditorsize
+ \ getenchantment
+ \ getenchantmentcharge
+ \ getenchantmentcost
+ \ getenchantmenttype
+ \ getenchmenubaseitem
+ \ getenchmenuenchitem
+ \ getenchmenusoulgem
+ \ getequipmentslot
+ \ getequipmentslotmask
+ \ getequippedcurrentcharge
+ \ getequippedcurrenthealth
+ \ getequippeditems
+ \ getequippedobject
+ \ getequippedtorchtimeleft
+ \ getequippedweaponpoison
+ \ geteyes
+ \ getfactions
+ \ getfalltimer
+ \ getfirstref
+ \ getfirstrefincell
+ \ getfogdayfar
+ \ getfogdaynear
+ \ getfognightfar
+ \ getfognightnear
+ \ getfollowers
+ \ getformfrommod
+ \ getformidstring
+ \ getfps
+ \ getfullgoldvalue
+ \ getgamedifficulty
+ \ getgameloaded
+ \ getgamerestarted
+ \ getgodmode
+ \ getgoldvalue
+ \ getgridstoload
+ \ getgroundsurfacematerial
+ \ gethair
+ \ gethaircolor
+ \ gethdrvalue
+ \ gethidesamulet
+ \ gethidesrings
+ \ gethighactors
+ \ gethorse
+ \ gethotkeyitem
+ \ geticonpath
+ \ getignoresresistance
+ \ getingredient
+ \ getingredientchance
+ \ getinputtext
+ \ getinventoryobject
+ \ getinvrefsforitem
+ \ getitems
+ \ getkeyname
+ \ getkeypress
+ \ getlastcreatedpotion
+ \ getlastcreatedspell
+ \ getlastenchanteditem
+ \ getlastsigilstonecreateditem
+ \ getlastsigilstoneenchanteditem
+ \ getlastss
+ \ getlastsscreated
+ \ getlastssitem
+ \ getlasttransactionitem
+ \ getlasttransactionquantity
+ \ getlastuniquecreatedpotion
+ \ getlastusedsigilstone
+ \ getlevcreaturetemplate
+ \ getleveledspells
+ \ getlevitembylevel
+ \ getlevitemindexbyform
+ \ getlevitemindexbylevel
+ \ getlightduration
+ \ getlightningfrequency
+ \ getlightradius
+ \ getlightrgb
+ \ getlinkeddoor
+ \ getloadedtypearray
+ \ getlocalgravity
+ \ getloopsound
+ \ getlowactors
+ \ getluckmodifiedskill
+ \ getmagiceffectareasound
+ \ getmagiceffectareasoundc
+ \ getmagiceffectbarterfactor
+ \ getmagiceffectbarterfactorc
+ \ getmagiceffectbasecost
+ \ getmagiceffectbasecostc
+ \ getmagiceffectboltsound
+ \ getmagiceffectboltsoundc
+ \ getmagiceffectcastingsound
+ \ getmagiceffectcastingsoundc
+ \ getmagiceffectchars
+ \ getmagiceffectcharsc
+ \ getmagiceffectcode
+ \ getmagiceffectcounters
+ \ getmagiceffectcountersc
+ \ getmagiceffectenchantfactor
+ \ getmagiceffectenchantfactorc
+ \ getmagiceffectenchantshader
+ \ getmagiceffectenchantshaderc
+ \ getmagiceffecthitshader
+ \ getmagiceffecthitshaderc
+ \ getmagiceffecthitsound
+ \ getmagiceffecthitsoundc
+ \ getmagiceffecticon
+ \ getmagiceffecticonc
+ \ getmagiceffectlight
+ \ getmagiceffectlightc
+ \ getmagiceffectmodel
+ \ getmagiceffectmodelc
+ \ getmagiceffectname
+ \ getmagiceffectnamec
+ \ getmagiceffectnumcounters
+ \ getmagiceffectnumcountersc
+ \ getmagiceffectotheractorvalue
+ \ getmagiceffectotheractorvaluec
+ \ getmagiceffectprojectilespeed
+ \ getmagiceffectprojectilespeedc
+ \ getmagiceffectresistvalue
+ \ getmagiceffectresistvaluec
+ \ getmagiceffectschool
+ \ getmagiceffectschoolc
+ \ getmagiceffectusedobject
+ \ getmagiceffectusedobjectc
+ \ getmagicitemeffectcount
+ \ getmagicitemtype
+ \ getmagicprojectilespell
+ \ getmapmarkers
+ \ getmapmarkertype
+ \ getmapmenumarkername
+ \ getmapmenumarkerref
+ \ getmaxav
+ \ getmaxavc
+ \ getmaxlevel
+ \ getmeareasound
+ \ getmeareasoundc
+ \ getmebarterc
+ \ getmebasecost
+ \ getmebasecostc
+ \ getmeboltsound
+ \ getmeboltsoundc
+ \ getmecastingsound
+ \ getmecastingsoundc
+ \ getmecounters
+ \ getmecountersc
+ \ getmeebarter
+ \ getmeebarterc
+ \ getmeenchant
+ \ getmeenchantc
+ \ getmeenchantshader
+ \ getmeenchantshaderc
+ \ getmehitshader
+ \ getmehitshaderc
+ \ getmehitsound
+ \ getmehitsoundc
+ \ getmeicon
+ \ getmeiconc
+ \ getmelight
+ \ getmelightc
+ \ getmemodel
+ \ getmemodelc
+ \ getmename
+ \ getmenamec
+ \ getmenufloatvalue
+ \ getmenumcounters
+ \ getmenumcountersc
+ \ getmenustringvalue
+ \ getmeotheractorvalue
+ \ getmeotheractorvaluec
+ \ getmeprojspeed
+ \ getmeprojspeedc
+ \ getmerchantcontainer
+ \ getmeresistvalue
+ \ getmeresistvaluec
+ \ getmeschool
+ \ getmeschoolc
+ \ getmessageboxtype
+ \ getmeusedobject
+ \ getmeusedobjectc
+ \ getmiddlehighactors
+ \ getmieffectcount
+ \ getminlevel
+ \ getmitype
+ \ getmodelpath
+ \ getmodindex
+ \ getmodlocaldata
+ \ getmousebuttonpress
+ \ getmousebuttonsswapped
+ \ getmpspell
+ \ getnextref
+ \ getnthacitveeffectmagnitude
+ \ getnthactiveeffectactorvalue
+ \ getnthactiveeffectbounditem
+ \ getnthactiveeffectcaster
+ \ getnthactiveeffectcode
+ \ getnthactiveeffectdata
+ \ getnthactiveeffectduration
+ \ getnthactiveeffectenchantobject
+ \ getnthactiveeffectmagicenchantobject
+ \ getnthactiveeffectmagicitem
+ \ getnthactiveeffectmagicitemindex
+ \ getnthactiveeffectmagnitude
+ \ getnthactiveeffectsummonref
+ \ getnthactiveeffecttimeelapsed
+ \ getnthaeav
+ \ getnthaebounditem
+ \ getnthaecaster
+ \ getnthaecode
+ \ getnthaedata
+ \ getnthaeduration
+ \ getnthaeindex
+ \ getnthaemagicenchantobject
+ \ getnthaemagicitem
+ \ getnthaemagnitude
+ \ getnthaesummonref
+ \ getnthaetime
+ \ getnthchildref
+ \ getnthdetectedactor
+ \ getntheffectitem
+ \ getntheffectitemactorvalue
+ \ getntheffectitemarea
+ \ getntheffectitemcode
+ \ getntheffectitemduration
+ \ getntheffectitemmagnitude
+ \ getntheffectitemname
+ \ getntheffectitemrange
+ \ getntheffectitemscript
+ \ getntheffectitemscriptname
+ \ getntheffectitemscriptschool
+ \ getntheffectitemscriptvisualeffect
+ \ getntheiarea
+ \ getntheiav
+ \ getntheicode
+ \ getntheiduration
+ \ getntheimagnitude
+ \ getntheiname
+ \ getntheirange
+ \ getntheiscript
+ \ getntheisschool
+ \ getntheisvisualeffect
+ \ getnthexplicitref
+ \ getnthfaction
+ \ getnthfactionrankname
+ \ getnthfollower
+ \ getnthlevitem
+ \ getnthlevitemcount
+ \ getnthlevitemlevel
+ \ getnthmagiceffectcounter
+ \ getnthmagiceffectcounterc
+ \ getnthmecounter
+ \ getnthmecounterc
+ \ getnthmodname
+ \ getnthpackage
+ \ getnthplayerspell
+ \ getnthracebonusskill
+ \ getnthracespell
+ \ getnthspell
+ \ getnumchildrefs
+ \ getnumdetectedactors
+ \ getnumericinisetting
+ \ getnumexplicitrefs
+ \ getnumfactions
+ \ getnumfollowers
+ \ getnumitems
+ \ getnumkeyspressed
+ \ getnumlevitems
+ \ getnumloadedmods
+ \ getnumloadedplugins
+ \ getnummousebuttonspressed
+ \ getnumpackages
+ \ getnumranks
+ \ getnumrefs
+ \ getnumrefsincell
+ \ getobjectcharge
+ \ getobjecthealth
+ \ getobjecttype
+ \ getobliviondirectory
+ \ getoblrevision
+ \ getoblversion
+ \ getopenkey
+ \ getopensound
+ \ getowner
+ \ getowningfactionrank
+ \ getowningfactionrequiredrank
+ \ getpackageallowfalls
+ \ getpackageallowswimming
+ \ getpackagealwaysrun
+ \ getpackagealwayssneak
+ \ getpackagearmorunequipped
+ \ getpackagecontinueifpcnear
+ \ getpackagedata
+ \ getpackagedefensivecombat
+ \ getpackagelocationdata
+ \ getpackagelockdoorsatend
+ \ getpackagelockdoorsatlocation
+ \ getpackagelockdoorsatstart
+ \ getpackagemustcomplete
+ \ getpackagemustreachlocation
+ \ getpackagenoidleanims
+ \ getpackageoffersservices
+ \ getpackageonceperday
+ \ getpackagescheduledata
+ \ getpackageskipfalloutbehavior
+ \ getpackagetargetdata
+ \ getpackageunlockdoorsatend
+ \ getpackageunlockdoorsatlocation
+ \ getpackageunlockdoorsatstart
+ \ getpackageusehorse
+ \ getpackageweaponsunequipped
+ \ getparentcell
+ \ getparentcellowner
+ \ getparentcellowningfactionrank
+ \ getparentcellowningfactionrequiredrank
+ \ getparentcellwaterheight
+ \ getparentworldspace
+ \ getpathnodelinkedref
+ \ getpathnodepos
+ \ getpathnodesinradius
+ \ getpathnodesinrect
+ \ getpcattributebonus
+ \ getpcattributebonusc
+ \ getpclastdroppeditem
+ \ getpclastdroppeditemref
+ \ getpclasthorse
+ \ getpclastloaddoor
+ \ getpcmajorskillups
+ \ getpcmovementspeedmodifier
+ \ getpcspelleffectivenessmodifier
+ \ getpctrainingsessionsused
+ \ getplayerbirthsign
+ \ getplayerskilladvances
+ \ getplayerskilladvancesc
+ \ getplayerskilluse
+ \ getplayerskillusec
+ \ getplayerslastactivatedloaddoor
+ \ getplayerslastriddenhorse
+ \ getplayerspell
+ \ getplayerspellcount
+ \ getpluginversion
+ \ getplyerspellcount
+ \ getprocesslevel
+ \ getprojectile
+ \ getprojectiledistancetraveled
+ \ getprojectilelifetime
+ \ getprojectilesource
+ \ getprojectilespeed
+ \ getprojectiletype
+ \ getqmcurrent
+ \ getqmitem
+ \ getqmmaximum
+ \ getqr
+ \ getquality
+ \ getquantitymenucurrentquantity
+ \ getquantitymenuitem
+ \ getquantitymenumaximumquantity
+ \ getrace
+ \ getraceattribute
+ \ getraceattributec
+ \ getracedefaulthair
+ \ getraceeyes
+ \ getracehairs
+ \ getracereaction
+ \ getracescale
+ \ getraceskillbonus
+ \ getraceskillbonusc
+ \ getracespellcount
+ \ getracevoice
+ \ getraceweight
+ \ getrawformidstring
+ \ getrefcount
+ \ getrefvariable
+ \ getrequiredskillexp
+ \ getrequiredskillexpc
+ \ getrider
+ \ getscript
+ \ getscriptactiveeffectindex
+ \ getselectedspells
+ \ getservicesmask
+ \ getsigilstoneuses
+ \ getskillgoverningattribute
+ \ getskillgoverningattributec
+ \ getskillspecialization
+ \ getskillspecializationc
+ \ getskilluseincrement
+ \ getskilluseincrementc
+ \ getsoulgemcapacity
+ \ getsoullevel
+ \ getsoundattenuation
+ \ getsoundplaying
+ \ getsourcemodindex
+ \ getspecialanims
+ \ getspellareaeffectignoreslos
+ \ getspellcount
+ \ getspelldisallowabsorbreflect
+ \ getspelleffectiveness
+ \ getspellexplodeswithnotarget
+ \ getspellhostile
+ \ getspellimmunetosilence
+ \ getspellmagickacost
+ \ getspellmasterylevel
+ \ getspellpcstart
+ \ getspells
+ \ getspellschool
+ \ getspellscripteffectalwaysapplies
+ \ getspelltype
+ \ getstageentries
+ \ getstageids
+ \ getstringgamesetting
+ \ getstringinisetting
+ \ getsundamage
+ \ getsunglare
+ \ gettailmodelpath
+ \ gettargets
+ \ gettelekinesisref
+ \ getteleportcell
+ \ getteleportcellname
+ \ getterrainheight
+ \ gettextinputcontrolpressed
+ \ gettextinputcursorpos
+ \ gettexturepath
+ \ gettilechildren
+ \ gettiletraits
+ \ gettimeleft
+ \ gettotalactiveeffectmagnitude
+ \ gettotalactiveeffectmagnitudec
+ \ gettotalaeabilitymagnitude
+ \ gettotalaeabilitymagnitudec
+ \ gettotalaealchemymagnitude
+ \ gettotalaealchemymagnitudec
+ \ gettotalaeallspellsmagnitude
+ \ gettotalaeallspellsmagnitudec
+ \ gettotalaediseasemagnitude
+ \ gettotalaediseasemagnitudec
+ \ gettotalaeenchantmentmagnitude
+ \ gettotalaeenchantmentmagnitudec
+ \ gettotalaelesserpowermagnitude
+ \ gettotalaelesserpowermagnitudec
+ \ gettotalaemagnitude
+ \ gettotalaemagnitudec
+ \ gettotalaenonabilitymagnitude
+ \ gettotalaenonabilitymagnitudec
+ \ gettotalaepowermagnitude
+ \ gettotalaepowermagnitudec
+ \ gettotalaespellmagnitude
+ \ gettotalaespellmagnitudec
+ \ gettotalpcattributebonus
+ \ gettrainerlevel
+ \ gettrainerskill
+ \ gettransactioninfo
+ \ gettransdelta
+ \ gettravelhorse
+ \ getusedpowers
+ \ getusertime
+ \ getvariable
+ \ getvelocity
+ \ getverticalvelocity
+ \ getwaterheight
+ \ getwatershader
+ \ getweahtercloudspeedupper
+ \ getweaponreach
+ \ getweaponspeed
+ \ getweapontype
+ \ getweatherclassification
+ \ getweathercloudspeedlower
+ \ getweathercloudspeedupper
+ \ getweathercolor
+ \ getweatherfogdayfar
+ \ getweatherfogdaynear
+ \ getweatherfognightfar
+ \ getweatherfognightnear
+ \ getweatherhdrvalue
+ \ getweatherlightningfrequency
+ \ getweatheroverride
+ \ getweathersundamage
+ \ getweathersunglare
+ \ getweathertransdelta
+ \ getweatherwindspeed
+ \ getweight
+ \ getworldparentworld
+ \ getworldspaceparentworldspace
+ \ globalvariableexists
+ \ hammerkey
+ \ hasbeenpickedup
+ \ haseffectshader
+ \ haslowlevelprocessing
+ \ hasmodel
+ \ hasname
+ \ hasnopersuasion
+ \ hasspell
+ \ hastail
+ \ hasvariable
+ \ haswater
+ \ holdkey
+ \ iconpathincludes
+ \ identitymat
+ \ incrementplayerskilluse
+ \ incrementplayerskillusec
+ \ ininvertfasttravel
+ \ insertininputtext
+ \ isactivatable
+ \ isactivator
+ \ isactorrespawning
+ \ isalchemyitem
+ \ isammo
+ \ isanimgroupplaying
+ \ isanimplaying
+ \ isapparatus
+ \ isarmor
+ \ isattacking
+ \ isautomaticdoor
+ \ isbartermenuactive
+ \ isbipediconpathvalid
+ \ isbipedmodelpathvalid
+ \ isblocking
+ \ isbook
+ \ iscantwait
+ \ iscasting
+ \ iscellpublic
+ \ isclassattribute
+ \ isclassattributec
+ \ isclassskill
+ \ isclassskillc
+ \ isclonedform
+ \ isclothing
+ \ isconsoleopen
+ \ iscontainer
+ \ iscontrol
+ \ iscontroldisabled
+ \ iscontrolpressed
+ \ iscreature
+ \ iscreaturebiped
+ \ isdigit
+ \ isdiseased
+ \ isdodging
+ \ isdoor
+ \ isequipped
+ \ isfactionevil
+ \ isfactionhidden
+ \ isfemale
+ \ isflora
+ \ isflying
+ \ isfood
+ \ isformvalid
+ \ isfurniture
+ \ isgamemessagebox
+ \ isglobalcollisiondisabled
+ \ isharvested
+ \ ishiddendoor
+ \ isiconpathvalid
+ \ isinair
+ \ isingredient
+ \ isinoblivion
+ \ isjumping
+ \ iskey
+ \ iskeydisabled
+ \ iskeypressed
+ \ iskeypressed2
+ \ iskeypressed3
+ \ isletter
+ \ islight
+ \ islightcarriable
+ \ isloaddoor
+ \ ismagiceffectcanrecover
+ \ ismagiceffectcanrecoverc
+ \ ismagiceffectdetrimental
+ \ ismagiceffectdetrimentalc
+ \ ismagiceffectforenchanting
+ \ ismagiceffectforenchantingc
+ \ ismagiceffectforspellmaking
+ \ ismagiceffectforspellmakingc
+ \ ismagiceffecthostile
+ \ ismagiceffecthostilec
+ \ ismagiceffectmagnitudepercent
+ \ ismagiceffectmagnitudepercentc
+ \ ismagiceffectonselfallowed
+ \ ismagiceffectonselfallowedc
+ \ ismagiceffectontargetallowed
+ \ ismagiceffectontargetallowedc
+ \ ismagiceffectontouchallowed
+ \ ismagiceffectontouchallowedc
+ \ ismagicitemautocalc
+ \ ismajor
+ \ ismajorc
+ \ ismajorref
+ \ ismapmarkervisible
+ \ ismecanrecover
+ \ ismecanrecoverc
+ \ ismedetrimental
+ \ ismedetrimentalc
+ \ ismeforenchanting
+ \ ismeforenchantingc
+ \ ismeforspellmaking
+ \ ismeforspellmakingc
+ \ ismehostile
+ \ ismehostilec
+ \ ismemagnitudepercent
+ \ ismemagnitudepercentc
+ \ ismeonselfallowed
+ \ ismeonselfallowedc
+ \ ismeontargetallowed
+ \ ismeontargetallowedc
+ \ ismeontouchallowed
+ \ ismeontouchallowedc
+ \ isminimalusedoor
+ \ ismiscitem
+ \ ismodelpathvalid
+ \ ismodloaded
+ \ ismovingbackward
+ \ ismovingforward
+ \ ismovingleft
+ \ ismovingright
+ \ isnaked
+ \ isnthactiveeffectapplied
+ \ isntheffectitemscripted
+ \ isntheffectitemscripthostile
+ \ isntheishostile
+ \ isobliviongate
+ \ isoblivioninterior
+ \ isoblivionworld
+ \ isofflimits
+ \ isonground
+ \ ispathnodedisabled
+ \ ispcleveloffset
+ \ ispersistent
+ \ isplayable
+ \ isplayable2
+ \ isplugininstalled
+ \ ispoison
+ \ ispotion
+ \ ispowerattacking
+ \ isprintable
+ \ ispunctuation
+ \ isquestcomplete
+ \ isquestitem
+ \ isracebonusskill
+ \ isracebonusskillc
+ \ israceplayable
+ \ isrecoiling
+ \ isrefdeleted
+ \ isreference
+ \ isrefessential
+ \ isscripted
+ \ issigilstone
+ \ issoulgem
+ \ isspellhostile
+ \ isstaggered
+ \ issummonable
+ \ istaken
+ \ istextinputinuse
+ \ isthirdperson
+ \ isturningleft
+ \ isturningright
+ \ isunderwater
+ \ isunsaferespawns
+ \ isuppercase
+ \ isweapon
+ \ leftshift
+ \ linktodoor
+ \ loadgameex
+ \ log
+ \ log10
+ \ logicaland
+ \ logicalnot
+ \ logicalor
+ \ logicalxor
+ \ magiceffectcodefromchars
+ \ magiceffectfromchars
+ \ magiceffectfromcode
+ \ magiceffectfxpersists
+ \ magiceffectfxpersistsc
+ \ magiceffecthasnoarea
+ \ magiceffecthasnoareac
+ \ magiceffecthasnoduration
+ \ magiceffecthasnodurationc
+ \ magiceffecthasnohiteffect
+ \ magiceffecthasnohiteffectc
+ \ magiceffecthasnoingredient
+ \ magiceffecthasnoingredientc
+ \ magiceffecthasnomagnitude
+ \ magiceffecthasnomagnitudec
+ \ magiceffectusesarmor
+ \ magiceffectusesarmorc
+ \ magiceffectusesattribute
+ \ magiceffectusesattributec
+ \ magiceffectusescreature
+ \ magiceffectusescreaturec
+ \ magiceffectusesotheractorvalue
+ \ magiceffectusesotheractorvaluec
+ \ magiceffectusesskill
+ \ magiceffectusesskillc
+ \ magiceffectusesweapon
+ \ magiceffectusesweaponc
+ \ magichaseffect
+ \ magichaseffectc
+ \ magicitemhaseffect
+ \ magicitemhaseffectcode
+ \ magicitemhaseffectcount
+ \ magicitemhaseffectcountc
+ \ magicitemhaseffectcountcode
+ \ magicitemhaseffectitemscript
+ \ matadd
+ \ matchpotion
+ \ matinv
+ \ matmult
+ \ matrixadd
+ \ matrixdeterminant
+ \ matrixinvert
+ \ matrixmultiply
+ \ matrixrref
+ \ matrixscale
+ \ matrixsubtract
+ \ matrixtrace
+ \ matrixtranspose
+ \ matscale
+ \ matsubtract
+ \ mecodefromchars
+ \ mefxpersists
+ \ mefxpersistsc
+ \ mehasnoarea
+ \ mehasnoareac
+ \ mehasnoduration
+ \ mehasnodurationc
+ \ mehasnohiteffect
+ \ mehasnohiteffectc
+ \ mehasnoingredient
+ \ mehasnoingredientc
+ \ mehasnomagnitude
+ \ mehasnomagnitudec
+ \ menuholdkey
+ \ menumode
+ \ menureleasekey
+ \ menutapkey
+ \ messageboxex
+ \ messageex
+ \ meusesarmor
+ \ meusesarmorc
+ \ meusesattribute
+ \ meusesattributec
+ \ meusescreature
+ \ meusescreaturec
+ \ meusesotheractorvalue
+ \ meusesotheractorvaluec
+ \ meusesskill
+ \ meusesskillc
+ \ meusesweapon
+ \ meusesweaponc
+ \ modactorvalue2
+ \ modactorvaluec
+ \ modarmorar
+ \ modattackdamage
+ \ modav2
+ \ modavc
+ \ modavmod
+ \ modavmodc
+ \ modcurrentcharge
+ \ modelpathincludes
+ \ modenchantmentcharge
+ \ modenchantmentcost
+ \ modequippedcurrentcharge
+ \ modequippedcurrenthealth
+ \ modfemalebipedpath
+ \ modfemalegroundpath
+ \ modfemaleiconpath
+ \ modgoldvalue
+ \ modiconpath
+ \ modlocaldataexists
+ \ modmalebipedpath
+ \ modmalegroundpath
+ \ modmaleiconpath
+ \ modmodelpath
+ \ modname
+ \ modnthactiveeffectmagnitude
+ \ modnthaemagnitude
+ \ modntheffectitemarea
+ \ modntheffectitemduration
+ \ modntheffectitemmagnitude
+ \ modntheffectitemscriptname
+ \ modntheiarea
+ \ modntheiduration
+ \ modntheimagnitude
+ \ modntheisname
+ \ modobjectcharge
+ \ modobjecthealth
+ \ modpcmovementspeed
+ \ modpcspelleffectiveness
+ \ modplayerskillexp
+ \ modplayerskillexpc
+ \ modquality
+ \ modsigilstoneuses
+ \ modspellmagickacost
+ \ modweaponreach
+ \ modweaponspeed
+ \ modweight
+ \ movemousex
+ \ movemousey
+ \ movetextinputcursor
+ \ nameincludes
+ \ numtohex
+ \ offersapparatus
+ \ offersarmor
+ \ offersbooks
+ \ offersclothing
+ \ offersingredients
+ \ offerslights
+ \ offersmagicitems
+ \ offersmiscitems
+ \ offerspotions
+ \ offersrecharging
+ \ offersrepair
+ \ offersservicesc
+ \ offersspells
+ \ offerstraining
+ \ offersweapons
+ \ oncontroldown
+ \ onkeydown
+ \ opentextinput
+ \ outputlocalmappicturesoverride
+ \ overrideactorswimbreath
+ \ parentcellhaswater
+ \ pathedgeexists
+ \ playidle
+ \ pow
+ \ print
+ \ printactivetileinfo
+ \ printc
+ \ printd
+ \ printtileinfo
+ \ printtoconsole
+ \ questexists
+ \ racos
+ \ rand
+ \ rasin
+ \ ratan
+ \ ratan2
+ \ rcos
+ \ rcosh
+ \ refreshcurrentclimate
+ \ releasekey
+ \ removealleffectitems
+ \ removebasespell
+ \ removeenchantment
+ \ removeequippedweaponpoison
+ \ removeeventhandler
+ \ removefromleveledlist
+ \ removeitemns
+ \ removelevitembylevel
+ \ removemeir
+ \ removemodlocaldata
+ \ removentheffect
+ \ removentheffectitem
+ \ removenthlevitem
+ \ removenthmagiceffectcounter
+ \ removenthmagiceffectcounterc
+ \ removenthmecounter
+ \ removenthmecounterc
+ \ removescript
+ \ removescr
+ \ removespellns
+ \ resetallvariables
+ \ resetfalrior
+ \ resolvemodindex
+ \ rightshift
+ \ rotmat
+ \ rowvec
+ \ rsin
+ \ rsinh
+ \ rtan
+ \ rtanh
+ \ runbatchscript
+ \ runscriptline
+ \ saespassalarm
+ \ setactivequest
+ \ setactrfullname
+ \ setactormaxswimbreath
+ \ setactorrespawns
+ \ setactorswimbreath
+ \ setactorvaluec
+ \ setalvisible
+ \ setaltcontrol2
+ \ setapparatustype
+ \ setarmorar
+ \ setarmortype
+ \ setarrowprojectilebowenchantment
+ \ setarrowprojectileenchantment
+ \ setarrowprojectilepoison
+ \ setattackdamage
+ \ setavc
+ \ setavmod
+ \ setavmodc
+ \ setbaseform
+ \ setbipediconpathex
+ \ setbipedmodelpathex
+ \ setbipedslotmask
+ \ setbookcantbetaken
+ \ setbookisscroll
+ \ setbookskilltaught
+ \ setbuttonpressed
+ \ setcalcalllevels
+ \ setcamerafov2
+ \ setcancastpower
+ \ setcancorpsecheck
+ \ setcanfasttravelfromworld
+ \ setcantraveltomapmarker
+ \ setcantwait
+ \ setcellbehavesasexterior
+ \ setcellclimate
+ \ setcellhaswater
+ \ setcellispublic
+ \ setcelllighting
+ \ setcellmusictype
+ \ setcellublicflag
+ \ setcellresethours
+ \ setcellwaterheight
+ \ setcellwatertype
+ \ setchancenone
+ \ setclassattribute
+ \ setclassattributec
+ \ setclassskills
+ \ setclassskills2
+ \ setclassspecialization
+ \ setclimatehasmasser
+ \ setclimatehasmassser
+ \ setclimatehassecunda
+ \ setclimatemoonphaselength
+ \ setclimatesunrisebegin
+ \ setclimatesunriseend
+ \ setclimatesunsetbegin
+ \ setclimatesunsetend
+ \ setclimatevolatility
+ \ setclosesound
+ \ setcloudspeedlower
+ \ setcloudspeedupper
+ \ setcombatstyle
+ \ setcombatstyleacrobaticsdodgechance
+ \ setcombatstyleattackchance
+ \ setcombatstyleattackduringblockmult
+ \ setcombatstyleattacknotunderattackmult
+ \ setcombatstyleattackskillmodbase
+ \ setcombatstyleattackskillmodmult
+ \ setcombatstyleattackunderattackmult
+ \ setcombatstyleblockchance
+ \ setcombatstyleblocknotunderattackmult
+ \ setcombatstyleblockskillmodbase
+ \ setcombatstyleblockskillmodmult
+ \ setcombatstyleblockunderattackmult
+ \ setcombatstylebuffstandoffdist
+ \ setcombatstyledodgebacknotunderattackmult
+ \ setcombatstyledodgebacktimermax
+ \ setcombatstyledodgebacktimermin
+ \ setcombatstyledodgebackunderattackmult
+ \ setcombatstyledodgechance
+ \ setcombatstyledodgefatiguemodbase
+ \ setcombatstyledodgefatiguemodmult
+ \ setcombatstyledodgefwattackingmult
+ \ setcombatstyledodgefwnotattackingmult
+ \ setcombatstyledodgefwtimermax
+ \ setcombatstyledodgefwtimermin
+ \ setcombatstyledodgelrchance
+ \ setcombatstyledodgelrtimermax
+ \ setcombatstyledodgelrtimermin
+ \ setcombatstyledodgenotunderattackmult
+ \ setcombatstyledodgeunderattackmult
+ \ setcombatstyleencumberedspeedmodbase
+ \ setcombatstyleencumberedspeedmodmult
+ \ setcombatstylefleeingdisabled
+ \ setcombatstylegroupstandoffdist
+ \ setcombatstyleh2hbonustoattack
+ \ setcombatstyleholdtimermax
+ \ setcombatstyleholdtimermin
+ \ setcombatstyleidletimermax
+ \ setcombatstyleidletimermin
+ \ setcombatstyleignorealliesinarea
+ \ setcombatstylekobonustoattack
+ \ setcombatstylekobonustopowerattack
+ \ setcombatstylemeleealertok
+ \ setcombatstylepowerattackchance
+ \ setcombatstylepowerattackfatiguemodbase
+ \ setcombatstylepowerattackfatiguemodmult
+ \ setcombatstyleprefersranged
+ \ setcombatstylerangedstandoffdist
+ \ setcombatstylerangemaxmult
+ \ setcombatstylerangeoptimalmult
+ \ setcombatstylerejectsyields
+ \ setcombatstylerushattackchance
+ \ setcombatstylerushattackdistmult
+ \ setcombatstylestaggerbonustoattack
+ \ setcombatstylestaggerbonustopowerattack
+ \ setcombatstyleswitchdistmelee
+ \ setcombatstyleswitchdistranged
+ \ setcombatstylewillyield
+ \ setcontainerrespawns
+ \ setcontrol
+ \ setcreatureskill
+ \ setcreaturesoundbase
+ \ setcreaturetype
+ \ setcurrentcharge
+ \ setcurrenthealth
+ \ setcurrentsoullevel
+ \ setdebugmode
+ \ setdescription
+ \ setdetectionstate
+ \ setdisableglobalcollision
+ \ setdoorteleport
+ \ setenchantment
+ \ setenchantmentcharge
+ \ setenchantmentcost
+ \ setenchantmenttype
+ \ setequipmentslot
+ \ setequippedcurrentcharge
+ \ setequippedcurrenthealth
+ \ setequippedweaponpoison
+ \ seteventhandler
+ \ seteyes
+ \ setfactionevil
+ \ setfactionhasspecialcombat
+ \ setfactionhidden
+ \ setfactonreaction
+ \ setfactionspecialcombat
+ \ setfemale
+ \ setfemalebipedpath
+ \ setfemalegroundpath
+ \ setfemaleiconpath
+ \ setflycameraspeedmult
+ \ setfogdayfar
+ \ setfogdaynear
+ \ setfognightfar
+ \ setfognightnear
+ \ setforcsneak
+ \ setfunctionvalue
+ \ setgamedifficulty
+ \ setgoldvalue
+ \ setgoldvalue_t
+ \ setgoldvaluet
+ \ sethair
+ \ setharvested
+ \ sethasbeenpickedup
+ \ sethdrvalue
+ \ sethidesamulet
+ \ sethidesrings
+ \ sethotkeyitem
+ \ seticonpath
+ \ setignoresresistance
+ \ setingredient
+ \ setingredientchance
+ \ setinputtext
+ \ setinvertfasttravel
+ \ setisautomaticdoor
+ \ setiscontrol
+ \ setisfood
+ \ setishiddendoor
+ \ setisminimalusedoor
+ \ setisobliviongate
+ \ setisplayable
+ \ setlevcreaturetemplate
+ \ setlightduration
+ \ setlightningfrequency
+ \ setlightradius
+ \ setlightrgb
+ \ setlocalgravity
+ \ setlocalgravityvector
+ \ setloopsound
+ \ setlowlevelprocessing
+ \ setmaagiceffectuseactorvalue
+ \ setmagiceffectareasound
+ \ setmagiceffectareasoundc
+ \ setmagiceffectbarterfactor
+ \ setmagiceffectbarterfactorc
+ \ setmagiceffectbasecost
+ \ setmagiceffectbasecostc
+ \ setmagiceffectboltsound
+ \ setmagiceffectboltsoundc
+ \ setmagiceffectcanrecover
+ \ setmagiceffectcanrecoverc
+ \ setmagiceffectcastingsound
+ \ setmagiceffectcastingsoundc
+ \ setmagiceffectcounters
+ \ setmagiceffectcountersc
+ \ setmagiceffectenchantfactor
+ \ setmagiceffectenchantfactorc
+ \ setmagiceffectenchantshader
+ \ setmagiceffectenchantshaderc
+ \ setmagiceffectforenchanting
+ \ setmagiceffectforenchantingc
+ \ setmagiceffectforspellmaking
+ \ setmagiceffectforspellmakingc
+ \ setmagiceffectfxpersists
+ \ setmagiceffectfxpersistsc
+ \ setmagiceffecthitshader
+ \ setmagiceffecthitshaderc
+ \ setmagiceffecthitsound
+ \ setmagiceffecthitsoundc
+ \ setmagiceffecticon
+ \ setmagiceffecticonc
+ \ setmagiceffectisdetrimental
+ \ setmagiceffectisdetrimentalc
+ \ setmagiceffectishostile
+ \ setmagiceffectishostilec
+ \ setmagiceffectlight
+ \ setmagiceffectlightc
+ \ setmagiceffectmagnitudepercent
+ \ setmagiceffectmagnitudepercentc
+ \ setmagiceffectmodel
+ \ setmagiceffectmodelc
+ \ setmagiceffectname
+ \ setmagiceffectnamec
+ \ setmagiceffectnoarea
+ \ setmagiceffectnoareac
+ \ setmagiceffectnoduration
+ \ setmagiceffectnodurationc
+ \ setmagiceffectnohiteffect
+ \ setmagiceffectnohiteffectc
+ \ setmagiceffectnoingredient
+ \ setmagiceffectnoingredientc
+ \ setmagiceffectnomagnitude
+ \ setmagiceffectnomagnitudec
+ \ setmagiceffectonselfallowed
+ \ setmagiceffectonselfallowedc
+ \ setmagiceffectontargetallowed
+ \ setmagiceffectontargetallowedc
+ \ setmagiceffectontouchallowed
+ \ setmagiceffectontouchallowedc
+ \ setmagiceffectotheractorvalue
+ \ setmagiceffectotheractorvaluec
+ \ setmagiceffectprojectilespeed
+ \ setmagiceffectprojectilespeedc
+ \ setmagiceffectresistvalue
+ \ setmagiceffectresistvaluec
+ \ setmagiceffectschool
+ \ setmagiceffectschoolc
+ \ setmagiceffectuseactorvaluec
+ \ setmagiceffectusedobject
+ \ setmagiceffectusedobjectc
+ \ setmagiceffectusesactorvalue
+ \ setmagiceffectusesactorvaluec
+ \ setmagiceffectusesarmor
+ \ setmagiceffectusesarmorc
+ \ setmagiceffectusesattribute
+ \ setmagiceffectusesattributec
+ \ setmagiceffectusescreature
+ \ setmagiceffectusescreaturec
+ \ setmagiceffectusesskill
+ \ setmagiceffectusesskillc
+ \ setmagiceffectusesweapon
+ \ setmagiceffectusesweaponc
+ \ setmagicitemautocalc
+ \ setmagicprojectilespell
+ \ setmalebipedpath
+ \ setmalegroundpath
+ \ setmaleiconpath
+ \ setmapmarkertype
+ \ setmapmarkervisible
+ \ setmeareasound
+ \ setmeareasoundc
+ \ setmebarterfactor
+ \ setmebarterfactorc
+ \ setmebasecost
+ \ setmebasecostc
+ \ setmeboltsound
+ \ setmeboltsoundc
+ \ setmecanrecover
+ \ setmecanrecoverc
+ \ setmecastingsound
+ \ setmecastingsoundc
+ \ setmeenchantfactor
+ \ setmeenchantfactorc
+ \ setmeenchantshader
+ \ setmeenchantshaderc
+ \ setmeforenchanting
+ \ setmeforenchantingc
+ \ setmeforspellmaking
+ \ setmeforspellmakingc
+ \ setmefxpersists
+ \ setmefxpersistsc
+ \ setmehitshader
+ \ setmehitshaderc
+ \ setmehitsound
+ \ setmehitsoundc
+ \ setmeicon
+ \ setmeiconc
+ \ setmeisdetrimental
+ \ setmeisdetrimentalc
+ \ setmeishostile
+ \ setmeishostilec
+ \ setmelight
+ \ setmelightc
+ \ setmemagnitudepercent
+ \ setmemagnitudepercentc
+ \ setmemodel
+ \ setmemodelc
+ \ setmename
+ \ setmenamec
+ \ setmenoarea
+ \ setmenoareac
+ \ setmenoduration
+ \ setmenodurationc
+ \ setmenohiteffect
+ \ setmenohiteffectc
+ \ setmenoingredient
+ \ setmenoingredientc
+ \ setmenomagnitude
+ \ setmenomagnitudec
+ \ setmenufloatvalue
+ \ setmenustringvalue
+ \ setmeonselfallowed
+ \ setmeonselfallowedc
+ \ setmeontargetallowed
+ \ setmeontargetallowedc
+ \ setmeontouchallowed
+ \ setmeontouchallowedc
+ \ setmeotheractorvalue
+ \ setmeotheractorvaluec
+ \ setmeprojectilespeed
+ \ setmeprojectilespeedc
+ \ setmerchantcontainer
+ \ setmeresistvalue
+ \ setmeresistvaluec
+ \ setmeschool
+ \ setmeschoolc
+ \ setmessageicon
+ \ setmessagesound
+ \ setmeuseactorvalue
+ \ setmeuseactorvaluec
+ \ setmeusedobject
+ \ setmeusedobjectc
+ \ setmeusesarmor
+ \ setmeusesarmorc
+ \ setmeusesattribute
+ \ setmeusesattributec
+ \ setmeusescreature
+ \ setmeusescreaturec
+ \ setmeusesskill
+ \ setmeusesskillc
+ \ setmeusesweapon
+ \ setmeusesweaponc
+ \ setmodelpath
+ \ setmodlocaldata
+ \ setmousespeedx
+ \ setmousespeedy
+ \ setmpspell
+ \ setname
+ \ setnameex
+ \ setnopersuasion
+ \ setnthactiveeffectmagnitude
+ \ setnthaemagnitude
+ \ setntheffectitemactorvalue
+ \ setntheffectitemactorvaluec
+ \ setntheffectitemarea
+ \ setntheffectitemduration
+ \ setntheffectitemmagnitude
+ \ setntheffectitemrange
+ \ setntheffectitemscript
+ \ setntheffectitemscripthostile
+ \ setntheffectitemscriptname
+ \ setntheffectitemscriptnameex
+ \ setntheffectitemscriptschool
+ \ setntheffectitemscriptvisualeffect
+ \ setntheffectitemscriptvisualeffectc
+ \ setntheiarea
+ \ setntheiav
+ \ setntheiavc
+ \ setntheiduration
+ \ setntheimagnitude
+ \ setntheirange
+ \ setntheiscript
+ \ setntheishostile
+ \ setntheisname
+ \ setntheisschool
+ \ setntheisvisualeffect
+ \ setntheisvisualeffectc
+ \ setnthfactionranknameex
+ \ setnumericgamesetting
+ \ setnumericinisetting
+ \ setobjectcharge
+ \ setobjecthealth
+ \ setoffersapparatus
+ \ setoffersarmor
+ \ setoffersbooks
+ \ setoffersclothing
+ \ setoffersingredients
+ \ setofferslights
+ \ setoffersmagicitems
+ \ setoffersmiscitems
+ \ setofferspotions
+ \ setoffersrecharging
+ \ setoffersrepair
+ \ setoffersservicesc
+ \ setoffersspells
+ \ setofferstraining
+ \ setoffersweapons
+ \ setolmpgrids
+ \ setopenkey
+ \ setopensound
+ \ setopenstip
+ \ setownership_t
+ \ setowningrequiredrank
+ \ setpackageallowfalls
+ \ setpackageallowswimming
+ \ setpackagealwaysrun
+ \ setpackagealwayssneak
+ \ setpackagearmorunequipped
+ \ setpackagecontinueifpcnear
+ \ setpackagedata
+ \ setpackagedefensivecombat
+ \ setpackagelocationdata
+ \ setpackagelockdoorsatend
+ \ setpackagelockdoorsatlocation
+ \ setpackagelockdoorsatstart
+ \ setpackagemustcomplete
+ \ setpackagemustreachlocation
+ \ setpackagenoidleanims
+ \ setpackageoffersservices
+ \ setpackageonceperday
+ \ setpackagescheduledata
+ \ setpackageskipfalloutbehavior
+ \ setpackagetarget
+ \ setpackagetargetdata
+ \ setpackageunlockdoorsatend
+ \ setpackageunlockdoorsatlocation
+ \ setpackageunlockdoorsatstart
+ \ setpackageusehorse
+ \ setpackageweaponsunequipped
+ \ setparentcellowningfactionrequiredrank
+ \ setpathnodedisabled
+ \ setpcamurderer
+ \ setpcattributebonus
+ \ setpcattributebonusc
+ \ setpcexpy
+ \ setpcleveloffset
+ \ setpcmajorskillups
+ \ setpctrainingsessionsused
+ \ setplayerbseworld
+ \ setplayerprojectile
+ \ setplayerskeletonpath
+ \ setplayerskilladvances
+ \ setplayerskilladvancesc
+ \ setplayerslastriddenhorse
+ \ setpos_t
+ \ setpowertimer
+ \ setprojectilesource
+ \ setprojectilespeed
+ \ setquality
+ \ setquestitem
+ \ setracealias
+ \ setraceplayable
+ \ setracescale
+ \ setracevoice
+ \ setraceweight
+ \ setrefcount
+ \ setrefessential
+ \ setreale
+ \ setscaleex
+ \ setscript
+ \ setsigilstoneuses
+ \ setskillgoverningattribute
+ \ setskillgoverningattributec
+ \ setskillspecialization
+ \ setskillspecializationc
+ \ setskilluseincrement
+ \ setskilluseincrementc
+ \ setsoulgemcapacity
+ \ setsoullevel
+ \ setsoundattenuation
+ \ setspellareaeffectignoreslos
+ \ setspelldisallowabsorbreflect
+ \ setspellexplodeswithnotarget
+ \ setspellhostile
+ \ setspellimmunetosilence
+ \ setspellmagickacost
+ \ setspellmasterylevel
+ \ setspellpcstart
+ \ setspellscripteffectalwaysapplies
+ \ setspelltype
+ \ setstagedate
+ \ setstagetext
+ \ setstringgamesettingex
+ \ setstringinisetting
+ \ setsummonable
+ \ setsundamage
+ \ setsunglare
+ \ settaken
+ \ settextinputcontrolhandler
+ \ settextinputdefaultcontrolsdisabled
+ \ settextinputhandler
+ \ settexturepath
+ \ settimeleft
+ \ settrainerlevel
+ \ settrainerskill
+ \ settransdelta
+ \ settravelhorse
+ \ setunsafecontainer
+ \ setvelocity
+ \ setverticalvelocity
+ \ setweaponreach
+ \ setweaponspeed
+ \ setweapontype
+ \ setweathercloudspeedlower
+ \ setweathercloudspeedupper
+ \ setweathercolor
+ \ setweatherfogdayfar
+ \ setweatherfogdaynear
+ \ setweatherfognightfar
+ \ setweatherfognightnear
+ \ setweatherhdrvalue
+ \ setweatherlightningfrequency
+ \ setweathersundamage
+ \ setweathersunglare
+ \ setweathertransdelta
+ \ setweatherwindspeed
+ \ setweight
+ \ setwindspeed
+ \ showellmaking
+ \ sin
+ \ sinh
+ \ skipansqrt
+ \ squareroot
+ \ startcc
+ \ stringtoactorvalue
+ \ tan
+ \ tanh
+ \ tapcontrol
+ \ tapkey
+ \ testexpr
+ \ thiactorsai
+ \ togglecreaturemodel
+ \ togglefirstperson
+ \ toggleskillperk
+ \ togglespecialanim
+ \ tolower
+ \ tonumber
+ \ tostring
+ \ toupper
+ \ trapuphitshader
+ \ triggerplayerskilluse
+ \ triggerplayerskillusec
+ \ typeof
+ \ uncompletequest
+ \ unequipitemns
+ \ unequipitemsilent
+ \ unequipme
+ \ unhammerkey
+ \ unsetstagetext
+ \ update3d
+ \ updatecontainermenu
+ \ updatespellpurchasemenu
+ \ updatetextinput
+ \ vecmag
+ \ vecnorm
+ \ vectorcross
+ \ vectordot
+ \ vectormagnitude
+ \ vectornormalize
+ \ zeromat
+" }}}
+
+" Array Functions {{{
+syn keyword obseArrayFunction
+ \ ar_Append
+ \ ar_BadNumericIndex
+ \ ar_BadStringIndex
+ \ ar_Construct
+ \ ar_Copy
+ \ ar_CustomSort
+ \ ar_DeepCopy
+ \ ar_Dump
+ \ ar_DumpID
+ \ ar_Erase
+ \ ar_Find
+ \ ar_First
+ \ ar_HasKey
+ \ ar_Insert
+ \ ar_InsertRange
+ \ ar_Keys
+ \ ar_Last
+ \ ar_List
+ \ ar_Map
+ \ ar_Next
+ \ ar_Null
+ \ ar_Prev
+ \ ar_Range
+ \ ar_Resize
+ \ ar_Size
+ \ ar_Sort
+ \ ar_SortAlpha
+" }}}
+
+" String Functions {{{
+syn keyword obseStringFunction
+ \ sv_ToLower
+ \ sv_ToUpper
+ \ sv_Compare
+ \ sv_Construct
+ \ sv_Count
+ \ sv_Destruct
+ \ sv_Erase
+ \ sv_Find
+ \ sv_Insert
+ \ sv_Length
+ \ sv_Percentify
+ \ sv_Replace
+ \ sv_Split
+ \ sv_ToNumeric
+" }}}
+
+" Pluggy Functions {{{
+syn keyword pluggyFunction
+ \ ArrayCmp
+ \ ArrayCount
+ \ ArrayEsp
+ \ ArrayProtect
+ \ ArraySize
+ \ AutoSclHudS
+ \ AutoSclHudT
+ \ CopyArray
+ \ CopyString
+ \ CreateArray
+ \ CreateEspBook
+ \ CreateString
+ \ DelAllHudSs
+ \ DelAllHudTs
+ \ DelFile
+ \ DelHudS
+ \ DelHudT
+ \ DelTxtFile
+ \ DestroyAllArrays
+ \ DestroyAllStrings
+ \ DestroyArray
+ \ DestroyString
+ \ DupArray
+ \ EspToString
+ \ FileToString
+ \ FindFirstFile
+ \ FindFloatInArray
+ \ FindInArray
+ \ FindNextFile
+ \ FindRefInArray
+ \ FirstFreeInArray
+ \ FirstInArray
+ \ FixName
+ \ FixNameEx
+ \ FloatToString
+ \ FmtString
+ \ FromOBSEString
+ \ FromTSFC
+ \ GetEsp
+ \ GetFileSize
+ \ GetInArray
+ \ GetRefEsp
+ \ GetTypeInArray
+ \ Halt
+ \ HasFixedName
+ \ HudSEsp
+ \ HudSProtect
+ \ HudS_Align
+ \ HudS_L
+ \ HudS_Opac
+ \ HudS_SclX
+ \ HudS_SclY
+ \ HudS_Show
+ \ HudS_Tex
+ \ HudS_X
+ \ HudS_Y
+ \ HudTEsp
+ \ HudTInfo
+ \ HudTProtect
+ \ HudT_Align
+ \ HudT_Font
+ \ HudT_L
+ \ HudT_Opac
+ \ HudT_SclX
+ \ HudT_SclY
+ \ HudT_Show
+ \ HudT_Text
+ \ HudT_X
+ \ HudT_Y
+ \ HudsInfo
+ \ IniDelKey
+ \ IniGetNthSection
+ \ IniKeyExists
+ \ IniReadFloat
+ \ IniReadInt
+ \ IniReadRef
+ \ IniReadString
+ \ IniSectionsCount
+ \ IniWriteFloat
+ \ IniWriteInt
+ \ IniWriteRef
+ \ IniWriteString
+ \ IntToHex
+ \ IntToString
+ \ IsHUDEnabled
+ \ IsPluggyDataReset
+ \ KillMenu
+ \ LC
+ \ LongToRef
+ \ ModRefEsp
+ \ NewHudS
+ \ NewHudT
+ \ PackArray
+ \ PauseBox
+ \ PlgySpcl
+ \ RefToLong
+ \ RefToString
+ \ RemInArray
+ \ RenFile
+ \ RenTxtFile
+ \ ResetName
+ \ RunBatString
+ \ SanString
+ \ ScreenInfo
+ \ SetFloatInArray
+ \ SetHudT
+ \ SetInArray
+ \ SetRefInArray
+ \ SetString
+ \ StrLC
+ \ StringCat
+ \ StringCmp
+ \ StringEsp
+ \ StringGetName
+ \ StringGetNameEx
+ \ StringIns
+ \ StringLen
+ \ StringMsg
+ \ StringMsgBox
+ \ StringPos
+ \ StringProtect
+ \ StringRep
+ \ StringSetName
+ \ StringSetNameEx
+ \ StringToFloat
+ \ StringToInt
+ \ StringToRef
+ \ StringToTxtFile
+ \ ToOBSE
+ \ ToOBSEString
+ \ ToTSFC
+ \ TxtFileExists
+ \ UserFileExists
+ \ csc
+ \ rcsc
+" }}}
+
+" tfscFunction {{{
+syn keyword tfscFunction
+ \ StrAddNewLine
+ \ StrAppend
+ \ StrAppendCharCode
+ \ StrCat
+ \ StrClear
+ \ StrClearLast
+ \ StrCompare
+ \ StrCopy
+ \ StrDel
+ \ StrDeleteAll
+ \ StrExpr
+ \ StrGetFemaleBipedPath
+ \ StrGetFemaleGroundPath
+ \ StrGetFemaleIconPath
+ \ StrGetMaleBipedPath
+ \ StrGetMaleIconPath
+ \ StrGetModelPath
+ \ StrGetName
+ \ StrGetNthEffectItemScriptName
+ \ StrGetNthFactionRankName
+ \ StrGetRandomName
+ \ StrIDReplace
+ \ StrLength
+ \ StrLoad
+ \ StrMessageBox
+ \ StrNew
+ \ StrPrint
+ \ StrReplace
+ \ StrSave
+ \ StrSet
+ \ StrSetFemaleBipedPath
+ \ StrSetFemaleGroundPath
+ \ StrSetFemaleIconPath
+ \ StrSetMaleBipedPath
+ \ StrSetMaleIconPath
+ \ StrSetModelPath
+ \ StrSetName
+ \ StrSetNthEffectItemScriptName
+" }}}
+
+" Blockhead Functions {{{
+syn keyword blockheadFunction
+ \ GetBodyAssetOverride
+ \ GetFaceGenAge
+ \ GetHeadAssetOverride
+ \ RefreshAnimData
+ \ RegisterEquipmentOverrideHandler
+ \ ResetAgeTextureOverride
+ \ ResetBodyAssetOverride
+ \ ResetHeadAssetOverride
+ \ SetAgeTextureOverride
+ \ SetBodyAssetOverride
+ \ SetFaceGenAge
+ \ SetHeadAssetOverride
+ \ ToggleAnimOverride
+ \ UnregisterEquipmentOverrideHandler
+" }}}
+
+" switchNightEyeShaderFunction {{{
+syn keyword switchNightEyeShaderFunction
+ \ EnumNightEyeShader
+ \ SetNightEyeShader
+" }}}
+
+" Oblivion Reloaded Functions {{{
+syn keyword obseivionReloadedFunction
+ \ cameralookat
+ \ cameralookatposition
+ \ camerareset
+ \ camerarotate
+ \ camerarotatetoposition
+ \ cameratranslate
+ \ cameratranslatetoposition
+ \ getlocationname
+ \ getsetting
+ \ getversion
+ \ getweathername
+ \ isthirdperson
+ \ setcustomconstant
+ \ setextraeffectenabled
+ \ setsetting
+" }}}
+" menuQue Functions {{{
+syn keyword menuQueFunction
+ \ GetAllSkills
+ \ GetAVSkillMasteryLevelC
+ \ GetAVSkillMasteryLevelF
+ \ GetFontLoaded
+ \ GetGenericButtonPressed
+ \ GetLoadedFonts
+ \ GetLocalMapSeen
+ \ GetMenuEventType
+ \ GetMenuFloatValue
+ \ GetMenuStringValue
+ \ GetMouseImage
+ \ GetMousePos
+ \ GetPlayerSkillAdvancesF
+ \ GetPlayerSkillUseF
+ \ GetRequiredSkillExpC
+ \ GetRequiredSkillExpF
+ \ GetSkillCode
+ \ GetSkillForm
+ \ GetSkillGoverningAttributeF
+ \ GetSkillSpecializationC
+ \ GetSkillSpecializationF
+ \ GetSkillUseIncrementF
+ \ GetTextEditBox
+ \ GetTextEditString
+ \ GetTrainingMenuCost
+ \ GetTrainingMenuLevel
+ \ GetTrainingMenuSkill
+ \ GetWorldMapData
+ \ GetWorldMapDoor
+ \ IncrementPlayerSkillUseF
+ \ InsertXML
+ \ InsertXMLTemplate
+ \ IsTextEditInUse
+ \ Kyoma_Test
+ \ ModPlayerSkillExpF
+ \ mqCreateMenuFloatValue
+ \ mqCreateMenuStringValue
+ \ mqGetActiveQuest
+ \ mqGetActiveQuestTargets
+ \ mqGetCompletedQuests
+ \ mqGetCurrentQuests
+ \ mqGetEnchMenuBaseItem
+ \ mqGetHighlightedClass
+ \ mqGetMapMarkers
+ \ mqGetMenuActiveChildIndex
+ \ mqGetMenuActiveFloatValue
+ \ mqGetMenuActiveStringValue
+ \ mqGetMenuChildCount
+ \ mqGetMenuChildFloatValue
+ \ mqGetMenuChildHasTrait
+ \ mqGetMenuChildName
+ \ mqGetMenuChildStringValue
+ \ mqGetMenuGlobalFloatValue
+ \ mqGetMenuGlobalStringValue
+ \ mqGetQuestCompleted
+ \ mqGetSelectedClass
+ \ mqSetActiveQuest
+ \ mqSetMenuActiveFloatValue
+ \ mqSetMenuActiveStringValue
+ \ mqSetMenuChildFloatValue
+ \ mqSetMenuChildStringValue
+ \ mqSetMenuGlobalStringValue
+ \ mqSetMenuGlobalFloatValue
+ \ mqSetMessageBoxSource
+ \ mqUncompleteQuest
+ \ RemoveMenuEventHandler
+ \ SetMenuEventHandler
+ \ SetMouseImage
+ \ SetPlayerSkillAdvancesF
+ \ SetSkillGoverningAttributeF
+ \ SetSkillSpecializationC
+ \ SetSkillSpecializationF
+ \ SetSkillUseIncrementF
+ \ SetTextEditString
+ \ SetTrainerSkillC
+ \ SetWorldMapData
+ \ ShowGenericMenu
+ \ ShowLevelUpMenu
+ \ ShowMagicPopupMenu
+ \ ShowTextEditMenu
+ \ ShowTrainingMenu
+ \ tile_FadeFloat
+ \ tile_GetFloat
+ \ tile_GetInfo
+ \ tile_GetName
+ \ tile_GetString
+ \ tile_GetVar
+ \ tile_HasTrait
+ \ tile_SetFloat
+ \ tile_SetString
+ \ TriggerPlayerSkillUseF
+ \ UpdateLocalMap
+" }}}
+
+" eaxFunction {{{
+syn keyword eaxFunction
+ \ CreateEAXeffect
+ \ DeleteEAXeffect
+ \ DisableEAX
+ \ EAXcopyEffect
+ \ EAXeffectExists
+ \ EAXeffectsAreEqual
+ \ EAXgetActiveEffect
+ \ EAXnumEffects
+ \ EAXpushEffect
+ \ EAXpopEffect
+ \ EAXremoveAllInstances
+ \ EAXremoveFirstInstance
+ \ EAXstackIsEmpty
+ \ EAXstackSize
+ \ EnableEAX
+ \ GetEAXAirAbsorptionHF
+ \ GetEAXDecayHFRatio
+ \ GetEAXDecayTime
+ \ GetEAXEnvironment
+ \ GetEAXEnvironmentSize
+ \ GetEAXEnvironmentDiffusion
+ \ GetEAXReflections
+ \ GetEAXReflectionsDelay
+ \ GetEAXReverb
+ \ GetEAXReverbDelay
+ \ GetEAXRoom
+ \ GetEAXRoomHF
+ \ GetEAXRoomRolloffFactor
+ \ InitializeEAX
+ \ IsEAXEnabled
+ \ IsEAXInitialized
+ \ SetEAXAirAbsorptionHF
+ \ SetEAXallProperties
+ \ SetEAXDecayTime
+ \ SetEAXDecayHFRatio
+ \ SetEAXEnvironment
+ \ SetEAXEnvironmentSize
+ \ SetEAXEnvironmentDiffusion
+ \ SetEAXReflections
+ \ SetEAXReflectionsDelay
+ \ SetEAXReverb
+ \ SetEAXReverbDelay
+ \ SetEAXRoom
+ \ SetEAXRoomHF
+ \ SetEAXRoomRolloffFactor
+" }}}
+
+" networkPipeFunction {{{
+syn keyword networkPipeFunction
+ \ NetworkPipe_CreateClient
+ \ NetworkPipe_GetData
+ \ NetworkPipe_IsNewGame
+ \ NetworkPipe_KillClient
+ \ NetworkPipe_Receive
+ \ NetworkPipe_SetData
+ \ NetworkPipe_Send
+ \ NetworkPipe_StartService
+ \ NetworkPipe_StopService
+" }}}
+
+" nifseFunction {{{
+syn keyword nifseFunction
+ \ BSFurnitureMarkerGetPositionRefs
+ \ BSFurnitureMarkerSetPositionRefs
+ \ GetNifTypeIndex
+ \ NiAVObjectAddProperty
+ \ NiAVObjectClearCollisionObject
+ \ NiAVObjectCopyCollisionObject
+ \ NiAVObjectDeleteProperty
+ \ NiAVObjectGetCollisionMode
+ \ NiAVObjectGetCollisionObject
+ \ NiAVObjectGetLocalRotation
+ \ NiAVObjectGetLocalScale
+ \ NiAVObjectGetLocalTransform
+ \ NiAVObjectGetLocalTranslation
+ \ NiAVObjectGetNumProperties
+ \ NiAVObjectGetProperties
+ \ NiAVObjectGetPropertyByType
+ \ NiAVObjectSetCollisionMode
+ \ NiAVObjectSetLocalRotation
+ \ NiAVObjectSetLocalScale
+ \ NiAVObjectSetLocalTransform
+ \ NiAVObjectSetLocalTranslation
+ \ NiAlphaPropertyGetBlendState
+ \ NiAlphaPropertyGetDestinationBlendFunction
+ \ NiAlphaPropertyGetSourceBlendFunction
+ \ NiAlphaPropertyGetTestFunction
+ \ NiAlphaPropertyGetTestState
+ \ NiAlphaPropertyGetTestThreshold
+ \ NiAlphaPropertyGetTriangleSortMode
+ \ NiAlphaPropertySetBlendState
+ \ NiAlphaPropertySetDestinationBlendFunction
+ \ NiAlphaPropertySetSourceBlendFunction
+ \ NiAlphaPropertySetTestFunction
+ \ NiAlphaPropertySetTestState
+ \ NiAlphaPropertySetTestThreshold
+ \ NiAlphaPropertySetTriangleSortMode
+ \ NiExtraDataGetArray
+ \ NiExtraDataGetName
+ \ NiExtraDataGetNumber
+ \ NiExtraDataGetString
+ \ NiExtraDataSetArray
+ \ NiExtraDataSetName
+ \ NiExtraDataSetNumber
+ \ NiExtraDataSetString
+ \ NiMaterialPropertyGetAmbientColor
+ \ NiMaterialPropertyGetDiffuseColor
+ \ NiMaterialPropertyGetEmissiveColor
+ \ NiMaterialPropertyGetGlossiness
+ \ NiMaterialPropertyGetSpecularColor
+ \ NiMaterialPropertyGetTransparency
+ \ NiMaterialPropertySetAmbientColor
+ \ NiMaterialPropertySetDiffuseColor
+ \ NiMaterialPropertySetEmissiveColor
+ \ NiMaterialPropertySetGlossiness
+ \ NiMaterialPropertySetSpecularColor
+ \ NiMaterialPropertySetTransparency
+ \ NiNodeAddChild
+ \ NiNodeCopyChild
+ \ NiNodeDeleteChild
+ \ NiNodeGetChildByName
+ \ NiNodeGetChildren
+ \ NiNodeGetNumChildren
+ \ NiObjectGetType
+ \ NiObjectGetTypeName
+ \ NiObjectNETAddExtraData
+ \ NiObjectNETDeleteExtraData
+ \ NiObjectNETGetExtraData
+ \ NiObjectNETGetExtraDataByName
+ \ NiObjectNETGetName
+ \ NiObjectNETGetNumExtraData
+ \ NiObjectNETSetName
+ \ NiObjectTypeDerivesFrom
+ \ NiSourceTextureGetFile
+ \ NiSourceTextureIsExternal
+ \ NiSourceTextureSetExternalTexture
+ \ NiStencilPropertyGetFaceDrawMode
+ \ NiStencilPropertyGetFailAction
+ \ NiStencilPropertyGetPassAction
+ \ NiStencilPropertyGetStencilFunction
+ \ NiStencilPropertyGetStencilMask
+ \ NiStencilPropertyGetStencilRef
+ \ NiStencilPropertyGetStencilState
+ \ NiStencilPropertyGetZFailAction
+ \ NiStencilPropertySetFaceDrawMode
+ \ NiStencilPropertySetFailAction
+ \ NiStencilPropertySetPassAction
+ \ NiStencilPropertySetStencilFunction
+ \ NiStencilPropertySetStencilMask
+ \ NiStencilPropertySetStencilRef
+ \ NiStencilPropertySetStencilState
+ \ NiStencilPropertySetZFailAction
+ \ NiTexturingPropertyAddTextureSource
+ \ NiTexturingPropertyDeleteTextureSource
+ \ NiTexturingPropertyGetTextureCenterOffset
+ \ NiTexturingPropertyGetTextureClampMode
+ \ NiTexturingPropertyGetTextureCount
+ \ NiTexturingPropertyGetTextureFilterMode
+ \ NiTexturingPropertyGetTextureFlags
+ \ NiTexturingPropertyGetTextureRotation
+ \ NiTexturingPropertyGetTextureSource
+ \ NiTexturingPropertyGetTextureTiling
+ \ NiTexturingPropertyGetTextureTranslation
+ \ NiTexturingPropertyGetTextureUVSet
+ \ NiTexturingPropertyHasTexture
+ \ NiTexturingPropertySetTextureCenterOffset
+ \ NiTexturingPropertySetTextureClampMode
+ \ NiTexturingPropertySetTextureCount
+ \ NiTexturingPropertySetTextureFilterMode
+ \ NiTexturingPropertySetTextureFlags
+ \ NiTexturingPropertySetTextureHasTransform
+ \ NiTexturingPropertySetTextureRotation
+ \ NiTexturingPropertySetTextureTiling
+ \ NiTexturingPropertySetTextureTranslation
+ \ NiTexturingPropertySetTextureUVSet
+ \ NiTexturingPropertyTextureHasTransform
+ \ NiVertexColorPropertyGetLightingMode
+ \ NiVertexColorPropertyGetVertexMode
+ \ NiVertexColorPropertySetLightingMode
+ \ NiVertexColorPropertySetVertexMode
+ \ NifClose
+ \ NifGetAltGrip
+ \ NifGetBackShield
+ \ NifGetNumBlocks
+ \ NifGetOffHand
+ \ NifGetOriginalPath
+ \ NifGetPath
+ \ NifOpen
+ \ NifWriteToDisk
+" }}}
+
+" reidFunction {{{
+syn keyword reidFunction
+ \ GetRuntimeEditorID
+" }}}
+
+" runtimeDebuggerFunction {{{
+syn keyword runtimeDebuggerFunction
+ \ DebugBreak
+ \ ToggleDebugBreaking
+" }}}
+
+" addActorValuesFunction {{{
+syn keyword addActorValuesFunction
+ \ DumpActorValueC
+ \ DumpActorValueF
+ \ GetActorValueBaseCalcC
+ \ GetActorValueBaseCalcF
+ \ GetActorValueCurrentC
+ \ GetActorValueCurrentF
+ \ GetActorValueMaxC
+ \ GetActorValueMaxF
+ \ GetActorValueModC
+ \ GetActorValueModF
+ \ ModActorValueModC
+ \ ModActorValueModF
+ \ SetActorValueModC
+ \ SetActorValueModF
+ \ DumpAVC
+ \ DumpAVF
+ \ GetAVModC
+ \ GetAVModF
+ \ ModAVModC
+ \ ModAVModF
+ \ SetAVModC
+ \ SetAVModF
+ \ GetAVBaseCalcC
+ \ GetAVBaseCalcF
+ \ GetAVMaxC
+ \ GetAVMaxF
+ \ GetAVCurrentC
+ \ GetAVCurrent
+" }}}
+
+" memoryDumperFunction {{{
+syn keyword memoryDumperFunction
+ \ SetDumpAddr
+ \ SetDumpType
+ \ SetFadeAmount
+ \ SetObjectAddr
+ \ ShowMemoryDump
+" }}}
+
+" algoholFunction {{{
+syn keyword algoholFunction
+ \ QFromAxisAngle
+ \ QFromEuler
+ \ QInterpolate
+ \ QMultQuat
+ \ QMultVector3
+ \ QNormalize
+ \ QToEuler
+ \ V3Crossproduct
+ \ V3Length
+ \ V3Normalize
+" }}}
+
+" soundCommandsFunction {{{
+syn keyword soundCommandsFunction
+ \ FadeMusic
+ \ GetEffectsVolume
+ \ GetFootVolume
+ \ GetMasterVolume
+ \ GetMusicVolume
+ \ GetVoiceVolume
+ \ PlayMusicFile
+ \ SetEffectsVolume
+ \ SetFootVolume
+ \ SetMasterVolume
+ \ SetMusicVolume
+ \ SetVoiceVolume
+" }}}
+
+" emcFunction {{{
+syn keyword emcFunction
+ \ emcAddPathToPlaylist
+ \ emcCreatePlaylist
+ \ emcGetAllPlaylists
+ \ emcGetAfterBattleDelay
+ \ emcGetBattleDelay
+ \ emcGetEffectsVolume
+ \ emcGetFadeTime
+ \ emcGetFootVolume
+ \ emcGetMasterVolume
+ \ emcGetMaxRestoreTime
+ \ emcGetMusicSpeed
+ \ emcGetMusicType
+ \ emcGetMusicVolume
+ \ emcGetPauseTime
+ \ emcGetPlaylist
+ \ emcGetPlaylistTracks
+ \ emcGetTrackName
+ \ emcGetTrackDuration
+ \ emcGetTrackPosition
+ \ emcGetVoiceVolume
+ \ emcIsBattleOverridden
+ \ emcIsMusicOnHold
+ \ emcIsMusicSwitching
+ \ emcIsPlaylistActive
+ \ emcMusicNextTrack
+ \ emcMusicPause
+ \ emcMusicRestart
+ \ emcMusicResume
+ \ emcMusicStop
+ \ emcPlaylistExists
+ \ emcPlayTrack
+ \ emcRestorePlaylist
+ \ emcSetAfterBattleDelay
+ \ emcSetBattleDelay
+ \ emcSetBattleOverride
+ \ emcSetEffectsVolume
+ \ emcSetFadeTime
+ \ emcSetFootVolume
+ \ emcSetMasterVolume
+ \ emcSetMaxRestoreTime
+ \ emcSetMusicHold
+ \ emcSetMusicSpeed
+ \ emcSetMusicVolume
+ \ emcSetPauseTime
+ \ emcSetPlaylist
+ \ emcSetTrackPosition
+ \ emcSetMusicType
+ \ emcSetVoiceVolume
+" }}}
+
+" vipcxjFunction {{{
+syn keyword vipcxjFunction
+ \ vcAddMark
+ \ vcGetFilePath
+ \ vcGetHairColorRGB
+ \ vcGetValueNumeric
+ \ vcGetValueString
+ \ vcIsMarked
+ \ vcPrintIni
+ \ vcSetActorState
+ \ vcSetHairColor
+ \ vcSetHairColorRGB
+ \ vcSetHairColorRGB3P
+" }}}
+
+" cameraCommandsFunction {{{
+syn keyword cameraCommandsFunction
+ \ CameraGetRef
+ \ CameraLookAt
+ \ CameraLookAtPosition
+ \ CameraMove
+ \ CameraMoveToPosition
+ \ CameraReset
+ \ CameraRotate
+ \ CameraRotateToPosition
+ \ CameraSetRef
+ \ CameraStopLook
+" }}}
+
+" obmeFunction {{{
+syn keyword obmeFunction
+ \ ClearNthEIBaseCost
+ \ ClearNthEIEffectName
+ \ ClearNthEIHandlerParam
+ \ ClearNthEIHostility
+ \ ClearNthEIIconPath
+ \ ClearNthEIResistAV
+ \ ClearNthEISchool
+ \ ClearNthEIVFXCode
+ \ CreateMgef
+ \ GetMagicEffectHandlerC
+ \ GetMagicEffectHandlerParamC
+ \ GetMagicEffectHostilityC
+ \ GetNthEIBaseCost
+ \ GetNthEIEffectName
+ \ GetNthEIHandlerParam
+ \ GetNthEIHostility
+ \ GetNthEIIconPath
+ \ GetNthEIResistAV
+ \ GetNthEISchool
+ \ GetNthEIVFXCode
+ \ ResolveMgefCode
+ \ SetMagicEffectHandlerC
+ \ SetMagicEffectHandlerIntParamC
+ \ SetMagicEffectHandlerRefParamC
+ \ SetMagicEffectHostilityC
+ \ SetNthEIBaseCost
+ \ SetNthEIEffectName
+ \ SetNthEIHandlerIntParam
+ \ SetNthEIHandlerRefParam
+ \ SetNthEIHostility
+ \ SetNthEIIconPath
+ \ SetNthEIResistAV
+ \ SetNthEISchool
+ \ SetNthEIVFXCode
+" }}}
+
+" conscribeFunction {{{
+syn keyword conscribeFunction
+ \ DeleteLinesFromLog
+ \ GetLogLineCount
+ \ GetRegisteredLogNames
+ \ ReadFromLog
+ \ RegisterLog
+ \ Scribe
+ \ UnregisterLog
+" }}}
+
+" systemDialogFunction {{{
+syn keyword systemDialogFunction
+ \ Sysdlg_Browser
+ \ Sysdlg_ReadBrowser
+ \ Sysdlg_TextInput
+" }}}
+
+" csiFunction {{{
+syn keyword csiFunction
+ \ ClearSpellIcon
+ \ HasAssignedIcon
+ \ OverwriteSpellIcon
+ \ SetSpellIcon
+" }}}
+
+" haelFunction {{{
+syn keyword haelFunction
+ \ GetHUDActiveEffectLimit
+ \ SetHUDActiveEffectLimit
+" }}}
+
+" lcdFunction {{{
+syn keyword lcdFunction
+ \ lcd_addinttobuffer
+ \ lcd_addtexttobuffer
+ \ lcd_clearrect
+ \ lcd_cleartextbuffer
+ \ lcd_close
+ \ lcd_drawcircle
+ \ lcd_drawgrid
+ \ lcd_drawint
+ \ lcd_drawline
+ \ lcd_drawprogressbarh
+ \ lcd_drawprogressbarv
+ \ lcd_drawprogresscircle
+ \ lcd_drawrect
+ \ lcd_drawtext
+ \ lcd_drawtextbuffer
+ \ lcd_drawtexture
+ \ lcd_flush
+ \ lcd_getbuttonstate
+ \ lcd_getheight
+ \ lcd_getwidth
+ \ lcd_ismulti
+ \ lcd_isopen
+ \ lcd_open
+ \ lcd_refresh
+ \ lcd_savebuttonsnapshot
+ \ lcd_scale
+ \ lcd_setfont
+" }}}
+
+" Deprecated: {{{
+syn keyword obDeprecated
+ \ SetAltControl
+ \ GetAltControl
+ \ RefreshControlMap
+" }}}
+" }}}
+
+if !exists("did_obl_inits")
+
+ let did_obl_inits = 1
+ hi def link obseStatement Statement
+ hi def link obseStatementTwo Statement
+ hi def link obseDescBlock String
+ hi def link obseComment Comment
+ hi def link obseString String
+ hi def link obseStringFormatting Keyword
+ hi def link obseFloat Float
+ hi def link obseInt Number
+ hi def link obseToDo Todo
+ hi def link obseTypes Type
+ hi def link obseCondition Conditional
+ hi def link obseOperator Operator
+ hi def link obseOtherKey Special
+ hi def link obseScriptName Special
+ hi def link obseBlock Conditional
+ hi def link obseBlockType Structure
+ hi def link obseScriptNameRegion Underlined
+ hi def link obseNames Identifier
+ hi def link obseVariable Identifier
+ hi def link obseReference Special
+ hi def link obseRepeat Repeat
+
+ hi def link csFunction Function
+ hi def link obseFunction Function
+ hi def link obseArrayFunction Function
+ hi def link pluggyFunction Function
+ hi def link obseStringFunction Function
+ hi def link obseArrayFunction Function
+ hi def link tsfcFunction Function
+ hi def link blockheadFunction Function
+ hi def link switchNightEyeShaderFunction Function
+ hi def link obseivionReloadedFunction Function
+ hi def link menuQueFunction Function
+ hi def link eaxFunction Function
+ hi def link networkPipeFunction Function
+ hi def link nifseFunction Function
+ hi def link reidFunction Function
+ hi def link runtimeDebuggerFunction Function
+ hi def link addActorValuesFunction Function
+ hi def link memoryDumperFunction Function
+ hi def link algoholFunction Function
+ hi def link soundCommandsFunction Function
+ hi def link emcFunction Function
+ hi def link vipcxjFunction Function
+ hi def link cameraCommands Function
+ hi def link obmeFunction Function
+ hi def link conscribeFunction Function
+ hi def link systemDialogFunction Function
+ hi def link csiFunction Function
+ hi def link haelFunction Function
+ hi def link lcdFunction Function
+ hi def link skillAttribute String
+ hi def link obDeprecated WarningMsg
+
+endif
+
+let b:current_syntax = 'obse'
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/ocaml.vim b/runtime/syntax/ocaml.vim
new file mode 100644
index 0000000..af3efd3
--- /dev/null
+++ b/runtime/syntax/ocaml.vim
@@ -0,0 +1,393 @@
+" Vim syntax file
+" Language: OCaml
+" Filenames: *.ml *.mli *.mll *.mly
+" Maintainers: Markus Mottl <markus.mottl@gmail.com>
+" Karl-Heinz Sylla <Karl-Heinz.Sylla@gmd.de>
+" Issac Trotts <ijtrotts@ucdavis.edu>
+" URL: https://github.com/ocaml/vim-ocaml
+" Last Change:
+" 2018 Nov 08 - Improved highlighting of operators (Maëlan)
+" 2018 Apr 22 - Improved support for PPX (Andrey Popp)
+" 2018 Mar 16 - Remove raise, lnot and not from keywords (Étienne Millon, "copy")
+" 2017 Apr 11 - Improved matching of negative numbers (MM)
+" 2016 Mar 11 - Improved support for quoted strings (Glen Mével)
+" 2015 Aug 13 - Allow apostrophes in identifiers (Jonathan Chan, Einar Lielmanis)
+" 2015 Jun 17 - Added new "nonrec" keyword (MM)
+
+" A minor patch was applied to the official version so that object/end
+" can be distinguished from begin/end, which is used for indentation,
+" and folding. (David Baelde)
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax") && b:current_syntax == "ocaml"
+ finish
+endif
+
+let s:keepcpo = &cpo
+set cpo&vim
+
+" ' can be used in OCaml identifiers
+setlocal iskeyword+='
+
+" ` is part of the name of polymorphic variants
+setlocal iskeyword+=`
+
+" OCaml is case sensitive.
+syn case match
+
+" Access to the method of an object
+syn match ocamlMethod "#"
+
+" Script headers highlighted like comments
+syn match ocamlComment "^#!.*" contains=@Spell
+
+" Scripting directives
+syn match ocamlScript "^#\<\(quit\|labels\|warnings\|warn_error\|directory\|remove_directory\|cd\|load\|load_rec\|use\|mod_use\|install_printer\|remove_printer\|require\|list\|ppx\|principal\|predicates\|rectypes\|thread\|trace\|untrace\|untrace_all\|print_depth\|print_length\|camlp4o\|camlp4r\|topfind_log\|topfind_verbose\)\>"
+
+" lowercase identifier - the standard way to match
+syn match ocamlLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/
+
+syn match ocamlKeyChar "|"
+
+" Errors
+syn match ocamlBraceErr "}"
+syn match ocamlBrackErr "\]"
+syn match ocamlParenErr ")"
+syn match ocamlArrErr "|]"
+
+syn match ocamlCommentErr "\*)"
+
+syn match ocamlCountErr "\<downto\>"
+syn match ocamlCountErr "\<to\>"
+
+if !exists("ocaml_revised")
+ syn match ocamlDoErr "\<do\>"
+endif
+
+syn match ocamlDoneErr "\<done\>"
+syn match ocamlThenErr "\<then\>"
+
+" Error-highlighting of "end" without synchronization:
+" as keyword or as error (default)
+if exists("ocaml_noend_error")
+ syn match ocamlKeyword "\<end\>"
+else
+ syn match ocamlEndErr "\<end\>"
+endif
+
+" Some convenient clusters
+syn cluster ocamlAllErrs contains=ocamlBraceErr,ocamlBrackErr,ocamlParenErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr
+
+syn cluster ocamlAENoParen contains=ocamlBraceErr,ocamlBrackErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr
+
+syn cluster ocamlContained contains=ocamlTodo,ocamlPreDef,ocamlModParam,ocamlModParam1,ocamlMPRestr,ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3,ocamlModRHS,ocamlFuncWith,ocamlFuncStruct,ocamlModTypeRestr,ocamlModTRWith,ocamlWith,ocamlWithRest,ocamlModType,ocamlFullMod,ocamlVal
+
+
+" Enclosing delimiters
+syn region ocamlEncl transparent matchgroup=ocamlKeyword start="(" matchgroup=ocamlKeyword end=")" contains=ALLBUT,@ocamlContained,ocamlParenErr
+syn region ocamlEncl transparent matchgroup=ocamlKeyword start="{" matchgroup=ocamlKeyword end="}" contains=ALLBUT,@ocamlContained,ocamlBraceErr
+syn region ocamlEncl transparent matchgroup=ocamlKeyword start="\[" matchgroup=ocamlKeyword end="\]" contains=ALLBUT,@ocamlContained,ocamlBrackErr
+syn region ocamlEncl transparent matchgroup=ocamlKeyword start="\[|" matchgroup=ocamlKeyword end="|\]" contains=ALLBUT,@ocamlContained,ocamlArrErr
+
+
+" Comments
+syn region ocamlComment start="(\*" end="\*)" contains=@Spell,ocamlComment,ocamlTodo
+syn keyword ocamlTodo contained TODO FIXME XXX NOTE
+
+
+" Objects
+syn region ocamlEnd matchgroup=ocamlObject start="\<object\>" matchgroup=ocamlObject end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr
+
+
+" Blocks
+if !exists("ocaml_revised")
+ syn region ocamlEnd matchgroup=ocamlKeyword start="\<begin\>" matchgroup=ocamlKeyword end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr
+endif
+
+
+" "for"
+syn region ocamlNone matchgroup=ocamlKeyword start="\<for\>" matchgroup=ocamlKeyword end="\<\(to\|downto\)\>" contains=ALLBUT,@ocamlContained,ocamlCountErr
+
+
+" "do"
+if !exists("ocaml_revised")
+ syn region ocamlDo matchgroup=ocamlKeyword start="\<do\>" matchgroup=ocamlKeyword end="\<done\>" contains=ALLBUT,@ocamlContained,ocamlDoneErr
+endif
+
+" "if"
+syn region ocamlNone matchgroup=ocamlKeyword start="\<if\>" matchgroup=ocamlKeyword end="\<then\>" contains=ALLBUT,@ocamlContained,ocamlThenErr
+
+"" PPX nodes
+
+syn match ocamlPpxIdentifier /\(\[@\{1,3\}\)\@<=\w\+\(\.\w\+\)*/
+syn region ocamlPpx matchgroup=ocamlPpxEncl start="\[@\{1,3\}" contains=TOP end="\]"
+
+"" Modules
+
+" "sig"
+syn region ocamlSig matchgroup=ocamlSigEncl start="\<sig\>" matchgroup=ocamlSigEncl end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule
+syn region ocamlModSpec matchgroup=ocamlKeyword start="\<module\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contained contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlModTRWith,ocamlMPRestr
+
+" "open"
+syn match ocamlKeyword "\<open\>" skipwhite skipempty nextgroup=ocamlFullMod
+
+" "include"
+syn match ocamlKeyword "\<include\>" skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod
+
+" "module" - somewhat complicated stuff ;-)
+syn region ocamlModule matchgroup=ocamlKeyword start="\<module\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlPreDef
+syn region ocamlPreDef start="."me=e-1 matchgroup=ocamlKeyword end="\l\|=\|)"me=e-1 contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlGenMod,ocamlModTypeRestr,ocamlModTRWith nextgroup=ocamlModPreRHS
+syn region ocamlModParam start="([^*]" end=")" contained contains=ocamlGenMod,ocamlModParam1,ocamlSig,ocamlVal
+syn match ocamlModParam1 "\<\u\(\w\|'\)*\>" contained skipwhite skipempty
+syn match ocamlGenMod "()" contained skipwhite skipempty
+
+syn region ocamlMPRestr start=":" end="."me=e-1 contained contains=@ocamlComment skipwhite skipempty nextgroup=ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3
+syn region ocamlMPRestr1 matchgroup=ocamlSigEncl start="\ssig\s\=" matchgroup=ocamlSigEncl end="\<end\>" contained contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule
+syn region ocamlMPRestr2 start="\sfunctor\(\s\|(\)\="me=e-1 matchgroup=ocamlKeyword end="->" contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlGenMod skipwhite skipempty nextgroup=ocamlFuncWith,ocamlMPRestr2
+syn match ocamlMPRestr3 "\w\(\w\|'\)*\( *\. *\w\(\w\|'\)*\)*" contained
+syn match ocamlModPreRHS "=" contained skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod
+syn keyword ocamlKeyword val
+syn region ocamlVal matchgroup=ocamlKeyword start="\<val\>" matchgroup=ocamlLCIdentifier end="\<\l\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment,ocamlFullMod skipwhite skipempty nextgroup=ocamlMPRestr
+syn region ocamlModRHS start="." end=". *\w\|([^*]"me=e-2 contained contains=ocamlComment skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod
+syn match ocamlFullMod "\<\u\(\w\|'\)*\( *\. *\u\(\w\|'\)*\)*" contained skipwhite skipempty nextgroup=ocamlFuncWith
+
+syn region ocamlFuncWith start="([^*)]"me=e-1 end=")" contained contains=ocamlComment,ocamlWith,ocamlFuncStruct skipwhite skipempty nextgroup=ocamlFuncWith
+syn region ocamlFuncStruct matchgroup=ocamlStructEncl start="[^a-zA-Z]struct\>"hs=s+1 matchgroup=ocamlStructEncl end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr
+
+syn match ocamlModTypeRestr "\<\w\(\w\|'\)*\( *\. *\w\(\w\|'\)*\)*\>" contained
+syn region ocamlModTRWith start=":\s*("hs=s+1 end=")" contained contains=@ocamlAENoParen,ocamlWith
+syn match ocamlWith "\<\(\u\(\w\|'\)* *\. *\)*\w\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=ocamlWithRest
+syn region ocamlWithRest start="[^)]" end=")"me=e-1 contained contains=ALLBUT,@ocamlContained
+
+" "struct"
+syn region ocamlStruct matchgroup=ocamlStructEncl start="\<\(module\s\+\)\=struct\>" matchgroup=ocamlStructEncl end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr
+
+" "module type"
+syn region ocamlKeyword start="\<module\>\s*\<type\>\(\s*\<of\>\)\=" matchgroup=ocamlModule end="\<\w\(\w\|'\)*\>" contains=ocamlComment skipwhite skipempty nextgroup=ocamlMTDef
+syn match ocamlMTDef "=\s*\w\(\w\|'\)*\>"hs=s+1,me=s+1 skipwhite skipempty nextgroup=ocamlFullMod
+
+" Quoted strings
+syn region ocamlString matchgroup=ocamlQuotedStringDelim start="{\z\([a-z_]*\)|" end="|\z1}" contains=@Spell
+
+syn keyword ocamlKeyword and as assert class
+syn keyword ocamlKeyword constraint else
+syn keyword ocamlKeyword exception external fun
+
+syn keyword ocamlKeyword in inherit initializer
+syn keyword ocamlKeyword lazy let match
+syn keyword ocamlKeyword method mutable new nonrec of
+syn keyword ocamlKeyword parser private rec
+syn keyword ocamlKeyword try type
+syn keyword ocamlKeyword virtual when while with
+
+if exists("ocaml_revised")
+ syn keyword ocamlKeyword do value
+ syn keyword ocamlBoolean True False
+else
+ syn keyword ocamlKeyword function
+ syn keyword ocamlBoolean true false
+endif
+
+syn keyword ocamlType array bool char exn float format format4
+syn keyword ocamlType int int32 int64 lazy_t list nativeint option
+syn keyword ocamlType bytes string unit
+
+syn match ocamlConstructor "(\s*)"
+syn match ocamlConstructor "\[\s*\]"
+syn match ocamlConstructor "\[|\s*>|]"
+syn match ocamlConstructor "\[<\s*>\]"
+syn match ocamlConstructor "\u\(\w\|'\)*\>"
+
+" Polymorphic variants
+syn match ocamlConstructor "`\w\(\w\|'\)*\>"
+
+" Module prefix
+syn match ocamlModPath "\u\(\w\|'\)* *\."he=e-1
+
+syn match ocamlCharacter "'\\\d\d\d'\|'\\[\'ntbr]'\|'.'"
+syn match ocamlCharacter "'\\x\x\x'"
+syn match ocamlCharErr "'\\\d\d'\|'\\\d'"
+syn match ocamlCharErr "'\\[^\'ntbr]'"
+syn region ocamlString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
+
+syn match ocamlTopStop ";;"
+
+syn match ocamlAnyVar "\<_\>"
+syn match ocamlKeyChar "|[^\]]"me=e-1
+syn match ocamlKeyChar ";"
+syn match ocamlKeyChar "\~"
+syn match ocamlKeyChar "?"
+
+"" Operators
+
+" The grammar of operators is found there:
+" https://caml.inria.fr/pub/docs/manual-ocaml/names.html#operator-name
+" https://caml.inria.fr/pub/docs/manual-ocaml/extn.html#s:ext-ops
+" https://caml.inria.fr/pub/docs/manual-ocaml/extn.html#s:index-operators
+" =, *, < and > are both operator names and keywords, we let the user choose how
+" to display them (has to be declared before regular infix operators):
+syn match ocamlEqual "="
+syn match ocamlStar "*"
+syn match ocamlAngle "<"
+syn match ocamlAngle ">"
+" Custom indexing operators:
+syn region ocamlIndexing matchgroup=ocamlIndexingOp
+ \ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*("
+ \ end=")\(\_s*<-\)\?"
+ \ contains=ALLBUT,@ocamlContained,ocamlParenErr
+syn region ocamlIndexing matchgroup=ocamlIndexingOp
+ \ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*\["
+ \ end="]\(\_s*<-\)\?"
+ \ contains=ALLBUT,@ocamlContained,ocamlBrackErr
+syn region ocamlIndexing matchgroup=ocamlIndexingOp
+ \ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*{"
+ \ end="}\(\_s*<-\)\?"
+ \ contains=ALLBUT,@ocamlContained,ocamlBraceErr
+" Extension operators (has to be declared before regular infix operators):
+syn match ocamlExtensionOp "#[#~?!.:|&$%<=>@^*/+-]\+"
+" Infix and prefix operators:
+syn match ocamlPrefixOp "![~?!.:|&$%<=>@^*/+-]*"
+syn match ocamlPrefixOp "[~?][~?!.:|&$%<=>@^*/+-]\+"
+syn match ocamlInfixOp "[&$%@^/+-][~?!.:|&$%<=>@^*/+-]*"
+syn match ocamlInfixOp "[|<=>*][~?!.:|&$%<=>@^*/+-]\+"
+syn match ocamlInfixOp "#[~?!.:|&$%<=>@^*/+-]\+#\@!"
+syn match ocamlInfixOp "!=[~?!.:|&$%<=>@^*/+-]\@!"
+syn keyword ocamlInfixOpKeyword asr land lor lsl lsr lxor mod or
+" := is technically an infix operator, but we may want to show it as a keyword
+" (somewhat analogously to = for letâ€bindings and <- for assignations):
+syn match ocamlRefAssign ":="
+" :: is technically not an operator, but we may want to show it as such:
+syn match ocamlCons "::"
+" -> and <- are keywords, not operators (but can appear in longer operators):
+syn match ocamlArrow "->[~?!.:|&$%<=>@^*/+-]\@!"
+if exists("ocaml_revised")
+ syn match ocamlErr "<-[~?!.:|&$%<=>@^*/+-]\@!"
+else
+ syn match ocamlKeyChar "<-[~?!.:|&$%<=>@^*/+-]\@!"
+endif
+
+syn match ocamlNumber "-\=\<\d\(_\|\d\)*[l|L|n]\?\>"
+syn match ocamlNumber "-\=\<0[x|X]\(\x\|_\)\+[l|L|n]\?\>"
+syn match ocamlNumber "-\=\<0[o|O]\(\o\|_\)\+[l|L|n]\?\>"
+syn match ocamlNumber "-\=\<0[b|B]\([01]\|_\)\+[l|L|n]\?\>"
+syn match ocamlFloat "-\=\<\d\(_\|\d\)*\.\?\(_\|\d\)*\([eE][-+]\=\d\(_\|\d\)*\)\=\>"
+
+" Labels
+syn match ocamlLabel "\~\(\l\|_\)\(\w\|'\)*"lc=1
+syn match ocamlLabel "?\(\l\|_\)\(\w\|'\)*"lc=1
+syn region ocamlLabel transparent matchgroup=ocamlLabel start="[~?](\(\l\|_\)\(\w\|'\)*"lc=2 end=")"me=e-1 contains=ALLBUT,@ocamlContained,ocamlParenErr
+
+
+" Synchronization
+syn sync minlines=50
+syn sync maxlines=500
+
+if !exists("ocaml_revised")
+ syn sync match ocamlDoSync grouphere ocamlDo "\<do\>"
+ syn sync match ocamlDoSync groupthere ocamlDo "\<done\>"
+endif
+
+if exists("ocaml_revised")
+ syn sync match ocamlEndSync grouphere ocamlEnd "\<\(object\)\>"
+else
+ syn sync match ocamlEndSync grouphere ocamlEnd "\<\(begin\|object\)\>"
+endif
+
+syn sync match ocamlEndSync groupthere ocamlEnd "\<end\>"
+syn sync match ocamlStructSync grouphere ocamlStruct "\<struct\>"
+syn sync match ocamlStructSync groupthere ocamlStruct "\<end\>"
+syn sync match ocamlSigSync grouphere ocamlSig "\<sig\>"
+syn sync match ocamlSigSync groupthere ocamlSig "\<end\>"
+
+" Define the default highlighting.
+
+hi def link ocamlBraceErr Error
+hi def link ocamlBrackErr Error
+hi def link ocamlParenErr Error
+hi def link ocamlArrErr Error
+
+hi def link ocamlCommentErr Error
+
+hi def link ocamlCountErr Error
+hi def link ocamlDoErr Error
+hi def link ocamlDoneErr Error
+hi def link ocamlEndErr Error
+hi def link ocamlThenErr Error
+
+hi def link ocamlCharErr Error
+
+hi def link ocamlErr Error
+
+hi def link ocamlComment Comment
+
+hi def link ocamlModPath Include
+hi def link ocamlObject Include
+hi def link ocamlModule Include
+hi def link ocamlModParam1 Include
+hi def link ocamlGenMod Include
+hi def link ocamlModType Include
+hi def link ocamlMPRestr3 Include
+hi def link ocamlFullMod Include
+hi def link ocamlFuncWith Include
+hi def link ocamlModParam Include
+hi def link ocamlModTypeRestr Include
+hi def link ocamlWith Include
+hi def link ocamlMTDef Include
+hi def link ocamlSigEncl ocamlModule
+hi def link ocamlStructEncl ocamlModule
+
+hi def link ocamlScript Include
+
+hi def link ocamlConstructor Constant
+
+hi def link ocamlVal Keyword
+hi def link ocamlModPreRHS Keyword
+hi def link ocamlMPRestr2 Keyword
+hi def link ocamlKeyword Keyword
+hi def link ocamlMethod Include
+hi def link ocamlArrow Keyword
+hi def link ocamlKeyChar Keyword
+hi def link ocamlAnyVar Keyword
+hi def link ocamlTopStop Keyword
+
+hi def link ocamlRefAssign ocamlKeyChar
+hi def link ocamlEqual ocamlKeyChar
+hi def link ocamlStar ocamlInfixOp
+hi def link ocamlAngle ocamlInfixOp
+hi def link ocamlCons ocamlInfixOp
+
+hi def link ocamlPrefixOp ocamlOperator
+hi def link ocamlInfixOp ocamlOperator
+hi def link ocamlExtensionOp ocamlOperator
+hi def link ocamlIndexingOp ocamlOperator
+
+if exists("ocaml_highlight_operators")
+ hi def link ocamlInfixOpKeyword ocamlOperator
+ hi def link ocamlOperator Operator
+else
+ hi def link ocamlInfixOpKeyword Keyword
+endif
+
+hi def link ocamlBoolean Boolean
+hi def link ocamlCharacter Character
+hi def link ocamlNumber Number
+hi def link ocamlFloat Float
+hi def link ocamlString String
+hi def link ocamlQuotedStringDelim Identifier
+
+hi def link ocamlLabel Identifier
+
+hi def link ocamlType Type
+
+hi def link ocamlTodo Todo
+
+hi def link ocamlEncl Keyword
+
+hi def link ocamlPpxEncl ocamlEncl
+
+let b:current_syntax = "ocaml"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim: ts=8
diff --git a/runtime/syntax/occam.vim b/runtime/syntax/occam.vim
new file mode 100644
index 0000000..01d139b
--- /dev/null
+++ b/runtime/syntax/occam.vim
@@ -0,0 +1,116 @@
+" Vim syntax file
+" Language: occam
+" Copyright: Fred Barnes <frmb2@kent.ac.uk>, Mario Schweigler <ms44@kent.ac.uk>
+" Maintainer: Mario Schweigler <ms44@kent.ac.uk>
+" Last Change: 24 May 2003
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+"{{{ Settings
+" Set shift width for indent
+setlocal shiftwidth=2
+" Set the tab key size to two spaces
+setlocal softtabstop=2
+" Let tab keys always be expanded to spaces
+setlocal expandtab
+
+" Dots are valid in occam identifiers
+setlocal iskeyword+=.
+"}}}
+
+syn case match
+
+syn keyword occamType BYTE BOOL INT INT16 INT32 INT64 REAL32 REAL64 ANY
+syn keyword occamType CHAN DATA OF TYPE TIMER INITIAL VAL PORT MOBILE PLACED
+syn keyword occamType PROCESSOR PACKED RECORD PROTOCOL SHARED ROUND TRUNC
+
+syn keyword occamStructure SEQ PAR IF ALT PRI FORKING PLACE AT
+
+syn keyword occamKeyword PROC IS TRUE FALSE SIZE RECURSIVE REC
+syn keyword occamKeyword RETYPES RESHAPES STEP FROM FOR RESCHEDULE STOP SKIP FORK
+syn keyword occamKeyword FUNCTION VALOF RESULT ELSE CLONE CLAIM
+syn keyword occamBoolean TRUE FALSE
+syn keyword occamRepeat WHILE
+syn keyword occamConditional CASE
+syn keyword occamConstant MOSTNEG MOSTPOS
+
+syn match occamBrackets /\[\|\]/
+syn match occamParantheses /(\|)/
+
+syn keyword occamOperator AFTER TIMES MINUS PLUS INITIAL REM AND OR XOR NOT
+syn keyword occamOperator BITAND BITOR BITNOT BYTESIN OFFSETOF
+
+syn match occamOperator /::\|:=\|?\|!/
+syn match occamOperator /<\|>\|+\|-\|\*\|\/\|\\\|=\|\~/
+syn match occamOperator /@\|\$\$\|%\|&&\|<&\|&>\|<\]\|\[>\|\^/
+
+syn match occamSpecialChar /\M**\|*'\|*"\|*#\(\[0-9A-F\]\+\)/ contained
+syn match occamChar /\M\L\='\[^*\]'/
+syn match occamChar /L'[^']*'/ contains=occamSpecialChar
+
+syn case ignore
+syn match occamTodo /\<todo\>:\=/ contained
+syn match occamNote /\<note\>:\=/ contained
+syn case match
+syn keyword occamNote NOT contained
+
+syn match occamComment /--.*/ contains=occamCommentTitle,occamTodo,occamNote
+syn match occamCommentTitle /--\s*\u\a*\(\s\+\u\a*\)*:/hs=s+2 contained contains=occamTodo,occamNote
+syn match occamCommentTitle /--\s*KROC-LIBRARY\(\.so\|\.a\)\=\s*$/hs=s+2 contained
+syn match occamCommentTitle /--\s*\(KROC-OPTIONS:\|RUN-PARAMETERS:\)/hs=s+2 contained
+
+syn match occamIdentifier /\<[A-Z.][A-Z.0-9]*\>/
+syn match occamFunction /\<[A-Za-z.][A-Za-z0-9.]*\>/ contained
+
+syn match occamPPIdentifier /##.\{-}\>/
+
+syn region occamString start=/"/ skip=/\M*"/ end=/"/ contains=occamSpecialChar
+syn region occamCharString start=/'/ end=/'/ contains=occamSpecialChar
+
+syn match occamNumber /\<\d\+\(\.\d\+\(E\(+\|-\)\d\+\)\=\)\=/
+syn match occamNumber /-\d\+\(\.\d\+\(E\(+\|-\)\d\+\)\=\)\=/
+syn match occamNumber /#\(\d\|[A-F]\)\+/
+syn match occamNumber /-#\(\d\|[A-F]\)\+/
+
+syn keyword occamCDString SHARED EXTERNAL DEFINED NOALIAS NOUSAGE NOT contained
+syn keyword occamCDString FILE LINE PROCESS.PRIORITY OCCAM2.5 contained
+syn keyword occamCDString USER.DEFINED.OPERATORS INITIAL.DECL MOBILES contained
+syn keyword occamCDString BLOCKING.SYSCALLS VERSION NEED.QUAD.ALIGNMENT contained
+syn keyword occamCDString TARGET.CANONICAL TARGET.CPU TARGET.OS TARGET.VENDOR contained
+syn keyword occamCDString TRUE FALSE AND OR contained
+syn match occamCDString /<\|>\|=\|(\|)/ contained
+
+syn region occamCDirective start=/#\(USE\|INCLUDE\|PRAGMA\|DEFINE\|UNDEFINE\|UNDEF\|IF\|ELIF\|ELSE\|ENDIF\|WARNING\|ERROR\|RELAX\)\>/ end=/$/ contains=occamString,occamComment,occamCDString
+
+
+hi def link occamType Type
+hi def link occamKeyword Keyword
+hi def link occamComment Comment
+hi def link occamCommentTitle PreProc
+hi def link occamTodo Todo
+hi def link occamNote Todo
+hi def link occamString String
+hi def link occamCharString String
+hi def link occamNumber Number
+hi def link occamCDirective PreProc
+hi def link occamCDString String
+hi def link occamPPIdentifier PreProc
+hi def link occamBoolean Boolean
+hi def link occamSpecialChar SpecialChar
+hi def link occamChar Character
+hi def link occamStructure Structure
+hi def link occamIdentifier Identifier
+hi def link occamConstant Constant
+hi def link occamOperator Operator
+hi def link occamFunction Ignore
+hi def link occamRepeat Repeat
+hi def link occamConditional Conditional
+hi def link occamBrackets Type
+hi def link occamParantheses Delimiter
+
+
+let b:current_syntax = "occam"
+
diff --git a/runtime/syntax/omnimark.vim b/runtime/syntax/omnimark.vim
new file mode 100644
index 0000000..6294945
--- /dev/null
+++ b/runtime/syntax/omnimark.vim
@@ -0,0 +1,106 @@
+" Vim syntax file
+" Language: Omnimark
+" Maintainer: Paul Terray <mailto:terray@4dconcept.fr>
+" Last Change: 11 Oct 2000
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=@,48-57,_,128-167,224-235,-
+
+syn keyword omnimarkKeywords ACTIVATE AGAIN
+syn keyword omnimarkKeywords CATCH CLEAR CLOSE COPY COPY-CLEAR CROSS-TRANSLATE
+syn keyword omnimarkKeywords DEACTIVATE DECLARE DECREMENT DEFINE DISCARD DIVIDE DO DOCUMENT-END DOCUMENT-START DONE DTD-START
+syn keyword omnimarkKeywords ELEMENT ELSE ESCAPE EXIT
+syn keyword omnimarkKeywords FAIL FIND FIND-END FIND-START FORMAT
+syn keyword omnimarkKeywords GROUP
+syn keyword omnimarkKeywords HALT HALT-EVERYTHING
+syn keyword omnimarkKeywords IGNORE IMPLIED INCLUDE INCLUDE-END INCLUDE-START INCREMENT INPUT
+syn keyword omnimarkKeywords JOIN
+syn keyword omnimarkKeywords LINE-END LINE-START LOG LOOKAHEAD
+syn keyword omnimarkKeywords MACRO
+syn keyword omnimarkKeywords MACRO-END MARKED-SECTION MARKUP-COMMENT MARKUP-ERROR MARKUP-PARSER MASK MATCH MINUS MODULO
+syn keyword omnimarkKeywords NEW NEWLINE NEXT
+syn keyword omnimarkKeywords OPEN OUTPUT OUTPUT-TO OVER
+syn keyword omnimarkKeywords PROCESS PROCESS-END PROCESS-START PROCESSING-INSTRUCTION PROLOG-END PROLOG-IN-ERROR PUT
+syn keyword omnimarkKeywords REMOVE REOPEN REPEAT RESET RETHROW RETURN
+syn keyword omnimarkKeywords WHEN WHITE-SPACE
+syn keyword omnimarkKeywords SAVE SAVE-CLEAR SCAN SELECT SET SGML SGML-COMMENT SGML-DECLARATION-END SGML-DTD SGML-DTDS SGML-ERROR SGML-IN SGML-OUT SGML-PARSE SGML-PARSER SHIFT SUBMIT SUCCEED SUPPRESS
+syn keyword omnimarkKeywords SYSTEM-CALL
+syn keyword omnimarkKeywords TEST-SYSTEM THROW TO TRANSLATE
+syn keyword omnimarkKeywords UC UL UNLESS UP-TRANSLATE
+syn keyword omnimarkKeywords XML-PARSE
+
+syn keyword omnimarkCommands ACTIVE AFTER ANCESTOR AND ANOTHER ARG AS ATTACHED ATTRIBUTE ATTRIBUTES
+syn keyword omnimarkCommands BASE BEFORE BINARY BINARY-INPUT BINARY-MODE BINARY-OUTPUT BREAK-WIDTH BUFFER BY
+syn keyword omnimarkCommands CASE CHILDREN CLOSED COMPILED-DATE COMPLEMENT CONREF CONTENT CONTEXT-TRANSLATE COUNTER CREATED CREATING CREATOR CURRENT
+syn keyword omnimarkCommands DATA-ATTRIBUTE DATA-ATTRIBUTES DATA-CONTENT DATA-LETTERS DATE DECLARED-CONREF DECLARED-CURRENT DECLARED-DEFAULTED DECLARED-FIXED DECLARED-IMPLIED DECLARED-REQUIRED
+syn keyword omnimarkCommands DEFAULT-ENTITY DEFAULTED DEFAULTING DELIMITER DIFFERENCE DIRECTORY DOCTYPE DOCUMENT DOCUMENT-ELEMENT DOMAIN-FREE DOWN-TRANSLATE DTD DTD-END DTDS
+syn keyword omnimarkCommands ELEMENTS ELSEWHERE EMPTY ENTITIES ENTITY EPILOG-START EQUAL EXCEPT EXISTS EXTERNAL EXTERNAL-DATA-ENTITY EXTERNAL-ENTITY EXTERNAL-FUNCTION EXTERNAL-OUTPUT-FUNCTION
+syn keyword omnimarkCommands EXTERNAL-TEXT-ENTITY
+syn keyword omnimarkCommands FALSE FILE FUNCTION FUNCTION-LIBRARY
+syn keyword omnimarkCommands GENERAL GLOBAL GREATER-EQUAL GREATER-THAN GROUPS
+syn keyword omnimarkCommands HAS HASNT HERALDED-NAMES
+syn keyword omnimarkCommands ID ID-CHECKING IDREF IDREFS IN IN-LIBRARY INCLUSION INITIAL INITIAL-SIZE INSERTION-BREAK INSTANCE INTERNAL INVALID-DATA IS ISNT ITEM
+syn keyword omnimarkCommands KEY KEYED
+syn keyword omnimarkCommands LAST LASTMOST LC LENGTH LESS-EQUAL LESS-THAN LETTERS LIBRARY LITERAL LOCAL
+syn keyword omnimarkCommands MATCHES MIXED MODIFIABLE
+syn keyword omnimarkCommands NAME NAME-LETTERS NAMECASE NAMED NAMES NDATA-ENTITY NEGATE NESTED-REFERENTS NMTOKEN NMTOKENS NO NO-DEFAULT-IO NON-CDATA NON-IMPLIED NON-SDATA NOT NOTATION NUMBER-OF NUMBERS
+syn keyword omnimarkCommands NUTOKEN NUTOKENS
+syn keyword omnimarkCommands OCCURRENCE OF OPAQUE OPTIONAL OR
+syn keyword omnimarkCommands PARAMETER PARENT PAST PATTERN PLUS PREPARENT PREVIOUS PROPER PUBLIC
+syn keyword omnimarkCommands READ-ONLY READABLE REFERENT REFERENTS REFERENTS-ALLOWED REFERENTS-DISPLAYED REFERENTS-NOT-ALLOWED REMAINDER REPEATED REPLACEMENT-BREAK REVERSED
+syn keyword omnimarkCommands SILENT-REFERENT SIZE SKIP SOURCE SPECIFIED STATUS STREAM SUBDOC-ENTITY SUBDOCUMENT SUBDOCUMENTS SUBELEMENT SWITCH SYMBOL SYSTEM
+syn keyword omnimarkCommands TEXT-MODE THIS TIMES TOKEN TRUE
+syn keyword omnimarkCommands UNANCHORED UNATTACHED UNION USEMAP USING
+syn keyword omnimarkCommands VALUE VALUED VARIABLE
+syn keyword omnimarkCommands WITH WRITABLE
+syn keyword omnimarkCommands XML XML-DTD XML-DTDS
+syn keyword omnimarkCommands YES
+syn keyword omnimarkCommands #ADDITIONAL-INFO #APPINFO #CAPACITY #CHARSET #CLASS #COMMAND-LINE-NAMES #CONSOLE #CURRENT-INPUT #CURRENT-OUTPUT #DATA #DOCTYPE #DOCUMENT #DTD #EMPTY #ERROR #ERROR-CODE
+syn keyword omnimarkCommands #FILE-NAME #FIRST #GROUP #IMPLIED #ITEM #LANGUAGE-VERSION #LAST #LIBPATH #LIBRARY #LIBVALUE #LINE-NUMBER #MAIN-INPUT #MAIN-OUTPUT #MARKUP-ERROR-COUNT #MARKUP-ERROR-TOTAL
+syn keyword omnimarkCommands #MARKUP-PARSER #MARKUP-WARNING-COUNT #MARKUP-WARNING-TOTAL #MESSAGE #NONE #OUTPUT #PLATFORM-INFO #PROCESS-INPUT #PROCESS-OUTPUT #RECOVERY-INFO #SGML #SGML-ERROR-COUNT
+syn keyword omnimarkCommands #SGML-ERROR-TOTAL #SGML-WARNING-COUNT #SGML-WARNING-TOTAL #SUPPRESS #SYNTAX #!
+
+syn keyword omnimarkPatterns ANY ANY-TEXT
+syn keyword omnimarkPatterns BLANK
+syn keyword omnimarkPatterns CDATA CDATA-ENTITY CONTENT-END CONTENT-START
+syn keyword omnimarkPatterns DIGIT
+syn keyword omnimarkPatterns LETTER
+syn keyword omnimarkPatterns NUMBER
+syn keyword omnimarkPatterns PCDATA
+syn keyword omnimarkPatterns RCDATA
+syn keyword omnimarkPatterns SDATA SDATA-ENTITY SPACE
+syn keyword omnimarkPatterns TEXT
+syn keyword omnimarkPatterns VALUE-END VALUE-START
+syn keyword omnimarkPatterns WORD-END WORD-START
+
+syn region omnimarkComment start=";" end="$"
+
+" strings
+syn region omnimarkString matchgroup=Normal start=+'+ end=+'+ skip=+%'+ contains=omnimarkEscape
+syn region omnimarkString matchgroup=Normal start=+"+ end=+"+ skip=+%"+ contains=omnimarkEscape
+syn match omnimarkEscape contained +%.+
+syn match omnimarkEscape contained +%[0-9][0-9]#+
+
+"syn sync maxlines=100
+syn sync minlines=2000
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link omnimarkCommands Statement
+hi def link omnimarkKeywords Identifier
+hi def link omnimarkString String
+hi def link omnimarkPatterns Macro
+" hi def link omnimarkNumber Number
+hi def link omnimarkComment Comment
+hi def link omnimarkEscape Special
+
+
+let b:current_syntax = "omnimark"
+
+" vim: ts=8
+
diff --git a/runtime/syntax/opam.vim b/runtime/syntax/opam.vim
new file mode 100644
index 0000000..9ac1d41
--- /dev/null
+++ b/runtime/syntax/opam.vim
@@ -0,0 +1,38 @@
+" Vim syntax file
+" Language: OPAM - OCaml package manager
+" Maintainer: Markus Mottl <markus.mottl@gmail.com>
+" URL: https://github.com/ocaml/vim-ocaml
+" Last Change:
+" 2020 Dec 31 - Added header (Markus Mottl)
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" need %{vars}%
+" env: [[CAML_LD_LIBRARY_PATH = "%{lib}%/stublibs"]]
+syn keyword opamKeyword1 remove depends pin-depends depopts conflicts env packages patches version maintainer tags license homepage authors doc install author available name depexts substs synopsis description
+syn match opamKeyword2 "\v(bug-reports|post-messages|ocaml-version|opam-version|dev-repo|build-test|build-doc|build)"
+
+syn keyword opamTodo FIXME NOTE NOTES TODO XXX contained
+syn match opamComment "#.*$" contains=opamTodo,@Spell
+syn match opamOperator ">\|<\|=\|<=\|>="
+
+syn region opamInterpolate start=/%{/ end=/}%/ contained
+syn region opamString start=/"/ end=/"/ contains=opamInterpolate
+syn region opamSeq start=/\[/ end=/\]/ contains=ALLBUT,opamKeyword1,opamKeyword2
+syn region opamExp start=/{/ end=/}/ contains=ALLBUT,opamKeyword1,opamKeyword2
+
+hi link opamKeyword1 Keyword
+hi link opamKeyword2 Keyword
+
+hi link opamString String
+hi link opamExp Function
+hi link opamSeq Statement
+hi link opamOperator Operator
+hi link opamComment Comment
+hi link opamInterpolate Identifier
+
+let b:current_syntax = "opam"
+
+" vim: ts=2 sw=2
diff --git a/runtime/syntax/openroad.vim b/runtime/syntax/openroad.vim
new file mode 100644
index 0000000..e09f233
--- /dev/null
+++ b/runtime/syntax/openroad.vim
@@ -0,0 +1,252 @@
+" Vim syntax file
+" Language: CA-OpenROAD
+" Maintainer: Luis Moreno <lmoreno@eresmas.net>
+" Last change: 2001 Jun 12
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syntax case ignore
+
+" Keywords
+"
+syntax keyword openroadKeyword ABORT ALL ALTER AND ANY AS ASC AT AVG BEGIN
+syntax keyword openroadKeyword BETWEEN BY BYREF CALL CALLFRAME CALLPROC CASE
+syntax keyword openroadKeyword CLEAR CLOSE COMMIT CONNECT CONTINUE COPY COUNT
+syntax keyword openroadKeyword CREATE CURRENT DBEVENT DECLARE DEFAULT DELETE
+syntax keyword openroadKeyword DELETEROW DESC DIRECT DISCONNECT DISTINCT DO
+syntax keyword openroadKeyword DROP ELSE ELSEIF END ENDCASE ENDDECLARE ENDFOR
+syntax keyword openroadKeyword ENDIF ENDLOOP ENDWHILE ESCAPE EXECUTE EXISTS
+syntax keyword openroadKeyword EXIT FETCH FIELD FOR FROM GOTOFRAME GRANT GROUP
+syntax keyword openroadKeyword HAVING IF IMMEDIATE IN INDEX INITIALISE
+syntax keyword openroadKeyword INITIALIZE INQUIRE_INGRES INQUIRE_SQL INSERT
+syntax keyword openroadKeyword INSERTROW INSTALLATION INTEGRITY INTO KEY LIKE
+syntax keyword openroadKeyword LINK MAX MESSAGE METHOD MIN MODE MODIFY NEXT
+syntax keyword openroadKeyword NOECHO NOT NULL OF ON OPEN OPENFRAME OR ORDER
+syntax keyword openroadKeyword PERMIT PROCEDURE PROMPT QUALIFICATION RAISE
+syntax keyword openroadKeyword REGISTER RELOCATE REMOVE REPEAT REPEATED RESUME
+syntax keyword openroadKeyword RETURN RETURNING REVOKE ROLE ROLLBACK RULE SAVE
+syntax keyword openroadKeyword SAVEPOINT SELECT SET SLEEP SOME SUM SYSTEM TABLE
+syntax keyword openroadKeyword THEN TO TRANSACTION UNION UNIQUE UNTIL UPDATE
+syntax keyword openroadKeyword VALUES VIEW WHERE WHILE WITH WORK
+
+syntax keyword openroadTodo contained TODO
+
+" Catch errors caused by wrong parenthesis
+"
+syntax cluster openroadParenGroup contains=openroadParenError,openroadTodo
+syntax region openroadParen transparent start='(' end=')' contains=ALLBUT,@openroadParenGroup
+syntax match openroadParenError ")"
+highlight link openroadParenError cError
+
+" Numbers
+"
+syntax match openroadNumber "\<[0-9]\+\>"
+
+" String
+"
+syntax region openroadString start=+'+ end=+'+
+
+" Operators, Data Types and Functions
+"
+syntax match openroadOperator /[\+\-\*\/=\<\>;\(\)]/
+
+syntax keyword openroadType ARRAY BYTE CHAR DATE DECIMAL FLOAT FLOAT4
+syntax keyword openroadType FLOAT8 INT1 INT2 INT4 INTEGER INTEGER1
+syntax keyword openroadType INTEGER2 INTEGER4 MONEY OBJECT_KEY
+syntax keyword openroadType SECURITY_LABEL SMALLINT TABLE_KEY VARCHAR
+
+syntax keyword openroadFunc IFNULL
+
+" System Classes
+"
+syntax keyword openroadClass ACTIVEFIELD ANALOGFIELD APPFLAG APPSOURCE
+syntax keyword openroadClass ARRAYOBJECT ATTRIBUTEOBJECT BARFIELD
+syntax keyword openroadClass BITMAPOBJECT BOXTRIM BREAKSPEC BUTTONFIELD
+syntax keyword openroadClass CELLATTRIBUTE CHOICEBITMAP CHOICEDETAIL
+syntax keyword openroadClass CHOICEFIELD CHOICEITEM CHOICELIST CLASS
+syntax keyword openroadClass CLASSSOURCE COLUMNCROSS COLUMNFIELD
+syntax keyword openroadClass COMPOSITEFIELD COMPSOURCE CONTROLBUTTON
+syntax keyword openroadClass CROSSTABLE CURSORBITMAP CURSOROBJECT DATASTREAM
+syntax keyword openroadClass DATEOBJECT DBEVENTOBJECT DBSESSIONOBJECT
+syntax keyword openroadClass DISPLAYFORM DYNEXPR ELLIPSESHAPE ENTRYFIELD
+syntax keyword openroadClass ENUMFIELD EVENT EXTOBJECT EXTOBJFIELD
+syntax keyword openroadClass FIELDOBJECT FLEXIBLEFORM FLOATOBJECT FORMFIELD
+syntax keyword openroadClass FRAMEEXEC FRAMEFORM FRAMESOURCE FREETRIM
+syntax keyword openroadClass GHOSTEXEC GHOSTSOURCE IMAGEFIELD IMAGETRIM
+syntax keyword openroadClass INTEGEROBJECT LISTFIELD LISTVIEWCOLATTR
+syntax keyword openroadClass LISTVIEWFIELD LONGBYTEOBJECT LONGVCHAROBJECT
+syntax keyword openroadClass MATRIXFIELD MENUBAR MENUBUTTON MENUFIELD
+syntax keyword openroadClass MENUGROUP MENUITEM MENULIST MENUSEPARATOR
+syntax keyword openroadClass MENUSTACK MENUTOGGLE METHODEXEC METHODOBJECT
+syntax keyword openroadClass MONEYOBJECT OBJECT OPTIONFIELD OPTIONMENU
+syntax keyword openroadClass PALETTEFIELD POPUPBUTTON PROC4GLSOURCE PROCEXEC
+syntax keyword openroadClass PROCHANDLE QUERYCOL QUERYOBJECT QUERYPARM
+syntax keyword openroadClass QUERYTABLE RADIOFIELD RECTANGLESHAPE ROWCROSS
+syntax keyword openroadClass SCALARFIELD SCOPE SCROLLBARFIELD SEGMENTSHAPE
+syntax keyword openroadClass SESSIONOBJECT SHAPEFIELD SLIDERFIELD SQLSELECT
+syntax keyword openroadClass STACKFIELD STRINGOBJECT SUBFORM TABBAR
+syntax keyword openroadClass TABFIELD TABFOLDER TABLEFIELD TABPAGE
+syntax keyword openroadClass TOGGLEFIELD TREE TREENODE TREEVIEWFIELD
+syntax keyword openroadClass USERCLASSOBJECT USEROBJECT VIEWPORTFIELD
+
+" System Events
+"
+syntax keyword openroadEvent CHILDCLICK CHILDCLICKPOINT CHILDCOLLAPSED
+syntax keyword openroadEvent CHILDDETAILS CHILDDOUBLECLICK CHILDDRAGBOX
+syntax keyword openroadEvent CHILDDRAGSEGMENT CHILDENTRY CHILDEXIT
+syntax keyword openroadEvent CHILDEXPANDED CHILDHEADERCLICK CHILDMOVED
+syntax keyword openroadEvent CHILDPROPERTIES CHILDRESIZED CHILDSCROLL
+syntax keyword openroadEvent CHILDSELECT CHILDSELECTIONCHANGED CHILDSETVALUE
+syntax keyword openroadEvent CHILDUNSELECT CHILDVALIDATE CLICK CLICKPOINT
+syntax keyword openroadEvent COLLAPSED DBEVENT DETAILS DOUBLECLICK DRAGBOX
+syntax keyword openroadEvent DRAGSEGMENT ENTRY EXIT EXPANDED EXTCLASSEVENT
+syntax keyword openroadEvent FRAMEACTIVATE FRAMEDEACTIVATE HEADERCLICK
+syntax keyword openroadEvent INSERTROW LABELCHANGED MOVED PAGEACTIVATED
+syntax keyword openroadEvent PAGECHANGED PAGEDEACTIVATED PROPERTIES RESIZED
+syntax keyword openroadEvent SCROLL SELECT SELECTIONCHANGED SETVALUE
+syntax keyword openroadEvent TERMINATE UNSELECT USEREVENT VALIDATE
+syntax keyword openroadEvent WINDOWCLOSE WINDOWICON WINDOWMOVED WINDOWRESIZED
+syntax keyword openroadEvent WINDOWVISIBLE
+
+" System Constants
+"
+syntax keyword openroadConst BF_BMP BF_GIF BF_SUNRASTER BF_TIFF
+syntax keyword openroadConst BF_WINDOWCURSOR BF_WINDOWICON BF_XBM
+syntax keyword openroadConst CC_BACKGROUND CC_BLACK CC_BLUE CC_BROWN CC_CYAN
+syntax keyword openroadConst CC_DEFAULT_1 CC_DEFAULT_10 CC_DEFAULT_11
+syntax keyword openroadConst CC_DEFAULT_12 CC_DEFAULT_13 CC_DEFAULT_14
+syntax keyword openroadConst CC_DEFAULT_15 CC_DEFAULT_16 CC_DEFAULT_17
+syntax keyword openroadConst CC_DEFAULT_18 CC_DEFAULT_19 CC_DEFAULT_2
+syntax keyword openroadConst CC_DEFAULT_20 CC_DEFAULT_21 CC_DEFAULT_22
+syntax keyword openroadConst CC_DEFAULT_23 CC_DEFAULT_24 CC_DEFAULT_25
+syntax keyword openroadConst CC_DEFAULT_26 CC_DEFAULT_27 CC_DEFAULT_28
+syntax keyword openroadConst CC_DEFAULT_29 CC_DEFAULT_3 CC_DEFAULT_30
+syntax keyword openroadConst CC_DEFAULT_4 CC_DEFAULT_5 CC_DEFAULT_6
+syntax keyword openroadConst CC_DEFAULT_7 CC_DEFAULT_8 CC_DEFAULT_9
+syntax keyword openroadConst CC_FOREGROUND CC_GRAY CC_GREEN CC_LIGHT_BLUE
+syntax keyword openroadConst CC_LIGHT_BROWN CC_LIGHT_CYAN CC_LIGHT_GRAY
+syntax keyword openroadConst CC_LIGHT_GREEN CC_LIGHT_ORANGE CC_LIGHT_PINK
+syntax keyword openroadConst CC_LIGHT_PURPLE CC_LIGHT_RED CC_LIGHT_YELLOW
+syntax keyword openroadConst CC_MAGENTA CC_ORANGE CC_PALE_BLUE CC_PALE_BROWN
+syntax keyword openroadConst CC_PALE_CYAN CC_PALE_GRAY CC_PALE_GREEN
+syntax keyword openroadConst CC_PALE_ORANGE CC_PALE_PINK CC_PALE_PURPLE
+syntax keyword openroadConst CC_PALE_RED CC_PALE_YELLOW CC_PINK CC_PURPLE
+syntax keyword openroadConst CC_RED CC_SYS_ACTIVEBORDER CC_SYS_ACTIVECAPTION
+syntax keyword openroadConst CC_SYS_APPWORKSPACE CC_SYS_BACKGROUND
+syntax keyword openroadConst CC_SYS_BTNFACE CC_SYS_BTNSHADOW CC_SYS_BTNTEXT
+syntax keyword openroadConst CC_SYS_CAPTIONTEXT CC_SYS_GRAYTEXT
+syntax keyword openroadConst CC_SYS_HIGHLIGHT CC_SYS_HIGHLIGHTTEXT
+syntax keyword openroadConst CC_SYS_INACTIVEBORDER CC_SYS_INACTIVECAPTION
+syntax keyword openroadConst CC_SYS_INACTIVECAPTIONTEXT CC_SYS_MENU
+syntax keyword openroadConst CC_SYS_MENUTEXT CC_SYS_SCROLLBAR CC_SYS_SHADOW
+syntax keyword openroadConst CC_SYS_WINDOW CC_SYS_WINDOWFRAME
+syntax keyword openroadConst CC_SYS_WINDOWTEXT CC_WHITE CC_YELLOW
+syntax keyword openroadConst CL_INVALIDVALUE CP_BOTH CP_COLUMNS CP_NONE
+syntax keyword openroadConst CP_ROWS CS_CLOSED CS_CURRENT CS_NOCURRENT
+syntax keyword openroadConst CS_NO_MORE_ROWS CS_OPEN CS_OPEN_CACHED DC_BW
+syntax keyword openroadConst DC_COLOR DP_AUTOSIZE_FIELD DP_CLIP_IMAGE
+syntax keyword openroadConst DP_SCALE_IMAGE_H DP_SCALE_IMAGE_HW
+syntax keyword openroadConst DP_SCALE_IMAGE_W DS_CONNECTED DS_DISABLED
+syntax keyword openroadConst DS_DISCONNECTED DS_INGRES_DBMS DS_NO_DBMS
+syntax keyword openroadConst DS_ORACLE_DBMS DS_SQLSERVER_DBMS DV_NULL
+syntax keyword openroadConst DV_STRING DV_SYSTEM EH_NEXT_HANDLER EH_RESUME
+syntax keyword openroadConst EH_RETRY EP_INTERACTIVE EP_NONE EP_OUTPUT
+syntax keyword openroadConst ER_FAIL ER_NAMEEXISTS ER_OK ER_OUTOFRANGE
+syntax keyword openroadConst ER_ROWNOTFOUND ER_USER1 ER_USER10 ER_USER2
+syntax keyword openroadConst ER_USER3 ER_USER4 ER_USER5 ER_USER6 ER_USER7
+syntax keyword openroadConst ER_USER8 ER_USER9 FALSE FA_BOTTOMCENTER
+syntax keyword openroadConst FA_BOTTOMLEFT FA_BOTTOMRIGHT FA_CENTER
+syntax keyword openroadConst FA_CENTERLEFT FA_CENTERRIGHT FA_DEFAULT FA_NONE
+syntax keyword openroadConst FA_TOPCENTER FA_TOPLEFT FA_TOPRIGHT
+syntax keyword openroadConst FB_CHANGEABLE FB_CLICKPOINT FB_DIMMED FB_DRAGBOX
+syntax keyword openroadConst FB_DRAGSEGMENT FB_FLEXIBLE FB_INVISIBLE
+syntax keyword openroadConst FB_LANDABLE FB_MARKABLE FB_RESIZEABLE
+syntax keyword openroadConst FB_VIEWABLE FB_VISIBLE FC_LOWER FC_NONE FC_UPPER
+syntax keyword openroadConst FM_QUERY FM_READ FM_UPDATE FM_USER1 FM_USER2
+syntax keyword openroadConst FM_USER3 FO_DEFAULT FO_HORIZONTAL FO_VERTICAL
+syntax keyword openroadConst FP_BITMAP FP_CLEAR FP_CROSSHATCH FP_DARKSHADE
+syntax keyword openroadConst FP_DEFAULT FP_HORIZONTAL FP_LIGHTSHADE FP_SHADE
+syntax keyword openroadConst FP_SOLID FP_VERTICAL FT_NOTSETVALUE FT_SETVALUE
+syntax keyword openroadConst FT_TABTO FT_TAKEFOCUS GF_BOTTOM GF_DEFAULT
+syntax keyword openroadConst GF_LEFT GF_RIGHT GF_TOP HC_DOUBLEQUOTE
+syntax keyword openroadConst HC_FORMFEED HC_NEWLINE HC_QUOTE HC_SPACE HC_TAB
+syntax keyword openroadConst HV_CONTENTS HV_CONTEXT HV_HELPONHELP HV_KEY
+syntax keyword openroadConst HV_QUIT LS_3D LS_DASH LS_DASHDOT LS_DASHDOTDOT
+syntax keyword openroadConst LS_DEFAULT LS_DOT LS_SOLID LW_DEFAULT
+syntax keyword openroadConst LW_EXTRATHIN LW_MAXIMUM LW_MIDDLE LW_MINIMUM
+syntax keyword openroadConst LW_NOLINE LW_THICK LW_THIN LW_VERYTHICK
+syntax keyword openroadConst LW_VERYTHIN MB_DISABLED MB_ENABLED MB_INVISIBLE
+syntax keyword openroadConst MB_MOVEABLE MT_ERROR MT_INFO MT_NONE MT_WARNING
+syntax keyword openroadConst OP_APPEND OP_NONE OS3D OS_DEFAULT OS_SHADOW
+syntax keyword openroadConst OS_SOLID PU_CANCEL PU_OK QS_ACTIVE QS_INACTIVE
+syntax keyword openroadConst QS_SETCOL QY_ARRAY QY_CACHE QY_CURSOR QY_DIRECT
+syntax keyword openroadConst RC_CHILDSELECTED RC_DOWN RC_END RC_FIELDFREED
+syntax keyword openroadConst RC_FIELDORPHANED RC_GROUPSELECT RC_HOME RC_LEFT
+syntax keyword openroadConst RC_MODECHANGED RC_MOUSECLICK RC_MOUSEDRAG
+syntax keyword openroadConst RC_NEXT RC_NOTAPPLICABLE RC_PAGEDOWN RC_PAGEUP
+syntax keyword openroadConst RC_PARENTSELECTED RC_PREVIOUS RC_PROGRAM
+syntax keyword openroadConst RC_RESUME RC_RETURN RC_RIGHT RC_ROWDELETED
+syntax keyword openroadConst RC_ROWINSERTED RC_ROWSALLDELETED RC_SELECT
+syntax keyword openroadConst RC_TFSCROLL RC_TOGGLESELECT RC_UP RS_CHANGED
+syntax keyword openroadConst RS_DELETED RS_NEW RS_UNCHANGED RS_UNDEFINED
+syntax keyword openroadConst SK_CLOSE SK_COPY SK_CUT SK_DELETE SK_DETAILS
+syntax keyword openroadConst SK_DUPLICATE SK_FIND SK_GO SK_HELP SK_NEXT
+syntax keyword openroadConst SK_NONE SK_PASTE SK_PROPS SK_QUIT SK_REDO
+syntax keyword openroadConst SK_SAVE SK_TFDELETEALLROWS SK_TFDELETEROW
+syntax keyword openroadConst SK_TFFIND SK_TFINSERTROW SK_UNDO SP_APPSTARTING
+syntax keyword openroadConst SP_ARROW SP_CROSS SP_IBEAM SP_ICON SP_NO
+syntax keyword openroadConst SP_SIZE SP_SIZENESW SP_SIZENS SP_SIZENWSE
+syntax keyword openroadConst SP_SIZEWE SP_UPARROW SP_WAIT SY_NT SY_OS2
+syntax keyword openroadConst SY_UNIX SY_VMS SY_WIN95 TF_COURIER TF_HELVETICA
+syntax keyword openroadConst TF_LUCIDA TF_MENUDEFAULT TF_NEWCENTURY TF_SYSTEM
+syntax keyword openroadConst TF_TIMESROMAN TRUE UE_DATAERROR UE_EXITED
+syntax keyword openroadConst UE_NOTACTIVE UE_PURGED UE_RESUMED UE_UNKNOWN
+syntax keyword openroadConst WI_MOTIF WI_MSWIN32 WI_MSWINDOWS WI_NONE WI_PM
+syntax keyword openroadConst WP_FLOATING WP_INTERACTIVE WP_PARENTCENTERED
+syntax keyword openroadConst WP_PARENTRELATIVE WP_SCREENCENTERED
+syntax keyword openroadConst WP_SCREENRELATIVE WV_ICON WV_INVISIBLE
+syntax keyword openroadConst WV_UNREALIZED WV_VISIBLE
+
+" System Variables
+"
+syntax keyword openroadVar CurFrame CurProcedure CurMethod CurObject
+
+" Identifiers
+"
+syntax match openroadIdent /[a-zA-Z_][a-zA-Z_]*![a-zA-Z_][a-zA-Z_]*/
+
+" Comments
+"
+if exists("openroad_comment_strings")
+ syntax match openroadCommentSkip contained "^\s*\*\($\|\s\+\)"
+ syntax region openroadCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$"
+ syntax region openroadComment start="/\*" end="\*/" contains=openroadCommentString,openroadCharacter,openroadNumber
+ syntax match openroadComment "//.*" contains=openroadComment2String,openroadCharacter,openroadNumber
+else
+ syn region openroadComment start="/\*" end="\*/"
+ syn match openroadComment "//.*"
+endif
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+"
+
+hi def link openroadKeyword Statement
+hi def link openroadNumber Number
+hi def link openroadString String
+hi def link openroadComment Comment
+hi def link openroadOperator Operator
+hi def link openroadType Type
+hi def link openroadFunc Special
+hi def link openroadClass Type
+hi def link openroadEvent Statement
+hi def link openroadConst Constant
+hi def link openroadVar Identifier
+hi def link openroadIdent Identifier
+hi def link openroadTodo Todo
+
+
+let b:current_syntax = "openroad"
diff --git a/runtime/syntax/openscad.vim b/runtime/syntax/openscad.vim
new file mode 100644
index 0000000..1e20c74
--- /dev/null
+++ b/runtime/syntax/openscad.vim
@@ -0,0 +1,129 @@
+" Vim syntax file
+" Language: OpenSCAD
+" Maintainer: Niklas Adam <adam@oddodd.org>
+" Last change: 2022-04-15
+"
+"
+" From salkin-mada/openscad.nvim
+" Building on the work of Sirtaj Singh Kang and others for vim-openscad
+"
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syntax case ignore
+
+setlocal iskeyword=a-z,A-Z,48-57,_
+
+syn match openscadAoperator "{"
+syn match openscadAoperator "}"
+syn match openscadLi "\["
+syn match openscadLi "\]"
+syn match openscadPar "("
+syn match openscadPar ")"
+
+syn match openscadSpecialVariable "\$[a-zA-Z_]\+\>" display
+syn match openscadModifier "^\s*[\*\!\#\%]" display
+
+syn match openscadBinaryoperator "+"
+syn match openscadBinaryoperator "-"
+syn match openscadBinaryoperator "*"
+syn match openscadBinaryoperator "/"
+syn match openscadBinaryoperator "%"
+syn match openscadBinaryoperator "\*\*"
+syn match openscadBinaryoperator "<"
+syn match openscadBinaryoperator "<="
+syn match openscadBinaryoperator ">"
+syn match openscadBinaryoperator ">="
+syn match openscadBinaryoperator "="
+syn match openscadBinaryoperator "=="
+syn match openscadBinaryoperator "==="
+syn match openscadBinaryoperator "!="
+syn match openscadBinaryoperator "!=="
+syn match openscadBinaryoperator "&"
+syn match openscadBinaryoperator "|"
+syn match openscadBinaryoperator "<!"
+syn match openscadBinaryoperator "?"
+syn match openscadBinaryoperator "??"
+syn match openscadBinaryoperator "!?"
+syn match openscadBinaryoperator "!"
+syn match openscadBinaryoperator "#"
+syn match openscadBinaryoperator "_"
+syn match openscadBinaryoperator "\.\."
+syn match openscadBinaryoperator "\.\.\."
+syn match openscadBinaryoperator "`"
+syn match openscadBinaryoperator ":"
+
+syn keyword openscadFunctionDef function nextgroup=openscadFunction skipwhite skipempty
+syn match openscadFunction /\<\h\w*\>/ contained display
+
+syn keyword openscadModuleDef module nextgroup=openscadModule skipwhite skipempty
+syn match openscadModule /\<\h\w*\>/ contained display
+
+syn keyword openscadStatement echo assign let assert
+syn keyword openscadConditional if else
+syn keyword openscadRepeat for intersection_for
+syn keyword openscadInclude include use
+syn keyword openscadCsgKeyword union difference intersection render intersection_for
+syn keyword openscadTransform scale rotate translate resize mirror multmatrix color minkowski hull projection linear_extrude rotate_extrude offset
+syn keyword openscadPrimitiveSolid cube sphere cylinder polyhedron surface
+syn keyword openscadPrimitive2D square circle polygon import_dxf text
+syn keyword openscadPrimitiveImport import child children
+
+syn match openscadNumbers "\<\d\|\.\d" contains=openscadNumber display transparent
+syn match openscadNumber "\d\+" display contained
+syn match openscadNumber "\.\d\+" display contained
+
+syn region openscadString start=/"/ skip=/\\"/ end=/"/
+
+syn keyword openscadBoolean true false
+
+syn keyword openscadCommentTodo TODO FIXME XXX NOTE contained display
+syn match openscadInlineComment ://.*$: contains=openscadCommentTodo
+syn region openscadBlockComment start=:/\*: end=:\*/: fold contains=openscadCommentTodo
+
+syn region openscadBlock start="{" end="}" transparent fold
+syn region openscadVector start="\[" end="\]" transparent fold
+
+syn keyword openscadBuiltin abs acos asin atan atan2 ceil cos exp floor ln log
+syn keyword openscadBuiltin lookup max min pow rands round sign sin sqrt tan
+syn keyword openscadBuiltin str len search version version_num concat chr ord cross norm
+syn keyword openscadBuiltin parent_module
+syn keyword openscadBuiltin dxf_cross dxf_dim
+syn keyword openscadBuiltinSpecial PI undef
+
+"""""""""""""""""""""""""""""""""""""""""
+" linkage
+"""""""""""""""""""""""""""""""""""""""""
+hi def link openscadFunctionDef Structure
+hi def link openscadAoperator Function
+hi def link openscadLi Function
+" hi def link openscadPar Structure
+hi def link openscadBuiltinSpecial Special
+hi def link openscadBinaryoperator Special
+hi def link openscadFunction Function
+hi def link openscadModuleDef Structure
+hi def link openscadModule Function
+hi def link openscadBlockComment Comment
+hi def link openscadBoolean Boolean
+hi def link openscadBuiltin Function
+hi def link openscadConditional Conditional
+hi def link openscadCsgKeyword Structure
+hi def link openscadInclude Include
+hi def link openscadInlineComment Comment
+hi def link openscadModifier Special
+hi def link openscadStatement Statement
+hi def link openscadNumbers Number
+hi def link openscadNumber Number
+hi def link openscadPrimitiveSolid Keyword
+hi def link openscadPrimitive2D Keyword
+hi def link openscadPrimitiveImport Keyword
+hi def link openscadRepeat Repeat
+hi def link openscadSpecialVariable Special
+hi def link openscadString String
+hi def link openscadTransform Statement
+hi def link openscadCommentTodo Todo
+
+let b:current_syntax = 'openscad'
diff --git a/runtime/syntax/openvpn.vim b/runtime/syntax/openvpn.vim
new file mode 100644
index 0000000..02fd24b
--- /dev/null
+++ b/runtime/syntax/openvpn.vim
@@ -0,0 +1,72 @@
+" Vim syntax file
+" Language: OpenVPN
+" Maintainer: ObserverOfTime <chronobserver@disroot.org>
+" Filenames: *.ovpn
+" Last Change: 2022 Oct 16
+
+if exists('b:current_syntax')
+ finish
+endif
+
+let s:cpo_save = &cpoptions
+set cpoptions&vim
+
+" Options
+syntax match openvpnOption /^[a-z-]\+/
+ \ skipwhite nextgroup=openvpnArgList
+syntax match openvpnArgList /.*$/ transparent contained
+ \ contains=openvpnArgument,openvpnNumber,
+ \ openvpnIPv4Address,openvpnIPv6Address,
+ \ openvpnSignal,openvpnComment
+
+" Arguments
+syntax match openvpnArgument /[^\\"' \t]\+/
+ \ contained contains=openvpnEscape
+syntax region openvpnArgument matchgroup=openvpnQuote
+ \ start=/"/ skip=/\\"/ end=/"/
+ \ oneline contained contains=openvpnEscape
+syntax region openvpnArgument matchgroup=openvpnQuote
+ \ start=/'/ skip=/\\'/ end=/'/
+ \ oneline contained
+syntax match openvpnEscape /\\[\\" \t]/ contained
+
+" Numbers
+syntax match openvpnNumber /\<[1-9][0-9]*\(\.[0-9]\+\)\?\>/ contained
+
+" Signals
+syntax match openvpnSignal /SIG\(HUP\|INT\|TERM\|USER[12]\)/ contained
+
+" IP addresses
+syntax match openvpnIPv4Address /\(\d\{1,3}\.\)\{3}\d\{1,3}/
+ \ contained nextgroup=openvpnSlash
+syntax match openvpnIPv6Address /\([A-F0-9]\{1,4}:\)\{7}\[A-F0-9]\{1,4}/
+ \ contained nextgroup=openvpnSlash
+syntax match openvpnSlash "/" contained
+ \ nextgroup=openvpnIPv4Address,openvpnIPv6Address,openvpnNumber
+
+" Inline files
+syntax region openvpnInline matchgroup=openvpnTag
+ \ start=+^<\z([a-z-]\+\)>+ end=+^</\z1>+
+
+" Comments
+syntax keyword openvpnTodo contained TODO FIXME NOTE XXX
+syntax match openvpnComment /^[;#].*$/ contains=openvpnTodo
+syntax match openvpnComment /\s\+\zs[;#].*$/ contains=openvpnTodo
+
+hi def link openvpnArgument String
+hi def link openvpnComment Comment
+hi def link openvpnEscape SpecialChar
+hi def link openvpnIPv4Address Constant
+hi def link openvpnIPv6Address Constant
+hi def link openvpnNumber Number
+hi def link openvpnOption Keyword
+hi def link openvpnQuote Quote
+hi def link openvpnSignal Special
+hi def link openvpnSlash Delimiter
+hi def link openvpnTag Tag
+hi def link openvpnTodo Todo
+
+let b:current_syntax = 'openvpn'
+
+let &cpoptions = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/opl.vim b/runtime/syntax/opl.vim
new file mode 100644
index 0000000..8b66a5b
--- /dev/null
+++ b/runtime/syntax/opl.vim
@@ -0,0 +1,89 @@
+" Vim syntax file
+" Language: OPL
+" Maintainer: Czo <Olivier.Sirol@lip6.fr>
+" Last Change: 2012 Feb 03 by Thilo Six
+" $Id: opl.vim,v 1.1 2004/06/13 17:34:11 vimboss Exp $
+
+" Open Psion Language... (EPOC16/EPOC32)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" case is not significant
+syn case ignore
+
+" A bunch of useful OPL keywords
+syn keyword OPLStatement proc endp abs acos addr adjustalloc alert alloc app
+syn keyword OPLStatement append appendsprite asc asin at atan back beep
+syn keyword OPLStatement begintrans bookmark break busy byref cache
+syn keyword OPLStatement cachehdr cacherec cachetidy call cancel caption
+syn keyword OPLStatement changesprite chr$ clearflags close closesprite cls
+syn keyword OPLStatement cmd$ committrans compact compress const continue
+syn keyword OPLStatement copy cos count create createsprite cursor
+syn keyword OPLStatement datetosecs datim$ day dayname$ days daystodate
+syn keyword OPLStatement dbuttons dcheckbox dchoice ddate declare dedit
+syn keyword OPLStatement deditmulti defaultwin deg delete dfile dfloat
+syn keyword OPLStatement dialog diaminit diampos dinit dir$ dlong do dow
+syn keyword OPLStatement dposition drawsprite dtext dtime dxinput edit else
+syn keyword OPLStatement elseif enda endif endv endwh entersend entersend0
+syn keyword OPLStatement eof erase err err$ errx$ escape eval exist exp ext
+syn keyword OPLStatement external find findfield findlib first fix$ flags
+syn keyword OPLStatement flt font freealloc gat gborder gbox gbutton
+syn keyword OPLStatement gcircle gclock gclose gcls gcolor gcopy gcreate
+syn keyword OPLStatement gcreatebit gdrawobject gellipse gen$ get get$
+syn keyword OPLStatement getcmd$ getdoc$ getevent getevent32 geteventa32
+syn keyword OPLStatement geteventc getlibh gfill gfont ggmode ggrey gheight
+syn keyword OPLStatement gidentity ginfo ginfo32 ginvert giprint glineby
+syn keyword OPLStatement glineto gloadbit gloadfont global gmove gorder
+syn keyword OPLStatement goriginx goriginy goto gotomark gpatt gpeekline
+syn keyword OPLStatement gpoly gprint gprintb gprintclip grank gsavebit
+syn keyword OPLStatement gscroll gsetpenwidth gsetwin gstyle gtmode gtwidth
+syn keyword OPLStatement gunloadfont gupdate guse gvisible gwidth gx
+syn keyword OPLStatement gxborder gxprint gy hex$ hour iabs icon if include
+syn keyword OPLStatement input insert int intf intrans key key$ keya keyc
+syn keyword OPLStatement killmark kmod last lclose left$ len lenalloc
+syn keyword OPLStatement linklib ln loadlib loadm loc local lock log lopen
+syn keyword OPLStatement lower$ lprint max mcard mcasc mean menu mid$ min
+syn keyword OPLStatement minit minute mkdir modify month month$ mpopup
+syn keyword OPLStatement newobj newobjh next notes num$ odbinfo off onerr
+syn keyword OPLStatement open openr opx os parse$ path pause peek pi
+syn keyword OPLStatement pointerfilter poke pos position possprite print
+syn keyword OPLStatement put rad raise randomize realloc recsize rename
+syn keyword OPLStatement rept$ return right$ rmdir rnd rollback sci$ screen
+syn keyword OPLStatement screeninfo second secstodate send setdoc setflags
+syn keyword OPLStatement setname setpath sin space sqr statuswin
+syn keyword OPLStatement statwininfo std stop style sum tan testevent trap
+syn keyword OPLStatement type uadd unloadlib unloadm until update upper$
+syn keyword OPLStatement use usr usr$ usub val var vector week while year
+" syn keyword OPLStatement rem
+
+
+syn match OPLNumber "\<\d\+\>"
+syn match OPLNumber "\<\d\+\.\d*\>"
+syn match OPLNumber "\.\d\+\>"
+
+syn region OPLString start=+"+ end=+"+
+syn region OPLComment start="REM[\t ]" end="$"
+syn match OPLMathsOperator "-\|=\|[:<>+\*^/\\]"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link OPLStatement Statement
+hi def link OPLNumber Number
+hi def link OPLString String
+hi def link OPLComment Comment
+hi def link OPLMathsOperator Conditional
+" hi def link OPLError Error
+
+
+let b:current_syntax = "opl"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/ora.vim b/runtime/syntax/ora.vim
new file mode 100644
index 0000000..9903479
--- /dev/null
+++ b/runtime/syntax/ora.vim
@@ -0,0 +1,464 @@
+" Vim syntax file
+" Language: Oracle config files (.ora) (Oracle 8i, ver. 8.1.5)
+" Maintainer: Sandor Kopanyi <sandor.kopanyi@mailbox.hu>
+" Url: <->
+" Last Change: 2003 May 11
+
+" * the keywords are listed by file (sqlnet.ora, listener.ora, etc.)
+" * the parathesis-checking is made at the beginning for all keywords
+" * possible values are listed also
+" * there are some overlappings (e.g. METHOD is mentioned both for
+" sqlnet-ora and tnsnames.ora; since will not cause(?) problems
+" is easier to follow separately each file's keywords)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'ora'
+endif
+
+syn case ignore
+
+"comments
+syn match oraComment "\#.*"
+
+" catch errors caused by wrong parenthesis
+syn region oraParen transparent start="(" end=")" contains=@oraAll,oraParen
+syn match oraParenError ")"
+
+" strings
+syn region oraString start=+"+ end=+"+
+
+"common .ora staff
+
+"common protocol parameters
+syn keyword oraKeywordGroup ADDRESS ADDRESS_LIST
+syn keyword oraKeywordGroup DESCRIPTION_LIST DESCRIPTION
+"all protocols
+syn keyword oraKeyword PROTOCOL
+syn keyword oraValue ipc tcp nmp
+"Bequeath
+syn keyword oraKeyword PROGRAM ARGV0 ARGS
+"IPC
+syn keyword oraKeyword KEY
+"Named Pipes
+syn keyword oraKeyword SERVER PIPE
+"LU6.2
+syn keyword oraKeyword LU_NAME LLU LOCAL_LU LLU_NAME LOCAL_LU_NAME
+syn keyword oraKeyword MODE MDN
+syn keyword oraKeyword PLU PARTNER_LU_NAME PLU_LA PARTNER_LU_LOCAL_ALIAS
+syn keyword oraKeyword TP_NAME TPN
+"SPX
+syn keyword oraKeyword SERVICE
+"TCP/IP and TCP/IP with SSL
+syn keyword oraKeyword HOST PORT
+
+"misc. keywords I've met but didn't find in manual (maybe they are deprecated?)
+syn keyword oraKeywordGroup COMMUNITY_LIST
+syn keyword oraKeyword COMMUNITY NAME DEFAULT_ZONE
+syn keyword oraValue tcpcom
+
+"common values
+syn keyword oraValue yes no on off true false null all none ok
+"word 'world' is used a lot...
+syn keyword oraModifier world
+
+"misc. common keywords
+syn keyword oraKeyword TRACE_DIRECTORY TRACE_LEVEL TRACE_FILE
+
+
+"sqlnet.ora
+syn keyword oraKeywordPref NAMES NAMESCTL
+syn keyword oraKeywordPref OSS SOURCE SQLNET TNSPING
+syn keyword oraKeyword AUTOMATIC_IPC BEQUEATH_DETACH DAEMON TRACE_MASK
+syn keyword oraKeyword DISABLE_OOB
+syn keyword oraKeyword LOG_DIRECTORY_CLIENT LOG_DIRECTORY_SERVER
+syn keyword oraKeyword LOG_FILE_CLIENT LOG_FILE_SERVER
+syn keyword oraKeyword DCE PREFIX DEFAULT_DOMAIN DIRECTORY_PATH
+syn keyword oraKeyword INITIAL_RETRY_TIMEOUT MAX_OPEN_CONNECTIONS
+syn keyword oraKeyword MESSAGE_POOL_START_SIZE NIS META_MAP
+syn keyword oraKeyword PASSWORD PREFERRED_SERVERS REQUEST_RETRIES
+syn keyword oraKeyword INTERNAL_ENCRYPT_PASSWORD INTERNAL_USE
+syn keyword oraKeyword NO_INITIAL_SERVER NOCONFIRM
+syn keyword oraKeyword SERVER_PASSWORD TRACE_UNIQUE MY_WALLET
+syn keyword oraKeyword LOCATION DIRECTORY METHOD METHOD_DATA
+syn keyword oraKeyword SQLNET_ADDRESS
+syn keyword oraKeyword AUTHENTICATION_SERVICES
+syn keyword oraKeyword AUTHENTICATION_KERBEROS5_SERVICE
+syn keyword oraKeyword AUTHENTICATION_GSSAPI_SERVICE
+syn keyword oraKeyword CLIENT_REGISTRATION
+syn keyword oraKeyword CRYPTO_CHECKSUM_CLIENT CRYPTO_CHECKSUM_SERVER
+syn keyword oraKeyword CRYPTO_CHECKSUM_TYPES_CLIENT CRYPTO_CHECKSUM_TYPES_SERVER
+syn keyword oraKeyword CRYPTO_SEED
+syn keyword oraKeyword ENCRYPTION_CLIENT ENCRYPTION_SERVER
+syn keyword oraKeyword ENCRYPTION_TYPES_CLIENT ENCRYPTION_TYPES_SERVER
+syn keyword oraKeyword EXPIRE_TIME
+syn keyword oraKeyword IDENTIX_FINGERPRINT_DATABASE IDENTIX_FINGERPRINT_DATABASE_USER
+syn keyword oraKeyword IDENTIX_FINGERPRINT_DATABASE_PASSWORD IDENTIX_FINGERPRINT_METHOD
+syn keyword oraKeyword KERBEROS5_CC_NAME KERBEROS5_CLOCKSKEW KERBEROS5_CONF
+syn keyword oraKeyword KERBEROS5_KEYTAB KERBEROS5_REALMS
+syn keyword oraKeyword RADIUS_ALTERNATE RADIUS_ALTERNATE_PORT RADIUS_ALTERNATE_RETRIES
+syn keyword oraKeyword RADIUS_AUTHENTICATION_TIMEOUT RADIUS_AUTHENTICATION
+syn keyword oraKeyword RADIUS_AUTHENTICATION_INTERFACE RADIUS_AUTHENTICATION_PORT
+syn keyword oraKeyword RADIUS_AUTHENTICATION_RETRIES RADIUS_AUTHENTICATION_TIMEOUT
+syn keyword oraKeyword RADIUS_CHALLENGE_RESPONSE RADIUS_SECRET RADIUS_SEND_ACCOUNTING
+syn keyword oraKeyword SSL_CLIENT_AUTHENTICATION SSL_CIPHER_SUITES SSL_VERSION
+syn keyword oraKeyword TRACE_DIRECTORY_CLIENT TRACE_DIRECTORY_SERVER
+syn keyword oraKeyword TRACE_FILE_CLIENT TRACE_FILE_SERVER
+syn keyword oraKeyword TRACE_LEVEL_CLIENT TRACE_LEVEL_SERVER
+syn keyword oraKeyword TRACE_UNIQUE_CLIENT
+syn keyword oraKeyword USE_CMAN USE_DEDICATED_SERVER
+syn keyword oraValue user admin support
+syn keyword oraValue accept accepted reject rejected requested required
+syn keyword oraValue md5 rc4_40 rc4_56 rc4_128 des des_40
+syn keyword oraValue tnsnames onames hostname dce nis novell
+syn keyword oraValue file oracle
+syn keyword oraValue oss
+syn keyword oraValue beq nds nts kerberos5 securid cybersafe identix dcegssapi radius
+syn keyword oraValue undetermined
+
+"tnsnames.ora
+syn keyword oraKeywordGroup CONNECT_DATA FAILOVER_MODE
+syn keyword oraKeyword FAILOVER LOAD_BALANCE SOURCE_ROUTE TYPE_OF_SERVICE
+syn keyword oraKeyword BACKUP TYPE METHOD GLOBAL_NAME HS
+syn keyword oraKeyword INSTANCE_NAME RDB_DATABASE SDU SERVER
+syn keyword oraKeyword SERVICE_NAME SERVICE_NAMES SID
+syn keyword oraKeyword HANDLER_NAME EXTPROC_CONNECTION_DATA
+syn keyword oraValue session select basic preconnect dedicated shared
+
+"listener.ora
+syn keyword oraKeywordGroup SID_LIST SID_DESC PRESPAWN_LIST PRESPAWN_DESC
+syn match oraKeywordGroup "SID_LIST_\w*"
+syn keyword oraKeyword PROTOCOL_STACK PRESENTATION SESSION
+syn keyword oraKeyword GLOBAL_DBNAME ORACLE_HOME PROGRAM SID_NAME
+syn keyword oraKeyword PRESPAWN_MAX POOL_SIZE TIMEOUT
+syn match oraKeyword "CONNECT_TIMEOUT_\w*"
+syn match oraKeyword "LOG_DIRECTORY_\w*"
+syn match oraKeyword "LOG_FILE_\w*"
+syn match oraKeyword "PASSWORDS_\w*"
+syn match oraKeyword "STARTUP_WAIT_TIME_\w*"
+syn match oraKeyword "STARTUP_WAITTIME_\w*"
+syn match oraKeyword "TRACE_DIRECTORY_\w*"
+syn match oraKeyword "TRACE_FILE_\w*"
+syn match oraKeyword "TRACE_LEVEL_\w*"
+syn match oraKeyword "USE_PLUG_AND_PLAY_\w*"
+syn keyword oraValue ttc giop ns raw
+
+"names.ora
+syn keyword oraKeywordGroup ADDRESSES ADMIN_REGION
+syn keyword oraKeywordGroup DEFAULT_FORWARDERS FORWARDER_LIST FORWARDER
+syn keyword oraKeywordGroup DOMAIN_HINTS HINT_DESC HINT_LIST
+syn keyword oraKeywordGroup DOMAINS DOMAIN_LIST DOMAIN
+syn keyword oraKeywordPref NAMES
+syn keyword oraKeyword EXPIRE REFRESH REGION RETRY USERID VERSION
+syn keyword oraKeyword AUTHORITY_REQUIRED CONNECT_TIMEOUT
+syn keyword oraKeyword AUTO_REFRESH_EXPIRE AUTO_REFRESH_RETRY
+syn keyword oraKeyword CACHE_CHECKPOINT_FILE CACHE_CHECKPOINT_INTERVAL
+syn keyword oraKeyword CONFIG_CHECKPOINT_FILE DEFAULT_FORWARDERS_ONLY
+syn keyword oraKeyword HINT FORWARDING_AVAILABLE FORWARDING_DESIRED
+syn keyword oraKeyword KEEP_DB_OPEN
+syn keyword oraKeyword LOG_DIRECTORY LOG_FILE LOG_STATS_INTERVAL LOG_UNIQUE
+syn keyword oraKeyword MAX_OPEN_CONNECTIONS MAX_REFORWARDS
+syn keyword oraKeyword MESSAGE_POOL_START_SIZE
+syn keyword oraKeyword NO_MODIFY_REQUESTS NO_REGION_DATABASE
+syn keyword oraKeyword PASSWORD REGION_CHECKPOINT_FILE
+syn keyword oraKeyword RESET_STATS_INTERVAL SAVE_CONFIG_ON_STOP
+syn keyword oraKeyword SERVER_NAME TRACE_FUNC TRACE_UNIQUE
+
+"cman.ora
+syn keyword oraKeywordGroup CMAN CMAN_ADMIN CMAN_PROFILE PARAMETER_LIST
+syn keyword oraKeywordGroup CMAN_RULES RULES_LIST RULE
+syn keyword oraKeyword ANSWER_TIMEOUT AUTHENTICATION_LEVEL LOG_LEVEL
+syn keyword oraKeyword MAX_FREELIST_BUFFERS MAXIMUM_CONNECT_DATA MAXIMUM_RELAYS
+syn keyword oraKeyword RELAY_STATISTICS SHOW_TNS_INFO TRACING
+syn keyword oraKeyword USE_ASYNC_CALL SRC DST SRV ACT
+
+"protocol.ora
+syn match oraKeyword "\w*\.EXCLUDED_NODES"
+syn match oraKeyword "\w*\.INVITED_NODES"
+syn match oraKeyword "\w*\.VALIDNODE_CHECKING"
+syn keyword oraKeyword TCP NODELAY
+
+
+
+
+"---------------------------------------
+"init.ora
+
+"common values
+syn keyword oraValue nested_loops merge hash unlimited
+
+"init params
+syn keyword oraKeyword O7_DICTIONARY_ACCESSIBILITY ALWAYS_ANTI_JOIN ALWAYS_SEMI_JOIN
+syn keyword oraKeyword AQ_TM_PROCESSES ARCH_IO_SLAVES AUDIT_FILE_DEST AUDIT_TRAIL
+syn keyword oraKeyword BACKGROUND_CORE_DUMP BACKGROUND_DUMP_DEST
+syn keyword oraKeyword BACKUP_TAPE_IO_SLAVES BITMAP_MERGE_AREA_SIZE
+syn keyword oraKeyword BLANK_TRIMMING BUFFER_POOL_KEEP BUFFER_POOL_RECYCLE
+syn keyword oraKeyword COMMIT_POINT_STRENGTH COMPATIBLE CONTROL_FILE_RECORD_KEEP_TIME
+syn keyword oraKeyword CONTROL_FILES CORE_DUMP_DEST CPU_COUNT
+syn keyword oraKeyword CREATE_BITMAP_AREA_SIZE CURSOR_SPACE_FOR_TIME
+syn keyword oraKeyword DB_BLOCK_BUFFERS DB_BLOCK_CHECKING DB_BLOCK_CHECKSUM
+syn keyword oraKeyword DB_BLOCK_LRU_LATCHES DB_BLOCK_MAX_DIRTY_TARGET
+syn keyword oraKeyword DB_BLOCK_SIZE DB_DOMAIN
+syn keyword oraKeyword DB_FILE_DIRECT_IO_COUNT DB_FILE_MULTIBLOCK_READ_COUNT
+syn keyword oraKeyword DB_FILE_NAME_CONVERT DB_FILE_SIMULTANEOUS_WRITES
+syn keyword oraKeyword DB_FILES DB_NAME DB_WRITER_PROCESSES
+syn keyword oraKeyword DBLINK_ENCRYPT_LOGIN DBWR_IO_SLAVES
+syn keyword oraKeyword DELAYED_LOGGING_BLOCK_CLEANOUTS DISCRETE_TRANSACTIONS_ENABLED
+syn keyword oraKeyword DISK_ASYNCH_IO DISTRIBUTED_TRANSACTIONS
+syn keyword oraKeyword DML_LOCKS ENQUEUE_RESOURCES ENT_DOMAIN_NAME EVENT
+syn keyword oraKeyword FAST_START_IO_TARGET FAST_START_PARALLEL_ROLLBACK
+syn keyword oraKeyword FIXED_DATE FREEZE_DB_FOR_FAST_INSTANCE_RECOVERY
+syn keyword oraKeyword GC_DEFER_TIME GC_FILES_TO_LOCKS GC_RELEASABLE_LOCKS GC_ROLLBACK_LOCKS
+syn keyword oraKeyword GLOBAL_NAMES HASH_AREA_SIZE
+syn keyword oraKeyword HASH_JOIN_ENABLED HASH_MULTIBLOCK_IO_COUNT
+syn keyword oraKeyword HI_SHARED_MEMORY_ADDRESS HS_AUTOREGISTER
+syn keyword oraKeyword IFILE
+syn keyword oraKeyword INSTANCE_GROUPS INSTANCE_NAME INSTANCE_NUMBER
+syn keyword oraKeyword JAVA_POOL_SIZE JOB_QUEUE_INTERVAL JOB_QUEUE_PROCESSES LARGE_POOL_SIZE
+syn keyword oraKeyword LICENSE_MAX_SESSIONS LICENSE_MAX_USERS LICENSE_SESSIONS_WARNING
+syn keyword oraKeyword LM_LOCKS LM_PROCS LM_RESS
+syn keyword oraKeyword LOCAL_LISTENER LOCK_NAME_SPACE LOCK_SGA LOCK_SGA_AREAS
+syn keyword oraKeyword LOG_ARCHIVE_BUFFER_SIZE LOG_ARCHIVE_BUFFERS LOG_ARCHIVE_DEST
+syn match oraKeyword "LOG_ARCHIVE_DEST_\(1\|2\|3\|4\|5\)"
+syn match oraKeyword "LOG_ARCHIVE_DEST_STATE_\(1\|2\|3\|4\|5\)"
+syn keyword oraKeyword LOG_ARCHIVE_DUPLEX_DEST LOG_ARCHIVE_FORMAT LOG_ARCHIVE_MAX_PROCESSES
+syn keyword oraKeyword LOG_ARCHIVE_MIN_SUCCEED_DEST LOG_ARCHIVE_START
+syn keyword oraKeyword LOG_BUFFER LOG_CHECKPOINT_INTERVAL LOG_CHECKPOINT_TIMEOUT
+syn keyword oraKeyword LOG_CHECKPOINTS_TO_ALERT LOG_FILE_NAME_CONVERT
+syn keyword oraKeyword MAX_COMMIT_PROPAGATION_DELAY MAX_DUMP_FILE_SIZE
+syn keyword oraKeyword MAX_ENABLED_ROLES MAX_ROLLBACK_SEGMENTS
+syn keyword oraKeyword MTS_DISPATCHERS MTS_MAX_DISPATCHERS MTS_MAX_SERVERS MTS_SERVERS
+syn keyword oraKeyword NLS_CALENDAR NLS_COMP NLS_CURRENCY NLS_DATE_FORMAT
+syn keyword oraKeyword NLS_DATE_LANGUAGE NLS_DUAL_CURRENCY NLS_ISO_CURRENCY NLS_LANGUAGE
+syn keyword oraKeyword NLS_NUMERIC_CHARACTERS NLS_SORT NLS_TERRITORY
+syn keyword oraKeyword OBJECT_CACHE_MAX_SIZE_PERCENT OBJECT_CACHE_OPTIMAL_SIZE
+syn keyword oraKeyword OPEN_CURSORS OPEN_LINKS OPEN_LINKS_PER_INSTANCE
+syn keyword oraKeyword OPS_ADMINISTRATION_GROUP
+syn keyword oraKeyword OPTIMIZER_FEATURES_ENABLE OPTIMIZER_INDEX_CACHING
+syn keyword oraKeyword OPTIMIZER_INDEX_COST_ADJ OPTIMIZER_MAX_PERMUTATIONS
+syn keyword oraKeyword OPTIMIZER_MODE OPTIMIZER_PERCENT_PARALLEL
+syn keyword oraKeyword OPTIMIZER_SEARCH_LIMIT
+syn keyword oraKeyword ORACLE_TRACE_COLLECTION_NAME ORACLE_TRACE_COLLECTION_PATH
+syn keyword oraKeyword ORACLE_TRACE_COLLECTION_SIZE ORACLE_TRACE_ENABLE
+syn keyword oraKeyword ORACLE_TRACE_FACILITY_NAME ORACLE_TRACE_FACILITY_PATH
+syn keyword oraKeyword OS_AUTHENT_PREFIX OS_ROLES
+syn keyword oraKeyword PARALLEL_ADAPTIVE_MULTI_USER PARALLEL_AUTOMATIC_TUNING
+syn keyword oraKeyword PARALLEL_BROADCAST_ENABLED PARALLEL_EXECUTION_MESSAGE_SIZE
+syn keyword oraKeyword PARALLEL_INSTANCE_GROUP PARALLEL_MAX_SERVERS
+syn keyword oraKeyword PARALLEL_MIN_PERCENT PARALLEL_MIN_SERVERS
+syn keyword oraKeyword PARALLEL_SERVER PARALLEL_SERVER_INSTANCES PARALLEL_THREADS_PER_CPU
+syn keyword oraKeyword PARTITION_VIEW_ENABLED PLSQL_V2_COMPATIBILITY
+syn keyword oraKeyword PRE_PAGE_SGA PROCESSES
+syn keyword oraKeyword QUERY_REWRITE_ENABLED QUERY_REWRITE_INTEGRITY
+syn keyword oraKeyword RDBMS_SERVER_DN READ_ONLY_OPEN_DELAYED RECOVERY_PARALLELISM
+syn keyword oraKeyword REMOTE_DEPENDENCIES_MODE REMOTE_LOGIN_PASSWORDFILE
+syn keyword oraKeyword REMOTE_OS_AUTHENT REMOTE_OS_ROLES
+syn keyword oraKeyword REPLICATION_DEPENDENCY_TRACKING
+syn keyword oraKeyword RESOURCE_LIMIT RESOURCE_MANAGER_PLAN
+syn keyword oraKeyword ROLLBACK_SEGMENTS ROW_LOCKING SERIAL _REUSE SERVICE_NAMES
+syn keyword oraKeyword SESSION_CACHED_CURSORS SESSION_MAX_OPEN_FILES SESSIONS
+syn keyword oraKeyword SHADOW_CORE_DUMP
+syn keyword oraKeyword SHARED_MEMORY_ADDRESS SHARED_POOL_RESERVED_SIZE SHARED_POOL_SIZE
+syn keyword oraKeyword SORT_AREA_RETAINED_SIZE SORT_AREA_SIZE SORT_MULTIBLOCK_READ_COUNT
+syn keyword oraKeyword SQL92_SECURITY SQL_TRACE STANDBY_ARCHIVE_DEST
+syn keyword oraKeyword STAR_TRANSFORMATION_ENABLED TAPE_ASYNCH_IO THREAD
+syn keyword oraKeyword TIMED_OS_STATISTICS TIMED_STATISTICS
+syn keyword oraKeyword TRANSACTION_AUDITING TRANSACTIONS TRANSACTIONS_PER_ROLLBACK_SEGMENT
+syn keyword oraKeyword USE_INDIRECT_DATA_BUFFERS USER_DUMP_DEST
+syn keyword oraKeyword UTL_FILE_DIR
+syn keyword oraKeywordObs ALLOW_PARTIAL_SN_RESULTS B_TREE_BITMAP_PLANS
+syn keyword oraKeywordObs BACKUP_DISK_IO_SLAVES CACHE_SIZE_THRESHOLD
+syn keyword oraKeywordObs CCF_IO_SIZE CLEANUP_ROLLBACK_ENTRIES
+syn keyword oraKeywordObs CLOSE_CACHED_OPEN_CURSORS COMPATIBLE_NO_RECOVERY
+syn keyword oraKeywordObs COMPLEX_VIEW_MERGING
+syn keyword oraKeywordObs DB_BLOCK_CHECKPOINT_BATCH DB_BLOCK_LRU_EXTENDED_STATISTICS
+syn keyword oraKeywordObs DB_BLOCK_LRU_STATISTICS
+syn keyword oraKeywordObs DISTRIBUTED_LOCK_TIMEOUT DISTRIBUTED_RECOVERY_CONNECTION_HOLD_TIME
+syn keyword oraKeywordObs FAST_FULL_SCAN_ENABLED GC_LATCHES GC_LCK_PROCS
+syn keyword oraKeywordObs LARGE_POOL_MIN_ALLOC LGWR_IO_SLAVES
+syn keyword oraKeywordObs LOG_BLOCK_CHECKSUM LOG_FILES
+syn keyword oraKeywordObs LOG_SIMULTANEOUS_COPIES LOG_SMALL_ENTRY_MAX_SIZE
+syn keyword oraKeywordObs MAX_TRANSACTION_BRANCHES
+syn keyword oraKeywordObs MTS_LISTENER_ADDRESS MTS_MULTIPLE_LISTENERS
+syn keyword oraKeywordObs MTS_RATE_LOG_SIZE MTS_RATE_SCALE MTS_SERVICE
+syn keyword oraKeywordObs OGMS_HOME OPS_ADMIN_GROUP
+syn keyword oraKeywordObs PARALLEL_DEFAULT_MAX_INSTANCES PARALLEL_MIN_MESSAGE_POOL
+syn keyword oraKeywordObs PARALLEL_SERVER_IDLE_TIME PARALLEL_TRANSACTION_RESOURCE_TIMEOUT
+syn keyword oraKeywordObs PUSH_JOIN_PREDICATE REDUCE_ALARM ROW_CACHE_CURSORS
+syn keyword oraKeywordObs SEQUENCE_CACHE_ENTRIES SEQUENCE_CACHE_HASH_BUCKETS
+syn keyword oraKeywordObs SHARED_POOL_RESERVED_MIN_ALLOC
+syn keyword oraKeywordObs SORT_DIRECT_WRITES SORT_READ_FAC SORT_SPACEMAP_SIZE
+syn keyword oraKeywordObs SORT_WRITE_BUFFER_SIZE SORT_WRITE_BUFFERS
+syn keyword oraKeywordObs SPIN_COUNT TEMPORARY_TABLE_LOCKS USE_ISM
+syn keyword oraValue db os full partial mandatory optional reopen enable defer
+syn keyword oraValue always default intent disable dml plsql temp_disable
+syn match oravalue "Arabic Hijrah"
+syn match oravalue "English Hijrah"
+syn match oravalue "Gregorian"
+syn match oravalue "Japanese Imperial"
+syn match oravalue "Persian"
+syn match oravalue "ROC Official"
+syn match oravalue "Thai Buddha"
+syn match oravalue "8.0.0"
+syn match oravalue "8.0.3"
+syn match oravalue "8.0.4"
+syn match oravalue "8.1.3"
+syn match oraModifier "archived log"
+syn match oraModifier "backup corruption"
+syn match oraModifier "backup datafile"
+syn match oraModifier "backup piece "
+syn match oraModifier "backup redo log"
+syn match oraModifier "backup set"
+syn match oraModifier "copy corruption"
+syn match oraModifier "datafile copy"
+syn match oraModifier "deleted object"
+syn match oraModifier "loghistory"
+syn match oraModifier "offline range"
+
+"undocumented init params
+"up to 7.2 (inclusive)
+syn keyword oraKeywordUndObs _latch_spin_count _trace_instance_termination
+syn keyword oraKeywordUndObs _wakeup_timeout _lgwr_async_write
+"7.3
+syn keyword oraKeywordUndObs _standby_lock_space_name _enable_dba_locking
+"8.0.5
+syn keyword oraKeywordUnd _NUMA_instance_mapping _NUMA_pool_size
+syn keyword oraKeywordUnd _advanced_dss_features _affinity_on _all_shared_dblinks
+syn keyword oraKeywordUnd _allocate_creation_order _allow_resetlogs_corruption
+syn keyword oraKeywordUnd _always_star_transformation _bump_highwater_mark_count
+syn keyword oraKeywordUnd _column_elimination_off _controlfile_enqueue_timeout
+syn keyword oraKeywordUnd _corrupt_blocks_on_stuck_recovery _corrupted_rollback_segments
+syn keyword oraKeywordUnd _cr_deadtime _cursor_db_buffers_pinned
+syn keyword oraKeywordUnd _db_block_cache_clone _db_block_cache_map _db_block_cache_protect
+syn keyword oraKeywordUnd _db_block_hash_buckets _db_block_hi_priority_batch_size
+syn keyword oraKeywordUnd _db_block_max_cr_dba _db_block_max_scan_cnt
+syn keyword oraKeywordUnd _db_block_med_priority_batch_size _db_block_no_idle_writes
+syn keyword oraKeywordUnd _db_block_write_batch _db_handles _db_handles_cached
+syn keyword oraKeywordUnd _db_large_dirty_queue _db_no_mount_lock
+syn keyword oraKeywordUnd _db_writer_histogram_statistics _db_writer_scan_depth
+syn keyword oraKeywordUnd _db_writer_scan_depth_decrement _db_writer_scan_depth_increment
+syn keyword oraKeywordUnd _disable_incremental_checkpoints
+syn keyword oraKeywordUnd _disable_latch_free_SCN_writes_via_32cas
+syn keyword oraKeywordUnd _disable_latch_free_SCN_writes_via_64cas
+syn keyword oraKeywordUnd _disable_logging _disable_ntlog_events
+syn keyword oraKeywordUnd _dss_cache_flush _dynamic_stats_threshold
+syn keyword oraKeywordUnd _enable_cscn_caching _enable_default_affinity
+syn keyword oraKeywordUnd _enqueue_debug_multi_instance _enqueue_hash
+syn keyword oraKeywordUnd _enqueue_hash_chain_latches _enqueue_locks
+syn keyword oraKeywordUnd _fifth_spare_parameter _first_spare_parameter _fourth_spare_parameter
+syn keyword oraKeywordUnd _gc_class_locks _groupby_nopushdown_cut_ratio
+syn keyword oraKeywordUnd _idl_conventional_index_maintenance _ignore_failed_escalates
+syn keyword oraKeywordUnd _init_sql_file
+syn keyword oraKeywordUnd _io_slaves_disabled _ioslave_batch_count _ioslave_issue_count
+syn keyword oraKeywordUnd _kgl_bucket_count _kgl_latch_count _kgl_multi_instance_invalidation
+syn keyword oraKeywordUnd _kgl_multi_instance_lock _kgl_multi_instance_pin
+syn keyword oraKeywordUnd _latch_miss_stat_sid _latch_recovery_alignment _latch_wait_posting
+syn keyword oraKeywordUnd _lm_ast_option _lm_direct_sends _lm_dlmd_procs _lm_domains _lm_groups
+syn keyword oraKeywordUnd _lm_non_fault_tolerant _lm_send_buffers _lm_statistics _lm_xids
+syn keyword oraKeywordUnd _log_blocks_during_backup _log_buffers_debug _log_checkpoint_recovery_check
+syn keyword oraKeywordUnd _log_debug_multi_instance _log_entry_prebuild_threshold _log_io_size
+syn keyword oraKeywordUnd _log_space_errors
+syn keyword oraKeywordUnd _max_exponential_sleep _max_sleep_holding_latch
+syn keyword oraKeywordUnd _messages _minimum_giga_scn _mts_load_constants _nested_loop_fudge
+syn keyword oraKeywordUnd _no_objects _no_or_expansion
+syn keyword oraKeywordUnd _number_cached_attributes _offline_rollback_segments _open_files_limit
+syn keyword oraKeywordUnd _optimizer_undo_changes
+syn keyword oraKeywordUnd _oracle_trace_events _oracle_trace_facility_version
+syn keyword oraKeywordUnd _ordered_nested_loop _parallel_server_sleep_time
+syn keyword oraKeywordUnd _passwordfile_enqueue_timeout _pdml_slaves_diff_part
+syn keyword oraKeywordUnd _plsql_dump_buffer_events _predicate_elimination_enabled
+syn keyword oraKeywordUnd _project_view_columns
+syn keyword oraKeywordUnd _px_broadcast_fudge_factor _px_broadcast_trace _px_dop_limit_degree
+syn keyword oraKeywordUnd _px_dop_limit_threshold _px_kxfr_granule_allocation _px_kxib_tracing
+syn keyword oraKeywordUnd _release_insert_threshold _reuse_index_loop
+syn keyword oraKeywordUnd _rollback_segment_count _rollback_segment_initial
+syn keyword oraKeywordUnd _row_cache_buffer_size _row_cache_instance_locks
+syn keyword oraKeywordUnd _save_escalates _scn_scheme
+syn keyword oraKeywordUnd _second_spare_parameter _session_idle_bit_latches
+syn keyword oraKeywordUnd _shared_session_sort_fetch_buffer _single_process
+syn keyword oraKeywordUnd _small_table_threshold _sql_connect_capability_override
+syn keyword oraKeywordUnd _sql_connect_capability_table
+syn keyword oraKeywordUnd _test_param_1 _test_param_2 _test_param_3
+syn keyword oraKeywordUnd _third_spare_parameter _tq_dump_period
+syn keyword oraKeywordUnd _trace_archive_dest _trace_archive_start _trace_block_size
+syn keyword oraKeywordUnd _trace_buffers_per_process _trace_enabled _trace_events
+syn keyword oraKeywordUnd _trace_file_size _trace_files_public _trace_flushing _trace_write_batch_size
+syn keyword oraKeywordUnd _upconvert_from_ast _use_vector_post _wait_for_sync _walk_insert_threshold
+"dunno which version; may be 8.1.x, may be obsoleted
+syn keyword oraKeywordUndObs _arch_io_slaves _average_dirties_half_life _b_tree_bitmap_plans
+syn keyword oraKeywordUndObs _backup_disk_io_slaves _backup_io_pool_size
+syn keyword oraKeywordUndObs _cleanup_rollback_entries _close_cached_open_cursors
+syn keyword oraKeywordUndObs _compatible_no_recovery _complex_view_merging
+syn keyword oraKeywordUndObs _cpu_to_io _cr_server
+syn keyword oraKeywordUndObs _db_aging_cool_count _db_aging_freeze_cr _db_aging_hot_criteria
+syn keyword oraKeywordUndObs _db_aging_stay_count _db_aging_touch_time
+syn keyword oraKeywordUndObs _db_percent_hot_default _db_percent_hot_keep _db_percent_hot_recycle
+syn keyword oraKeywordUndObs _db_writer_chunk_writes _db_writer_max_writes
+syn keyword oraKeywordUndObs _dbwr_async_io _dbwr_tracing
+syn keyword oraKeywordUndObs _defer_multiple_waiters _discrete_transaction_enabled
+syn keyword oraKeywordUndObs _distributed_lock_timeout _distributed_recovery _distribited_recovery_
+syn keyword oraKeywordUndObs _domain_index_batch_size _domain_index_dml_batch_size
+syn keyword oraKeywordUndObs _enable_NUMA_optimization _enable_block_level_transaction_recovery
+syn keyword oraKeywordUndObs _enable_list_io _enable_multiple_sampling
+syn keyword oraKeywordUndObs _fairness_treshold _fast_full_scan_enabled _foreground_locks
+syn keyword oraKeywordUndObs _full_pwise_join_enabled _gc_latches _gc_lck_procs
+syn keyword oraKeywordUndObs _high_server_treshold _index_prefetch_factor _kcl_debug
+syn keyword oraKeywordUndObs _kkfi_trace _large_pool_min_alloc _lazy_freelist_close _left_nested_loops_random
+syn keyword oraKeywordUndObs _lgwr_async_io _lgwr_io_slaves _lock_sga_areas
+syn keyword oraKeywordUndObs _log_archive_buffer_size _log_archive_buffers _log_simultaneous_copies
+syn keyword oraKeywordUndObs _low_server_treshold _max_transaction_branches
+syn keyword oraKeywordUndObs _mts_rate_log_size _mts_rate_scale
+syn keyword oraKeywordUndObs _mview_cost_rewrite _mview_rewrite_2
+syn keyword oraKeywordUndObs _ncmb_readahead_enabled _ncmb_readahead_tracing
+syn keyword oraKeywordUndObs _ogms_home
+syn keyword oraKeywordUndObs _parallel_adaptive_max_users _parallel_default_max_instances
+syn keyword oraKeywordUndObs _parallel_execution_message_align _parallel_fake_class_pct
+syn keyword oraKeywordUndObs _parallel_load_bal_unit _parallel_load_balancing
+syn keyword oraKeywordUndObs _parallel_min_message_pool _parallel_recovery_stopat
+syn keyword oraKeywordUndObs _parallel_server_idle_time _parallelism_cost_fudge_factor
+syn keyword oraKeywordUndObs _partial_pwise_join_enabled _pdml_separate_gim _push_join_predicate
+syn keyword oraKeywordUndObs _px_granule_size _px_index_sampling _px_load_publish_interval
+syn keyword oraKeywordUndObs _px_max_granules_per_slave _px_min_granules_per_slave _px_no_stealing
+syn keyword oraKeywordUndObs _row_cache_cursors _serial_direct_read _shared_pool_reserved_min_alloc
+syn keyword oraKeywordUndObs _sort_space_for_write_buffers _spin_count _system_trig_enabled
+syn keyword oraKeywordUndObs _trace_buffer_flushes _trace_cr_buffer_creates _trace_multi_block_reads
+syn keyword oraKeywordUndObs _transaction_recovery_servers _use_ism _yield_check_interval
+
+
+syn cluster oraAll add=oraKeyword,oraKeywordGroup,oraKeywordPref,oraKeywordObs,oraKeywordUnd,oraKeywordUndObs
+syn cluster oraAll add=oraValue,oraModifier,oraString,oraSpecial,oraComment
+
+"==============================================================================
+" highlighting
+
+" Only when an item doesn't have highlighting yet
+
+hi def link oraKeyword Statement "usual keywords
+hi def link oraKeywordGroup Type "keywords which group other keywords
+hi def link oraKeywordPref oraKeywordGroup "keywords which act as prefixes
+hi def link oraKeywordObs Todo "obsolete keywords
+hi def link oraKeywordUnd PreProc "undocumented keywords
+hi def link oraKeywordUndObs oraKeywordObs "undocumented obsolete keywords
+hi def link oraValue Identifier "values, like true or false
+hi def link oraModifier oraValue "modifies values
+hi def link oraString String "strings
+
+hi def link oraSpecial Special "special characters
+hi def link oraError Error "errors
+hi def link oraParenError oraError "errors caused by mismatching parantheses
+
+hi def link oraComment Comment "comments
+
+
+
+let b:current_syntax = "ora"
+
+if main_syntax == 'ora'
+ unlet main_syntax
+endif
+
+" vim: ts=8
diff --git a/runtime/syntax/pamconf.vim b/runtime/syntax/pamconf.vim
new file mode 100644
index 0000000..2913284
--- /dev/null
+++ b/runtime/syntax/pamconf.vim
@@ -0,0 +1,131 @@
+" Vim syntax file
+" Language: pam(8) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2020/08/04
+" Changes By: Haochen Tong
+
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+let s:has_service_field = exists("b:pamconf_has_service_field")
+ \ ? b:pamconf_has_service_field
+ \ : expand('%:t') == 'pam.conf' ? 1 : 0
+
+syn match pamconfType '-\?[[:alpha:]]\+'
+ \ contains=pamconfTypeKeyword
+ \ nextgroup=pamconfControl,
+ \ pamconfTypeLineCont skipwhite
+
+syn keyword pamconfTypeKeyword contained account auth password session
+
+if s:has_service_field
+ syn match pamconfService '^[[:graph:]]\+'
+ \ nextgroup=pamconfType,
+ \ pamconfServiceLineCont skipwhite
+
+ syn match pamconfServiceLineCont contained '\\$'
+ \ nextgroup=pamconfType,
+ \ pamconfServiceLineCont skipwhite skipnl
+endif
+
+syn keyword pamconfTodo contained TODO FIXME XXX NOTE
+
+syn region pamconfComment display oneline start='#' end='$'
+ \ contains=pamconfTodo,@Spell
+
+syn match pamconfTypeLineCont contained '\\$'
+ \ nextgroup=pamconfControl,
+ \ pamconfTypeLineCont skipwhite skipnl
+
+syn keyword pamconfControl contained requisite required sufficient
+ \ optional include substack
+ \ nextgroup=pamconfMPath,
+ \ pamconfControlLineContH skipwhite
+
+syn match pamconfControlBegin '\[' nextgroup=pamconfControlValues,
+ \ pamconfControlLineCont skipwhite
+
+syn match pamconfControlLineCont contained '\\$'
+ \ nextgroup=pamconfControlValues,
+ \ pamconfControlLineCont skipwhite skipnl
+
+syn keyword pamconfControlValues contained success open_err symbol_err
+ \ service_err system_err buf_err
+ \ perm_denied auth_err cred_insufficient
+ \ authinfo_unavail user_unknown maxtries
+ \ new_authtok_reqd acct_expired session_err
+ \ cred_unavail cred_expired cred_err
+ \ no_module_data conv_err authtok_err
+ \ authtok_recover_err authtok_lock_busy
+ \ authtok_disable_aging try_again ignore
+ \ abort authtok_expired module_unknown
+ \ bad_item and default
+ \ nextgroup=pamconfControlValueEq
+
+syn match pamconfControlValueEq contained '='
+ \ nextgroup=pamconfControlActionN,
+ \ pamconfControlAction
+
+syn match pamconfControlActionN contained '\d\+\>'
+ \ nextgroup=pamconfControlValues,
+ \ pamconfControlLineCont,pamconfControlEnd
+ \ skipwhite
+syn keyword pamconfControlAction contained ignore bad die ok done reset
+ \ nextgroup=pamconfControlValues,
+ \ pamconfControlLineCont,pamconfControlEnd
+ \ skipwhite
+
+syn match pamconfControlEnd contained '\]'
+ \ nextgroup=pamconfMPath,
+ \ pamconfControlLineContH skipwhite
+
+syn match pamconfControlLineContH contained '\\$'
+ \ nextgroup=pamconfMPath,
+ \ pamconfControlLineContH skipwhite skipnl
+
+syn match pamconfMPath contained '\S\+'
+ \ nextgroup=pamconfMPathLineCont,
+ \ pamconfArgs skipwhite
+
+syn match pamconfArgs contained '\S\+'
+ \ nextgroup=pamconfArgsLineCont,
+ \ pamconfArgs skipwhite
+
+syn match pamconfMPathLineCont contained '\\$'
+ \ nextgroup=pamconfMPathLineCont,
+ \ pamconfArgs skipwhite skipnl
+
+syn match pamconfArgsLineCont contained '\\$'
+ \ nextgroup=pamconfArgsLineCont,
+ \ pamconfArgs skipwhite skipnl
+
+hi def link pamconfTodo Todo
+hi def link pamconfComment Comment
+hi def link pamconfService Statement
+hi def link pamconfServiceLineCont Special
+hi def link pamconfType Special
+hi def link pamconfTypeKeyword Type
+hi def link pamconfTypeLineCont pamconfServiceLineCont
+hi def link pamconfControl Macro
+hi def link pamconfControlBegin Delimiter
+hi def link pamconfControlLineContH pamconfServiceLineCont
+hi def link pamconfControlLineCont pamconfServiceLineCont
+hi def link pamconfControlValues Identifier
+hi def link pamconfControlValueEq Operator
+hi def link pamconfControlActionN Number
+hi def link pamconfControlAction Identifier
+hi def link pamconfControlEnd Delimiter
+hi def link pamconfMPath String
+hi def link pamconfMPathLineCont pamconfServiceLineCont
+hi def link pamconfArgs Normal
+hi def link pamconfArgsLineCont pamconfServiceLineCont
+
+let b:current_syntax = "pamconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/pamenv.vim b/runtime/syntax/pamenv.vim
new file mode 100644
index 0000000..90359da
--- /dev/null
+++ b/runtime/syntax/pamenv.vim
@@ -0,0 +1,28 @@
+" Vim syntax file
+" Language: pam_env.conf(5) configuration file
+" Latest Revision: 2020-05-10
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn keyword pamenvTodo contained TODO FIXME XXX NOTE
+syn region pamenvComment start='^#' end='$' display oneline contains=pamenvTodo,@Spells
+
+syn match pamenvVars '^[A-Z_][A-Z_0-9]*' nextgroup=pamenvKeywords skipwhite
+
+syn keyword pamenvKeywords contained DEFAULT OVERRIDE nextgroup=pamenvVarEq
+
+syn match pamenvVarEq contained '=' nextgroup=pamenvValue,pamenvValueWithQuote
+
+syn match pamenvValue contained '[^ \t]*' skipwhite nextgroup=pamenvKeywords
+syn region pamenvValueWithQuote contained start='"' end='"' skipwhite nextgroup=pamenvKeywords
+
+hi def link pamenvTodo Todo
+hi def link pamenvComment Comment
+hi def link pamenvKeywords Keyword
+hi def link pamenvVars Identifier
+hi def link pamenvValue String
+hi def link pamenvValueWithQuote String
+
+let b:current_syntax = "pamenv"
diff --git a/runtime/syntax/papp.vim b/runtime/syntax/papp.vim
new file mode 100644
index 0000000..5b65f05
--- /dev/null
+++ b/runtime/syntax/papp.vim
@@ -0,0 +1,76 @@
+" Vim syntax file for the "papp" file format (_p_erl _app_lication)
+"
+" Language: papp
+" Maintainer: Marc Lehmann <pcg@goof.com>
+" Last Change: 2009 Nov 11
+" Filenames: *.papp *.pxml *.pxsl
+" URL: http://papp.plan9.de/
+
+" You can set the "papp_include_html" variable so that html will be
+" rendered as such inside phtml sections (in case you actually put html
+" there - papp does not require that). Also, rendering html tends to keep
+" the clutter high on the screen - mixing three languages is difficult
+" enough(!). PS: it is also slow.
+
+" pod is, btw, allowed everywhere, which is actually wrong :(
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" source is basically xml, with included html (this is common) and perl bits
+runtime! syntax/xml.vim
+unlet b:current_syntax
+
+if exists("papp_include_html")
+ syn include @PAppHtml syntax/html.vim
+ unlet b:current_syntax
+ syntax spell default " added by Bram
+endif
+
+syn include @PAppPerl syntax/perl.vim
+
+syn cluster xmlFoldCluster add=papp_perl,papp_xperl,papp_phtml,papp_pxml,papp_perlPOD
+
+" preprocessor commands
+syn region papp_prep matchgroup=papp_prep start="^#\s*\(if\|elsif\)" end="$" keepend contains=@perlExpr contained
+syn match papp_prep /^#\s*\(else\|endif\|??\).*$/ contained
+" translation entries
+syn region papp_gettext start=/__"/ end=/"/ contained contains=@papp_perlInterpDQ
+syn cluster PAppHtml add=papp_gettext,papp_prep
+
+" add special, paired xperl, perl and phtml tags
+syn region papp_perl matchgroup=xmlTag start="<perl>" end="</perl>" contains=papp_CDATAp,@PAppPerl keepend
+syn region papp_xperl matchgroup=xmlTag start="<xperl>" end="</xperl>" contains=papp_CDATAp,@PAppPerl keepend
+syn region papp_phtml matchgroup=xmlTag start="<phtml>" end="</phtml>" contains=papp_CDATAh,papp_ph_perl,papp_ph_html,papp_ph_hint,@PAppHtml keepend
+syn region papp_pxml matchgroup=xmlTag start="<pxml>" end="</pxml>" contains=papp_CDATAx,papp_ph_perl,papp_ph_xml,papp_ph_xint keepend
+syn region papp_perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,perlTodo keepend
+
+" cdata sections
+syn region papp_CDATAp matchgroup=xmlCdataDecl start="<!\[CDATA\[" end="\]\]>" contains=@PAppPerl contained keepend
+syn region papp_CDATAh matchgroup=xmlCdataDecl start="<!\[CDATA\[" end="\]\]>" contains=papp_ph_perl,papp_ph_html,papp_ph_hint,@PAppHtml contained keepend
+syn region papp_CDATAx matchgroup=xmlCdataDecl start="<!\[CDATA\[" end="\]\]>" contains=papp_ph_perl,papp_ph_xml,papp_ph_xint contained keepend
+
+syn region papp_ph_perl matchgroup=Delimiter start="<[:?]" end="[:?]>"me=e-2 nextgroup=papp_ph_html contains=@PAppPerl contained keepend
+syn region papp_ph_html matchgroup=Delimiter start=":>" end="<[:?]"me=e-2 nextgroup=papp_ph_perl contains=@PAppHtml contained keepend
+syn region papp_ph_hint matchgroup=Delimiter start="?>" end="<[:?]"me=e-2 nextgroup=papp_ph_perl contains=@perlInterpDQ,@PAppHtml contained keepend
+syn region papp_ph_xml matchgroup=Delimiter start=":>" end="<[:?]"me=e-2 nextgroup=papp_ph_perl contains= contained keepend
+syn region papp_ph_xint matchgroup=Delimiter start="?>" end="<[:?]"me=e-2 nextgroup=papp_ph_perl contains=@perlInterpDQ contained keepend
+
+" synchronization is horrors!
+syn sync clear
+syn sync match pappSync grouphere papp_CDATAh "</\(perl\|xperl\|phtml\|macro\|module\)>"
+syn sync match pappSync grouphere papp_CDATAh "^# *\(if\|elsif\|else\|endif\)"
+syn sync match pappSync grouphere papp_CDATAh "</\(tr\|td\|table\|hr\|h1\|h2\|h3\)>"
+syn sync match pappSync grouphere NONE "</\=\(module\|state\|macro\)>"
+
+syn sync maxlines=300
+syn sync minlines=5
+
+" The default highlighting.
+
+hi def link papp_prep preCondit
+hi def link papp_gettext String
+
+let b:current_syntax = "papp"
diff --git a/runtime/syntax/pascal.vim b/runtime/syntax/pascal.vim
new file mode 100644
index 0000000..206df21
--- /dev/null
+++ b/runtime/syntax/pascal.vim
@@ -0,0 +1,384 @@
+" Vim syntax file
+" Language: Pascal
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainers: Xavier Crégut <xavier.cregut@enseeiht.fr>
+" Mario Eusebio <bio@dq.fct.unl.pt>
+" Last Change: 2021 May 20
+
+" Contributors: Tim Chase <tchase@csc.com>,
+" Stas Grabois <stsi@vtrails.com>,
+" Mazen NEIFER <mazen.neifer.2001@supaero.fr>,
+" Klaus Hast <Klaus.Hast@arcor.net>,
+" Austin Ziegler <austin@halostatue.ca>,
+" Markus Koenig <markus@stber-koenig.de>
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+syn case ignore
+syn sync lines=250
+
+syn keyword pascalBoolean true false
+syn keyword pascalConditional if else then
+syn keyword pascalConstant nil maxint
+syn keyword pascalLabel case goto label
+syn keyword pascalOperator and div downto in mod not of or packed
+syn keyword pascalRepeat do for do repeat while to until
+syn keyword pascalStatement procedure function
+syn keyword pascalStatement program begin end const var type with
+syn keyword pascalStruct record
+syn keyword pascalType array boolean char integer file pointer real set
+syn keyword pascalType string text variant
+
+
+ " 20011222az: Added new items.
+syn keyword pascalTodo contained TODO FIXME XXX DEBUG NOTE
+
+ " 20010723az: When wanted, highlight the trailing whitespace -- this is
+ " based on c_space_errors; to enable, use "pascal_space_errors".
+if exists("pascal_space_errors")
+ if !exists("pascal_no_trail_space_error")
+ syn match pascalSpaceError "\s\+$"
+ endif
+ if !exists("pascal_no_tab_space_error")
+ syn match pascalSpaceError " \+\t"me=e-1
+ endif
+endif
+
+
+
+" String
+if !exists("pascal_one_line_string")
+ syn region pascalString matchgroup=pascalString start=+'+ end=+'+ contains=pascalStringEscape
+ if exists("pascal_gpc")
+ syn region pascalString matchgroup=pascalString start=+"+ end=+"+ contains=pascalStringEscapeGPC
+ else
+ syn region pascalStringError matchgroup=pascalStringError start=+"+ end=+"+ contains=pascalStringEscape
+ endif
+else
+ "wrong strings
+ syn region pascalStringError matchgroup=pascalStringError start=+'+ end=+'+ end=+$+ contains=pascalStringEscape
+ if exists("pascal_gpc")
+ syn region pascalStringError matchgroup=pascalStringError start=+"+ end=+"+ end=+$+ contains=pascalStringEscapeGPC
+ else
+ syn region pascalStringError matchgroup=pascalStringError start=+"+ end=+"+ end=+$+ contains=pascalStringEscape
+ endif
+
+ "right strings
+ syn region pascalString matchgroup=pascalString start=+'+ end=+'+ oneline contains=pascalStringEscape
+ " To see the start and end of strings:
+ " syn region pascalString matchgroup=pascalStringError start=+'+ end=+'+ oneline contains=pascalStringEscape
+ if exists("pascal_gpc")
+ syn region pascalString matchgroup=pascalString start=+"+ end=+"+ oneline contains=pascalStringEscapeGPC
+ else
+ syn region pascalStringError matchgroup=pascalStringError start=+"+ end=+"+ oneline contains=pascalStringEscape
+ endif
+end
+syn match pascalStringEscape contained "''"
+syn match pascalStringEscapeGPC contained '""'
+
+
+" syn match pascalIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
+
+
+if exists("pascal_symbol_operator")
+ syn match pascalSymbolOperator "[+\-/*=]"
+ syn match pascalSymbolOperator "[<>]=\="
+ syn match pascalSymbolOperator "<>"
+ syn match pascalSymbolOperator ":="
+ syn match pascalSymbolOperator "[()]"
+ syn match pascalSymbolOperator "\.\."
+ syn match pascalSymbolOperator "[\^.]"
+ syn match pascalMatrixDelimiter "[][]"
+ "if you prefer you can highlight the range
+ "syn match pascalMatrixDelimiter "[\d\+\.\.\d\+]"
+endif
+
+syn match pascalNumber "-\=\<\d\+\>"
+if !exists("pascal_traditional")
+ syn match pascalHexNumber "\$\x\+\>"
+endif
+if exists("pascal_fpc")
+ syn match pascalOctNumber "&\o\+\>"
+ syn match pascalBinNumber "%[01]\+\>"
+endif
+if exists("pascal_gpc")
+ syn match pascalExtendedNumber "\%([2-9]\|[12]\d\|3[0-6]\)#[[:alnum:]]\+\>"
+endif
+
+syn match pascalFloat "-\=\<\d\+\.\d\+\>"
+syn match pascalFloat "-\=\<\d\+\.\d\+[eE]-\=\d\+\>"
+
+if !exists("pascal_traditional")
+ " allow leading zeros
+ syn match pascalControlCharacter "#\%([01]\=\d\=\d\|2[0-4]\d\|25[0-5]\)\>"
+endif
+
+if exists("pascal_no_tabs")
+ syn match pascalShowTab "\t"
+endif
+
+syn region pascalComment start="(\*\|{" end="\*)\|}" contains=pascalTodo,pascalSpaceError
+
+
+if !exists("pascal_no_functions")
+ " array functions
+ syn keyword pascalFunction pack unpack
+
+ " memory function
+ syn keyword pascalFunction Dispose New
+
+ " math functions
+ syn keyword pascalFunction Abs Arctan Cos Exp Ln Sin Sqr Sqrt
+
+ " file functions
+ syn keyword pascalFunction Eof Eoln Write Writeln
+ syn keyword pascalPredefined Input Output
+
+ if exists("pascal_traditional")
+ " These functions do not seem to be defined in Turbo Pascal
+ syn keyword pascalFunction Get Page Put
+ endif
+
+ " ordinal functions
+ syn keyword pascalFunction Odd Pred Succ
+
+ " transfert functions
+ syn keyword pascalFunction Chr Ord Round Trunc
+endif
+
+
+if !exists("pascal_traditional")
+
+ syn keyword pascalStatement constructor destructor implementation inherited
+ syn keyword pascalStatement interface unit uses
+ syn keyword pascalModifier absolute assembler external far forward inline
+ syn keyword pascalModifier interrupt near virtual
+ syn keyword pascalAccess private public strict
+ syn keyword pascalStruct object
+ syn keyword pascalOperator shl shr xor
+
+ syn region pascalPreProc start="(\*\$" end="\*)" contains=pascalTodo
+ syn region pascalPreProc start="{\$" end="}"
+
+ syn region pascalAsm matchgroup=pascalAsmKey start="\<asm\>" end="\<end\>" contains=pascalComment,pascalPreProc
+
+ syn keyword pascalType ShortInt LongInt Byte Word
+ syn keyword pascalType ByteBool WordBool LongBool
+ syn keyword pascalType Cardinal LongWord
+ syn keyword pascalType Single Double Extended Comp
+ syn keyword pascalType PChar
+
+ syn keyword pascalPredefined self
+
+ if !exists ("pascal_fpc")
+ syn keyword pascalPredefined Result
+ endif
+
+ if exists("pascal_fpc")
+ syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError
+ syn keyword pascalStatement fail otherwise operator
+ syn keyword pascalDirective popstack
+ syn keyword pascalType ShortString AnsiString WideString
+ endif
+
+ if exists("pascal_gpc")
+ syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError
+ syn keyword pascalType SmallInt
+ syn keyword pascalType AnsiChar
+ syn keyword pascalType PAnsiChar
+ endif
+
+ if exists("pascal_delphi")
+ syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError
+ syn region pascalDocumentation start="///" end="$" contains=pascalTodo,pascalSpaceError
+ syn region pascalDocumentation start="{!" end="}" contains=pascalTodo,pascalSpaceError
+ syn keyword pascalType SmallInt Int64
+ syn keyword pascalType Real48 Currency
+ syn keyword pascalType AnsiChar WideChar
+ syn keyword pascalType ShortString AnsiString WideString
+ syn keyword pascalType PAnsiChar PWideChar
+ syn match pascalFloat "-\=\<\d\+\.\d\+[dD]-\=\d\+\>"
+ syn match pascalStringEscape contained "#[12][0-9]\=[0-9]\="
+ syn keyword pascalStruct class dispinterface
+ syn keyword pascalException try except raise at on finally
+ syn keyword pascalStatement out
+ syn keyword pascalStatement library package
+ syn keyword pascalStatement initialization finalization uses exports
+ syn keyword pascalStatement property out resourcestring threadvar
+ syn keyword pascalModifier contains
+ syn keyword pascalModifier overridden reintroduce abstract sealed
+ syn keyword pascalModifier override export dynamic name message
+ syn keyword pascalModifier dispid index stored default nodefault readonly
+ syn keyword pascalModifier writeonly implements overload requires resident
+ syn keyword pascalAccess protected published automated
+ syn keyword pascalDirective register pascal cvar cdecl stdcall safecall
+ syn keyword pascalOperator as is
+ endif
+
+ if exists("pascal_no_functions")
+ "syn keyword pascalModifier read write
+ "may confuse with Read and Write functions. Not easy to handle.
+ else
+ " control flow functions
+ syn keyword pascalFunction Break Continue Exit Halt RunError
+
+ " ordinal functions
+ syn keyword pascalFunction Dec Inc High Low
+
+ " math functions
+ syn keyword pascalFunction Frac Int Pi
+
+ " string functions
+ syn keyword pascalFunction Concat Copy Delete Insert Length Pos Str Val
+
+ " memory function
+ syn keyword pascalFunction FreeMem GetMem MaxAvail MemAvail
+
+ " pointer and address functions
+ syn keyword pascalFunction Addr Assigned CSeg DSeg Ofs Ptr Seg SPtr SSeg
+
+ " misc functions
+ syn keyword pascalFunction Exclude FillChar Hi Include Lo Move ParamCount
+ syn keyword pascalFunction ParamStr Random Randomize SizeOf Swap TypeOf
+ syn keyword pascalFunction UpCase
+
+ " predefined variables
+ syn keyword pascalPredefined ErrorAddr ExitCode ExitProc FileMode FreeList
+ syn keyword pascalPredefined FreeZero HeapEnd HeapError HeapOrg HeapPtr
+ syn keyword pascalPredefined InOutRes OvrCodeList OvrDebugPtr OvrDosHandle
+ syn keyword pascalPredefined OvrEmsHandle OvrHeapEnd OvrHeapOrg OvrHeapPtr
+ syn keyword pascalPredefined OvrHeapSize OvrLoadList PrefixSeg RandSeed
+ syn keyword pascalPredefined SaveInt00 SaveInt02 SaveInt1B SaveInt21
+ syn keyword pascalPredefined SaveInt23 SaveInt24 SaveInt34 SaveInt35
+ syn keyword pascalPredefined SaveInt36 SaveInt37 SaveInt38 SaveInt39
+ syn keyword pascalPredefined SaveInt3A SaveInt3B SaveInt3C SaveInt3D
+ syn keyword pascalPredefined SaveInt3E SaveInt3F SaveInt75 SegA000 SegB000
+ syn keyword pascalPredefined SegB800 SelectorInc StackLimit Test8087
+
+ " file functions
+ syn keyword pascalFunction Append Assign BlockRead BlockWrite ChDir Close
+ syn keyword pascalFunction Erase FilePos FileSize Flush GetDir IOResult
+ syn keyword pascalFunction MkDir Read Readln Rename Reset Rewrite RmDir
+ syn keyword pascalFunction Seek SeekEof SeekEoln SetTextBuf Truncate
+
+ " crt unit
+ syn keyword pascalFunction AssignCrt ClrEol ClrScr Delay DelLine GotoXY
+ syn keyword pascalFunction HighVideo InsLine KeyPressed LowVideo NormVideo
+ syn keyword pascalFunction NoSound ReadKey Sound TextBackground TextColor
+ syn keyword pascalFunction TextMode WhereX WhereY Window
+ syn keyword pascalPredefined CheckBreak CheckEOF CheckSnow DirectVideo
+ syn keyword pascalPredefined LastMode TextAttr WindMin WindMax
+ syn keyword pascalFunction BigCursor CursorOff CursorOn
+ syn keyword pascalConstant Black Blue Green Cyan Red Magenta Brown
+ syn keyword pascalConstant LightGray DarkGray LightBlue LightGreen
+ syn keyword pascalConstant LightCyan LightRed LightMagenta Yellow White
+ syn keyword pascalConstant Blink ScreenWidth ScreenHeight bw40
+ syn keyword pascalConstant co40 bw80 co80 mono
+ syn keyword pascalPredefined TextChar
+
+ " DOS unit
+ syn keyword pascalFunction AddDisk DiskFree DiskSize DosExitCode DosVersion
+ syn keyword pascalFunction EnvCount EnvStr Exec Expand FindClose FindFirst
+ syn keyword pascalFunction FindNext FSearch FSplit GetCBreak GetDate
+ syn keyword pascalFunction GetEnv GetFAttr GetFTime GetIntVec GetTime
+ syn keyword pascalFunction GetVerify Intr Keep MSDos PackTime SetCBreak
+ syn keyword pascalFunction SetDate SetFAttr SetFTime SetIntVec SetTime
+ syn keyword pascalFunction SetVerify SwapVectors UnPackTime
+ syn keyword pascalConstant FCarry FParity FAuxiliary FZero FSign FOverflow
+ syn keyword pascalConstant Hidden Sysfile VolumeId Directory Archive
+ syn keyword pascalConstant AnyFile fmClosed fmInput fmOutput fmInout
+ syn keyword pascalConstant TextRecNameLength TextRecBufSize
+ syn keyword pascalType ComStr PathStr DirStr NameStr ExtStr SearchRec
+ syn keyword pascalType FileRec TextBuf TextRec Registers DateTime
+ syn keyword pascalPredefined DosError
+
+ "Graph Unit
+ syn keyword pascalFunction Arc Bar Bar3D Circle ClearDevice ClearViewPort
+ syn keyword pascalFunction CloseGraph DetectGraph DrawPoly Ellipse
+ syn keyword pascalFunction FillEllipse FillPoly FloodFill GetArcCoords
+ syn keyword pascalFunction GetAspectRatio GetBkColor GetColor
+ syn keyword pascalFunction GetDefaultPalette GetDriverName GetFillPattern
+ syn keyword pascalFunction GetFillSettings GetGraphMode GetImage
+ syn keyword pascalFunction GetLineSettings GetMaxColor GetMaxMode GetMaxX
+ syn keyword pascalFunction GetMaxY GetModeName GetModeRange GetPalette
+ syn keyword pascalFunction GetPaletteSize GetPixel GetTextSettings
+ syn keyword pascalFunction GetViewSettings GetX GetY GraphDefaults
+ syn keyword pascalFunction GraphErrorMsg GraphResult ImageSize InitGraph
+ syn keyword pascalFunction InstallUserDriver InstallUserFont Line LineRel
+ syn keyword pascalFunction LineTo MoveRel MoveTo OutText OutTextXY
+ syn keyword pascalFunction PieSlice PutImage PutPixel Rectangle
+ syn keyword pascalFunction RegisterBGIDriver RegisterBGIFont
+ syn keyword pascalFunction RestoreCRTMode Sector SetActivePage
+ syn keyword pascalFunction SetAllPallette SetAspectRatio SetBkColor
+ syn keyword pascalFunction SetColor SetFillPattern SetFillStyle
+ syn keyword pascalFunction SetGraphBufSize SetGraphMode SetLineStyle
+ syn keyword pascalFunction SetPalette SetRGBPalette SetTextJustify
+ syn keyword pascalFunction SetTextStyle SetUserCharSize SetViewPort
+ syn keyword pascalFunction SetVisualPage SetWriteMode TextHeight TextWidth
+ syn keyword pascalType ArcCoordsType FillPatternType FillSettingsType
+ syn keyword pascalType LineSettingsType PaletteType PointType
+ syn keyword pascalType TextSettingsType ViewPortType
+
+ " string functions
+ syn keyword pascalFunction StrAlloc StrBufSize StrCat StrComp StrCopy
+ syn keyword pascalFunction StrDispose StrECopy StrEnd StrFmt StrIComp
+ syn keyword pascalFunction StrLCat StrLComp StrLCopy StrLen StrLFmt
+ syn keyword pascalFunction StrLIComp StrLower StrMove StrNew StrPas
+ syn keyword pascalFunction StrPCopy StrPLCopy StrPos StrRScan StrScan
+ syn keyword pascalFunction StrUpper
+ endif
+
+endif
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link pascalAccess pascalStatement
+hi def link pascalBoolean Boolean
+hi def link pascalComment Comment
+hi def link pascalDocumentation Comment
+hi def link pascalConditional Conditional
+hi def link pascalConstant Constant
+hi def link pascalControlCharacter Character
+hi def link pascalDelimiter Identifier
+hi def link pascalDirective pascalStatement
+hi def link pascalException Exception
+hi def link pascalFloat Float
+hi def link pascalFunction Function
+hi def link pascalLabel Label
+hi def link pascalMatrixDelimiter Identifier
+hi def link pascalModifier Type
+hi def link pascalNumber Number
+hi def link pascalExtendedNumber Number
+hi def link pascalBinNumber pascalNumber
+hi def link pascalHexNumber pascalNumber
+hi def link pascalOctNumber pascalNumber
+hi def link pascalOperator Operator
+hi def link pascalPredefined pascalStatement
+hi def link pascalPreProc PreProc
+hi def link pascalRepeat Repeat
+hi def link pascalSpaceError Error
+hi def link pascalStatement Statement
+hi def link pascalString String
+hi def link pascalStringEscape Special
+hi def link pascalStringEscapeGPC Special
+hi def link pascalStringError Error
+hi def link pascalStruct pascalStatement
+hi def link pascalSymbolOperator pascalOperator
+hi def link pascalTodo Todo
+hi def link pascalType Type
+hi def link pascalUnclassified pascalStatement
+" hi def link pascalAsm Assembler
+hi def link pascalError Error
+hi def link pascalAsmKey pascalStatement
+hi def link pascalShowTab Error
+
+
+
+let b:current_syntax = "pascal"
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/syntax/passwd.vim b/runtime/syntax/passwd.vim
new file mode 100644
index 0000000..ad90202
--- /dev/null
+++ b/runtime/syntax/passwd.vim
@@ -0,0 +1,71 @@
+" Vim syntax file
+" Language: passwd(5) password file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-10-03
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match passwdBegin display '^' nextgroup=passwdAccount
+
+syn match passwdAccount contained display '[^:]\+'
+ \ nextgroup=passwdPasswordColon
+
+syn match passwdPasswordColon contained display ':'
+ \ nextgroup=passwdPassword,passwdShadow
+
+syn match passwdPassword contained display '[^:]\+'
+ \ nextgroup=passwdUIDColon
+
+syn match passwdShadow contained display '[x*!]'
+ \ nextgroup=passwdUIDColon
+
+syn match passwdUIDColon contained display ':' nextgroup=passwdUID
+
+syn match passwdUID contained display '\d\{0,10}'
+ \ nextgroup=passwdGIDColon
+
+syn match passwdGIDColon contained display ':' nextgroup=passwdGID
+
+syn match passwdGID contained display '\d\{0,10}'
+ \ nextgroup=passwdGecosColon
+
+syn match passwdGecosColon contained display ':' nextgroup=passwdGecos
+
+syn match passwdGecos contained display '[^:]*'
+ \ nextgroup=passwdDirColon
+
+syn match passwdDirColon contained display ':' nextgroup=passwdDir
+
+syn match passwdDir contained display '/[^:]*'
+ \ nextgroup=passwdShellColon
+
+syn match passwdShellColon contained display ':'
+ \ nextgroup=passwdShell
+
+syn match passwdShell contained display '.*'
+
+hi def link passwdColon Normal
+hi def link passwdAccount Identifier
+hi def link passwdPasswordColon passwdColon
+hi def link passwdPassword Number
+hi def link passwdShadow Special
+hi def link passwdUIDColon passwdColon
+hi def link passwdUID Number
+hi def link passwdGIDColon passwdColon
+hi def link passwdGID Number
+hi def link passwdGecosColon passwdColon
+hi def link passwdGecos Comment
+hi def link passwdDirColon passwdColon
+hi def link passwdDir Type
+hi def link passwdShellColon passwdColon
+hi def link passwdShell Operator
+
+let b:current_syntax = "passwd"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/pbtxt.vim b/runtime/syntax/pbtxt.vim
new file mode 100644
index 0000000..92a7556
--- /dev/null
+++ b/runtime/syntax/pbtxt.vim
@@ -0,0 +1,44 @@
+" Vim syntax file
+" Language: Protobuf Text Format
+" Maintainer: Lakshay Garg <lakshayg@outlook.in>
+" Last Change: 2020 Nov 17
+" Homepage: https://github.com/lakshayg/vim-pbtxt
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case ignore
+
+syn keyword pbtxtTodo TODO FIXME contained
+syn keyword pbtxtBool true false contained
+
+syn match pbtxtInt display "\<\(0\|[1-9]\d*\)\>"
+syn match pbtxtHex display "\<0[xX]\x\+\>"
+syn match pbtxtFloat display "\(0\|[1-9]\d*\)\=\.\d*"
+syn match pbtxtMessage display "^\s*\w\+\s*{"me=e-1
+syn match pbtxtField display "^\s*\w\+:"me=e-1
+syn match pbtxtEnum display ":\s*\a\w\+"ms=s+1 contains=pbtxtBool
+syn region pbtxtString start=+"+ skip=+\\"+ end=+"+ contains=@Spell
+syn region pbtxtComment start="#" end="$" keepend contains=pbtxtTodo,@Spell
+
+hi def link pbtxtTodo Todo
+hi def link pbtxtBool Boolean
+hi def link pbtxtInt Number
+hi def link pbtxtHex Number
+hi def link pbtxtFloat Float
+hi def link pbtxtMessage Structure
+hi def link pbtxtField Identifier
+hi def link pbtxtEnum Define
+hi def link pbtxtString String
+hi def link pbtxtComment Comment
+
+let b:current_syntax = "pbtxt"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 noet
diff --git a/runtime/syntax/pcap.vim b/runtime/syntax/pcap.vim
new file mode 100644
index 0000000..e0eed63
--- /dev/null
+++ b/runtime/syntax/pcap.vim
@@ -0,0 +1,48 @@
+" Vim syntax file
+" Config file: printcap
+" Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int> (defunct)
+" Modified by Bram
+" Last Change: 2003 May 11
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+"define keywords
+setlocal isk=@,46-57,_,-,#,=,192-255
+
+"first all the bad guys
+syn match pcapBad '^.\+$' "define any line as bad
+syn match pcapBadword '\k\+' contained "define any sequence of keywords as bad
+syn match pcapBadword ':' contained "define any single : as bad
+syn match pcapBadword '\\' contained "define any single \ as bad
+"then the good boys
+" Boolean keywords
+syn match pcapKeyword contained ':\(fo\|hl\|ic\|rs\|rw\|sb\|sc\|sf\|sh\)'
+" Numeric Keywords
+syn match pcapKeyword contained ':\(br\|du\|fc\|fs\|mx\|pc\|pl\|pw\|px\|py\|xc\|xs\)#\d\+'
+" String Keywords
+syn match pcapKeyword contained ':\(af\|cf\|df\|ff\|gf\|if\|lf\|lo\|lp\|nd\|nf\|of\|rf\|rg\|rm\|rp\|sd\|st\|tf\|tr\|vf\)=\k*'
+" allow continuation
+syn match pcapEnd ':\\$' contained
+"
+syn match pcapDefineLast '^\s.\+$' contains=pcapBadword,pcapKeyword
+syn match pcapDefine '^\s.\+$' contains=pcapBadword,pcapKeyword,pcapEnd
+syn match pcapHeader '^\k[^|]\+\(|\k[^|]\+\)*:\\$'
+syn match pcapComment "#.*$"
+
+syn sync minlines=50
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link pcapBad WarningMsg
+hi def link pcapBadword WarningMsg
+hi def link pcapComment Comment
+
+
+let b:current_syntax = "pcap"
+
+" vim: ts=8
diff --git a/runtime/syntax/pccts.vim b/runtime/syntax/pccts.vim
new file mode 100644
index 0000000..7800357
--- /dev/null
+++ b/runtime/syntax/pccts.vim
@@ -0,0 +1,89 @@
+" Vim syntax file
+" Language: PCCTS
+" Maintainer: Scott Bigham <dsb@killerbunnies.org>
+" Last Change: 10 Aug 1999
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the C++ syntax to start with
+syn include @cppTopLevel syntax/cpp.vim
+
+syn region pcctsAction matchgroup=pcctsDelim start="<<" end=">>?\=" contains=@cppTopLevel,pcctsRuleRef
+
+syn region pcctsArgBlock matchgroup=pcctsDelim start="\(>\s*\)\=\[" end="\]" contains=@cppTopLevel,pcctsRuleRef
+
+syn region pcctsString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=pcctsSpecialChar
+syn match pcctsSpecialChar "\\\\\|\\\"" contained
+
+syn region pcctsComment start="/\*" end="\*/" contains=cTodo
+syn match pcctsComment "//.*$" contains=cTodo
+
+syn region pcctsDirective start="^\s*#header\s\+<<" end=">>" contains=pcctsAction keepend
+syn match pcctsDirective "^\s*#parser\>.*$" contains=pcctsString,pcctsComment
+syn match pcctsDirective "^\s*#tokdefs\>.*$" contains=pcctsString,pcctsComment
+syn match pcctsDirective "^\s*#token\>.*$" contains=pcctsString,pcctsAction,pcctsTokenName,pcctsComment
+syn region pcctsDirective start="^\s*#tokclass\s\+[A-Z]\i*\s\+{" end="}" contains=pcctsString,pcctsTokenName
+syn match pcctsDirective "^\s*#lexclass\>.*$" contains=pcctsTokenName
+syn region pcctsDirective start="^\s*#errclass\s\+[^{]\+\s\+{" end="}" contains=pcctsString,pcctsTokenName
+syn match pcctsDirective "^\s*#pred\>.*$" contains=pcctsTokenName,pcctsAction
+
+syn cluster pcctsInRule contains=pcctsString,pcctsRuleName,pcctsTokenName,pcctsAction,pcctsArgBlock,pcctsSubRule,pcctsLabel,pcctsComment
+
+syn region pcctsRule start="\<[a-z][A-Za-z0-9_]*\>\(\s*\[[^]]*\]\)\=\(\s*>\s*\[[^]]*\]\)\=\s*:" end=";" contains=@pcctsInRule
+
+syn region pcctsSubRule matchgroup=pcctsDelim start="(" end=")\(+\|\*\|?\(\s*=>\)\=\)\=" contains=@pcctsInRule contained
+syn region pcctsSubRule matchgroup=pcctsDelim start="{" end="}" contains=@pcctsInRule contained
+
+syn match pcctsRuleName "\<[a-z]\i*\>" contained
+syn match pcctsTokenName "\<[A-Z]\i*\>" contained
+
+syn match pcctsLabel "\<\I\i*:\I\i*" contained contains=pcctsLabelHack,pcctsRuleName,pcctsTokenName
+syn match pcctsLabel "\<\I\i*:\"\([^\\]\|\\.\)*\"" contained contains=pcctsLabelHack,pcctsString
+syn match pcctsLabelHack "\<\I\i*:" contained
+
+syn match pcctsRuleRef "\$\I\i*\>" contained
+syn match pcctsRuleRef "\$\d\+\(\.\d\+\)\>" contained
+
+syn keyword pcctsClass class nextgroup=pcctsClassName skipwhite
+syn match pcctsClassName "\<\I\i*\>" contained nextgroup=pcctsClassBlock skipwhite skipnl
+syn region pcctsClassBlock start="{" end="}" contained contains=pcctsRule,pcctsComment,pcctsDirective,pcctsAction,pcctsException,pcctsExceptionHandler
+
+syn keyword pcctsException exception nextgroup=pcctsExceptionRuleRef skipwhite
+syn match pcctsExceptionRuleRef "\[\I\i*\]" contained contains=pcctsExceptionID
+syn match pcctsExceptionID "\I\i*" contained
+syn keyword pcctsExceptionHandler catch default
+syn keyword pcctsExceptionHandler NoViableAlt NoSemViableAlt
+syn keyword pcctsExceptionHandler MismatchedToken
+
+syn sync clear
+syn sync match pcctsSyncAction grouphere pcctsAction "<<"
+syn sync match pcctsSyncAction "<<\([^>]\|>[^>]\)*>>"
+syn sync match pcctsSyncRule grouphere pcctsRule "\<[a-z][A-Za-z0-9_]*\>\s*\[[^]]*\]\s*:"
+syn sync match pcctsSyncRule grouphere pcctsRule "\<[a-z][A-Za-z0-9_]*\>\(\s*\[[^]]*\]\)\=\s*>\s*\[[^]]*\]\s*:"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link pcctsDelim Special
+hi def link pcctsTokenName Identifier
+hi def link pcctsRuleName Statement
+hi def link pcctsLabelHack Label
+hi def link pcctsDirective PreProc
+hi def link pcctsString String
+hi def link pcctsComment Comment
+hi def link pcctsClass Statement
+hi def link pcctsClassName Identifier
+hi def link pcctsException Statement
+hi def link pcctsExceptionHandler Keyword
+hi def link pcctsExceptionRuleRef pcctsDelim
+hi def link pcctsExceptionID Identifier
+hi def link pcctsRuleRef Identifier
+hi def link pcctsSpecialChar SpecialChar
+
+
+let b:current_syntax = "pccts"
+
+" vim: ts=8
diff --git a/runtime/syntax/pdf.vim b/runtime/syntax/pdf.vim
new file mode 100644
index 0000000..86d80da
--- /dev/null
+++ b/runtime/syntax/pdf.vim
@@ -0,0 +1,73 @@
+" Vim syntax file
+" Language: PDF
+" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
+" Last Change: 2007 Dec 16
+
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'pdf'
+endif
+
+syn include @pdfXML syntax/xml.vim
+
+syn case match
+
+syn cluster pdfObjects contains=pdfBoolean,pdfConstant,pdfNumber,pdfFloat,pdfName,pdfHexString,pdfString,pdfArray,pdfHash,pdfReference,pdfComment
+syn keyword pdfBoolean true false contained
+syn keyword pdfConstant null contained
+syn match pdfNumber "[+-]\=\<\d\+\>"
+syn match pdfFloat "[+-]\=\<\%(\d\+\.\|\d*\.\d\+\)\>" contained
+
+syn match pdfNameError "#\X\|#\x\X\|#00" contained containedin=pdfName
+syn match pdfSpecialChar "#\x\x" contained containedin=pdfName
+syn match pdfName "/[^[:space:]\[\](){}<>/]*" contained
+syn match pdfHexError "[^[:space:][:xdigit:]<>]" contained
+"syn match pdfHexString "<\s*\x[^<>]*\x\s*>" contained contains=pdfHexError
+"syn match pdfHexString "<\s*\x\=\s*>" contained
+syn region pdfHexString matchgroup=pdfDelimiter start="<<\@!" end=">" contained contains=pdfHexError
+syn match pdfStringError "\\." contained containedin=pdfString
+syn match pdfSpecialChar "\\\%(\o\{1,3\}\|[nrtbf()\\]\)" contained containedin=pdfString
+syn region pdfString matchgroup=pdfDelimiter start="\\\@<!(" end="\\\@<!)" contains=pdfString
+
+syn region pdfArray matchgroup=pdfOperator start="\[" end="\]" contains=@pdfObjects contained
+syn region pdfHash matchgroup=pdfOperator start="<<" end=">>" contains=@pdfObjects contained
+syn match pdfReference "\<\d\+\s\+\d\+\s\+R\>"
+"syn keyword pdfOperator R contained containedin=pdfReference
+
+syn region pdfObject matchgroup=pdfType start="\<obj\>" end="\<endobj\>" contains=@pdfObjects
+syn region pdfObject matchgroup=pdfType start="\<obj\r\=\n" end="\<endobj\>" contains=@pdfObjects fold
+
+" Do these twice. The ones with only newlines are foldable
+syn region pdfStream matchgroup=pdfType start="\<stream\r\=\n" end="endstream\s*\%(\r\|\n\|\r\n\)" contained containedin=pdfObject
+syn region pdfXMLStream matchgroup=pdfType start="\<stream\r\=\n\_s*\%(<?\)\@=" end="endstream\s*\%(\r\|\n\|\r\n\)" contained containedin=pdfObject contains=@pdfXML
+syn region pdfStream matchgroup=pdfType start="\<stream\n" end="endstream\s*\%(\r\|\n\|\r\n\)" contained containedin=pdfObject fold
+syn region pdfXMLStream matchgroup=pdfType start="\<stream\n\_s*\%(<?\)\@=" end="endstream\s*\%(\r\|\n\|\r\n\)" contained containedin=pdfObject contains=@pdfXML fold
+
+syn region pdfPreProc start="\<xref\%(\r\|\n\|\r\n\)" end="^trailer\%(\r\|\n\|\r\n\)" skipwhite skipempty nextgroup=pdfHash contains=pdfNumber fold
+syn keyword pdfPreProc startxref
+syn match pdfComment "%.*\%(\r\|\n\)" contains=pdfPreProc
+syn match pdfPreProc "^%\%(%EOF\|PDF-\d\.\d\)\(\r\|\n\)"
+
+hi def link pdfOperator Operator
+hi def link pdfNumber Number
+hi def link pdfFloat Float
+hi def link pdfBoolean Boolean
+hi def link pdfConstant Constant
+hi def link pdfName Identifier
+hi def link pdfNameError pdfStringError
+hi def link pdfHexString pdfString
+hi def link pdfHexError pdfStringError
+hi def link pdfString String
+hi def link pdfStringError Error
+hi def link pdfSpecialChar SpecialChar
+hi def link pdfDelimiter Delimiter
+hi def link pdfType Type
+hi def link pdfReference Tag
+hi def link pdfStream NonText
+hi def link pdfPreProc PreProc
+hi def link pdfComment Comment
+
+let b:current_syntax = "pdf"
diff --git a/runtime/syntax/perl.vim b/runtime/syntax/perl.vim
new file mode 100644
index 0000000..73f967a
--- /dev/null
+++ b/runtime/syntax/perl.vim
@@ -0,0 +1,662 @@
+" Vim syntax file
+" Language: Perl
+" Maintainer: vim-perl <vim-perl@googlegroups.com>
+" Homepage: https://github.com/vim-perl/vim-perl
+" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+" License: Vim License (see :help license)
+" Last Change: 2022 Jun 13
+" Contributors: Andy Lester <andy@petdance.com>
+" Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
+" Lukas Mai <l.mai.web.de>
+" Nick Hibma <nick@van-laarhoven.org>
+" Sonia Heimann <niania@netsurf.org>
+" Rob Hoelz <rob@hoelz.ro>
+" Doug Kearns <dougkearns@gmail.com>
+" and many others.
+"
+" Please download the most recent version first, before mailing
+" any comments.
+"
+" The following parameters are available for tuning the
+" perl syntax highlighting, with defaults given:
+"
+" let perl_include_pod = 1
+" unlet perl_no_scope_in_variables
+" unlet perl_no_extended_vars
+" unlet perl_string_as_statement
+" unlet perl_no_sync_on_sub
+" unlet perl_no_sync_on_global_var
+" let perl_sync_dist = 100
+" unlet perl_fold
+" unlet perl_fold_blocks
+" unlet perl_nofold_packages
+" unlet perl_nofold_subs
+" unlet perl_fold_anonymous_subs
+" unlet perl_no_subprototype_error
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" POD starts with ^=<word> and ends with ^=cut
+
+if get(g:, 'perl_include_pod', 1)
+ " Include a while extra syntax file
+ syn include @Pod syntax/pod.vim
+ unlet b:current_syntax
+ if get(g:, 'perl_fold', 1)
+ syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,@Spell,perlTodo keepend fold extend
+ syn region perlPOD start="^=cut" end="^=cut" contains=perlTodo keepend fold extend
+ else
+ syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,@Spell,perlTodo keepend
+ syn region perlPOD start="^=cut" end="^=cut" contains=perlTodo keepend
+ endif
+else
+ " Use only the bare minimum of rules
+ if get(g:, 'perl_fold', 1)
+ syn region perlPOD start="^=[a-z]" end="^=cut" fold
+ else
+ syn region perlPOD start="^=[a-z]" end="^=cut"
+ endif
+endif
+
+
+syn cluster perlTop contains=TOP
+
+syn region perlBraces start="{" end="}" transparent extend
+
+" All keywords
+"
+syn match perlConditional "\<\%(if\|elsif\|unless\|given\|when\|default\)\>"
+syn match perlConditional "\<else\%(\%(\_s\*if\>\)\|\>\)" contains=perlElseIfError skipwhite skipnl skipempty
+syn match perlRepeat "\<\%(while\|for\%(each\)\=\|do\|until\|continue\)\>"
+syn match perlOperator "\<\%(defined\|undef\|eq\|ne\|[gl][et]\|cmp\|not\|and\|or\|xor\|not\|bless\|ref\|do\)\>"
+" for some reason, adding this as the nextgroup for perlControl fixes BEGIN
+" folding issues...
+syn match perlFakeGroup "" contained
+syn match perlControl "\<\%(BEGIN\|CHECK\|INIT\|END\|UNITCHECK\)\>\_s*" nextgroup=perlFakeGroup
+
+syn match perlStatementStorage "\<\%(my\|our\|local\|state\)\>"
+syn match perlStatementControl "\<\%(return\|last\|next\|redo\|goto\|break\)\>"
+syn match perlStatementScalar "\<\%(chom\=p\|chr\|crypt\|r\=index\|lc\%(first\)\=\|length\|ord\|pack\|sprintf\|substr\|fc\|uc\%(first\)\=\)\>"
+syn match perlStatementRegexp "\<\%(pos\|quotemeta\|split\|study\)\>"
+syn match perlStatementNumeric "\<\%(abs\|atan2\|cos\|exp\|hex\|int\|log\|oct\|rand\|sin\|sqrt\|srand\)\>"
+syn match perlStatementList "\<\%(splice\|unshift\|shift\|push\|pop\|join\|reverse\|grep\|map\|sort\|unpack\)\>"
+syn match perlStatementHash "\<\%(delete\|each\|exists\|keys\|values\)\>"
+syn match perlStatementIOfunc "\<\%(syscall\|dbmopen\|dbmclose\)\>"
+syn match perlStatementFiledesc "\<\%(binmode\|close\%(dir\)\=\|eof\|fileno\|getc\|lstat\|printf\=\|read\%(dir\|line\|pipe\)\|rewinddir\|say\|select\|stat\|tell\%(dir\)\=\|write\)\>" nextgroup=perlFiledescStatementNocomma skipwhite
+syn match perlStatementFiledesc "\<\%(fcntl\|flock\|ioctl\|open\%(dir\)\=\|read\|seek\%(dir\)\=\|sys\%(open\|read\|seek\|write\)\|truncate\)\>" nextgroup=perlFiledescStatementComma skipwhite
+syn match perlStatementVector "\<vec\>"
+syn match perlStatementFiles "\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdir\|readlink\|rename\|rmdir\|symlink\|umask\|unlink\|utime\)\>"
+syn match perlStatementFiles "-[rwxoRWXOezsfdlpSbctugkTBMAC]\>"
+syn match perlStatementFlow "\<\%(caller\|die\|dump\|eval\|exit\|wantarray\|evalbytes\)\>"
+syn match perlStatementInclude "\<\%(require\|import\|unimport\)\>"
+syn match perlStatementInclude "\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autodie\%(::\%(exception\%(::system\)\=\|hints\|skip\)\)\=\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|deprecate\|diagnostics\|encoding\%(::warnings\)\=\|experimental\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|ok\|open\|ops\|overload\|overloading\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\="
+syn match perlStatementProc "\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>"
+syn match perlStatementSocket "\<\%(accept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>"
+syn match perlStatementIPC "\<\%(msg\%(ctl\|get\|rcv\|snd\)\|sem\%(ctl\|get\|op\)\|shm\%(ctl\|get\|read\|write\)\)\>"
+syn match perlStatementNetwork "\<\%(\%(end\|[gs]et\)\%(host\|net\|proto\|serv\)ent\|get\%(\%(host\|net\)by\%(addr\|name\)\|protoby\%(name\|number\)\|servby\%(name\|port\)\)\)\>"
+syn match perlStatementPword "\<\%(get\%(pw\%(uid\|nam\)\|gr\%(gid\|nam\)\|login\)\)\|\%(end\|[gs]et\)\%(pw\|gr\)ent\>"
+syn match perlStatementTime "\<\%(gmtime\|localtime\|time\)\>"
+
+syn match perlStatementMisc "\<\%(warn\|format\|formline\|reset\|scalar\|prototype\|lock\|tied\=\|untie\)\>"
+
+syn keyword perlTodo TODO TODO: TBD TBD: FIXME FIXME: XXX XXX: NOTE NOTE: contained
+
+syn region perlStatementIndirObjWrap matchgroup=perlStatementIndirObj start="\%(\<\%(map\|grep\|sort\|printf\=\|say\|system\|exec\)\>\s*\)\@<={" end="}" transparent extend
+
+syn match perlLabel "^\s*\h\w*\s*::\@!\%(\<v\d\+\s*:\)\@<!"
+
+" Perl Identifiers.
+"
+" Should be cleaned up to better handle identifiers in particular situations
+" (in hash keys for example)
+"
+" Plain identifiers: $foo, @foo, $#foo, %foo, &foo and dereferences $$foo, @$foo, etc.
+" We do not process complex things such as @{${"foo"}}. Too complicated, and
+" too slow. And what is after the -> is *not* considered as part of the
+" variable - there again, too complicated and too slow.
+
+" Special variables first ($^A, ...) and ($|, $', ...)
+syn match perlVarPlain "$^[ACDEFHILMNOPRSTVWX]\="
+syn match perlVarPlain "$[\\\"\[\]'&`+*.,;=%~!?@#$<>(-]"
+syn match perlVarPlain "@[-+]"
+syn match perlVarPlain "$\%(0\|[1-9]\d*\)"
+" Same as above, but avoids confusion in $::foo (equivalent to $main::foo)
+syn match perlVarPlain "$::\@!"
+" These variables are not recognized within matches.
+syn match perlVarNotInMatches "$[|)]"
+" This variable is not recognized within matches delimited by m//.
+syn match perlVarSlash "$/"
+
+" And plain identifiers
+syn match perlPackageRef "[$@#%*&]\%(\%(::\|'\)\=\I\i*\%(\%(::\|'\)\I\i*\)*\)\=\%(::\|'\)\I"ms=s+1,me=e-1 contained
+
+" To not highlight packages in variables as a scope reference - i.e. in
+" $pack::var, pack:: is a scope, just set "perl_no_scope_in_variables"
+" If you don't want complex things like @{${"foo"}} to be processed,
+" just set the variable "perl_no_extended_vars"...
+
+if !get(g:, 'perl_no_scope_in_variables', 0)
+ syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref
+ syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref
+ syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref
+else
+ syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref
+ syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref
+ syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref
+endif
+
+syn match perlVarPlain2 "%[-+]"
+
+if !get(g:, 'perl_no_extended_vars', 0)
+ syn cluster perlExpr contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQ,perlQQ,perlQW,perlQR,perlArrow,perlBraces
+ syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref contained
+ syn region perlArrow matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref contained
+ syn region perlArrow matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref contained
+ syn match perlArrow "->\s*{\s*\I\i*\s*}" contains=perlVarSimpleMemberName nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref contained
+ syn region perlVarBlock matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref extend
+ syn region perlVarBlock2 matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref extend
+ syn match perlVarPlain2 "[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref extend
+ syn match perlVarPlain "\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref extend
+ syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref extend
+ syn match perlVarSimpleMember "\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref contains=perlVarSimpleMemberName contained extend
+ syn match perlVarSimpleMemberName "\I\i*" contained
+ syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref extend
+ syn match perlPackageConst "__PACKAGE__" nextgroup=perlPostDeref
+ syn match perlPostDeref "->\%($#\|[$@%&*]\)\*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlPostDeref
+ syn region perlPostDeref start="->\%($#\|[$@%&*]\)\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarSimpleMember,perlVarMember,perlPostDeref
+ syn region perlPostDeref matchgroup=perlPostDeref start="->\%($#\|[$@%&*]\){" skip="\\}" end="}" keepend extend contained contains=@perlExpr nextgroup=perlVarSimpleMember,perlVarMember,perlPostDeref
+endif
+
+" File Descriptors
+syn match perlFiledescRead "<\h\w*>"
+
+syn match perlFiledescStatementComma "(\=\s*\<\u\w*\>\s*,"me=e-1 transparent contained contains=perlFiledescStatement
+syn match perlFiledescStatementNocomma "(\=\s*\<\u\w*\>\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement
+
+syn match perlFiledescStatement "\<\u\w*\>" contained
+
+" Special characters in strings and matches
+syn match perlSpecialString "\\\%(\o\{1,3}\|x\%({\x\+}\|\x\{1,2}\)\|c.\|[^cx]\)" contained extend
+syn match perlSpecialStringU2 "\\." extend contained contains=NONE
+syn match perlSpecialStringU "\\\\" contained
+syn match perlSpecialMatch "\\[1-9]" contained extend
+syn match perlSpecialMatch "\\g\%(\d\+\|{\%(-\=\d\+\|\h\w*\)}\)" contained
+syn match perlSpecialMatch "\\k\%(<\h\w*>\|'\h\w*'\)" contained
+syn match perlSpecialMatch "{\d\+\%(,\%(\d\+\)\=\)\=}" contained
+syn match perlSpecialMatch "\[[]-]\=[^\[\]]*[]-]\=\]" contained extend
+syn match perlSpecialMatch "[+*()?.]" contained
+syn match perlSpecialMatch "(?[#:=!]" contained
+syn match perlSpecialMatch "(?[impsx]*\%(-[imsx]\+\)\=)" contained
+syn match perlSpecialMatch "(?\%([-+]\=\d\+\|R\))" contained
+syn match perlSpecialMatch "(?\%(&\|P[>=]\)\h\w*)" contained
+syn match perlSpecialMatch "(\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\=\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\=\|ACCEPT\))" contained
+
+" Possible errors
+"
+" Highlight lines with only whitespace (only in blank delimited here documents) as errors
+syn match perlNotEmptyLine "^\s\+$" contained
+" Highlight "} else if (...) {", it should be "} else { if (...) { " or "} elsif (...) {"
+syn match perlElseIfError "else\_s*if" containedin=perlConditional
+syn keyword perlElseIfError elseif containedin=perlConditional
+
+" Variable interpolation
+"
+" These items are interpolated inside "" strings and similar constructs.
+syn cluster perlInterpDQ contains=perlSpecialString,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBlock
+" These items are interpolated inside '' strings and similar constructs.
+syn cluster perlInterpSQ contains=perlSpecialStringU,perlSpecialStringU2
+" These items are interpolated inside m// matches and s/// substitutions.
+syn cluster perlInterpSlash contains=perlSpecialString,perlSpecialMatch,perlVarPlain,perlVarBlock
+" These items are interpolated inside m## matches and s### substitutions.
+syn cluster perlInterpMatch contains=@perlInterpSlash,perlVarSlash
+
+" Shell commands
+syn region perlShellCommand matchgroup=perlMatchStartEnd start="`" end="`" contains=@perlInterpDQ keepend
+
+" Constants
+"
+" Numbers
+syn case ignore
+syn match perlNumber "\<\%(0\|[1-9]\%(_\=\d\)*\)\>"
+syn match perlNumber "\<0\%(x\x\%(_\=\x\)*\|b[01]\%(_\=[01]\)*\|o\=\%(_\=\o\)*\)\>"
+syn match perlFloat "\<\d\%(_\=\d\)*e[-+]\=\d\%(_\=\d\)*"
+syn match perlFloat "\<\d\%(_\=\d\)*\.\%(\d\%(_\=\d\)*\)\=\%(e[-+]\=\d\%(_\=\d\)*\)\="
+syn match perlFloat "\.\d\%(_\=\d\)*\%(e[-+]\=\d\%(_\=\d\)*\)\="
+syn match perlFloat "\<0x\x\%(_\=\x\)*p[-+]\=\d\%(_\=\d\)*"
+syn match perlFloat "\<0x\x\%(_\=\x\)*\.\%(\x\%(_\=\x\)*\)\=\%(p[-+]\=\d\%(_\=\d\)*\)\="
+syn match perlFloat "\<0x\.\x\%(_\=\x\)*\%(p[-+]\=\d\%(_\=\d\)*\)\="
+syn case match
+
+syn match perlString "\<\%(v\d\+\%(\.\d\+\)*\|\d\+\%(\.\d\+\)\{2,}\)\>" contains=perlVStringV
+syn match perlVStringV "\<v" contained
+
+
+syn region perlParensSQ start=+(+ end=+)+ extend contained contains=perlParensSQ,@perlInterpSQ keepend
+syn region perlBracketsSQ start=+\[+ end=+\]+ extend contained contains=perlBracketsSQ,@perlInterpSQ keepend
+syn region perlBracesSQ start=+{+ end=+}+ extend contained contains=perlBracesSQ,@perlInterpSQ keepend
+syn region perlAnglesSQ start=+<+ end=+>+ extend contained contains=perlAnglesSQ,@perlInterpSQ keepend
+
+syn region perlParensDQ start=+(+ end=+)+ extend contained contains=perlParensDQ,@perlInterpDQ keepend
+syn region perlBracketsDQ start=+\[+ end=+\]+ extend contained contains=perlBracketsDQ,@perlInterpDQ keepend
+syn region perlBracesDQ start=+{+ end=+}+ extend contained contains=perlBracesDQ,@perlInterpDQ keepend
+syn region perlAnglesDQ start=+<+ end=+>+ extend contained contains=perlAnglesDQ,@perlInterpDQ keepend
+
+
+" Simple version of searches and matches
+syn match perlMatchModifiers "[msixpadluncgo]\+" contained
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1+ contains=@perlInterpMatch keepend extend nextgroup=perlMatchModifiers
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m#+ end=+#+ contains=@perlInterpMatch keepend extend nextgroup=perlMatchModifiers
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*'+ end=+'+ contains=@perlInterpSQ keepend extend nextgroup=perlMatchModifiers
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*/+ end=+/+ contains=@perlInterpSlash keepend extend nextgroup=perlMatchModifiers
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*(+ end=+)+ contains=@perlInterpMatch,perlParensDQ keepend extend nextgroup=perlMatchModifiers
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*{+ end=+}+ contains=@perlInterpMatch,perlBracesDQ extend nextgroup=perlMatchModifiers
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*<+ end=+>+ contains=@perlInterpMatch,perlAnglesDQ keepend extend nextgroup=perlMatchModifiers
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*\[+ end=+\]+ contains=@perlInterpMatch,perlBracketsDQ keepend extend nextgroup=perlMatchModifiers
+
+" Below some hacks to recognise the // variant. This is virtually impossible to catch in all
+" cases as the / is used in so many other ways, but these should be the most obvious ones.
+syn region perlMatch matchgroup=perlMatchStartEnd start="\%([$@%&*]\@<!\%(\<split\|\<while\|\<if\|\<unless\|\.\.\|[-+*!~(\[{=]\)\s*\)\@<=/\%(/=\)\@!" start=+^/\%(/=\)\@!+ start=+\s\@<=/\%(/=\)\@![^[:space:][:digit:]$@%=]\@=\%(/\_s*\%([([{$@%&*[:digit:]"'`]\|\_s\w\|[[:upper:]_abd-fhjklnqrt-wyz]\)\)\@!+ skip=+\\/+ end=+/+ contains=@perlInterpSlash extend nextgroup=perlMatchModifiers
+
+
+" Substitutions
+" perlMatch is the first part, perlSubstitution* is the substitution part
+syn match perlSubstitutionModifiers "[msixpadluncgero]\+" contained
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend extend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*'+ end=+'+me=e-1 contains=@perlInterpSQ nextgroup=perlSubstitutionSQ keepend extend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*/+ end=+/+me=e-1 contains=@perlInterpSlash nextgroup=perlSubstitutionGQQ keepend extend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s#+ end=+#+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend extend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*(+ end=+)+ contains=@perlInterpMatch,perlParensDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*<+ end=+>+ contains=@perlInterpMatch,perlAnglesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*\[+ end=+\]+ contains=@perlInterpMatch,perlBracketsDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*{+ end=+}+ contains=@perlInterpMatch,perlBracesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend
+syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\z([^[:space:]'([{<]\)+ end=+\z1+ keepend contained contains=@perlInterpDQ extend nextgroup=perlSubstitutionModifiers
+syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+(+ end=+)+ contained contains=@perlInterpDQ,perlParensDQ keepend extend nextgroup=perlSubstitutionModifiers
+syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\[+ end=+\]+ contained contains=@perlInterpDQ,perlBracketsDQ keepend extend nextgroup=perlSubstitutionModifiers
+syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+{+ end=+}+ contained contains=@perlInterpDQ,perlBracesDQ keepend extend extend nextgroup=perlSubstitutionModifiers
+syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+<+ end=+>+ contained contains=@perlInterpDQ,perlAnglesDQ keepend extend nextgroup=perlSubstitutionModifiers
+syn region perlSubstitutionSQ matchgroup=perlMatchStartEnd start=+'+ end=+'+ contained contains=@perlInterpSQ keepend extend nextgroup=perlSubstitutionModifiers
+
+" Translations
+" perlMatch is the first part, perlTranslation* is the second, translator part.
+syn match perlTranslationModifiers "[cdsr]\+" contained
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\>\s*\z([^[:space:]([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)#+ end=+#+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl
+syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl
+syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+\z([^[:space:]([{<]\)+ end=+\z1+ contained nextgroup=perlTranslationModifiers
+syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+(+ end=+)+ contains=perlParensSQ contained nextgroup=perlTranslationModifiers
+syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+\[+ end=+\]+ contains=perlBracketsSQ contained nextgroup=perlTranslationModifiers
+syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+{+ end=+}+ contains=perlBracesSQ contained nextgroup=perlTranslationModifiers
+syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+<+ end=+>+ contains=perlAnglesSQ contained nextgroup=perlTranslationModifiers
+
+
+" Strings and q, qq, qw and qr expressions
+
+syn region perlStringUnexpanded matchgroup=perlStringStartEnd start="'" end="'" contains=@perlInterpSQ keepend extend
+syn region perlString matchgroup=perlStringStartEnd start=+"+ end=+"+ contains=@perlInterpDQ keepend extend
+syn region perlQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\>\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpSQ keepend extend
+syn region perlQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q#+ end=+#+ contains=@perlInterpSQ keepend extend
+syn region perlQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ keepend extend
+syn region perlQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ keepend extend
+syn region perlQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend extend
+syn region perlQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend extend
+
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\>\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpDQ keepend extend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]#+ end=+#+ contains=@perlInterpDQ keepend extend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*(+ end=+)+ contains=@perlInterpDQ,perlParensDQ keepend extend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*\[+ end=+\]+ contains=@perlInterpDQ,perlBracketsDQ keepend extend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*{+ end=+}+ contains=@perlInterpDQ,perlBracesDQ keepend extend
+syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*<+ end=+>+ contains=@perlInterpDQ,perlAnglesDQ keepend extend
+
+syn region perlQW matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpSQ keepend extend
+syn region perlQW matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw#+ end=+#+ contains=@perlInterpSQ keepend extend
+syn region perlQW matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ keepend extend
+syn region perlQW matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ keepend extend
+syn region perlQW matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend extend
+syn region perlQW matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend extend
+
+syn match perlQRModifiers "[msixpadluno]\+" contained
+syn region perlQR matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\>\s*\z([^[:space:]#([{<'/]\)+ end=+\z1+ contains=@perlInterpMatch keepend extend nextgroup=perlQRModifiers
+syn region perlQR matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*/+ end=+/+ contains=@perlInterpSlash keepend extend nextgroup=perlQRModifiers
+syn region perlQR matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr#+ end=+#+ contains=@perlInterpMatch keepend extend nextgroup=perlQRModifiers
+syn region perlQR matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*'+ end=+'+ contains=@perlInterpSQ keepend extend nextgroup=perlQRModifiers
+syn region perlQR matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*(+ end=+)+ contains=@perlInterpMatch,perlParensDQ keepend extend nextgroup=perlQRModifiers
+
+" A special case for qr{}, qr<> and qr[] which allows for comments and extra whitespace in the pattern
+syn region perlQR matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*{+ end=+}+ contains=@perlInterpMatch,perlBracesDQ,perlComment keepend extend nextgroup=perlQRModifiers
+syn region perlQR matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*<+ end=+>+ contains=@perlInterpMatch,perlAnglesDQ,perlComment keepend extend nextgroup=perlQRModifiers
+syn region perlQR matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*\[+ end=+\]+ contains=@perlInterpMatch,perlBracketsDQ,perlComment keepend extend nextgroup=perlQRModifiers
+
+" Constructs such as print <<EOF [...] EOF, 'here' documents
+"
+" XXX Any statements after the identifier are in perlString colour (i.e.
+" 'if $a' in 'print <<EOF if $a'). This is almost impossible to get right it
+" seems due to the 'auto-extending nature' of regions.
+" XXX Indented heredocs are not perfect - they sometimes seem to take a moment
+" to update if switched from double to single quotes and vice versa.
+"
+" Note: bare delimiters such as << to mean <<"" are not supported. These are a
+" fatal error since 5.28 and, apparently, a rarely used feature.
+
+syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\~\=\I\i*+ end=+$+ contains=@perlTop oneline
+syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\~\=\\\I\i*+ end=+$+ contains=@perlTop oneline
+syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\~\=\s*"[^\\"]*\%(\\.[^\\"]*\)*"+ end=+$+ contains=@perlTop oneline
+syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\~\=\s*'[^\\']*\%(\\.[^\\']*\)*'+ end=+$+ contains=@perlTop oneline
+syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\~\=\s*`[^\\`]*\%(\\.[^\\`]*\)*`+ end=+$+ contains=@perlTop oneline
+syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\~\=\s*""+ end=+$+ contains=@perlTop oneline
+syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\~\=\s*''+ end=+$+ contains=@perlTop oneline
+syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\~\=\s*``+ end=+$+ contains=@perlTop oneline
+
+if get(g:, 'perl_fold', 0)
+ syn region perlHereDoc start=+<<\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ fold extend
+ syn region perlHereDoc start=+<<\\\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpSQ fold extend
+ syn region perlHereDoc start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ fold extend
+ syn region perlHereDoc start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpSQ fold extend
+ syn region perlHereDoc start=+<<\s*`\z([^\\`]*\%(\\.[^\\`]*\)*\)`+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ fold extend
+ syn region perlHereDoc start=+<<\s*""+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpDQ,perlNotEmptyLine fold extend
+ syn region perlHereDoc start=+<<\s*''+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpSQ,perlNotEmptyLine fold extend
+ syn region perlHereDoc start=+<<\s*``+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpDQ,perlNotEmptyLine fold extend
+else
+ syn region perlHereDoc start=+<<\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ
+ syn region perlHereDoc start=+<<\\\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpSQ
+ syn region perlHereDoc start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ
+ syn region perlHereDoc start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpSQ
+ syn region perlHereDoc start=+<<\s*`\z([^\\`]*\%(\\.[^\\`]*\)*\)`+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ
+ syn region perlHereDoc start=+<<\s*""+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpDQ,perlNotEmptyLine
+ syn region perlHereDoc start=+<<\s*''+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpSQ,perlNotEmptyLine
+ syn region perlHereDoc start=+<<\s*``+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpDQ,perlNotEmptyLine
+endif
+
+if get(g:, 'perl_fold', 0)
+ syn region perlIndentedHereDoc start=+<<\~\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlIndentedHereDocStart,@perlInterpDQ fold extend
+ syn region perlIndentedHereDoc start=+<<\~\\\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlIndentedHereDocStart,@perlInterpSQ fold extend
+ syn region perlIndentedHereDoc start=+<<\~\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlIndentedHereDocStart,@perlInterpDQ fold extend
+ syn region perlIndentedHereDoc start=+<<\~\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlIndentedHereDocStart,@perlInterpSQ fold extend
+ syn region perlIndentedHereDoc start=+<<\~\s*`\z([^\\`]*\%(\\.[^\\`]*\)*\)`+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlIndentedHereDocStart,@perlInterpDQ fold extend
+ syn region perlIndentedHereDoc start=+<<\~\s*""+ matchgroup=perlStringStartEnd end=+^$+ contains=perlIndentedHereDocStart,@perlInterpDQ,perlNotEmptyLine fold extend
+ syn region perlIndentedHereDoc start=+<<\~\s*''+ matchgroup=perlStringStartEnd end=+^$+ contains=perlIndentedHereDocStart,@perlInterpSQ,perlNotEmptyLine fold extend
+ syn region perlIndentedHereDoc start=+<<\~\s*``+ matchgroup=perlStringStartEnd end=+^$+ contains=perlIndentedHereDocStart,@perlInterpDQ,perlNotEmptyLine fold extend
+else
+ syn region perlIndentedHereDoc start=+<<\~\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlHereDocStart,@perlInterpDQ
+ syn region perlIndentedHereDoc start=+<<\~\\\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlHereDocStart,@perlInterpSQ
+ syn region perlIndentedHereDoc start=+<<\~\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlHereDocStart,@perlInterpDQ
+ syn region perlIndentedHereDoc start=+<<\~\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlHereDocStart,@perlInterpSQ
+ syn region perlIndentedHereDoc start=+<<\~\s*`\z([^\\`]*\%(\\.[^\\`]*\)*\)`+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlHereDocStart,@perlInterpDQ
+ syn region perlIndentedHereDoc start=+<<\~\s*""+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpDQ,perlNotEmptyLine
+ syn region perlIndentedHereDoc start=+<<\~\s*''+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpSQ,perlNotEmptyLine
+ syn region perlIndentedHereDoc start=+<<\~\s*``+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpDQ,perlNotEmptyLine
+endif
+
+
+" Class declarations
+"
+syn match perlPackageDecl "\<package\s\+\%(\h\|::\)\%(\w\|::\)*" contains=perlStatementPackage
+syn keyword perlStatementPackage package contained
+
+" Functions
+if get(g:, "perl_sub_signatures", 0)
+ syn match perlSubSignature "\s*([^)]*)" contained extend
+else
+ syn match perlSubPrototype "\s*([\\$@%&*\[\];]*)" contained extend
+endif
+syn match perlSubAttribute "\s*:\s*\h\w*\%(([^)]*)\|\)" contained extend
+syn match perlSubName "\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\s*" contained extend
+syn region perlSubDeclaration start="" end="[;{]" contains=perlSubName,perlSubPrototype,perlSubAttribute,perlSubSignature,perlComment contained transparent
+syn match perlFunction "\<sub\>\_s*" nextgroup=perlSubDeclaration
+
+" The => operator forces a bareword to the left of it to be interpreted as
+" a string
+syn match perlString "\I\@<!-\?\I\i*\%(\s*=>\)\@="
+
+" All other # are comments, except ^#!
+syn match perlComment "#.*" contains=perlTodo,@Spell extend
+syn match perlSharpBang "^#!.*"
+
+" Formats
+syn region perlFormat matchgroup=perlStatementIOFunc start="^\s*\<format\s\+\k\+\s*=\s*$"rs=s+6 end="^\s*\.\s*$" contains=perlFormatName,perlFormatField,perlVarPlain,perlVarPlain2
+syn match perlFormatName "format\s\+\k\+\s*="lc=7,me=e-1 contained
+syn match perlFormatField "[@^][|<>~]\+\%(\.\.\.\)\=" contained
+syn match perlFormatField "[@^]#[#.]*" contained
+syn match perlFormatField "@\*" contained
+syn match perlFormatField "@[^A-Za-z_|<>~#*]"me=e-1 contained
+syn match perlFormatField "@$" contained
+
+" __END__ and __DATA__ clauses
+
+" Vim excludes empty syn-region end lines from the fold region. This is
+" probably a bug and means a DATA section ending with an empty line does not
+" have that final line included in the fold.
+"
+" As a workaround we exploit an unterminated syntax region here with an end
+" pattern that will (probably) never match. This forces all lines to be
+" included in the fold region. Of course, if it does match then there's
+" nothing to work around as it is a non-empty line.
+"
+" This problem also exists with empty string delimited heredocs but there's no
+" known workaround for that case.
+if get(g:, 'perl_fold', 0)
+ syntax region perlDATA matchgroup=perlDATAStart start="^__DATA__$" end="VIM_PERL_EOF\%$" contains=@perlDATA fold
+ syntax region perlEND matchgroup=perlENDStart start="^__END__$" end="VIM_PERL_EOF\%$" contains=@perlDATA fold
+else
+ syntax region perlDATA matchgroup=perlDATAStart start="^__DATA__$" end="\%$" contains=@perlDATA
+ syntax region perlEND matchgroup=perlENDStart start="^__END__$" end="\%$" contains=@perlDATA
+endif
+
+" TODO: generalise this to allow other filetypes
+if get(g:, 'perl_highlight_data', 0)
+ syn cluster perlDATA add=perlPOD
+else
+ syn cluster perlDATA remove=perlPOD
+endif
+
+"
+" Folding
+if get(g:, 'perl_fold', 0)
+ " Note: this bit must come before the actual highlighting of the "package"
+ " keyword, otherwise this will screw up Pod lines that match /^package/
+ if !get(g:, 'perl_nofold_packages', 0)
+ syn region perlPackageFold start="^package \S\+;\s*\%(#.*\)\=$" end="^1;\=\s*\%(#.*\)\=$" end="\n\+package"me=s-1 transparent fold keepend
+ syn region perlPackageFold start="^\z(\s*\)package\s*\S\+\s*{" end="^\z1}" transparent fold keepend
+ endif
+ if !get(g:, 'perl_nofold_subs', 0)
+ if get(g:, "perl_fold_anonymous_subs", 0)
+ " EXPLANATION:
+ " \<sub\> - "sub" keyword
+ " \_[^;{]* - any characters, including new line, but not ";" or "{", zero or more times
+ " \%(([\\$@%&*\[\];]*)\)\= - prototype definition, \$@%&*[]; characters between (), zero or 1 times
+ " \_[^;]* - any characters, including new line, but not ";" or "{", zero or more times
+ " { - start subroutine block
+ syn region perlSubFold start="\<sub\>\_[^;{]*\%(([\\$@%&*\[\];]*)\)\=\_[^;{]*{" end="}" transparent fold keepend extend
+ else
+ " EXPLANATION:
+ " same, as above, but first non-space character after "sub" keyword must
+ " be [A-Za-z_]
+ syn region perlSubFold start="\<sub\>\s*\h\_[^;{]*\%(([\\$@%&*\[\];]*)\)\=\_[^;]*{" end="}" transparent fold keepend extend
+ endif
+
+ syn region perlSubFold start="\<\%(BEGIN\|END\|CHECK\|INIT\|UNITCHECK\)\>\_s*{" end="}" transparent fold keepend
+ endif
+
+ if get(g:, 'perl_fold_blocks', 0)
+ syn region perlBlockFold start="^\z(\s*\)\%(if\|elsif\|unless\|for\|while\|until\|given\)\s*(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" start="^\z(\s*\)for\%(each\)\=\s*\%(\%(my\|our\)\=\s*\S\+\s*\)\=(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend
+
+ " TODO this is works incorrectly
+ syn region perlBlockFold start="^\z(\s*\)\%(do\|else\)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*while" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend
+ else
+ if get(g:, 'perl_fold_do_blocks', 0)
+ syn region perlDoBlockDeclaration start="" end="{" contains=perlComment contained transparent
+ syn match perlOperator "\<do\>\_s*" nextgroup=perlDoBlockDeclaration
+
+ syn region perlDoBlockFold start="\<do\>\_[^{]*{" end="}" transparent fold keepend extend
+ endif
+ endif
+
+ syn sync fromstart
+else
+ " fromstart above seems to set minlines even if perl_fold is not set.
+ syn sync minlines=0
+endif
+
+" NOTE: If you're linking new highlight groups to perlString, please also put
+" them into b:match_skip in ftplugin/perl.vim.
+
+" The default highlighting.
+hi def link perlSharpBang PreProc
+hi def link perlControl PreProc
+hi def link perlInclude Include
+hi def link perlSpecial Special
+hi def link perlString String
+hi def link perlCharacter Character
+hi def link perlNumber Number
+hi def link perlFloat Float
+hi def link perlType Type
+hi def link perlIdentifier Identifier
+hi def link perlLabel Label
+hi def link perlStatement Statement
+hi def link perlConditional Conditional
+hi def link perlRepeat Repeat
+hi def link perlOperator Operator
+hi def link perlFunction Keyword
+hi def link perlSubName Function
+hi def link perlSubPrototype Type
+hi def link perlSubSignature Type
+hi def link perlSubAttribute PreProc
+hi def link perlComment Comment
+hi def link perlTodo Todo
+if get(g:, 'perl_string_as_statement', 0)
+ hi def link perlStringStartEnd perlStatement
+else
+ hi def link perlStringStartEnd perlString
+endif
+hi def link perlVStringV perlStringStartEnd
+hi def link perlList perlStatement
+hi def link perlMisc perlStatement
+hi def link perlVarPlain perlIdentifier
+hi def link perlVarPlain2 perlIdentifier
+hi def link perlArrow perlIdentifier
+hi def link perlFiledescRead perlIdentifier
+hi def link perlFiledescStatement perlIdentifier
+hi def link perlVarSimpleMember perlIdentifier
+hi def link perlVarSimpleMemberName perlString
+hi def link perlVarNotInMatches perlIdentifier
+hi def link perlVarSlash perlIdentifier
+hi def link perlQ perlString
+hi def link perlQQ perlString
+hi def link perlQW perlString
+hi def link perlQR perlString
+hi def link perlMatchModifiers perlMatchStartEnd
+hi def link perlSubstitutionModifiers perlMatchStartEnd
+hi def link perlTranslationModifiers perlMatchStartEnd
+hi def link perlQRModifiers perlStringStartEnd
+hi def link perlHereDoc perlString
+hi def link perlIndentedHereDoc perlString
+hi def link perlStringUnexpanded perlString
+hi def link perlSubstitutionSQ perlString
+hi def link perlSubstitutionGQQ perlString
+hi def link perlTranslationGQ perlString
+hi def link perlMatch perlString
+hi def link perlMatchStartEnd perlStatement
+hi def link perlFormatName perlIdentifier
+hi def link perlFormatField perlString
+hi def link perlPackageDecl perlType
+hi def link perlStorageClass perlType
+hi def link perlPackageRef perlType
+hi def link perlStatementPackage perlStatement
+hi def link perlStatementStorage perlStatement
+hi def link perlStatementControl perlStatement
+hi def link perlStatementScalar perlStatement
+hi def link perlStatementRegexp perlStatement
+hi def link perlStatementNumeric perlStatement
+hi def link perlStatementList perlStatement
+hi def link perlStatementHash perlStatement
+hi def link perlStatementIOfunc perlStatement
+hi def link perlStatementFiledesc perlStatement
+hi def link perlStatementVector perlStatement
+hi def link perlStatementFiles perlStatement
+hi def link perlStatementFlow perlStatement
+hi def link perlStatementInclude perlStatement
+hi def link perlStatementProc perlStatement
+hi def link perlStatementSocket perlStatement
+hi def link perlStatementIPC perlStatement
+hi def link perlStatementNetwork perlStatement
+hi def link perlStatementPword perlStatement
+hi def link perlStatementTime perlStatement
+hi def link perlStatementMisc perlStatement
+hi def link perlStatementIndirObj perlStatement
+hi def link perlFunctionName perlIdentifier
+hi def link perlMethod perlIdentifier
+hi def link perlPostDeref perlIdentifier
+hi def link perlFunctionPRef perlType
+
+if !get(g:, 'perl_include_pod', 1)
+ hi def link perlPOD perlComment
+endif
+hi def link perlShellCommand perlString
+hi def link perlSpecialAscii perlSpecial
+hi def link perlSpecialDollar perlSpecial
+hi def link perlSpecialString perlSpecial
+hi def link perlSpecialStringU perlSpecial
+hi def link perlSpecialMatch perlSpecial
+hi def link perlEND perlComment
+hi def link perlENDStart perlEND
+hi def link perlDATA perlComment
+hi def link perlDATAStart perlDATA
+
+" NOTE: Due to a bug in Vim (or more likely, a misunderstanding on my part),
+" I had to remove the transparent property from the following regions
+" in order to get them to highlight correctly. Feel free to remove
+" these and reinstate the transparent property if you know how.
+hi def link perlParensSQ perlString
+hi def link perlBracketsSQ perlString
+hi def link perlBracesSQ perlString
+hi def link perlAnglesSQ perlString
+
+hi def link perlParensDQ perlString
+hi def link perlBracketsDQ perlString
+hi def link perlBracesDQ perlString
+hi def link perlAnglesDQ perlString
+
+hi def link perlSpecialStringU2 perlString
+
+" Possible errors
+hi def link perlNotEmptyLine Error
+hi def link perlElseIfError Error
+
+" Syncing to speed up processing
+"
+if !get(g:, 'perl_no_sync_on_sub', 0)
+ syn sync match perlSync grouphere NONE "^\s*\<package\s"
+ syn sync match perlSync grouphere NONE "^\s*\<sub\>"
+ syn sync match perlSync grouphere NONE "^}"
+endif
+
+if !get(g:, 'perl_no_sync_on_global_var', 0)
+ syn sync match perlSync grouphere NONE "^$\I[[:alnum:]_:]+\s*=\s*{"
+ syn sync match perlSync grouphere NONE "^[@%]\I[[:alnum:]_:]+\s*=\s*("
+endif
+
+if get(g:, 'perl_sync_dist', 0)
+ execute "syn sync maxlines=" . perl_sync_dist
+else
+ syn sync maxlines=100
+endif
+
+syn sync match perlSyncPOD grouphere perlPOD "^=pod"
+syn sync match perlSyncPOD grouphere perlPOD "^=head"
+syn sync match perlSyncPOD grouphere perlPOD "^=item"
+syn sync match perlSyncPOD grouphere NONE "^=cut"
+
+let b:current_syntax = "perl"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" XXX Change to sts=4:sw=4
+" vim:ts=8:sts=2:sw=2:expandtab:ft=vim
diff --git a/runtime/syntax/pf.vim b/runtime/syntax/pf.vim
new file mode 100644
index 0000000..b928dc4
--- /dev/null
+++ b/runtime/syntax/pf.vim
@@ -0,0 +1,333 @@
+" pf syntax file
+" Language: OpenBSD packet filter configuration (pf.conf)
+" Original Author: Camiel Dobbelaar <cd@sentia.nl>
+" Maintainer: Lauri Tirkkonen <lotheac@iki.fi>
+" Last Change: 2018 Jul 16
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let b:current_syntax = "pf"
+setlocal foldmethod=syntax
+syn iskeyword @,48-57,_,-,+
+syn sync fromstart
+
+syn cluster pfNotLS contains=pfTodo,pfVarAssign
+syn keyword pfCmd anchor antispoof block include match pass queue
+syn keyword pfCmd queue set table
+syn match pfCmd /^\s*load\sanchor\>/
+syn keyword pfTodo TODO XXX contained
+syn keyword pfWildAddr any no-route urpf-failed self
+syn match pfComment /#.*$/ contains=pfTodo
+syn match pfCont /\\$/
+syn match pfErrClose /}/
+syn match pfIPv4 /\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/
+syn match pfIPv6 /[a-fA-F0-9:]*::[a-fA-F0-9:.]*/
+syn match pfIPv6 /[a-fA-F0-9:]\+:[a-fA-F0-9:]\+:[a-fA-F0-9:.]\+/
+syn match pfNetmask /\/\d\+/
+syn match pfNum /[a-zA-Z0-9_:.]\@<!\d\+[a-zA-Z0-9_:.]\@!/
+syn match pfTable /<\s*[a-zA-Z0-9_:][a-zA-Z0-9_:.-]*\s*>/
+syn match pfVar /$[a-zA-Z][a-zA-Z0-9_]*/
+syn match pfVarAssign /^\s*[a-zA-Z][a-zA-Z0-9_]*\s*=/me=e-1
+syn region pfFold1 start=/^#\{1}>/ end=/^#\{1,3}>/me=s-1 transparent fold
+syn region pfFold2 start=/^#\{2}>/ end=/^#\{2,3}>/me=s-1 transparent fold
+syn region pfFold3 start=/^#\{3}>/ end=/^#\{3}>/me=s-1 transparent fold
+syn region pfList start=/{/ end=/}/ transparent contains=ALLBUT,pfErrClose,@pfNotLS
+syn region pfString start=/"/ skip=/\\"/ end=/"/ contains=pfIPv4,pfIPv6,pfNetmask,pfTable,pfVar
+syn region pfString start=/'/ skip=/\\'/ end=/'/ contains=pfIPv4,pfIPv6,pfNetmask,pfTable,pfVar
+
+hi def link pfCmd Statement
+hi def link pfComment Comment
+hi def link pfCont Statement
+hi def link pfErrClose Error
+hi def link pfIPv4 Type
+hi def link pfIPv6 Type
+hi def link pfNetmask Constant
+hi def link pfNum Constant
+hi def link pfService Constant
+hi def link pfString String
+hi def link pfTable Identifier
+hi def link pfTodo Todo
+hi def link pfVar Identifier
+hi def link pfVarAssign Identifier
+hi def link pfWildAddr Type
+
+" from OpenBSD src/etc/services r1.95
+syn keyword pfService 802-11-iapp
+syn keyword pfService Microsoft-SQL-Monitor
+syn keyword pfService Microsoft-SQL-Server
+syn keyword pfService NeXTStep
+syn keyword pfService NextStep
+syn keyword pfService afpovertcp
+syn keyword pfService afs3-bos
+syn keyword pfService afs3-callback
+syn keyword pfService afs3-errors
+syn keyword pfService afs3-fileserver
+syn keyword pfService afs3-kaserver
+syn keyword pfService afs3-prserver
+syn keyword pfService afs3-rmtsys
+syn keyword pfService afs3-update
+syn keyword pfService afs3-vlserver
+syn keyword pfService afs3-volser
+syn keyword pfService amt-redir-tcp
+syn keyword pfService amt-redir-tls
+syn keyword pfService amt-soap-http
+syn keyword pfService amt-soap-https
+syn keyword pfService asf-rmcp
+syn keyword pfService at-echo
+syn keyword pfService at-nbp
+syn keyword pfService at-rtmp
+syn keyword pfService at-zis
+syn keyword pfService auth
+syn keyword pfService authentication
+syn keyword pfService bfd-control
+syn keyword pfService bfd-echo
+syn keyword pfService bftp
+syn keyword pfService bgp
+syn keyword pfService bgpd
+syn keyword pfService biff
+syn keyword pfService bootpc
+syn keyword pfService bootps
+syn keyword pfService canna
+syn keyword pfService cddb
+syn keyword pfService cddbp
+syn keyword pfService chargen
+syn keyword pfService chat
+syn keyword pfService cmd
+syn keyword pfService cmip-agent
+syn keyword pfService cmip-man
+syn keyword pfService comsat
+syn keyword pfService conference
+syn keyword pfService conserver
+syn keyword pfService courier
+syn keyword pfService csnet-ns
+syn keyword pfService cso-ns
+syn keyword pfService cvspserver
+syn keyword pfService daap
+syn keyword pfService datametrics
+syn keyword pfService daytime
+syn keyword pfService dhcpd-sync
+syn keyword pfService dhcpv6-client
+syn keyword pfService dhcpv6-server
+syn keyword pfService discard
+syn keyword pfService domain
+syn keyword pfService echo
+syn keyword pfService efs
+syn keyword pfService eklogin
+syn keyword pfService ekshell
+syn keyword pfService ekshell2
+syn keyword pfService epmap
+syn keyword pfService eppc
+syn keyword pfService exec
+syn keyword pfService finger
+syn keyword pfService ftp
+syn keyword pfService ftp-data
+syn keyword pfService git
+syn keyword pfService gopher
+syn keyword pfService gre-in-udp
+syn keyword pfService gre-udp-dtls
+syn keyword pfService hostname
+syn keyword pfService hostnames
+syn keyword pfService hprop
+syn keyword pfService http
+syn keyword pfService https
+syn keyword pfService hunt
+syn keyword pfService hylafax
+syn keyword pfService iapp
+syn keyword pfService icb
+syn keyword pfService ident
+syn keyword pfService imap
+syn keyword pfService imap2
+syn keyword pfService imap3
+syn keyword pfService imaps
+syn keyword pfService ingreslock
+syn keyword pfService ipp
+syn keyword pfService iprop
+syn keyword pfService ipsec-msft
+syn keyword pfService ipsec-nat-t
+syn keyword pfService ipx
+syn keyword pfService irc
+syn keyword pfService isakmp
+syn keyword pfService iscsi
+syn keyword pfService isisd
+syn keyword pfService iso-tsap
+syn keyword pfService kauth
+syn keyword pfService kdc
+syn keyword pfService kerberos
+syn keyword pfService kerberos-adm
+syn keyword pfService kerberos-iv
+syn keyword pfService kerberos-sec
+syn keyword pfService kerberos_master
+syn keyword pfService kf
+syn keyword pfService kip
+syn keyword pfService klogin
+syn keyword pfService kpasswd
+syn keyword pfService kpop
+syn keyword pfService krb524
+syn keyword pfService krb_prop
+syn keyword pfService krbupdate
+syn keyword pfService krcmd
+syn keyword pfService kreg
+syn keyword pfService kshell
+syn keyword pfService kx
+syn keyword pfService l2tp
+syn keyword pfService ldap
+syn keyword pfService ldaps
+syn keyword pfService ldp
+syn keyword pfService link
+syn keyword pfService login
+syn keyword pfService mail
+syn keyword pfService mdns
+syn keyword pfService mdnsresponder
+syn keyword pfService microsoft-ds
+syn keyword pfService ms-sql-m
+syn keyword pfService ms-sql-s
+syn keyword pfService msa
+syn keyword pfService msp
+syn keyword pfService mtp
+syn keyword pfService mysql
+syn keyword pfService name
+syn keyword pfService nameserver
+syn keyword pfService netbios-dgm
+syn keyword pfService netbios-ns
+syn keyword pfService netbios-ssn
+syn keyword pfService netnews
+syn keyword pfService netplan
+syn keyword pfService netrjs
+syn keyword pfService netstat
+syn keyword pfService netwall
+syn keyword pfService newdate
+syn keyword pfService nextstep
+syn keyword pfService nfs
+syn keyword pfService nfsd
+syn keyword pfService nicname
+syn keyword pfService nnsp
+syn keyword pfService nntp
+syn keyword pfService ntalk
+syn keyword pfService ntp
+syn keyword pfService null
+syn keyword pfService openwebnet
+syn keyword pfService ospf6d
+syn keyword pfService ospfapi
+syn keyword pfService ospfd
+syn keyword pfService photuris
+syn keyword pfService pop2
+syn keyword pfService pop3
+syn keyword pfService pop3pw
+syn keyword pfService pop3s
+syn keyword pfService poppassd
+syn keyword pfService portmap
+syn keyword pfService postgresql
+syn keyword pfService postoffice
+syn keyword pfService pptp
+syn keyword pfService presence
+syn keyword pfService printer
+syn keyword pfService prospero
+syn keyword pfService prospero-np
+syn keyword pfService puppet
+syn keyword pfService pwdgen
+syn keyword pfService qotd
+syn keyword pfService quote
+syn keyword pfService radacct
+syn keyword pfService radius
+syn keyword pfService radius-acct
+syn keyword pfService rdp
+syn keyword pfService readnews
+syn keyword pfService remotefs
+syn keyword pfService resource
+syn keyword pfService rfb
+syn keyword pfService rfe
+syn keyword pfService rfs
+syn keyword pfService rfs_server
+syn keyword pfService ripd
+syn keyword pfService ripng
+syn keyword pfService rje
+syn keyword pfService rkinit
+syn keyword pfService rlp
+syn keyword pfService routed
+syn keyword pfService router
+syn keyword pfService rpc
+syn keyword pfService rpcbind
+syn keyword pfService rsync
+syn keyword pfService rtelnet
+syn keyword pfService rtsp
+syn keyword pfService sa-msg-port
+syn keyword pfService sane-port
+syn keyword pfService sftp
+syn keyword pfService shell
+syn keyword pfService sieve
+syn keyword pfService silc
+syn keyword pfService sink
+syn keyword pfService sip
+syn keyword pfService smtp
+syn keyword pfService smtps
+syn keyword pfService smux
+syn keyword pfService snmp
+syn keyword pfService snmp-trap
+syn keyword pfService snmptrap
+syn keyword pfService snpp
+syn keyword pfService socks
+syn keyword pfService source
+syn keyword pfService spamd
+syn keyword pfService spamd-cfg
+syn keyword pfService spamd-sync
+syn keyword pfService spooler
+syn keyword pfService spop3
+syn keyword pfService ssdp
+syn keyword pfService ssh
+syn keyword pfService submission
+syn keyword pfService sunrpc
+syn keyword pfService supdup
+syn keyword pfService supfiledbg
+syn keyword pfService supfilesrv
+syn keyword pfService support
+syn keyword pfService svn
+syn keyword pfService svrloc
+syn keyword pfService swat
+syn keyword pfService syslog
+syn keyword pfService syslog-tls
+syn keyword pfService systat
+syn keyword pfService tacacs
+syn keyword pfService tacas+
+syn keyword pfService talk
+syn keyword pfService tap
+syn keyword pfService tcpmux
+syn keyword pfService telnet
+syn keyword pfService tempo
+syn keyword pfService tftp
+syn keyword pfService time
+syn keyword pfService timed
+syn keyword pfService timeserver
+syn keyword pfService timserver
+syn keyword pfService tsap
+syn keyword pfService ttylink
+syn keyword pfService ttytst
+syn keyword pfService ub-dns-control
+syn keyword pfService ulistserv
+syn keyword pfService untp
+syn keyword pfService usenet
+syn keyword pfService users
+syn keyword pfService uucp
+syn keyword pfService uucp-path
+syn keyword pfService uucpd
+syn keyword pfService vnc
+syn keyword pfService vxlan
+syn keyword pfService wais
+syn keyword pfService webster
+syn keyword pfService who
+syn keyword pfService whod
+syn keyword pfService whois
+syn keyword pfService www
+syn keyword pfService x400
+syn keyword pfService x400-snd
+syn keyword pfService xcept
+syn keyword pfService xdmcp
+syn keyword pfService xmpp-bosh
+syn keyword pfService xmpp-client
+syn keyword pfService xmpp-server
+syn keyword pfService z3950
+syn keyword pfService zabbix-agent
+syn keyword pfService zabbix-trapper
+syn keyword pfService zebra
+syn keyword pfService zebrasrv
diff --git a/runtime/syntax/pfmain.vim b/runtime/syntax/pfmain.vim
new file mode 100644
index 0000000..af58da7
--- /dev/null
+++ b/runtime/syntax/pfmain.vim
@@ -0,0 +1,1835 @@
+" Vim syntax file
+" Language: Postfix main.cf configuration
+" Maintainer: KELEMEN Peter <Peter dot Kelemen at cern dot ch>
+" Last Updates: Anton Shestakov, Hong Xu
+" Last Change: 2015 Feb 10
+" Version: 0.40
+" URL: http://cern.ch/fuji/vim/syntax/pfmain.vim
+" Comment: Based on Postfix 2.12/3.0 postconf.5.html.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=@,48-57,_,-
+
+syntax case match
+syntax sync minlines=1
+
+syntax keyword pfmainConf 2bounce_notice_recipient
+syntax keyword pfmainConf access_map_defer_code
+syntax keyword pfmainConf access_map_reject_code
+syntax keyword pfmainConf address_verify_cache_cleanup_interval
+syntax keyword pfmainConf address_verify_default_transport
+syntax keyword pfmainConf address_verify_local_transport
+syntax keyword pfmainConf address_verify_map
+syntax keyword pfmainConf address_verify_negative_cache
+syntax keyword pfmainConf address_verify_negative_expire_time
+syntax keyword pfmainConf address_verify_negative_refresh_time
+syntax keyword pfmainConf address_verify_poll_count
+syntax keyword pfmainConf address_verify_poll_delay
+syntax keyword pfmainConf address_verify_positive_expire_time
+syntax keyword pfmainConf address_verify_positive_refresh_time
+syntax keyword pfmainConf address_verify_relay_transport
+syntax keyword pfmainConf address_verify_relayhost
+syntax keyword pfmainConf address_verify_sender
+syntax keyword pfmainConf address_verify_sender_dependent_default_transport_maps
+syntax keyword pfmainConf address_verify_sender_dependent_relayhost_maps
+syntax keyword pfmainConf address_verify_sender_ttl
+syntax keyword pfmainConf address_verify_service_name
+syntax keyword pfmainConf address_verify_transport_maps
+syntax keyword pfmainConf address_verify_virtual_transport
+syntax keyword pfmainConf alias_database
+syntax keyword pfmainConf alias_maps
+syntax keyword pfmainConf allow_mail_to_commands
+syntax keyword pfmainConf allow_mail_to_files
+syntax keyword pfmainConf allow_min_user
+syntax keyword pfmainConf allow_percent_hack
+syntax keyword pfmainConf allow_untrusted_routing
+syntax keyword pfmainConf alternate_config_directories
+syntax keyword pfmainConf always_add_missing_headers
+syntax keyword pfmainConf always_bcc
+syntax keyword pfmainConf anvil_rate_time_unit
+syntax keyword pfmainConf anvil_status_update_time
+syntax keyword pfmainConf append_at_myorigin
+syntax keyword pfmainConf append_dot_mydomain
+syntax keyword pfmainConf application_event_drain_time
+syntax keyword pfmainConf authorized_flush_users
+syntax keyword pfmainConf authorized_mailq_users
+syntax keyword pfmainConf authorized_submit_users
+syntax keyword pfmainConf authorized_verp_clients
+syntax keyword pfmainConf backwards_bounce_logfile_compatibility
+syntax keyword pfmainConf berkeley_db_create_buffer_size
+syntax keyword pfmainConf berkeley_db_read_buffer_size
+syntax keyword pfmainConf best_mx_transport
+syntax keyword pfmainConf biff
+syntax keyword pfmainConf body_checks
+syntax keyword pfmainConf body_checks_size_limit
+syntax keyword pfmainConf bounce_notice_recipient
+syntax keyword pfmainConf bounce_queue_lifetime
+syntax keyword pfmainConf bounce_service_name
+syntax keyword pfmainConf bounce_size_limit
+syntax keyword pfmainConf bounce_template_file
+syntax keyword pfmainConf broken_sasl_auth_clients
+syntax keyword pfmainConf canonical_classes
+syntax keyword pfmainConf canonical_maps
+syntax keyword pfmainConf cleanup_service_name
+syntax keyword pfmainConf command_directory
+syntax keyword pfmainConf command_execution_directory
+syntax keyword pfmainConf command_expansion_filter
+syntax keyword pfmainConf command_time_limit
+syntax keyword pfmainConf compatibility_level
+syntax keyword pfmainConf config_directory
+syntax keyword pfmainConf confirm_delay_cleared
+syntax keyword pfmainConf connection_cache_protocol_timeout
+syntax keyword pfmainConf connection_cache_service_name
+syntax keyword pfmainConf connection_cache_status_update_time
+syntax keyword pfmainConf connection_cache_ttl_limit
+syntax keyword pfmainConf content_filter
+syntax keyword pfmainConf cyrus_sasl_config_path
+syntax keyword pfmainConf daemon_directory
+syntax keyword pfmainConf daemon_table_open_error_is_fatal
+syntax keyword pfmainConf daemon_timeout
+syntax keyword pfmainConf data_directory
+syntax keyword pfmainConf debug_peer_level
+syntax keyword pfmainConf debug_peer_list
+syntax keyword pfmainConf debugger_command
+syntax keyword pfmainConf default_database_type
+syntax keyword pfmainConf default_delivery_slot_cost
+syntax keyword pfmainConf default_delivery_slot_discount
+syntax keyword pfmainConf default_delivery_slot_loan
+syntax keyword pfmainConf default_delivery_status_filter
+syntax keyword pfmainConf default_destination_concurrency_failed_cohort_limit
+syntax keyword pfmainConf default_destination_concurrency_limit
+syntax keyword pfmainConf default_destination_concurrency_negative_feedback
+syntax keyword pfmainConf default_destination_concurrency_positive_feedback
+syntax keyword pfmainConf default_destination_rate_delay
+syntax keyword pfmainConf default_destination_recipient_limit
+syntax keyword pfmainConf default_extra_recipient_limit
+syntax keyword pfmainConf default_filter_nexthop
+syntax keyword pfmainConf default_minimum_delivery_slots
+syntax keyword pfmainConf default_privs
+syntax keyword pfmainConf default_process_limit
+syntax keyword pfmainConf default_rbl_reply
+syntax keyword pfmainConf default_recipient_limit
+syntax keyword pfmainConf default_recipient_refill_delay
+syntax keyword pfmainConf default_recipient_refill_limit
+syntax keyword pfmainConf default_transport
+syntax keyword pfmainConf default_verp_delimiters
+syntax keyword pfmainConf defer_code
+syntax keyword pfmainConf defer_service_name
+syntax keyword pfmainConf defer_transports
+syntax keyword pfmainConf delay_logging_resolution_limit
+syntax keyword pfmainConf delay_notice_recipient
+syntax keyword pfmainConf delay_warning_time
+syntax keyword pfmainConf deliver_lock_attempts
+syntax keyword pfmainConf deliver_lock_delay
+syntax keyword pfmainConf destination_concurrency_feedback_debug
+syntax keyword pfmainConf detect_8bit_encoding_header
+syntax keyword pfmainConf disable_dns_lookups
+syntax keyword pfmainConf disable_mime_input_processing
+syntax keyword pfmainConf disable_mime_output_conversion
+syntax keyword pfmainConf disable_verp_bounces
+syntax keyword pfmainConf disable_vrfy_command
+syntax keyword pfmainConf dnsblog_reply_delay
+syntax keyword pfmainConf dnsblog_service_name
+syntax keyword pfmainConf dont_remove
+syntax keyword pfmainConf double_bounce_sender
+syntax keyword pfmainConf duplicate_filter_limit
+syntax keyword pfmainConf empty_address_default_transport_maps_lookup_key
+syntax keyword pfmainConf empty_address_recipient
+syntax keyword pfmainConf empty_address_relayhost_maps_lookup_key
+syntax keyword pfmainConf enable_errors_to
+syntax keyword pfmainConf enable_long_queue_ids
+syntax keyword pfmainConf enable_original_recipient
+syntax keyword pfmainConf error_notice_recipient
+syntax keyword pfmainConf error_service_name
+syntax keyword pfmainConf execution_directory_expansion_filter
+syntax keyword pfmainConf expand_owner_alias
+syntax keyword pfmainConf export_environment
+syntax keyword pfmainConf extract_recipient_limit
+syntax keyword pfmainConf fallback_relay
+syntax keyword pfmainConf fallback_transport
+syntax keyword pfmainConf fallback_transport_maps
+syntax keyword pfmainConf fast_flush_domains
+syntax keyword pfmainConf fast_flush_purge_time
+syntax keyword pfmainConf fast_flush_refresh_time
+syntax keyword pfmainConf fault_injection_code
+syntax keyword pfmainConf flush_service_name
+syntax keyword pfmainConf fork_attempts
+syntax keyword pfmainConf fork_delay
+syntax keyword pfmainConf forward_expansion_filter
+syntax keyword pfmainConf forward_path
+syntax keyword pfmainConf frozen_delivered_to
+syntax keyword pfmainConf hash_queue_depth
+syntax keyword pfmainConf hash_queue_names
+syntax keyword pfmainConf header_address_token_limit
+syntax keyword pfmainConf header_checks
+syntax keyword pfmainConf header_size_limit
+syntax keyword pfmainConf helpful_warnings
+syntax keyword pfmainConf home_mailbox
+syntax keyword pfmainConf hopcount_limit
+syntax keyword pfmainConf html_directory
+syntax keyword pfmainConf ignore_mx_lookup_error
+syntax keyword pfmainConf import_environment
+syntax keyword pfmainConf in_flow_delay
+syntax keyword pfmainConf inet_interfaces
+syntax keyword pfmainConf inet_protocols
+syntax keyword pfmainConf initial_destination_concurrency
+syntax keyword pfmainConf internal_mail_filter_classes
+syntax keyword pfmainConf invalid_hostname_reject_code
+syntax keyword pfmainConf ipc_idle
+syntax keyword pfmainConf ipc_timeout
+syntax keyword pfmainConf ipc_ttl
+syntax keyword pfmainConf line_length_limit
+syntax keyword pfmainConf lmdb_map_size
+syntax keyword pfmainConf lmtp_address_preference
+syntax keyword pfmainConf lmtp_address_verify_target
+syntax keyword pfmainConf lmtp_assume_final
+syntax keyword pfmainConf lmtp_bind_address
+syntax keyword pfmainConf lmtp_bind_address6
+syntax keyword pfmainConf lmtp_body_checks
+syntax keyword pfmainConf lmtp_cache_connection
+syntax keyword pfmainConf lmtp_cname_overrides_servername
+syntax keyword pfmainConf lmtp_connect_timeout
+syntax keyword pfmainConf lmtp_connection_cache_destinations
+syntax keyword pfmainConf lmtp_connection_cache_on_demand
+syntax keyword pfmainConf lmtp_connection_cache_time_limit
+syntax keyword pfmainConf lmtp_connection_reuse_count_limit
+syntax keyword pfmainConf lmtp_connection_reuse_time_limit
+syntax keyword pfmainConf lmtp_data_done_timeout
+syntax keyword pfmainConf lmtp_data_init_timeout
+syntax keyword pfmainConf lmtp_data_xfer_timeout
+syntax keyword pfmainConf lmtp_defer_if_no_mx_address_found
+syntax keyword pfmainConf lmtp_delivery_status_filter
+syntax keyword pfmainConf lmtp_destination_concurrency_limit
+syntax keyword pfmainConf lmtp_destination_recipient_limit
+syntax keyword pfmainConf lmtp_discard_lhlo_keyword_address_maps
+syntax keyword pfmainConf lmtp_discard_lhlo_keywords
+syntax keyword pfmainConf lmtp_dns_reply_filter
+syntax keyword pfmainConf lmtp_dns_resolver_options
+syntax keyword pfmainConf lmtp_dns_support_level
+syntax keyword pfmainConf lmtp_enforce_tls
+syntax keyword pfmainConf lmtp_generic_maps
+syntax keyword pfmainConf lmtp_header_checks
+syntax keyword pfmainConf lmtp_host_lookup
+syntax keyword pfmainConf lmtp_lhlo_name
+syntax keyword pfmainConf lmtp_lhlo_timeout
+syntax keyword pfmainConf lmtp_line_length_limit
+syntax keyword pfmainConf lmtp_mail_timeout
+syntax keyword pfmainConf lmtp_mime_header_checks
+syntax keyword pfmainConf lmtp_mx_address_limit
+syntax keyword pfmainConf lmtp_mx_session_limit
+syntax keyword pfmainConf lmtp_nested_header_checks
+syntax keyword pfmainConf lmtp_per_record_deadline
+syntax keyword pfmainConf lmtp_pix_workaround_delay_time
+syntax keyword pfmainConf lmtp_pix_workaround_maps
+syntax keyword pfmainConf lmtp_pix_workaround_threshold_time
+syntax keyword pfmainConf lmtp_pix_workarounds
+syntax keyword pfmainConf lmtp_quit_timeout
+syntax keyword pfmainConf lmtp_quote_rfc821_envelope
+syntax keyword pfmainConf lmtp_randomize_addresses
+syntax keyword pfmainConf lmtp_rcpt_timeout
+syntax keyword pfmainConf lmtp_reply_filter
+syntax keyword pfmainConf lmtp_rset_timeout
+syntax keyword pfmainConf lmtp_sasl_auth_cache_name
+syntax keyword pfmainConf lmtp_sasl_auth_cache_time
+syntax keyword pfmainConf lmtp_sasl_auth_enable
+syntax keyword pfmainConf lmtp_sasl_auth_soft_bounce
+syntax keyword pfmainConf lmtp_sasl_mechanism_filter
+syntax keyword pfmainConf lmtp_sasl_password_maps
+syntax keyword pfmainConf lmtp_sasl_path
+syntax keyword pfmainConf lmtp_sasl_security_options
+syntax keyword pfmainConf lmtp_sasl_tls_security_options
+syntax keyword pfmainConf lmtp_sasl_tls_verified_security_options
+syntax keyword pfmainConf lmtp_sasl_type
+syntax keyword pfmainConf lmtp_send_dummy_mail_auth
+syntax keyword pfmainConf lmtp_send_xforward_command
+syntax keyword pfmainConf lmtp_sender_dependent_authentication
+syntax keyword pfmainConf lmtp_skip_5xx_greeting
+syntax keyword pfmainConf lmtp_skip_quit_response
+syntax keyword pfmainConf lmtp_starttls_timeout
+syntax keyword pfmainConf lmtp_tcp_port
+syntax keyword pfmainConf lmtp_tls_CAfile
+syntax keyword pfmainConf lmtp_tls_CApath
+syntax keyword pfmainConf lmtp_tls_block_early_mail_reply
+syntax keyword pfmainConf lmtp_tls_cert_file
+syntax keyword pfmainConf lmtp_tls_ciphers
+syntax keyword pfmainConf lmtp_tls_dcert_file
+syntax keyword pfmainConf lmtp_tls_dkey_file
+syntax keyword pfmainConf lmtp_tls_eccert_file
+syntax keyword pfmainConf lmtp_tls_eckey_file
+syntax keyword pfmainConf lmtp_tls_enforce_peername
+syntax keyword pfmainConf lmtp_tls_exclude_ciphers
+syntax keyword pfmainConf lmtp_tls_fingerprint_cert_match
+syntax keyword pfmainConf lmtp_tls_fingerprint_digest
+syntax keyword pfmainConf lmtp_tls_force_insecure_host_tlsa_lookup
+syntax keyword pfmainConf lmtp_tls_key_file
+syntax keyword pfmainConf lmtp_tls_loglevel
+syntax keyword pfmainConf lmtp_tls_mandatory_ciphers
+syntax keyword pfmainConf lmtp_tls_mandatory_exclude_ciphers
+syntax keyword pfmainConf lmtp_tls_mandatory_protocols
+syntax keyword pfmainConf lmtp_tls_note_starttls_offer
+syntax keyword pfmainConf lmtp_tls_per_site
+syntax keyword pfmainConf lmtp_tls_policy_maps
+syntax keyword pfmainConf lmtp_tls_protocols
+syntax keyword pfmainConf lmtp_tls_scert_verifydepth
+syntax keyword pfmainConf lmtp_tls_secure_cert_match
+syntax keyword pfmainConf lmtp_tls_security_level
+syntax keyword pfmainConf lmtp_tls_session_cache_database
+syntax keyword pfmainConf lmtp_tls_session_cache_timeout
+syntax keyword pfmainConf lmtp_tls_trust_anchor_file
+syntax keyword pfmainConf lmtp_tls_verify_cert_match
+syntax keyword pfmainConf lmtp_use_tls
+syntax keyword pfmainConf lmtp_xforward_timeout
+syntax keyword pfmainConf local_command_shell
+syntax keyword pfmainConf local_delivery_status_filter
+syntax keyword pfmainConf local_destination_concurrency_limit
+syntax keyword pfmainConf local_destination_recipient_limit
+syntax keyword pfmainConf local_header_rewrite_clients
+syntax keyword pfmainConf local_recipient_maps
+syntax keyword pfmainConf local_transport
+syntax keyword pfmainConf luser_relay
+syntax keyword pfmainConf mail_name
+syntax keyword pfmainConf mail_owner
+syntax keyword pfmainConf mail_release_date
+syntax keyword pfmainConf mail_spool_directory
+syntax keyword pfmainConf mail_version
+syntax keyword pfmainConf mailbox_command
+syntax keyword pfmainConf mailbox_command_maps
+syntax keyword pfmainConf mailbox_delivery_lock
+syntax keyword pfmainConf mailbox_size_limit
+syntax keyword pfmainConf mailbox_transport
+syntax keyword pfmainConf mailbox_transport_maps
+syntax keyword pfmainConf mailq_path
+syntax keyword pfmainConf manpage_directory
+syntax keyword pfmainConf maps_rbl_domains
+syntax keyword pfmainConf maps_rbl_reject_code
+syntax keyword pfmainConf masquerade_classes
+syntax keyword pfmainConf masquerade_domains
+syntax keyword pfmainConf masquerade_exceptions
+syntax keyword pfmainConf master_service_disable
+syntax keyword pfmainConf max_idle
+syntax keyword pfmainConf max_use
+syntax keyword pfmainConf maximal_backoff_time
+syntax keyword pfmainConf maximal_queue_lifetime
+syntax keyword pfmainConf message_drop_headers
+syntax keyword pfmainConf message_reject_characters
+syntax keyword pfmainConf message_size_limit
+syntax keyword pfmainConf message_strip_characters
+syntax keyword pfmainConf meta_directory
+syntax keyword pfmainConf milter_command_timeout
+syntax keyword pfmainConf milter_connect_macros
+syntax keyword pfmainConf milter_connect_timeout
+syntax keyword pfmainConf milter_content_timeout
+syntax keyword pfmainConf milter_data_macros
+syntax keyword pfmainConf milter_default_action
+syntax keyword pfmainConf milter_end_of_data_macros
+syntax keyword pfmainConf milter_end_of_header_macros
+syntax keyword pfmainConf milter_header_checks
+syntax keyword pfmainConf milter_helo_macros
+syntax keyword pfmainConf milter_macro_daemon_name
+syntax keyword pfmainConf milter_macro_v
+syntax keyword pfmainConf milter_mail_macros
+syntax keyword pfmainConf milter_protocol
+syntax keyword pfmainConf milter_rcpt_macros
+syntax keyword pfmainConf milter_unknown_command_macros
+syntax keyword pfmainConf mime_boundary_length_limit
+syntax keyword pfmainConf mime_header_checks
+syntax keyword pfmainConf mime_nesting_limit
+syntax keyword pfmainConf minimal_backoff_time
+syntax keyword pfmainConf multi_instance_directories
+syntax keyword pfmainConf multi_instance_enable
+syntax keyword pfmainConf multi_instance_group
+syntax keyword pfmainConf multi_instance_name
+syntax keyword pfmainConf multi_instance_wrapper
+syntax keyword pfmainConf multi_recipient_bounce_reject_code
+syntax keyword pfmainConf mydestination
+syntax keyword pfmainConf mydomain
+syntax keyword pfmainConf myhostname
+syntax keyword pfmainConf mynetworks
+syntax keyword pfmainConf mynetworks_style
+syntax keyword pfmainConf myorigin
+syntax keyword pfmainConf nested_header_checks
+syntax keyword pfmainConf newaliases_path
+syntax keyword pfmainConf non_fqdn_reject_code
+syntax keyword pfmainConf non_smtpd_milters
+syntax keyword pfmainConf notify_classes
+syntax keyword pfmainConf nullmx_reject_code
+syntax keyword pfmainConf owner_request_special
+syntax keyword pfmainConf parent_domain_matches_subdomains
+syntax keyword pfmainConf permit_mx_backup_networks
+syntax keyword pfmainConf pickup_service_name
+syntax keyword pfmainConf pipe_delivery_status_filter
+syntax keyword pfmainConf plaintext_reject_code
+syntax keyword pfmainConf postmulti_control_commands
+syntax keyword pfmainConf postmulti_start_commands
+syntax keyword pfmainConf postmulti_stop_commands
+syntax keyword pfmainConf postscreen_access_list
+syntax keyword pfmainConf postscreen_bare_newline_action
+syntax keyword pfmainConf postscreen_bare_newline_enable
+syntax keyword pfmainConf postscreen_bare_newline_ttl
+syntax keyword pfmainConf postscreen_blacklist_action
+syntax keyword pfmainConf postscreen_cache_cleanup_interval
+syntax keyword pfmainConf postscreen_cache_map
+syntax keyword pfmainConf postscreen_cache_retention_time
+syntax keyword pfmainConf postscreen_client_connection_count_limit
+syntax keyword pfmainConf postscreen_command_count_limit
+syntax keyword pfmainConf postscreen_command_filter
+syntax keyword pfmainConf postscreen_command_time_limit
+syntax keyword pfmainConf postscreen_disable_vrfy_command
+syntax keyword pfmainConf postscreen_discard_ehlo_keyword_address_maps
+syntax keyword pfmainConf postscreen_discard_ehlo_keywords
+syntax keyword pfmainConf postscreen_dnsbl_action
+syntax keyword pfmainConf postscreen_dnsbl_reply_map
+syntax keyword pfmainConf postscreen_dnsbl_sites
+syntax keyword pfmainConf postscreen_dnsbl_threshold
+syntax keyword pfmainConf postscreen_dnsbl_timeout
+syntax keyword pfmainConf postscreen_dnsbl_ttl
+syntax keyword pfmainConf postscreen_dnsbl_whitelist_threshold
+syntax keyword pfmainConf postscreen_enforce_tls
+syntax keyword pfmainConf postscreen_expansion_filter
+syntax keyword pfmainConf postscreen_forbidden_commands
+syntax keyword pfmainConf postscreen_greet_action
+syntax keyword pfmainConf postscreen_greet_banner
+syntax keyword pfmainConf postscreen_greet_ttl
+syntax keyword pfmainConf postscreen_greet_wait
+syntax keyword pfmainConf postscreen_helo_required
+syntax keyword pfmainConf postscreen_non_smtp_command_action
+syntax keyword pfmainConf postscreen_non_smtp_command_enable
+syntax keyword pfmainConf postscreen_non_smtp_command_ttl
+syntax keyword pfmainConf postscreen_pipelining_action
+syntax keyword pfmainConf postscreen_pipelining_enable
+syntax keyword pfmainConf postscreen_pipelining_ttl
+syntax keyword pfmainConf postscreen_post_queue_limit
+syntax keyword pfmainConf postscreen_pre_queue_limit
+syntax keyword pfmainConf postscreen_reject_footer
+syntax keyword pfmainConf postscreen_tls_security_level
+syntax keyword pfmainConf postscreen_upstream_proxy_protocol
+syntax keyword pfmainConf postscreen_upstream_proxy_timeout
+syntax keyword pfmainConf postscreen_use_tls
+syntax keyword pfmainConf postscreen_watchdog_timeout
+syntax keyword pfmainConf postscreen_whitelist_interfaces
+syntax keyword pfmainConf prepend_delivered_header
+syntax keyword pfmainConf process_id
+syntax keyword pfmainConf process_id_directory
+syntax keyword pfmainConf process_name
+syntax keyword pfmainConf propagate_unmatched_extensions
+syntax keyword pfmainConf proxy_interfaces
+syntax keyword pfmainConf proxy_read_maps
+syntax keyword pfmainConf proxy_write_maps
+syntax keyword pfmainConf proxymap_service_name
+syntax keyword pfmainConf proxywrite_service_name
+syntax keyword pfmainConf qmgr_clog_warn_time
+syntax keyword pfmainConf qmgr_daemon_timeout
+syntax keyword pfmainConf qmgr_fudge_factor
+syntax keyword pfmainConf qmgr_ipc_timeout
+syntax keyword pfmainConf qmgr_message_active_limit
+syntax keyword pfmainConf qmgr_message_recipient_limit
+syntax keyword pfmainConf qmgr_message_recipient_minimum
+syntax keyword pfmainConf qmqpd_authorized_clients
+syntax keyword pfmainConf qmqpd_client_port_logging
+syntax keyword pfmainConf qmqpd_error_delay
+syntax keyword pfmainConf qmqpd_timeout
+syntax keyword pfmainConf queue_directory
+syntax keyword pfmainConf queue_file_attribute_count_limit
+syntax keyword pfmainConf queue_minfree
+syntax keyword pfmainConf queue_run_delay
+syntax keyword pfmainConf queue_service_name
+syntax keyword pfmainConf rbl_reply_maps
+syntax keyword pfmainConf readme_directory
+syntax keyword pfmainConf receive_override_options
+syntax keyword pfmainConf recipient_bcc_maps
+syntax keyword pfmainConf recipient_canonical_classes
+syntax keyword pfmainConf recipient_canonical_maps
+syntax keyword pfmainConf recipient_delimiter
+syntax keyword pfmainConf reject_code
+syntax keyword pfmainConf reject_tempfail_action
+syntax keyword pfmainConf relay_clientcerts
+syntax keyword pfmainConf relay_destination_concurrency_limit
+syntax keyword pfmainConf relay_destination_recipient_limit
+syntax keyword pfmainConf relay_domains
+syntax keyword pfmainConf relay_domains_reject_code
+syntax keyword pfmainConf relay_recipient_maps
+syntax keyword pfmainConf relay_transport
+syntax keyword pfmainConf relayhost
+syntax keyword pfmainConf relocated_maps
+syntax keyword pfmainConf remote_header_rewrite_domain
+syntax keyword pfmainConf require_home_directory
+syntax keyword pfmainConf reset_owner_alias
+syntax keyword pfmainConf resolve_dequoted_address
+syntax keyword pfmainConf resolve_null_domain
+syntax keyword pfmainConf resolve_numeric_domain
+syntax keyword pfmainConf rewrite_service_name
+syntax keyword pfmainConf sample_directory
+syntax keyword pfmainConf send_cyrus_sasl_authzid
+syntax keyword pfmainConf sender_based_routing
+syntax keyword pfmainConf sender_bcc_maps
+syntax keyword pfmainConf sender_canonical_classes
+syntax keyword pfmainConf sender_canonical_maps
+syntax keyword pfmainConf sender_dependent_default_transport_maps
+syntax keyword pfmainConf sender_dependent_relayhost_maps
+syntax keyword pfmainConf sendmail_fix_line_endings
+syntax keyword pfmainConf sendmail_path
+syntax keyword pfmainConf service_throttle_time
+syntax keyword pfmainConf setgid_group
+syntax keyword pfmainConf shlib_directory
+syntax keyword pfmainConf show_user_unknown_table_name
+syntax keyword pfmainConf showq_service_name
+syntax keyword pfmainConf smtp_address_preference
+syntax keyword pfmainConf smtp_address_verify_target
+syntax keyword pfmainConf smtp_always_send_ehlo
+syntax keyword pfmainConf smtp_bind_address
+syntax keyword pfmainConf smtp_bind_address6
+syntax keyword pfmainConf smtp_body_checks
+syntax keyword pfmainConf smtp_cname_overrides_servername
+syntax keyword pfmainConf smtp_connect_timeout
+syntax keyword pfmainConf smtp_connection_cache_destinations
+syntax keyword pfmainConf smtp_connection_cache_on_demand
+syntax keyword pfmainConf smtp_connection_cache_time_limit
+syntax keyword pfmainConf smtp_connection_reuse_count_limit
+syntax keyword pfmainConf smtp_connection_reuse_time_limit
+syntax keyword pfmainConf smtp_data_done_timeout
+syntax keyword pfmainConf smtp_data_init_timeout
+syntax keyword pfmainConf smtp_data_xfer_timeout
+syntax keyword pfmainConf smtp_defer_if_no_mx_address_found
+syntax keyword pfmainConf smtp_delivery_status_filter
+syntax keyword pfmainConf smtp_destination_concurrency_limit
+syntax keyword pfmainConf smtp_destination_recipient_limit
+syntax keyword pfmainConf smtp_discard_ehlo_keyword_address_maps
+syntax keyword pfmainConf smtp_discard_ehlo_keywords
+syntax keyword pfmainConf smtp_dns_reply_filter
+syntax keyword pfmainConf smtp_dns_resolver_options
+syntax keyword pfmainConf smtp_dns_support_level
+syntax keyword pfmainConf smtp_enforce_tls
+syntax keyword pfmainConf smtp_fallback_relay
+syntax keyword pfmainConf smtp_generic_maps
+syntax keyword pfmainConf smtp_header_checks
+syntax keyword pfmainConf smtp_helo_name
+syntax keyword pfmainConf smtp_helo_timeout
+syntax keyword pfmainConf smtp_host_lookup
+syntax keyword pfmainConf smtp_line_length_limit
+syntax keyword pfmainConf smtp_mail_timeout
+syntax keyword pfmainConf smtp_mime_header_checks
+syntax keyword pfmainConf smtp_mx_address_limit
+syntax keyword pfmainConf smtp_mx_session_limit
+syntax keyword pfmainConf smtp_nested_header_checks
+syntax keyword pfmainConf smtp_never_send_ehlo
+syntax keyword pfmainConf smtp_per_record_deadline
+syntax keyword pfmainConf smtp_pix_workaround_delay_time
+syntax keyword pfmainConf smtp_pix_workaround_maps
+syntax keyword pfmainConf smtp_pix_workaround_threshold_time
+syntax keyword pfmainConf smtp_pix_workarounds
+syntax keyword pfmainConf smtp_quit_timeout
+syntax keyword pfmainConf smtp_quote_rfc821_envelope
+syntax keyword pfmainConf smtp_randomize_addresses
+syntax keyword pfmainConf smtp_rcpt_timeout
+syntax keyword pfmainConf smtp_reply_filter
+syntax keyword pfmainConf smtp_rset_timeout
+syntax keyword pfmainConf smtp_sasl_auth_cache_name
+syntax keyword pfmainConf smtp_sasl_auth_cache_time
+syntax keyword pfmainConf smtp_sasl_auth_enable
+syntax keyword pfmainConf smtp_sasl_auth_soft_bounce
+syntax keyword pfmainConf smtp_sasl_mechanism_filter
+syntax keyword pfmainConf smtp_sasl_password_maps
+syntax keyword pfmainConf smtp_sasl_path
+syntax keyword pfmainConf smtp_sasl_security_options
+syntax keyword pfmainConf smtp_sasl_tls_security_options
+syntax keyword pfmainConf smtp_sasl_tls_verified_security_options
+syntax keyword pfmainConf smtp_sasl_type
+syntax keyword pfmainConf smtp_send_dummy_mail_auth
+syntax keyword pfmainConf smtp_send_xforward_command
+syntax keyword pfmainConf smtp_sender_dependent_authentication
+syntax keyword pfmainConf smtp_skip_4xx_greeting
+syntax keyword pfmainConf smtp_skip_5xx_greeting
+syntax keyword pfmainConf smtp_skip_quit_response
+syntax keyword pfmainConf smtp_starttls_timeout
+syntax keyword pfmainConf smtp_tls_CAfile
+syntax keyword pfmainConf smtp_tls_CApath
+syntax keyword pfmainConf smtp_tls_block_early_mail_reply
+syntax keyword pfmainConf smtp_tls_cert_file
+syntax keyword pfmainConf smtp_tls_cipherlist
+syntax keyword pfmainConf smtp_tls_ciphers
+syntax keyword pfmainConf smtp_tls_dcert_file
+syntax keyword pfmainConf smtp_tls_dkey_file
+syntax keyword pfmainConf smtp_tls_eccert_file
+syntax keyword pfmainConf smtp_tls_eckey_file
+syntax keyword pfmainConf smtp_tls_enforce_peername
+syntax keyword pfmainConf smtp_tls_exclude_ciphers
+syntax keyword pfmainConf smtp_tls_fingerprint_cert_match
+syntax keyword pfmainConf smtp_tls_fingerprint_digest
+syntax keyword pfmainConf smtp_tls_force_insecure_host_tlsa_lookup
+syntax keyword pfmainConf smtp_tls_key_file
+syntax keyword pfmainConf smtp_tls_loglevel
+syntax keyword pfmainConf smtp_tls_mandatory_ciphers
+syntax keyword pfmainConf smtp_tls_mandatory_exclude_ciphers
+syntax keyword pfmainConf smtp_tls_mandatory_protocols
+syntax keyword pfmainConf smtp_tls_note_starttls_offer
+syntax keyword pfmainConf smtp_tls_per_site
+syntax keyword pfmainConf smtp_tls_policy_maps
+syntax keyword pfmainConf smtp_tls_protocols
+syntax keyword pfmainConf smtp_tls_scert_verifydepth
+syntax keyword pfmainConf smtp_tls_secure_cert_match
+syntax keyword pfmainConf smtp_tls_security_level
+syntax keyword pfmainConf smtp_tls_session_cache_database
+syntax keyword pfmainConf smtp_tls_session_cache_timeout
+syntax keyword pfmainConf smtp_tls_trust_anchor_file
+syntax keyword pfmainConf smtp_tls_verify_cert_match
+syntax keyword pfmainConf smtp_tls_wrappermode
+syntax keyword pfmainConf smtp_use_tls
+syntax keyword pfmainConf smtp_xforward_timeout
+syntax keyword pfmainConf smtpd_authorized_verp_clients
+syntax keyword pfmainConf smtpd_authorized_xclient_hosts
+syntax keyword pfmainConf smtpd_authorized_xforward_hosts
+syntax keyword pfmainConf smtpd_banner
+syntax keyword pfmainConf smtpd_client_connection_count_limit
+syntax keyword pfmainConf smtpd_client_connection_rate_limit
+syntax keyword pfmainConf smtpd_client_event_limit_exceptions
+syntax keyword pfmainConf smtpd_client_message_rate_limit
+syntax keyword pfmainConf smtpd_client_new_tls_session_rate_limit
+syntax keyword pfmainConf smtpd_client_port_logging
+syntax keyword pfmainConf smtpd_client_recipient_rate_limit
+syntax keyword pfmainConf smtpd_client_restrictions
+syntax keyword pfmainConf smtpd_command_filter
+syntax keyword pfmainConf smtpd_data_restrictions
+syntax keyword pfmainConf smtpd_delay_open_until_valid_rcpt
+syntax keyword pfmainConf smtpd_delay_reject
+syntax keyword pfmainConf smtpd_discard_ehlo_keyword_address_maps
+syntax keyword pfmainConf smtpd_discard_ehlo_keywords
+syntax keyword pfmainConf smtpd_dns_reply_filter
+syntax keyword pfmainConf smtpd_end_of_data_restrictions
+syntax keyword pfmainConf smtpd_enforce_tls
+syntax keyword pfmainConf smtpd_error_sleep_time
+syntax keyword pfmainConf smtpd_etrn_restrictions
+syntax keyword pfmainConf smtpd_expansion_filter
+syntax keyword pfmainConf smtpd_forbidden_commands
+syntax keyword pfmainConf smtpd_hard_error_limit
+syntax keyword pfmainConf smtpd_helo_required
+syntax keyword pfmainConf smtpd_helo_restrictions
+syntax keyword pfmainConf smtpd_history_flush_threshold
+syntax keyword pfmainConf smtpd_junk_command_limit
+syntax keyword pfmainConf smtpd_log_access_permit_actions
+syntax keyword pfmainConf smtpd_milters
+syntax keyword pfmainConf smtpd_noop_commands
+syntax keyword pfmainConf smtpd_null_access_lookup_key
+syntax keyword pfmainConf smtpd_peername_lookup
+syntax keyword pfmainConf smtpd_per_record_deadline
+syntax keyword pfmainConf smtpd_policy_service_default_action
+syntax keyword pfmainConf smtpd_policy_service_max_idle
+syntax keyword pfmainConf smtpd_policy_service_max_ttl
+syntax keyword pfmainConf smtpd_policy_service_request_limit
+syntax keyword pfmainConf smtpd_policy_service_retry_delay
+syntax keyword pfmainConf smtpd_policy_service_timeout
+syntax keyword pfmainConf smtpd_policy_service_try_limit
+syntax keyword pfmainConf smtpd_proxy_ehlo
+syntax keyword pfmainConf smtpd_proxy_filter
+syntax keyword pfmainConf smtpd_proxy_options
+syntax keyword pfmainConf smtpd_proxy_timeout
+syntax keyword pfmainConf smtpd_recipient_limit
+syntax keyword pfmainConf smtpd_recipient_overshoot_limit
+syntax keyword pfmainConf smtpd_recipient_restrictions
+syntax keyword pfmainConf smtpd_reject_footer
+syntax keyword pfmainConf smtpd_reject_unlisted_recipient
+syntax keyword pfmainConf smtpd_reject_unlisted_sender
+syntax keyword pfmainConf smtpd_relay_restrictions
+syntax keyword pfmainConf smtpd_restriction_classes
+syntax keyword pfmainConf smtpd_sasl_application_name
+syntax keyword pfmainConf smtpd_sasl_auth_enable
+syntax keyword pfmainConf smtpd_sasl_authenticated_header
+syntax keyword pfmainConf smtpd_sasl_exceptions_networks
+syntax keyword pfmainConf smtpd_sasl_local_domain
+syntax keyword pfmainConf smtpd_sasl_path
+syntax keyword pfmainConf smtpd_sasl_security_options
+syntax keyword pfmainConf smtpd_sasl_service
+syntax keyword pfmainConf smtpd_sasl_tls_security_options
+syntax keyword pfmainConf smtpd_sasl_type
+syntax keyword pfmainConf smtpd_sender_login_maps
+syntax keyword pfmainConf smtpd_sender_restrictions
+syntax keyword pfmainConf smtpd_service_name
+syntax keyword pfmainConf smtpd_soft_error_limit
+syntax keyword pfmainConf smtpd_starttls_timeout
+syntax keyword pfmainConf smtpd_timeout
+syntax keyword pfmainConf smtpd_tls_CAfile
+syntax keyword pfmainConf smtpd_tls_CApath
+syntax keyword pfmainConf smtpd_tls_always_issue_session_ids
+syntax keyword pfmainConf smtpd_tls_ask_ccert
+syntax keyword pfmainConf smtpd_tls_auth_only
+syntax keyword pfmainConf smtpd_tls_ccert_verifydepth
+syntax keyword pfmainConf smtpd_tls_cert_file
+syntax keyword pfmainConf smtpd_tls_cipherlist
+syntax keyword pfmainConf smtpd_tls_ciphers
+syntax keyword pfmainConf smtpd_tls_dcert_file
+syntax keyword pfmainConf smtpd_tls_dh1024_param_file
+syntax keyword pfmainConf smtpd_tls_dh512_param_file
+syntax keyword pfmainConf smtpd_tls_dkey_file
+syntax keyword pfmainConf smtpd_tls_eccert_file
+syntax keyword pfmainConf smtpd_tls_eckey_file
+syntax keyword pfmainConf smtpd_tls_eecdh_grade
+syntax keyword pfmainConf smtpd_tls_exclude_ciphers
+syntax keyword pfmainConf smtpd_tls_fingerprint_digest
+syntax keyword pfmainConf smtpd_tls_key_file
+syntax keyword pfmainConf smtpd_tls_loglevel
+syntax keyword pfmainConf smtpd_tls_mandatory_ciphers
+syntax keyword pfmainConf smtpd_tls_mandatory_exclude_ciphers
+syntax keyword pfmainConf smtpd_tls_mandatory_protocols
+syntax keyword pfmainConf smtpd_tls_protocols
+syntax keyword pfmainConf smtpd_tls_received_header
+syntax keyword pfmainConf smtpd_tls_req_ccert
+syntax keyword pfmainConf smtpd_tls_security_level
+syntax keyword pfmainConf smtpd_tls_session_cache_database
+syntax keyword pfmainConf smtpd_tls_session_cache_timeout
+syntax keyword pfmainConf smtpd_tls_wrappermode
+syntax keyword pfmainConf smtpd_upstream_proxy_protocol
+syntax keyword pfmainConf smtpd_upstream_proxy_timeout
+syntax keyword pfmainConf smtpd_use_tls
+syntax keyword pfmainConf smtputf8_autodetect_classes
+syntax keyword pfmainConf smtputf8_enable
+syntax keyword pfmainConf soft_bounce
+syntax keyword pfmainConf stale_lock_time
+syntax keyword pfmainConf stress
+syntax keyword pfmainConf strict_7bit_headers
+syntax keyword pfmainConf strict_8bitmime
+syntax keyword pfmainConf strict_8bitmime_body
+syntax keyword pfmainConf strict_mailbox_ownership
+syntax keyword pfmainConf strict_mime_encoding_domain
+syntax keyword pfmainConf strict_rfc821_envelopes
+syntax keyword pfmainConf strict_smtputf8
+syntax keyword pfmainConf sun_mailtool_compatibility
+syntax keyword pfmainConf swap_bangpath
+syntax keyword pfmainConf syslog_facility
+syntax keyword pfmainConf syslog_name
+syntax keyword pfmainConf tcp_windowsize
+syntax keyword pfmainConf tls_append_default_CA
+syntax keyword pfmainConf tls_daemon_random_bytes
+syntax keyword pfmainConf tls_dane_digest_agility
+syntax keyword pfmainConf tls_dane_digests
+syntax keyword pfmainConf tls_dane_trust_anchor_digest_enable
+syntax keyword pfmainConf tls_disable_workarounds
+syntax keyword pfmainConf tls_eecdh_strong_curve
+syntax keyword pfmainConf tls_eecdh_ultra_curve
+syntax keyword pfmainConf tls_export_cipherlist
+syntax keyword pfmainConf tls_high_cipherlist
+syntax keyword pfmainConf tls_legacy_public_key_fingerprints
+syntax keyword pfmainConf tls_low_cipherlist
+syntax keyword pfmainConf tls_medium_cipherlist
+syntax keyword pfmainConf tls_null_cipherlist
+syntax keyword pfmainConf tls_preempt_cipherlist
+syntax keyword pfmainConf tls_random_bytes
+syntax keyword pfmainConf tls_random_exchange_name
+syntax keyword pfmainConf tls_random_prng_update_period
+syntax keyword pfmainConf tls_random_reseed_period
+syntax keyword pfmainConf tls_random_source
+syntax keyword pfmainConf tls_session_ticket_cipher
+syntax keyword pfmainConf tls_ssl_options
+syntax keyword pfmainConf tls_wildcard_matches_multiple_labels
+syntax keyword pfmainConf tlsmgr_service_name
+syntax keyword pfmainConf tlsproxy_enforce_tls
+syntax keyword pfmainConf tlsproxy_service_name
+syntax keyword pfmainConf tlsproxy_tls_CAfile
+syntax keyword pfmainConf tlsproxy_tls_CApath
+syntax keyword pfmainConf tlsproxy_tls_always_issue_session_ids
+syntax keyword pfmainConf tlsproxy_tls_ask_ccert
+syntax keyword pfmainConf tlsproxy_tls_ccert_verifydepth
+syntax keyword pfmainConf tlsproxy_tls_cert_file
+syntax keyword pfmainConf tlsproxy_tls_ciphers
+syntax keyword pfmainConf tlsproxy_tls_dcert_file
+syntax keyword pfmainConf tlsproxy_tls_dh1024_param_file
+syntax keyword pfmainConf tlsproxy_tls_dh512_param_file
+syntax keyword pfmainConf tlsproxy_tls_dkey_file
+syntax keyword pfmainConf tlsproxy_tls_eccert_file
+syntax keyword pfmainConf tlsproxy_tls_eckey_file
+syntax keyword pfmainConf tlsproxy_tls_eecdh_grade
+syntax keyword pfmainConf tlsproxy_tls_exclude_ciphers
+syntax keyword pfmainConf tlsproxy_tls_fingerprint_digest
+syntax keyword pfmainConf tlsproxy_tls_key_file
+syntax keyword pfmainConf tlsproxy_tls_loglevel
+syntax keyword pfmainConf tlsproxy_tls_mandatory_ciphers
+syntax keyword pfmainConf tlsproxy_tls_mandatory_exclude_ciphers
+syntax keyword pfmainConf tlsproxy_tls_mandatory_protocols
+syntax keyword pfmainConf tlsproxy_tls_protocols
+syntax keyword pfmainConf tlsproxy_tls_req_ccert
+syntax keyword pfmainConf tlsproxy_tls_security_level
+syntax keyword pfmainConf tlsproxy_tls_session_cache_timeout
+syntax keyword pfmainConf tlsproxy_use_tls
+syntax keyword pfmainConf tlsproxy_watchdog_timeout
+syntax keyword pfmainConf trace_service_name
+syntax keyword pfmainConf transport_delivery_slot_cost
+syntax keyword pfmainConf transport_delivery_slot_discount
+syntax keyword pfmainConf transport_delivery_slot_loan
+syntax keyword pfmainConf transport_destination_concurrency_failed_cohort_limit
+syntax keyword pfmainConf transport_destination_concurrency_limit
+syntax keyword pfmainConf transport_destination_concurrency_negative_feedback
+syntax keyword pfmainConf transport_destination_concurrency_positive_feedback
+syntax keyword pfmainConf transport_destination_rate_delay
+syntax keyword pfmainConf transport_destination_recipient_limit
+syntax keyword pfmainConf transport_extra_recipient_limit
+syntax keyword pfmainConf transport_initial_destination_concurrency
+syntax keyword pfmainConf transport_maps
+syntax keyword pfmainConf transport_minimum_delivery_slots
+syntax keyword pfmainConf transport_recipient_limit
+syntax keyword pfmainConf transport_recipient_refill_delay
+syntax keyword pfmainConf transport_recipient_refill_limit
+syntax keyword pfmainConf transport_retry_time
+syntax keyword pfmainConf transport_time_limit
+syntax keyword pfmainConf trigger_timeout
+syntax keyword pfmainConf undisclosed_recipients_header
+syntax keyword pfmainConf unknown_address_reject_code
+syntax keyword pfmainConf unknown_address_tempfail_action
+syntax keyword pfmainConf unknown_client_reject_code
+syntax keyword pfmainConf unknown_helo_hostname_tempfail_action
+syntax keyword pfmainConf unknown_hostname_reject_code
+syntax keyword pfmainConf unknown_local_recipient_reject_code
+syntax keyword pfmainConf unknown_relay_recipient_reject_code
+syntax keyword pfmainConf unknown_virtual_alias_reject_code
+syntax keyword pfmainConf unknown_virtual_mailbox_reject_code
+syntax keyword pfmainConf unverified_recipient_defer_code
+syntax keyword pfmainConf unverified_recipient_reject_code
+syntax keyword pfmainConf unverified_recipient_reject_reason
+syntax keyword pfmainConf unverified_recipient_tempfail_action
+syntax keyword pfmainConf unverified_sender_defer_code
+syntax keyword pfmainConf unverified_sender_reject_code
+syntax keyword pfmainConf unverified_sender_reject_reason
+syntax keyword pfmainConf unverified_sender_tempfail_action
+syntax keyword pfmainConf verp_delimiter_filter
+syntax keyword pfmainConf virtual_alias_address_length_limit
+syntax keyword pfmainConf virtual_alias_domains
+syntax keyword pfmainConf virtual_alias_expansion_limit
+syntax keyword pfmainConf virtual_alias_maps
+syntax keyword pfmainConf virtual_alias_recursion_limit
+syntax keyword pfmainConf virtual_delivery_status_filter
+syntax keyword pfmainConf virtual_destination_concurrency_limit
+syntax keyword pfmainConf virtual_destination_recipient_limit
+syntax keyword pfmainConf virtual_gid_maps
+syntax keyword pfmainConf virtual_mailbox_base
+syntax keyword pfmainConf virtual_mailbox_domains
+syntax keyword pfmainConf virtual_mailbox_limit
+syntax keyword pfmainConf virtual_mailbox_lock
+syntax keyword pfmainConf virtual_mailbox_maps
+syntax keyword pfmainConf virtual_maps
+syntax keyword pfmainConf virtual_minimum_uid
+syntax keyword pfmainConf virtual_transport
+syntax keyword pfmainConf virtual_uid_maps
+syntax match pfmainRef "$\<2bounce_notice_recipient\>"
+syntax match pfmainRef "$\<access_map_defer_code\>"
+syntax match pfmainRef "$\<access_map_reject_code\>"
+syntax match pfmainRef "$\<address_verify_cache_cleanup_interval\>"
+syntax match pfmainRef "$\<address_verify_default_transport\>"
+syntax match pfmainRef "$\<address_verify_local_transport\>"
+syntax match pfmainRef "$\<address_verify_map\>"
+syntax match pfmainRef "$\<address_verify_negative_cache\>"
+syntax match pfmainRef "$\<address_verify_negative_expire_time\>"
+syntax match pfmainRef "$\<address_verify_negative_refresh_time\>"
+syntax match pfmainRef "$\<address_verify_poll_count\>"
+syntax match pfmainRef "$\<address_verify_poll_delay\>"
+syntax match pfmainRef "$\<address_verify_positive_expire_time\>"
+syntax match pfmainRef "$\<address_verify_positive_refresh_time\>"
+syntax match pfmainRef "$\<address_verify_relay_transport\>"
+syntax match pfmainRef "$\<address_verify_relayhost\>"
+syntax match pfmainRef "$\<address_verify_sender\>"
+syntax match pfmainRef "$\<address_verify_sender_dependent_default_transport_maps\>"
+syntax match pfmainRef "$\<address_verify_sender_dependent_relayhost_maps\>"
+syntax match pfmainRef "$\<address_verify_sender_ttl\>"
+syntax match pfmainRef "$\<address_verify_service_name\>"
+syntax match pfmainRef "$\<address_verify_transport_maps\>"
+syntax match pfmainRef "$\<address_verify_virtual_transport\>"
+syntax match pfmainRef "$\<alias_database\>"
+syntax match pfmainRef "$\<alias_maps\>"
+syntax match pfmainRef "$\<allow_mail_to_commands\>"
+syntax match pfmainRef "$\<allow_mail_to_files\>"
+syntax match pfmainRef "$\<allow_min_user\>"
+syntax match pfmainRef "$\<allow_percent_hack\>"
+syntax match pfmainRef "$\<allow_untrusted_routing\>"
+syntax match pfmainRef "$\<alternate_config_directories\>"
+syntax match pfmainRef "$\<always_add_missing_headers\>"
+syntax match pfmainRef "$\<always_bcc\>"
+syntax match pfmainRef "$\<anvil_rate_time_unit\>"
+syntax match pfmainRef "$\<anvil_status_update_time\>"
+syntax match pfmainRef "$\<append_at_myorigin\>"
+syntax match pfmainRef "$\<append_dot_mydomain\>"
+syntax match pfmainRef "$\<application_event_drain_time\>"
+syntax match pfmainRef "$\<authorized_flush_users\>"
+syntax match pfmainRef "$\<authorized_mailq_users\>"
+syntax match pfmainRef "$\<authorized_submit_users\>"
+syntax match pfmainRef "$\<authorized_verp_clients\>"
+syntax match pfmainRef "$\<backwards_bounce_logfile_compatibility\>"
+syntax match pfmainRef "$\<berkeley_db_create_buffer_size\>"
+syntax match pfmainRef "$\<berkeley_db_read_buffer_size\>"
+syntax match pfmainRef "$\<best_mx_transport\>"
+syntax match pfmainRef "$\<biff\>"
+syntax match pfmainRef "$\<body_checks\>"
+syntax match pfmainRef "$\<body_checks_size_limit\>"
+syntax match pfmainRef "$\<bounce_notice_recipient\>"
+syntax match pfmainRef "$\<bounce_queue_lifetime\>"
+syntax match pfmainRef "$\<bounce_service_name\>"
+syntax match pfmainRef "$\<bounce_size_limit\>"
+syntax match pfmainRef "$\<bounce_template_file\>"
+syntax match pfmainRef "$\<broken_sasl_auth_clients\>"
+syntax match pfmainRef "$\<canonical_classes\>"
+syntax match pfmainRef "$\<canonical_maps\>"
+syntax match pfmainRef "$\<cleanup_service_name\>"
+syntax match pfmainRef "$\<command_directory\>"
+syntax match pfmainRef "$\<command_execution_directory\>"
+syntax match pfmainRef "$\<command_expansion_filter\>"
+syntax match pfmainRef "$\<command_time_limit\>"
+syntax match pfmainRef "$\<compatibility_level\>"
+syntax match pfmainRef "$\<config_directory\>"
+syntax match pfmainRef "$\<confirm_delay_cleared\>"
+syntax match pfmainRef "$\<connection_cache_protocol_timeout\>"
+syntax match pfmainRef "$\<connection_cache_service_name\>"
+syntax match pfmainRef "$\<connection_cache_status_update_time\>"
+syntax match pfmainRef "$\<connection_cache_ttl_limit\>"
+syntax match pfmainRef "$\<content_filter\>"
+syntax match pfmainRef "$\<cyrus_sasl_config_path\>"
+syntax match pfmainRef "$\<daemon_directory\>"
+syntax match pfmainRef "$\<daemon_table_open_error_is_fatal\>"
+syntax match pfmainRef "$\<daemon_timeout\>"
+syntax match pfmainRef "$\<data_directory\>"
+syntax match pfmainRef "$\<debug_peer_level\>"
+syntax match pfmainRef "$\<debug_peer_list\>"
+syntax match pfmainRef "$\<debugger_command\>"
+syntax match pfmainRef "$\<default_database_type\>"
+syntax match pfmainRef "$\<default_delivery_slot_cost\>"
+syntax match pfmainRef "$\<default_delivery_slot_discount\>"
+syntax match pfmainRef "$\<default_delivery_slot_loan\>"
+syntax match pfmainRef "$\<default_delivery_status_filter\>"
+syntax match pfmainRef "$\<default_destination_concurrency_failed_cohort_limit\>"
+syntax match pfmainRef "$\<default_destination_concurrency_limit\>"
+syntax match pfmainRef "$\<default_destination_concurrency_negative_feedback\>"
+syntax match pfmainRef "$\<default_destination_concurrency_positive_feedback\>"
+syntax match pfmainRef "$\<default_destination_rate_delay\>"
+syntax match pfmainRef "$\<default_destination_recipient_limit\>"
+syntax match pfmainRef "$\<default_extra_recipient_limit\>"
+syntax match pfmainRef "$\<default_filter_nexthop\>"
+syntax match pfmainRef "$\<default_minimum_delivery_slots\>"
+syntax match pfmainRef "$\<default_privs\>"
+syntax match pfmainRef "$\<default_process_limit\>"
+syntax match pfmainRef "$\<default_rbl_reply\>"
+syntax match pfmainRef "$\<default_recipient_limit\>"
+syntax match pfmainRef "$\<default_recipient_refill_delay\>"
+syntax match pfmainRef "$\<default_recipient_refill_limit\>"
+syntax match pfmainRef "$\<default_transport\>"
+syntax match pfmainRef "$\<default_verp_delimiters\>"
+syntax match pfmainRef "$\<defer_code\>"
+syntax match pfmainRef "$\<defer_service_name\>"
+syntax match pfmainRef "$\<defer_transports\>"
+syntax match pfmainRef "$\<delay_logging_resolution_limit\>"
+syntax match pfmainRef "$\<delay_notice_recipient\>"
+syntax match pfmainRef "$\<delay_warning_time\>"
+syntax match pfmainRef "$\<deliver_lock_attempts\>"
+syntax match pfmainRef "$\<deliver_lock_delay\>"
+syntax match pfmainRef "$\<destination_concurrency_feedback_debug\>"
+syntax match pfmainRef "$\<detect_8bit_encoding_header\>"
+syntax match pfmainRef "$\<disable_dns_lookups\>"
+syntax match pfmainRef "$\<disable_mime_input_processing\>"
+syntax match pfmainRef "$\<disable_mime_output_conversion\>"
+syntax match pfmainRef "$\<disable_verp_bounces\>"
+syntax match pfmainRef "$\<disable_vrfy_command\>"
+syntax match pfmainRef "$\<dnsblog_reply_delay\>"
+syntax match pfmainRef "$\<dnsblog_service_name\>"
+syntax match pfmainRef "$\<dont_remove\>"
+syntax match pfmainRef "$\<double_bounce_sender\>"
+syntax match pfmainRef "$\<duplicate_filter_limit\>"
+syntax match pfmainRef "$\<empty_address_default_transport_maps_lookup_key\>"
+syntax match pfmainRef "$\<empty_address_recipient\>"
+syntax match pfmainRef "$\<empty_address_relayhost_maps_lookup_key\>"
+syntax match pfmainRef "$\<enable_errors_to\>"
+syntax match pfmainRef "$\<enable_long_queue_ids\>"
+syntax match pfmainRef "$\<enable_original_recipient\>"
+syntax match pfmainRef "$\<error_notice_recipient\>"
+syntax match pfmainRef "$\<error_service_name\>"
+syntax match pfmainRef "$\<execution_directory_expansion_filter\>"
+syntax match pfmainRef "$\<expand_owner_alias\>"
+syntax match pfmainRef "$\<export_environment\>"
+syntax match pfmainRef "$\<extract_recipient_limit\>"
+syntax match pfmainRef "$\<fallback_relay\>"
+syntax match pfmainRef "$\<fallback_transport\>"
+syntax match pfmainRef "$\<fallback_transport_maps\>"
+syntax match pfmainRef "$\<fast_flush_domains\>"
+syntax match pfmainRef "$\<fast_flush_purge_time\>"
+syntax match pfmainRef "$\<fast_flush_refresh_time\>"
+syntax match pfmainRef "$\<fault_injection_code\>"
+syntax match pfmainRef "$\<flush_service_name\>"
+syntax match pfmainRef "$\<fork_attempts\>"
+syntax match pfmainRef "$\<fork_delay\>"
+syntax match pfmainRef "$\<forward_expansion_filter\>"
+syntax match pfmainRef "$\<forward_path\>"
+syntax match pfmainRef "$\<frozen_delivered_to\>"
+syntax match pfmainRef "$\<hash_queue_depth\>"
+syntax match pfmainRef "$\<hash_queue_names\>"
+syntax match pfmainRef "$\<header_address_token_limit\>"
+syntax match pfmainRef "$\<header_checks\>"
+syntax match pfmainRef "$\<header_size_limit\>"
+syntax match pfmainRef "$\<helpful_warnings\>"
+syntax match pfmainRef "$\<home_mailbox\>"
+syntax match pfmainRef "$\<hopcount_limit\>"
+syntax match pfmainRef "$\<html_directory\>"
+syntax match pfmainRef "$\<ignore_mx_lookup_error\>"
+syntax match pfmainRef "$\<import_environment\>"
+syntax match pfmainRef "$\<in_flow_delay\>"
+syntax match pfmainRef "$\<inet_interfaces\>"
+syntax match pfmainRef "$\<inet_protocols\>"
+syntax match pfmainRef "$\<initial_destination_concurrency\>"
+syntax match pfmainRef "$\<internal_mail_filter_classes\>"
+syntax match pfmainRef "$\<invalid_hostname_reject_code\>"
+syntax match pfmainRef "$\<ipc_idle\>"
+syntax match pfmainRef "$\<ipc_timeout\>"
+syntax match pfmainRef "$\<ipc_ttl\>"
+syntax match pfmainRef "$\<line_length_limit\>"
+syntax match pfmainRef "$\<lmdb_map_size\>"
+syntax match pfmainRef "$\<lmtp_address_preference\>"
+syntax match pfmainRef "$\<lmtp_address_verify_target\>"
+syntax match pfmainRef "$\<lmtp_assume_final\>"
+syntax match pfmainRef "$\<lmtp_bind_address\>"
+syntax match pfmainRef "$\<lmtp_bind_address6\>"
+syntax match pfmainRef "$\<lmtp_body_checks\>"
+syntax match pfmainRef "$\<lmtp_cache_connection\>"
+syntax match pfmainRef "$\<lmtp_cname_overrides_servername\>"
+syntax match pfmainRef "$\<lmtp_connect_timeout\>"
+syntax match pfmainRef "$\<lmtp_connection_cache_destinations\>"
+syntax match pfmainRef "$\<lmtp_connection_cache_on_demand\>"
+syntax match pfmainRef "$\<lmtp_connection_cache_time_limit\>"
+syntax match pfmainRef "$\<lmtp_connection_reuse_count_limit\>"
+syntax match pfmainRef "$\<lmtp_connection_reuse_time_limit\>"
+syntax match pfmainRef "$\<lmtp_data_done_timeout\>"
+syntax match pfmainRef "$\<lmtp_data_init_timeout\>"
+syntax match pfmainRef "$\<lmtp_data_xfer_timeout\>"
+syntax match pfmainRef "$\<lmtp_defer_if_no_mx_address_found\>"
+syntax match pfmainRef "$\<lmtp_delivery_status_filter\>"
+syntax match pfmainRef "$\<lmtp_destination_concurrency_limit\>"
+syntax match pfmainRef "$\<lmtp_destination_recipient_limit\>"
+syntax match pfmainRef "$\<lmtp_discard_lhlo_keyword_address_maps\>"
+syntax match pfmainRef "$\<lmtp_discard_lhlo_keywords\>"
+syntax match pfmainRef "$\<lmtp_dns_reply_filter\>"
+syntax match pfmainRef "$\<lmtp_dns_resolver_options\>"
+syntax match pfmainRef "$\<lmtp_dns_support_level\>"
+syntax match pfmainRef "$\<lmtp_enforce_tls\>"
+syntax match pfmainRef "$\<lmtp_generic_maps\>"
+syntax match pfmainRef "$\<lmtp_header_checks\>"
+syntax match pfmainRef "$\<lmtp_host_lookup\>"
+syntax match pfmainRef "$\<lmtp_lhlo_name\>"
+syntax match pfmainRef "$\<lmtp_lhlo_timeout\>"
+syntax match pfmainRef "$\<lmtp_line_length_limit\>"
+syntax match pfmainRef "$\<lmtp_mail_timeout\>"
+syntax match pfmainRef "$\<lmtp_mime_header_checks\>"
+syntax match pfmainRef "$\<lmtp_mx_address_limit\>"
+syntax match pfmainRef "$\<lmtp_mx_session_limit\>"
+syntax match pfmainRef "$\<lmtp_nested_header_checks\>"
+syntax match pfmainRef "$\<lmtp_per_record_deadline\>"
+syntax match pfmainRef "$\<lmtp_pix_workaround_delay_time\>"
+syntax match pfmainRef "$\<lmtp_pix_workaround_maps\>"
+syntax match pfmainRef "$\<lmtp_pix_workaround_threshold_time\>"
+syntax match pfmainRef "$\<lmtp_pix_workarounds\>"
+syntax match pfmainRef "$\<lmtp_quit_timeout\>"
+syntax match pfmainRef "$\<lmtp_quote_rfc821_envelope\>"
+syntax match pfmainRef "$\<lmtp_randomize_addresses\>"
+syntax match pfmainRef "$\<lmtp_rcpt_timeout\>"
+syntax match pfmainRef "$\<lmtp_reply_filter\>"
+syntax match pfmainRef "$\<lmtp_rset_timeout\>"
+syntax match pfmainRef "$\<lmtp_sasl_auth_cache_name\>"
+syntax match pfmainRef "$\<lmtp_sasl_auth_cache_time\>"
+syntax match pfmainRef "$\<lmtp_sasl_auth_enable\>"
+syntax match pfmainRef "$\<lmtp_sasl_auth_soft_bounce\>"
+syntax match pfmainRef "$\<lmtp_sasl_mechanism_filter\>"
+syntax match pfmainRef "$\<lmtp_sasl_password_maps\>"
+syntax match pfmainRef "$\<lmtp_sasl_path\>"
+syntax match pfmainRef "$\<lmtp_sasl_security_options\>"
+syntax match pfmainRef "$\<lmtp_sasl_tls_security_options\>"
+syntax match pfmainRef "$\<lmtp_sasl_tls_verified_security_options\>"
+syntax match pfmainRef "$\<lmtp_sasl_type\>"
+syntax match pfmainRef "$\<lmtp_send_dummy_mail_auth\>"
+syntax match pfmainRef "$\<lmtp_send_xforward_command\>"
+syntax match pfmainRef "$\<lmtp_sender_dependent_authentication\>"
+syntax match pfmainRef "$\<lmtp_skip_5xx_greeting\>"
+syntax match pfmainRef "$\<lmtp_skip_quit_response\>"
+syntax match pfmainRef "$\<lmtp_starttls_timeout\>"
+syntax match pfmainRef "$\<lmtp_tcp_port\>"
+syntax match pfmainRef "$\<lmtp_tls_CAfile\>"
+syntax match pfmainRef "$\<lmtp_tls_CApath\>"
+syntax match pfmainRef "$\<lmtp_tls_block_early_mail_reply\>"
+syntax match pfmainRef "$\<lmtp_tls_cert_file\>"
+syntax match pfmainRef "$\<lmtp_tls_ciphers\>"
+syntax match pfmainRef "$\<lmtp_tls_dcert_file\>"
+syntax match pfmainRef "$\<lmtp_tls_dkey_file\>"
+syntax match pfmainRef "$\<lmtp_tls_eccert_file\>"
+syntax match pfmainRef "$\<lmtp_tls_eckey_file\>"
+syntax match pfmainRef "$\<lmtp_tls_enforce_peername\>"
+syntax match pfmainRef "$\<lmtp_tls_exclude_ciphers\>"
+syntax match pfmainRef "$\<lmtp_tls_fingerprint_cert_match\>"
+syntax match pfmainRef "$\<lmtp_tls_fingerprint_digest\>"
+syntax match pfmainRef "$\<lmtp_tls_force_insecure_host_tlsa_lookup\>"
+syntax match pfmainRef "$\<lmtp_tls_key_file\>"
+syntax match pfmainRef "$\<lmtp_tls_loglevel\>"
+syntax match pfmainRef "$\<lmtp_tls_mandatory_ciphers\>"
+syntax match pfmainRef "$\<lmtp_tls_mandatory_exclude_ciphers\>"
+syntax match pfmainRef "$\<lmtp_tls_mandatory_protocols\>"
+syntax match pfmainRef "$\<lmtp_tls_note_starttls_offer\>"
+syntax match pfmainRef "$\<lmtp_tls_per_site\>"
+syntax match pfmainRef "$\<lmtp_tls_policy_maps\>"
+syntax match pfmainRef "$\<lmtp_tls_protocols\>"
+syntax match pfmainRef "$\<lmtp_tls_scert_verifydepth\>"
+syntax match pfmainRef "$\<lmtp_tls_secure_cert_match\>"
+syntax match pfmainRef "$\<lmtp_tls_security_level\>"
+syntax match pfmainRef "$\<lmtp_tls_session_cache_database\>"
+syntax match pfmainRef "$\<lmtp_tls_session_cache_timeout\>"
+syntax match pfmainRef "$\<lmtp_tls_trust_anchor_file\>"
+syntax match pfmainRef "$\<lmtp_tls_verify_cert_match\>"
+syntax match pfmainRef "$\<lmtp_use_tls\>"
+syntax match pfmainRef "$\<lmtp_xforward_timeout\>"
+syntax match pfmainRef "$\<local_command_shell\>"
+syntax match pfmainRef "$\<local_delivery_status_filter\>"
+syntax match pfmainRef "$\<local_destination_concurrency_limit\>"
+syntax match pfmainRef "$\<local_destination_recipient_limit\>"
+syntax match pfmainRef "$\<local_header_rewrite_clients\>"
+syntax match pfmainRef "$\<local_recipient_maps\>"
+syntax match pfmainRef "$\<local_transport\>"
+syntax match pfmainRef "$\<luser_relay\>"
+syntax match pfmainRef "$\<mail_name\>"
+syntax match pfmainRef "$\<mail_owner\>"
+syntax match pfmainRef "$\<mail_release_date\>"
+syntax match pfmainRef "$\<mail_spool_directory\>"
+syntax match pfmainRef "$\<mail_version\>"
+syntax match pfmainRef "$\<mailbox_command\>"
+syntax match pfmainRef "$\<mailbox_command_maps\>"
+syntax match pfmainRef "$\<mailbox_delivery_lock\>"
+syntax match pfmainRef "$\<mailbox_size_limit\>"
+syntax match pfmainRef "$\<mailbox_transport\>"
+syntax match pfmainRef "$\<mailbox_transport_maps\>"
+syntax match pfmainRef "$\<mailq_path\>"
+syntax match pfmainRef "$\<manpage_directory\>"
+syntax match pfmainRef "$\<maps_rbl_domains\>"
+syntax match pfmainRef "$\<maps_rbl_reject_code\>"
+syntax match pfmainRef "$\<masquerade_classes\>"
+syntax match pfmainRef "$\<masquerade_domains\>"
+syntax match pfmainRef "$\<masquerade_exceptions\>"
+syntax match pfmainRef "$\<master_service_disable\>"
+syntax match pfmainRef "$\<max_idle\>"
+syntax match pfmainRef "$\<max_use\>"
+syntax match pfmainRef "$\<maximal_backoff_time\>"
+syntax match pfmainRef "$\<maximal_queue_lifetime\>"
+syntax match pfmainRef "$\<message_drop_headers\>"
+syntax match pfmainRef "$\<message_reject_characters\>"
+syntax match pfmainRef "$\<message_size_limit\>"
+syntax match pfmainRef "$\<message_strip_characters\>"
+syntax match pfmainRef "$\<meta_directory\>"
+syntax match pfmainRef "$\<milter_command_timeout\>"
+syntax match pfmainRef "$\<milter_connect_macros\>"
+syntax match pfmainRef "$\<milter_connect_timeout\>"
+syntax match pfmainRef "$\<milter_content_timeout\>"
+syntax match pfmainRef "$\<milter_data_macros\>"
+syntax match pfmainRef "$\<milter_default_action\>"
+syntax match pfmainRef "$\<milter_end_of_data_macros\>"
+syntax match pfmainRef "$\<milter_end_of_header_macros\>"
+syntax match pfmainRef "$\<milter_header_checks\>"
+syntax match pfmainRef "$\<milter_helo_macros\>"
+syntax match pfmainRef "$\<milter_macro_daemon_name\>"
+syntax match pfmainRef "$\<milter_macro_v\>"
+syntax match pfmainRef "$\<milter_mail_macros\>"
+syntax match pfmainRef "$\<milter_protocol\>"
+syntax match pfmainRef "$\<milter_rcpt_macros\>"
+syntax match pfmainRef "$\<milter_unknown_command_macros\>"
+syntax match pfmainRef "$\<mime_boundary_length_limit\>"
+syntax match pfmainRef "$\<mime_header_checks\>"
+syntax match pfmainRef "$\<mime_nesting_limit\>"
+syntax match pfmainRef "$\<minimal_backoff_time\>"
+syntax match pfmainRef "$\<multi_instance_directories\>"
+syntax match pfmainRef "$\<multi_instance_enable\>"
+syntax match pfmainRef "$\<multi_instance_group\>"
+syntax match pfmainRef "$\<multi_instance_name\>"
+syntax match pfmainRef "$\<multi_instance_wrapper\>"
+syntax match pfmainRef "$\<multi_recipient_bounce_reject_code\>"
+syntax match pfmainRef "$\<mydestination\>"
+syntax match pfmainRef "$\<mydomain\>"
+syntax match pfmainRef "$\<myhostname\>"
+syntax match pfmainRef "$\<mynetworks\>"
+syntax match pfmainRef "$\<mynetworks_style\>"
+syntax match pfmainRef "$\<myorigin\>"
+syntax match pfmainRef "$\<nested_header_checks\>"
+syntax match pfmainRef "$\<newaliases_path\>"
+syntax match pfmainRef "$\<non_fqdn_reject_code\>"
+syntax match pfmainRef "$\<non_smtpd_milters\>"
+syntax match pfmainRef "$\<notify_classes\>"
+syntax match pfmainRef "$\<nullmx_reject_code\>"
+syntax match pfmainRef "$\<owner_request_special\>"
+syntax match pfmainRef "$\<parent_domain_matches_subdomains\>"
+syntax match pfmainRef "$\<permit_mx_backup_networks\>"
+syntax match pfmainRef "$\<pickup_service_name\>"
+syntax match pfmainRef "$\<pipe_delivery_status_filter\>"
+syntax match pfmainRef "$\<plaintext_reject_code\>"
+syntax match pfmainRef "$\<postmulti_control_commands\>"
+syntax match pfmainRef "$\<postmulti_start_commands\>"
+syntax match pfmainRef "$\<postmulti_stop_commands\>"
+syntax match pfmainRef "$\<postscreen_access_list\>"
+syntax match pfmainRef "$\<postscreen_bare_newline_action\>"
+syntax match pfmainRef "$\<postscreen_bare_newline_enable\>"
+syntax match pfmainRef "$\<postscreen_bare_newline_ttl\>"
+syntax match pfmainRef "$\<postscreen_blacklist_action\>"
+syntax match pfmainRef "$\<postscreen_cache_cleanup_interval\>"
+syntax match pfmainRef "$\<postscreen_cache_map\>"
+syntax match pfmainRef "$\<postscreen_cache_retention_time\>"
+syntax match pfmainRef "$\<postscreen_client_connection_count_limit\>"
+syntax match pfmainRef "$\<postscreen_command_count_limit\>"
+syntax match pfmainRef "$\<postscreen_command_filter\>"
+syntax match pfmainRef "$\<postscreen_command_time_limit\>"
+syntax match pfmainRef "$\<postscreen_disable_vrfy_command\>"
+syntax match pfmainRef "$\<postscreen_discard_ehlo_keyword_address_maps\>"
+syntax match pfmainRef "$\<postscreen_discard_ehlo_keywords\>"
+syntax match pfmainRef "$\<postscreen_dnsbl_action\>"
+syntax match pfmainRef "$\<postscreen_dnsbl_reply_map\>"
+syntax match pfmainRef "$\<postscreen_dnsbl_sites\>"
+syntax match pfmainRef "$\<postscreen_dnsbl_threshold\>"
+syntax match pfmainRef "$\<postscreen_dnsbl_timeout\>"
+syntax match pfmainRef "$\<postscreen_dnsbl_ttl\>"
+syntax match pfmainRef "$\<postscreen_dnsbl_whitelist_threshold\>"
+syntax match pfmainRef "$\<postscreen_enforce_tls\>"
+syntax match pfmainRef "$\<postscreen_expansion_filter\>"
+syntax match pfmainRef "$\<postscreen_forbidden_commands\>"
+syntax match pfmainRef "$\<postscreen_greet_action\>"
+syntax match pfmainRef "$\<postscreen_greet_banner\>"
+syntax match pfmainRef "$\<postscreen_greet_ttl\>"
+syntax match pfmainRef "$\<postscreen_greet_wait\>"
+syntax match pfmainRef "$\<postscreen_helo_required\>"
+syntax match pfmainRef "$\<postscreen_non_smtp_command_action\>"
+syntax match pfmainRef "$\<postscreen_non_smtp_command_enable\>"
+syntax match pfmainRef "$\<postscreen_non_smtp_command_ttl\>"
+syntax match pfmainRef "$\<postscreen_pipelining_action\>"
+syntax match pfmainRef "$\<postscreen_pipelining_enable\>"
+syntax match pfmainRef "$\<postscreen_pipelining_ttl\>"
+syntax match pfmainRef "$\<postscreen_post_queue_limit\>"
+syntax match pfmainRef "$\<postscreen_pre_queue_limit\>"
+syntax match pfmainRef "$\<postscreen_reject_footer\>"
+syntax match pfmainRef "$\<postscreen_tls_security_level\>"
+syntax match pfmainRef "$\<postscreen_upstream_proxy_protocol\>"
+syntax match pfmainRef "$\<postscreen_upstream_proxy_timeout\>"
+syntax match pfmainRef "$\<postscreen_use_tls\>"
+syntax match pfmainRef "$\<postscreen_watchdog_timeout\>"
+syntax match pfmainRef "$\<postscreen_whitelist_interfaces\>"
+syntax match pfmainRef "$\<prepend_delivered_header\>"
+syntax match pfmainRef "$\<process_id\>"
+syntax match pfmainRef "$\<process_id_directory\>"
+syntax match pfmainRef "$\<process_name\>"
+syntax match pfmainRef "$\<propagate_unmatched_extensions\>"
+syntax match pfmainRef "$\<proxy_interfaces\>"
+syntax match pfmainRef "$\<proxy_read_maps\>"
+syntax match pfmainRef "$\<proxy_write_maps\>"
+syntax match pfmainRef "$\<proxymap_service_name\>"
+syntax match pfmainRef "$\<proxywrite_service_name\>"
+syntax match pfmainRef "$\<qmgr_clog_warn_time\>"
+syntax match pfmainRef "$\<qmgr_daemon_timeout\>"
+syntax match pfmainRef "$\<qmgr_fudge_factor\>"
+syntax match pfmainRef "$\<qmgr_ipc_timeout\>"
+syntax match pfmainRef "$\<qmgr_message_active_limit\>"
+syntax match pfmainRef "$\<qmgr_message_recipient_limit\>"
+syntax match pfmainRef "$\<qmgr_message_recipient_minimum\>"
+syntax match pfmainRef "$\<qmqpd_authorized_clients\>"
+syntax match pfmainRef "$\<qmqpd_client_port_logging\>"
+syntax match pfmainRef "$\<qmqpd_error_delay\>"
+syntax match pfmainRef "$\<qmqpd_timeout\>"
+syntax match pfmainRef "$\<queue_directory\>"
+syntax match pfmainRef "$\<queue_file_attribute_count_limit\>"
+syntax match pfmainRef "$\<queue_minfree\>"
+syntax match pfmainRef "$\<queue_run_delay\>"
+syntax match pfmainRef "$\<queue_service_name\>"
+syntax match pfmainRef "$\<rbl_reply_maps\>"
+syntax match pfmainRef "$\<readme_directory\>"
+syntax match pfmainRef "$\<receive_override_options\>"
+syntax match pfmainRef "$\<recipient_bcc_maps\>"
+syntax match pfmainRef "$\<recipient_canonical_classes\>"
+syntax match pfmainRef "$\<recipient_canonical_maps\>"
+syntax match pfmainRef "$\<recipient_delimiter\>"
+syntax match pfmainRef "$\<reject_code\>"
+syntax match pfmainRef "$\<reject_tempfail_action\>"
+syntax match pfmainRef "$\<relay_clientcerts\>"
+syntax match pfmainRef "$\<relay_destination_concurrency_limit\>"
+syntax match pfmainRef "$\<relay_destination_recipient_limit\>"
+syntax match pfmainRef "$\<relay_domains\>"
+syntax match pfmainRef "$\<relay_domains_reject_code\>"
+syntax match pfmainRef "$\<relay_recipient_maps\>"
+syntax match pfmainRef "$\<relay_transport\>"
+syntax match pfmainRef "$\<relayhost\>"
+syntax match pfmainRef "$\<relocated_maps\>"
+syntax match pfmainRef "$\<remote_header_rewrite_domain\>"
+syntax match pfmainRef "$\<require_home_directory\>"
+syntax match pfmainRef "$\<reset_owner_alias\>"
+syntax match pfmainRef "$\<resolve_dequoted_address\>"
+syntax match pfmainRef "$\<resolve_null_domain\>"
+syntax match pfmainRef "$\<resolve_numeric_domain\>"
+syntax match pfmainRef "$\<rewrite_service_name\>"
+syntax match pfmainRef "$\<sample_directory\>"
+syntax match pfmainRef "$\<send_cyrus_sasl_authzid\>"
+syntax match pfmainRef "$\<sender_based_routing\>"
+syntax match pfmainRef "$\<sender_bcc_maps\>"
+syntax match pfmainRef "$\<sender_canonical_classes\>"
+syntax match pfmainRef "$\<sender_canonical_maps\>"
+syntax match pfmainRef "$\<sender_dependent_default_transport_maps\>"
+syntax match pfmainRef "$\<sender_dependent_relayhost_maps\>"
+syntax match pfmainRef "$\<sendmail_fix_line_endings\>"
+syntax match pfmainRef "$\<sendmail_path\>"
+syntax match pfmainRef "$\<service_throttle_time\>"
+syntax match pfmainRef "$\<setgid_group\>"
+syntax match pfmainRef "$\<shlib_directory\>"
+syntax match pfmainRef "$\<show_user_unknown_table_name\>"
+syntax match pfmainRef "$\<showq_service_name\>"
+syntax match pfmainRef "$\<smtp_address_preference\>"
+syntax match pfmainRef "$\<smtp_address_verify_target\>"
+syntax match pfmainRef "$\<smtp_always_send_ehlo\>"
+syntax match pfmainRef "$\<smtp_bind_address\>"
+syntax match pfmainRef "$\<smtp_bind_address6\>"
+syntax match pfmainRef "$\<smtp_body_checks\>"
+syntax match pfmainRef "$\<smtp_cname_overrides_servername\>"
+syntax match pfmainRef "$\<smtp_connect_timeout\>"
+syntax match pfmainRef "$\<smtp_connection_cache_destinations\>"
+syntax match pfmainRef "$\<smtp_connection_cache_on_demand\>"
+syntax match pfmainRef "$\<smtp_connection_cache_time_limit\>"
+syntax match pfmainRef "$\<smtp_connection_reuse_count_limit\>"
+syntax match pfmainRef "$\<smtp_connection_reuse_time_limit\>"
+syntax match pfmainRef "$\<smtp_data_done_timeout\>"
+syntax match pfmainRef "$\<smtp_data_init_timeout\>"
+syntax match pfmainRef "$\<smtp_data_xfer_timeout\>"
+syntax match pfmainRef "$\<smtp_defer_if_no_mx_address_found\>"
+syntax match pfmainRef "$\<smtp_delivery_status_filter\>"
+syntax match pfmainRef "$\<smtp_destination_concurrency_limit\>"
+syntax match pfmainRef "$\<smtp_destination_recipient_limit\>"
+syntax match pfmainRef "$\<smtp_discard_ehlo_keyword_address_maps\>"
+syntax match pfmainRef "$\<smtp_discard_ehlo_keywords\>"
+syntax match pfmainRef "$\<smtp_dns_reply_filter\>"
+syntax match pfmainRef "$\<smtp_dns_resolver_options\>"
+syntax match pfmainRef "$\<smtp_dns_support_level\>"
+syntax match pfmainRef "$\<smtp_enforce_tls\>"
+syntax match pfmainRef "$\<smtp_fallback_relay\>"
+syntax match pfmainRef "$\<smtp_generic_maps\>"
+syntax match pfmainRef "$\<smtp_header_checks\>"
+syntax match pfmainRef "$\<smtp_helo_name\>"
+syntax match pfmainRef "$\<smtp_helo_timeout\>"
+syntax match pfmainRef "$\<smtp_host_lookup\>"
+syntax match pfmainRef "$\<smtp_line_length_limit\>"
+syntax match pfmainRef "$\<smtp_mail_timeout\>"
+syntax match pfmainRef "$\<smtp_mime_header_checks\>"
+syntax match pfmainRef "$\<smtp_mx_address_limit\>"
+syntax match pfmainRef "$\<smtp_mx_session_limit\>"
+syntax match pfmainRef "$\<smtp_nested_header_checks\>"
+syntax match pfmainRef "$\<smtp_never_send_ehlo\>"
+syntax match pfmainRef "$\<smtp_per_record_deadline\>"
+syntax match pfmainRef "$\<smtp_pix_workaround_delay_time\>"
+syntax match pfmainRef "$\<smtp_pix_workaround_maps\>"
+syntax match pfmainRef "$\<smtp_pix_workaround_threshold_time\>"
+syntax match pfmainRef "$\<smtp_pix_workarounds\>"
+syntax match pfmainRef "$\<smtp_quit_timeout\>"
+syntax match pfmainRef "$\<smtp_quote_rfc821_envelope\>"
+syntax match pfmainRef "$\<smtp_randomize_addresses\>"
+syntax match pfmainRef "$\<smtp_rcpt_timeout\>"
+syntax match pfmainRef "$\<smtp_reply_filter\>"
+syntax match pfmainRef "$\<smtp_rset_timeout\>"
+syntax match pfmainRef "$\<smtp_sasl_auth_cache_name\>"
+syntax match pfmainRef "$\<smtp_sasl_auth_cache_time\>"
+syntax match pfmainRef "$\<smtp_sasl_auth_enable\>"
+syntax match pfmainRef "$\<smtp_sasl_auth_soft_bounce\>"
+syntax match pfmainRef "$\<smtp_sasl_mechanism_filter\>"
+syntax match pfmainRef "$\<smtp_sasl_password_maps\>"
+syntax match pfmainRef "$\<smtp_sasl_path\>"
+syntax match pfmainRef "$\<smtp_sasl_security_options\>"
+syntax match pfmainRef "$\<smtp_sasl_tls_security_options\>"
+syntax match pfmainRef "$\<smtp_sasl_tls_verified_security_options\>"
+syntax match pfmainRef "$\<smtp_sasl_type\>"
+syntax match pfmainRef "$\<smtp_send_dummy_mail_auth\>"
+syntax match pfmainRef "$\<smtp_send_xforward_command\>"
+syntax match pfmainRef "$\<smtp_sender_dependent_authentication\>"
+syntax match pfmainRef "$\<smtp_skip_4xx_greeting\>"
+syntax match pfmainRef "$\<smtp_skip_5xx_greeting\>"
+syntax match pfmainRef "$\<smtp_skip_quit_response\>"
+syntax match pfmainRef "$\<smtp_starttls_timeout\>"
+syntax match pfmainRef "$\<smtp_tls_CAfile\>"
+syntax match pfmainRef "$\<smtp_tls_CApath\>"
+syntax match pfmainRef "$\<smtp_tls_block_early_mail_reply\>"
+syntax match pfmainRef "$\<smtp_tls_cert_file\>"
+syntax match pfmainRef "$\<smtp_tls_cipherlist\>"
+syntax match pfmainRef "$\<smtp_tls_ciphers\>"
+syntax match pfmainRef "$\<smtp_tls_dcert_file\>"
+syntax match pfmainRef "$\<smtp_tls_dkey_file\>"
+syntax match pfmainRef "$\<smtp_tls_eccert_file\>"
+syntax match pfmainRef "$\<smtp_tls_eckey_file\>"
+syntax match pfmainRef "$\<smtp_tls_enforce_peername\>"
+syntax match pfmainRef "$\<smtp_tls_exclude_ciphers\>"
+syntax match pfmainRef "$\<smtp_tls_fingerprint_cert_match\>"
+syntax match pfmainRef "$\<smtp_tls_fingerprint_digest\>"
+syntax match pfmainRef "$\<smtp_tls_force_insecure_host_tlsa_lookup\>"
+syntax match pfmainRef "$\<smtp_tls_key_file\>"
+syntax match pfmainRef "$\<smtp_tls_loglevel\>"
+syntax match pfmainRef "$\<smtp_tls_mandatory_ciphers\>"
+syntax match pfmainRef "$\<smtp_tls_mandatory_exclude_ciphers\>"
+syntax match pfmainRef "$\<smtp_tls_mandatory_protocols\>"
+syntax match pfmainRef "$\<smtp_tls_note_starttls_offer\>"
+syntax match pfmainRef "$\<smtp_tls_per_site\>"
+syntax match pfmainRef "$\<smtp_tls_policy_maps\>"
+syntax match pfmainRef "$\<smtp_tls_protocols\>"
+syntax match pfmainRef "$\<smtp_tls_scert_verifydepth\>"
+syntax match pfmainRef "$\<smtp_tls_secure_cert_match\>"
+syntax match pfmainRef "$\<smtp_tls_security_level\>"
+syntax match pfmainRef "$\<smtp_tls_session_cache_database\>"
+syntax match pfmainRef "$\<smtp_tls_session_cache_timeout\>"
+syntax match pfmainRef "$\<smtp_tls_trust_anchor_file\>"
+syntax match pfmainRef "$\<smtp_tls_verify_cert_match\>"
+syntax match pfmainRef "$\<smtp_tls_wrappermode\>"
+syntax match pfmainRef "$\<smtp_use_tls\>"
+syntax match pfmainRef "$\<smtp_xforward_timeout\>"
+syntax match pfmainRef "$\<smtpd_authorized_verp_clients\>"
+syntax match pfmainRef "$\<smtpd_authorized_xclient_hosts\>"
+syntax match pfmainRef "$\<smtpd_authorized_xforward_hosts\>"
+syntax match pfmainRef "$\<smtpd_banner\>"
+syntax match pfmainRef "$\<smtpd_client_connection_count_limit\>"
+syntax match pfmainRef "$\<smtpd_client_connection_rate_limit\>"
+syntax match pfmainRef "$\<smtpd_client_event_limit_exceptions\>"
+syntax match pfmainRef "$\<smtpd_client_message_rate_limit\>"
+syntax match pfmainRef "$\<smtpd_client_new_tls_session_rate_limit\>"
+syntax match pfmainRef "$\<smtpd_client_port_logging\>"
+syntax match pfmainRef "$\<smtpd_client_recipient_rate_limit\>"
+syntax match pfmainRef "$\<smtpd_client_restrictions\>"
+syntax match pfmainRef "$\<smtpd_command_filter\>"
+syntax match pfmainRef "$\<smtpd_data_restrictions\>"
+syntax match pfmainRef "$\<smtpd_delay_open_until_valid_rcpt\>"
+syntax match pfmainRef "$\<smtpd_delay_reject\>"
+syntax match pfmainRef "$\<smtpd_discard_ehlo_keyword_address_maps\>"
+syntax match pfmainRef "$\<smtpd_discard_ehlo_keywords\>"
+syntax match pfmainRef "$\<smtpd_dns_reply_filter\>"
+syntax match pfmainRef "$\<smtpd_end_of_data_restrictions\>"
+syntax match pfmainRef "$\<smtpd_enforce_tls\>"
+syntax match pfmainRef "$\<smtpd_error_sleep_time\>"
+syntax match pfmainRef "$\<smtpd_etrn_restrictions\>"
+syntax match pfmainRef "$\<smtpd_expansion_filter\>"
+syntax match pfmainRef "$\<smtpd_forbidden_commands\>"
+syntax match pfmainRef "$\<smtpd_hard_error_limit\>"
+syntax match pfmainRef "$\<smtpd_helo_required\>"
+syntax match pfmainRef "$\<smtpd_helo_restrictions\>"
+syntax match pfmainRef "$\<smtpd_history_flush_threshold\>"
+syntax match pfmainRef "$\<smtpd_junk_command_limit\>"
+syntax match pfmainRef "$\<smtpd_log_access_permit_actions\>"
+syntax match pfmainRef "$\<smtpd_milters\>"
+syntax match pfmainRef "$\<smtpd_noop_commands\>"
+syntax match pfmainRef "$\<smtpd_null_access_lookup_key\>"
+syntax match pfmainRef "$\<smtpd_peername_lookup\>"
+syntax match pfmainRef "$\<smtpd_per_record_deadline\>"
+syntax match pfmainRef "$\<smtpd_policy_service_default_action\>"
+syntax match pfmainRef "$\<smtpd_policy_service_max_idle\>"
+syntax match pfmainRef "$\<smtpd_policy_service_max_ttl\>"
+syntax match pfmainRef "$\<smtpd_policy_service_request_limit\>"
+syntax match pfmainRef "$\<smtpd_policy_service_retry_delay\>"
+syntax match pfmainRef "$\<smtpd_policy_service_timeout\>"
+syntax match pfmainRef "$\<smtpd_policy_service_try_limit\>"
+syntax match pfmainRef "$\<smtpd_proxy_ehlo\>"
+syntax match pfmainRef "$\<smtpd_proxy_filter\>"
+syntax match pfmainRef "$\<smtpd_proxy_options\>"
+syntax match pfmainRef "$\<smtpd_proxy_timeout\>"
+syntax match pfmainRef "$\<smtpd_recipient_limit\>"
+syntax match pfmainRef "$\<smtpd_recipient_overshoot_limit\>"
+syntax match pfmainRef "$\<smtpd_recipient_restrictions\>"
+syntax match pfmainRef "$\<smtpd_reject_footer\>"
+syntax match pfmainRef "$\<smtpd_reject_unlisted_recipient\>"
+syntax match pfmainRef "$\<smtpd_reject_unlisted_sender\>"
+syntax match pfmainRef "$\<smtpd_relay_restrictions\>"
+syntax match pfmainRef "$\<smtpd_restriction_classes\>"
+syntax match pfmainRef "$\<smtpd_sasl_application_name\>"
+syntax match pfmainRef "$\<smtpd_sasl_auth_enable\>"
+syntax match pfmainRef "$\<smtpd_sasl_authenticated_header\>"
+syntax match pfmainRef "$\<smtpd_sasl_exceptions_networks\>"
+syntax match pfmainRef "$\<smtpd_sasl_local_domain\>"
+syntax match pfmainRef "$\<smtpd_sasl_path\>"
+syntax match pfmainRef "$\<smtpd_sasl_security_options\>"
+syntax match pfmainRef "$\<smtpd_sasl_service\>"
+syntax match pfmainRef "$\<smtpd_sasl_tls_security_options\>"
+syntax match pfmainRef "$\<smtpd_sasl_type\>"
+syntax match pfmainRef "$\<smtpd_sender_login_maps\>"
+syntax match pfmainRef "$\<smtpd_sender_restrictions\>"
+syntax match pfmainRef "$\<smtpd_service_name\>"
+syntax match pfmainRef "$\<smtpd_soft_error_limit\>"
+syntax match pfmainRef "$\<smtpd_starttls_timeout\>"
+syntax match pfmainRef "$\<smtpd_timeout\>"
+syntax match pfmainRef "$\<smtpd_tls_CAfile\>"
+syntax match pfmainRef "$\<smtpd_tls_CApath\>"
+syntax match pfmainRef "$\<smtpd_tls_always_issue_session_ids\>"
+syntax match pfmainRef "$\<smtpd_tls_ask_ccert\>"
+syntax match pfmainRef "$\<smtpd_tls_auth_only\>"
+syntax match pfmainRef "$\<smtpd_tls_ccert_verifydepth\>"
+syntax match pfmainRef "$\<smtpd_tls_cert_file\>"
+syntax match pfmainRef "$\<smtpd_tls_cipherlist\>"
+syntax match pfmainRef "$\<smtpd_tls_ciphers\>"
+syntax match pfmainRef "$\<smtpd_tls_dcert_file\>"
+syntax match pfmainRef "$\<smtpd_tls_dh1024_param_file\>"
+syntax match pfmainRef "$\<smtpd_tls_dh512_param_file\>"
+syntax match pfmainRef "$\<smtpd_tls_dkey_file\>"
+syntax match pfmainRef "$\<smtpd_tls_eccert_file\>"
+syntax match pfmainRef "$\<smtpd_tls_eckey_file\>"
+syntax match pfmainRef "$\<smtpd_tls_eecdh_grade\>"
+syntax match pfmainRef "$\<smtpd_tls_exclude_ciphers\>"
+syntax match pfmainRef "$\<smtpd_tls_fingerprint_digest\>"
+syntax match pfmainRef "$\<smtpd_tls_key_file\>"
+syntax match pfmainRef "$\<smtpd_tls_loglevel\>"
+syntax match pfmainRef "$\<smtpd_tls_mandatory_ciphers\>"
+syntax match pfmainRef "$\<smtpd_tls_mandatory_exclude_ciphers\>"
+syntax match pfmainRef "$\<smtpd_tls_mandatory_protocols\>"
+syntax match pfmainRef "$\<smtpd_tls_protocols\>"
+syntax match pfmainRef "$\<smtpd_tls_received_header\>"
+syntax match pfmainRef "$\<smtpd_tls_req_ccert\>"
+syntax match pfmainRef "$\<smtpd_tls_security_level\>"
+syntax match pfmainRef "$\<smtpd_tls_session_cache_database\>"
+syntax match pfmainRef "$\<smtpd_tls_session_cache_timeout\>"
+syntax match pfmainRef "$\<smtpd_tls_wrappermode\>"
+syntax match pfmainRef "$\<smtpd_upstream_proxy_protocol\>"
+syntax match pfmainRef "$\<smtpd_upstream_proxy_timeout\>"
+syntax match pfmainRef "$\<smtpd_use_tls\>"
+syntax match pfmainRef "$\<smtputf8_autodetect_classes\>"
+syntax match pfmainRef "$\<smtputf8_enable\>"
+syntax match pfmainRef "$\<soft_bounce\>"
+syntax match pfmainRef "$\<stale_lock_time\>"
+syntax match pfmainRef "$\<stress\>"
+syntax match pfmainRef "$\<strict_7bit_headers\>"
+syntax match pfmainRef "$\<strict_8bitmime\>"
+syntax match pfmainRef "$\<strict_8bitmime_body\>"
+syntax match pfmainRef "$\<strict_mailbox_ownership\>"
+syntax match pfmainRef "$\<strict_mime_encoding_domain\>"
+syntax match pfmainRef "$\<strict_rfc821_envelopes\>"
+syntax match pfmainRef "$\<strict_smtputf8\>"
+syntax match pfmainRef "$\<sun_mailtool_compatibility\>"
+syntax match pfmainRef "$\<swap_bangpath\>"
+syntax match pfmainRef "$\<syslog_facility\>"
+syntax match pfmainRef "$\<syslog_name\>"
+syntax match pfmainRef "$\<tcp_windowsize\>"
+syntax match pfmainRef "$\<tls_append_default_CA\>"
+syntax match pfmainRef "$\<tls_daemon_random_bytes\>"
+syntax match pfmainRef "$\<tls_dane_digest_agility\>"
+syntax match pfmainRef "$\<tls_dane_digests\>"
+syntax match pfmainRef "$\<tls_dane_trust_anchor_digest_enable\>"
+syntax match pfmainRef "$\<tls_disable_workarounds\>"
+syntax match pfmainRef "$\<tls_eecdh_strong_curve\>"
+syntax match pfmainRef "$\<tls_eecdh_ultra_curve\>"
+syntax match pfmainRef "$\<tls_export_cipherlist\>"
+syntax match pfmainRef "$\<tls_high_cipherlist\>"
+syntax match pfmainRef "$\<tls_legacy_public_key_fingerprints\>"
+syntax match pfmainRef "$\<tls_low_cipherlist\>"
+syntax match pfmainRef "$\<tls_medium_cipherlist\>"
+syntax match pfmainRef "$\<tls_null_cipherlist\>"
+syntax match pfmainRef "$\<tls_preempt_cipherlist\>"
+syntax match pfmainRef "$\<tls_random_bytes\>"
+syntax match pfmainRef "$\<tls_random_exchange_name\>"
+syntax match pfmainRef "$\<tls_random_prng_update_period\>"
+syntax match pfmainRef "$\<tls_random_reseed_period\>"
+syntax match pfmainRef "$\<tls_random_source\>"
+syntax match pfmainRef "$\<tls_session_ticket_cipher\>"
+syntax match pfmainRef "$\<tls_ssl_options\>"
+syntax match pfmainRef "$\<tls_wildcard_matches_multiple_labels\>"
+syntax match pfmainRef "$\<tlsmgr_service_name\>"
+syntax match pfmainRef "$\<tlsproxy_enforce_tls\>"
+syntax match pfmainRef "$\<tlsproxy_service_name\>"
+syntax match pfmainRef "$\<tlsproxy_tls_CAfile\>"
+syntax match pfmainRef "$\<tlsproxy_tls_CApath\>"
+syntax match pfmainRef "$\<tlsproxy_tls_always_issue_session_ids\>"
+syntax match pfmainRef "$\<tlsproxy_tls_ask_ccert\>"
+syntax match pfmainRef "$\<tlsproxy_tls_ccert_verifydepth\>"
+syntax match pfmainRef "$\<tlsproxy_tls_cert_file\>"
+syntax match pfmainRef "$\<tlsproxy_tls_ciphers\>"
+syntax match pfmainRef "$\<tlsproxy_tls_dcert_file\>"
+syntax match pfmainRef "$\<tlsproxy_tls_dh1024_param_file\>"
+syntax match pfmainRef "$\<tlsproxy_tls_dh512_param_file\>"
+syntax match pfmainRef "$\<tlsproxy_tls_dkey_file\>"
+syntax match pfmainRef "$\<tlsproxy_tls_eccert_file\>"
+syntax match pfmainRef "$\<tlsproxy_tls_eckey_file\>"
+syntax match pfmainRef "$\<tlsproxy_tls_eecdh_grade\>"
+syntax match pfmainRef "$\<tlsproxy_tls_exclude_ciphers\>"
+syntax match pfmainRef "$\<tlsproxy_tls_fingerprint_digest\>"
+syntax match pfmainRef "$\<tlsproxy_tls_key_file\>"
+syntax match pfmainRef "$\<tlsproxy_tls_loglevel\>"
+syntax match pfmainRef "$\<tlsproxy_tls_mandatory_ciphers\>"
+syntax match pfmainRef "$\<tlsproxy_tls_mandatory_exclude_ciphers\>"
+syntax match pfmainRef "$\<tlsproxy_tls_mandatory_protocols\>"
+syntax match pfmainRef "$\<tlsproxy_tls_protocols\>"
+syntax match pfmainRef "$\<tlsproxy_tls_req_ccert\>"
+syntax match pfmainRef "$\<tlsproxy_tls_security_level\>"
+syntax match pfmainRef "$\<tlsproxy_tls_session_cache_timeout\>"
+syntax match pfmainRef "$\<tlsproxy_use_tls\>"
+syntax match pfmainRef "$\<tlsproxy_watchdog_timeout\>"
+syntax match pfmainRef "$\<trace_service_name\>"
+syntax match pfmainRef "$\<transport_delivery_slot_cost\>"
+syntax match pfmainRef "$\<transport_delivery_slot_discount\>"
+syntax match pfmainRef "$\<transport_delivery_slot_loan\>"
+syntax match pfmainRef "$\<transport_destination_concurrency_failed_cohort_limit\>"
+syntax match pfmainRef "$\<transport_destination_concurrency_limit\>"
+syntax match pfmainRef "$\<transport_destination_concurrency_negative_feedback\>"
+syntax match pfmainRef "$\<transport_destination_concurrency_positive_feedback\>"
+syntax match pfmainRef "$\<transport_destination_rate_delay\>"
+syntax match pfmainRef "$\<transport_destination_recipient_limit\>"
+syntax match pfmainRef "$\<transport_extra_recipient_limit\>"
+syntax match pfmainRef "$\<transport_initial_destination_concurrency\>"
+syntax match pfmainRef "$\<transport_maps\>"
+syntax match pfmainRef "$\<transport_minimum_delivery_slots\>"
+syntax match pfmainRef "$\<transport_recipient_limit\>"
+syntax match pfmainRef "$\<transport_recipient_refill_delay\>"
+syntax match pfmainRef "$\<transport_recipient_refill_limit\>"
+syntax match pfmainRef "$\<transport_retry_time\>"
+syntax match pfmainRef "$\<transport_time_limit\>"
+syntax match pfmainRef "$\<trigger_timeout\>"
+syntax match pfmainRef "$\<undisclosed_recipients_header\>"
+syntax match pfmainRef "$\<unknown_address_reject_code\>"
+syntax match pfmainRef "$\<unknown_address_tempfail_action\>"
+syntax match pfmainRef "$\<unknown_client_reject_code\>"
+syntax match pfmainRef "$\<unknown_helo_hostname_tempfail_action\>"
+syntax match pfmainRef "$\<unknown_hostname_reject_code\>"
+syntax match pfmainRef "$\<unknown_local_recipient_reject_code\>"
+syntax match pfmainRef "$\<unknown_relay_recipient_reject_code\>"
+syntax match pfmainRef "$\<unknown_virtual_alias_reject_code\>"
+syntax match pfmainRef "$\<unknown_virtual_mailbox_reject_code\>"
+syntax match pfmainRef "$\<unverified_recipient_defer_code\>"
+syntax match pfmainRef "$\<unverified_recipient_reject_code\>"
+syntax match pfmainRef "$\<unverified_recipient_reject_reason\>"
+syntax match pfmainRef "$\<unverified_recipient_tempfail_action\>"
+syntax match pfmainRef "$\<unverified_sender_defer_code\>"
+syntax match pfmainRef "$\<unverified_sender_reject_code\>"
+syntax match pfmainRef "$\<unverified_sender_reject_reason\>"
+syntax match pfmainRef "$\<unverified_sender_tempfail_action\>"
+syntax match pfmainRef "$\<verp_delimiter_filter\>"
+syntax match pfmainRef "$\<virtual_alias_address_length_limit\>"
+syntax match pfmainRef "$\<virtual_alias_domains\>"
+syntax match pfmainRef "$\<virtual_alias_expansion_limit\>"
+syntax match pfmainRef "$\<virtual_alias_maps\>"
+syntax match pfmainRef "$\<virtual_alias_recursion_limit\>"
+syntax match pfmainRef "$\<virtual_delivery_status_filter\>"
+syntax match pfmainRef "$\<virtual_destination_concurrency_limit\>"
+syntax match pfmainRef "$\<virtual_destination_recipient_limit\>"
+syntax match pfmainRef "$\<virtual_gid_maps\>"
+syntax match pfmainRef "$\<virtual_mailbox_base\>"
+syntax match pfmainRef "$\<virtual_mailbox_domains\>"
+syntax match pfmainRef "$\<virtual_mailbox_limit\>"
+syntax match pfmainRef "$\<virtual_mailbox_lock\>"
+syntax match pfmainRef "$\<virtual_mailbox_maps\>"
+syntax match pfmainRef "$\<virtual_maps\>"
+syntax match pfmainRef "$\<virtual_minimum_uid\>"
+syntax match pfmainRef "$\<virtual_transport\>"
+syntax match pfmainRef "$\<virtual_uid_maps\>"
+
+syntax keyword pfmainWord accept
+syntax keyword pfmainWord all
+syntax keyword pfmainWord always
+syntax keyword pfmainWord check_address_map
+syntax keyword pfmainWord check_ccert_access
+syntax keyword pfmainWord check_client_a_access
+syntax keyword pfmainWord check_client_access
+syntax keyword pfmainWord check_client_mx_access
+syntax keyword pfmainWord check_client_ns_access
+syntax keyword pfmainWord check_etrn_access
+syntax keyword pfmainWord check_helo_a_access
+syntax keyword pfmainWord check_helo_access
+syntax keyword pfmainWord check_helo_mx_access
+syntax keyword pfmainWord check_helo_ns_access
+syntax keyword pfmainWord check_policy_service
+syntax keyword pfmainWord check_recipient_a_access
+syntax keyword pfmainWord check_recipient_access
+syntax keyword pfmainWord check_recipient_maps
+syntax keyword pfmainWord check_recipient_mx_access
+syntax keyword pfmainWord check_recipient_ns_access
+syntax keyword pfmainWord check_relay_domains
+syntax keyword pfmainWord check_reverse_client_hostname_a_access
+syntax keyword pfmainWord check_reverse_client_hostname_access
+syntax keyword pfmainWord check_reverse_client_hostname_mx_access
+syntax keyword pfmainWord check_reverse_client_hostname_ns_access
+syntax keyword pfmainWord check_sasl_access
+syntax keyword pfmainWord check_sender_a_access
+syntax keyword pfmainWord check_sender_access
+syntax keyword pfmainWord check_sender_mx_access
+syntax keyword pfmainWord check_sender_ns_access
+syntax keyword pfmainWord class
+syntax keyword pfmainWord client_address
+syntax keyword pfmainWord client_port
+syntax keyword pfmainWord dane
+syntax keyword pfmainWord dane-only
+syntax keyword pfmainWord defer
+syntax keyword pfmainWord defer_if_permit
+syntax keyword pfmainWord defer_if_reject
+syntax keyword pfmainWord defer_unauth_destination
+syntax keyword pfmainWord disabled
+syntax keyword pfmainWord dns
+syntax keyword pfmainWord dnssec
+syntax keyword pfmainWord drop
+syntax keyword pfmainWord dunno
+syntax keyword pfmainWord enabled
+syntax keyword pfmainWord encrypt
+syntax keyword pfmainWord enforce
+syntax keyword pfmainWord envelope_recipient
+syntax keyword pfmainWord envelope_sender
+syntax keyword pfmainWord export
+syntax keyword pfmainWord fingerprint
+syntax keyword pfmainWord header_recipient
+syntax keyword pfmainWord header_sender
+syntax keyword pfmainWord high
+syntax keyword pfmainWord host
+syntax keyword pfmainWord ignore
+syntax keyword pfmainWord ipv4
+syntax keyword pfmainWord ipv6
+syntax keyword pfmainWord localtime
+syntax keyword pfmainWord low
+syntax keyword pfmainWord may
+syntax keyword pfmainWord maybe
+syntax keyword pfmainWord medium
+syntax keyword pfmainWord native
+syntax keyword pfmainWord never
+syntax keyword pfmainWord no_address_mappings
+syntax keyword pfmainWord no_header_body_checks
+syntax keyword pfmainWord no_header_reply
+syntax keyword pfmainWord no_milters
+syntax keyword pfmainWord no_unknown_recipient_checks
+syntax keyword pfmainWord none
+syntax keyword pfmainWord null
+syntax keyword pfmainWord off
+syntax keyword pfmainWord on
+syntax keyword pfmainWord permit
+syntax keyword pfmainWord permit_auth_destination
+syntax keyword pfmainWord permit_dnswl_client
+syntax keyword pfmainWord permit_inet_interfaces
+syntax keyword pfmainWord permit_mx_backup
+syntax keyword pfmainWord permit_mynetworks
+syntax keyword pfmainWord permit_naked_ip_address
+syntax keyword pfmainWord permit_rhswl_client
+syntax keyword pfmainWord permit_sasl_authenticated
+syntax keyword pfmainWord permit_tls_all_clientcerts
+syntax keyword pfmainWord permit_tls_clientcerts
+syntax keyword pfmainWord quarantine
+syntax keyword pfmainWord reject
+syntax keyword pfmainWord reject_authenticated_sender_login_mismatch
+syntax keyword pfmainWord reject_invalid_helo_hostname
+syntax keyword pfmainWord reject_invalid_hostname
+syntax keyword pfmainWord reject_known_sender_login_mismatch
+syntax keyword pfmainWord reject_maps_rbl
+syntax keyword pfmainWord reject_multi_recipient_bounce
+syntax keyword pfmainWord reject_non_fqdn_helo_hostname
+syntax keyword pfmainWord reject_non_fqdn_hostname
+syntax keyword pfmainWord reject_non_fqdn_recipient
+syntax keyword pfmainWord reject_non_fqdn_sender
+syntax keyword pfmainWord reject_plaintext_session
+syntax keyword pfmainWord reject_rbl
+syntax keyword pfmainWord reject_rbl_client
+syntax keyword pfmainWord reject_rhsbl_client
+syntax keyword pfmainWord reject_rhsbl_helo
+syntax keyword pfmainWord reject_rhsbl_recipient
+syntax keyword pfmainWord reject_rhsbl_reverse_client
+syntax keyword pfmainWord reject_rhsbl_sender
+syntax keyword pfmainWord reject_sender_login_mismatch
+syntax keyword pfmainWord reject_unauth_destination
+syntax keyword pfmainWord reject_unauth_pipelining
+syntax keyword pfmainWord reject_unauthenticated_sender_login_mismatch
+syntax keyword pfmainWord reject_unknown_address
+syntax keyword pfmainWord reject_unknown_client
+syntax keyword pfmainWord reject_unknown_client_hostname
+syntax keyword pfmainWord reject_unknown_forward_client_hostname
+syntax keyword pfmainWord reject_unknown_helo_hostname
+syntax keyword pfmainWord reject_unknown_hostname
+syntax keyword pfmainWord reject_unknown_recipient_domain
+syntax keyword pfmainWord reject_unknown_reverse_client_hostname
+syntax keyword pfmainWord reject_unknown_sender_domain
+syntax keyword pfmainWord reject_unlisted_recipient
+syntax keyword pfmainWord reject_unlisted_sender
+syntax keyword pfmainWord reject_unverified_recipient
+syntax keyword pfmainWord reject_unverified_sender
+syntax keyword pfmainWord secure
+syntax keyword pfmainWord server_name
+syntax keyword pfmainWord sleep
+syntax keyword pfmainWord smtpd_access_maps
+syntax keyword pfmainWord speed_adjust
+syntax keyword pfmainWord strong
+syntax keyword pfmainWord subnet
+syntax keyword pfmainWord tempfail
+syntax keyword pfmainWord ultra
+syntax keyword pfmainWord warn_if_reject
+syntax keyword pfmainWord CRYPTOPRO_TLSEXT_BUG
+syntax keyword pfmainWord DONT_INSERT_EMPTY_FRAGMENTS
+syntax keyword pfmainWord LEGACY_SERVER_CONNECT
+syntax keyword pfmainWord MICROSOFT_BIG_SSLV3_BUFFER
+syntax keyword pfmainWord MICROSOFT_SESS_ID_BUG
+syntax keyword pfmainWord MSIE_SSLV2_RSA_PADDING
+syntax keyword pfmainWord NETSCAPE_CHALLENGE_BUG
+syntax keyword pfmainWord NETSCAPE_REUSE_CIPHER_CHANGE_BUG
+syntax keyword pfmainWord SSLEAY_080_CLIENT_DH_BUG
+syntax keyword pfmainWord SSLREF2_REUSE_CERT_TYPE_BUG
+syntax keyword pfmainWord TLS_BLOCK_PADDING_BUG
+syntax keyword pfmainWord TLS_D5_BUG
+syntax keyword pfmainWord TLS_ROLLBACK_BUG
+
+syntax keyword pfmainDict btree cidr environ hash nis pcre proxy regexp sdbm static tcp unix
+syntax keyword pfmainQueueDir incoming active deferred corrupt hold
+syntax keyword pfmainTransport smtp lmtp unix local relay uucp virtual
+syntax keyword pfmainLock fcntl flock dotlock
+syntax keyword pfmainAnswer yes no
+
+syntax match pfmainComment "#.*$"
+syntax match pfmainNumber "\<\d\+\>"
+syntax match pfmainTime "\<\d\+[hmsd]\>"
+syntax match pfmainIP "\<\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\>"
+syntax match pfmainVariable "\$\w\+" contains=pfmainRef
+
+syntax match pfmainSpecial "\<alias\>"
+syntax match pfmainSpecial "\<canonical\>"
+syntax match pfmainSpecial "\<forward\>"
+syntax match pfmainSpecial "\<generic\>"
+syntax match pfmainSpecial "\<include\>"
+syntax match pfmainSpecial "\<virtual\>"
+
+syntax match pfmainSpecial "\<delay_dotcrlf\>"
+syntax match pfmainSpecial "\<disable_esmtp\>"
+
+syntax match pfmainSpecial "\<res_defnames\>"
+syntax match pfmainSpecial "\<res_dnsrch\>"
+
+syntax match pfmainSpecial "\<command\>"
+syntax match pfmainSpecial "\<file\>"
+
+syntax match pfmainSpecial "\<forward_secrecy\>"
+syntax match pfmainSpecial "\<mutual_auth\>"
+syntax match pfmainSpecial "\<noactive\>"
+syntax match pfmainSpecial "\<noanonymous\>"
+syntax match pfmainSpecial "\<nodictionary\>"
+syntax match pfmainSpecial "\<noplaintext\>"
+
+syntax match pfmainSpecial "\<bounce\>"
+syntax match pfmainSpecial "\<2bounce\>"
+syntax match pfmainSpecial "\<data\>"
+syntax match pfmainSpecial "\<delay\>"
+syntax match pfmainSpecial "\<policy\>"
+syntax match pfmainSpecial "\<protocol\>"
+syntax match pfmainSpecial "\<resource\>"
+syntax match pfmainSpecial "\<software\>"
+
+syntax match pfmainSpecial "\<cleanup\>"
+syntax match pfmainSpecial "\<cyrus\>"
+syntax match pfmainSpecial "\<error\>"
+syntax match pfmainSpecial "\<flush\>"
+syntax match pfmainSpecial "\<notify\>"
+syntax match pfmainSpecial "\<pickup\>"
+syntax match pfmainSpecial "\<postdrop\>"
+syntax match pfmainSpecial "\<qmgr\>"
+syntax match pfmainSpecial "\<qmqpd\>"
+syntax match pfmainSpecial "\<rewrite\>"
+syntax match pfmainSpecial "\<scache\>"
+syntax match pfmainSpecial "\<sendmail\>"
+syntax match pfmainSpecial "\<showq\>"
+syntax match pfmainSpecial "\<smtpd\>"
+syntax match pfmainSpecial "\<trace\>"
+syntax match pfmainSpecial "\<verify\>"
+
+
+hi def link pfmainConf Statement
+hi def link pfmainRef PreProc
+hi def link pfmainWord identifier
+
+hi def link pfmainDict Type
+hi def link pfmainQueueDir Constant
+hi def link pfmainTransport Constant
+hi def link pfmainLock Constant
+hi def link pfmainAnswer Constant
+
+hi def link pfmainComment Comment
+hi def link pfmainNumber Number
+hi def link pfmainTime Number
+hi def link pfmainIP Number
+hi def link pfmainVariable Error
+hi def link pfmainSpecial Special
+
+
+let b:current_syntax = "pfmain"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/php.vim b/runtime/syntax/php.vim
new file mode 100644
index 0000000..80662d6
--- /dev/null
+++ b/runtime/syntax/php.vim
@@ -0,0 +1,978 @@
+" Vim syntax file
+" Language: php PHP 3/4/5/7/8
+" Maintainer: Tyson Andre <tysonandre775@hotmail.com>
+" Last Change: Sep 18, 2021
+" URL: https://github.com/TysonAndre/php-vim-syntax
+" Former Maintainers:
+" Jason Woofenden <jason@jasonwoof.com>
+" Peter Hodge <toomuchphp-vim@yahoo.com>
+" Debian VIM Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+"
+" Note: If you are using a colour terminal with dark background, you will
+" probably find the 'elflord' colorscheme is much better for PHP's syntax
+" than the default colourscheme, because elflord's colours will better
+" highlight the break-points (Statements) in your code.
+"
+" Note: This embeds a modified copy of the html.vim with (mostly) different symbols,
+" in order to implement php_htmlInStrings=2 can work as expected and correctly parse
+" `<?php $phpStartTag = '<?php';`.
+"
+" Credits for the original version of html.vim prior to modifications
+"
+" Previous Maintainer Jorge Maldonado Ventura <jorgesumle@freakspot.net>
+" Previous Maintainer Claudio Fleiner <claudio@fleiner.com>
+" Repository https://notabug.org/jorgesumle/vim-html-syntax
+" Last Change 2021 Mar 02
+" Included patch #7900 to fix comments
+" Included patch #7916 to fix a few more things
+"
+" Options:
+" Set to anything to enable:
+" php_sql_query SQL syntax highlighting inside strings
+" php_htmlInStrings HTML syntax highlighting inside strings
+"
+" By setting this to 2, this will use a local copy of
+" HTML syntax highlighting instead of the official
+" HTML syntax highlighting, and properly highlight
+" `<?php $startTag = '<?php';`.
+" This may become the new default in the future.
+"
+" By setting this to 3 (or any unrecognized value),
+" this will use the official installed top level html syntax highlighting rules.
+" php_baselib highlighting baselib functions
+" php_asp_tags highlighting ASP-style short tags
+" php_parent_error_close highlighting parent error ] or )
+" php_parent_error_open skipping an php end tag, if there exists
+" an open ( or [ without a closing one
+" php_oldStyle use old colorstyle
+" php_noShortTags don't sync <? ?> as php
+" Set to a specific value:
+" php_folding = 1 fold classes and functions
+" php_folding = 2 fold all { } regions
+" php_sync_method = x where x is an integer:
+" -1 sync by search ( default )
+" >0 sync at least x lines backwards
+" 0 sync from start
+" Set to 0 to _disable_: (Added by Peter Hodge On June 9, 2006)
+" php_special_functions = 0 highlight functions with abnormal behaviour
+" php_alt_comparisons = 0 comparison operators in an alternate colour
+" php_alt_assignByReference = 0 '= &' in an alternate colour
+"
+"
+" Note:
+" Setting php_folding=1 will match a closing } by comparing the indent
+" before the class or function keyword with the indent of a matching }.
+" Setting php_folding=2 will match all of pairs of {,} ( see known
+" bugs ii )
+
+" Known Bugs:
+" - setting php_parent_error_close on and php_parent_error_open off
+" has these two leaks:
+" i) A closing ) or ] inside a string match to the last open ( or [
+" before the string, when the the closing ) or ] is on the same line
+" where the string started. In this case a following ) or ] after
+" the string would be highlighted as an error, what is incorrect.
+" ii) Same problem if you are setting php_folding = 2 with a closing
+" } inside an string on the first line of this string.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'php'
+endif
+
+" Start of copy of html for embedding in strings with {{{
+" This is a clone of https://notabug.org/jorgesumle/vim-html-syntax
+" from 2021 Mar 02 with changed symbols and modifications to rules. See the Note in the file header.
+"
+" The default behavior of php_htmlInStrings causes a bug
+" when you're working with code that contains the string literal `'<?php'`.
+" E.g. code that reads php files or generates the contents of php files or
+" generates snippets to `eval()`.
+"
+" When php_htmlInStrings was set to any value,
+" it would cause the html syntax rules to be embedded inside of the string
+" contents.
+"
+" However, php.vim extends html.vim by allowing the php start tag to be
+" included, meaning that this is parsed as `<?php';`, i.e. the start of a
+" new string literal.
+"
+" Work around that by using a different set of rules that don't allow
+" embedding php in most places (phpInnerHtmlPreProc).
+"
+" The default behavior may be changed to this in the future for constants other
+" than 2 or 3 if there are no issues.
+"
+" Many, but not all syntax rules were changed from html* to phpInnerHtml*
+if exists("php_htmlInStrings") && php_htmlInStrings==2
+ " mark illegal characters
+ syn match phpInnerHtmlError contained "[<>&]"
+
+ " tags
+ syn region phpInnerHtmlString contained start=+"+ end=+"+ contains=phpInnerHtmlSpecialChar,javaScriptExpression,@phpInnerHtmlPreproc
+ syn region phpInnerHtmlString contained start=+'+ end=+'+ contains=phpInnerHtmlSpecialChar,javaScriptExpression,@phpInnerHtmlPreproc
+ syn match phpInnerHtmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=javaScriptExpression,@phpInnerHtmlPreproc
+ syn region phpInnerHtmlEndTag contained start=+</+ end=+>+ contains=phpInnerHtmlTagN,phpInnerHtmlTagError
+ syn region phpInnerHtmlTag contained start=+<[^/]+ end=+>+ fold contains=phpInnerHtmlTagN,phpInnerHtmlString,htmlArg,phpInnerHtmlValue,phpInnerHtmlTagError,phpInnerHtmlEvent,phpInnerHtmlCssDefinition,@phpInnerHtmlPreproc,@phpInnerHtmlArgCluster
+ syn match phpInnerHtmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@phpInnerHtmlTagNameCluster
+ syn match phpInnerHtmlTagN contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@phpInnerHtmlTagNameCluster
+ syn match phpInnerHtmlTagError contained "[^>]<"ms=s+1
+
+
+ " special characters
+ syn match phpInnerHtmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};"
+
+ " Comments (the real ones or the old netscape ones)
+ if exists("html_wrong_comments")
+ syn region phpInnerHtmlComment start=+<!--+ end=+--\s*>+ contains=@Spell
+ else
+ " The HTML 5.2 syntax 8.2.4.41: bogus comment is parser error; browser skips until next &gt
+ syn region phpInnerHtmlComment start=+<!+ end=+>+ contains=phpInnerHtmlCommentError keepend
+ " Idem 8.2.4.42,51: Comment starts with <!-- and ends with -->
+ " Idem 8.2.4.43,44: Except <!--> and <!---> are parser errors
+ " Idem 8.2.4.52: dash-dash-bang (--!>) is error ignored by parser, also closes comment
+ syn region phpInnerHtmlComment matchgroup=phpInnerHtmlComment start=+<!--\%(-\?>\)\@!+ end=+--!\?>+ contains=phpInnerHtmlCommentNested,@phpInnerHtmlPreProc,@Spell keepend
+ " Idem 8.2.4.49: nested comment is parser error, except <!--> is all right
+ syn match phpInnerHtmlCommentNested contained "<!-->\@!"
+ syn match phpInnerHtmlCommentError contained "[^><!]"
+ endif
+ syn region phpInnerHtmlComment start=+<!DOCTYPE+ end=+>+ keepend
+
+ " server-parsed commands
+ syn region phpInnerHtmlPreProc start=+<!--#+ end=+-->+ contains=phpInnerHtmlPreStmt,phpInnerHtmlPreError,phpInnerHtmlPreAttr
+ syn match phpInnerHtmlPreStmt contained "<!--#\(config\|echo\|exec\|fsize\|flastmod\|include\|printenv\|set\|if\|elif\|else\|endif\|geoguide\)\>"
+ syn match phpInnerHtmlPreError contained "<!--#\S*"ms=s+4
+ syn match phpInnerHtmlPreAttr contained "\w\+=[^"]\S\+" contains=phpInnerHtmlPreProcAttrError,phpInnerHtmlPreProcAttrName
+ syn region phpInnerHtmlPreAttr contained start=+\w\+="+ skip=+\\\\\|\\"+ end=+"+ contains=phpInnerHtmlPreProcAttrName keepend
+ syn match phpInnerHtmlPreProcAttrError contained "\w\+="he=e-1
+ syn match phpInnerHtmlPreProcAttrName contained "\(expr\|errmsg\|sizefmt\|timefmt\|var\|cgi\|cmd\|file\|virtual\|value\)="he=e-1
+
+ if !exists("html_no_rendering")
+ " rendering
+ syn cluster phpInnerHtmlTop contains=@Spell,phpInnerHtmlTag,phpInnerHtmlEndTag,phpInnerHtmlSpecialChar,phpInnerHtmlPreProc,phpInnerHtmlComment,phpInnerHtmlLink,javaScript,@phpInnerHtmlPreproc
+
+ syn region phpInnerHtmlStrike start="<del\>" end="</del\_s*>"me=s-1 contains=@phpInnerHtmlTop
+ syn region phpInnerHtmlStrike start="<strike\>" end="</strike\_s*>"me=s-1 contains=@phpInnerHtmlTop
+
+ syn region phpInnerHtmlBold start="<b\>" end="</b\_s*>"me=s-1 contains=@phpInnerHtmlTop,phpInnerHtmlBoldUnderline,phpInnerHtmlBoldItalic
+ syn region phpInnerHtmlBold start="<strong\>" end="</strong\_s*>"me=s-1 contains=@phpInnerHtmlTop,phpInnerHtmlBoldUnderline,phpInnerHtmlBoldItalic
+ syn region phpInnerHtmlBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@phpInnerHtmlTop,phpInnerHtmlBoldUnderlineItalic
+ syn region phpInnerHtmlBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@phpInnerHtmlTop,phpInnerHtmlBoldItalicUnderline
+ syn region phpInnerHtmlBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@phpInnerHtmlTop,phpInnerHtmlBoldItalicUnderline
+ syn region phpInnerHtmlBoldUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@phpInnerHtmlTop
+ syn region phpInnerHtmlBoldUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@phpInnerHtmlTop
+ syn region phpInnerHtmlBoldItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@phpInnerHtmlTop,phpInnerHtmlBoldUnderlineItalic
+
+ syn region phpInnerHtmlUnderline start="<u\>" end="</u\_s*>"me=s-1 contains=@phpInnerHtmlTop,phpInnerHtmlUnderlineBold,phpInnerHtmlUnderlineItalic
+ syn region phpInnerHtmlUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@phpInnerHtmlTop,phpInnerHtmlUnderlineBoldItalic
+ syn region phpInnerHtmlUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@phpInnerHtmlTop,phpInnerHtmlUnderlineBoldItalic
+ syn region phpInnerHtmlUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@phpInnerHtmlTop,phpInnerHtmlUnderlineItalicBold
+ syn region phpInnerHtmlUnderlineItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@phpInnerHtmlTop,phpInnerHtmlUnderlineItalicBold
+ syn region phpInnerHtmlUnderlineItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@phpInnerHtmlTop
+ syn region phpInnerHtmlUnderlineItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@phpInnerHtmlTop
+ syn region phpInnerHtmlUnderlineBoldItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=@phpInnerHtmlTop
+ syn region phpInnerHtmlUnderlineBoldItalic contained start="<em\>" end="</em\_s*>"me=s-1 contains=@phpInnerHtmlTop
+
+ syn region phpInnerHtmlItalic start="<i\>" end="</i\_s*>"me=s-1 contains=@phpInnerHtmlTop,phpInnerHtmlItalicBold,phpInnerHtmlItalicUnderline
+ syn region phpInnerHtmlItalic start="<em\>" end="</em\_s*>"me=s-1 contains=@phpInnerHtmlTop
+ syn region phpInnerHtmlItalicBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@phpInnerHtmlTop,phpInnerHtmlItalicBoldUnderline
+ syn region phpInnerHtmlItalicBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@phpInnerHtmlTop,phpInnerHtmlItalicBoldUnderline
+ syn region phpInnerHtmlItalicBoldUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@phpInnerHtmlTop
+ syn region phpInnerHtmlItalicUnderline contained start="<u\>" end="</u\_s*>"me=s-1 contains=@phpInnerHtmlTop,phpInnerHtmlItalicUnderlineBold
+ syn region phpInnerHtmlItalicUnderlineBold contained start="<b\>" end="</b\_s*>"me=s-1 contains=@phpInnerHtmlTop
+ syn region phpInnerHtmlItalicUnderlineBold contained start="<strong\>" end="</strong\_s*>"me=s-1 contains=@phpInnerHtmlTop
+
+ syn match phpInnerHtmlLeadingSpace "^\s\+" contained
+ syn region phpInnerHtmlLink start="<a\>\_[^>]*\<href\>" end="</a\_s*>"me=s-1 contains=@Spell,phpInnerHtmlTag,phpInnerHtmlEndTag,phpInnerHtmlSpecialChar,phpInnerHtmlPreProc,phpInnerHtmlComment,phpInnerHtmlLeadingSpace,phpInnerJavaScript,@phpInnerHtmlPreproc
+ syn region phpInnerHtmlH1 start="<h1\>" end="</h1\_s*>"me=s-1 contains=@phpInnerHtmlTop
+ syn region phpInnerHtmlH2 start="<h2\>" end="</h2\_s*>"me=s-1 contains=@phpInnerHtmlTop
+ syn region phpInnerHtmlH3 start="<h3\>" end="</h3\_s*>"me=s-1 contains=@phpInnerHtmlTop
+ syn region phpInnerHtmlH4 start="<h4\>" end="</h4\_s*>"me=s-1 contains=@phpInnerHtmlTop
+ syn region phpInnerHtmlH5 start="<h5\>" end="</h5\_s*>"me=s-1 contains=@phpInnerHtmlTop
+ syn region phpInnerHtmlH6 start="<h6\>" end="</h6\_s*>"me=s-1 contains=@phpInnerHtmlTop
+ syn region phpInnerHtmlHead start="<head\>" end="</head\_s*>"me=s-1 end="<body\>"me=s-1 end="<h[1-6]\>"me=s-1 contains=phpInnerHtmlTag,phpInnerHtmlEndTag,phpInnerHtmlSpecialChar,phpInnerHtmlPreProc,phpInnerHtmlComment,phpInnerHtmlLink,phpInnerHtmlTitle,phpInnerJavaScript,phpInnerCssStyle,@phpInnerHtmlPreproc
+ syn region phpInnerHtmlTitle start="<title\>" end="</title\_s*>"me=s-1 contains=phpInnerHtmlTag,phpInnerHtmlEndTag,phpInnerHtmlSpecialChar,phpInnerHtmlPreProc,phpInnerHtmlComment,phpInnerJavaScript,@phpInnerHtmlPreproc
+ endif
+
+ if main_syntax != 'java' || exists("javascript")
+ " JAVA SCRIPT
+ " For example, $phpVar = '<img onload="foo()" />';
+ syn include @phpInnerHtmlJavaScript syntax/javascript.vim
+ unlet b:current_syntax
+ syn region phpInnerHtmlScriptTag contained start=+<script+ end=+>+ fold contains=phpInnerHtmlTagN,phpInnerHtmlString,phpInnerHtmlArg,phpInnerHtmlValue,phpInnerHtmlTagError,phpInnerHtmlEvent
+ hi def link phpInnerHtmlScriptTag phpInnerHtmlTag
+
+ " phpInnerHtml events (i.e. arguments that include phpInnerJavascript commands)
+ if exists("html_extended_events")
+ syn region phpInnerHtmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ contains=phpInnerHtmlEventSQ
+ syn region phpInnerHtmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ contains=phpInnerHtmlEventDQ
+ else
+ syn region phpInnerHtmlEvent contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ keepend contains=phpInnerHtmlEventSQ
+ syn region phpInnerHtmlEvent contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ keepend contains=phpInnerHtmlEventDQ
+ endif
+ syn region phpInnerHtmlEventSQ contained start=+'+ms=s+1 end=+'+me=s-1 contains=@phpInnerHtmlJavaScript
+ syn region phpInnerHtmlEventDQ contained start=+"+ms=s+1 end=+"+me=s-1 contains=@phpInnerHtmlJavaScript
+ hi def link phpInnerHtmlEventSQ phpInnerHtmlEvent
+ hi def link phpInnerHtmlEventDQ phpInnerHtmlEvent
+
+ " a phpInnerJavascript expression is used as an arg value
+ " syn region phpInnerJavaScriptExpression contained start=+&{+ keepend end=+};+ contains=@phpInnerHtmlJavaScript,@phpInnerHtmlPreproc
+ endif
+
+ syn cluster phpInnerHtmlJavaScript add=@phpInnerHtmlPreproc
+
+ " The default highlighting.
+ " NOTE: For now, this deliberately copies the definitions from html rather than link
+ " to the corresponding html tag name. If html is refactored to rename any
+ " keywords then html highlighting would unexpectedly be cleared.
+ hi def link phpInnerHtmlTag Function
+ hi def link phpInnerHtmlEndTag Identifier
+ hi def link phpInnerHtmlArg Type
+ hi def link phpInnerHtmlValue String
+ hi def link phpInnerHtmlSpecialChar Special
+
+ if !exists("html_no_rendering")
+ hi def link phpInnerHtmlH1 Title
+ hi def link phpInnerHtmlH2 phpInnerHtmlH1
+ hi def link phpInnerHtmlH3 phpInnerHtmlH2
+ hi def link phpInnerHtmlH4 phpInnerHtmlH3
+ hi def link phpInnerHtmlH5 phpInnerHtmlH4
+ hi def link phpInnerHtmlH6 phpInnerHtmlH5
+ hi def link phpInnerHtmlHead PreProc
+ hi def link phpInnerHtmlTitle Title
+ hi def link phpInnerHtmlBoldItalicUnderline phpInnerHtmlBoldUnderlineItalic
+ hi def link phpInnerHtmlUnderlineBold phpInnerHtmlBoldUnderline
+ hi def link phpInnerHtmlUnderlineItalicBold phpInnerHtmlBoldUnderlineItalic
+ hi def link phpInnerHtmlUnderlineBoldItalic phpInnerHtmlBoldUnderlineItalic
+ hi def link phpInnerHtmlItalicUnderline phpInnerHtmlUnderlineItalic
+ hi def link phpInnerHtmlItalicBold phpInnerHtmlBoldItalic
+ hi def link phpInnerHtmlItalicBoldUnderline phpInnerHtmlBoldUnderlineItalic
+ hi def link phpInnerHtmlItalicUnderlineBold phpInnerHtmlBoldUnderlineItalic
+ hi def link phpInnerHtmlLink Underlined
+ hi def link phpInnerHtmlLeadingSpace None
+ if !exists("html_my_rendering")
+ hi def phpInnerHtmlBold term=bold cterm=bold gui=bold
+ hi def phpInnerHtmlBoldUnderline term=bold,underline cterm=bold,underline gui=bold,underline
+ hi def phpInnerHtmlBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic
+ hi def phpInnerHtmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
+ hi def phpInnerHtmlUnderline term=underline cterm=underline gui=underline
+ hi def phpInnerHtmlUnderlineItalic term=italic,underline cterm=italic,underline gui=italic,underline
+ hi def phpInnerHtmlItalic term=italic cterm=italic gui=italic
+ if v:version > 800 || v:version == 800 && has("patch1038")
+ hi def phpInnerHtmlStrike term=strikethrough cterm=strikethrough gui=strikethrough
+ else
+ hi def phpInnerHtmlStrike term=underline cterm=underline gui=underline
+ endif
+ endif
+ endif
+
+ hi def link phpInnerHtmlPreStmt PreProc
+ hi def link phpInnerHtmlPreError Error
+ hi def link phpInnerHtmlPreProc PreProc
+ hi def link phpInnerHtmlPreAttr String
+ hi def link phpInnerHtmlPreProcAttrName PreProc
+ hi def link phpInnerHtmlPreProcAttrError Error
+ hi def link phpInnerHtmlString String
+ hi def link phpInnerHtmlStatement Statement
+ hi def link phpInnerHtmlComment Comment
+ hi def link phpInnerHtmlCommentNested phpInnerHtmlError
+ hi def link phpInnerHtmlCommentError phpInnerHtmlError
+ hi def link phpInnerHtmlTagError phpInnerHtmlError
+ hi def link phpInnerHtmlEvent phpInnerJavaScript
+ hi def link phpInnerHtmlError Error
+
+ hi def link phpInnerJavaScript Special
+ hi def link phpInnerJavaScriptExpression phpInnerJavaScript
+ hi def link phpInnerHtmlCssStyleComment Comment
+ hi def link phpInnerHtmlCssDefinition Special
+endif
+
+
+runtime! syntax/html.vim
+unlet b:current_syntax
+
+" accept old options
+if !exists("php_sync_method")
+ if exists("php_minlines")
+ let php_sync_method=php_minlines
+ else
+ let php_sync_method=-1
+ endif
+endif
+
+if exists("php_parentError") && !exists("php_parent_error_open") && !exists("php_parent_error_close")
+ let php_parent_error_close=1
+ let php_parent_error_open=1
+endif
+
+" End of copy of html syntax for embedding in php strings }}}
+
+syn cluster htmlPreproc add=phpRegion,phpRegionAsp,phpRegionSc
+
+syn include @sqlTop syntax/sql.vim
+syn sync clear
+unlet b:current_syntax
+syn cluster sqlTop remove=sqlString,sqlComment
+if exists( "php_sql_query")
+ syn cluster phpAddStrings contains=@sqlTop
+endif
+
+if exists( "php_htmlInStrings")
+ if php_htmlInStrings==2
+ syn cluster phpAddStrings add=@phpInnerHtmlTop
+ else
+ syn cluster phpAddStrings add=@htmlTop
+ endif
+endif
+
+" make sure we can use \ at the beginning of the line to do a continuation
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case match
+
+" Env Variables
+syn keyword phpEnvVar GATEWAY_INTERFACE SERVER_NAME SERVER_SOFTWARE SERVER_PROTOCOL REQUEST_METHOD QUERY_STRING DOCUMENT_ROOT HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CONNECTION HTTP_HOST HTTP_REFERER HTTP_USER_AGENT REMOTE_ADDR REMOTE_PORT SCRIPT_FILENAME SERVER_ADMIN SERVER_PORT SERVER_SIGNATURE PATH_TRANSLATED SCRIPT_NAME REQUEST_URI contained
+
+" Internal Variables
+syn keyword phpIntVar GLOBALS PHP_ERRMSG PHP_SELF HTTP_GET_VARS HTTP_POST_VARS HTTP_COOKIE_VARS HTTP_POST_FILES HTTP_ENV_VARS HTTP_SERVER_VARS HTTP_SESSION_VARS HTTP_RAW_POST_DATA HTTP_STATE_VARS _GET _POST _COOKIE _FILES _SERVER _ENV _SERVER _REQUEST _SESSION contained
+
+" Constants
+syn keyword phpCoreConstant PHP_VERSION PHP_OS DEFAULT_INCLUDE_PATH PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_BINDIR PHP_LIBDIR PHP_DATADIR PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END contained
+
+" Predefined constants
+" Generated by: curl -q https://www.php.net/manual/en/errorfunc.constants.php | grep -oP 'E_\w+' | sort -u
+syn keyword phpCoreConstant E_ALL E_COMPILE_ERROR E_COMPILE_WARNING E_CORE_ERROR E_CORE_WARNING E_DEPRECATED E_ERROR E_NOTICE E_PARSE E_RECOVERABLE_ERROR E_STRICT E_USER_DEPRECATED E_USER_ERROR E_USER_NOTICE E_USER_WARNING E_WARNING contained
+
+syn case ignore
+
+syn keyword phpConstant __LINE__ __FILE__ __FUNCTION__ __METHOD__ __CLASS__ __DIR__ __NAMESPACE__ __TRAIT__ contained
+
+
+" Function and Methods ripped from php_manual_de.tar.gz Jan 2003 and amended later with common bundled extensions
+
+syn keyword phpFunctions apc_cache_info apc_clear_cache apc_store apc_fetch apc_enabled apc_delete apc_add apc_sma_info apc_inc apc_dec apc_cas apc_exists contained
+syn keyword phpFunctions apcu_add apcu_cache_info apcu_cas apcu_clear_cache apcu_dec apcu_delete apcu_enabled apcu_entry apcu_exists apcu_fetch apcu_inc apcu_key_info apcu_sma_info apcu_store contained
+syn keyword phpFunctions apache_child_terminate apache_get_modules apache_get_version apache_getenv apache_lookup_uri apache_note apache_request_headers apache_response_headers apache_setenv ascii2ebcdic ebcdic2ascii getallheaders virtual contained
+syn keyword phpFunctions array_change_key_case array_chunk array_column array_combine array_count_values array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_diff array_fill_keys array_fill array_filter array_flip array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey array_intersect array_key_exists array_keys array_map array_merge_recursive array_merge array_multisort array_pad array_pop array_product array_push array_rand array_reduce array_replace_recursive array_replace array_reverse array_search array_shift array_slice array_splice array_sum array_udiff_assoc array_udiff_uassoc array_udiff array_uintersect_assoc array_uintersect_uassoc array_uintersect array_unique array_unshift array_values array_walk_recursive array_walk arsort asort count current each end in_array key_exists key krsort ksort natcasesort natsort next pos prev range reset rsort shuffle sizeof sort uasort uksort usort contained
+syn keyword phpFunctions aspell_check aspell_new aspell_suggest contained
+syn keyword phpFunctions bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub contained
+syn keyword phpFunctions bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite contained
+syn keyword phpFunctions cal_days_in_month cal_from_jd cal_info cal_to_jd easter_date easter_days frenchtojd gregoriantojd jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd juliantojd unixtojd contained
+syn keyword phpFunctions ccvs_add ccvs_auth ccvs_command ccvs_count ccvs_delete ccvs_done ccvs_init ccvs_lookup ccvs_new ccvs_report ccvs_return ccvs_reverse ccvs_sale ccvs_status ccvs_textvalue ccvs_void contained
+syn keyword phpFunctions call_user_method_array call_user_method class_exists get_class_methods get_class_vars get_class get_declared_classes get_object_vars get_parent_class is_a is_subclass_of method_exists contained
+syn keyword phpFunctions com VARIANT com_addref com_get com_invoke com_isenum com_load_typelib com_load com_propget com_propput com_propset com_release com_set contained
+syn keyword phpFunctions cpdf_add_annotation cpdf_add_outline cpdf_arc cpdf_begin_text cpdf_circle cpdf_clip cpdf_close cpdf_closepath_fill_stroke cpdf_closepath_stroke cpdf_closepath cpdf_continue_text cpdf_curveto cpdf_end_text cpdf_fill_stroke cpdf_fill cpdf_finalize_page cpdf_finalize cpdf_global_set_document_limits cpdf_import_jpeg cpdf_lineto cpdf_moveto cpdf_newpath cpdf_open cpdf_output_buffer cpdf_page_init cpdf_place_inline_image cpdf_rect cpdf_restore cpdf_rlineto cpdf_rmoveto cpdf_rotate_text cpdf_rotate cpdf_save_to_file cpdf_save cpdf_scale cpdf_set_action_url cpdf_set_char_spacing cpdf_set_creator cpdf_set_current_page cpdf_set_font_directories cpdf_set_font_map_file cpdf_set_font cpdf_set_horiz_scaling cpdf_set_keywords cpdf_set_leading cpdf_set_page_animation cpdf_set_subject cpdf_set_text_matrix cpdf_set_text_pos cpdf_set_text_rendering cpdf_set_text_rise cpdf_set_title cpdf_set_viewer_preferences cpdf_set_word_spacing cpdf_setdash cpdf_setflat cpdf_setgray_fill cpdf_setgray_stroke cpdf_setgray cpdf_setlinecap cpdf_setlinejoin cpdf_setlinewidth cpdf_setmiterlimit cpdf_setrgbcolor_fill cpdf_setrgbcolor_stroke cpdf_setrgbcolor cpdf_show_xy cpdf_show cpdf_stringwidth cpdf_stroke cpdf_text cpdf_translate contained
+syn keyword phpFunctions crack_check crack_closedict crack_getlastmessage crack_opendict contained
+syn keyword phpFunctions ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_graph ctype_lower ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit contained
+syn keyword phpFunctions curl_close curl_errno curl_error curl_exec curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_setopt curl_version curl_copy_handle curl_escape curl_file_create curl_multi_errno curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_share_close curl_share_errno curl_share_init curl_share_setopt curl_share_strerror curl_strerror curl_unescape contained
+syn keyword phpFunctions cybercash_base64_decode cybercash_base64_encode cybercash_decr cybercash_encr contained
+syn keyword phpFunctions cyrus_authenticate cyrus_bind cyrus_close cyrus_connect cyrus_query cyrus_unbind contained
+syn keyword phpFunctions checkdate date getdate gettimeofday gmdate gmmktime gmstrftime localtime microtime mktime strftime strtotime time date_add date_create date_create_from_format date_create_immutable date_create_immutable_from_format date_date_set date_default_timezone_get date_default_timezone_set date_diff date_format date_get_last_errors date_interval_create_from_date_string date_interval_format date_isodate_set date_modify date_offset_get date_parse date_parse_from_format date_sub date_sun_info date_sunrise date_sunset date_time_set date_timestamp_get date_timestamp_set date_timezone_get date_timezone_set idate timezone_abbreviations_list timezone_identifiers_list timezone_location_get timezone_name_from_abbr timezone_name_get timezone_offset_get timezone_open timezone_transitions_get timezone_version_get contained
+syn keyword phpFunctions dba_close dba_delete dba_exists dba_fetch dba_firstkey dba_handlers dba_insert dba_key_split dba_list dba_nextkey dba_open dba_optimize dba_popen dba_replace dba_sync contained
+syn keyword phpFunctions dbase_add_record dbase_close dbase_create dbase_delete_record dbase_get_header_info dbase_get_record_with_names dbase_get_record dbase_numfields dbase_numrecords dbase_open dbase_pack dbase_replace_record contained
+syn keyword phpFunctions dblist dbmclose dbmdelete dbmexists dbmfetch dbmfirstkey dbminsert dbmnextkey dbmopen dbmreplace contained
+syn keyword phpFunctions dbplus_add dbplus_aql dbplus_chdir dbplus_close dbplus_curr dbplus_errcode dbplus_errno dbplus_find dbplus_first dbplus_flush dbplus_freealllocks dbplus_freelock dbplus_freerlocks dbplus_getlock dbplus_getunique dbplus_info dbplus_last dbplus_lockrel dbplus_next dbplus_open dbplus_prev dbplus_rchperm dbplus_rcreate dbplus_rcrtexact dbplus_rcrtlike dbplus_resolve dbplus_restorepos dbplus_rkeys dbplus_ropen dbplus_rquery dbplus_rrename dbplus_rsecindex dbplus_runlink dbplus_rzap dbplus_savepos dbplus_setindex dbplus_setindexbynumber dbplus_sql dbplus_tcl dbplus_tremove dbplus_undo dbplus_undoprepare dbplus_unlockrel dbplus_unselect dbplus_update dbplus_xlockrel dbplus_xunlockrel contained
+syn keyword phpFunctions dbx_close dbx_compare dbx_connect dbx_error dbx_escape_string dbx_fetch_row dbx_query dbx_sort contained
+syn keyword phpFunctions dio_close dio_fcntl dio_open dio_read dio_seek dio_stat dio_tcsetattr dio_truncate dio_write contained
+syn keyword phpFunctions chdir chroot dir closedir getcwd opendir readdir rewinddir scandir contained
+syn keyword phpFunctions dom_import_simplexml contained
+syn keyword phpFunctions domxml_new_doc domxml_open_file domxml_open_mem domxml_version domxml_xmltree domxml_xslt_stylesheet_doc domxml_xslt_stylesheet_file domxml_xslt_stylesheet xpath_eval_expression xpath_eval xpath_new_context xptr_eval xptr_new_context contained
+syn keyword phpMethods name specified value create_attribute create_cdata_section create_comment create_element_ns create_element create_entity_reference create_processing_instruction create_text_node doctype document_element dump_file dump_mem get_element_by_id get_elements_by_tagname html_dump_mem xinclude entities internal_subset name notations public_id system_id get_attribute_node get_attribute get_elements_by_tagname has_attribute remove_attribute set_attribute tagname add_namespace append_child append_sibling attributes child_nodes clone_node dump_node first_child get_content has_attributes has_child_nodes insert_before is_blank_node last_child next_sibling node_name node_type node_value owner_document parent_node prefix previous_sibling remove_child replace_child replace_node set_content set_name set_namespace unlink_node data target process result_dump_file result_dump_mem contained
+syn keyword phpFunctions dotnet_load contained
+syn keyword phpFunctions debug_backtrace debug_print_backtrace error_log error_reporting restore_error_handler set_error_handler trigger_error user_error contained
+syn keyword phpFunctions enchant_broker_describe enchant_broker_dict_exists enchant_broker_free enchant_broker_free_dict enchant_broker_get_dict_path enchant_broker_get_error enchant_broker_init enchant_broker_list_dicts enchant_broker_request_dict enchant_broker_request_pwl_dict enchant_broker_set_dict_path enchant_broker_set_ordering enchant_dict_add enchant_dict_add_to_personal enchant_dict_add_to_session enchant_dict_check enchant_dict_describe enchant_dict_get_error enchant_dict_is_added enchant_dict_is_in_session enchant_dict_quick_check enchant_dict_store_replacement enchant_dict_suggest contained
+syn keyword phpFunctions escapeshellarg escapeshellcmd exec passthru proc_close proc_get_status proc_nice proc_open proc_terminate shell_exec system contained
+syn keyword phpFunctions fam_cancel_monitor fam_close fam_monitor_collection fam_monitor_directory fam_monitor_file fam_next_event fam_open fam_pending fam_resume_monitor fam_suspend_monitor contained
+syn keyword phpFunctions fbsql_affected_rows fbsql_autocommit fbsql_change_user fbsql_close fbsql_commit fbsql_connect fbsql_create_blob fbsql_create_clob fbsql_create_db fbsql_data_seek fbsql_database_password fbsql_database fbsql_db_query fbsql_db_status fbsql_drop_db fbsql_errno fbsql_error fbsql_fetch_array fbsql_fetch_assoc fbsql_fetch_field fbsql_fetch_lengths fbsql_fetch_object fbsql_fetch_row fbsql_field_flags fbsql_field_len fbsql_field_name fbsql_field_seek fbsql_field_table fbsql_field_type fbsql_free_result fbsql_get_autostart_info fbsql_hostname fbsql_insert_id fbsql_list_dbs fbsql_list_fields fbsql_list_tables fbsql_next_result fbsql_num_fields fbsql_num_rows fbsql_password fbsql_pconnect fbsql_query fbsql_read_blob fbsql_read_clob fbsql_result fbsql_rollback fbsql_select_db fbsql_set_lob_mode fbsql_set_transaction fbsql_start_db fbsql_stop_db fbsql_tablename fbsql_username fbsql_warnings contained
+syn keyword phpFunctions fdf_add_doc_javascript fdf_add_template fdf_close fdf_create fdf_enum_values fdf_errno fdf_error fdf_get_ap fdf_get_attachment fdf_get_encoding fdf_get_file fdf_get_flags fdf_get_opt fdf_get_status fdf_get_value fdf_get_version fdf_header fdf_next_field_name fdf_open_string fdf_open fdf_remove_item fdf_save_string fdf_save fdf_set_ap fdf_set_encoding fdf_set_file fdf_set_flags fdf_set_javascript_action fdf_set_opt fdf_set_status fdf_set_submit_form_action fdf_set_target_frame fdf_set_value fdf_set_version contained
+syn keyword phpFunctions filepro_fieldcount filepro_fieldname filepro_fieldtype filepro_fieldwidth filepro_retrieve filepro_rowcount filepro contained
+syn keyword phpFunctions filter_has_var filter_id filter_input filter_input_array filter_list filter_var filter_var_array contained
+syn keyword phpFunctions basename chgrp chmod chown clearstatcache copy delete dirname disk_free_space disk_total_space diskfreespace fclose feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents file fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype flock fnmatch fopen fpassthru fputs fread fscanf fseek fstat ftell ftruncate fwrite glob is_dir is_executable is_file is_link is_readable is_uploaded_file is_writable is_writeable link linkinfo lstat mkdir move_uploaded_file parse_ini_file pathinfo pclose popen readfile readlink realpath rename rewind rmdir set_file_buffer stat symlink tempnam tmpfile touch umask unlink contained
+syn keyword phpFunctions fribidi_log2vis contained
+syn keyword phpFunctions ftp_alloc ftp_cdup ftp_chdir ftp_chmod ftp_close ftp_connect ftp_delete ftp_exec ftp_fget ftp_fput ftp_get_option ftp_get ftp_login ftp_mdtm ftp_mkdir ftp_nb_continue ftp_nb_fget ftp_nb_fput ftp_nb_get ftp_nb_put ftp_nlist ftp_pasv ftp_put ftp_pwd ftp_quit ftp_raw ftp_rawlist ftp_rename ftp_rmdir ftp_set_option ftp_site ftp_size ftp_ssl_connect ftp_systype ftp_append ftp_mlsd contained
+syn keyword phpFunctions call_user_func_array call_user_func create_function func_get_arg func_get_args func_num_args function_exists get_defined_functions register_shutdown_function register_tick_function unregister_tick_function contained
+syn keyword phpFunctions bind_textdomain_codeset bindtextdomain dcgettext dcngettext dgettext dngettext gettext ngettext textdomain _ contained
+syn keyword phpFunctions gmp_abs gmp_add gmp_and gmp_clrbit gmp_cmp gmp_com gmp_div_q gmp_div_qr gmp_div_r gmp_div gmp_divexact gmp_fact gmp_gcd gmp_gcdext gmp_hamdist gmp_init gmp_intval gmp_invert gmp_jacobi gmp_legendre gmp_mod gmp_mul gmp_neg gmp_or gmp_perfect_square gmp_popcount gmp_pow gmp_powm gmp_prob_prime gmp_random gmp_scan0 gmp_scan1 gmp_setbit gmp_sign gmp_sqrt gmp_sqrtrem gmp_sqrtrm gmp_strval gmp_sub gmp_xor gmp_binomial gmp_export gmp_import gmp_kronecker gmp_lcm gmp_nextprime gmp_perfect_power gmp_random_bits gmp_random_range gmp_random_seed gmp_root gmp_rootrem gmp_testbit contained
+syn keyword phpFunctions hash hash_algos hash_copy hash_equals hash_file hash_final hash_hkdf hash_hmac hash_hmac_algos hash_hmac_file hash_init hash_pbkdf2 hash_update hash_update_file hash_update_stream contained
+syn keyword phpFunctions header headers_list headers_sent setcookie contained
+syn keyword phpFunctions hw_api_attribute hwapi_hgcsp hw_api_content hw_api_object contained
+syn keyword phpMethods key langdepvalue value values checkin checkout children mimetype read content copy dbstat dcstat dstanchors dstofsrcanchors count reason find ftstat hwstat identify info insert insertanchor insertcollection insertdocument link lock move assign attreditable count insert remove title value object objectbyanchor parents description type remove replace setcommitedversion srcanchors srcsofdst unlock user userlist contained
+syn keyword phpFunctions hw_Array2Objrec hw_changeobject hw_Children hw_ChildrenObj hw_Close hw_Connect hw_connection_info hw_cp hw_Deleteobject hw_DocByAnchor hw_DocByAnchorObj hw_Document_Attributes hw_Document_BodyTag hw_Document_Content hw_Document_SetContent hw_Document_Size hw_dummy hw_EditText hw_Error hw_ErrorMsg hw_Free_Document hw_GetAnchors hw_GetAnchorsObj hw_GetAndLock hw_GetChildColl hw_GetChildCollObj hw_GetChildDocColl hw_GetChildDocCollObj hw_GetObject hw_GetObjectByQuery hw_GetObjectByQueryColl hw_GetObjectByQueryCollObj hw_GetObjectByQueryObj hw_GetParents hw_GetParentsObj hw_getrellink hw_GetRemote hw_getremotechildren hw_GetSrcByDestObj hw_GetText hw_getusername hw_Identify hw_InCollections hw_Info hw_InsColl hw_InsDoc hw_insertanchors hw_InsertDocument hw_InsertObject hw_mapid hw_Modifyobject hw_mv hw_New_Document hw_objrec2array hw_Output_Document hw_pConnect hw_PipeDocument hw_Root hw_setlinkroot hw_stat hw_Unlock hw_Who contained
+syn keyword phpFunctions ibase_add_user ibase_affected_rows ibase_blob_add ibase_blob_cancel ibase_blob_close ibase_blob_create ibase_blob_echo ibase_blob_get ibase_blob_import ibase_blob_info ibase_blob_open ibase_close ibase_commit_ret ibase_commit ibase_connect ibase_delete_user ibase_drop_db ibase_errcode ibase_errmsg ibase_execute ibase_fetch_assoc ibase_fetch_object ibase_fetch_row ibase_field_info ibase_free_event_handler ibase_free_query ibase_free_result ibase_gen_id ibase_modify_user ibase_name_result ibase_num_fields ibase_num_params ibase_param_info ibase_pconnect ibase_prepare ibase_query ibase_rollback_ret ibase_rollback ibase_set_event_handler ibase_timefmt ibase_trans ibase_wait_event contained
+syn keyword phpFunctions iconv_get_encoding iconv_mime_decode_headers iconv_mime_decode iconv_mime_encode iconv_set_encoding iconv_strlen iconv_strpos iconv_strrpos iconv_substr iconv ob_iconv_handler contained
+syn keyword phpFunctions ifx_affected_rows ifx_blobinfile_mode ifx_byteasvarchar ifx_close ifx_connect ifx_copy_blob ifx_create_blob ifx_create_char ifx_do ifx_error ifx_errormsg ifx_fetch_row ifx_fieldproperties ifx_fieldtypes ifx_free_blob ifx_free_char ifx_free_result ifx_get_blob ifx_get_char ifx_getsqlca ifx_htmltbl_result ifx_nullformat ifx_num_fields ifx_num_rows ifx_pconnect ifx_prepare ifx_query ifx_textasvarchar ifx_update_blob ifx_update_char ifxus_close_slob ifxus_create_slob ifxus_free_slob ifxus_open_slob ifxus_read_slob ifxus_seek_slob ifxus_tell_slob ifxus_write_slob contained
+syn keyword phpFunctions igbinary_serialize igbinary_unserialize contained
+syn keyword phpFunctions exif_imagetype exif_read_data exif_thumbnail gd_info getimagesize image_type_to_mime_type image2wbmp imagealphablending imageantialias imagearc imagechar imagecharup imagecolorallocate imagecolorallocatealpha imagecolorat imagecolorclosest imagecolorclosestalpha imagecolorclosesthwb imagecolordeallocate imagecolorexact imagecolorexactalpha imagecolormatch imagecolorresolve imagecolorresolvealpha imagecolorset imagecolorsforindex imagecolorstotal imagecolortransparent imagecopy imagecopymerge imagecopymergegray imagecopyresampled imagecopyresized imagecreate imagecreatefromgd2 imagecreatefromgd2part imagecreatefromgd imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromstring imagecreatefromwbmp imagecreatefromxbm imagecreatefromxpm imagecreatetruecolor imagedashedline imagedestroy imageellipse imagefill imagefilledarc imagefilledellipse imagefilledpolygon imagefilledrectangle imagefilltoborder imagefontheight imagefontwidth imageftbbox imagefttext imagegammacorrect imagegd2 imagegd imagegif imageinterlace imageistruecolor imagejpeg imageline imageloadfont imagepalettecopy imagepng imagepolygon imagepsbbox imagepscopyfont imagepsencodefont imagepsextendfont imagepsfreefont imagepsloadfont imagepsslantfont imagepstext imagerectangle imagerotate imagesavealpha imagesetbrush imagesetpixel imagesetstyle imagesetthickness imagesettile imagestring imagestringup imagesx imagesy imagetruecolortopalette imagettfbbox imagettftext imagetypes imagewbmp iptcembed iptcparse jpeg2wbmp png2wbmp read_exif_data exif_tagname imageaffine imageaffinematrixconcat imageaffinematrixget imagebmp imageconvolution imagecreatefrombmp imagecreatefromtga imagecrop imagecropauto imagefilter imageflip imagegetclip imagegetinterpolation imagelayereffect imageopenpolygon imagepalettetotruecolor imageresolution imagescale imagesetclip imagesetinterpolation imagexbm contained
+syn keyword phpFunctions imap_8bit imap_alerts imap_append imap_base64 imap_binary imap_body imap_bodystruct imap_check imap_clearflag_full imap_close imap_createmailbox imap_delete imap_deletemailbox imap_errors imap_expunge imap_fetch_overview imap_fetchbody imap_fetchheader imap_fetchstructure imap_get_quota imap_get_quotaroot imap_getacl imap_getmailboxes imap_getsubscribed imap_header imap_headerinfo imap_headers imap_last_error imap_list imap_listmailbox imap_listscan imap_listsubscribed imap_lsub imap_mail_compose imap_mail_copy imap_mail_move imap_mail imap_mailboxmsginfo imap_mime_header_decode imap_msgno imap_num_msg imap_num_recent imap_open imap_ping imap_qprint imap_renamemailbox imap_reopen imap_rfc822_parse_adrlist imap_rfc822_parse_headers imap_rfc822_write_address imap_scanmailbox imap_search imap_set_quota imap_setacl imap_setflag_full imap_sort imap_status imap_subscribe imap_thread imap_timeout imap_uid imap_undelete imap_unsubscribe imap_utf7_decode imap_utf7_encode imap_utf8 contained
+syn keyword phpFunctions assert_options assert dl extension_loaded get_cfg_var get_current_user get_defined_constants get_extension_funcs get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime get_required_files getenv getlastmod getmygid getmyinode getmypid getmyuid getopt getrusage ini_alter ini_get_all ini_get ini_restore ini_set main memory_get_usage php_ini_scanned_files php_logo_guid php_sapi_name php_uname phpcredits phpinfo phpversion putenv restore_include_path set_include_path set_magic_quotes_runtime set_time_limit version_compare zend_logo_guid zend_version contained
+syn keyword phpFunctions ingres_autocommit ingres_close ingres_commit ingres_connect ingres_fetch_array ingres_fetch_object ingres_fetch_row ingres_field_length ingres_field_name ingres_field_nullable ingres_field_precision ingres_field_scale ingres_field_type ingres_num_fields ingres_num_rows ingres_pconnect ingres_query ingres_rollback contained
+syn keyword phpFunctions collator_asort collator_compare collator_create collator_get_attribute collator_get_error_code collator_get_error_message collator_get_locale collator_get_sort_key collator_get_strength collator_set_attribute collator_set_strength collator_sort collator_sort_with_sort_keys datefmt_create datefmt_format datefmt_format_object datefmt_get_calendar datefmt_get_calendar_object datefmt_get_datetype datefmt_get_error_code datefmt_get_error_message datefmt_get_locale datefmt_get_pattern datefmt_get_timetype datefmt_get_timezone datefmt_get_timezone_id datefmt_is_lenient datefmt_localtime datefmt_parse datefmt_set_calendar datefmt_set_lenient datefmt_set_pattern datefmt_set_timezone grapheme_extract grapheme_stripos grapheme_stristr grapheme_strlen grapheme_strpos grapheme_strripos grapheme_strrpos grapheme_strstr grapheme_substr idn_to_ascii idn_to_utf8 intl_error_name intl_get_error_code intl_get_error_message intl_is_failure intlcal_add intlcal_after intlcal_before intlcal_clear intlcal_create_instance intlcal_equals intlcal_field_difference intlcal_from_date_time intlcal_get intlcal_get_actual_maximum intlcal_get_actual_minimum intlcal_get_available_locales intlcal_get_day_of_week_type intlcal_get_error_code intlcal_get_error_message intlcal_get_first_day_of_week intlcal_get_greatest_minimum intlcal_get_keyword_values_for_locale intlcal_get_least_maximum intlcal_get_locale intlcal_get_maximum intlcal_get_minimal_days_in_first_week intlcal_get_minimum intlcal_get_now intlcal_get_repeated_wall_time_option intlcal_get_skipped_wall_time_option intlcal_get_time intlcal_get_time_zone intlcal_get_type intlcal_get_weekend_transition intlcal_in_daylight_time intlcal_is_equivalent_to intlcal_is_lenient intlcal_is_set intlcal_is_weekend intlcal_roll intlcal_set intlcal_set_first_day_of_week intlcal_set_lenient intlcal_set_minimal_days_in_first_week intlcal_set_repeated_wall_time_option intlcal_set_skipped_wall_time_option intlcal_set_time intlcal_set_time_zone intlcal_to_date_time intlgregcal_create_instance intlgregcal_get_gregorian_change intlgregcal_is_leap_year intlgregcal_set_gregorian_change intltz_count_equivalent_ids intltz_create_default intltz_create_enumeration intltz_create_time_zone intltz_create_time_zone_id_enumeration intltz_from_date_time_zone intltz_get_canonical_id intltz_get_display_name intltz_get_dst_savings intltz_get_equivalent_id intltz_get_error_code intltz_get_error_message intltz_get_id_for_windows_id intltz_get_windows_id intltz_get_gmt intltz_get_id intltz_get_offset intltz_get_raw_offset intltz_get_region intltz_get_tz_data_version intltz_get_unknown intltz_has_same_rules intltz_to_date_time_zone intltz_use_daylight_time locale_accept_from_http locale_canonicalize locale_compose locale_filter_matches locale_get_all_variants locale_get_default locale_get_display_language locale_get_display_name locale_get_display_region locale_get_display_script locale_get_display_variant locale_get_keywords locale_get_primary_language locale_get_region locale_get_script locale_lookup locale_parse locale_set_default msgfmt_create msgfmt_format msgfmt_format_message msgfmt_get_error_code msgfmt_get_error_message msgfmt_get_locale msgfmt_get_pattern msgfmt_parse msgfmt_parse_message msgfmt_set_pattern normalizer_get_raw_decomposition normalizer_is_normalized normalizer_normalize numfmt_create numfmt_format numfmt_format_currency numfmt_get_attribute numfmt_get_error_code numfmt_get_error_message numfmt_get_locale numfmt_get_pattern numfmt_get_symbol numfmt_get_text_attribute numfmt_parse numfmt_parse_currency numfmt_set_attribute numfmt_set_pattern numfmt_set_symbol numfmt_set_text_attribute resourcebundle_count resourcebundle_create resourcebundle_get resourcebundle_get_error_code resourcebundle_get_error_message resourcebundle_locales transliterator_create transliterator_create_from_rules transliterator_create_inverse transliterator_get_error_code transliterator_get_error_message transliterator_list_ids transliterator_transliterate contained
+syn keyword phpFunctions ircg_channel_mode ircg_disconnect ircg_fetch_error_msg ircg_get_username ircg_html_encode ircg_ignore_add ircg_ignore_del ircg_is_conn_alive ircg_join ircg_kick ircg_lookup_format_messages ircg_msg ircg_nick ircg_nickname_escape ircg_nickname_unescape ircg_notice ircg_part ircg_pconnect ircg_register_format_messages ircg_set_current ircg_set_file ircg_set_on_die ircg_topic ircg_whois contained
+syn keyword phpFunctions java_last_exception_clear java_last_exception_get contained
+syn keyword phpFunctions json_decode json_encode json_last_error json_last_error_msg contained
+syn keyword phpFunctions ldap_8859_to_t61 ldap_add ldap_bind ldap_close ldap_compare ldap_connect ldap_count_entries ldap_delete ldap_dn2ufn ldap_err2str ldap_errno ldap_error ldap_explode_dn ldap_first_attribute ldap_first_entry ldap_first_reference ldap_free_result ldap_get_attributes ldap_get_dn ldap_get_entries ldap_get_option ldap_get_values_len ldap_get_values ldap_list ldap_mod_add ldap_mod_del ldap_mod_replace ldap_modify ldap_next_attribute ldap_next_entry ldap_next_reference ldap_parse_reference ldap_parse_result ldap_read ldap_rename ldap_search ldap_set_option ldap_set_rebind_proc ldap_sort ldap_start_tls ldap_t61_to_8859 ldap_unbind contained
+syn keyword phpFunctions libxml_clear_errors libxml_disable_entity_loader libxml_get_errors libxml_get_last_error libxml_set_external_entity_loader libxml_set_streams_context libxml_use_internal_errors contained
+syn keyword phpFunctions lzf_compress lzf_decompress lzf_optimized_for contained
+syn keyword phpFunctions ezmlm_hash mail contained
+syn keyword phpFunctions mailparse_determine_best_xfer_encoding mailparse_msg_create mailparse_msg_extract_part_file mailparse_msg_extract_part mailparse_msg_free mailparse_msg_get_part_data mailparse_msg_get_part mailparse_msg_get_structure mailparse_msg_parse_file mailparse_msg_parse mailparse_rfc822_parse_addresses mailparse_stream_encode mailparse_uudecode_all contained
+syn keyword phpFunctions abs acos acosh asin asinh atan2 atan atanh base_convert bindec ceil cos cosh decbin dechex decoct deg2rad exp expm1 floor fmod getrandmax hexdec hypot is_finite is_infinite is_nan lcg_value log10 log1p log max min mt_getrandmax mt_rand mt_srand octdec pi pow rad2deg rand round sin sinh sqrt srand tan tanh contained
+syn keyword phpFunctions array_key_first array_key_last boolval cli_get_process_title cli_set_process_title convert_uudecode convert_uuencode debug_zval_dump error_clear_last error_get_last forward_static_call forward_static_call_array fputcsv get_headers gethostname getimagesizefromstring header_register_callback header_remove hex2bin hrtime htmlspecialchars_decode http_response_code image_type_to_extension inet_ntop inet_pton intdiv is_countable is_iterable lcfirst lchgrp lchown memory_get_peak_usage net_get_interfaces parse_ini_string password_algos password_get_info password_hash password_needs_rehash password_verify php_ini_loaded_file php_strip_whitespace quoted_printable_encode random_bytes random_int realpath_cache_get realpath_cache_size setrawcookie str_getcsv stream_bucket_append stream_bucket_make_writeable stream_bucket_new stream_bucket_prepend stream_context_get_default stream_context_get_params stream_context_set_default stream_filter_remove stream_is_local stream_isatty stream_resolve_include_path stream_set_chunk_size stream_set_read_buffer stream_socket_enable_crypto stream_socket_pair stream_socket_shutdown stream_supports_lock stream_wrapper_restore stream_wrapper_unregister strpbrk strptime sys_get_temp_dir sys_getloadavg time_nanosleep time_sleep_until vfprintf contained
+
+syn keyword phpFunctions mb_convert_case mb_convert_encoding mb_convert_kana mb_convert_variables mb_decode_mimeheader mb_decode_numericentity mb_detect_encoding mb_detect_order mb_encode_mimeheader mb_encode_numericentity mb_ereg_match mb_ereg_replace mb_ereg_search_getpos mb_ereg_search_getregs mb_ereg_search_init mb_ereg_search_pos mb_ereg_search_regs mb_ereg_search_setpos mb_ereg_search mb_ereg mb_eregi_replace mb_eregi mb_get_info mb_http_input mb_http_output mb_internal_encoding mb_language mb_output_handler mb_parse_str mb_preferred_mime_name mb_regex_encoding mb_regex_set_options mb_send_mail mb_split mb_strcut mb_strimwidth mb_strlen mb_strpos mb_strrpos mb_strtolower mb_strtoupper mb_strwidth mb_substitute_character mb_substr_count mb_substr mb_check_encoding mb_chr mb_encoding_aliases mb_ereg_replace_callback mb_list_encodings mb_ord mb_scrub mb_str_split mb_stripos mb_stristr mb_strrchr mb_strrichr mb_strripos mb_strstr mbereg mbereg_match mbereg_replace mbereg_search mbereg_search_getpos mbereg_search_getregs mbereg_search_init mbereg_search_pos mbereg_search_regs mbereg_search_setpos mberegi mberegi_replace mbregex_encoding mbsplit contained
+syn keyword phpFunctions mcal_append_event mcal_close mcal_create_calendar mcal_date_compare mcal_date_valid mcal_day_of_week mcal_day_of_year mcal_days_in_month mcal_delete_calendar mcal_delete_event mcal_event_add_attribute mcal_event_init mcal_event_set_alarm mcal_event_set_category mcal_event_set_class mcal_event_set_description mcal_event_set_end mcal_event_set_recur_daily mcal_event_set_recur_monthly_mday mcal_event_set_recur_monthly_wday mcal_event_set_recur_none mcal_event_set_recur_weekly mcal_event_set_recur_yearly mcal_event_set_start mcal_event_set_title mcal_expunge mcal_fetch_current_stream_event mcal_fetch_event mcal_is_leap_year mcal_list_alarms mcal_list_events mcal_next_recurrence mcal_open mcal_popen mcal_rename_calendar mcal_reopen mcal_snooze mcal_store_event mcal_time_valid mcal_week_of_year contained
+syn keyword phpFunctions mcrypt_cbc mcrypt_cfb mcrypt_create_iv mcrypt_decrypt mcrypt_ecb mcrypt_enc_get_algorithms_name mcrypt_enc_get_block_size mcrypt_enc_get_iv_size mcrypt_enc_get_key_size mcrypt_enc_get_modes_name mcrypt_enc_get_supported_key_sizes mcrypt_enc_is_block_algorithm_mode mcrypt_enc_is_block_algorithm mcrypt_enc_is_block_mode mcrypt_enc_self_test mcrypt_encrypt mcrypt_generic_deinit mcrypt_generic_end mcrypt_generic_init mcrypt_generic mcrypt_get_block_size mcrypt_get_cipher_name mcrypt_get_iv_size mcrypt_get_key_size mcrypt_list_algorithms mcrypt_list_modes mcrypt_module_close mcrypt_module_get_algo_block_size mcrypt_module_get_algo_key_size mcrypt_module_get_supported_key_sizes mcrypt_module_is_block_algorithm_mode mcrypt_module_is_block_algorithm mcrypt_module_is_block_mode mcrypt_module_open mcrypt_module_self_test mcrypt_ofb mdecrypt_generic contained
+syn keyword phpFunctions mcve_adduser mcve_adduserarg mcve_bt mcve_checkstatus mcve_chkpwd mcve_chngpwd mcve_completeauthorizations mcve_connect mcve_connectionerror mcve_deleteresponse mcve_deletetrans mcve_deleteusersetup mcve_deluser mcve_destroyconn mcve_destroyengine mcve_disableuser mcve_edituser mcve_enableuser mcve_force mcve_getcell mcve_getcellbynum mcve_getcommadelimited mcve_getheader mcve_getuserarg mcve_getuserparam mcve_gft mcve_gl mcve_gut mcve_initconn mcve_initengine mcve_initusersetup mcve_iscommadelimited mcve_liststats mcve_listusers mcve_maxconntimeout mcve_monitor mcve_numcolumns mcve_numrows mcve_override mcve_parsecommadelimited mcve_ping mcve_preauth mcve_preauthcompletion mcve_qc mcve_responseparam mcve_return mcve_returncode mcve_returnstatus mcve_sale mcve_setblocking mcve_setdropfile mcve_setip mcve_setssl_files mcve_setssl mcve_settimeout mcve_settle mcve_text_avs mcve_text_code mcve_text_cv mcve_transactionauth mcve_transactionavs mcve_transactionbatch mcve_transactioncv mcve_transactionid mcve_transactionitem mcve_transactionssent mcve_transactiontext mcve_transinqueue mcve_transnew mcve_transparam mcve_transsend mcve_ub mcve_uwait mcve_verifyconnection mcve_verifysslcert mcve_void contained
+syn keyword phpFunctions mhash_count mhash_get_block_size mhash_get_hash_name mhash_keygen_s2k mhash contained
+syn keyword phpFunctions mime_content_type finfo_buffer finfo_close finfo_file finfo_open finfo_set_flags contained
+syn keyword phpFunctions ming_setcubicthreshold ming_setscale ming_useswfversion SWFAction SWFBitmap swfbutton_keypress SWFbutton SWFDisplayItem SWFFill SWFFont SWFGradient SWFMorph SWFMovie SWFShape SWFSprite SWFText SWFTextField contained
+syn keyword phpMethods getHeight getWidth addAction addShape setAction setdown setHit setOver setUp addColor move moveTo multColor remove Rotate rotateTo scale scaleTo setDepth setName setRatio skewX skewXTo skewY skewYTo moveTo rotateTo scaleTo skewXTo skewYTo getwidth addEntry getshape1 getshape2 add nextframe output remove save setbackground setdimension setframes setrate streammp3 addFill drawCurve drawCurveTo drawLine drawLineTo movePen movePenTo setLeftFill setLine setRightFill add nextframe remove setframes addString getWidth moveTo setColor setFont setHeight setSpacing addstring align setbounds setcolor setFont setHeight setindentation setLeftMargin setLineSpacing setMargins setname setrightMargin contained
+syn keyword phpFunctions connection_aborted connection_status connection_timeout constant define defined die eval exit get_browser highlight_file highlight_string ignore_user_abort pack show_source sleep uniqid unpack usleep contained
+syn keyword phpFunctions udm_add_search_limit udm_alloc_agent udm_api_version udm_cat_list udm_cat_path udm_check_charset udm_check_stored udm_clear_search_limits udm_close_stored udm_crc32 udm_errno udm_error udm_find udm_free_agent udm_free_ispell_data udm_free_res udm_get_doc_count udm_get_res_field udm_get_res_param udm_load_ispell_data udm_open_stored udm_set_agent_param contained
+syn keyword phpFunctions msession_connect msession_count msession_create msession_destroy msession_disconnect msession_find msession_get_array msession_get msession_getdata msession_inc msession_list msession_listvar msession_lock msession_plugin msession_randstr msession_set_array msession_set msession_setdata msession_timeout msession_uniq msession_unlock contained
+syn keyword phpFunctions msql_affected_rows msql_close msql_connect msql_create_db msql_createdb msql_data_seek msql_dbname msql_drop_db msql_dropdb msql_error msql_fetch_array msql_fetch_field msql_fetch_object msql_fetch_row msql_field_seek msql_fieldflags msql_fieldlen msql_fieldname msql_fieldtable msql_fieldtype msql_free_result msql_freeresult msql_list_dbs msql_list_fields msql_list_tables msql_listdbs msql_listfields msql_listtables msql_num_fields msql_num_rows msql_numfields msql_numrows msql_pconnect msql_query msql_regcase msql_result msql_select_db msql_selectdb msql_tablename msql contained
+syn keyword phpFunctions mssql_bind mssql_close mssql_connect mssql_data_seek mssql_execute mssql_fetch_array mssql_fetch_assoc mssql_fetch_batch mssql_fetch_field mssql_fetch_object mssql_fetch_row mssql_field_length mssql_field_name mssql_field_seek mssql_field_type mssql_free_result mssql_free_statement mssql_get_last_message mssql_guid_string mssql_init mssql_min_error_severity mssql_min_message_severity mssql_next_result mssql_num_fields mssql_num_rows mssql_pconnect mssql_query mssql_result mssql_rows_affected mssql_select_db contained
+syn keyword phpFunctions muscat_close muscat_get muscat_give muscat_setup_net muscat_setup contained
+syn keyword phpFunctions mysql_affected_rows mysql_change_user mysql_client_encoding mysql_close mysql_connect mysql_create_db mysql_data_seek mysql_db_name mysql_db_query mysql_drop_db mysql_errno mysql_error mysql_escape_string mysql_fetch_array mysql_fetch_assoc mysql_fetch_field mysql_fetch_lengths mysql_fetch_object mysql_fetch_row mysql_field_flags mysql_field_len mysql_field_name mysql_field_seek mysql_field_table mysql_field_type mysql_free_result mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql_insert_id mysql_list_dbs mysql_list_fields mysql_list_processes mysql_list_tables mysql_num_fields mysql_num_rows mysql_pconnect mysql_ping mysql_query mysql_real_escape_string mysql_result mysql_select_db mysql_stat mysql_tablename mysql_thread_id mysql_unbuffered_query contained
+syn keyword phpFunctions mysqli_affected_rows mysqli_autocommit mysqli_bind_param mysqli_bind_result mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect mysqli_data_seek mysqli_debug mysqli_disable_reads_from_master mysqli_disable_rpl_parse mysqli_dump_debug_info mysqli_enable_reads_from_master mysqli_enable_rpl_parse mysqli_errno mysqli_error mysqli_execute mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_fetch mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_client_info mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_master_query mysqli_num_fields mysqli_num_rows mysqli_options mysqli_param_count mysqli_ping mysqli_prepare_result mysqli_prepare mysqli_profiler mysqli_query mysqli_read_query_result mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reload mysqli_rollback mysqli_rpl_parse_enabled mysqli_rpl_probe mysqli_rpl_query_type mysqli_select_db mysqli_send_long_data mysqli_send_query mysqli_slave_query mysqli_ssl_set mysqli_stat mysqli_stmt_affected_rows mysqli_stmt_close mysqli_stmt_errno mysqli_stmt_error mysqli_stmt_store_result mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count mysqli_begin_transaction mysqli_connect_errno mysqli_connect_error mysqli_error_list mysqli_escape_string mysqli_fetch_all mysqli_get_charset mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_links_stats mysqli_get_warnings mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_poll mysqli_reap_async_query mysqli_refresh mysqli_release_savepoint mysqli_report mysqli_savepoint mysqli_set_charset mysqli_set_opt mysqli_sqlstate mysqli_stmt_attr_get mysqli_stmt_attr_set mysqli_stmt_bind_param mysqli_stmt_bind_result mysqli_stmt_data_seek mysqli_stmt_error_list mysqli_stmt_execute mysqli_stmt_fetch mysqli_stmt_field_count mysqli_stmt_free_result mysqli_stmt_get_result mysqli_stmt_get_warnings mysqli_stmt_init mysqli_stmt_insert_id mysqli_stmt_more_results mysqli_stmt_next_result mysqli_stmt_num_rows mysqli_stmt_param_count mysqli_stmt_prepare mysqli_stmt_reset mysqli_stmt_result_metadata mysqli_stmt_send_long_data mysqli_stmt_sqlstate contained
+syn keyword phpFunctions ncurses_addch ncurses_addchnstr ncurses_addchstr ncurses_addnstr ncurses_addstr ncurses_assume_default_colors ncurses_attroff ncurses_attron ncurses_attrset ncurses_baudrate ncurses_beep ncurses_bkgd ncurses_bkgdset ncurses_border ncurses_bottom_panel ncurses_can_change_color ncurses_cbreak ncurses_clear ncurses_clrtobot ncurses_clrtoeol ncurses_color_content ncurses_color_set ncurses_curs_set ncurses_def_prog_mode ncurses_def_shell_mode ncurses_define_key ncurses_del_panel ncurses_delay_output ncurses_delch ncurses_deleteln ncurses_delwin ncurses_doupdate ncurses_echo ncurses_echochar ncurses_end ncurses_erase ncurses_erasechar ncurses_filter ncurses_flash ncurses_flushinp ncurses_getch ncurses_getmaxyx ncurses_getmouse ncurses_getyx ncurses_halfdelay ncurses_has_colors ncurses_has_ic ncurses_has_il ncurses_has_key ncurses_hide_panel ncurses_hline ncurses_inch ncurses_init_color ncurses_init_pair ncurses_init ncurses_insch ncurses_insdelln ncurses_insertln ncurses_insstr ncurses_instr ncurses_isendwin ncurses_keyok ncurses_keypad ncurses_killchar ncurses_longname ncurses_meta ncurses_mouse_trafo ncurses_mouseinterval ncurses_mousemask ncurses_move_panel ncurses_move ncurses_mvaddch ncurses_mvaddchnstr ncurses_mvaddchstr ncurses_mvaddnstr ncurses_mvaddstr ncurses_mvcur ncurses_mvdelch ncurses_mvgetch ncurses_mvhline ncurses_mvinch ncurses_mvvline ncurses_mvwaddstr ncurses_napms ncurses_new_panel ncurses_newpad ncurses_newwin ncurses_nl ncurses_nocbreak ncurses_noecho ncurses_nonl ncurses_noqiflush ncurses_noraw ncurses_pair_content ncurses_panel_above ncurses_panel_below ncurses_panel_window ncurses_pnoutrefresh ncurses_prefresh ncurses_putp ncurses_qiflush ncurses_raw ncurses_refresh ncurses_replace_panel ncurses_reset_prog_mode ncurses_reset_shell_mode ncurses_resetty ncurses_savetty ncurses_scr_dump ncurses_scr_init ncurses_scr_restore ncurses_scr_set ncurses_scrl ncurses_show_panel ncurses_slk_attr ncurses_slk_attroff ncurses_slk_attron ncurses_slk_attrset ncurses_slk_clear ncurses_slk_color ncurses_slk_init ncurses_slk_noutrefresh ncurses_slk_refresh ncurses_slk_restore ncurses_slk_set ncurses_slk_touch ncurses_standend ncurses_standout ncurses_start_color ncurses_termattrs ncurses_termname ncurses_timeout ncurses_top_panel ncurses_typeahead ncurses_ungetch ncurses_ungetmouse ncurses_update_panels ncurses_use_default_colors ncurses_use_env ncurses_use_extended_names ncurses_vidattr ncurses_vline ncurses_waddch ncurses_waddstr ncurses_wattroff ncurses_wattron ncurses_wattrset ncurses_wborder ncurses_wclear ncurses_wcolor_set ncurses_werase ncurses_wgetch ncurses_whline ncurses_wmouse_trafo ncurses_wmove ncurses_wnoutrefresh ncurses_wrefresh ncurses_wstandend ncurses_wstandout ncurses_wvline contained
+syn keyword phpFunctions checkdnsrr closelog debugger_off debugger_on define_syslog_variables dns_check_record dns_get_mx dns_get_record fsockopen gethostbyaddr gethostbyname gethostbynamel getmxrr getprotobyname getprotobynumber getservbyname getservbyport ip2long long2ip openlog pfsockopen socket_get_status socket_set_blocking socket_set_timeout syslog contained
+syn keyword phpFunctions yp_all yp_cat yp_err_string yp_errno yp_first yp_get_default_domain yp_master yp_match yp_next yp_order contained
+syn keyword phpFunctions notes_body notes_copy_db notes_create_db notes_create_note notes_drop_db notes_find_note notes_header_info notes_list_msgs notes_mark_read notes_mark_unread notes_nav_create notes_search notes_unread notes_version contained
+syn keyword phpFunctions nsapi_request_headers nsapi_response_headers nsapi_virtual contained
+syn keyword phpFunctions aggregate_info aggregate_methods_by_list aggregate_methods_by_regexp aggregate_methods aggregate_properties_by_list aggregate_properties_by_regexp aggregate_properties aggregate aggregation_info deaggregate contained
+syn keyword phpFunctions ocibindbyname ocicancel ocicloselob ocicollappend ocicollassign ocicollassignelem ocicollgetelem ocicollmax ocicollsize ocicolltrim ocicolumnisnull ocicolumnname ocicolumnprecision ocicolumnscale ocicolumnsize ocicolumntype ocicolumntyperaw ocicommit ocidefinebyname ocierror ociexecute ocifetch ocifetchinto ocifetchstatement ocifreecollection ocifreecursor ocifreedesc ocifreestatement ociinternaldebug ociloadlob ocilogoff ocilogon ocinewcollection ocinewcursor ocinewdescriptor ocinlogon ocinumcols ociparse ociplogon ociresult ocirollback ocirowcount ocisavelob ocisavelobfile ociserverversion ocisetprefetch ocistatementtype ociwritelobtofile ociwritetemporarylob contained
+syn keyword phpFunctions odbc_autocommit odbc_binmode odbc_close_all odbc_close odbc_columnprivileges odbc_columns odbc_commit odbc_connect odbc_cursor odbc_data_source odbc_do odbc_error odbc_errormsg odbc_exec odbc_execute odbc_fetch_array odbc_fetch_into odbc_fetch_object odbc_fetch_row odbc_field_len odbc_field_name odbc_field_num odbc_field_precision odbc_field_scale odbc_field_type odbc_foreignkeys odbc_free_result odbc_gettypeinfo odbc_longreadlen odbc_next_result odbc_num_fields odbc_num_rows odbc_pconnect odbc_prepare odbc_primarykeys odbc_procedurecolumns odbc_procedures odbc_result_all odbc_result odbc_rollback odbc_setoption odbc_specialcolumns odbc_statistics odbc_tableprivileges odbc_tables contained
+syn keyword phpFunctions opcache_reset opcache_invalidate opcache_compile_file opcache_is_script_cached opcache_get_configuration opcache_get_status contained
+syn keyword phpFunctions openssl_cipher_iv_length openssl_cms_decrypt openssl_cms_encrypt openssl_cms_read openssl_cms_sign openssl_cms_verify openssl_csr_export_to_file openssl_csr_export openssl_csr_get_public_key openssl_csr_get_subject openssl_csr_new openssl_csr_sign openssl_decrypt openssl_dh_compute_key openssl_digest openssl_encrypt openssl_error_string openssl_free_key openssl_get_cert_locations openssl_get_cipher_methods openssl_get_md_methods openssl_get_privatekey openssl_get_publickey openssl_open openssl_pbkdf2 openssl_pkcs12_export_to_file openssl_pkcs12_export openssl_pkcs12_read openssl_pkcs7_decrypt openssl_pkcs7_encrypt openssl_pkcs7_sign openssl_pkcs7_verify openssl_pkey_export_to_file openssl_pkey_export openssl_pkey_free openssl_pkey_get_details openssl_pkey_get_private openssl_pkey_get_public openssl_pkey_new openssl_private_decrypt openssl_private_encrypt openssl_public_decrypt openssl_public_encrypt openssl_random_pseudo_bytes openssl_seal openssl_sign openssl_spki_export_challenge openssl_spki_export openssl_spki_new openssl_spki_verify openssl_verify openssl_x509_check_private_key openssl_x509_checkpurpose openssl_x509_export_to_file openssl_x509_export openssl_x509_fingerprint openssl_x509_free openssl_x509_parse openssl_x509_read openssl_get_curve_names openssl_pkcs7_read openssl_pkey_derive openssl_x509_verify contained
+syn keyword phpFunctions ora_bind ora_close ora_columnname ora_columnsize ora_columntype ora_commit ora_commitoff ora_commiton ora_do ora_error ora_errorcode ora_exec ora_fetch_into ora_fetch ora_getcolumn ora_logoff ora_logon ora_numcols ora_numrows ora_open ora_parse ora_plogon ora_rollback contained
+syn keyword phpFunctions flush ob_clean ob_end_clean ob_end_flush ob_flush ob_get_clean ob_get_contents ob_get_flush ob_get_length ob_get_level ob_get_status ob_gzhandler ob_implicit_flush ob_list_handlers ob_start output_add_rewrite_var output_reset_rewrite_vars contained
+syn keyword phpFunctions overload contained
+syn keyword phpFunctions ovrimos_close ovrimos_commit ovrimos_connect ovrimos_cursor ovrimos_exec ovrimos_execute ovrimos_fetch_into ovrimos_fetch_row ovrimos_field_len ovrimos_field_name ovrimos_field_num ovrimos_field_type ovrimos_free_result ovrimos_longreadlen ovrimos_num_fields ovrimos_num_rows ovrimos_prepare ovrimos_result_all ovrimos_result ovrimos_rollback contained
+syn keyword phpFunctions pcntl_exec pcntl_fork pcntl_signal pcntl_waitpid pcntl_wexitstatus pcntl_wifexited pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig pcntl_alarm pcntl_async_signals pcntl_errno pcntl_get_last_error pcntl_getpriority pcntl_setpriority pcntl_signal_dispatch pcntl_signal_get_handler pcntl_sigprocmask pcntl_sigtimedwait pcntl_sigwaitinfo pcntl_strerror pcntl_unshare pcntl_wait pcntl_wifcontinued contained
+syn keyword phpFunctions preg_filter preg_grep preg_last_error preg_last_error_msg preg_match_all preg_match preg_quote preg_replace_callback preg_replace_callback_array preg_replace preg_split contained
+syn keyword phpFunctions pdo_drivers contained
+syn keyword phpFunctions pdf_add_annotation pdf_add_bookmark pdf_add_launchlink pdf_add_locallink pdf_add_note pdf_add_outline pdf_add_pdflink pdf_add_thumbnail pdf_add_weblink pdf_arc pdf_arcn pdf_attach_file pdf_begin_page pdf_begin_pattern pdf_begin_template pdf_circle pdf_clip pdf_close_image pdf_close_pdi_page pdf_close_pdi pdf_close pdf_closepath_fill_stroke pdf_closepath_stroke pdf_closepath pdf_concat pdf_continue_text pdf_curveto pdf_delete pdf_end_page pdf_end_pattern pdf_end_template pdf_endpath pdf_fill_stroke pdf_fill pdf_findfont pdf_get_buffer pdf_get_font pdf_get_fontname pdf_get_fontsize pdf_get_image_height pdf_get_image_width pdf_get_majorversion pdf_get_minorversion pdf_get_parameter pdf_get_pdi_parameter pdf_get_pdi_value pdf_get_value pdf_initgraphics pdf_lineto pdf_makespotcolor pdf_moveto pdf_new pdf_open_CCITT pdf_open_file pdf_open_gif pdf_open_image_file pdf_open_image pdf_open_jpeg pdf_open_memory_image pdf_open_pdi_page pdf_open_pdi pdf_open_png pdf_open_tiff pdf_open pdf_place_image pdf_place_pdi_page pdf_rect pdf_restore pdf_rotate pdf_save pdf_scale pdf_set_border_color pdf_set_border_dash pdf_set_border_style pdf_set_char_spacing pdf_set_duration pdf_set_font pdf_set_horiz_scaling pdf_set_info_author pdf_set_info_creator pdf_set_info_keywords pdf_set_info_subject pdf_set_info_title pdf_set_info pdf_set_leading pdf_set_parameter pdf_set_text_matrix pdf_set_text_pos pdf_set_text_rendering pdf_set_text_rise pdf_set_value pdf_set_word_spacing pdf_setcolor pdf_setdash pdf_setflat pdf_setfont pdf_setgray_fill pdf_setgray_stroke pdf_setgray pdf_setlinecap pdf_setlinejoin pdf_setlinewidth pdf_setmatrix pdf_setmiterlimit pdf_setpolydash pdf_setrgbcolor_fill pdf_setrgbcolor_stroke pdf_setrgbcolor pdf_show_boxed pdf_show_xy pdf_show pdf_skew pdf_stringwidth pdf_stroke pdf_translate contained
+syn keyword phpFunctions pfpro_cleanup pfpro_init pfpro_process_raw pfpro_process pfpro_version contained
+syn keyword phpFunctions pg_affected_rows pg_cancel_query pg_client_encoding pg_close pg_connect pg_connection_busy pg_connection_reset pg_connection_status pg_convert pg_copy_from pg_copy_to pg_dbname pg_delete pg_end_copy pg_escape_bytea pg_escape_string pg_fetch_all pg_fetch_array pg_fetch_assoc pg_fetch_object pg_fetch_result pg_fetch_row pg_field_is_null pg_field_name pg_field_num pg_field_prtlen pg_field_size pg_field_type pg_free_result pg_get_notify pg_get_pid pg_get_result pg_host pg_insert pg_last_error pg_last_notice pg_last_oid pg_lo_close pg_lo_create pg_lo_export pg_lo_import pg_lo_open pg_lo_read_all pg_lo_read pg_lo_seek pg_lo_tell pg_lo_unlink pg_lo_write pg_meta_data pg_num_fields pg_num_rows pg_options pg_pconnect pg_ping pg_port pg_put_line pg_query pg_result_error pg_result_seek pg_result_status pg_select pg_send_query pg_set_client_encoding pg_trace pg_tty pg_unescape_bytea pg_untrace pg_update pg_clientencoding pg_cmdtuples pg_connect_poll pg_consume_input pg_errormessage pg_escape_identifier pg_escape_literal pg_exec pg_execute pg_fetch_all_columns pg_field_table pg_field_type_oid pg_fieldisnull pg_fieldname pg_fieldnum pg_fieldprtlen pg_fieldsize pg_fieldtype pg_flush pg_freeresult pg_getlastoid pg_lo_truncate pg_loclose pg_locreate pg_loexport pg_loimport pg_loopen pg_loread pg_loreadall pg_lounlink pg_lowrite pg_numfields pg_numrows pg_parameter_status pg_prepare pg_query_params pg_result pg_result_error_field pg_send_execute pg_send_prepare pg_send_query_params pg_set_error_verbosity pg_setclientencoding pg_socket pg_transaction_status pg_version contained
+syn keyword phpFunctions posix_ctermid posix_get_last_error posix_getcwd posix_getegid posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid posix_isatty posix_kill posix_mkfifo posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid posix_setuid posix_strerror posix_times posix_ttyname posix_uname posix_access posix_errno posix_initgroups posix_mknod posix_setrlimit contained
+syn keyword phpFunctions printer_abort printer_close printer_create_brush printer_create_dc printer_create_font printer_create_pen printer_delete_brush printer_delete_dc printer_delete_font printer_delete_pen printer_draw_bmp printer_draw_chord printer_draw_elipse printer_draw_line printer_draw_pie printer_draw_rectangle printer_draw_roundrect printer_draw_text printer_end_doc printer_end_page printer_get_option printer_list printer_logical_fontheight printer_open printer_select_brush printer_select_font printer_select_pen printer_set_option printer_start_doc printer_start_page printer_write contained
+syn keyword phpFunctions pspell_add_to_personal pspell_add_to_session pspell_check pspell_clear_session pspell_config_create pspell_config_ignore pspell_config_mode pspell_config_personal pspell_config_repl pspell_config_runtogether pspell_config_save_repl pspell_new_config pspell_new_personal pspell_new pspell_save_wordlist pspell_store_replacement pspell_suggest pspell_config_data_dir pspell_config_dict_dir contained
+syn keyword phpFunctions qdom_error qdom_tree contained
+syn keyword phpFunctions readline_add_history readline_clear_history readline_completion_function readline_info readline_list_history readline_read_history readline_write_history readline readline_callback_handler_install readline_callback_handler_remove readline_callback_read_char readline_on_new_line readline_redisplay contained
+syn keyword phpFunctions recode_file recode_string recode contained
+syn keyword phpFunctions ereg_replace ereg eregi_replace eregi split spliti sql_regcase contained
+syn keyword phpFunctions ftok msg_get_queue msg_queue_exists msg_receive msg_remove_queue msg_send msg_set_queue msg_stat_queue sem_acquire sem_get sem_release sem_remove shm_attach shm_detach shm_get_var shm_has_var shm_put_var shm_remove_var shm_remove contained
+syn keyword phpFunctions sesam_affected_rows sesam_commit sesam_connect sesam_diagnostic sesam_disconnect sesam_errormsg sesam_execimm sesam_fetch_array sesam_fetch_result sesam_fetch_row sesam_field_array sesam_field_name sesam_free_result sesam_num_fields sesam_query sesam_rollback sesam_seek_row sesam_settransaction contained
+syn keyword phpFunctions session_cache_expire session_cache_limiter session_decode session_destroy session_encode session_get_cookie_params session_id session_is_registered session_module_name session_name session_regenerate_id session_register session_save_path session_set_cookie_params session_set_save_handler session_start session_unregister session_unset session_write_close session_abort session_commit session_create_id session_gc session_register_shutdown session_reset session_status contained
+syn keyword phpFunctions simplexml_import_dom simplexml_load_file simplexml_load_string contained
+syn keyword phpFunctions shmop_close shmop_delete shmop_open shmop_read shmop_size shmop_write contained
+syn keyword phpFunctions snmp_get_quick_print snmp_set_quick_print snmpget snmprealwalk snmpset snmpwalk snmpwalkoid contained
+syn keyword phpFunctions is_soap_fault use_soap_error_handler contained
+syn keyword phpFunctions socket_accept socket_bind socket_clear_error socket_close socket_connect socket_create_listen socket_create_pair socket_create socket_get_option socket_getpeername socket_getsockname socket_iovec_add socket_iovec_alloc socket_iovec_delete socket_iovec_fetch socket_iovec_free socket_iovec_set socket_last_error socket_listen socket_read socket_readv socket_recv socket_recvfrom socket_recvmsg socket_select socket_send socket_sendmsg socket_sendto socket_set_block socket_set_nonblock socket_set_option socket_shutdown socket_strerror socket_write socket_writev socket_addrinfo_bind socket_addrinfo_connect socket_addrinfo_explain socket_addrinfo_lookup socket_cmsg_space socket_export_stream socket_getopt socket_import_stream socket_setopt contained
+syn keyword phpFunctions class_implements class_parents class_uses iterator_apply iterator_count iterator_to_array spl_autoload spl_autoload_call spl_autoload_extensions spl_autoload_functions spl_autoload_register spl_autoload_unregister spl_classes spl_object_hash spl_object_id contained
+syn keyword phpFunctions sqlite_array_query sqlite_busy_timeout sqlite_changes sqlite_close sqlite_column sqlite_create_aggregate sqlite_create_function sqlite_current sqlite_error_string sqlite_escape_string sqlite_fetch_array sqlite_fetch_single sqlite_fetch_string sqlite_field_name sqlite_has_more sqlite_last_error sqlite_last_insert_rowid sqlite_libencoding sqlite_libversion sqlite_next sqlite_num_fields sqlite_num_rows sqlite_open sqlite_popen sqlite_query sqlite_rewind sqlite_seek sqlite_udf_decode_binary sqlite_udf_encode_binary sqlite_unbuffered_query contained
+syn keyword phpFunctions stream_context_create stream_context_get_options stream_context_set_option stream_context_set_params stream_copy_to_stream stream_filter_append stream_filter_prepend stream_filter_register stream_get_contents stream_get_filters stream_get_line stream_get_meta_data stream_get_transports stream_get_wrappers stream_register_wrapper stream_select stream_set_blocking stream_set_timeout stream_set_write_buffer stream_socket_accept stream_socket_client stream_socket_get_name stream_socket_recvfrom stream_socket_sendto stream_socket_server stream_wrapper_register contained
+syn keyword phpFunctions addcslashes addslashes bin2hex chop chr chunk_split convert_cyr_string count_chars crc32 crypt explode fprintf get_html_translation_table hebrev hebrevc html_entity_decode htmlentities htmlspecialchars implode join levenshtein localeconv ltrim md5_file md5 metaphone money_format nl_langinfo nl2br number_format ord parse_str print printf quoted_printable_decode quotemeta rtrim setlocale sha1_file sha1 similar_text soundex sprintf sscanf str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count strcasecmp strchr strcmp strcoll strcspn strip_tags stripcslashes stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpos strrchr strrev strripos strrpos strspn strstr strtok strtolower strtoupper strtr substr_compare substr_count substr_replace substr trim ucfirst ucwords vprintf vsprintf wordwrap contained
+syn keyword phpFunctions fdiv get_debug_type getdir str_contains str_ends_with str_starts_with
+syn keyword phpFunctions swf_actiongeturl swf_actiongotoframe swf_actiongotolabel swf_actionnextframe swf_actionplay swf_actionprevframe swf_actionsettarget swf_actionstop swf_actiontogglequality swf_actionwaitforframe swf_addbuttonrecord swf_addcolor swf_closefile swf_definebitmap swf_definefont swf_defineline swf_definepoly swf_definerect swf_definetext swf_endbutton swf_enddoaction swf_endshape swf_endsymbol swf_fontsize swf_fontslant swf_fonttracking swf_getbitmapinfo swf_getfontinfo swf_getframe swf_labelframe swf_lookat swf_modifyobject swf_mulcolor swf_nextid swf_oncondition swf_openfile swf_ortho2 swf_ortho swf_perspective swf_placeobject swf_polarview swf_popmatrix swf_posround swf_pushmatrix swf_removeobject swf_rotate swf_scale swf_setfont swf_setframe swf_shapearc swf_shapecurveto3 swf_shapecurveto swf_shapefillbitmapclip swf_shapefillbitmaptile swf_shapefilloff swf_shapefillsolid swf_shapelinesolid swf_shapelineto swf_shapemoveto swf_showframe swf_startbutton swf_startdoaction swf_startshape swf_startsymbol swf_textwidth swf_translate swf_viewport contained
+syn keyword phpFunctions sybase_affected_rows sybase_close sybase_connect sybase_data_seek sybase_deadlock_retry_count sybase_fetch_array sybase_fetch_assoc sybase_fetch_field sybase_fetch_object sybase_fetch_row sybase_field_seek sybase_free_result sybase_get_last_message sybase_min_client_severity sybase_min_error_severity sybase_min_message_severity sybase_min_server_severity sybase_num_fields sybase_num_rows sybase_pconnect sybase_query sybase_result sybase_select_db sybase_set_message_handler sybase_unbuffered_query contained
+syn keyword phpFunctions tidy_access_count tidy_clean_repair tidy_config_count tidy_diagnose tidy_error_count tidy_get_body tidy_get_config tidy_get_error_buffer tidy_get_head tidy_get_html_ver tidy_get_html tidy_get_output tidy_get_release tidy_get_root tidy_get_status tidy_getopt tidy_is_xhtml tidy_load_config tidy_parse_file tidy_parse_string tidy_repair_file tidy_repair_string tidy_reset_config tidy_save_config tidy_set_encoding tidy_setopt tidy_warning_count tidy_is_xml tidy_get_opt_doc contained
+syn keyword phpMethods attributes children get_attr get_nodes has_children has_siblings is_asp is_comment is_html is_jsp is_jste is_text is_xhtml is_xml next prev tidy_node contained
+syn keyword phpFunctions token_get_all token_name contained
+syn keyword phpFunctions base64_decode base64_encode get_meta_tags http_build_query parse_url rawurldecode rawurlencode urldecode urlencode contained
+syn keyword phpFunctions doubleval empty floatval get_defined_vars get_resource_id get_resource_type gettype import_request_variables intval is_array is_bool is_callable is_double is_float is_int is_integer is_long is_null is_numeric is_object is_real is_resource is_scalar is_string isset print_r serialize settype strval unserialize unset var_dump var_export contained
+syn keyword phpFunctions get_called_class property_exists interface_exists trait_exists class_alias get_mangled_object_vars set_exception_handler restore_exception_handler get_declared_traits get_declared_interfaces get_resources gc_mem_caches gc_collect_cycles gc_enabled gc_enable gc_disable gc_status contained
+syn keyword phpFunctions vpopmail_add_alias_domain_ex vpopmail_add_alias_domain vpopmail_add_domain_ex vpopmail_add_domain vpopmail_add_user vpopmail_alias_add vpopmail_alias_del_domain vpopmail_alias_del vpopmail_alias_get_all vpopmail_alias_get vpopmail_auth_user vpopmail_del_domain_ex vpopmail_del_domain vpopmail_del_user vpopmail_error vpopmail_passwd vpopmail_set_user_quota contained
+syn keyword phpFunctions w32api_deftype w32api_init_dtype w32api_invoke_function w32api_register_function w32api_set_call_method contained
+syn keyword phpFunctions wddx_add_vars wddx_deserialize wddx_packet_end wddx_packet_start wddx_serialize_value wddx_serialize_vars contained
+syn keyword phpFunctions utf8_decode utf8_encode xml_error_string xml_get_current_byte_index xml_get_current_column_number xml_get_current_line_number xml_get_error_code xml_parse_into_struct xml_parse xml_parser_create_ns xml_parser_create xml_parser_free xml_parser_get_option xml_parser_set_option xml_set_character_data_handler xml_set_default_handler xml_set_element_handler xml_set_end_namespace_decl_handler xml_set_external_entity_ref_handler xml_set_notation_decl_handler xml_set_object xml_set_processing_instruction_handler xml_set_start_namespace_decl_handler xml_set_unparsed_entity_decl_handler contained
+syn keyword phpFunctions xmlrpc_decode_request xmlrpc_decode xmlrpc_encode_request xmlrpc_encode xmlrpc_get_type xmlrpc_parse_method_descriptions xmlrpc_server_add_introspection_data xmlrpc_server_call_method xmlrpc_server_create xmlrpc_server_destroy xmlrpc_server_register_introspection_callback xmlrpc_server_register_method xmlrpc_set_type xmlrpc_is_fault contained
+syn keyword phpFunctions xmlwriter_end_attribute xmlwriter_end_cdata xmlwriter_end_comment xmlwriter_end_document xmlwriter_end_dtd xmlwriter_end_dtd_attlist xmlwriter_end_dtd_element xmlwriter_end_dtd_entity xmlwriter_end_element xmlwriter_end_pi xmlwriter_flush xmlwriter_full_end_element xmlwriter_open_memory xmlwriter_open_uri xmlwriter_output_memory xmlwriter_set_indent xmlwriter_set_indent_string xmlwriter_start_attribute xmlwriter_start_attribute_ns xmlwriter_start_cdata xmlwriter_start_comment xmlwriter_start_document xmlwriter_start_dtd xmlwriter_start_dtd_attlist xmlwriter_start_dtd_element xmlwriter_start_dtd_entity xmlwriter_start_element xmlwriter_start_element_ns xmlwriter_start_pi xmlwriter_text xmlwriter_write_attribute xmlwriter_write_attribute_ns xmlwriter_write_cdata xmlwriter_write_comment xmlwriter_write_dtd xmlwriter_write_dtd_attlist xmlwriter_write_dtd_element xmlwriter_write_dtd_entity xmlwriter_write_element xmlwriter_write_element_ns xmlwriter_write_pi xmlwriter_write_raw contained
+syn keyword phpFunctions xslt_create xslt_errno xslt_error xslt_free xslt_output_process xslt_set_base xslt_set_encoding xslt_set_error_handler xslt_set_log xslt_set_sax_handler xslt_set_sax_handlers xslt_set_scheme_handler xslt_set_scheme_handlers contained
+syn keyword phpFunctions yaz_addinfo yaz_ccl_conf yaz_ccl_parse yaz_close yaz_connect yaz_database yaz_element yaz_errno yaz_error yaz_es_result yaz_get_option yaz_hits yaz_itemorder yaz_present yaz_range yaz_record yaz_scan_result yaz_scan yaz_schema yaz_search yaz_set_option yaz_sort yaz_syntax yaz_wait contained
+syn keyword phpFunctions zip_close zip_entry_close zip_entry_compressedsize zip_entry_compressionmethod zip_entry_filesize zip_entry_name zip_entry_open zip_entry_read zip_open zip_read contained
+syn keyword phpFunctions gzclose gzcompress gzdeflate gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell gzuncompress gzwrite readgzfile zlib_get_coding_type gzdecode zlib_encode zlib_decode deflate_init deflate_add inflate_init inflate_add inflate_get_status inflate_get_read_len contained
+
+if exists( "php_baselib" )
+ syn keyword phpMethods query next_record num_rows affected_rows nf f p np num_fields haltmsg seek link_id query_id metadata table_names nextid connect halt free register unregister is_registered delete url purl self_url pself_url hidden_session add_query padd_query reimport_get_vars reimport_post_vars reimport_cookie_vars set_container set_tokenname release_token put_headers get_id get_id put_id freeze thaw gc reimport_any_vars start url purl login_if is_authenticated auth_preauth auth_loginform auth_validatelogin auth_refreshlogin auth_registerform auth_doregister start check have_perm permsum perm_invalid contained
+ syn keyword phpFunctions page_open page_close sess_load sess_save contained
+endif
+
+" Conditional
+syn keyword phpConditional declare else enddeclare endswitch elseif endif if switch match contained
+
+" Repeat
+syn keyword phpRepeat as do endfor endforeach endwhile for foreach while contained
+
+" Label
+syn keyword phpLabel case default switch contained
+
+" Statement
+syn keyword phpStatement return break continue exit goto yield contained
+
+" Keyword
+syn keyword phpKeyword var const contained
+
+" Type
+syn keyword phpType void bool boolean int integer real double float string array object NULL callable iterable mixed never contained
+
+" Structure
+syn keyword phpStructure namespace extends implements instanceof parent self contained
+
+" Operator
+syn match phpOperator "[-=+%^&|*!.~?:]" contained display
+syn match phpOperator "[-+*/%^&|.]=" contained display
+syn match phpOperator "/[^*/]"me=e-1 contained display
+syn match phpOperator "\$" contained display
+syn match phpOperator "&&\|\<and\>" contained display
+syn match phpOperator "||\|\<x\=or\>" contained display
+syn match phpRelation "[!=<>]=" contained display
+syn match phpRelation "[<>]" contained display
+syn match phpRelation "<=>" contained display
+" PHP 8.0 adds the nullsafe operator ?-> for property access and method calls.
+syn match phpMemberSelector "?\?->" contained display
+syn match phpVarSelector "\$" contained display
+
+" Identifier
+syn match phpIdentifier "$\h\w*" contained contains=phpEnvVar,phpIntVar,phpVarSelector display
+syn match phpIdentifierSimply "${\h\w*}" contains=phpOperator,phpParent contained display
+syn region phpIdentifierComplex matchgroup=phpParent start="{\$"rs=e-1 end="}" contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierComplexP contained extend
+syn region phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contains=@phpClInside contained
+
+" Interpolated indentifiers (inside strings)
+ syn match phpBrackets "[][}{]" contained display
+ " errors
+ syn match phpInterpSimpleError "\[[^]]*\]" contained display " fallback (if nothing else matches)
+ syn match phpInterpSimpleError "?\?->[^a-zA-Z_]" contained display
+ " make sure these stay above the correct DollarCurlies so they don't take priority
+ syn match phpInterpBogusDollarCurley "${[^}]*}" contained display " fallback (if nothing else matches)
+ syn match phpInterpSimpleBracketsInner "\w\+" contained
+ syn match phpInterpSimpleBracketsInner "\$\h\w*" contained
+ syn match phpInterpSimpleBrackets "\[\$\?\h\w*]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
+ " -0x1 and -123 refer to the string offsets '-0x1' and '-123' of array keys
+ " TODO: Support [1_2], [-0b1_10_1], etc (also literal strings).
+ syn match phpInterpSimpleBrackets "\[-\?\d\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
+ syn match phpInterpSimpleBrackets "\[-\?0[xX]\x\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
+ syn match phpInterpSimpleBrackets "\[-\?0[bB][01]\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
+ syn match phpInterpSimple "\$\h\w*\(\[[^]]*\]\|?\?->\h\w*\)\?" contained contains=phpInterpSimpleBrackets,phpIdentifier,phpInterpSimpleError,phpMethods,phpMemberSelector display
+ syn match phpInterpVarname "\h\w*" contained
+ syn match phpInterpMethodName "\h\w*" contained " default color
+ syn match phpInterpSimpleCurly "\${\h\w*}" contains=phpInterpVarname contained extend
+ syn region phpInterpDollarCurley1Helper matchgroup=phpParent start="{" end="\[" contains=phpInterpVarname contained
+ syn region phpInterpDollarCurly1 matchgroup=phpParent start="\${\h\w*\["rs=s+1 end="]}" contains=phpInterpDollarCurley1Helper,@phpClConst contained extend
+
+ syn match phpInterpDollarCurley2Helper "{\h\w*?\?->" contains=phpBrackets,phpInterpVarname,phpMemberSelector contained
+
+ syn region phpInterpDollarCurly2 matchgroup=phpParent start="\${\h\w*?\?->"rs=s+1 end="}" contains=phpInterpDollarCurley2Helper,phpInterpMethodName contained
+
+ syn match phpInterpBogusDollarCurley "${\h\w*?\?->}" contained display
+ syn match phpInterpBogusDollarCurley "${\h\w*\[]}" contained display
+
+ syn region phpInterpComplex matchgroup=phpParent start="{\$"rs=e-1 end="}" contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierComplexP contained extend
+ syn region phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contains=@phpClInside contained
+ " define a cluster to get all interpolation syntaxes for double-quoted strings
+ syn cluster phpInterpDouble contains=phpInterpSimple,phpInterpSimpleCurly,phpInterpDollarCurly1,phpInterpDollarCurly2,phpInterpBogusDollarCurley,phpInterpComplex
+
+" Methods
+syn match phpMethodsVar "?\?->\h\w*" contained contains=phpMethods,phpMemberSelector display
+
+" Include
+syn keyword phpInclude include require include_once require_once use contained
+
+" Define
+syn keyword phpDefine new clone contained
+
+" Boolean
+syn keyword phpBoolean true false contained
+
+" Float
+" Refer to: https://www.php.net/manual/en/language.types.float.php
+syn match phpFloat "\%(\w\|\.\)\@<!\%(\d_\?\|\.\)*\d\%(\d\|_\|\.\)*\%([eE][+-]\=\%(\d\|_\|\.\)\+\)\=\%(\w\|\.\)\@!" contained contains=phpFloatError display
+syn match phpFloatError "\%([eE.][0-9._+-]*\.\|__\|_\(\>\|[eE]\)\|\(\>\|[eE]\)_\)" contained display
+
+" Number
+syn match phpNumber "\%(\.\)\@<!\<\%([1-9]\d*\|0\|0[xX]\(\x_\?\)*\x\)\>\%(\.\)\@!" contained display
+syn match phpNumber "\%(\.\)\@<!\<0\d\+\|0[oO]\d\+\>\%(\.\)\@!" contained contains=phpOctalError display
+syn match phpBinaryError "[2-9]" contained display
+syn match phpNumber "\%(\.\)\@<!\<0[bB]\(\d_\?\)*\d\>\%(\.\)\@!" contained contains=phpBinaryError display
+
+" Backslash escapes
+syn case match
+" for double quotes and heredoc
+syn match phpBackslashSequences "\\[fnrtv\\\"$]" contained display
+syn match phpBackslashSequences "\\\d\{1,3}" contained contains=phpOctalError display
+syn match phpBackslashSequences "\\x\x\{1,2}" contained display
+" additional sequence for double quotes only
+syn match phpBackslashDoubleQuote "\\[\"]" contained display
+" for single quotes only
+syn match phpBackslashSingleQuote "\\[\\']" contained display
+syn case ignore
+
+
+" Error
+syn match phpOctalError "[89]" contained display
+if exists("php_parent_error_close")
+ syn match phpParentError "[)\]}]" contained display
+endif
+
+" Todo
+syn keyword phpTodo todo fixme xxx contained
+
+" Comment
+if exists("php_parent_error_open")
+ syn region phpComment start="/\*" end="\*/" contained contains=phpTodo,@Spell
+else
+ syn region phpComment start="/\*" end="\*/" contained contains=phpTodo,@Spell extend
+endif
+syn match phpComment "#.\{-}\(?>\|$\)\@=" contained contains=phpTodo,@Spell
+syn match phpComment "//.\{-}\(?>\|$\)\@=" contained contains=phpTodo,@Spell
+
+" String
+if exists("php_parent_error_open")
+ syn region phpStringDouble matchgroup=phpStringDouble start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@phpAddStrings,phpBackslashSequences,phpBackslashDoubleQuote,@phpInterpDouble,@Spell contained keepend
+ syn region phpBacktick matchgroup=phpBacktick start=+`+ skip=+\\\\\|\\"+ end=+`+ contains=@phpAddStrings,phpIdentifier,phpBackslashSequences,phpIdentifierSimply,phpIdentifierComplex contained keepend
+ syn region phpStringSingle matchgroup=phpStringSingle start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@phpAddStrings,phpBackslashSingleQuote,@Spell contained keepend
+else
+ syn region phpStringDouble matchgroup=phpStringDouble start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@phpAddStrings,phpBackslashSequences,phpBackslashDoubleQuote,@phpInterpDouble,@Spell contained extend keepend
+ syn region phpBacktick matchgroup=phpBacktick start=+`+ skip=+\\\\\|\\"+ end=+`+ contains=@phpAddStrings,phpIdentifier,phpBackslashSequences,phpIdentifierSimply,phpIdentifierComplex contained extend keepend
+ syn region phpStringSingle matchgroup=phpStringSingle start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@phpAddStrings,phpBackslashSingleQuote,@Spell contained keepend extend
+endif
+
+" HereDoc and NowDoc
+syn case match
+
+" HereDoc
+syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\I\i*\)\2$" end="^\s*\z1\>" contained contains=phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar,@Spell keepend extend
+" including HTML,JavaScript,SQL even if not enabled via options
+syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)\2$" end="^\s*\z1\>" contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar,@Spell keepend extend
+syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)\2$" end="^\s*\z1\>" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar,@Spell keepend extend
+syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)\2$" end="^\s*\z1\>" contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar,@Spell keepend extend
+
+" NowDoc
+syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\I\i*\)'$" end="^\s*\z1\>" contained contains=@Spell keepend extend
+" including HTML,JavaScript,SQL even if not enabled via options
+syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)'$" end="^\s*\z1\>" contained contains=@htmlTop,@Spell keepend extend
+syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)'$" end="^\s*\z1\>" contained contains=@sqlTop,@Spell keepend extend
+syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)'$" end="^\s*\z1\>" contained contains=@htmlJavascript,@Spell keepend extend
+syn case ignore
+
+" Parent
+if exists("php_parent_error_close") || exists("php_parent_error_open")
+ syn match phpParent "[{}]" contained
+ syn region phpParent matchgroup=Delimiter start="(" end=")" contained contains=@phpClInside transparent
+ syn region phpParent matchgroup=Delimiter start="#\?\[" end="\]" contained contains=@phpClInside transparent
+ if !exists("php_parent_error_close")
+ syn match phpParent "[\])]" contained
+ endif
+else
+ syn match phpParent "[({[\]})]" contained
+ syn match phpParent "#\[" contained
+endif
+
+syn cluster phpClConst contains=phpFunctions,phpIdentifier,phpConditional,phpRepeat,phpStatement,phpOperator,phpRelation,phpStringSingle,phpStringDouble,phpBacktick,phpNumber,phpFloat,phpKeyword,phpType,phpBoolean,phpStructure,phpMethodsVar,phpConstant,phpCoreConstant,phpException
+syn cluster phpClInside contains=@phpClConst,phpComment,phpLabel,phpParent,phpParentError,phpInclude,phpHereDoc,phpNowDoc
+syn cluster phpClFunction contains=@phpClInside,phpDefine,phpParentError,phpStorageClass
+syn cluster phpClTop contains=@phpClFunction,phpFoldFunction,phpFoldClass,phpFoldInterface,phpFoldTry,phpFoldCatch
+
+" Php Region
+if exists("php_parent_error_open")
+ if exists("php_noShortTags")
+ syn region phpRegion matchgroup=Delimiter start="<?\(php\|=\)" end="?>" contains=@phpClTop
+ else
+ syn region phpRegion matchgroup=Delimiter start="<?\(php\)\=" end="?>" contains=@phpClTop
+ endif
+ syn region phpRegionSc matchgroup=Delimiter start=+<script language="php">+ end=+</script>+ contains=@phpClTop
+ if exists("php_asp_tags")
+ syn region phpRegionAsp matchgroup=Delimiter start="<%\(=\)\=" end="%>" contains=@phpClTop
+ endif
+else
+ if exists("php_noShortTags")
+ syn region phpRegion matchgroup=Delimiter start="<?\(php\|=\)" end="?>" contains=@phpClTop keepend
+ else
+ syn region phpRegion matchgroup=Delimiter start="<?\(php\)\=" end="?>" contains=@phpClTop keepend
+ endif
+ syn region phpRegionSc matchgroup=Delimiter start=+<script language="php">+ end=+</script>+ contains=@phpClTop keepend
+ if exists("php_asp_tags")
+ syn region phpRegionAsp matchgroup=Delimiter start="<%\(=\)\=" end="%>" contains=@phpClTop keepend
+ endif
+endif
+
+" Fold
+if exists("php_folding") && php_folding==1
+" match one line constructs here and skip them at folding
+ syn keyword phpSCKeyword abstract final private protected public static readonly contained
+ syn keyword phpFCKeyword function contained
+ syn keyword phpDefine fn contained
+ syn keyword phpStorageClass global contained
+ syn match phpDefine "\(\s\|^\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\(\s\+.*[;}]\)\@=" contained contains=phpSCKeyword
+ syn match phpStructure "\(\s\|^\)\(abstract\s\+\|final\s\+\)*\(trait\|class\)\(\s\+.*}\)\@=" contained
+ syn match phpStructure "\(\s\|^\)\(interface\|enum\)\(\s\+.*}\)\@=" contained
+ syn match phpException "\(\s\|^\)try\(\s\+.*}\)\@=" contained
+ syn match phpException "\(\s\|^\)catch\(\s\+.*}\)\@=" contained
+ syn match phpException "\(\s\|^\)finally\(\s\+.*}\)\@=" contained
+
+ setlocal foldmethod=syntax
+ syn region phpFoldHtmlInside matchgroup=Delimiter start="?>" end="<?\(php\)\=" contained transparent contains=@htmlTop
+ syn region phpFoldFunction matchgroup=Storageclass start="^\z(\s*\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\s\([^};]*$\)\@="rs=e-9 matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldHtmlInside,phpFCKeyword contained transparent fold extend
+ syn region phpFoldFunction matchgroup=Define start="^function\s\([^};]*$\)\@=" matchgroup=Delimiter end="^}" contains=@phpClFunction,phpFoldHtmlInside contained transparent fold extend
+ syn region phpFoldClass matchgroup=Structure start="^\z(\s*\)\(abstract\s\+\|final\s\+\)*\(trait\|class\|enum\)\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction,phpSCKeyword contained transparent fold extend
+ syn region phpFoldInterface matchgroup=Structure start="^\z(\s*\)interface\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend
+ syn region phpFoldCatch matchgroup=Exception start="^\z(\s*\)catch\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend
+ syn region phpFoldTry matchgroup=Exception start="^\z(\s*\)try\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend
+else
+ syn keyword phpDefine function fn contained
+ syn keyword phpStructure abstract class trait interface enum contained
+ syn keyword phpException catch throw try finally contained
+ syn keyword phpStorageClass final global private protected public static readonly contained
+ if exists("php_folding") && php_folding==2
+ setlocal foldmethod=syntax
+ syn region phpFoldHtmlInside matchgroup=Delimiter start="?>" end="<?\(php\)\=" contained transparent contains=@htmlTop
+ syn region phpParent matchgroup=Delimiter start="{" end="}" contained contains=@phpClFunction,phpFoldHtmlInside transparent fold
+ endif
+endif
+
+" ================================================================
+" Peter Hodge - June 9, 2006
+" Some of these changes (highlighting isset/unset/echo etc) are not so
+" critical, but they make things more colourful. :-)
+
+" different syntax highlighting for 'echo', 'print', 'switch', 'die' and 'list' keywords
+" to better indicate what they are.
+syntax keyword phpDefine echo print contained
+syntax keyword phpStructure list contained
+syntax keyword phpConditional switch contained
+syntax keyword phpStatement die contained
+
+" Highlighting for PHP's user-definable magic class methods
+syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier
+ \ __construct __destruct __call __callStatic __get __set __isset __unset __sleep __wakeup __toString __invoke __set_state __clone __debugInfo __serialize __unserialize
+" Highlighting for __autoload slightly different from line above
+syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar
+ \ __autoload
+hi def link phpSpecialFunction phpOperator
+
+" Highlighting for PHP5's built-in classes
+" Note: Some of the names have inconsistent cases.
+" Those are probably the actual name in reflection and should not be changed in
+" this file.
+" (CURLFile and CurlShareHandle, XMLReader and XmlParser, etc)
+syntax keyword phpClasses containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar
+ \ stdClass __PHP_Incomplete_Class php_user_filter AssertionError Directory ArrayObject
+ \ Exception ErrorException LogicException BadFunctionCallException BadMethodCallException DomainException
+ \ ArgumentCountError ArithmeticError ClosedGeneratorException Closure CompileError DivisionByZeroError Generator ParseError TypeError WeakReference
+ \ RecursiveIteratorIterator IteratorIterator FilterIterator RecursiveFilterIterator ParentIterator LimitIterator
+ \ CachingIterator RecursiveCachingIterator NoRewindIterator AppendIterator InfiniteIterator EmptyIterator
+ \ ArrayIterator RecursiveArrayIterator DirectoryIterator RecursiveDirectoryIterator
+ \ CallbackFilterIterator FilesystemIterator GlobIterator MultipleIterator RecursiveCallbackFilterIterator
+ \ RecursiveRegexIterator RecursiveTreeIterator RegexIterator SplDoublyLinkedList
+ \ SplFixedArray SplHeap SplMaxHeap SplMinHeap SplPriorityQueue SplQueue SplStack
+ \ InvalidArgumentException LengthException OutOfRangeException RuntimeException OutOfBoundsException
+ \ Attribute InternalIterator Stringable UnhandledMatchError ValueError WeakMap
+ \ OverflowException RangeException UnderflowException UnexpectedValueException
+ \ PDO PDOException PDOStatement PDORow
+ \ Reflection ReflectionFunction ReflectionParameter ReflectionMethod ReflectionClass
+ \ ReflectionObject ReflectionProperty ReflectionExtension ReflectionException
+ \ ReflectionClassConstant ReflectionFunctionAbstract ReflectionGenerator ReflectionNamedType
+ \ ReflectionReference ReflectionType ReflectionZendExtension
+ \ ReflectionAttribute ReflectionUnionType
+ \ SplFileInfo SplFileObject SplTempFileObject SplObjectStorage
+ \ XMLWriter LibXMLError XMLReader SimpleXMLElement SimpleXMLIterator
+ \ XmlParser
+ \ DeflateContext InflateContext
+ \ DOMException DOMStringList DOMNameList DOMDomError DOMErrorHandler
+ \ DOMImplementation DOMImplementationList DOMImplementationSource
+ \ DOMNode DOMNameSpaceNode DOMDocumentFragment DOMDocument DOMNodeList DOMNamedNodeMap
+ \ DOMCharacterData DOMAttr DOMElement DOMText DOMComment DOMTypeinfo DOMUserDataHandler
+ \ DOMLocator DOMConfiguration DOMCdataSection DOMDocumentType DOMNotation DOMEntity
+ \ DOMEntityReference DOMProcessingInstruction DOMStringExtend DOMXPath
+ \ DOMChildNode DOMParentNode
+ \ EnchantBroker EnchantDictionary
+ \ GdImage
+ \ OpenSSLAsymmetricKey OpenSSLCertificate OpenSSLCertificateSigningRequest
+ \ Shmop
+ \ AddressInfo Socket
+ \ SysvMessageQueue SysvSemaphore SysvSharedMemory
+ \ PhpToken
+ \ APCIterator APCuIterator
+ \ CURLFile CurlHandle CurlMultiHandle CurlShareHandle
+ \ DateInterval DatePeriod DateTime DateTimeImmutable DateTimeZone
+ \ finfo
+ \ GMP
+ \ Collator IntlBreakIterator IntlCalendar IntlChar IntlCodePointBreakIterator IntlDateFormatter IntlException IntlGregorianCalendar IntlIterator IntlPartsIterator IntlRuleBasedBreakIterator IntlTimeZone Locale MessageFormatter Normalizer NumberFormatter ResourceBundle Spoofchecker Transliterator UConverter
+ \ FFI CData CType ParserException
+ \ HashContext
+ \ JsonException
+ \ Memcached MemcachedException
+ \ mysqli mysqli_driver mysqli_result mysqli_sql_exception mysqli_stmt mysqli_warning
+ \ SessionHandler
+ \ SoapClient SoapFault SoapHeader SoapParam SoapServer SoapVar
+ \ SQLite3 SQLite3Result SQLite3Stmt
+ \ tidy tidyNode
+ \ XSLTProcessor ZipArchive
+ \ Phar PharData PharException PharFileInfo
+
+hi def link phpClasses phpFunctions
+
+" Highlighting for PHP's built-in interfaces
+syntax keyword phpInterfaces containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar
+ \ Iterator IteratorAggregate RecursiveIterator OuterIterator SeekableIterator
+ \ Traversable ArrayAccess Serializable Countable SplObserver SplSubject Reflector
+ \ Throwable DateTimeInterface JsonSerializable SessionHandlerInterface SessionIdInterface SessionUpdateTimestampHandlerInterface
+
+hi def link phpInterfaces phpConstant
+
+" option defaults:
+if ! exists('php_special_functions')
+ let php_special_functions = 1
+endif
+if ! exists('php_alt_comparisons')
+ let php_alt_comparisons = 1
+endif
+if ! exists('php_alt_assignByReference')
+ let php_alt_assignByReference = 1
+endif
+
+if php_special_functions
+ " Highlighting for PHP built-in functions which exhibit special behaviours
+ " - isset()/unset()/empty() are not real functions.
+ " - compact()/extract() directly manipulate variables in the local scope where
+ " regular functions would not be able to.
+ " - eval() is the token 'make_your_code_twice_as_complex()' function for PHP.
+ " - user_error()/trigger_error() can be overloaded by set_error_handler and also
+ " have the capacity to terminate your script when type is E_USER_ERROR.
+ " - match(){} is not a function
+ syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle
+ \ user_error trigger_error isset unset eval extract compact empty
+endif
+
+if php_alt_assignByReference
+ " special highlighting for '=&' operator
+ syntax match phpAssignByRef /=\s*&/ containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle
+ hi def link phpAssignByRef Type
+endif
+
+if php_alt_comparisons
+ " highlight comparison operators differently
+ syntax match phpComparison "\v[=!]\=\=?" contained containedin=phpRegion
+ syntax match phpComparison "\v[=<>-]@<![<>]\=?[<>]@!" contained containedin=phpRegion
+ syntax match phpComparison "<=>" contained containedin=phpRegion
+
+ " highlight the 'instanceof' operator as a comparison operator rather than a structure
+ syntax case ignore
+ syntax keyword phpComparison instanceof contained containedin=phpRegion
+
+ hi def link phpComparison Statement
+endif
+
+" ================================================================
+
+" Sync
+if php_sync_method==-1
+ if exists("php_noShortTags")
+ syn sync match phpRegionSync grouphere phpRegion "^\s*<?\(php\|=\)\s*$"
+ else
+ syn sync match phpRegionSync grouphere phpRegion "^\s*<?\(php\)\=\s*$"
+ endif
+ syn sync match phpRegionSync grouphere phpRegionSc +^\s*<script language="php">\s*$+
+ if exists("php_asp_tags")
+ syn sync match phpRegionSync grouphere phpRegionAsp "^\s*<%\(=\)\=\s*$"
+ endif
+ syn sync match phpRegionSync grouphere NONE "^\s*?>\s*$"
+ syn sync match phpRegionSync grouphere NONE "^\s*%>\s*$"
+ syn sync match phpRegionSync grouphere phpRegion "function\s.*(.*\$"
+ "syn sync match phpRegionSync grouphere NONE "/\i*>\s*$"
+elseif php_sync_method>0
+ exec "syn sync minlines=" . php_sync_method
+else
+ exec "syn sync fromstart"
+endif
+
+syntax match phpDocCustomTags "@[a-zA-Z]*\(\s\+\|\n\|\r\)" containedin=phpComment
+syntax region phpDocTags start="{@\(example\|id\|internal\|inheritdoc\|link\|source\|toc\|tutorial\)" end="}" containedin=phpComment
+syntax match phpDocTags "@\(abstract\|access\|api\|author\|category\|copyright\|deprecated\|example\|final\|global\|ignore\|internal\|license\|link\|method\|name\|package\|param\|property\(-write\|-read\)\?\|return\|see\|since\|source\|static\|staticvar\|subpackage\|tutorial\|uses\|used-by\|var\|version\|contributor\|modified\|filename\|description\|filesource\|throws\)\(\s\+\)\?" containedin=phpComment
+syntax match phpDocTodo "@\(todo\|fixme\|xxx\)\(\s\+\)\?" containedin=phpComment
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link phpConstant Constant
+hi def link phpCoreConstant Constant
+hi def link phpComment Comment
+hi def link phpDocTags PreProc
+hi def link phpDocCustomTags Type
+hi def link phpException Exception
+hi def link phpBoolean Boolean
+hi def link phpStorageClass StorageClass
+hi def link phpSCKeyword StorageClass
+hi def link phpFCKeyword Define
+hi def link phpStructure Structure
+hi def link phpStringSingle String
+hi def link phpStringDouble String
+hi def link phpBacktick String
+hi def link phpNumber Number
+hi def link phpFloat Float
+hi def link phpMethods Function
+hi def link phpFunctions Function
+hi def link phpBaselib Function
+hi def link phpRepeat Repeat
+hi def link phpConditional Conditional
+hi def link phpLabel Label
+hi def link phpStatement Statement
+hi def link phpKeyword Statement
+hi def link phpType Type
+hi def link phpInclude Include
+hi def link phpDefine Define
+hi def link phpBackslashSequences SpecialChar
+hi def link phpBackslashDoubleQuote SpecialChar
+hi def link phpBackslashSingleQuote SpecialChar
+hi def link phpParent Delimiter
+hi def link phpBrackets Delimiter
+hi def link phpIdentifierConst Delimiter
+hi def link phpParentError Error
+hi def link phpOctalError Error
+hi def link phpBinaryError Error
+hi def link phpFloatError Error
+hi def link phpInterpSimpleError Error
+hi def link phpInterpBogusDollarCurley Error
+hi def link phpInterpDollarCurly1 Error
+hi def link phpInterpDollarCurly2 Error
+hi def link phpInterpSimpleBracketsInner String
+hi def link phpInterpSimpleCurly Delimiter
+hi def link phpInterpVarname Identifier
+hi def link phpTodo Todo
+hi def link phpDocTodo Todo
+hi def link phpMemberSelector Structure
+if exists("php_oldStyle")
+ hi def phpIntVar guifg=Red ctermfg=DarkRed
+ hi def phpEnvVar guifg=Red ctermfg=DarkRed
+ hi def phpOperator guifg=SeaGreen ctermfg=DarkGreen
+ hi def phpVarSelector guifg=SeaGreen ctermfg=DarkGreen
+ hi def phpRelation guifg=SeaGreen ctermfg=DarkGreen
+ hi def phpIdentifier guifg=DarkGray ctermfg=Brown
+ hi def phpIdentifierSimply guifg=DarkGray ctermfg=Brown
+else
+ hi def link phpIntVar Identifier
+ hi def link phpEnvVar Identifier
+ hi def link phpOperator Operator
+ hi def link phpVarSelector Operator
+ hi def link phpRelation Operator
+ hi def link phpIdentifier Identifier
+ hi def link phpIdentifierSimply Identifier
+endif
+
+let b:current_syntax = "php"
+
+if main_syntax == 'php'
+ unlet main_syntax
+endif
+
+" put cpoptions back the way we found it
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 sts=2 sw=2 expandtab
diff --git a/runtime/syntax/phtml.vim b/runtime/syntax/phtml.vim
new file mode 100644
index 0000000..646129a
--- /dev/null
+++ b/runtime/syntax/phtml.vim
@@ -0,0 +1,6 @@
+" Vim syntax file
+" PHTML used to be the filetype for PHP 2.0. Now everything is PHP.
+
+if !exists("b:current_syntax")
+ runtime! syntax/php.vim
+endif
diff --git a/runtime/syntax/pic.vim b/runtime/syntax/pic.vim
new file mode 100644
index 0000000..bcb01f4
--- /dev/null
+++ b/runtime/syntax/pic.vim
@@ -0,0 +1,114 @@
+" Vim syntax file
+" Language: PIC16F84 Assembler (Microchip's microcontroller)
+" Maintainer: Aleksandar Veselinovic <aleksa@cs.cmu.com>
+" Last Change: 2003 May 11
+" URL: http://galeb.etf.bg.ac.yu/~alexa/vim/syntax/pic.vim
+" Revision: 1.01
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+syn keyword picTodo NOTE TODO XXX contained
+
+syn case ignore
+
+syn match picIdentifier "[a-z_$][a-z0-9_$]*"
+syn match picLabel "^[A-Z_$][A-Z0-9_$]*"
+syn match picLabel "^[A-Z_$][A-Z0-9_$]*:"me=e-1
+
+syn match picASCII "A\='.'"
+syn match picBinary "B'[0-1]\+'"
+syn match picDecimal "D'\d\+'"
+syn match picDecimal "\d\+"
+syn match picHexadecimal "0x\x\+"
+syn match picHexadecimal "H'\x\+'"
+syn match picHexadecimal "[0-9]\x*h"
+syn match picOctal "O'[0-7]\o*'"
+
+
+syn match picComment ";.*" contains=picTodo
+
+syn region picString start=+"+ end=+"+
+
+syn keyword picRegister INDF TMR0 PCL STATUS FSR PORTA PORTB
+syn keyword picRegister EEDATA EEADR PCLATH INTCON INDF OPTION_REG PCL
+syn keyword picRegister FSR TRISA TRISB EECON1 EECON2 INTCON OPTION
+
+
+" Register --- bits
+
+" STATUS
+syn keyword picRegisterPart IRP RP1 RP0 TO PD Z DC C
+
+" PORTA
+syn keyword picRegisterPart T0CKI
+syn match picRegisterPart "RA[0-4]"
+
+" PORTB
+syn keyword picRegisterPart INT
+syn match picRegisterPart "RB[0-7]"
+
+" INTCON
+syn keyword picRegisterPart GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
+
+" OPTION
+syn keyword picRegisterPart RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
+
+" EECON2
+syn keyword picRegisterPart EEIF WRERR WREN WR RD
+
+" INTCON
+syn keyword picRegisterPart GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
+
+
+" OpCodes...
+syn keyword picOpcode ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ INCF INCFSZ
+syn keyword picOpcode IORWF MOVF MOVWF NOP RLF RRF SUBWF SWAPF XORWF
+syn keyword picOpcode BCF BSF BTFSC BTFSS
+syn keyword picOpcode ADDLW ANDLW CALL CLRWDT GOTO IORLW MOVLW RETFIE
+syn keyword picOpcode RETLW RETURN SLEEP SUBLW XORLW
+syn keyword picOpcode GOTO
+
+
+" Directives
+syn keyword picDirective __BADRAM BANKISEL BANKSEL CBLOCK CODE __CONFIG
+syn keyword picDirective CONSTANT DATA DB DE DT DW ELSE END ENDC
+syn keyword picDirective ENDIF ENDM ENDW EQU ERROR ERRORLEVEL EXITM EXPAND
+syn keyword picDirective EXTERN FILL GLOBAL IDATA __IDLOCS IF IFDEF IFNDEF
+syn keyword picDirective INCLUDE LIST LOCAL MACRO __MAXRAM MESSG NOEXPAND
+syn keyword picDirective NOLIST ORG PAGE PAGESEL PROCESSOR RADIX RES SET
+syn keyword picDirective SPACE SUBTITLE TITLE UDATA UDATA_OVR UDATA_SHR
+syn keyword picDirective VARIABLE WHILE INCLUDE
+syn match picDirective "#\=UNDEFINE"
+syn match picDirective "#\=INCLUDE"
+syn match picDirective "#\=DEFINE"
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link picTodo Todo
+hi def link picComment Comment
+hi def link picDirective Statement
+hi def link picLabel Label
+hi def link picString String
+
+"hi def link picOpcode Keyword
+"hi def link picRegister Structure
+"hi def link picRegisterPart Special
+
+hi def link picASCII String
+hi def link picBinary Number
+hi def link picDecimal Number
+hi def link picHexadecimal Number
+hi def link picOctal Number
+
+hi def link picIdentifier Identifier
+
+
+let b:current_syntax = "pic"
+
+" vim: ts=8
diff --git a/runtime/syntax/pike.vim b/runtime/syntax/pike.vim
new file mode 100644
index 0000000..2c34cb4
--- /dev/null
+++ b/runtime/syntax/pike.vim
@@ -0,0 +1,386 @@
+" Vim syntax file
+" Language: Pike
+" Maintainer: Stephen R. van den Berg <srb@cuci.nl>
+" Maintainer of previous implementation: Francesco Chemolli <kinkie@kame.usr.dsi.unimi.it>
+" Last Change: 2018 Jan 28
+" Version: 2.9
+" Remark: Derived from the C-syntax; fixed several bugs in the C-syntax
+" Remark: and extended it with the Pike syntax.
+" Remark: Includes a highlighter for all Pike types of parenthesis errors.
+" Remark: Includes a highlighter for SQL on multiline strings.
+" Remark: Includes a highlighter for any embedded Autodoc format.
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" For multiline strings, try formatting them as SQL
+syn include @pikeSQL <sfile>:p:h/sqloracle.vim
+unlet b:current_syntax
+
+" For embedded Autodoc documentation (WIP)
+syn include @pikeAutodoc <sfile>:p:h/autodoc.vim
+unlet b:current_syntax
+
+syn case match
+
+" Supports array, multiset, mapping multi-character delimiter matching
+" Supports rotating amongst several same-level preprocessor conditionals
+packadd! matchit
+let b:match_words = "({:}\\@1<=),(\\[:]\\@1<=),(<:>\\@1<=),^\s*#\s*\%(if\%(n\?def\)\|else\|el\%(se\)\?if\|endif\)\>"
+
+" A bunch of useful Pike keywords
+syn keyword pikeDebug gauge backtrace describe_backtrace werror _Static_assert static_assert
+syn keyword pikeException error catch throw
+syn keyword pikeLabel case default break return continue
+syn keyword pikeConditional if else switch
+syn keyword pikeRepeat while for foreach do
+
+syn keyword pikePredef RegGetKeyNames RegGetValue RegGetValues
+syn keyword pikePredef __automap__ __empty_program
+syn keyword pikePredef __handle_sprintf_format __parse_pike_type _disable_threads
+syn keyword pikePredef _do_call_outs _exit _gdb_breakpoint
+syn keyword pikePredef abs access acos acosh add_constant alarm all_constants
+syn keyword pikePredef array_sscanf asin asinh atan atan2 atanh atexit
+syn keyword pikePredef basetype call_function call_out call_out_info cd ceil
+syn keyword pikePredef combine_path combine_path_nt
+syn keyword pikePredef combine_path_unix compile copy_value cos cosh cpp crypt
+syn keyword pikePredef ctime decode_value delay encode_value encode_value_canonic
+syn keyword pikePredef enumerate errno exece exit exp file_stat file_truncate
+syn keyword pikePredef filesystem_stat find_call_out floor fork function_name
+syn keyword pikePredef function_object function_program gc
+syn keyword pikePredef get_active_compilation_handler get_active_error_handler
+syn keyword pikePredef get_all_groups get_all_users get_dir get_groups_for_user
+syn keyword pikePredef get_iterator get_profiling_info get_weak_flag getcwd
+syn keyword pikePredef getgrgid getgrnam gethrdtime gethrtime gethrvtime getpid
+syn keyword pikePredef getpwnam getpwuid getxattr glob gmtime has_index has_prefix
+syn keyword pikePredef has_suffix has_value hash hash_7_0 hash_7_4 hash_8_0
+syn keyword pikePredef hash_value kill limit listxattr load_module localtime
+syn keyword pikePredef log lower_case master max min mkdir mktime mv
+syn keyword pikePredef object_program pow query_num_arg random_seed
+syn keyword pikePredef remove_call_out removexattr replace_master rm round
+syn keyword pikePredef set_priority set_weak_flag setxattr sgn signal signame
+syn keyword pikePredef signum sin sinh sleep sort sprintf sqrt sscanf strerror
+syn keyword pikePredef string_filter_non_unicode string_to_unicode string_to_utf8
+syn keyword pikePredef tan tanh time trace types ualarm unicode_to_string
+syn keyword pikePredef upper_case utf8_to_string version
+
+syn keyword pikePredef write lock try_lock
+syn keyword pikePredef MutexKey Timestamp Date Time TimeTZ Interval Inet Range
+syn keyword pikePredef Null null inf nan
+
+syn keyword pikeTodo contained TODO FIXME XXX
+
+" Match parengroups: allows for highlighting indices of mappings and
+" highlighting semicolons that are out of place due to a paren imbalance
+syn cluster pikePreShort contains=pikeDefine,pikePreProc,pikeCppOutWrapper,pikeCppInWrapper,pikePreCondit,pikePreConditMatch
+syn cluster pikeExprGroup contains=pikeMappIndex,@pikeStmt,pikeNest,@pikeBadGroup,pikeSoftCast
+syn match pikeWord transparent contained /[^()'"[\]{},;:]\+/ contains=ALLBUT,@pikePreProcGroup,@pikeExprGroup
+syn match pikeFirstWord transparent display contained /^\s*#[^()'"[\]{},;:]\+/ contains=@pikePreShort
+syn cluster pikeMappElm contains=pikeMappIndex,@pikeStmt
+syn cluster pikeStmt contains=pikeFirstWord,pikeCharacter,pikeString,pikeMlString,pikeWord,pikeNest
+syn cluster pikeBadGroup contains=pikeBadPClose,pikeBadAClose,pikeBadBClose,pikeBadSPClose,pikeBadSAClose,pikeBadSBClose,pikeBadSClose,pikeBadSPAClose,pikeBadSBAClose
+syn match pikeBadPClose display contained "[}\]]"
+syn match pikeBadAClose display contained "[)\]]"
+syn match pikeBadBClose display contained "[)}]"
+syn match pikeBadSPClose display contained "[;}\]]"
+syn match pikeBadSAClose display contained "[;)\]]"
+syn match pikeBadSPAClose display contained "[;\]]"
+syn match pikeBadSBAClose display contained "[;}]"
+syn match pikeBadSClose display contained "[;)}\]]"
+syn region pikeNest transparent start="(\@1<!{" end="}" contains=@pikeStmt,pikeUserLabel,pikeBadAClose
+syn region pikeNest transparent start="\%(\<for\%(each\)\?\s\?\)\@8<!([[{<]\@!" end=")" contains=@pikeStmt,pikeBadSPClose
+syn region pikeNest transparent start="\%(\<for\%(each\)\?\s\?\)\@8<=(" end=")" contains=@pikeStmt,pikeBadPClose
+syn region pikeNest transparent start="(\@1<!\[" end="]" contains=@pikeStmt,pikeBadSBClose
+syn region pikeNest transparent start="(\zs\[" end="])" contains=@pikeMappElm,pikeBadSBAClose
+" For some reason specifying a matchgroup on the pikeNest below makes it
+" override the shorter variant; consider it a kludge, no idea why it works
+syn region pikeNest transparent matchgroup=pikeSoftCast start=%(\zs\[[ \t\v\r\n.a-zA-Z0-9_():,|]\+])\@!% end=")" contains=@pikeStmt
+syn region pikeNest transparent start="(\zs{" end="})" contains=@pikeStmt,pikeBadSPAClose
+syn region pikeNest transparent start="(\zs<" end=">)" contains=@pikeStmt,pikeBadSPClose keepend
+
+" It's easy to accidentally add a space after a backslash that was intended
+" for line continuation. Some compilers allow it, which makes it
+" unpredictable and should be avoided.
+syn match pikeBadContinuation contained "\\\s\+$"
+
+" pikeCommentGroup allows adding matches for special things in comments
+syn cluster pikeCommentGroup contains=pikeTodo,pikeBadContinuation
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match pikeSpecial display contained "\\\%(x\x*\|d\d*\|\o\+\|u\x\{4}\|U\x\{8}\|[abefnrtv]\|$\)"
+
+" ISO C11 or ISO C++ 11
+if !exists("c_no_cformat")
+ " Highlight % items in strings.
+ syn match pikeFormat display "%\%(\d\+\$\)\=[-+' #0*]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlLjzt]\|ll\|hh\)\=\%([aAbdiuoxXDOUfFeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
+ syn match pikeFormat display "%%" contained
+ syn region pikeString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=pikeSpecial,pikeDelimiterDQ,pikeFormat,@Spell keepend
+ syn region pikeMlString start=+#"+ skip=+\\\\\|\\"+ end=+"+ contains=pikeSpecial,pikeFormat,pikeDelimiterDQ,@Spell,pikeEmbeddedString keepend
+else
+ syn region pikeString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=pikeSpecial,pikeDelimiterDQ,@Spell
+ syn region pikeMlString transparent start=+#"+ skip=+\\\\\|\\"+ end=+"+ contains=pikeSpecial,pikeDelimiterDQ,@Spell,pikeEmbeddedString keepend
+endif
+
+" Use SQL-syntax highlighting in multiline string if it starts with
+" a standard SQL keyword
+syn case ignore
+" FIXME Use explicit newline match to cover up a bug in the regexp engine
+" If the kludge is not used, the match will only start unless at least a space
+" follows the initial doublequote on the first line (or the keyword is on
+" the first line).
+syn region pikeEmbeddedString contained start=+\%(#"\n\?\)\@2<=\_s*\%(SELECT\|INSERT\|UPDATE\|DELETE\|WITH\|CREATE\|DROP\|ALTER\)\>+ skip=+\\\\\|\\"+ end=+[\\#]\@1<!"+ contains=@pikeSQL,pikeBindings keepend
+syn case match
+
+syn match pikeBindings display contained ":\@1<!:\I\i*"
+
+syn match pikeCharacter "'[^\\']'" contains=pikeDelimiterSQ
+syn match pikeCharacter "'[^']*'" contains=pikeSpecial,pikeDelimiterSQ
+syn match pikeSpecialError "'\\[^'\"?\\abefnrtv]'"
+syn match pikeDelimiterDQ display +"+ contained
+syn match pikeDelimiterSQ display +'+ contained
+
+"when wanted, highlight trailing white space
+if exists("c_space_errors")
+ if !exists("c_no_trail_space_error")
+ syn match pikeSpaceError display excludenl "\s\+$"
+ endif
+ if !exists("c_no_tab_space_error")
+ syn match pikeSpaceError display " \+\ze\t"
+ endif
+endif
+
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match pikeNumbers display transparent "\<\d\|\.\d" contains=pikeNumber,pikeFloat,pikeOctalError,pikeOctal
+" Same, but without octal error (for comments)
+syn match pikeNumbersCom display contained transparent "\<\d\|\.\d" contains=pikeNumber,pikeFloat,pikeOctal
+syn match pikeNumber display contained "\<\d\+\%(u\=l\{0,2}\|ll\=u\)\>"
+"hex number
+syn match pikeNumber display contained "\<0x\x\+\%(u\=l\{0,2}\|ll\=u\)\>"
+" Flag the first zero of an octal number as something special
+syn match pikeOctal display contained "\<0\o\+\%(u\=l\{0,2}\|ll\=u\)\>" contains=pikeOctalZero
+syn match pikeOctalZero display contained "\<0"
+"floating point number, with dot, optional exponent
+syn match pikeFloat display contained "\<\d\+\%(f\|\.[0-9.]\@!\d*\%(e[-+]\=\d\+\)\=[fl]\=\)"
+"floating point number, starting with a dot, optional exponent
+syn match pikeFloat display contained "[0-9.]\@1<!\.\d\+\%(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match pikeFloat display contained "\<\d\+e[-+]\=\d\+[fl]\=\>"
+
+"hexadecimal floating point number, two variants, with exponent
+syn match pikeFloat display contained "\<0x\%(\x\+\.\?\|\x*\.\x\+\)p[-+]\=\d\+[fl]\=\>"
+
+" flag an octal number with wrong digits
+syn match pikeOctalError display contained "\<0\o*[89]\d*"
+syn case match
+
+if exists("c_comment_strings")
+ " A comment can contain pikeString, pikeCharacter and pikeNumber.
+ " But a "*/" inside a pikeString in a pikeComment DOES end the comment! So we
+ " need to use a special type of pikeString: pikeCommentString, which also ends on
+ " "*/", and sees a "*" at the start of the line as comment again.
+ " Unfortunately this doesn't very well work for // type of comments :-(
+ syn match pikeCommentSkip contained "^\s*\*\%($\|\s\+\)"
+ syn region pikeCommentString contained start=+\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\ze\*/+ contains=pikeSpecial,pikeCommentSkip
+ syn region pikeComment2String contained start=+\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=pikeSpecial
+ syn region pikeCommentL start="//" skip="\\$" end="$" keepend contains=@pikeCommentGroup,pikeComment2String,pikeCharacter,pikeNumbersCom,pikeSpaceError,@Spell containedin=pikeWord,pikeFirstWord
+ if exists("c_no_comment_fold")
+ " Use "extend" here to have preprocessor lines not terminate halfway a
+ " comment.
+ syn region pikeComment matchgroup=pikeCommentStart start="/\*" end="\*/" contains=@pikeCommentGroup,pikeCommentStartError,pikeCommentString,pikeCharacter,pikeNumbersCom,pikeSpaceError,@Spell extend containedin=pikeWord,pikeFirstWord
+ else
+ syn region pikeComment matchgroup=pikeCommentStart start="/\*" end="\*/" contains=@pikeCommentGroup,pikeCommentStartError,pikeCommentString,pikeCharacter,pikeNumbersCom,pikeSpaceError,@Spell fold extend containedin=pikeWord,pikeFirstWord
+ endif
+else
+ syn region pikeCommentL start="//" skip="\\$" end="$" keepend contains=@pikeCommentGroup,pikeSpaceError,@Spell containedin=pikeWord,pikeFirstWord
+ if exists("c_no_comment_fold")
+ syn region pikeComment matchgroup=pikeCommentStart start="/\*" end="\*/" contains=@pikeCommentGroup,pikeCommentStartError,pikeSpaceError,@Spell extend containedin=pikeWord,pikeFirstWord
+ else
+ syn region pikeComment matchgroup=pikeCommentStart start="/\*" end="\*/" contains=@pikeCommentGroup,pikeCommentStartError,pikeSpaceError,@Spell fold extend containedin=pikeWord,pikeFirstWord
+ endif
+endif
+" keep a // comment separately, it terminates a preproc. conditional
+syn match pikeCommentError display "\*/"
+syn match pikeCommentStartError display "/\ze\*" contained
+
+syn keyword pikeOperator sizeof
+syn keyword pikeOperator typeof _typeof _refs
+syn keyword pikeOperator zero_type intp stringp arrayp mappingp multisetp
+syn keyword pikeOperator objectp functionp programp callablep destructedp
+syn keyword pikeOperator object_variablep undefinedp
+syn keyword pikeOperator allocate equal
+syn keyword pikeOperator aggregate aggregate_mapping aggregate_multiset
+syn keyword pikeOperator map filter search replace reverse column rows
+syn keyword pikeOperator indices values mkmapping mkmultiset m_delete sort
+syn keyword pikeOperator m_delete destruct
+syn keyword pikeOperator create _destruct _sprintf cast _encode _decode
+syn keyword pikeOperator __hash _sizeof _values _indices __INIT _equal
+syn keyword pikeOperator _is_type _m_delete _get_iterator _search
+syn keyword pikeOperator _serialize _deserialize _sqrt _types _random
+syn keyword pikeOperator _size_object
+
+syn keyword pikeType int void
+syn keyword pikeType float
+syn keyword pikeType bool string array mapping multiset mixed
+syn keyword pikeType object function program auto
+
+syn keyword pikeType this this_object this_program
+syn keyword pikeType sprintf_args sprintf_format sprintf_result
+syn keyword pikeType strict_sprintf_format
+
+syn keyword pikeStructure class enum typedef inherit import
+syn keyword pikeTypedef typedef
+syn keyword pikeStorageClass private protected public constant final variant
+syn keyword pikeStorageClass optional inline extern static __deprecated__ lambda
+
+syn keyword pikeConstant __LINE__ __FILE__ __DIR__ __DATE__ __TIME__
+syn keyword pikeConstant __AUTO_BIGNUM__ __NT__
+syn keyword pikeConstant __BUILD__ __COUNTER__ _MAJOR__ __MINOR__ __VERSION__
+syn keyword pikeConstant __REAL_BUILD__ _REAL_MAJOR__ __REAL_MINOR__
+syn keyword pikeConstant __REAL_VERSION__ __PIKE__ UNDEFINED
+
+" These should actually only be parsed in preprocessor conditionals
+syn keyword pikeCppOperator contained defined constant efun _Pragma
+
+syn keyword pikeBoolean true false
+
+syn match pikeCppPrefix display "^\s*\zs#\s*[a-z]\+" contained
+syn region pikePreCondit start="^\s*#\s*\%(if\%(n\?def\)\?\|el\%(se\)\?if\)\>" skip="\\$" end="$" transparent keepend contains=pikeString,pikeCharacter,pikeNumbers,pikeCommentError,pikeSpaceError,pikeCppOperator,pikeCppPrefix
+syn match pikePreConditMatch display "^\s*\zs#\s*\%(else\|endif\)\>"
+if !exists("c_no_if0")
+ syn cluster pikeCppOutInGroup contains=pikeCppInIf,pikeCppInElse,pikeCppInElse2,pikeCppOutIf,pikeCppOutIf2,pikeCppOutElse,pikeCppInSkip,pikeCppOutSkip
+ syn region pikeCppOutWrapper start="^\s*\zs#\s*if\s\+0\+\s*\%($\|//\|/\*\|&\)" end=".\@=\|$" contains=pikeCppOutIf,pikeCppOutElse,@NoSpell fold
+ syn region pikeCppOutIf contained start="0\+" matchgroup=pikeCppOutWrapper end="^\s*#\s*endif\>" contains=pikeCppOutIf2,pikeCppOutElse
+ if !exists("c_no_if0_fold")
+ syn region pikeCppOutIf2 contained matchgroup=pikeCppOutWrapper start="0\+" end="^\ze\s*#\s*\%(else\>\|el\%(se\)\?if\s\+\%(0\+\s*\%($\|//\|/\*\|&\)\)\@!\|endif\>\)" contains=pikeSpaceError,pikeCppOutSkip,@Spell fold
+ else
+ syn region pikeCppOutIf2 contained matchgroup=pikeCppOutWrapper start="0\+" end="^\ze\s*#\s*\%(else\>\|el\%(se\)\?if\s\+\%(0\+\s*\%($\|//\|/\*\|&\)\)\@!\|endif\>\)" contains=pikeSpaceError,pikeCppOutSkip,@Spell
+ endif
+ syn region pikeCppOutElse contained matchgroup=pikeCppOutWrapper start="^\s*#\s*\%(else\|el\%(se\)\?if\)" end="^\s*#\s*endif\>" contains=TOP,pikePreCondit
+ syn region pikeCppInWrapper start="^\s*\zs#\s*if\s\+0*[1-9]\d*\s*\%($\|//\|/\*\||\)" end=".\@=\|$" contains=pikeCppInIf,pikeCppInElse fold
+ syn region pikeCppInIf contained matchgroup=pikeCppInWrapper start="\d\+" end="^\s*#\s*endif\>" contains=TOP,pikePreCondit
+ if !exists("c_no_if0_fold")
+ syn region pikeCppInElse contained start="^\s*#\s*\%(else\>\|el\%(se\)\?if\s\+\%(0*[1-9]\d*\s*\%($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=pikeCppInIf contains=pikeCppInElse2 fold
+ else
+ syn region pikeCppInElse contained start="^\s*#\s*\%(else\>\|el\%(se\)\?if\s\+\%(0*[1-9]\d*\s*\%($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=pikeCppInIf contains=pikeCppInElse2
+ endif
+ syn region pikeCppInElse2 contained matchgroup=pikeCppInWrapper start="^\s*#\s*\%(else\|el\%(se\)\?if\)\%([^/]\|/[^/*]\)*" end="^\ze\s*#\s*endif\>" contains=pikeSpaceError,pikeCppOutSkip,@Spell
+ syn region pikeCppOutSkip contained start="^\s*#\s*if\%(n\?def\)\?\>" skip="\\$" end="^\s*#\s*endif\>" contains=pikeSpaceError,pikeCppOutSkip
+ syn region pikeCppInSkip contained matchgroup=pikeCppInWrapper start="^\s*#\s*\%(if\s\+\%(\d\+\s*\%($\|//\|/\*\||\|&\)\)\@!\|ifn\?def\>\)" skip="\\$" end="^\s*#\s*endif\>" containedin=pikeCppOutElse,pikeCppInIf,pikeCppInSkip contains=TOP,pikePreProc
+endif
+syn region pikeIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=pikeDelimiterDQ keepend
+syn match pikeIncluded display contained "<[^>]*>"
+syn match pikeInclude display "^\s*\zs#\s*include\>\s*["<]" contains=pikeIncluded
+syn cluster pikePreProcGroup contains=pikeIncluded,pikeInclude,pikeEmbeddedString,pikeCppOutWrapper,pikeCppInWrapper,@pikeCppOutInGroup,pikeFormat,pikeMlString,pikeCommentStartError,@pikeBadGroup,pikeWord
+syn region pikeDefine start="^\s*\zs#\s*\%(define\|undef\)\>" skip="\\$" end="$" keepend contains=@pikeStmt,@pikeBadGroup
+syn region pikePreProc start="^\s*\zs#\s*\%(pragma\|charset\|pike\|require\|string\|line\|warning\|error\)\>" skip="\\$" end="$" transparent keepend contains=pikeString,pikeCharacter,pikeNumbers,pikeCommentError,pikeSpaceError,pikeCppOperator,pikeCppPrefix,@Spell,pikeConstant
+
+syn match pikeAutodocReal display contained "\%(//\|[/ \t\v]\*\|^\*\)\@2<=!.*" contains=@pikeAutodoc containedin=pikeComment,pikeCommentL
+syn cluster pikeCommentGroup add=pikeAutodocReal
+syn cluster pikePreProcGroup add=pikeAutodocReal
+
+" Highlight User Labels
+" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
+syn match pikeUserLabel display "\%(^\|[{};]\)\zs\I\i*\s*\ze:\%([^:]\|$\)" contained contains=NONE
+syn match pikeUserLabel display "\%(\<\%(break\|continue\)\_s\+\)\@10<=\I\i*" contained contains=NONE
+syn match pikeUserLabel display "\%(\<case\)\@5<=\s\+[^<()[\]{},;:]\+\ze::\@!" contained contains=pikeDelimiterDQ,pikeDelimiterSQ
+
+syn match pikeMappIndex display contained "[^<()[\]{},;:]\+\ze::\@!" contains=pikeDelimiterDQ,pikeDelimiterSQ
+syn match pikeSoftCast display contained "\[[ \t\v\r\n.a-zA-Z0-9_():,|\+]" contains=NONE
+
+if exists("c_minlines")
+ let b:c_minlines = c_minlines
+else
+ if !exists("c_no_if0")
+ let b:c_minlines = 400 " #if 0 constructs can be long
+ else
+ let b:c_minlines = 200 " mostly for multiline strings
+ endif
+endif
+exec "syn sync ccomment pikeComment minlines=" . b:c_minlines
+syn sync match pikeMlStringSync grouphere pikeMlString +^[^"#]\+#\"+
+syn sync match pikeAutodocSync grouphere pikeCommentL "^\s*//!"
+
+" Define the default highlighting.
+" Only used when an item doesn't have highlighting yet
+hi def link pikeFormat SpecialChar
+hi def link pikeMlString String
+hi def link pikeCommentL Comment
+hi def link pikeCommentStart Comment
+hi def link pikeLabel Label
+hi def link pikeUserLabel Identifier
+hi def link pikeConditional Conditional
+hi def link pikeRepeat Repeat
+hi def link pikeCharacter Character
+hi def link pikeDelimiterDQ Delimiter
+hi def link pikeDelimiterSQ Delimiter
+hi def link pikeNumber Number
+hi def link pikeOctal Number
+hi def link pikeOctalZero PreProc " link this to Error if you want
+hi def link pikeFloat Float
+hi def link pikeOctalError Error
+hi def link pikeCommentError Error
+hi def link pikeCommentStartError Error
+hi def link pikeSpaceError Error
+hi def link pikeSpecialError Error
+hi def link pikeOperator Operator
+hi def link pikeCppOperator Operator
+hi def link pikeStructure Structure
+hi def link pikeTypedef Typedef
+hi def link pikeStorageClass StorageClass
+hi def link pikeInclude Include
+hi def link pikeCppPrefix PreCondit
+hi def link pikePreProc PreProc
+hi def link pikeDefine Macro
+hi def link pikeIncluded String
+hi def link pikeError Error
+hi def link pikeDebug Debug
+hi def link pikeException Exception
+hi def link pikeStatement Statement
+hi def link pikeType Type
+hi def link pikeConstant Constant
+hi def link pikeBoolean Boolean
+hi def link pikeCommentString String
+hi def link pikeComment2String String
+hi def link pikeCommentSkip Comment
+hi def link pikeString String
+hi def link pikeComment Comment
+hi def link pikeSpecial SpecialChar
+hi def link pikeTodo Todo
+hi def link pikeBadContinuation Error
+
+hi def link pikeCppInWrapper PreCondit
+hi def link pikeCppOutWrapper PreCondit
+hi def link pikePreConditMatch PreCondit
+
+hi def link pikeCppOutSkip Comment
+hi def link pikeCppInElse2 Comment
+hi def link pikeCppOutIf2 Comment
+hi def link pikeCppOut Comment
+
+hi def link pikePredef Statement
+hi def link pikeBindings Identifier
+hi def link pikeMappIndex Identifier
+hi def link pikeSoftCast Type
+hi def link pikeBadGroup Error
+hi def link pikeBadPClose Error
+hi def link pikeBadAClose Error
+hi def link pikeBadBClose Error
+hi def link pikeBadSPClose Error
+hi def link pikeBadSAClose Error
+hi def link pikeBadSBClose Error
+hi def link pikeBadSPAClose Error
+hi def link pikeBadSBAClose Error
+hi def link pikeBadSClose Error
+
+let b:current_syntax = "pike"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/pilrc.vim b/runtime/syntax/pilrc.vim
new file mode 100644
index 0000000..f0e5f9b
--- /dev/null
+++ b/runtime/syntax/pilrc.vim
@@ -0,0 +1,136 @@
+" Vim syntax file
+" Language: pilrc - a resource compiler for Palm OS development
+" Maintainer: Brian Schau <brian@schau.com>
+" Last change: 2003 May 11
+" Available on: http://www.schau.com/pilrcvim/pilrc.vim
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" Notes: TRANSPARENT, FONT and FONT ID are defined in the specials
+" section below. Beware of the order of the specials!
+" Look in the syntax.txt and usr_27.txt files in vim\vim{version}\doc
+" directory for regexps etc.
+
+" Keywords - basic
+syn keyword pilrcKeyword ALERT APPLICATION APPLICATIONICONNAME AREA
+syn keyword pilrcKeyword BITMAP BITMAPCOLOR BITMAPCOLOR16 BITMAPCOLOR16K
+syn keyword pilrcKeyword BITMAPFAMILY BITMAPFAMILYEX BITMAPFAMILYSPECIAL
+syn keyword pilrcKeyword BITMAPGREY BITMAPGREY16 BITMAPSCREENFAMILY
+syn keyword pilrcKeyword BOOTSCREENFAMILY BUTTON BUTTONS BYTELIST
+syn keyword pilrcKeyword CATEGORIES CHECKBOX COUNTRYLOCALISATION
+syn keyword pilrcKeyword DATA
+syn keyword pilrcKeyword FEATURE FIELD FONTINDEX FORM FORMBITMAP
+syn keyword pilrcKeyword GADGET GENERATEHEADER
+syn keyword pilrcKeyword GRAFFITIINPUTAREA GRAFFITISTATEINDICATOR
+syn keyword pilrcKeyword HEX
+syn keyword pilrcKeyword ICON ICONFAMILY ICONFAMILYEX INTEGER
+syn keyword pilrcKeyword KEYBOARD
+syn keyword pilrcKeyword LABEL LAUNCHERCATEGORY LIST LONGWORDLIST
+syn keyword pilrcKeyword MENU MENUITEM MESSAGE MIDI
+syn keyword pilrcKeyword PALETTETABLE POPUPLIST POPUPTRIGGER
+syn keyword pilrcKeyword PULLDOWN PUSHBUTTON
+syn keyword pilrcKeyword REPEATBUTTON RESETAUTOID
+syn keyword pilrcKeyword SCROLLBAR SELECTORTRIGGER SLIDER SMALLICON
+syn keyword pilrcKeyword SMALLICONFAMILY SMALLICONFAMILYEX STRING STRINGTABLE
+syn keyword pilrcKeyword TABLE TITLE TRANSLATION TRAP
+syn keyword pilrcKeyword VERSION
+syn keyword pilrcKeyword WORDLIST
+
+" Types
+syn keyword pilrcType AT AUTOSHIFT
+syn keyword pilrcType BACKGROUNDID BITMAPID BOLDFRAME BPP
+syn keyword pilrcType CHECKED COLORTABLE COLUMNS COLUMNWIDTHS COMPRESS
+syn keyword pilrcType COMPRESSBEST COMPRESSPACKBITS COMPRESSRLE COMPRESSSCANLINE
+syn keyword pilrcType CONFIRMATION COUNTRY CREATOR CURRENCYDECIMALPLACES
+syn keyword pilrcType CURRENCYNAME CURRENCYSYMBOL CURRENCYUNIQUESYMBOL
+syn keyword pilrcType DATEFORMAT DAYLIGHTSAVINGS DEFAULTBTNID DEFAULTBUTTON
+syn keyword pilrcType DENSITY DISABLED DYNAMICSIZE
+syn keyword pilrcType EDITABLE ENTRY ERROR EXTENDED
+syn keyword pilrcType FEEDBACK FILE FONTID FORCECOMPRESS FRAME
+syn keyword pilrcType GRAFFITI GRAPHICAL GROUP
+syn keyword pilrcType HASSCROLLBAR HELPID
+syn keyword pilrcType ID INDEX INFORMATION
+syn keyword pilrcType KEYDOWNCHR KEYDOWNKEYCODE KEYDOWNMODIFIERS
+syn keyword pilrcType LANGUAGE LEFTALIGN LEFTANCHOR LONGDATEFORMAT
+syn keyword pilrcType MAX MAXCHARS MEASUREMENTSYSTEM MENUID MIN LOCALE
+syn keyword pilrcType MINUTESWESTOFGMT MODAL MULTIPLELINES
+syn keyword pilrcType NAME NOCOLORTABLE NOCOMPRESS NOFRAME NONEDITABLE
+syn keyword pilrcType NONEXTENDED NONUSABLE NOSAVEBEHIND NUMBER NUMBERFORMAT
+syn keyword pilrcType NUMERIC
+syn keyword pilrcType PAGESIZE
+syn keyword pilrcType RECTFRAME RIGHTALIGN RIGHTANCHOR ROWS
+syn keyword pilrcType SAVEBEHIND SEARCH SCREEN SELECTEDBITMAPID SINGLELINE
+syn keyword pilrcType THUMBID TRANSPARENTINDEX TIMEFORMAT
+syn keyword pilrcType UNDERLINED USABLE
+syn keyword pilrcType VALUE VERTICAL VISIBLEITEMS
+syn keyword pilrcType WARNING WEEKSTARTDAY
+
+" Country
+syn keyword pilrcCountry Australia Austria Belgium Brazil Canada Denmark
+syn keyword pilrcCountry Finland France Germany HongKong Iceland Indian
+syn keyword pilrcCountry Indonesia Ireland Italy Japan Korea Luxembourg Malaysia
+syn keyword pilrcCountry Mexico Netherlands NewZealand Norway Philippines
+syn keyword pilrcCountry RepChina Singapore Spain Sweden Switzerland Thailand
+syn keyword pilrcCountry Taiwan UnitedKingdom UnitedStates
+
+" Language
+syn keyword pilrcLanguage English French German Italian Japanese Spanish
+
+" String
+syn match pilrcString "\"[^"]*\""
+
+" Number
+syn match pilrcNumber "\<0x\x\+\>"
+syn match pilrcNumber "\<\d\+\>"
+
+" Comment
+syn region pilrcComment start="/\*" end="\*/"
+syn region pilrcComment start="//" end="$"
+
+" Constants
+syn keyword pilrcConstant AUTO AUTOID BOTTOM CENTER PREVBOTTOM PREVHEIGHT
+syn keyword pilrcConstant PREVLEFT PREVRIGHT PREVTOP PREVWIDTH RIGHT
+syn keyword pilrcConstant SEPARATOR
+
+" Identifier
+syn match pilrcIdentifier "\<\h\w*\>"
+
+" Specials
+syn match pilrcType "\<FONT\>"
+syn match pilrcKeyword "\<FONT\>\s*\<ID\>"
+syn match pilrcType "\<TRANSPARENT\>"
+
+" Function
+syn keyword pilrcFunction BEGIN END
+
+" Include
+syn match pilrcInclude "\#include"
+syn match pilrcInclude "\#define"
+syn keyword pilrcInclude equ
+syn keyword pilrcInclude package
+syn region pilrcInclude start="public class" end="}"
+
+syn sync ccomment pilrcComment
+
+
+" The default methods for highlighting
+hi def link pilrcKeyword Statement
+hi def link pilrcType Type
+hi def link pilrcError Error
+hi def link pilrcCountry SpecialChar
+hi def link pilrcLanguage SpecialChar
+hi def link pilrcString SpecialChar
+hi def link pilrcNumber Number
+hi def link pilrcComment Comment
+hi def link pilrcConstant Constant
+hi def link pilrcFunction Function
+hi def link pilrcInclude SpecialChar
+hi def link pilrcIdentifier Number
+
+
+let b:current_syntax = "pilrc"
diff --git a/runtime/syntax/pine.vim b/runtime/syntax/pine.vim
new file mode 100644
index 0000000..aadf50b
--- /dev/null
+++ b/runtime/syntax/pine.vim
@@ -0,0 +1,355 @@
+" Vim syntax file
+" Language: Pine (email program) run commands
+" Maintainer: David Pascoe <pascoedj@spamcop.net>
+" Last Change: Thu Feb 27 10:18:48 WST 2003, update for pine 4.53
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=@,48-57,_,128-167,224-235,-
+
+syn keyword pineConfig addrbook-sort-rule
+syn keyword pineConfig address-book
+syn keyword pineConfig addressbook-formats
+syn keyword pineConfig alt-addresses
+syn keyword pineConfig bugs-additional-data
+syn keyword pineConfig bugs-address
+syn keyword pineConfig bugs-fullname
+syn keyword pineConfig character-set
+syn keyword pineConfig color-style
+syn keyword pineConfig compose-mime
+syn keyword pineConfig composer-wrap-column
+syn keyword pineConfig current-indexline-style
+syn keyword pineConfig cursor-style
+syn keyword pineConfig customized-hdrs
+syn keyword pineConfig debug-memory
+syn keyword pineConfig default-composer-hdrs
+syn keyword pineConfig default-fcc
+syn keyword pineConfig default-saved-msg-folder
+syn keyword pineConfig disable-these-authenticators
+syn keyword pineConfig disable-these-drivers
+syn keyword pineConfig display-filters
+syn keyword pineConfig download-command
+syn keyword pineConfig download-command-prefix
+syn keyword pineConfig editor
+syn keyword pineConfig elm-style-save
+syn keyword pineConfig empty-header-message
+syn keyword pineConfig fcc-name-rule
+syn keyword pineConfig feature-level
+syn keyword pineConfig feature-list
+syn keyword pineConfig file-directory
+syn keyword pineConfig folder-collections
+syn keyword pineConfig folder-extension
+syn keyword pineConfig folder-sort-rule
+syn keyword pineConfig font-char-set
+syn keyword pineConfig font-name
+syn keyword pineConfig font-size
+syn keyword pineConfig font-style
+syn keyword pineConfig forced-abook-entry
+syn keyword pineConfig form-letter-folder
+syn keyword pineConfig global-address-book
+syn keyword pineConfig goto-default-rule
+syn keyword pineConfig header-in-reply
+syn keyword pineConfig image-viewer
+syn keyword pineConfig inbox-path
+syn keyword pineConfig incoming-archive-folders
+syn keyword pineConfig incoming-folders
+syn keyword pineConfig incoming-startup-rule
+syn keyword pineConfig index-answered-background-color
+syn keyword pineConfig index-answered-foreground-color
+syn keyword pineConfig index-deleted-background-color
+syn keyword pineConfig index-deleted-foreground-color
+syn keyword pineConfig index-format
+syn keyword pineConfig index-important-background-color
+syn keyword pineConfig index-important-foreground-color
+syn keyword pineConfig index-new-background-color
+syn keyword pineConfig index-new-foreground-color
+syn keyword pineConfig index-recent-background-color
+syn keyword pineConfig index-recent-foreground-color
+syn keyword pineConfig index-to-me-background-color
+syn keyword pineConfig index-to-me-foreground-color
+syn keyword pineConfig index-unseen-background-color
+syn keyword pineConfig index-unseen-foreground-color
+syn keyword pineConfig initial-keystroke-list
+syn keyword pineConfig kblock-passwd-count
+syn keyword pineConfig keylabel-background-color
+syn keyword pineConfig keylabel-foreground-color
+syn keyword pineConfig keyname-background-color
+syn keyword pineConfig keyname-foreground-color
+syn keyword pineConfig last-time-prune-questioned
+syn keyword pineConfig last-version-used
+syn keyword pineConfig ldap-servers
+syn keyword pineConfig literal-signature
+syn keyword pineConfig local-address
+syn keyword pineConfig local-fullname
+syn keyword pineConfig mail-check-interval
+syn keyword pineConfig mail-directory
+syn keyword pineConfig mailcap-search-path
+syn keyword pineConfig mimetype-search-path
+syn keyword pineConfig new-version-threshold
+syn keyword pineConfig news-active-file-path
+syn keyword pineConfig news-collections
+syn keyword pineConfig news-spool-directory
+syn keyword pineConfig newsrc-path
+syn keyword pineConfig nntp-server
+syn keyword pineConfig normal-background-color
+syn keyword pineConfig normal-foreground-color
+syn keyword pineConfig old-style-reply
+syn keyword pineConfig operating-dir
+syn keyword pineConfig patterns
+syn keyword pineConfig patterns-filters
+syn keyword pineConfig patterns-filters2
+syn keyword pineConfig patterns-indexcolors
+syn keyword pineConfig patterns-other
+syn keyword pineConfig patterns-roles
+syn keyword pineConfig patterns-scores
+syn keyword pineConfig patterns-scores2
+syn keyword pineConfig personal-name
+syn keyword pineConfig personal-print-category
+syn keyword pineConfig personal-print-command
+syn keyword pineConfig postponed-folder
+syn keyword pineConfig print-font-char-set
+syn keyword pineConfig print-font-name
+syn keyword pineConfig print-font-size
+syn keyword pineConfig print-font-style
+syn keyword pineConfig printer
+syn keyword pineConfig prompt-background-color
+syn keyword pineConfig prompt-foreground-color
+syn keyword pineConfig pruned-folders
+syn keyword pineConfig pruning-rule
+syn keyword pineConfig quote1-background-color
+syn keyword pineConfig quote1-foreground-color
+syn keyword pineConfig quote2-background-color
+syn keyword pineConfig quote2-foreground-color
+syn keyword pineConfig quote3-background-color
+syn keyword pineConfig quote3-foreground-color
+syn keyword pineConfig read-message-folder
+syn keyword pineConfig remote-abook-history
+syn keyword pineConfig remote-abook-metafile
+syn keyword pineConfig remote-abook-validity
+syn keyword pineConfig reply-indent-string
+syn keyword pineConfig reply-leadin
+syn keyword pineConfig reverse-background-color
+syn keyword pineConfig reverse-foreground-color
+syn keyword pineConfig rsh-command
+syn keyword pineConfig rsh-open-timeout
+syn keyword pineConfig rsh-path
+syn keyword pineConfig save-by-sender
+syn keyword pineConfig saved-msg-name-rule
+syn keyword pineConfig scroll-margin
+syn keyword pineConfig selectable-item-background-color
+syn keyword pineConfig selectable-item-foreground-color
+syn keyword pineConfig sending-filters
+syn keyword pineConfig sendmail-path
+syn keyword pineConfig show-all-characters
+syn keyword pineConfig signature-file
+syn keyword pineConfig smtp-server
+syn keyword pineConfig sort-key
+syn keyword pineConfig speller
+syn keyword pineConfig ssh-command
+syn keyword pineConfig ssh-open-timeout
+syn keyword pineConfig ssh-path
+syn keyword pineConfig standard-printer
+syn keyword pineConfig status-background-color
+syn keyword pineConfig status-foreground-color
+syn keyword pineConfig status-message-delay
+syn keyword pineConfig suggest-address
+syn keyword pineConfig suggest-fullname
+syn keyword pineConfig tcp-open-timeout
+syn keyword pineConfig tcp-query-timeout
+syn keyword pineConfig tcp-read-warning-timeout
+syn keyword pineConfig tcp-write-warning-timeout
+syn keyword pineConfig threading-display-style
+syn keyword pineConfig threading-expanded-character
+syn keyword pineConfig threading-index-style
+syn keyword pineConfig threading-indicator-character
+syn keyword pineConfig threading-lastreply-character
+syn keyword pineConfig title-background-color
+syn keyword pineConfig title-foreground-color
+syn keyword pineConfig titlebar-color-style
+syn keyword pineConfig upload-command
+syn keyword pineConfig upload-command-prefix
+syn keyword pineConfig url-viewers
+syn keyword pineConfig use-only-domain-name
+syn keyword pineConfig user-domain
+syn keyword pineConfig user-id
+syn keyword pineConfig user-id
+syn keyword pineConfig user-input-timeout
+syn keyword pineConfig viewer-hdr-colors
+syn keyword pineConfig viewer-hdrs
+syn keyword pineConfig viewer-overlap
+syn keyword pineConfig window-position
+
+syn keyword pineOption allow-changing-from
+syn keyword pineOption allow-talk
+syn keyword pineOption alternate-compose-menu
+syn keyword pineOption assume-slow-link
+syn keyword pineOption auto-move-read-msgs
+syn keyword pineOption auto-open-next-unread
+syn keyword pineOption auto-unzoom-after-apply
+syn keyword pineOption auto-zoom-after-select
+syn keyword pineOption cache-remote-pinerc
+syn keyword pineOption check-newmail-when-quitting
+syn keyword pineOption combined-addrbook-display
+syn keyword pineOption combined-folder-display
+syn keyword pineOption combined-subdirectory-display
+syn keyword pineOption compose-cut-from-cursor
+syn keyword pineOption compose-maps-delete-key-to-ctrl-d
+syn keyword pineOption compose-rejects-unqualified-addrs
+syn keyword pineOption compose-send-offers-first-filter
+syn keyword pineOption compose-sets-newsgroup-without-confirm
+syn keyword pineOption confirm-role-even-for-default
+syn keyword pineOption continue-tab-without-confirm
+syn keyword pineOption delete-skips-deleted
+syn keyword pineOption disable-2022-jp-conversions
+syn keyword pineOption disable-busy-alarm
+syn keyword pineOption disable-charset-conversions
+syn keyword pineOption disable-config-cmd
+syn keyword pineOption disable-keyboard-lock-cmd
+syn keyword pineOption disable-keymenu
+syn keyword pineOption disable-password-caching
+syn keyword pineOption disable-password-cmd
+syn keyword pineOption disable-pipes-in-sigs
+syn keyword pineOption disable-pipes-in-templates
+syn keyword pineOption disable-roles-setup-cmd
+syn keyword pineOption disable-roles-sig-edit
+syn keyword pineOption disable-roles-template-edit
+syn keyword pineOption disable-sender
+syn keyword pineOption disable-shared-namespaces
+syn keyword pineOption disable-signature-edit-cmd
+syn keyword pineOption disable-take-last-comma-first
+syn keyword pineOption enable-8bit-esmtp-negotiation
+syn keyword pineOption enable-8bit-nntp-posting
+syn keyword pineOption enable-aggregate-command-set
+syn keyword pineOption enable-alternate-editor-cmd
+syn keyword pineOption enable-alternate-editor-implicitly
+syn keyword pineOption enable-arrow-navigation
+syn keyword pineOption enable-arrow-navigation-relaxed
+syn keyword pineOption enable-background-sending
+syn keyword pineOption enable-bounce-cmd
+syn keyword pineOption enable-cruise-mode
+syn keyword pineOption enable-cruise-mode-delete
+syn keyword pineOption enable-delivery-status-notification
+syn keyword pineOption enable-dot-files
+syn keyword pineOption enable-dot-folders
+syn keyword pineOption enable-exit-via-lessthan-command
+syn keyword pineOption enable-fast-recent-test
+syn keyword pineOption enable-flag-cmd
+syn keyword pineOption enable-flag-screen-implicitly
+syn keyword pineOption enable-full-header-and-text
+syn keyword pineOption enable-full-header-cmd
+syn keyword pineOption enable-goto-in-file-browser
+syn keyword pineOption enable-incoming-folders
+syn keyword pineOption enable-jump-shortcut
+syn keyword pineOption enable-lame-list-mode
+syn keyword pineOption enable-mail-check-cue
+syn keyword pineOption enable-mailcap-param-substitution
+syn keyword pineOption enable-mouse-in-xterm
+syn keyword pineOption enable-msg-view-addresses
+syn keyword pineOption enable-msg-view-attachments
+syn keyword pineOption enable-msg-view-forced-arrows
+syn keyword pineOption enable-msg-view-urls
+syn keyword pineOption enable-msg-view-web-hostnames
+syn keyword pineOption enable-newmail-in-xterm-icon
+syn keyword pineOption enable-partial-match-lists
+syn keyword pineOption enable-print-via-y-command
+syn keyword pineOption enable-reply-indent-string-editing
+syn keyword pineOption enable-rules-under-take
+syn keyword pineOption enable-search-and-replace
+syn keyword pineOption enable-sigdashes
+syn keyword pineOption enable-suspend
+syn keyword pineOption enable-tab-completion
+syn keyword pineOption enable-take-export
+syn keyword pineOption enable-tray-icon
+syn keyword pineOption enable-unix-pipe-cmd
+syn keyword pineOption enable-verbose-smtp-posting
+syn keyword pineOption expanded-view-of-addressbooks
+syn keyword pineOption expanded-view-of-distribution-lists
+syn keyword pineOption expanded-view-of-folders
+syn keyword pineOption expose-hidden-config
+syn keyword pineOption expunge-only-manually
+syn keyword pineOption expunge-without-confirm
+syn keyword pineOption expunge-without-confirm-everywhere
+syn keyword pineOption fcc-on-bounce
+syn keyword pineOption fcc-only-without-confirm
+syn keyword pineOption fcc-without-attachments
+syn keyword pineOption include-attachments-in-reply
+syn keyword pineOption include-header-in-reply
+syn keyword pineOption include-text-in-reply
+syn keyword pineOption ldap-result-to-addrbook-add
+syn keyword pineOption mark-fcc-seen
+syn keyword pineOption mark-for-cc
+syn keyword pineOption news-approximates-new-status
+syn keyword pineOption news-deletes-across-groups
+syn keyword pineOption news-offers-catchup-on-close
+syn keyword pineOption news-post-without-validation
+syn keyword pineOption news-read-in-newsrc-order
+syn keyword pineOption next-thread-without-confirm
+syn keyword pineOption old-growth
+syn keyword pineOption pass-control-characters-as-is
+syn keyword pineOption prefer-plain-text
+syn keyword pineOption preserve-start-stop-characters
+syn keyword pineOption print-formfeed-between-messages
+syn keyword pineOption print-includes-from-line
+syn keyword pineOption print-index-enabled
+syn keyword pineOption print-offers-custom-cmd-prompt
+syn keyword pineOption quell-attachment-extra-prompt
+syn keyword pineOption quell-berkeley-format-timezone
+syn keyword pineOption quell-content-id
+syn keyword pineOption quell-dead-letter-on-cancel
+syn keyword pineOption quell-empty-directories
+syn keyword pineOption quell-extra-post-prompt
+syn keyword pineOption quell-folder-internal-msg
+syn keyword pineOption quell-imap-envelope-update
+syn keyword pineOption quell-lock-failure-warnings
+syn keyword pineOption quell-maildomain-warning
+syn keyword pineOption quell-news-envelope-update
+syn keyword pineOption quell-partial-fetching
+syn keyword pineOption quell-ssl-largeblocks
+syn keyword pineOption quell-status-message-beeping
+syn keyword pineOption quell-timezone-comment-when-sending
+syn keyword pineOption quell-user-lookup-in-passwd-file
+syn keyword pineOption quit-without-confirm
+syn keyword pineOption reply-always-uses-reply-to
+syn keyword pineOption save-aggregates-copy-sequence
+syn keyword pineOption save-will-advance
+syn keyword pineOption save-will-not-delete
+syn keyword pineOption save-will-quote-leading-froms
+syn keyword pineOption scramble-message-id
+syn keyword pineOption select-without-confirm
+syn keyword pineOption selectable-item-nobold
+syn keyword pineOption separate-folder-and-directory-entries
+syn keyword pineOption show-cursor
+syn keyword pineOption show-plain-text-internally
+syn keyword pineOption show-selected-in-boldface
+syn keyword pineOption signature-at-bottom
+syn keyword pineOption single-column-folder-list
+syn keyword pineOption slash-collapses-entire-thread
+syn keyword pineOption spell-check-before-sending
+syn keyword pineOption store-window-position-in-config
+syn keyword pineOption strip-from-sigdashes-on-reply
+syn keyword pineOption tab-visits-next-new-message-only
+syn keyword pineOption termdef-takes-precedence
+syn keyword pineOption thread-index-shows-important-color
+syn keyword pineOption try-alternative-authentication-driver-first
+syn keyword pineOption unselect-will-not-advance
+syn keyword pineOption use-current-dir
+syn keyword pineOption use-function-keys
+syn keyword pineOption use-sender-not-x-sender
+syn keyword pineOption use-subshell-for-suspend
+syn keyword pineOption vertical-folder-list
+
+syn match pineComment "^#.*$"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link pineConfig Type
+hi def link pineComment Comment
+hi def link pineOption Macro
+
+let b:current_syntax = "pine"
+
+" vim: ts=8
diff --git a/runtime/syntax/pinfo.vim b/runtime/syntax/pinfo.vim
new file mode 100644
index 0000000..cb9e60e
--- /dev/null
+++ b/runtime/syntax/pinfo.vim
@@ -0,0 +1,110 @@
+" Vim syntax file
+" Language: pinfo(1) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-06-17
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword+=-
+
+syn case ignore
+
+syn keyword pinfoTodo contained FIXME TODO XXX NOTE
+
+syn region pinfoComment start='^#' end='$' contains=pinfoTodo,@Spell
+
+syn keyword pinfoOptions MANUAL CUT-MAN-HEADERS CUT-EMPTY-MAN-LINES
+ \ RAW-FILENAME APROPOS
+ \ DONT-HANDLE-WITHOUT-TAG-TABLE HTTPVIEWER
+ \ FTPVIEWER MAILEDITOR PRINTUTILITY MANLINKS
+ \ INFOPATH MAN-OPTIONS STDERR-REDIRECTION
+ \ LONG-MANUAL-LINKS FILTER-0xB7
+ \ QUIT-CONFIRMATION QUIT-CONFIRM-DEFAULT
+ \ CLEAR-SCREEN-AT-EXIT CALL-READLINE-HISTORY
+ \ HIGHLIGHTREGEXP SAFE-USER SAFE-GROUP
+
+syn keyword pinfoColors COL_NORMAL COL_TOPLINE COL_BOTTOMLINE
+ \ COL_MENU COL_MENUSELECTED COL_NOTE
+ \ COL_NOTESELECTED COL_URL COL_URLSELECTED
+ \ COL_INFOHIGHLIGHT COL_MANUALBOLD
+ \ COL_MANUALITALIC COL_SEARCHHIGHLIGHT
+
+syn keyword pinfoColorDefault COLOR_DEFAULT
+syn keyword pinfoColorBold BOLD
+syn keyword pinfoColorNoBold NO_BOLD
+syn keyword pinfoColorBlink BLINK
+syn keyword pinfoColorNoBlink NO_BLINK
+syn keyword pinfoColorBlack COLOR_BLACK
+syn keyword pinfoColorRed COLOR_RED
+syn keyword pinfoColorGreen COLOR_GREEN
+syn keyword pinfoColorYellow COLOR_YELLOW
+syn keyword pinfoColorBlue COLOR_BLUE
+syn keyword pinfoColorMagenta COLOR_MAGENTA
+syn keyword pinfoColorCyan COLOR_CYAN
+syn keyword pinfoColorWhite COLOR_WHITE
+
+syn keyword pinfoKeys KEY_TOTALSEARCH_1 KEY_TOTALSEARCH_2
+ \ KEY_SEARCH_1 KEY_SEARCH_2
+ \ KEY_SEARCH_AGAIN_1 KEY_SEARCH_AGAIN_2
+ \ KEY_GOTO_1 KEY_GOTO_2 KEY_PREVNODE_1
+ \ KEY_PREVNODE_2 KEY_NEXTNODE_1
+ \ KEY_NEXTNODE_2 KEY_UP_1 KEY_UP_2 KEY_END_1
+ \ KEY_END_2 KEY_PGDN_1 KEY_PGDN_2
+ \ KEY_PGDN_AUTO_1 KEY_PGDN_AUTO_2 KEY_HOME_1
+ \ KEY_HOME_2 KEY_PGUP_1 KEY_PGUP_2
+ \ KEY_PGUP_AUTO_1 KEY_PGUP_AUTO_2 KEY_DOWN_1
+ \ KEY_DOWN_2 KEY_TOP_1 KEY_TOP_2 KEY_BACK_1
+ \ KEY_BACK_2 KEY_FOLLOWLINK_1
+ \ KEY_FOLLOWLINK_2 KEY_REFRESH_1
+ \ KEY_REFRESH_2 KEY_SHELLFEED_1
+ \ KEY_SHELLFEED_2 KEY_QUIT_1 KEY_QUIT_2
+ \ KEY_GOLINE_1 KEY_GOLINE_2 KEY_PRINT_1
+ \ KEY_PRINT_2 KEY_DIRPAGE_1 KEY_DIRPAGE_2
+ \ KEY_TWODOWN_1 KEY_TWODOWN_2 KEY_TWOUP_1
+ \ KEY_TWOUP_2
+
+syn keyword pinfoSpecialKeys KEY_BREAK KEY_DOWN KEY_UP KEY_LEFT KEY_RIGHT
+ \ KEY_DOWN KEY_HOME KEY_BACKSPACE KEY_NPAGE
+ \ KEY_PPAGE KEY_END KEY_IC KEY_DC
+syn region pinfoSpecialKeys matchgroup=pinfoSpecialKeys transparent
+ \ start=+KEY_\%(F\|CTRL\|ALT\)(+ end=+)+
+syn region pinfoSimpleKey start=+'+ skip=+\\'+ end=+'+
+ \ contains=pinfoSimpleKeyEscape
+syn match pinfoSimpleKeyEscape +\\[\\nt']+
+syn match pinfoKeycode '\<\d\+\>'
+
+syn keyword pinfoConstants TRUE FALSE YES NO
+
+hi def link pinfoTodo Todo
+hi def link pinfoComment Comment
+hi def link pinfoOptions Keyword
+hi def link pinfoColors Keyword
+hi def link pinfoColorDefault Normal
+hi def link pinfoSpecialKeys SpecialChar
+hi def link pinfoSimpleKey String
+hi def link pinfoSimpleKeyEscape SpecialChar
+hi def link pinfoKeycode Number
+hi def link pinfoConstants Constant
+hi def link pinfoKeys Keyword
+hi def pinfoColorBold cterm=bold
+hi def pinfoColorNoBold cterm=none
+hi def pinfoColorBlink cterm=inverse
+hi def pinfoColorNoBlink cterm=none
+hi def pinfoColorBlack ctermfg=Black guifg=Black
+hi def pinfoColorRed ctermfg=DarkRed guifg=DarkRed
+hi def pinfoColorGreen ctermfg=DarkGreen guifg=DarkGreen
+hi def pinfoColorYellow ctermfg=DarkYellow guifg=DarkYellow
+hi def pinfoColorBlue ctermfg=DarkBlue guifg=DarkBlue
+hi def pinfoColorMagenta ctermfg=DarkMagenta guifg=DarkMagenta
+hi def pinfoColorCyan ctermfg=DarkCyan guifg=DarkCyan
+hi def pinfoColorWhite ctermfg=LightGray guifg=LightGray
+
+let b:current_syntax = "pinfo"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/plaintex.vim b/runtime/syntax/plaintex.vim
new file mode 100644
index 0000000..5cb49a0
--- /dev/null
+++ b/runtime/syntax/plaintex.vim
@@ -0,0 +1,170 @@
+" Vim syntax file
+" Language: TeX (plain.tex format)
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-10-26
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match plaintexControlSequence display contains=@NoSpell
+ \ '\\[a-zA-Z@]\+'
+
+runtime! syntax/initex.vim
+unlet b:current_syntax
+
+syn match plaintexComment display
+ \ contains=ALLBUT,initexComment,plaintexComment
+ \ '^\s*%[CDM].*$'
+
+if exists("g:plaintex_delimiters")
+ syn match plaintexDelimiter display '[][{}]'
+endif
+
+syn match plaintexRepeat display contains=@NoSpell
+ \ '\\\%(loop\|repeat\)\>'
+
+syn match plaintexCommand display contains=@NoSpell
+ \ '\\\%(plainoutput\|TeX\)\>'
+syn match plaintexBoxCommand display contains=@NoSpell
+ \ '\\\%(null\|strut\)\>'
+syn match plaintexDebuggingCommand display contains=@NoSpell
+ \ '\\\%(showhyphens\|tracingall\|wlog\)\>'
+syn match plaintexFontsCommand display contains=@NoSpell
+ \ '\\\%(bf\|\%(five\|seven\)\%(bf\|i\|rm\|sy\)\|it\|oldstyle\|rm\|sl\|ten\%(bf\|ex\|it\=\|rm\|sl\|sy\|tt\)\|tt\)\>'
+syn match plaintexGlueCommand display contains=@NoSpell
+ \ '\\\%(\%(big\|en\|med\|\%(no\|off\)interline\|small\)skip\|\%(center\|left\|right\)\=line\|\%(dot\|\%(left\|right\)arrow\)fill\|[hv]glue\|[lr]lap\|q\=quad\|space\|topglue\)\>'
+syn match plaintexInsertsCommand display contains=@NoSpell
+ \ '\\\%(\%(end\|top\)insert\|v\=footnote\)\>'
+syn match plaintexJobCommand display contains=@NoSpell
+ \ '\\\%(bye\|fmt\%(name\|version\)\)\>'
+syn match plaintexInsertsCommand display contains=@NoSpell
+ \ '\\\%(mid\|page\)insert\>'
+syn match plaintexKernCommand display contains=@NoSpell
+ \ '\\\%(en\|\%(neg\)\=thin\)space\>'
+syn match plaintexMacroCommand display contains=@NoSpell
+ \ '\\\%(active\|[be]group\|empty\)\>'
+syn match plaintexPageCommand display contains=@NoSpell
+ \ '\\\%(\%(super\)\=eject\|nopagenumbers\|\%(normal\|ragged\)bottom\)\>'
+syn match plaintexParagraphCommand display contains=@NoSpell
+ \ '\\\%(endgraf\|\%(non\)\=frenchspacing\|hang\|item\%(item\)\=\|narrower\|normalbaselines\|obey\%(lines\|spaces\)\|openup\|proclaim\|\%(tt\)\=raggedright\|textindent\)\>'
+syn match plaintexPenaltiesCommand display contains=@NoSpell
+ \ '\\\%(allow\|big\|fil\|good\|med\|no\|small\)\=break\>'
+syn match plaintexRegistersCommand display contains=@NoSpell
+ \ '\\\%(advancepageno\|new\%(box\|count\|dimen\|fam\|help\|if\|insert\|language\|muskip\|read\|skip\|toks\|write\)\)\>'
+syn match plaintexTablesCommand display contains=@NoSpell
+ \ '&\|\\+\|\\\%(cleartabs\|endline\|hidewidth\|ialign\|multispan\|settabs\|tabalign\)\>'
+
+if !exists("g:plaintex_no_math")
+ syn region plaintexMath matchgroup=plaintexMath
+ \ contains=@plaintexMath,@NoSpell
+ \ start='\$' skip='\\\\\|\\\$' end='\$'
+ syn region plaintexMath matchgroup=plaintexMath
+ \ contains=@plaintexMath,@NoSpell keepend
+ \ start='\$\$' skip='\\\\\|\\\$' end='\$\$'
+endif
+
+" Keep this after plaintexMath, as we don’t want math mode started at a \$.
+syn match plaintexCharacterCommand display contains=@NoSpell
+ \ /\\\%(["#$%&'.=^_`~]\|``\|''\|-\{2,3}\|[?!]`\|^^L\|\~\|\%(a[ae]\|A[AE]\|acute\|[cdHoOPStuvijlL]\|copyright\|d\=dag\|folio\|ldotp\|[lr]q\|oe\|OE\|slash\|ss\|underbar\)\>\)/
+
+syn cluster plaintexMath
+ \ contains=plaintexMathCommand,plaintexMathBoxCommand,
+ \ plaintexMathCharacterCommand,plaintexMathDelimiter,
+ \ plaintexMathFontsCommand,plaintexMathLetter,plaintexMathSymbol,
+ \ plaintexMathFunction,plaintexMathOperator,plaintexMathPunctuation,
+ \ plaintexMathRelation
+
+syn match plaintexMathCommand display contains=@NoSpell contained
+ \ '\\\%([!*,;>{}|_^]\|\%([aA]rrowvert\|[bB]ig\%(g[lmr]\=\|r\)\=\|\%(border\|p\)\=matrix\|displaylines\|\%(down\|up\)bracefill\|eqalign\%(no\)\|leqalignno\|[lr]moustache\|mathpalette\|root\|s[bp]\|skew\|sqrt\)\>\)'
+syn match plaintexMathBoxCommand display contains=@NoSpell contained
+ \ '\\\%([hv]\=phantom\|mathstrut\|smash\)\>'
+syn match plaintexMathCharacterCommand display contains=@NoSpell contained
+ \ '\\\%(b\|bar\|breve\|check\|d\=dots\=\|grave\|hat\|[lv]dots\|tilde\|vec\|wide\%(hat\|tilde\)\)\>'
+syn match plaintexMathDelimiter display contains=@NoSpell contained
+ \ '\\\%(brace\%(vert\)\=\|brack\|cases\|choose\|[lr]\%(angle\|brace\|brack\|ceil\|floor\|group\)\|over\%(brace\|\%(left\|right\)arrow\)\|underbrace\)\>'
+syn match plaintexMathFontsCommand display contains=@NoSpell contained
+ \ '\\\%(\%(bf\|it\|sl\|tt\)fam\|cal\|mit\)\>'
+syn match plaintexMathLetter display contains=@NoSpell contained
+ \ '\\\%(aleph\|alpha\|beta\|chi\|[dD]elta\|ell\|epsilon\|eta\|[gG]amma\|[ij]math\|iota\|kappa\|[lL]ambda\|[mn]u\|[oO]mega\|[pP][hs]\=i\|rho\|[sS]igma\|tau\|[tT]heta\|[uU]psilon\|var\%(epsilon\|ph\=i\|rho\|sigma\|theta\)\|[xX]i\|zeta\)\>'
+syn match plaintexMathSymbol display contains=@NoSpell contained
+ \ '\\\%(angle\|backslash\|bot\|clubsuit\|emptyset\|epsilon\|exists\|flat\|forall\|hbar\|heartsuit\|Im\|infty\|int\|lnot\|nabla\|natural\|neg\|pmod\|prime\|Re\|sharp\|smallint\|spadesuit\|surd\|top\|triangle\%(left\|right\)\=\|vdash\|wp\)\>'
+syn match plaintexMathFunction display contains=@NoSpell contained
+ \ '\\\%(arc\%(cos\|sin\|tan\)\|arg\|\%(cos\|sin\|tan\)h\=\|coth\=\|csc\|de[gt]\|dim\|exp\|gcd\|hom\|inf\|ker\|lo\=g\|lim\%(inf\|sup\)\=\|ln\|max\|min\|Pr\|sec\|sup\)\>'
+syn match plaintexMathOperator display contains=@NoSpell contained
+ \ '\\\%(amalg\|ast\|big\%(c[au]p\|circ\|o\%(dot\|plus\|times\|sqcup\)\|triangle\%(down\|up\)\|uplus\|vee\|wedge\|bmod\|bullet\)\|c[au]p\|cdot[ps]\=\|circ\|coprod\|d\=dagger\|diamond\%(suit\)\=\|div\|land\|lor\|mp\|o\%(dot\|int\|minus\|plus\|slash\|times\)pm\|prod\|setminus\|sqc[au]p\|sqsu[bp]seteq\|star\|su[bp]set\%(eq\)\=\|sum\|times\|uplus\|vee\|wedge\|wr\)\>'
+syn match plaintexMathPunctuation display contains=@NoSpell contained
+ \ '\\\%(colon\)\>'
+syn match plaintexMathRelation display contains=@NoSpell contained
+ \ '\\\%(approx\|asymp\|bowtie\|buildrel\|cong\|dashv\|doteq\|[dD]ownarrow\|equiv\|frown\|geq\=\|gets\|gg\|hook\%(left\|right\)arrow\|iff\|in\|leq\=\|[lL]eftarrow\|\%(left\|right\)harpoon\%(down\|up\)\|[lL]eftrightarrow\|ll\|[lL]ongleftrightarrow\|longmapsto\|[lL]ongrightarrow\|mapsto\|mid\|models\|[ns][ew]arrow\|neq\=\|ni\|not\%(in\)\=\|owns\|parallel\|perp\|prec\%(eq\)\=\|propto\|[rR]ightarrow\|rightleftharpoons\|sim\%(eq\)\=\|smile\|succ\%(eq\)\=\|to\|[uU]parrow\|[uU]pdownarrow\|[vV]ert\)\>'
+
+syn match plaintexParameterDimen display contains=@NoSpell
+ \ '\\maxdimen\>'
+syn match plaintexMathParameterDimen display contains=@NoSpell
+ \ '\\jot\>'
+syn match plaintexParagraphParameterGlue display contains=@NoSpell
+ \ '\\\%(\%(big\|med\|small\)skipamount\|normalbaselineskip\|normallineskip\%(limit\)\=\)\>'
+
+syn match plaintexFontParameterInteger display contains=@NoSpell
+ \ '\\magstep\%(half\)\=\>'
+syn match plaintexJobParameterInteger display contains=@NoSpell
+ \ '\\magnification\>'
+syn match plaintexPageParameterInteger display contains=@NoSpell
+ \ '\\pageno\>'
+
+syn match plaintexPageParameterToken display contains=@NoSpell
+ \ '\\\%(foot\|head\)line\>'
+
+hi def link plaintexOperator Operator
+
+hi def link plaintexDelimiter Delimiter
+
+hi def link plaintexControlSequence Identifier
+hi def link plaintexComment Comment
+hi def link plaintexInclude Include
+hi def link plaintexRepeat Repeat
+
+hi def link plaintexCommand initexCommand
+hi def link plaintexBoxCommand plaintexCommand
+hi def link plaintexCharacterCommand initexCharacterCommand
+hi def link plaintexDebuggingCommand initexDebuggingCommand
+hi def link plaintexFontsCommand initexFontsCommand
+hi def link plaintexGlueCommand plaintexCommand
+hi def link plaintexInsertsCommand plaintexCommand
+hi def link plaintexJobCommand initexJobCommand
+hi def link plaintexKernCommand plaintexCommand
+hi def link plaintexMacroCommand initexMacroCommand
+hi def link plaintexPageCommand plaintexCommand
+hi def link plaintexParagraphCommand plaintexCommand
+hi def link plaintexPenaltiesCommand plaintexCommand
+hi def link plaintexRegistersCommand plaintexCommand
+hi def link plaintexTablesCommand plaintexCommand
+
+hi def link plaintexMath String
+hi def link plaintexMathCommand plaintexCommand
+hi def link plaintexMathBoxCommand plaintexBoxCommand
+hi def link plaintexMathCharacterCommand plaintexCharacterCommand
+hi def link plaintexMathDelimiter plaintexDelimiter
+hi def link plaintexMathFontsCommand plaintexFontsCommand
+hi def link plaintexMathLetter plaintexMathCharacterCommand
+hi def link plaintexMathSymbol plaintexMathLetter
+hi def link plaintexMathFunction Function
+hi def link plaintexMathOperator plaintexOperator
+hi def link plaintexMathPunctuation plaintexCharacterCommand
+hi def link plaintexMathRelation plaintexOperator
+
+hi def link plaintexParameterDimen initexParameterDimen
+hi def link plaintexMathParameterDimen initexMathParameterDimen
+hi def link plaintexParagraphParameterGlue initexParagraphParameterGlue
+hi def link plaintexFontParameterInteger initexFontParameterInteger
+hi def link plaintexJobParameterInteger initexJobParameterInteger
+hi def link plaintexPageParameterInteger initexPageParameterInteger
+hi def link plaintexPageParameterToken initexParameterToken
+
+let b:current_syntax = "plaintex"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/pli.vim b/runtime/syntax/pli.vim
new file mode 100644
index 0000000..a274cc4
--- /dev/null
+++ b/runtime/syntax/pli.vim
@@ -0,0 +1,266 @@
+" Vim syntax file
+" Modified from http://plnet.org/files/vim/
+" using keywords from http://www.kednos.com/pli/docs/reference_manual/6291pro_contents.html
+" 2012-11-13 Alan Thompson
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" Todo.
+syn keyword pl1Todo TODO FIXME XXX DEBUG NOTE
+
+" pl1CommentGroup allows adding matches for special things in comments
+" 20010723az: Added this so that these could be matched in comments...
+syn cluster pl1CommentGroup contains=pl1Todo
+
+syn match pl1Garbage "[^ \t()]"
+syn match pl1Identifier "[a-z][a-z0-9$_#]*"
+syn match pl1HostIdentifier ":[a-z][a-z0-9$_#]*"
+
+" 20010723az: When wanted, highlight the trailing whitespace -- this is
+" based on c_space_errors
+if exists("c_space_errors")
+ if !exists("c_no_trail_space_error")
+ syn match pl1SpaceError "\s\+$"
+ endif
+ if !exists("c_no_tab_space_error")
+ syn match pl1SpaceError " \+\t"me=e-1
+ endif
+endif
+
+" Symbols.
+syn match pl1Symbol "\(;\|,\|\.\)"
+syn match pl1PreProcSym "%"
+
+" Operators.
+syn match pl1Operator "\(&\|:\|!\|+\|-\|\*\|/\|=\|<\|>\|@\|\*\*\|!=\|\~=\)"
+syn match pl1Operator "\(\^\|\^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\"\)"
+
+" Attributes
+syn keyword pl1Attribute BACKWARDS BUFFERED BUF CONNECTED CONN CONSTANT EVENT
+syn keyword pl1Attribute EXCLUSIVE EXCL FORMAT GENERIC IRREDUCIBLE IRRED LOCAL
+syn keyword pl1Attribute REDUCIBLE RED TASK TRANSIENT UNBUFFERED UNBUF ALIGNED ANY
+syn keyword pl1Attribute AREA AUTOMATIC AUTO BASED BUILTIN CONDITION COND CONTROLLED
+syn keyword pl1Attribute CTL DEFINED DEF DIRECT ENVIRONMENT ENV EXTERNAL EXT FILE
+syn keyword pl1Attribute GLOBALDEF GLOBALREF INITIAL INIT INPUT INTERNAL INT KEYED
+syn keyword pl1Attribute LABEL LIKE LIST MEMBER NONVARYING NONVAR OPTIONAL OPTIONS
+syn keyword pl1Attribute OUTPUT PARAMETER PARM PICTURE PIC POSITION POS PRECISION
+syn keyword pl1Attribute PREC PRINT READONLY RECORD REFER RETURNS SEQUENTIAL SEQL
+syn keyword pl1Attribute STATIC STREAM STRUCTURE TRUNCATE UNALIGNED UNAL UNION UPDATE
+syn keyword pl1Attribute VARIABLE VARYING VAR COMPLEX CPLX REAL BINARY BIN BIT
+syn keyword pl1Attribute CHARACTER CHAR DECIMAL DEC DESCRIPTOR DESC DIMENSION DIM
+syn keyword pl1Attribute FIXED FLOAT OFFSET POINTER PTR REFERENCE VALUE VAL
+
+" Functions
+syn keyword pl1Function AFTER ALL ANY BEFORE COMPLETION CPLN CONJG COUNT
+syn keyword pl1Function CURRENTSTORAGE CSTG DATAFIELD DECAT DOT ERF ERFC IMAG
+syn keyword pl1Function ONCOUNT ONFIELD ONLOC POLY PRIORITY REPEAT SAMEKEY STATUS
+syn keyword pl1Function STORAGE STG ABS ACOS ACTUALCOUNT ADD ADDR ADDREL ALLOCATION
+syn keyword pl1Function ALLOCN ASIN ATAN ATAND ATANH BOOL BYTE BYTESIZE CEIL COLLATE
+syn keyword pl1Function COPY COS COSD COSH DATE DATETIME DECODE DISPLAY DIVIDE EMPTY
+syn keyword pl1Function ENCODE ERROR EVERY EXP EXTEND FLOOR FLUSH FREE HBOUND HIGH
+syn keyword pl1Function INDEX INFORM INT LBOUND LENGTH LINE LINENO LOG LOG10 LOG2
+syn keyword pl1Function LOW LTRIM MAX MAXLENGTH MIN MOD MULTIPLY NEXT_VOLUME NULL
+syn keyword pl1Function ONARGSLIST ONCHAR ONCODE ONFILE ONKEY ONSOURCE PAGENO POSINT
+syn keyword pl1Function PRESENT PROD RANK RELEASE RESIGNAL REVERSE REWIND ROUND
+syn keyword pl1Function RTRIM SEARCH SIGN SIN SIND SINH SIZE SOME SPACEBLOCK SQRT
+syn keyword pl1Function STRING SUBSTR SUBTRACT SUM TAN TAND TANH TIME TRANSLATE TRIM
+syn keyword pl1Function TRUNC UNSPEC VALID VARIANT VERIFY WARN
+
+" Other keywords
+syn keyword pl1Other ATTENTION ATTN C CONVERSION CONV DATA NAME NOCONVERSION
+syn keyword pl1Other NOCONV NOFIXEDOVERFLOW NOFOFL NOOVERFLOW NOSIZE
+syn keyword pl1Other NOSTRINGRANGE NOSTRG NOSTRINGSIZE NOSTRZ NOSUBSCRIPTRANGE
+syn keyword pl1Other NOSUBRG NOZERODIVIDE NOZDIV OVERFLOW OFL PENDING RECORD
+syn keyword pl1Other REENTRANT SIZE STRINGRANGE STRG STRINGSIZE STRZ
+syn keyword pl1Other SUBSCRIPTRANGE SUBRG TRANSMIT A ANYCONDITION APPEND B B1 B2
+syn keyword pl1Other B3 B4 BACKUP_DATE BATCH BLOCK_BOUNDARY_FORMAT BLOCK_IO
+syn keyword pl1Other BLOCK_SIZE BUCKET_SIZE BY CANCEL_CONTROL_O
+syn keyword pl1Other CARRIAGE_RETURN_FORMAT COLUMN COL CONTIGUOUS
+syn keyword pl1Other CONTIGUOUS_BEST_TRY CONVERSION CONV CREATION_DATE
+syn keyword pl1Other CURRENT_POSITION DEFAULT_FILE_NAME DEFERRED_WRITE E EDIT
+syn keyword pl1Other ENDFILE ENDPAGE EXPIRATION_DATE EXTENSION_SIZE F FAST_DELETE
+syn keyword pl1Other FILE_ID FILE_ID_TO FILE_SIZE FINISH FIXEDOVERFLOW FOFL
+syn keyword pl1Other FIXED_CONTROL_FROM FIXED_CONTROL_SIZE FIXED_CONTROL_SIZE_TO
+syn keyword pl1Other FIXED_CONTROL_TO FIXED_LENGTH_RECORDS FROM GROUP_PROTECTION
+syn keyword pl1Other IDENT IGNORE_LINE_MARKS IN INDEXED INDEX_NUMBER INITIAL_FILL
+syn keyword pl1Other INTO KEY KEYFROM KEYTO LINESIZE LOCK_ON_READ LOCK_ON_WRITE
+syn keyword pl1Other MAIN MANUAL_UNLOCKING MATCH_GREATER MATCH_GREATER_EQUAL
+syn keyword pl1Other MATCH_NEXT MATCH_NEXT_EQUAL MAXIMUM_RECORD_NUMBER
+syn keyword pl1Other MAXIMUM_RECORD_SIZE MULTIBLOCK_COUNT MULTIBUFFER_COUNT
+syn keyword pl1Other NOLOCK NONEXISTENT_RECORD NONRECURSIVE NO_ECHO NO_FILTER
+syn keyword pl1Other NO_SHARE OVERFLOW OFL OWNER_GROUP OWNER_ID OWNER_MEMBER
+syn keyword pl1Other OWNER_PROTECTION P PAGE PAGESIZE PRINTER_FORMAT PROMPT
+syn keyword pl1Other PURGE_TYPE_AHEAD R READ_AHEAD READ_CHECK READ_REGARDLESS
+syn keyword pl1Other RECORD_ID RECORD_ID_ACCESS RECORD_ID_TO RECURSIVE REPEAT
+syn keyword pl1Other RETRIEVAL_POINTERS REVISION_DATE REWIND_ON_CLOSE
+syn keyword pl1Other REWIND_ON_OPEN SCALARVARYING SET SHARED_READ SHARED_WRITE
+syn keyword pl1Other SKIP SPOOL STORAGE STRINGRANGE STRG SUBSCRIPTRANGE SUBRG
+syn keyword pl1Other SUPERSEDE SYSIN SYSPRINT SYSTEM_PROTECTION TAB TEMPORARY
+syn keyword pl1Other TIMEOUT_PERIOD TITLE TO UNDEFINEDFILE UNDF UNDERFLOW UFL
+syn keyword pl1Other UNTIL USER_OPEN VAXCONDITION WAIT_FOR_RECORD WHILE
+syn keyword pl1Other WORLD_PROTECTION WRITE_BEHIND WRITE_CHECK X ZERODIVIDE ZDIV
+
+" PreProcessor keywords
+syn keyword pl1PreProc ACTIVATE DEACTIVATE DECLARE DCL DICTIONARY DO END ERROR
+syn keyword pl1PreProc FATAL GOTO IF INCLUDE INFORM LIST NOLIST PAGE PROCEDURE PROC
+syn keyword pl1PreProc REPLACE RETURN SBTTL TITLE WARN THEN ELSE
+
+" Statements
+syn keyword pl1Statement CALL SUB ENTRY BY NAME CASE CHECK COPY DEFAULT DFT DELAY
+syn keyword pl1Statement DESCRIPTORS DISPLAY EXIT FETCH HALT IGNORE LIST LOCATE
+syn keyword pl1Statement NOCHECK NOLOCK NONE ORDER RANGE RELEASE REORDER REPLY SNAP
+syn keyword pl1Statement SYSTEM TAB UNLOCK WAIT ALLOCATE ALLOC BEGIN CALL CLOSE
+syn keyword pl1Statement DECLARE DCL DELETE DO ELSE END FORMAT GET GOTO GO TO IF
+syn keyword pl1Statement LEAVE NORESCAN ON OPEN OTHERWISE OTHER PROCEDURE PROC PUT
+syn keyword pl1Statement READ RESCAN RETURN REVERT REWRITE SELECT SIGNAL SNAP
+syn keyword pl1Statement STATEMENT STOP SYSTEM THEN WHEN WRITE
+
+" PL1's own keywords
+" syn match pl1Keyword "\<END\>"
+" syn match pl1Keyword "\.COUNT\>"hs=s+1
+" syn match pl1Keyword "\.EXISTS\>"hs=s+1
+" syn match pl1Keyword "\.FIRST\>"hs=s+1
+" syn match pl1Keyword "\.LAST\>"hs=s+1
+" syn match pl1Keyword "\.DELETE\>"hs=s+1
+" syn match pl1Keyword "\.PREV\>"hs=s+1
+" syn match pl1Keyword "\.NEXT\>"hs=s+1
+
+if exists("pl1_highlight_triggers")
+ syn keyword pl1Trigger INSERTING UPDATING DELETING
+endif
+
+" Conditionals.
+syn keyword pl1Conditional ELSIF ELSE IF
+syn match pl1Conditional "\<END\s\+IF\>"
+
+" Loops.
+syn keyword pl1Repeat FOR LOOP WHILE FORALL
+syn match pl1Repeat "\<END\s\+LOOP\>"
+
+" Various types of comments.
+" 20010723az: Added the ability to treat strings within comments just like
+" C does.
+if exists("c_comment_strings")
+ syntax match pl1CommentSkip contained "^\s*\*\($\|\s\+\)"
+ syntax region pl1CommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=pl1CommentSkip
+ syntax region pl1Comment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$"
+ syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError
+ syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError
+else
+ syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1SpaceError
+ syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1SpaceError
+endif
+
+" 20010723az: These are the old comment commands ... commented out.
+" syn match pl1Comment "--.*$" contains=pl1Todo
+" syn region pl1Comment start="/\*" end="\*/" contains=pl1Todo
+syn sync ccomment pl1Comment
+syn sync ccomment pl1CommentL
+
+" To catch unterminated string literals.
+syn match pl1StringError "'.*$"
+
+" Various types of literals.
+" 20010723az: Added stuff for comment matching.
+syn match pl1Numbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral
+syn match pl1NumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral
+syn match pl1IntLiteral contained "[+-]\=\d\+"
+syn match pl1FloatLiteral contained "[+-]\=\d\+\.\d*"
+syn match pl1FloatLiteral contained "[+-]\=\d*\.\d*"
+"syn match pl1FloatLiteral "[+-]\=\([0-9]*\.[0-9]\+\|[0-9]\+\.[0-9]\+\)\(e[+-]\=[0-9]\+\)\="
+syn match pl1CharLiteral "'[^']'"
+syn match pl1StringLiteral "'\([^']\|''\)*'"
+syn keyword pl1BooleanLiteral TRUE FALSE NULL
+
+" The built-in types.
+syn keyword pl1Storage ANYDATA ANYTYPE BFILE BINARY_INTEGER BLOB BOOLEAN
+syn keyword pl1Storage BYTE CHAR CHARACTER CLOB CURSOR DATE DAY DEC DECIMAL
+syn keyword pl1Storage DOUBLE DSINTERVAL_UNCONSTRAINED FLOAT HOUR
+syn keyword pl1Storage INT INTEGER INTERVAL LOB LONG MINUTE
+syn keyword pl1Storage MLSLABEL MONTH NATURAL NATURALN NCHAR NCHAR_CS NCLOB
+syn keyword pl1Storage NUMBER NUMERIC NVARCHAR PLS_INT PLS_INTEGER
+syn keyword pl1Storage POSITIVE POSITIVEN PRECISION RAW REAL RECORD
+syn keyword pl1Storage SECOND SIGNTYPE SMALLINT STRING SYS_REFCURSOR TABLE TIME
+syn keyword pl1Storage TIMESTAMP TIMESTAMP_UNCONSTRAINED
+syn keyword pl1Storage TIMESTAMP_TZ_UNCONSTRAINED
+syn keyword pl1Storage TIMESTAMP_LTZ_UNCONSTRAINED UROWID VARCHAR
+syn keyword pl1Storage VARCHAR2 YEAR YMINTERVAL_UNCONSTRAINED ZONE
+
+" A type-attribute is really a type.
+" 20020916bp: Removed leading part of pattern to avoid highlighting the
+" object
+syn match pl1TypeAttribute "%\(TYPE\|ROWTYPE\)\>"
+
+" All other attributes.
+syn match pl1Attribute "%\(BULK_EXCEPTIONS\|BULK_ROWCOUNT\|ISOPEN\|FOUND\|NOTFOUND\|ROWCOUNT\)\>"
+
+" Catch errors caused by wrong parentheses and brackets
+" 20010723az: significantly more powerful than the values -- commented out
+" below the replaced values. This adds the C functionality to PL/SQL.
+syn cluster pl1ParenGroup contains=pl1ParenError,@pl1CommentGroup,pl1CommentSkip,pl1IntLiteral,pl1FloatLiteral,pl1NumbersCom
+if exists("c_no_bracket_error")
+ syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup
+ syn match pl1ParenError ")"
+ syn match pl1ErrInParen contained "[{}]"
+else
+ syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup,pl1ErrInBracket
+ syn match pl1ParenError "[\])]"
+ syn match pl1ErrInParen contained "[{}]"
+ syn region pl1Bracket transparent start='\[' end=']' contains=ALLBUT,@pl1ParenGroup,pl1ErrInParen
+ syn match pl1ErrInBracket contained "[);{}]"
+endif
+" syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,pl1ParenError
+" syn match pl1ParenError ")"
+
+" Syntax Synchronizing
+syn sync minlines=10 maxlines=100
+
+" Define the default highlighting.
+" Only when and item doesn't have highlighting yet.
+
+hi def link pl1Attribute Macro
+hi def link pl1BlockError Error
+hi def link pl1BooleanLiteral Boolean
+hi def link pl1CharLiteral Character
+hi def link pl1Comment Comment
+hi def link pl1CommentL Comment
+hi def link pl1Conditional Conditional
+hi def link pl1Error Error
+hi def link pl1ErrInBracket Error
+hi def link pl1ErrInBlock Error
+hi def link pl1ErrInParen Error
+hi def link pl1Exception Function
+hi def link pl1FloatLiteral Float
+hi def link pl1Function Function
+hi def link pl1Garbage Error
+hi def link pl1HostIdentifier Label
+hi def link pl1Identifier Normal
+hi def link pl1IntLiteral Number
+hi def link pl1Operator Operator
+hi def link pl1Paren Normal
+hi def link pl1ParenError Error
+hi def link pl1SpaceError Error
+hi def link pl1Pseudo PreProc
+hi def link pl1PreProc PreProc
+hi def link pl1PreProcSym PreProc
+hi def link pl1Keyword Keyword
+hi def link pl1Other Keyword
+hi def link pl1Repeat Repeat
+hi def link pl1Statement Keyword
+hi def link pl1Storage StorageClass
+hi def link pl1StringError Error
+hi def link pl1StringLiteral String
+hi def link pl1CommentString String
+hi def link pl1Comment2String String
+hi def link pl1Symbol Normal
+hi def link pl1Trigger Function
+hi def link pl1TypeAttribute StorageClass
+hi def link pl1Todo Todo
+
+
+let b:current_syntax = "pl1"
diff --git a/runtime/syntax/plm.vim b/runtime/syntax/plm.vim
new file mode 100644
index 0000000..c6618ad
--- /dev/null
+++ b/runtime/syntax/plm.vim
@@ -0,0 +1,134 @@
+" Vim syntax file
+" Language: PL/M
+" Maintainer: Philippe Coulonges <cphil@cphil.net>
+" Last change: 2003 May 11
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" PL/M is a case insensitive language
+syn case ignore
+
+syn keyword plmTodo contained TODO FIXME XXX
+
+" String
+syn region plmString start=+'+ end=+'+
+
+syn match plmOperator "[@=\+\-\*\/\<\>]"
+
+syn match plmIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
+
+syn match plmDelimiter "[();,]"
+
+syn region plmPreProc start="^\s*\$\s*" skip="\\$" end="$"
+
+" FIXME : No Number support for floats, as I'm working on an embedded
+" project that doesn't use any.
+syn match plmNumber "-\=\<\d\+\>"
+syn match plmNumber "\<[0-9a-fA-F]*[hH]*\>"
+
+" If you don't like tabs
+"syn match plmShowTab "\t"
+"syn match plmShowTabc "\t"
+
+"when wanted, highlight trailing white space
+if exists("c_space_errors")
+ syn match plmSpaceError "\s*$"
+ syn match plmSpaceError " \+\t"me=e-1
+endif
+
+"
+ " Use the same control variable as C language for I believe
+ " users will want the same behavior
+if exists("c_comment_strings")
+ " FIXME : don't work fine with c_comment_strings set,
+ " which I don't care as I don't use
+
+ " A comment can contain plmString, plmCharacter and plmNumber.
+ " But a "*/" inside a plmString in a plmComment DOES end the comment! So we
+ " need to use a special type of plmString: plmCommentString, which also ends on
+ " "*/", and sees a "*" at the start of the line as comment again.
+ syntax match plmCommentSkip contained "^\s*\*\($\|\s\+\)"
+ syntax region plmCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=plmSpecial,plmCommentSkip
+ syntax region plmComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=plmSpecial
+ syntax region plmComment start="/\*" end="\*/" contains=plmTodo,plmCommentString,plmCharacter,plmNumber,plmFloat,plmSpaceError
+ syntax match plmComment "//.*" contains=plmTodo,plmComment2String,plmCharacter,plmNumber,plmSpaceError
+else
+ syn region plmComment start="/\*" end="\*/" contains=plmTodo,plmSpaceError
+ syn match plmComment "//.*" contains=plmTodo,plmSpaceError
+endif
+
+syntax match plmCommentError "\*/"
+
+syn keyword plmReserved ADDRESS AND AT BASED BY BYTE CALL CASE
+syn keyword plmReserved DATA DECLARE DISABLE DO DWORD
+syn keyword plmReserved ELSE ENABLE END EOF EXTERNAL
+syn keyword plmReserved GO GOTO HALT IF INITIAL INTEGER INTERRUPT
+syn keyword plmReserved LABEL LITERALLY MINUS MOD NOT OR
+syn keyword plmReserved PLUS POINTER PROCEDURE PUBLIC
+syn keyword plmReserved REAL REENTRANT RETURN SELECTOR STRUCTURE
+syn keyword plmReserved THEN TO WHILE WORD XOR
+syn keyword plm386Reserved CHARINT HWORD LONGINT OFFSET QWORD SHORTINT
+
+syn keyword plmBuiltIn ABS ADJUSTRPL BLOCKINPUT BLOCKINWORD BLOCKOUTPUT
+syn keyword plmBuiltIn BLOCKOUTWORD BUILPTR CARRY CAUSEINTERRUPT CMPB
+syn keyword plmBuiltIn CMPW DEC DOUBLE FINDB FINDRB FINDRW FINDW FIX
+syn keyword plmBuiltIn FLAGS FLOAT GETREALERROR HIGH IABS INITREALMATHUNIT
+syn keyword plmBuiltIn INPUT INT INWORD LAST LOCKSET LENGTH LOW MOVB MOVE
+syn keyword plmBuiltIn MOVRB MOVRW MOVW NIL OUTPUT OUTWORD RESTOREREALSTATUS
+syn keyword plmBuiltIn ROL ROR SAL SAVEREALSTATUS SCL SCR SELECTOROF SETB
+syn keyword plmBuiltIn SETREALMODE SETW SHL SHR SIGN SIGNED SIZE SKIPB
+syn keyword plmBuiltIn SKIPRB SKIPRW SKIPW STACKBASE STACKPTR TIME SIZE
+syn keyword plmBuiltIn UNSIGN XLAT ZERO
+syn keyword plm386BuiltIn INTERRUPT SETINTERRUPT
+syn keyword plm286BuiltIn CLEARTASKSWITCHEDFLAG GETACCESSRIGHTS
+syn keyword plm286BuiltIn GETSEGMENTLIMIT LOCALTABLE MACHINESTATUS
+syn keyword plm286BuiltIn OFFSETOF PARITY RESTOREGLOBALTABLE
+syn keyword plm286BuiltIn RESTOREINTERRUPTTABLE SAVEGLOBALTABLE
+syn keyword plm286BuiltIn SAVEINTERRUPTTABLE SEGMENTREADABLE
+syn keyword plm286BuiltIn SEGMENTWRITABLE TASKREGISTER WAITFORINTERRUPT
+syn keyword plm386BuiltIn CONTROLREGISTER DEBUGREGISTER FINDHW
+syn keyword plm386BuiltIn FINDRHW INHWORD MOVBIT MOVRBIT MOVHW MOVRHW
+syn keyword plm386BuiltIn OUTHWORD SCANBIT SCANRBIT SETHW SHLD SHRD
+syn keyword plm386BuiltIn SKIPHW SKIPRHW TESTREGISTER
+syn keyword plm386w16BuiltIn BLOCKINDWORD BLOCKOUTDWORD CMPD FINDD
+syn keyword plm386w16BuiltIn FINDRD INDWORD MOVD MOVRD OUTDWORD
+syn keyword plm386w16BuiltIn SETD SKIPD SKIPRD
+
+syn sync lines=50
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later
+" hi def link plmLabel Label
+" hi def link plmConditional Conditional
+" hi def link plmRepeat Repeat
+hi def link plmTodo Todo
+hi def link plmNumber Number
+hi def link plmOperator Operator
+hi def link plmDelimiter Operator
+"hi def link plmShowTab Error
+"hi def link plmShowTabc Error
+hi def link plmIdentifier Identifier
+hi def link plmBuiltIn Statement
+hi def link plm286BuiltIn Statement
+hi def link plm386BuiltIn Statement
+hi def link plm386w16BuiltIn Statement
+hi def link plmReserved Statement
+hi def link plm386Reserved Statement
+hi def link plmPreProc PreProc
+hi def link plmCommentError plmError
+hi def link plmCommentString plmString
+hi def link plmComment2String plmString
+hi def link plmCommentSkip plmComment
+hi def link plmString String
+hi def link plmComment Comment
+
+
+let b:current_syntax = "plm"
+
+" vim: ts=8 sw=2
+
diff --git a/runtime/syntax/plp.vim b/runtime/syntax/plp.vim
new file mode 100644
index 0000000..48dc4b2
--- /dev/null
+++ b/runtime/syntax/plp.vim
@@ -0,0 +1,37 @@
+" Vim syntax file
+" Language: PLP (Perl in HTML)
+" Maintainer: Juerd <juerd@juerd.nl>
+" Last Change: 2003 Apr 25
+" Cloned From: aspperl.vim
+
+" Add to filetype.vim the following line (without quote sign):
+" au BufNewFile,BufRead *.plp setf plp
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'perlscript'
+endif
+
+runtime! syntax/html.vim
+unlet b:current_syntax
+syn include @PLPperl syntax/perl.vim
+
+syn cluster htmlPreproc add=PLPperlblock
+
+syn keyword perlControl PLP_END
+syn keyword perlStatementInclude include Include
+syn keyword perlStatementFiles ReadFile WriteFile Counter
+syn keyword perlStatementScalar Entity AutoURL DecodeURI EncodeURI
+
+syn cluster PLPperlcode contains=perlStatement.*,perlFunction,perlOperator,perlVarPlain,perlVarNotInMatches,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlControl,perlConditional,perlRepeat,perlComment,perlPOD,perlHereDoc,perlPackageDecl,perlElseIfError,perlFiledescRead,perlMatch
+
+syn region PLPperlblock keepend matchgroup=Delimiter start=+<:=\=+ end=+:>+ transparent contains=@PLPperlcode
+
+syn region PLPinclude keepend matchgroup=Delimiter start=+<(+ end=+)>+
+
+let b:current_syntax = "plp"
+
diff --git a/runtime/syntax/plsql.vim b/runtime/syntax/plsql.vim
new file mode 100644
index 0000000..9b4df09
--- /dev/null
+++ b/runtime/syntax/plsql.vim
@@ -0,0 +1,863 @@
+" Vim syntax file
+" Language: Oracle Procedural SQL (PL/SQL)
+" Maintainer: Lee Lindley (lee dot lindley at gmail dot com)
+" Previous Maintainer: Jeff Lanzarotta (jefflanzarotta at yahoo dot com)
+" Previous Maintainer: C. Laurence Gonsalves (clgonsal@kami.com)
+" URL: https://github.com/lee-lindley/vim_plsql_syntax
+" Last Change: Sep 19, 2022
+" History Carsten Czarski (carsten dot czarski at oracle com)
+" add handling for typical SQL*Plus commands (rem, start, host, set, etc)
+" add error highlight for non-breaking space
+" Lee Lindley (lee dot lindley at gmail dot com)
+" use get with default 0 instead of exists per Bram suggestion
+" make procedure folding optional
+" updated to 19c keywords. refined quoting.
+" separated reserved, non-reserved keywords and functions
+" revised folding
+" Eugene Lysyonok (lysyonok at inbox ru)
+" Added folding.
+" Geoff Evans & Bill Pribyl (bill at plnet dot org)
+" Added 9i keywords.
+" Austin Ziegler (austin at halostatue dot ca)
+" Added 8i+ features.
+"
+" To put SQL keywords as Function group in legacy style
+" let plsql_legacy_sql_keywords = 1
+"
+" To enable folding (It does setlocal foldmethod=syntax)
+" let plsql_fold = 1
+"
+" To disable folding procedure/functions (recommended if you habitually
+" do not put the method name on the END statement)
+" let plsql_disable_procedure_fold = 1
+"
+" From my vimrc file -- turn syntax and syntax folding on,
+" associate file suffixes as plsql, open all the folds on file open
+" syntax enable
+" let plsql_fold = 1
+" au BufNewFile,BufRead *.sql,*.pls,*.tps,*.tpb,*.pks,*.pkb,*.pkg,*.trg set filetype=plsql
+" au BufNewFile,BufRead *.sql,*.pls,*.tps,*.tpb,*.pks,*.pkb,*.pkg,*.trg syntax on
+" au Syntax plsql normal zR
+" au Syntax plsql set foldcolumn=2 "optional if you want to see choosable folds on the left
+
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" this file uses line continuations
+let s:cpo_sav = &cpo
+set cpo&vim
+
+" Todo.
+syn keyword plsqlTodo TODO FIXME XXX DEBUG NOTE
+syn cluster plsqlCommentGroup contains=plsqlTodo
+
+syn case ignore
+
+syn match plsqlGarbage "[^ \t()]"
+syn match plsqlIdentifier "[a-z][a-z0-9$_#]*"
+syn match plsqlSqlPlusDefine "&&\?[a-z][a-z0-9$_#]*\.\?"
+syn match plsqlHostIdentifier ":[a-z][a-z0-9$_#]*"
+
+" The Non-Breaking is often accidentally typed (Mac User: Opt+Space, after typing the "|", Opt+7);
+" error highlight for these avoids running into annoying compiler errors.
+syn match plsqlIllegalSpace "[\xa0]"
+
+" When wanted, highlight the trailing whitespace.
+if get(g:,"plsql_space_errors",0) == 1
+ if get(g:,"plsql_no_trail_space_error",0) == 0
+ syn match plsqlSpaceError "\s\+$"
+ endif
+
+ if get(g:,"plsql_no_tab_space_error",0) == 0
+ syn match plsqlSpaceError " \+\t"me=e-1
+ endif
+endif
+
+" Symbols.
+syn match plsqlSymbol "[;,.()]"
+
+" Operators. and words that would be something else if not in operator mode
+syn match plsqlOperator "[-+*/=<>@"]"
+syn match plsqlOperator "\(\^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\*\*\|!=\|\~=\)"
+syn match plsqlOperator "\<\(NOT\|AND\|OR\|LIKE\|BETWEEN\|IN\)\>"
+syn match plsqlBooleanLiteral "\<NULL\>"
+syn match plsqlOperator "\<IS\\_s\+\(NOT\_s\+\)\?NULL\>"
+"
+" conditional compilation Preprocessor directives and sqlplus define sigil
+syn match plsqlPseudo "$[$a-z][a-z0-9$_#]*"
+
+syn match plsqlReserved "\<\(CREATE\|THEN\|UPDATE\|INSERT\|SET\)\>"
+syn match plsqlKeyword "\<\(REPLACE\|PACKAGE\|FUNCTION\|PROCEDURE\|TYPE|BODY\|WHEN\|MATCHED\)\>"
+syn region plsqlUpdate
+ \ matchgroup=plsqlReserved
+ \ start="\<UPDATE\>"
+ \ end="\<SET\>"
+ \ contains=@plsqlIdentifiers
+syn match plsqlReserved "\<WHEN\_s\+\(NOT\_s\+\)\?MATCHED\_s\+THEN\_s\+\(UPDATE\|INSERT\)\(\_s\+SET\)\?"
+
+"
+" Oracle's non-reserved keywords
+syn keyword plsqlKeyword ABORT ABS ABSENT ACCESS ACCESSED ACCOUNT ACL ACOS ACROSS ACTION ACTIONS
+syn keyword plsqlKeyword ACTIVATE ACTIVE ACTIVE_COMPONENT ACTIVE_DATA ACTIVE_FUNCTION ACTIVE_TAG ACTIVITY
+syn keyword plsqlKeyword ADAPTIVE_PLAN ADD ADD_COLUMN ADD_GROUP ADD_MONTHS ADG_REDIRECT_DML ADG_REDIRECT_PLSQL
+syn keyword plsqlKeyword ADJ_DATE ADMIN ADMINISTER ADMINISTRATOR ADVANCED ADVISE ADVISOR AFD_DISKSTRING
+syn keyword plsqlKeyword AFFINITY AFTER AGGREGATE AGGREGATES ALGORITHM ALIAS ALLOCATE ALLOW ALL_ROWS
+syn keyword plsqlKeyword ALTERNATE ALWAYS ANALYTIC ANALYTIC_VIEW_SQL ANALYZE ANCESTOR ANCILLARY AND_EQUAL
+syn keyword plsqlKeyword ANOMALY ANSI_REARCH ANSWER_QUERY_USING_STATS ANTIJOIN ANYSCHEMA ANY_VALUE
+syn keyword plsqlKeyword APPEND APPENDCHILDXML APPEND_VALUES APPLICATION APPLY APPROX_COUNT APPROX_COUNT_DISTINCT
+syn keyword plsqlKeyword APPROX_COUNT_DISTINCT_AGG APPROX_COUNT_DISTINCT_DETAIL APPROX_MEDIAN APPROX_PERCENTILE
+syn keyword plsqlKeyword APPROX_PERCENTILE_AGG APPROX_PERCENTILE_DETAIL APPROX_RANK APPROX_SUM ARCHIVAL
+syn keyword plsqlKeyword ARCHIVE ARCHIVED ARCHIVELOG ARRAY ARRAYS ASCII ASCIISTR ASIN ASIS ASSEMBLY
+syn keyword plsqlKeyword ASSIGN ASSOCIATE ASYNC ASYNCHRONOUS AS_JSON AT ATAN ATAN2 ATTRIBUTE ATTRIBUTES
+syn keyword plsqlKeyword AUDIT AUTHENTICATED AUTHENTICATION AUTHID AUTHORIZATION AUTO AUTOALLOCATE
+syn keyword plsqlKeyword AUTOEXTEND AUTOMATIC AUTO_LOGIN AUTO_REOPTIMIZE AVAILABILITY AVCACHE_OP AVERAGE_RANK
+syn keyword plsqlKeyword AVG AVMDX_OP AVRO AV_AGGREGATE AV_CACHE AW BACKGROUND BACKINGFILE BACKUP BAND_JOIN
+syn keyword plsqlKeyword BASIC BASICFILE BATCH BATCHSIZE BATCH_TABLE_ACCESS_BY_ROWID BECOME BEFORE
+syn keyword plsqlKeyword BEGINNING BEGIN_OUTLINE_DATA BEHALF BEQUEATH BFILENAME BIGFILE BINARY
+syn keyword plsqlKeyword BINARY_DOUBLE_INFINITY BINARY_DOUBLE_NAN BINARY_FLOAT_INFINITY BINARY_FLOAT_NAN
+syn keyword plsqlKeyword BINDING BIND_AWARE BIN_TO_NUM BITAND BITMAP BITMAPS BITMAP_AND BITMAP_BIT_POSITION
+syn keyword plsqlKeyword BITMAP_BUCKET_NUMBER BITMAP_CONSTRUCT_AGG BITMAP_COUNT BITMAP_OR_AGG BITMAP_TREE
+syn keyword plsqlKeyword BITOR BITS BITXOR BIT_AND_AGG BIT_OR_AGG BIT_XOR_AGG BLOCK BLOCKCHAIN BLOCKING
+syn keyword plsqlKeyword BLOCKS BLOCKSIZE BLOCK_RANGE BOOL BOOTSTRAP BOTH BOUND BRANCH BREADTH
+syn keyword plsqlKeyword BROADCAST BSON BUFFER BUFFER_CACHE BUFFER_POOL BUILD BULK BUSHY_JOIN BYPASS_RECURSIVE_CHECK
+syn keyword plsqlKeyword BYPASS_UJVC CACHE CACHE_CB CACHE_INSTANCES CACHE_TEMP_TABLE CACHING CALCULATED
+syn keyword plsqlKeyword CALL CALLBACK CANCEL CAPACITY CAPTION CAPTURE CARDINALITY CASCADE CAST
+syn keyword plsqlKeyword CATALOG_DBLINK CATEGORY CDB$DEFAULT CDB_HTTP_HANDLER CEIL CELLMEMORY CELL_FLASH_CACHE
+syn keyword plsqlKeyword CERTIFICATE CFILE CHAINED CHANGE CHANGE_DUPKEY_ERROR_INDEX CHARTOROWID CHAR_CS
+syn keyword plsqlKeyword CHECKPOINT CHECKSUM CHECK_ACL_REWRITE CHILD CHOOSE CHR CHUNK CLASS CLASSIFICATION
+syn keyword plsqlKeyword CLASSIFIER CLAUSE CLEAN CLEANUP CLEAR CLIENT CLONE CLOSE CLOSEST CLOSE_CACHED_OPEN_CURSORS
+syn keyword plsqlKeyword CLOUD_IDENTITY CLUSTERING CLUSTERING_FACTOR CLUSTERS CLUSTER_BY_ROWID CLUSTER_DETAILS
+syn keyword plsqlKeyword CLUSTER_DISTANCE CLUSTER_ID CLUSTER_PROBABILITY CLUSTER_SET COALESCE COALESCE_SQ
+syn keyword plsqlKeyword COARSE COLAUTH COLD COLLATE COLLATION COLLECT COLUMN COLUMNAR COLUMNS COLUMN_AUTHORIZATION_INDICATOR
+syn keyword plsqlKeyword COLUMN_AUTH_INDICATOR COLUMN_STATS COLUMN_VALUE COMMENT COMMIT COMMITTED COMMON
+syn keyword plsqlKeyword COMMON_DATA_MAP COMPACT COMPATIBILITY COMPILE COMPLETE COMPLIANCE COMPONENT
+syn keyword plsqlKeyword COMPONENTS COMPOSE COMPOSITE COMPOSITE_LIMIT COMPOUND COMPUTATION COMPUTE
+syn keyword plsqlKeyword CONCAT CONDITION CONDITIONAL CONFIRM CONFORMING CONNECT_BY_CB_WHR_ONLY CONNECT_BY_COMBINE_SW
+syn keyword plsqlKeyword CONNECT_BY_COST_BASED CONNECT_BY_ELIM_DUPS CONNECT_BY_FILTERING CONNECT_BY_ISCYCLE
+syn keyword plsqlKeyword CONNECT_BY_ISLEAF CONNECT_BY_ROOT CONNECT_TIME CONSENSUS CONSIDER CONSISTENT
+syn keyword plsqlKeyword CONST CONSTANT CONSTRAINT CONSTRAINTS CONTAINER CONTAINERS CONTAINERS_DEFAULT
+syn keyword plsqlKeyword CONTAINER_DATA CONTAINER_DATA_ADMIT_NULL CONTAINER_MAP CONTAINER_MAP_OBJECT
+syn keyword plsqlKeyword CONTENT CONTENTS CONTEXT CONTINUE CONTROLFILE CONVERSION CONVERT CON_DBID_TO_ID
+syn keyword plsqlKeyword CON_GUID_TO_ID CON_ID CON_ID_FILTER CON_ID_TO_CON_NAME CON_ID_TO_DBID CON_ID_TO_GUID
+syn keyword plsqlKeyword CON_ID_TO_UID CON_NAME_TO_ID CON_UID_TO_ID COOKIE COPY CORR CORRUPTION CORRUPT_XID
+syn keyword plsqlKeyword CORRUPT_XID_ALL CORR_K CORR_S COS COSH COST COST_XML_QUERY_REWRITE COVAR_POP
+syn match plsqlKeyword "\<COUNT\>"
+syn keyword plsqlKeyword COVAR_SAMP CO_AUTH_IND CPU_COSTING CPU_COUNT CPU_PER_CALL CPU_PER_SESSION
+syn keyword plsqlKeyword CPU_TIME CRASH CREATE_FILE_DEST CREATE_STORED_OUTLINES CREATION CREDENTIAL
+syn keyword plsqlKeyword CREDENTIALS CRITICAL CROSS CROSSEDITION CSCONVERT CUBE CUBE_AJ CUBE_GB CUBE_SJ
+syn keyword plsqlKeyword CUME_DIST CUME_DISTM CURRENT CURRENTV CURRENT_DATE CURRENT_INSTANCE CURRENT_PARTSET_KEY
+syn keyword plsqlKeyword CURRENT_SCHEMA CURRENT_SHARD_KEY CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER
+syn match plsqlKeyword "\<CURSOR\>"
+syn keyword plsqlKeyword CURSOR_SHARING_EXACT CURSOR_SPECIFIC_SEGMENT CV CYCLE DAGG_OPTIM_GSETS
+syn keyword plsqlKeyword DANGLING DATA DATABASE DATABASES DATAFILE DATAFILES DATAMOVEMENT DATAOBJNO
+syn keyword plsqlKeyword DATAOBJ_TO_MAT_PARTITION DATAOBJ_TO_PARTITION DATAPUMP DATASTORE DATA_LINK_DML
+syn keyword plsqlKeyword DATA_SECURITY_REWRITE_LIMIT DATA_VALIDATE DATE_MODE DAYS DBA DBA_RECYCLEBIN
+syn keyword plsqlKeyword DBMS_STATS DBSTR2UTF8 DBTIMEZONE DB_ROLE_CHANGE DB_UNIQUE_NAME DB_VERSION
+syn keyword plsqlKeyword DDL DEALLOCATE DEBUG DEBUGGER DECLARE DECODE DECOMPOSE DECOMPRESS DECORRELATE
+syn keyword plsqlKeyword DECR DECREMENT DECRYPT DEDUPLICATE DEFAULTS DEFAULT_COLLATION DEFAULT_PDB_HINT
+syn keyword plsqlKeyword DEFERRABLE DEFERRED DEFINED DEFINER DEFINITION DEGREE DELAY DELEGATE
+syn keyword plsqlKeyword DELETEXML DELETE_ALL DEMAND DENORM_AV DENSE_RANK DENSE_RANKM DEPENDENT DEPTH
+syn keyword plsqlKeyword DEQUEUE DEREF DEREF_NO_REWRITE DESCENDANT DESCRIPTION DESTROY DETACHED DETERMINED
+syn keyword plsqlKeyword DETERMINES DETERMINISTIC DG_GATHER_STATS DIAGNOSTICS DICTIONARY DIGEST DIMENSION
+syn keyword plsqlKeyword DIMENSIONS DIRECT DIRECTORY DIRECT_LOAD DIRECT_PATH DISABLE DISABLE_ALL DISABLE_CONTAINERS_DEFAULT
+syn keyword plsqlKeyword DISABLE_CONTAINER_MAP DISABLE_PARALLEL_DML DISABLE_PRESET DISABLE_RPKE DISALLOW
+syn keyword plsqlKeyword DISASSOCIATE DISCARD DISCONNECT DISK DISKGROUP DISKS DISMOUNT DISTINGUISHED
+syn keyword plsqlKeyword DISTRIBUTE DISTRIBUTED DIST_AGG_PROLLUP_PUSHDOWN DML DML_UPDATE DOCFIDELITY
+syn keyword plsqlKeyword DOCUMENT DOMAIN_INDEX_FILTER DOMAIN_INDEX_NO_SORT DOMAIN_INDEX_SORT DOWNGRADE
+syn keyword plsqlKeyword DRAIN_TIMEOUT DRIVING_SITE DROP_COLUMN DROP_GROUP DST_UPGRADE_INSERT_CONV
+syn keyword plsqlKeyword DUMP DUPLICATE DUPLICATED DV DYNAMIC DYNAMIC_SAMPLING DYNAMIC_SAMPLING_EST_CDN
+syn keyword plsqlKeyword EACH EDITION EDITIONABLE EDITIONING EDITIONS ELAPSED_TIME ELEMENT ELIMINATE_JOIN
+syn keyword plsqlKeyword ELIMINATE_OBY ELIMINATE_OUTER_JOIN ELIMINATE_SQ ELIM_GROUPBY EM EMPTY EMPTY_BLOB
+syn keyword plsqlKeyword EMPTY_CLOB ENABLE ENABLE_ALL ENABLE_PARALLEL_DML ENABLE_PRESET ENCODE ENCODING
+syn keyword plsqlKeyword ENCRYPT ENCRYPTION
+syn keyword plsqlKeyword END_OUTLINE_DATA ENFORCE ENFORCED ENQUEUE ENTERPRISE
+syn keyword plsqlKeyword ENTITYESCAPING ENTRY EQUIPART EQUIVALENT ERROR ERRORS ERROR_ARGUMENT ERROR_ON_OVERLAP_TIME
+syn keyword plsqlKeyword ESCAPE ESTIMATE EVAL EVALNAME EVALUATE EVALUATION EVEN EVENTS EVERY EXCEPTION
+syn keyword plsqlKeyword EXCEPTIONS EXCHANGE EXCLUDE EXCLUDING EXECUTE EXEMPT EXISTING EXISTSNODE EXP
+syn keyword plsqlKeyword EXPAND EXPAND_GSET_TO_UNION EXPAND_TABLE EXPIRE EXPLAIN EXPLOSION EXPORT EXPRESS
+syn keyword plsqlKeyword EXPR_CORR_CHECK EXTEND EXTENDED EXTENDS EXTENT EXTENTS EXTERNAL EXTERNALLY
+syn keyword plsqlKeyword EXTRA EXTRACT EXTRACTCLOBXML EXTRACTVALUE FACILITY FACT FACTOR FACTORIZE_JOIN
+syn keyword plsqlKeyword FAILED FAILED_LOGIN_ATTEMPTS FAILGROUP FAILOVER FAILURE FAMILY FAR FAST
+syn keyword plsqlKeyword FBTSCAN FEATURE FEATURE_COMPARE FEATURE_DETAILS FEATURE_ID FEATURE_SET FEATURE_VALUE
+syn keyword plsqlKeyword FEDERATION FETCH FILE FILEGROUP FILESTORE FILESYSTEM_LIKE_LOGGING FILE_NAME_CONVERT
+syn keyword plsqlKeyword FILTER FINAL FINE FINISH FIRSTM FIRST_ROWS FIRST_VALUE FIXED_VIEW_DATA
+syn match plsqlKeyword "\<FIRST\>"
+syn keyword plsqlKeyword FLAGGER FLASHBACK FLASH_CACHE FLEX FLOB FLOOR FLUSH FOLDER FOLLOWING FOLLOWS
+syn keyword plsqlKeyword FORCE FORCE_JSON_TABLE_TRANSFORM FORCE_SPATIAL FORCE_XML_QUERY_REWRITE FOREIGN
+syn keyword plsqlKeyword FOREVER FORMAT FORWARD FRAGMENT_NUMBER FREE FREELIST FREELISTS FREEPOOLS FRESH
+syn keyword plsqlKeyword FRESH_MV FROM_TZ FTP FULL FULL_OUTER_JOIN_TO_OUTER FUNCTIONS GATHER_OPTIMIZER_STATISTICS
+syn keyword plsqlKeyword GATHER_PLAN_STATISTICS GBY_CONC_ROLLUP GBY_PUSHDOWN GENERATED GET GLOBAL GLOBALLY
+syn keyword plsqlKeyword GLOBAL_NAME GLOBAL_TOPIC_ENABLED GOLDENGATE GOTO GRANTED GRANULAR GREATEST
+syn keyword plsqlKeyword GROUPING GROUPING_ID GROUPS GROUP_BY GROUP_ID GUARANTEE GUARANTEED GUARD H
+syn keyword plsqlKeyword HALF_YEARS HASH HASHING HASHKEYS HASHSET_BUILD HASH_AJ HASH_SJ HEADER HEAP
+syn keyword plsqlKeyword HELP HEXTORAW HEXTOREF HIDDEN HIDE HIERARCHICAL HIERARCHIES HIERARCHY HIER_ANCESTOR
+syn keyword plsqlKeyword HIER_CAPTION HIER_CHILDREN HIER_CHILD_COUNT HIER_COLUMN HIER_CONDITION HIER_DEPTH
+syn keyword plsqlKeyword HIER_DESCRIPTION HIER_HAS_CHILDREN HIER_LAG HIER_LEAD HIER_LEVEL HIER_MEMBER_NAME
+syn keyword plsqlKeyword HIER_MEMBER_UNIQUE_NAME HIER_ORDER HIER_PARENT HIER_WINDOW HIGH HINTSET_BEGIN
+syn keyword plsqlKeyword HINTSET_END HOT HOUR HOURS HTTP HWM_BROKERED HYBRID ID IDENTIFIER IDENTITY
+syn keyword plsqlKeyword IDGENERATORS IDLE IDLE_TIME IGNORE IGNORE_OPTIM_EMBEDDED_HINTS IGNORE_ROW_ON_DUPKEY_INDEX
+syn keyword plsqlKeyword IGNORE_WHERE_CLAUSE ILM IMMEDIATE IMMUTABLE IMPACT IMPORT INACTIVE INACTIVE_ACCOUNT_TIME
+syn keyword plsqlKeyword INCLUDE INCLUDES INCLUDE_VERSION INCLUDING INCOMING INCR INCREMENT INCREMENTAL
+syn keyword plsqlKeyword INDENT INDEXED INDEXES INDEXING INDEXTYPE INDEXTYPES INDEX_ASC INDEX_COMBINE
+syn keyword plsqlKeyword INDEX_DESC INDEX_FFS INDEX_FILTER INDEX_JOIN INDEX_ROWS INDEX_RRS INDEX_RS
+syn keyword plsqlKeyword INDEX_RS_ASC INDEX_RS_DESC INDEX_SCAN INDEX_SKIP_SCAN INDEX_SS INDEX_SS_ASC
+syn keyword plsqlKeyword INDEX_SS_DESC INDEX_STATS INDICATOR INFINITE INFORMATIONAL INHERIT INITCAP
+syn keyword plsqlKeyword INITIAL INITIALIZED INITIALLY INITRANS INLINE INLINE_XMLTYPE_NT INLINE_XT
+syn keyword plsqlKeyword INMEMORY INMEMORY_PRUNING INNER INPLACE INSENSITIVE INSERTCHILDXML INSERTCHILDXMLAFTER
+syn keyword plsqlKeyword INSERTCHILDXMLBEFORE INSERTXMLAFTER INSERTXMLBEFORE INSTALL INSTANCE INSTANCES
+syn keyword plsqlKeyword INSTANTIABLE INSTANTLY INSTEAD INSTR INSTR2 INSTR4 INSTRB INSTRC INTERLEAVED
+syn keyword plsqlKeyword INTERMEDIATE INTERNAL_CONVERT INTERNAL_USE INTERPRETED INTRA_CDB INVALIDATE
+syn keyword plsqlKeyword INVALIDATION INVISIBLE IN_MEMORY_METADATA IN_XQUERY IOSEEKTIM IOTFRSPEED IO_LOGICAL
+syn keyword plsqlKeyword IO_MEGABYTES IO_REQUESTS ISOLATE ISOLATION ISOLATION_LEVEL ITERATE ITERATION_NUMBER
+syn keyword plsqlKeyword JAVA JOB JOIN JSON JSONGET JSONPARSE JSONTOXML JSON_ARRAY JSON_ARRAYAGG JSON_EQUAL
+syn keyword plsqlKeyword JSON_EQUAL2 JSON_EXISTS JSON_EXISTS2 JSON_HASH JSON_LENGTH JSON_MERGEPATCH
+syn keyword plsqlKeyword JSON_MKMVI JSON_OBJECT JSON_OBJECTAGG JSON_PATCH JSON_QUERY JSON_SCALAR JSON_SERIALIZE
+syn keyword plsqlKeyword JSON_TABLE JSON_TEXTCONTAINS JSON_TEXTCONTAINS2 JSON_TRANSFORM JSON_VALUE
+syn keyword plsqlKeyword KEEP KEEP_DUPLICATES KERBEROS KEY KEYS KEYSIZE KEYSTORE KEY_LENGTH KILL
+syn keyword plsqlKeyword KURTOSIS_POP KURTOSIS_SAMP LABEL LAG LAG_DIFF LAG_DIFF_PERCENT LANGUAGE
+syn match plsqlKeyword "\<LAST\>"
+syn keyword plsqlKeyword LAST_DAY LAST_VALUE LATERAL LAX LAYER LDAP_REGISTRATION LDAP_REGISTRATION_ENABLED
+syn keyword plsqlKeyword LDAP_REG_SYNC_INTERVAL LEAD LEADING LEAD_CDB LEAD_CDB_URI LEAD_DIFF LEAD_DIFF_PERCENT
+syn keyword plsqlKeyword LEAF LEAST LEAVES LEDGER LEFT LENGTH LENGTH2 LENGTH4 LENGTHB LENGTHC LESS
+syn keyword plsqlKeyword LEVEL LEVELS LIBRARY LIFE LIFECYCLE LIFETIME LIKE2 LIKE4 LIKEC LIMIT LINEAR
+syn keyword plsqlKeyword LINK LIST LISTAGG LN LNNVL LOAD LOB LOBNVL LOBS LOB_VALUE LOCALTIME LOCALTIMESTAMP
+syn keyword plsqlKeyword LOCAL_INDEXES LOCATION LOCATOR LOCKDOWN LOCKED LOCKING LOG LOGFILE LOGFILES
+syn keyword plsqlKeyword LOGGING LOGICAL LOGICAL_READS_PER_CALL LOGICAL_READS_PER_SESSION LOGMINING
+syn keyword plsqlKeyword LOGOFF LOGON LOG_READ_ONLY_VIOLATIONS LOST LOW LOWER LPAD LTRIM MAIN MAKE_REF
+syn keyword plsqlKeyword MANAGE MANAGED MANAGEMENT MANAGER MANDATORY MANUAL MAP MAPPER MAPPING MASTER
+syn keyword plsqlKeyword MATCH MATCHES MATCH_NUMBER MATCH_RECOGNIZE MATERIALIZE MATERIALIZED
+syn keyword plsqlKeyword MATRIX MAX MAXARCHLOGS MAXDATAFILES MAXEXTENTS MAXIMIZE MAXINSTANCES MAXLOGFILES
+syn keyword plsqlKeyword MAXLOGHISTORY MAXLOGMEMBERS MAXSIZE MAXTRANS MAXVALUE MAX_AUDIT_SIZE MAX_DIAG_SIZE
+syn keyword plsqlKeyword MAX_PDB_SNAPSHOTS MAX_SHARED_TEMP_SIZE MBRC MEASURE MEASURES MEDIAN MEDIUM
+syn keyword plsqlKeyword MEMBER MEMCOMPRESS MEMOPTIMIZE MEMOPTIMIZE_WRITE MEMORY MERGE MERGE$ACTIONS
+syn keyword plsqlKeyword MERGE_AJ MERGE_CONST_ON MERGE_SJ METADATA METADATA_SOURCE_PDB METHOD MIGRATE
+syn keyword plsqlKeyword MIGRATE_CROSS_CON MIGRATION MIN MINEXTENTS MINIMIZE MINIMUM MINING MINUS_NULL
+syn keyword plsqlKeyword MINUTE MINUTES MINVALUE MIRROR MIRRORCOLD MIRRORHOT MISMATCH MISSING MLE MLSLABEL
+syn keyword plsqlKeyword MOD MODEL MODEL_COMPILE_SUBQUERY MODEL_DONTVERIFY_UNIQUENESS MODEL_DYNAMIC_SUBQUERY
+syn keyword plsqlKeyword MODEL_MIN_ANALYSIS MODEL_NB MODEL_NO_ANALYSIS MODEL_PBY MODEL_PUSH_REF MODEL_SV
+syn keyword plsqlKeyword MODIFICATION MODIFY MODIFY_COLUMN_TYPE MODULE MONITOR MONITORING MONTHS MONTHS_BETWEEN
+syn keyword plsqlKeyword MOUNT MOUNTPATH MOUNTPOINT MOVE MOVEMENT MULTIDIMENSIONAL MULTISET MULTIVALUE
+syn keyword plsqlKeyword MV_MERGE NAME NAMED NAMES NAMESPACE NAN NANVL NATIVE NATIVE_FULL_OUTER_JOIN
+syn keyword plsqlKeyword NATURAL NAV NCHAR_CS NCHR NEEDED NEG NESTED NESTED_ROLLUP_TOP NESTED_TABLE_FAST_INSERT
+syn keyword plsqlKeyword NESTED_TABLE_GET_REFS NESTED_TABLE_ID NESTED_TABLE_SET_REFS NESTED_TABLE_SET_SETID
+syn keyword plsqlKeyword NETWORK NEVER NEW NEW_TIME NEXT_DAY NLJ_BATCHING NLJ_INDEX_FILTER NLJ_INDEX_SCAN
+syn match plsqlKeyword "\<NEXT\>"
+syn keyword plsqlKeyword NLJ_PREFETCH NLSSORT NLS_CALENDAR NLS_CHARACTERSET NLS_CHARSET_DECL_LEN NLS_CHARSET_ID
+syn keyword plsqlKeyword NLS_CHARSET_NAME NLS_COLLATION_ID NLS_COLLATION_NAME NLS_COMP NLS_CURRENCY
+syn keyword plsqlKeyword NLS_DATE_FORMAT NLS_DATE_LANGUAGE NLS_INITCAP NLS_ISO_CURRENCY NLS_LANG NLS_LANGUAGE
+syn keyword plsqlKeyword NLS_LENGTH_SEMANTICS NLS_LOWER NLS_NCHAR_CONV_EXCP NLS_NUMERIC_CHARACTERS
+syn keyword plsqlKeyword NLS_SORT NLS_SPECIAL_CHARS NLS_TERRITORY NLS_UPPER NL_AJ NL_SJ NO NOAPPEND
+syn keyword plsqlKeyword NOARCHIVELOG NOAUDIT NOCACHE NOCOPY NOCPU_COSTING NOCYCLE NODELAY NOENTITYESCAPING
+syn keyword plsqlKeyword NOEXTEND NOFORCE NOGUARANTEE NOKEEP NOLOCAL NOLOGGING NOMAPPING NOMAXVALUE
+syn keyword plsqlKeyword NOMINIMIZE NOMINVALUE NOMONITORING NONBLOCKING NONE NONEDITIONABLE NONPARTITIONED
+syn keyword plsqlKeyword NONSCHEMA NOORDER NOOVERRIDE NOPARALLEL NOPARALLEL_INDEX NORELOCATE NORELY
+syn keyword plsqlKeyword NOREPAIR NOREPLAY NORESETLOGS NOREVERSE NOREWRITE NORMAL NOROWDEPENDENCIES
+syn keyword plsqlKeyword NOSCALE NOSCHEMACHECK NOSEGMENT NOSHARD NOSORT NOSTRICT NOSWITCH NOTHING NOTIFICATION
+syn keyword plsqlKeyword NOVALIDATE NOW NO_ACCESS NO_ADAPTIVE_PLAN NO_ANSI_REARCH NO_ANSWER_QUERY_USING_STATS
+syn keyword plsqlKeyword NO_AUTO_REOPTIMIZE NO_BAND_JOIN NO_BASETABLE_MULTIMV_REWRITE NO_BATCH_TABLE_ACCESS_BY_ROWID
+syn keyword plsqlKeyword NO_BIND_AWARE NO_BUFFER NO_BUSHY_JOIN NO_CARTESIAN NO_CHECK_ACL_REWRITE NO_CLUSTERING
+syn keyword plsqlKeyword NO_CLUSTER_BY_ROWID NO_COALESCE_SQ NO_COMMON_DATA NO_CONNECT_BY_CB_WHR_ONLY
+syn keyword plsqlKeyword NO_CONNECT_BY_COMBINE_SW NO_CONNECT_BY_COST_BASED NO_CONNECT_BY_ELIM_DUPS
+syn keyword plsqlKeyword NO_CONNECT_BY_FILTERING NO_CONTAINERS NO_COST_XML_QUERY_REWRITE NO_CPU_COSTING
+syn keyword plsqlKeyword NO_CROSS_CONTAINER NO_DAGG_OPTIM_GSETS NO_DATA_SECURITY_REWRITE NO_DECORRELATE
+syn keyword plsqlKeyword NO_DIST_AGG_PROLLUP_PUSHDOWN NO_DOMAIN_INDEX_FILTER NO_DST_UPGRADE_INSERT_CONV
+syn keyword plsqlKeyword NO_ELIMINATE_JOIN NO_ELIMINATE_OBY NO_ELIMINATE_OUTER_JOIN NO_ELIMINATE_SQ
+syn keyword plsqlKeyword NO_ELIM_GROUPBY NO_EXPAND NO_EXPAND_GSET_TO_UNION NO_EXPAND_TABLE NO_FACT
+syn keyword plsqlKeyword NO_FACTORIZE_JOIN NO_FILTERING NO_FULL_OUTER_JOIN_TO_OUTER NO_GATHER_OPTIMIZER_STATISTICS
+syn keyword plsqlKeyword NO_GBY_PUSHDOWN NO_INDEX NO_INDEX_FFS NO_INDEX_SS NO_INMEMORY NO_INMEMORY_PRUNING
+syn keyword plsqlKeyword NO_JSON_TABLE_TRANSFORM NO_LOAD NO_MERGE NO_MODEL_PUSH_REF NO_MONITOR NO_MONITORING
+syn keyword plsqlKeyword NO_MULTIMV_REWRITE NO_NATIVE_FULL_OUTER_JOIN NO_NLJ_BATCHING NO_NLJ_PREFETCH
+syn keyword plsqlKeyword NO_OBJECT_LINK NO_OBY_GBYPD_SEPARATE NO_ORDER_ROLLUPS NO_OR_EXPAND NO_OUTER_JOIN_TO_ANTI
+syn keyword plsqlKeyword NO_OUTER_JOIN_TO_INNER NO_PARALLEL NO_PARALLEL_INDEX NO_PARTIAL_COMMIT NO_PARTIAL_JOIN
+syn keyword plsqlKeyword NO_PARTIAL_OSON_UPDATE NO_PARTIAL_ROLLUP_PUSHDOWN NO_PLACE_DISTINCT NO_PLACE_GROUP_BY
+syn keyword plsqlKeyword NO_PQ_CONCURRENT_UNION NO_PQ_EXPAND_TABLE NO_PQ_MAP NO_PQ_NONLEAF_SKEW NO_PQ_REPLICATE
+syn keyword plsqlKeyword NO_PQ_SKEW NO_PRUNE_GSETS NO_PULL_PRED NO_PUSH_HAVING_TO_GBY NO_PUSH_PRED
+syn keyword plsqlKeyword NO_PUSH_SUBQ NO_PX_FAULT_TOLERANCE NO_PX_JOIN_FILTER NO_QKN_BUFF NO_QUERY_TRANSFORMATION
+syn keyword plsqlKeyword NO_REF_CASCADE NO_REORDER_WIF NO_RESULT_CACHE NO_REWRITE NO_ROOT_SW_FOR_LOCAL
+syn keyword plsqlKeyword NO_SEMIJOIN NO_SEMI_TO_INNER NO_SET_GBY_PUSHDOWN NO_SET_TO_JOIN NO_SQL_TRANSLATION
+syn keyword plsqlKeyword NO_SQL_TUNE NO_STAR_TRANSFORMATION NO_STATEMENT_QUEUING NO_STATS_GSETS NO_SUBQUERY_PRUNING
+syn keyword plsqlKeyword NO_SUBSTRB_PAD NO_SWAP_JOIN_INPUTS NO_TABLE_LOOKUP_BY_NL NO_TEMP_TABLE NO_TRANSFORM_DISTINCT_AGG
+syn keyword plsqlKeyword NO_UNNEST NO_USE_CUBE NO_USE_DAGG_UNION_ALL_GSETS NO_USE_HASH NO_USE_HASH_AGGREGATION
+syn keyword plsqlKeyword NO_USE_HASH_GBY_FOR_DAGGPSHD NO_USE_HASH_GBY_FOR_PUSHDOWN NO_USE_INVISIBLE_INDEXES
+syn keyword plsqlKeyword NO_USE_MERGE NO_USE_NL NO_USE_PARTITION_WISE_DISTINCT NO_USE_PARTITION_WISE_GBY
+syn keyword plsqlKeyword NO_USE_PARTITION_WISE_WIF NO_USE_SCALABLE_GBY_INVDIST NO_USE_VECTOR_AGGREGATION
+syn keyword plsqlKeyword NO_VECTOR_TRANSFORM NO_VECTOR_TRANSFORM_DIMS NO_VECTOR_TRANSFORM_FACT NO_XDB_FASTPATH_INSERT
+syn keyword plsqlKeyword NO_XMLINDEX_REWRITE NO_XMLINDEX_REWRITE_IN_SELECT NO_XML_DML_REWRITE NO_XML_QUERY_REWRITE
+syn keyword plsqlKeyword NO_ZONEMAP NTH_VALUE NTILE NULLIF NULLS NUMTODSINTERVAL NUMTOYMINTERVAL NUM_INDEX_KEYS
+syn keyword plsqlKeyword NVL NVL2 OBJECT OBJECT2XML OBJNO OBJNO_REUSE OBJ_ID OBY_GBYPD_SEPARATE OCCURENCES
+syn keyword plsqlKeyword OCCURRENCES ODD OFF OFFLINE OFFSET OID OIDINDEX OLAP OLD OLD_PUSH_PRED OLS
+syn keyword plsqlKeyword OLTP OMIT ONE ONLINE ONLY OPAQUE OPAQUE_TRANSFORM OPAQUE_XCANONICAL OPCODE
+syn keyword plsqlKeyword OPEN OPERATIONS OPERATOR OPTIMAL OPTIMIZE OPTIMIZER_FEATURES_ENABLE OPTIMIZER_GOAL
+syn keyword plsqlKeyword OPT_ESTIMATE OPT_PARAM ORADEBUG ORA_BRANCH ORA_CHECK_ACL ORA_CHECK_PRIVILEGE
+syn keyword plsqlKeyword ORA_CHECK_SYS_PRIVILEGE ORA_CLUSTERING ORA_CONCAT_RWKEY ORA_DM_PARTITION_NAME
+syn keyword plsqlKeyword ORA_DST_AFFECTED ORA_DST_CONVERT ORA_DST_ERROR ORA_GET_ACLIDS ORA_GET_PRIVILEGES
+syn keyword plsqlKeyword ORA_HASH ORA_INVOKING_USER ORA_INVOKING_USERID ORA_INVOKING_XS_USER ORA_INVOKING_XS_USER_GUID
+syn keyword plsqlKeyword ORA_NORMALIZE ORA_PARTITION_VALIDATION ORA_RAWCOMPARE ORA_RAWCONCAT ORA_ROWSCN
+syn keyword plsqlKeyword ORA_ROWSCN_RAW ORA_ROWVERSION ORA_SEARCH_RWKEY ORA_SHARDSPACE_NAME ORA_SHARD_ID
+syn keyword plsqlKeyword ORA_TABVERSION ORA_WRITE_TIME ORDERED ORDERED_PREDICATES ORDER_KEY_VECTOR_USE
+syn keyword plsqlKeyword ORDER_SUBQ ORDINALITY ORGANIZATION OR_EXPAND OR_PREDICATES OSON OSON_DIAG
+syn keyword plsqlKeyword OSON_GET_CONTENT OTHER OTHERS OUTER OUTER_JOIN_TO_ANTI OUTER_JOIN_TO_INNER
+syn keyword plsqlKeyword OUTLINE OUTLINE_LEAF OUT_OF_LINE OVER OVERFLOW OVERFLOW_NOMOVE OVERLAPS OWN
+syn keyword plsqlKeyword OWNER OWNERSHIP PACKAGES PARALLEL PARALLEL_INDEX PARAM PARAMETERS
+syn keyword plsqlKeyword PARENT PARITY PART$NUM$INST PARTIAL PARTIALLY PARTIAL_JOIN PARTIAL_ROLLUP_PUSHDOWN
+syn keyword plsqlKeyword PARTITION PARTITIONING PARTITIONS PARTITIONSET PARTITION_CONTAINED PARTITION_HASH
+syn keyword plsqlKeyword PARTITION_LIST PARTITION_RANGE PASSING PASSIVE PASSWORD PASSWORDFILE_METADATA_CACHE
+syn keyword plsqlKeyword PASSWORD_GRACE_TIME PASSWORD_LIFE_TIME PASSWORD_LOCK_TIME PASSWORD_REUSE_MAX
+syn keyword plsqlKeyword PASSWORD_REUSE_TIME PASSWORD_ROLLOVER_TIME PASSWORD_VERIFY_FUNCTION PAST PATCH
+syn keyword plsqlKeyword PATH PATHS PATH_PREFIX PATTERN PBL_HS_BEGIN PBL_HS_END PCTINCREASE PCTTHRESHOLD
+syn keyword plsqlKeyword PCTUSED PCTVERSION PDB_LOCAL_ONLY PEER PEERS PENDING PER PERCENT PERCENTAGE
+syn keyword plsqlKeyword PERCENTILE_CONT PERCENTILE_DISC PERCENT_RANK PERCENT_RANKM PERFORMANCE PERIOD
+syn keyword plsqlKeyword PERMANENT PERMISSION PERMUTE PERSISTABLE PFILE PHV PHYSICAL PIKEY PIVOT PIV_GB
+syn keyword plsqlKeyword PIV_SSF PLACE_DISTINCT PLACE_GROUP_BY PLAN PLSCOPE_SETTINGS PLSQL_CCFLAGS
+syn keyword plsqlKeyword PLSQL_CODE_TYPE PLSQL_DEBUG PLSQL_OPTIMIZE_LEVEL PLSQL_WARNINGS PLUGGABLE
+syn keyword plsqlKeyword PMEM POINT POLICY POOL_16K POOL_2K POOL_32K POOL_4K POOL_8K PORT POSITION
+syn keyword plsqlKeyword POST_TRANSACTION POWER POWERMULTISET POWERMULTISET_BY_CARDINALITY PQ_CONCURRENT_UNION
+syn keyword plsqlKeyword PQ_DISTRIBUTE PQ_DISTRIBUTE_WINDOW PQ_EXPAND_TABLE PQ_FILTER PQ_MAP PQ_NOMAP
+syn keyword plsqlKeyword PQ_NONLEAF_SKEW PQ_REPLICATE PQ_SKEW PREBUILT PRECEDES PRECEDING PRECOMPUTE_SUBQUERY
+syn keyword plsqlKeyword PREDICATE_REORDERS PREDICTION PREDICTION_BOUNDS PREDICTION_COST PREDICTION_DETAILS
+syn keyword plsqlKeyword PREDICTION_PROBABILITY PREDICTION_SET PRELOAD PREPARE PRESENT PRESENTNNV PRESENTV
+syn keyword plsqlKeyword PRESERVE PRESERVE_OID PRETTY PREVIOUS PRIMARY PRINTBLOBTOCLOB PRIORITY
+syn match plsqlKeyword "\<PREV\>"
+syn keyword plsqlKeyword PRIVATE PRIVATE_SGA PRIVILEGE PRIVILEGED PRIVILEGES PROCEDURAL PROCESS
+syn keyword plsqlKeyword PROFILE PROGRAM PROJECT PROPAGATE PROPAGATION PROPERTY PROTECTED PROTECTION
+syn keyword plsqlKeyword PROTOCOL PROXY PRUNING PULL_PRED PURGE PUSH_HAVING_TO_GBY PUSH_PRED PUSH_SUBQ
+syn keyword plsqlKeyword PX_FAULT_TOLERANCE PX_GRANULE PX_JOIN_FILTER QB_NAME QUALIFY QUARANTINE QUARTERS
+syn keyword plsqlKeyword QUERY QUERY_BLOCK QUEUE QUEUE_CURR QUEUE_ROWP QUIESCE QUORUM QUOTA QUOTAGROUP
+syn keyword plsqlKeyword QUOTES RANDOM RANDOM_LOCAL RANGE RANK RANKM RAPIDLY RATIO_TO_REPORT RAWTOHEX
+syn keyword plsqlKeyword RAWTONHEX RAWTOREF RBA RBO_OUTLINE RDBA READ READS READ_OR_WRITE REALM REBALANCE
+syn keyword plsqlKeyword REBUILD RECONNECT RECORDS_PER_BLOCK RECOVER RECOVERABLE RECOVERY RECYCLE RECYCLEBIN
+syn keyword plsqlKeyword REDACTION REDEFINE REDO REDUCED REDUNDANCY REFERENCE REFERENCED REFERENCES
+syn keyword plsqlKeyword REFERENCING REFRESH REFTOHEX REFTORAW REF_CASCADE_CURSOR REGEXP_COUNT REGEXP_INSTR
+syn keyword plsqlKeyword REGEXP_LIKE REGEXP_REPLACE REGEXP_SUBSTR REGISTER REGR_AVGX REGR_AVGY REGR_COUNT
+syn keyword plsqlKeyword REGR_INTERCEPT REGR_R2 REGR_SLOPE REGR_SXX REGR_SXY REGR_SYY REGULAR REJECT
+syn keyword plsqlKeyword REKEY RELATIONAL RELOCATE RELY REMAINDER REMOTE REMOTE_MAPPED REMOVE REORDER_WIF
+syn keyword plsqlKeyword REPAIR REPEAT REPLICATION REQUIRED RESERVOIR_SAMPLING RESET RESETLOGS
+syn keyword plsqlKeyword RESIZE RESOLVE RESOLVER RESPECT RESTART RESTORE RESTORE_AS_INTERVALS RESTRICT
+syn keyword plsqlKeyword RESTRICTED RESTRICT_ALL_REF_CONS RESULT_CACHE RESUMABLE RESUME RETENTION RETRY_ON_ROW_CHANGE
+syn keyword plsqlKeyword RETURN RETURNING REUSE REVERSE REWRITE REWRITE_OR_ERROR RIGHT RLS_FORCE ROLE
+syn keyword plsqlKeyword ROLES ROLESET ROLLBACK ROLLING ROLLOVER ROLLUP ROOT ROUND ROUND_TIES_TO_EVEN
+syn keyword plsqlKeyword ROW ROWDEPENDENCIES ROWIDTOCHAR ROWIDTONCHAR ROWID_MAPPING_TABLE ROWNUM ROWS
+syn keyword plsqlKeyword ROW_LENGTH ROW_NUMBER RPAD RTRIM RULE RULES RUNNING SALT SAMPLE SAVE SAVEPOINT
+syn keyword plsqlKeyword SAVE_AS_INTERVALS SB4 SCALAR SCALARS SCALE SCALE_ROWS SCAN SCAN_INSTANCES
+syn keyword plsqlKeyword SCHEDULER SCHEMA SCHEMACHECK SCN SCN_ASCENDING SCOPE SCRUB SDO_GEOM_KEY SDO_GEOM_MAX_X
+syn keyword plsqlKeyword SDO_GEOM_MAX_Y SDO_GEOM_MAX_Z SDO_GEOM_MBB SDO_GEOM_MBR SDO_GEOM_MIN_X SDO_GEOM_MIN_Y
+syn keyword plsqlKeyword SDO_GEOM_MIN_Z SDO_TOLERANCE SD_ALL SD_INHIBIT SD_SHOW SEARCH SECONDS SECRET
+syn keyword plsqlKeyword SECUREFILE SECUREFILE_DBA SECURITY SEED SEGMENT SEG_BLOCK SEG_FILE SELECTIVITY
+syn keyword plsqlKeyword SELF SEMIJOIN SEMIJOIN_DRIVER SEMI_TO_INNER SENSITIVE SEQUENCE SEQUENCED SEQUENTIAL
+syn keyword plsqlKeyword SERIAL SERIALIZABLE SERVERERROR SERVICE SERVICES SERVICE_NAME_CONVERT SESSION
+syn keyword plsqlKeyword SESSIONS_PER_USER SESSIONTIMEZONE SESSIONTZNAME SESSION_CACHED_CURSORS SETS
+syn keyword plsqlKeyword SETTINGS SET_GBY_PUSHDOWN SET_TO_JOIN SEVERE SHARD SHARDED SHARDS SHARDSPACE
+syn keyword plsqlKeyword SHARD_CHUNK_ID SHARED SHARED_POOL SHARE_OF SHARING SHD$COL$MAP SHELFLIFE
+syn keyword plsqlKeyword SHRINK SHUTDOWN SIBLING SIBLINGS SID SIGN SIGNAL_COMPONENT SIGNAL_FUNCTION
+syn keyword plsqlKeyword SIGNATURE SIMPLE SIN SINGLE SINGLETASK SINH SITE SKEWNESS_POP SKEWNESS_SAMP
+syn keyword plsqlKeyword SKIP SKIP_EXT_OPTIMIZER SKIP_PROXY SKIP_UNQ_UNUSABLE_IDX SKIP_UNUSABLE_INDEXES
+syn keyword plsqlKeyword SMALLFILE SNAPSHOT SOME SORT SOUNDEX SOURCE SOURCE_FILE_DIRECTORY SOURCE_FILE_NAME_CONVERT
+syn keyword plsqlKeyword SPACE SPATIAL SPECIFICATION SPFILE SPLIT SPREADSHEET SQL SQLLDR SQL_SCOPE
+syn keyword plsqlKeyword SQL_TRACE SQL_TRANSLATION_PROFILE SQRT STALE STANDALONE STANDARD_HASH STANDBY
+syn keyword plsqlKeyword STANDBYS STANDBY_MAX_DATA_DELAY STAR STARTUP STAR_TRANSFORMATION STATE STATEMENT
+syn keyword plsqlKeyword STATEMENTS STATEMENT_ID STATEMENT_QUEUING STATIC STATISTICS STATS_BINOMIAL_TEST
+syn keyword plsqlKeyword STATS_CROSSTAB STATS_F_TEST STATS_KS_TEST STATS_MODE STATS_MW_TEST STATS_ONE_WAY_ANOVA
+syn keyword plsqlKeyword STATS_T_TEST_INDEP STATS_T_TEST_INDEPU STATS_T_TEST_ONE STATS_T_TEST_PAIRED
+syn keyword plsqlKeyword STATS_WSR_TEST STDDEV STDDEV_POP STDDEV_SAMP STOP STORAGE STORAGE_INDEX STORE
+syn keyword plsqlKeyword STREAM STREAMS STRICT STRING STRINGS STRIP STRIPE_COLUMNS STRIPE_WIDTH STRUCTURE
+syn keyword plsqlKeyword SUBMULTISET SUBPARTITION SUBPARTITIONING SUBPARTITIONS SUBPARTITION_REL SUBQUERIES
+syn keyword plsqlKeyword SUBQUERY_PRUNING SUBSCRIBE SUBSET SUBSTITUTABLE SUBSTR SUBSTR2 SUBSTR4 SUBSTRB
+syn keyword plsqlKeyword SUBSTRC SUBTYPE SUCCESS SUCCESSFUL SUM SUMMARY SUPPLEMENTAL SUPPRESS_LOAD
+syn keyword plsqlKeyword SUSPEND SWAP_JOIN_INPUTS SWITCH SWITCHOVER SYNC SYNCHRONOUS SYSASM SYSAUX
+syn keyword plsqlKeyword SYSBACKUP SYSDATE SYSDBA SYSDG SYSGUID SYSKM SYSOBJ SYSOPER SYSRAC SYSTEM
+syn keyword plsqlKeyword SYSTEM_DEFINED SYSTEM_STATS SYSTIMESTAMP SYS_AUDIT SYS_CHECKACL SYS_CHECK_PRIVILEGE
+syn keyword plsqlKeyword SYS_CONNECT_BY_PATH SYS_CONS_ANY_SCALAR SYS_CONTEXT SYS_CTXINFOPK SYS_CTX_CONTAINS2
+syn keyword plsqlKeyword SYS_CTX_MKIVIDX SYS_DBURIGEN SYS_DL_CURSOR SYS_DM_RXFORM_CHR SYS_DM_RXFORM_LAB
+syn keyword plsqlKeyword SYS_DM_RXFORM_NUM SYS_DOM_COMPARE SYS_DST_PRIM2SEC SYS_DST_SEC2PRIM SYS_ET_BFILE_TO_RAW
+syn keyword plsqlKeyword SYS_ET_BLOB_TO_IMAGE SYS_ET_IMAGE_TO_BLOB SYS_ET_RAW_TO_BFILE SYS_EXTPDTXT
+syn keyword plsqlKeyword SYS_EXTRACT_UTC SYS_FBT_INSDEL SYS_FILTER_ACLS SYS_FNMATCHES SYS_FNREPLACE
+syn keyword plsqlKeyword SYS_GETTOKENID SYS_GETXTIVAL SYS_GET_ACLIDS SYS_GET_ANY_SCALAR SYS_GET_COL_ACLIDS
+syn keyword plsqlKeyword SYS_GET_PRIVILEGES SYS_GUID SYS_MAKEXML SYS_MAKE_XMLNODEID SYS_MKXMLATTR SYS_MKXTI
+syn keyword plsqlKeyword SYS_OPTLOBPRBSC SYS_OPTXICMP SYS_OPTXQCASTASNQ SYS_OP_ADT2BIN SYS_OP_ADTCONS
+syn keyword plsqlKeyword SYS_OP_ALSCRVAL SYS_OP_ATG SYS_OP_BIN2ADT SYS_OP_BITVEC SYS_OP_BL2R SYS_OP_BLOOM_FILTER
+syn keyword plsqlKeyword SYS_OP_BLOOM_FILTER_LIST SYS_OP_C2C SYS_OP_CAST SYS_OP_CEG SYS_OP_CL2C SYS_OP_COMBINED_HASH
+syn keyword plsqlKeyword SYS_OP_COMP SYS_OP_CONVERT SYS_OP_COUNTCHG SYS_OP_CSCONV SYS_OP_CSCONVTEST
+syn keyword plsqlKeyword SYS_OP_CSR SYS_OP_CSX_PATCH SYS_OP_CYCLED_SEQ SYS_OP_DECOMP SYS_OP_DESCEND
+syn keyword plsqlKeyword SYS_OP_DISTINCT SYS_OP_DRA SYS_OP_DSB_DESERIALIZE SYS_OP_DSB_SERIALIZE SYS_OP_DUMP
+syn keyword plsqlKeyword SYS_OP_DV_CHECK SYS_OP_ENFORCE_NOT_NULL$ SYS_OP_EXTRACT SYS_OP_GROUPING SYS_OP_GUID
+syn keyword plsqlKeyword SYS_OP_HASH SYS_OP_HCS_TABLE SYS_OP_IIX SYS_OP_INTERVAL_HIGH_BOUND SYS_OP_ITR
+syn keyword plsqlKeyword SYS_OP_KEY_VECTOR_CREATE SYS_OP_KEY_VECTOR_FILTER SYS_OP_KEY_VECTOR_FILTER_LIST
+syn keyword plsqlKeyword SYS_OP_KEY_VECTOR_PAYLOAD SYS_OP_KEY_VECTOR_SUCCEEDED SYS_OP_KEY_VECTOR_USE
+syn keyword plsqlKeyword SYS_OP_LBID SYS_OP_LOBLOC2BLOB SYS_OP_LOBLOC2CLOB SYS_OP_LOBLOC2ID SYS_OP_LOBLOC2NCLOB
+syn keyword plsqlKeyword SYS_OP_LOBLOC2TYP SYS_OP_LSVI SYS_OP_LVL SYS_OP_MAKEOID SYS_OP_MAP_NONNULL
+syn keyword plsqlKeyword SYS_OP_MSR SYS_OP_NICOMBINE SYS_OP_NIEXTRACT SYS_OP_NII SYS_OP_NIX SYS_OP_NOEXPAND
+syn keyword plsqlKeyword SYS_OP_NTCIMG$ SYS_OP_NUMTORAW SYS_OP_OBJ_UPD_IN_TXN SYS_OP_OIDVALUE SYS_OP_OPNSIZE
+syn keyword plsqlKeyword SYS_OP_PAR SYS_OP_PARGID SYS_OP_PARGID_1 SYS_OP_PART_ID SYS_OP_PAR_1 SYS_OP_PIVOT
+syn keyword plsqlKeyword SYS_OP_R2O SYS_OP_RAWTONUM SYS_OP_RDTM SYS_OP_REF SYS_OP_RMTD SYS_OP_ROWIDTOOBJ
+syn keyword plsqlKeyword SYS_OP_RPB SYS_OP_TOSETID SYS_OP_TPR SYS_OP_TRTB SYS_OP_UNDESCEND SYS_OP_VECAND
+syn keyword plsqlKeyword SYS_OP_VECBIT SYS_OP_VECOR SYS_OP_VECTOR_GROUP_BY SYS_OP_VECXOR SYS_OP_VERSION
+syn keyword plsqlKeyword SYS_OP_VREF SYS_OP_VVD SYS_OP_XMLCONS_FOR_CSX SYS_OP_XPTHATG SYS_OP_XPTHIDX
+syn keyword plsqlKeyword SYS_OP_XPTHOP SYS_OP_XTNN SYS_OP_XTXT2SQLT SYS_OP_ZONE_ID SYS_ORDERKEY_DEPTH
+syn keyword plsqlKeyword SYS_ORDERKEY_MAXCHILD SYS_ORDERKEY_PARENT SYS_PARALLEL_TXN SYS_PATHID_IS_ATTR
+syn keyword plsqlKeyword SYS_PATHID_IS_NMSPC SYS_PATHID_LASTNAME SYS_PATHID_LASTNMSPC SYS_PATH_REVERSE
+syn keyword plsqlKeyword SYS_PLSQL_COUNT SYS_PLSQL_CPU SYS_PLSQL_IO SYS_PXQEXTRACT SYS_RAW_TO_XSID
+syn keyword plsqlKeyword SYS_REMAP_XMLTYPE SYS_RID_ORDER SYS_ROW_DELTA SYS_SC_2_XMLT SYS_SYNRCIREDO
+syn keyword plsqlKeyword SYS_TYPEID SYS_UMAKEXML SYS_XMLANALYZE SYS_XMLCONTAINS SYS_XMLCONV SYS_XMLEXNSURI
+syn keyword plsqlKeyword SYS_XMLGEN SYS_XMLINSTR SYS_XMLI_LOC_ISNODE SYS_XMLI_LOC_ISTEXT SYS_XMLLOCATOR_GETSVAL
+syn keyword plsqlKeyword SYS_XMLNODEID SYS_XMLNODEID_GETCID SYS_XMLNODEID_GETLOCATOR SYS_XMLNODEID_GETOKEY
+syn keyword plsqlKeyword SYS_XMLNODEID_GETPATHID SYS_XMLNODEID_GETPTRID SYS_XMLNODEID_GETRID SYS_XMLNODEID_GETSVAL
+syn keyword plsqlKeyword SYS_XMLNODEID_GETTID SYS_XMLTRANSLATE SYS_XMLTYPE2SQL SYS_XMLT_2_SC SYS_XQBASEURI
+syn keyword plsqlKeyword SYS_XQCASTABLEERRH SYS_XQCODEP2STR SYS_XQCODEPEQ SYS_XQCON2SEQ SYS_XQCONCAT
+syn keyword plsqlKeyword SYS_XQDELETE SYS_XQDFLTCOLATION SYS_XQDOC SYS_XQDOCURI SYS_XQDURDIV SYS_XQED4URI
+syn keyword plsqlKeyword SYS_XQENDSWITH SYS_XQERR SYS_XQERRH SYS_XQESHTMLURI SYS_XQEXLOBVAL SYS_XQEXSTWRP
+syn keyword plsqlKeyword SYS_XQEXTRACT SYS_XQEXTRREF SYS_XQEXVAL SYS_XQFB2STR SYS_XQFNBOOL SYS_XQFNCMP
+syn keyword plsqlKeyword SYS_XQFNDATIM SYS_XQFNLNAME SYS_XQFNNM SYS_XQFNNSURI SYS_XQFNPREDTRUTH SYS_XQFNQNM
+syn keyword plsqlKeyword SYS_XQFNROOT SYS_XQFORMATNUM SYS_XQFTCONTAIN SYS_XQFUNCR SYS_XQGETCONTENT
+syn keyword plsqlKeyword SYS_XQINDXOF SYS_XQINSERT SYS_XQINSPFX SYS_XQIRI2URI SYS_XQLANG SYS_XQLLNMFRMQNM
+syn keyword plsqlKeyword SYS_XQMKNODEREF SYS_XQNILLED SYS_XQNODENAME SYS_XQNORMSPACE SYS_XQNORMUCODE
+syn keyword plsqlKeyword SYS_XQNSP4PFX SYS_XQNSPFRMQNM SYS_XQPFXFRMQNM SYS_XQPOLYABS SYS_XQPOLYADD
+syn keyword plsqlKeyword SYS_XQPOLYCEL SYS_XQPOLYCST SYS_XQPOLYCSTBL SYS_XQPOLYDIV SYS_XQPOLYFLR SYS_XQPOLYMOD
+syn keyword plsqlKeyword SYS_XQPOLYMUL SYS_XQPOLYRND SYS_XQPOLYSQRT SYS_XQPOLYSUB SYS_XQPOLYUMUS SYS_XQPOLYUPLS
+syn keyword plsqlKeyword SYS_XQPOLYVEQ SYS_XQPOLYVGE SYS_XQPOLYVGT SYS_XQPOLYVLE SYS_XQPOLYVLT SYS_XQPOLYVNE
+syn keyword plsqlKeyword SYS_XQREF2VAL SYS_XQRENAME SYS_XQREPLACE SYS_XQRESVURI SYS_XQRNDHALF2EVN SYS_XQRSLVQNM
+syn keyword plsqlKeyword SYS_XQRYENVPGET SYS_XQRYVARGET SYS_XQRYWRP SYS_XQSEQ2CON SYS_XQSEQ2CON4XC
+syn keyword plsqlKeyword SYS_XQSEQDEEPEQ SYS_XQSEQINSB SYS_XQSEQRM SYS_XQSEQRVS SYS_XQSEQSUB SYS_XQSEQTYPMATCH
+syn keyword plsqlKeyword SYS_XQSTARTSWITH SYS_XQSTATBURI SYS_XQSTR2CODEP SYS_XQSTRJOIN SYS_XQSUBSTRAFT
+syn keyword plsqlKeyword SYS_XQSUBSTRBEF SYS_XQTOKENIZE SYS_XQTREATAS SYS_XQXFORM SYS_XQ_ASQLCNV SYS_XQ_ATOMCNVCHK
+syn keyword plsqlKeyword SYS_XQ_NRNG SYS_XQ_PKSQL2XML SYS_XQ_UPKXML2SQL SYS_XSID_TO_RAW SYS_ZMAP_FILTER
+syn keyword plsqlKeyword SYS_ZMAP_REFRESH TABAUTH TABLES TABLESPACE TABLESPACE_NO TABLE_LOOKUP_BY_NL
+syn keyword plsqlKeyword TABLE_STATS TABNO TAG TAN TANH TARGET TBL$OR$IDX$PART$NUM TEMP TEMPFILE TEMPLATE
+syn keyword plsqlKeyword TEMPORARY TEMP_TABLE TENANT_ID TEST TEXT THAN THE THREAD THROUGH TIER TIES
+syn keyword plsqlKeyword TIMEOUT TIMES TIMESTAMP_TO_NUMBER TIMEZONE_ABBR TIMEZONE_HOUR TIMEZONE_MINUTE
+syn keyword plsqlKeyword TIMEZONE_OFFSET TIMEZONE_REGION TIME_ZONE TIV_GB TIV_SSF TOKEN TOPLEVEL TO_ACLID
+syn keyword plsqlKeyword TO_APPROX_COUNT_DISTINCT TO_APPROX_PERCENTILE TO_BINARY_DOUBLE TO_BINARY_FLOAT
+syn keyword plsqlKeyword TO_BLOB TO_CHAR TO_CLOB TO_DATE TO_DSINTERVAL TO_ISO_STRING TO_LOB TO_MULTI_BYTE
+syn keyword plsqlKeyword TO_NCHAR TO_NCLOB TO_NUMBER TO_SINGLE_BYTE TO_TIME TO_TIMESTAMP TO_TIMESTAMP_TZ
+syn keyword plsqlKeyword TO_TIME_TZ TO_UTC_TIMESTAMP_TZ TO_YMINTERVAL TRACE TRACING TRACKING TRAILING
+syn keyword plsqlKeyword TRANSACTION TRANSFORM TRANSFORM_DISTINCT_AGG TRANSITION TRANSITIONAL TRANSLATE
+syn keyword plsqlKeyword TRANSLATION TRANSPORTABLE TREAT TRIGGERS TRIM TRUNC TRUNCATE TRUST TRUSTED
+syn keyword plsqlKeyword TUNING TX TYPENAME TYPES TZ_OFFSET UB2 UBA UCS2 UID UNARCHIVED UNBOUND
+syn keyword plsqlKeyword UNBOUNDED UNCONDITIONAL UNDER UNDO UNDROP UNIFORM UNINSTALL UNION_ALL UNISTR
+syn keyword plsqlKeyword UNITE UNIXTIME UNLIMITED UNLOAD UNLOCK UNMATCHED UNNEST UNNEST_INNERJ_DISTINCT_VIEW
+syn keyword plsqlKeyword UNNEST_NOSEMIJ_NODISTINCTVIEW UNNEST_SEMIJ_VIEW UNPACKED UNPIVOT UNPLUG UNPROTECTED
+syn keyword plsqlKeyword UNQUIESCE UNRECOVERABLE UNRESTRICTED UNSUBSCRIBE UNTIL UNUSABLE UNUSED UPDATABLE
+syn keyword plsqlKeyword UPDATED UPDATEXML UPD_INDEXES UPD_JOININDEX UPGRADE UPPER UPSERT USABLE USAGE
+syn keyword plsqlKeyword USE USER USERENV USERGROUP USERS USER_DATA USER_DEFINED USER_RECYCLEBIN USER_TABLESPACES
+syn keyword plsqlKeyword USE_ANTI USE_CONCAT USE_CUBE USE_DAGG_UNION_ALL_GSETS USE_HASH USE_HASH_AGGREGATION
+syn keyword plsqlKeyword USE_HASH_GBY_FOR_DAGGPSHD USE_HASH_GBY_FOR_PUSHDOWN USE_HIDDEN_PARTITIONS
+syn keyword plsqlKeyword USE_INVISIBLE_INDEXES USE_MERGE USE_MERGE_CARTESIAN USE_NL USE_NL_WITH_INDEX
+syn keyword plsqlKeyword USE_PARTITION_WISE_DISTINCT USE_PARTITION_WISE_GBY USE_PARTITION_WISE_WIF
+syn keyword plsqlKeyword USE_PRIVATE_OUTLINES USE_SCALABLE_GBY_INVDIST USE_SEMI USE_STORED_OUTLINES
+syn keyword plsqlKeyword USE_TTT_FOR_GSETS USE_VECTOR_AGGREGATION USE_WEAK_NAME_RESL USING USING_NO_EXPAND
+syn keyword plsqlKeyword UTF16BE UTF16LE UTF32 UTF8 V1 V2 VALIDATE VALIDATE_CONVERSION VALIDATION VALID_TIME_END
+syn keyword plsqlKeyword VALUE VARIANCE VARRAY VARRAYS VAR_POP VAR_SAMP VECTOR VECTOR_ENCODE VECTOR_READ
+syn keyword plsqlKeyword VECTOR_READ_TRACE VECTOR_TRANSFORM VECTOR_TRANSFORM_DIMS VECTOR_TRANSFORM_FACT
+syn keyword plsqlKeyword VERIFIER VERIFY VERSION VERSIONING VERSIONS VERSIONS_ENDSCN VERSIONS_ENDTIME
+syn keyword plsqlKeyword VERSIONS_OPERATION VERSIONS_STARTSCN VERSIONS_STARTTIME VERSIONS_XID VIEWS
+syn keyword plsqlKeyword VIOLATION VIRTUAL VISIBILITY VISIBLE VOLUME VSIZE WAIT WALLET WEEK WEEKS WELLFORMED
+syn keyword plsqlKeyword WHITESPACE WIDTH_BUCKET WINDOW WITHIN WITHOUT WITH_EXPRESSION
+syn keyword plsqlKeyword WITH_PLSQL WORK WRAPPED WRAPPER WRITE XDB_FASTPATH_INSERT XID XML XML2OBJECT
+syn keyword plsqlKeyword XMLATTRIBUTES XMLCAST XMLCDATA XMLCOLATTVAL XMLCOMMENT XMLCONCAT XMLDIFF XMLELEMENT
+syn keyword plsqlKeyword XMLEXISTS XMLEXISTS2 XMLFOREST XMLINDEX_REWRITE XMLINDEX_REWRITE_IN_SELECT
+syn keyword plsqlKeyword XMLINDEX_SEL_IDX_TBL XMLISNODE XMLISVALID XMLNAMESPACES XMLPARSE XMLPATCH
+syn keyword plsqlKeyword XMLPI XMLQUERY XMLQUERYVAL XMLROOT XMLSCHEMA XMLSERIALIZE XMLTABLE XMLTOJSON
+syn keyword plsqlKeyword XMLTOKENSET XMLTRANSFORM XMLTRANSFORMBLOB XMLTSET_DML_ENABLE XML_DIAG XML_DML_RWT_STMT
+syn keyword plsqlKeyword XPATHTABLE XS XS_SYS_CONTEXT X_DYN_PRUNE YEARS YES ZONEMAP
+
+" Some of Oracle's Reserved keywords.
+syn keyword plsqlReserved ACCESSIBLE AGENT ALL ALTER ANY ASC BFILE_BASE BLOB_BASE BY
+"syn match plsqlReserved "\<AS\>"
+syn keyword plsqlReserved C CALLING CHARSET CHARSETFORM CHARSETID CHAR_BASE CHECK CLOB_BASE CLUSTER
+syn keyword plsqlReserved COLLATE COMPILED COMPRESS CONNECT CONNECT_BY_ROOT CONSTRUCTOR CUSTOMDATUM
+syn keyword plsqlReserved DATE_BASE DEFAULT DESC DISTINCT DROP DURATION EXCEPT EXCLUSIVE
+syn match plsqlReserved "\<DELETE\>"
+syn keyword plsqlReserved EXIT FIXED FROM GENERAL GRANT GROUP HAVING IDENTIFIED INDEX
+syn match plsqlReserved "\<EXISTS\>"
+syn keyword plsqlReserved INDICES INTERFACE INTERSECT INTO LARGE LIMITED LOCK MAXLEN
+syn keyword plsqlReserved MINUS MODE NOCOMPRESS NOWAIT NUMBER_BASE OCICOLL OCIDATE OCIDATETIME
+syn keyword plsqlReserved OCIDURATION OCIINTERVAL OCILOBLOCATOR OCINUMBER OCIRAW OCIREF OCIREFCURSOR
+syn keyword plsqlReserved OCIROWID OCISTRING OCITYPE OF ON OPTION ORACLE ORADATA ORDER ORLANY ORLVARY
+syn keyword plsqlReserved OUT OVERRIDING PARALLEL_ENABLE PARAMETER PASCAL PCTFREE PIPE PIPELINED POLYMORPHIC
+syn keyword plsqlReserved PRAGMA PRIOR PUBLIC RAISE RECORD RELIES_ON RENAME RESOURCE RESULT REVOKE ROWID
+syn keyword plsqlReserved SB1 SB2
+syn match plsqlReserved "\<SELECT\>"
+syn keyword plsqlReserved SEPARATE SHARE SHORT SIZE SIZE_T SPARSE SQLCODE SQLDATA
+syn keyword plsqlReserved SQLNAME SQLSTATE STANDARD START STORED STRUCT STYLE SYNONYM TABLE TDO
+syn keyword plsqlReserved TRANSACTIONAL TRIGGER UB1 UB4 UNION UNIQUE UNSIGNED UNTRUSTED VALIST
+syn keyword plsqlReserved VALUES VIEW VOID WHERE WITH
+
+" PL/SQL and SQL functions.
+syn keyword plsqlFunction ABS ACOS ADD_MONTHS APPROX_COUNT APPROX_COUNT_DISTINCT APPROX_COUNT_DISTINCT_AGG
+syn keyword plsqlFunction APPROX_COUNT_DISTINCT_DETAIL APPROX_MEDIAN APPROX_PERCENTILE APPROX_PERCENTILE_AGG
+syn keyword plsqlFunction APPROX_PERCENTILE_DETAIL APPROX_RANK APPROX_SUM ASCII ASCIISTR ASIN ATAN ATAN2
+syn keyword plsqlFunction AVG BFILENAME BIN_TO_NUM BITAND CARDINALITY CAST CEIL CHARTOROWID CHR CLUSTER_DETAILS
+syn keyword plsqlFunction CLUSTER_DISTANCE CLUSTER_ID CLUSTER_PROBABILITY CLUSTER_SET COALESCE COLLATION
+syn keyword plsqlFunction COLLECT COMPOSE CONCAT CONVERT CON_DBID_TO_ID CON_GUID_TO_ID CON_NAME_TO_ID
+syn keyword plsqlFunction CON_UID_TO_ID CORR COS COSH COVAR_POP COVAR_SAMP CUME_DIST CURRENT_DATE
+syn keyword plsqlFunction CURRENT_TIMESTAMP CV DATAOBJ_TO_MAT_PARTITION DATAOBJ_TO_PARTITION DBTIMEZONE
+syn keyword plsqlFunction DECODE DECOMPOSE DENSE_RANK DEPTH DEREF DUMP EMPTY_BLOB EMPTY_CLOB EXISTSNODE
+syn keyword plsqlFunction EXP EXTRACT EXTRACTVALUE FEATURE_COMPARE FEATURE_DETAILS FEATURE_ID FEATURE_SET
+syn keyword plsqlFunction FEATURE_VALUE FIRST_VALUE FLOOR FROM_TZ GREATEST GROUPING GROUPING_ID
+syn keyword plsqlFunction GROUP_ID HEXTORAW INITCAP INSTR ITERATION_NUMBER JSON_ARRAY JSON_ARRAYAGG
+syn keyword plsqlFunction JSON_OBJECT JSON_OBJECTAGG JSON_QUERY JSON_TABLE JSON_VALUE LAG LAST_DAY
+syn keyword plsqlFunction LAST_VALUE LEAD LEAST LENGTH LISTAGG LN LNNVL LOCALTIMESTAMP LOG LOWER LPAD
+syn keyword plsqlFunction LTRIM MAKE_REF MAX MEDIAN MIN MOD MONTHS_BETWEEN NANVL NCHR NEW_TIME NEXT_DAY
+syn keyword plsqlFunction NLSSORT NLS_CHARSET_DECL_LEN NLS_CHARSET_ID NLS_CHARSET_NAME NLS_COLLATION_ID
+syn keyword plsqlFunction NLS_COLLATION_NAME NLS_INITCAP NLS_LOWER NLS_UPPER NTH_VALUE NTILE NULLIF
+syn keyword plsqlFunction NUMTODSINTERVAL NUMTOYMINTERVAL NVL NVL2 ORA_DM_PARTITION_NAME ORA_DST_AFFECTED
+syn keyword plsqlFunction ORA_DST_CONVERT ORA_DST_ERROR ORA_HASH ORA_INVOKING_USER ORA_INVOKING_USERID
+syn keyword plsqlFunction PATH PERCENTILE_CONT PERCENTILE_DISC PERCENT_RANK POWER POWERMULTISET POWERMULTISET_BY_CARDINALITY
+syn keyword plsqlFunction PREDICTION PREDICTION_BOUNDS PREDICTION_COST PREDICTION_DETAILS PREDICTION_PROBABILITY
+syn keyword plsqlFunction PREDICTION_SET PRESENTNNV PRESENTV PREVIOUS RANK RATIO_TO_REPORT RAWTOHEX
+syn keyword plsqlFunction RAWTONHEX REFTOHEX REGEXP_COUNT REGEXP_INSTR REGEXP_REPLACE REGEXP_SUBSTR
+syn keyword plsqlFunction REMAINDER ROUND ROUND ROWIDTOCHAR ROWIDTONCHAR ROW_NUMBER RPAD RTRIM
+syn keyword plsqlFunction SCN_TO_TIMESTAMP SESSIONTIMEZONE SIGN SIN SINH SOUNDEX SQRT STANDARD_HASH
+syn keyword plsqlFunction STATS_BINOMIAL_TEST STATS_CROSSTAB STATS_F_TEST STATS_KS_TEST STATS_MODE STATS_MW_TEST
+syn keyword plsqlFunction STATS_ONE_WAY_ANOVA STATS_WSR_TEST STDDEV STDDEV_POP STDDEV_SAMP SUBSTR SUM
+syn keyword plsqlFunction SYSDATE SYSTIMESTAMP SYS_CONNECT_BY_PATH SYS_CONTEXT SYS_DBURIGEN SYS_EXTRACT_UTC
+syn keyword plsqlFunction SYS_GUID SYS_OP_ZONE_ID SYS_TYPEID SYS_XMLAGG SYS_XMLGEN TAN TANH TIMESTAMP_TO_SCN
+syn keyword plsqlFunction TO_APPROX_COUNT_DISTINCT TO_APPROX_PERCENTILE TO_BINARY_DOUBLE TO_BINARY_FLOAT
+syn keyword plsqlFunction TO_BLOB TO_CHAR TO_CLOB TO_DATE TO_DSINTERVAL TO_LOB TO_MULTI_BYTE TO_NCHAR
+syn keyword plsqlFunction TO_NCLOB TO_NUMBER TO_SINGLE_BYTE TO_TIMESTAMP TO_TIMESTAMP_TZ TO_YMINTERVAL
+syn keyword plsqlFunction TRANSLATE TREAT TRIM TRUNC TZ_OFFSET UID UNISTR UPPER USER USERENV VALIDATE_CONVERSION
+syn keyword plsqlFunction VALUE VARIANCE VAR_POP VAR_SAMP VSIZE WIDTH_BUCKET XMLAGG XMLCAST XMLCDATA
+syn keyword plsqlFunction XMLCOLATTVAL XMLCOMMENT XMLCONCAT XMLDIFF XMLELEMENT XMLEXISTS XMLFOREST XMLISVALID
+syn keyword plsqlFunction XMLPARSE XMLPATCH XMLPI XMLQUERY XMLROOT XMLSEQUENCE XMLSERIALIZE XMLTABLE
+syn keyword plsqlFunction XMLTRANSFORM
+syn keyword plsqlFunction CURRVAL NEXTVAL
+syn match plsqlFunction "\<SYS\$LOB_REPLICATION\>"
+syn match plsqlFunction "\.COUNT\>"hs=s+1
+syn match plsqlFunction "\.EXISTS\>"hs=s+1
+syn match plsqlFunction "\.FIRST\>"hs=s+1
+syn match plsqlFunction "\.LAST\>"hs=s+1
+syn match plsqlFunction "\.DELETE\>"hs=s+1
+syn match plsqlFunction "\.PREV\>"hs=s+1
+syn match plsqlFunction "\.NEXT\>"hs=s+1
+
+if get(g:,"plsql_legacy_sql_keywords",0) == 1
+ " Some of Oracle's SQL keywords.
+ syn keyword plsqlSQLKeyword ABORT ACCESS ACCESSED ADD AFTER ALL ALTER AND ANY
+ syn keyword plsqlSQLKeyword ASC ATTRIBUTE AUDIT AUTHORIZATION AVG BASE_TABLE
+ syn keyword plsqlSQLKeyword BEFORE BETWEEN BY CASCADE CAST CHECK CLUSTER
+ syn keyword plsqlSQLKeyword CLUSTERS COLAUTH COLUMN COMMENT COMPRESS CONNECT
+ syn keyword plsqlSQLKeyword CONSTRAINT CRASH CURRENT DATA DATABASE
+ syn keyword plsqlSQLKeyword DATA_BASE DBA DEFAULT DELAY DELETE DESC DISTINCT
+ syn keyword plsqlSQLKeyword DROP DUAL EXCLUSIVE EXISTS EXTENDS EXTRACT
+ syn keyword plsqlSQLKeyword FILE FORCE FOREIGN FROM GRANT GROUP HAVING HEAP
+ syn keyword plsqlSQLKeyword IDENTIFIED IDENTIFIER IMMEDIATE IN INCLUDING
+ syn keyword plsqlSQLKeyword INCREMENT INDEX INDEXES INITIAL INSERT INSTEAD
+ syn keyword plsqlSQLKeyword INTERSECT INTO INVALIDATE ISOLATION KEY LIBRARY
+ syn keyword plsqlSQLKeyword LIKE LOCK MAXEXTENTS MINUS MODE MODIFY MULTISET
+ syn keyword plsqlSQLKeyword NESTED NOAUDIT NOCOMPRESS NOT NOWAIT OF OFF OFFLINE
+ syn keyword plsqlSQLKeyword ON ONLINE OPERATOR OPTION ORDER ORGANIZATION
+ syn keyword plsqlSQLKeyword PCTFREE PRIMARY PRIOR PRIVATE PRIVILEGES PUBLIC
+ syn keyword plsqlSQLKeyword QUOTA RELEASE RENAME REPLACE RESOURCE REVOKE ROLLBACK
+ syn keyword plsqlSQLKeyword ROW ROWLABEL ROWS SCHEMA
+ syn match plsqlSQLKeyword "\<SELECT\>"
+ syn keyword plsqlSQLKeyword SEPARATE SESSION SET
+ syn keyword plsqlSQLKeyword SHARE SIZE SPACE START STORE SUCCESSFUL SYNONYM
+ syn keyword plsqlSQLKeyword SYSDATE TABLE TABLES TABLESPACE TEMPORARY TO TREAT
+ syn keyword plsqlSQLKeyword TRIGGER TRUNCATE UID UNION UNIQUE UNLIMITED UPDATE
+ syn keyword plsqlSQLKeyword USE USER VALIDATE VALUES VIEW WHENEVER WHERE WITH
+endif
+
+
+" The built-in types.
+syn keyword plsqlStorage CHAR BYTE VARCHAR2 NCHAR NVARCHAR2
+syn keyword plsqlStorage NUMBER FLOAT BINARY_FLOAT BINARY_DOUBLE LONG RAW
+syn keyword plsqlStorage DATE TIMESTAMP INTERVAL LOCAL TIME ZONE TO MONTH SECOND YEAR DAY
+syn keyword plsqlStorage BLOB CLOB NCLOB BFILE UROWID
+syn keyword plsqlStorage CHARACTER VARYING VARCHAR NATIONAL CHARACTER
+syn keyword plsqlStorage NUMERIC DECIMAL DEC INTEGER INT SMALLINT
+syn keyword plsqlStorage FLOAT DOUBLE PRECISION REAL
+syn keyword plsqlStorage SDO_GEOMETRY SDO_TOPO_GEOMETRY SDO_GEORASTER
+syn keyword plsqlStorage REF ANYTYPE ANYDATA ANYDATASET XMLTYPE HTTPURITYPE XDBURITYPE DUBRITYPE
+syn keyword plsqlStorage BOOLEAN PLS_INTEGER BINARY_INTEGER SIMPLE_FLOAT SIMPLE_INTEGER SIMPLE_DOUBLE SYS_REFCURSOR
+"
+" PL/SQL Exceptions
+syn keyword plsqlException ACCESS_INTO_NULL CASE_NOT_FOUND COLLECTION_IS_NULL
+syn keyword plsqlException CURSOR_ALREADY_OPEN DUP_VAL_ON_INDEX INVALID_CURSOR
+syn keyword plsqlException INVALID_NUMBER LOGIN_DENIED NO_DATA_FOUND
+syn keyword plsqlException NOT_LOGGED_ON PROGRAM_ERROR ROWTYPE_MISMATCH
+syn keyword plsqlException SELF_IS_NULL STORAGE_ERROR SUBSCRIPT_BEYOND_COUNT
+syn keyword plsqlException SUBSCRIPT_OUTSIDE_LIMIT SYS_INVALID_ROWID
+syn keyword plsqlException TIMEOUT_ON_RESOURCE TOO_MANY_ROWS VALUE_ERROR
+syn keyword plsqlException ZERO_DIVIDE
+
+if get(g:,"plsql_highlight_triggers",0) == 1
+ syn keyword plsqlTrigger INSERTING UPDATING DELETING
+endif
+
+" so can not contain it for folding. May no longer be necessary and can change them to plsqlKeyword
+syn match plsqlBEGIN "\<BEGIN\>"
+syn match plsqlEND "\<END\>"
+syn match plsqlISAS "\<\(IS\|AS\)\>"
+
+" Various types of comments.
+syntax region plsqlCommentL start="--" skip="\\$" end="$" keepend extend contains=@plsqlCommentGroup,plsqlSpaceError,plsqlIllegalSpace,plsqlSqlplusDefine
+if get(g:,"plsql_fold",0) == 1
+ syntax region plsqlComment
+ \ start="/\*" end="\*/"
+ \ extend
+ \ contains=@plsqlCommentGroup,plsqlSpaceError,plsqlIllegalSpace,plsqlSqlplusDefine
+ \ fold
+else
+ syntax region plsqlComment
+ \ start="/\*" end="\*/"
+ \ extend
+ \ contains=@plsqlCommentGroup,plsqlSpaceError,plsqlIllegalSpace,plsqlSqlplusDefine
+endif
+syn cluster plsqlCommentAll contains=plsqlCommentL,plsqlComment
+
+syn sync ccomment plsqlComment
+syn sync ccomment plsqlCommentL
+
+" To catch unterminated string literals.
+syn match plsqlStringError "'.*$"
+
+" Various types of literals.
+" the + and - get sucked up as operators. Not sure how to take precedence here. Something to do with word boundaries.
+" most other syntax files do not try to includ +/- in the number token, so leave them as unary operators
+" even though the oracle documentation counts the sign as part of the numeric literal
+syn match plsqlNumbers transparent "\<\d\|\.\d" contains=plsqlIntLiteral,plsqlFloatLiteral
+syn match plsqlNumbersCom contained transparent "\<\d\|\.\d" contains=plsqlIntLiteral,plsqlFloatLiteral
+syn match plsqlIntLiteral contained "\d\+"
+syn match plsqlFloatLiteral contained "\d\+\.\(\d\+\([eE][+-]\?\d\+\)\?\)\?[fd]\?"
+syn match plsqlFloatLiteral contained "\.\(\d\+\([eE][+-]\?\d\+\)\?\)[fd]\?"
+
+" double quoted strings in SQL are database object names. Should be a subgroup of Normal.
+" We will use Character group as a proxy for that so color can be chosen close to Normal
+syn region plsqlQuotedIdentifier matchgroup=plsqlOperator start=+n\?"+ end=+"+ keepend extend
+syn cluster plsqlIdentifiers contains=plsqlIdentifier,plsqlQuotedIdentifier,plsqlSqlPlusDefine
+
+" quoted string literals
+if get(g:,"plsql_fold",0) == 1
+ syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?'+ skip=+''+ end=+'+ contains=plsqlSqlplusDefine fold keepend extend
+ syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'\z([^[(<{]\)+ end=+\z1'+ contains=plsqlSqlplusDefine fold keepend extend
+ syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'<+ end=+>'+ contains=plsqlSqlplusDefine fold keepend extend
+ syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'{+ end=+}'+ contains=plsqlSqlplusDefine fold keepend extend
+ syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'(+ end=+)'+ contains=plsqlSqlplusDefine fold keepend extend
+ syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'\[+ end=+]'+ contains=plsqlSqlplusDefine fold keepend extend
+else
+ syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?'+ skip=+''+ end=+'+ contains=plsqlSqlplusDefine
+ syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'\z([^[(<{]\)+ end=+\z1'+ contains=plsqlSqlplusDefine
+ syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'<+ end=+>'+ contains=plsqlSqlplusDefine
+ syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'{+ end=+}'+ contains=plsqlSqlplusDefine
+ syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'(+ end=+)'+ contains=plsqlSqlplusDefine
+ syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'\[+ end=+]'+ contains=plsqlSqlplusDefine
+endif
+
+syn keyword plsqlBooleanLiteral TRUE FALSE
+
+" A type-attribute is really a type.
+syn match plsqlTypeAttribute "%\(TYPE\|ROWTYPE\)\>"
+
+" All other attributes.
+syn match plsqlAttribute "%\(BULK_EXCEPTIONS\|BULK_ROWCOUNT\|ISOPEN\|FOUND\|NOTFOUND\|ROWCOUNT\)\>"
+
+" This'll catch mis-matched close-parens.
+syn cluster plsqlParenGroup contains=plsqlParenError,@plsqlCommentGroup,plsqlCommentSkip,plsqlIntLiteral,plsqlFloatLiteral,plsqlNumbersCom
+
+if get(g:,"plsql_bracket_error",0) == 1
+ " I suspect this code was copied from c.vim and never properly considered. Do
+ " we even use braces or brackets in sql or pl/sql?
+ if get(g:,"plsql_fold",0) == 1
+ syn region plsqlParen start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInBracket fold keepend extend transparent
+ else
+ syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInBracket
+ endif
+ syn match plsqlParenError "[\])]"
+ syn match plsqlErrInParen contained "[{}]"
+ syn region plsqlBracket transparent start='\[' end=']' contains=ALLBUT,@plsqlParenGroup,plsqlErrInParen
+ syn match plsqlErrInBracket contained "[);{}]"
+else
+ if get(g:,"plsql_fold",0) == 1
+ syn region plsqlParen start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInParen fold keepend extend transparent
+ else
+ syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInParen
+ endif
+ syn match plsqlParenError ")"
+ " should this not be parens isntead of brackets? I never quite followed what this was doing
+ syn match plsqlErrInParen contained "[{}]"
+endif
+
+syn match plsqlReserved "\<BODY\>"
+syn match plsqlReserved "\<CREATE\_s\+\(OR\_s\+REPLACE\_s\+\)\?"
+" Loops
+syn match plsqlRepeat "\<\(FOR\|WHILE\|LOOP\|FORALL\)\>"
+syn match plsqlRepeat "\<END\_s\+LOOP\>"
+" conditionals
+syn match plsqlConditional "\<\(ELSIF\|IF\|ELSE\)\>"
+syn match plsqlConditional "\<END\>\_s\+\<IF\>"
+syn match plsqlCase "\<END\>\_s\+\<CASE\>"
+syn match plsqlCase "\<CASE\>"
+
+syn region plsqlSqlPlusCommentL start="^\(REM\)\( \|$\)" skip="\\$" end="$" keepend extend contains=@plsqlCommentGroup,plsqlSpaceError,plsqlIllegalSpace
+syn region plsqlSqlPlusCommand start="^\(SET\|DEFINE\|PROMPT\|ACCEPT\|EXEC\|HOST\|SHOW\|VAR\|VARIABLE\|COL\|WHENEVER\|TIMING\)\( \|$\)" skip="\\$" end="$" keepend extend
+syn region plsqlSqlPlusRunFile start="^\(@\|@@\)" skip="\\$" end="$" keepend extend
+
+if get(g:,"plsql_fold",0) == 1
+ setlocal foldmethod=syntax
+ syn sync fromstart
+
+ syn cluster plsqlProcedureGroup contains=plsqlProcedure
+ syn cluster plsqlOnlyGroup contains=@plsqlProcedure,plsqlConditionalBlock,plsqlLoopBlock,plsqlBlock,plsqlCursor
+
+ syntax region plsqlUpdateSet
+ \ start="\(\<update\>\_s\+\(\<set\>\)\@![a-z][a-z0-9$_#]*\_s\+\(\(\<set\>\)\@![a-z][a-z0-9$_#]*\_s\+\)\?\)\|\(\<when\>\_s\+\<matched\>\_s\+\<then\>\_s\+\<update\>\_s\+\)\<set\>"
+ \ end="\(\_s*\(;\|\<from\>\|\<where\>\|\<when\>\)\)\@="
+ \ fold
+ \ keepend
+ \ extend
+ \ transparent
+ \ contains=ALLBUT,@plsqlOnlyGroup,plsqlSelect
+
+ syntax region plsqlSelect
+ \ start="\<select\>"
+ \ end="\(\_s*\<from\>\)\@="
+ \ fold
+ \ keepend
+ \ extend
+ \ transparent
+ \ contains=ALLBUT,@plsqlOnlyGroup,plsqlUpdateSet
+
+ if get(g:,"plsql_disable_procedure_fold",0) == 0
+ " this is brute force and requires you have the procedure/function name in the END
+ " statement. ALthough Oracle makes it optional, we cannot. If you do not
+ " have it, then you can fold the BEGIN/END block of the procedure but not
+ " the specification of it (other than a paren group). You also cannot fold
+ " BEGIN/END blocks in the procedure body. Local procedures will fold as
+ " long as the END statement includes the procedure/function name.
+ " As for why we cannot make it work any other way, I don't know. It is
+ " something to do with both plsqlBlock and plsqlProcedure both consuming BEGIN and END,
+ " even if we use a lookahead for one of them.
+ "
+ " If you habitualy do not put the method name in the END statement,
+ " this can be expensive because it searches to end of file on every
+ " procedure/function declaration
+ "
+ "\ start="\(create\(\_s\+or\_s\+replace\)\?\_s\+\)\?\<\(procedure\|function\)\>\_s\+\z([a-z][a-z0-9$_#]*\)"
+ syntax region plsqlProcedure
+ \ start="\<\(procedure\|function\)\>\_s\+\(\z([a-z][a-z0-9$_#]*\)\)\([^;]\|\n\)\{-}\<\(is\|as\)\>\_.\{-}\(\<end\>\_s\+\2\_s*;\)\@="
+ \ end="\<end\>\_s\+\z1\_s*;"
+ \ fold
+ \ keepend
+ \ extend
+ \ transparent
+ \ contains=ALLBUT,plsqlBlock
+ endif
+
+ syntax region plsqlCursor
+ \ start="\<cursor\>\_s\+[a-z][a-z0-9$_#]*\(\_s*([^)]\+)\)\?\(\_s\+return\_s\+\S\+\)\?\_s\+is"
+ \ end=";"
+ \ fold
+ \ keepend
+ \ extend
+ \ transparent
+ \ contains=ALLBUT,@plsqlOnlyGroup
+
+ syntax region plsqlBlock
+ \ start="\<begin\>"
+ "\ end="\<end\>\_s*\;"
+ \ end="\<end\>\(\_s\+\(if\|loop\|case\)\@![a-z][a-z0-9$_#]*\)\?\_s*;"
+ \ fold
+ \ transparent
+ \ contains=ALLBUT,@plsqlProcedureGroup,plsqlPackage,plsqlErrInBracket,PlsqlProcedureJava
+ \ keepend
+ \ extend
+
+ syn region plsqlCaseBlock
+ \ transparent
+ \ start="\<case\>\(\_s*;\)\@!"
+ \ end="\<end\>\(\_s\+case\_s*;\)\?"
+ \ fold
+ \ contains=ALLBUT,@plsqlProcedureGroup,plsqlPackage,plsqlErrInBracket,PlsqlProcedureJava
+ \ keepend
+ \ extend
+ "\ contained
+
+ syntax region plsqlLoopBlock
+ \ transparent
+ \ start="\<loop\>\(\_s*;\)\@!"
+ \ end="\<end\>\(\_s\+\<loop\>\)\?\_s*;"
+ \ fold
+ \ keepend extend
+ \ contained
+ \ contains=ALLBUT,@plsqlProcedureGroup,plsqlPackage,plsqlErrInBracket,PlsqlProcedureJava
+
+ syn region plsqlConditionalBlock
+ \ transparent
+ \ start="\<if\>\(\_s*;\)\@!"
+ \ end="\<end\>\_s\+\<if\>\_s*;"
+ \ fold
+ \ keepend extend
+ \ contained
+ \ contains=ALLBUT,@plsqlProcedureGroup,plsqlPackage,plsqlErrInBracket,PlsqlProcedureJava
+
+else
+ " Syntax Synchronizing
+ syn sync minlines=1000 maxlines=2000
+endif
+"
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet.
+
+hi def link plsqlAttribute Macro
+hi def link plsqlBlockError Error
+hi def link plsqlBooleanLiteral Boolean
+hi def link plsqlQuotedIdentifier Character
+hi def link plsqlComment Comment
+hi def link plsqlCommentL Comment
+hi def link plsqlConditional Conditional
+hi def link plsqlCase Conditional
+hi def link plsqlError Error
+hi def link plsqlErrInBracket Error
+hi def link plsqlErrInBlock Error
+hi def link plsqlErrInParen Error
+hi def link plsqlException Function
+hi def link plsqlFloatLiteral Float
+hi def link plsqlFunction Function
+hi def link plsqlGarbage Error
+hi def link plsqlHostIdentifier Label
+hi def link plsqlIdentifier Normal
+hi def link plsqlIntLiteral Number
+hi def link plsqlOperator Operator
+hi def link plsqlParenError Error
+hi def link plsqlSpaceError Error
+hi def link plsqlPseudo PreProc
+hi def link plsqlKeyword Keyword
+hi def link plsqlEND Keyword
+hi def link plsqlBEGIN Keyword
+hi def link plsqlISAS Statement
+hi def link plsqlReserved Statement
+hi def link plsqlRepeat Repeat
+hi def link plsqlStorage StorageClass
+hi def link plsqlFunction Function
+hi def link plsqlStringError Error
+hi def link plsqlStringLiteral String
+hi def link plsqlCommentString String
+hi def link plsqlComment2String String
+hi def link plsqlTrigger Function
+hi def link plsqlTypeAttribute StorageClass
+hi def link plsqlTodo Todo
+
+hi def link plsqlIllegalSpace Error
+hi def link plsqlSqlPlusDefine PreProc
+hi def link plsqlSqlPlusCommand PreProc
+hi def link plsqlSqlPlusRunFile Include
+hi def link plsqlSqlPlusCommentL Comment
+
+" to be able to change them after loading, need override whether defined or not
+if get(g:,"plsql_legacy_sql_keywords",0) == 1
+ hi link plsqlSQLKeyword Function
+ hi link plsqlSymbol Normal
+ hi link plsqlParen Normal
+else
+ hi link plsqlSymbol Special
+ hi link plsqlParen Special
+endif
+
+let b:current_syntax = "plsql"
+
+" restore setting from when we entered this file
+let &cpo = s:cpo_sav
+unlet! s:cpo_sav
+
+" vim: ts=4 sw=4
diff --git a/runtime/syntax/po.vim b/runtime/syntax/po.vim
new file mode 100644
index 0000000..15d09b1
--- /dev/null
+++ b/runtime/syntax/po.vim
@@ -0,0 +1,133 @@
+" Vim syntax file
+" Language: po (gettext)
+" Maintainer: Dwayne Bailey <dwayne@translate.org.za>
+" Last Change: 2015 Jun 07
+" Contributors: Dwayne Bailey (Most advanced syntax highlighting)
+" Leonardo Fontenelle (Spell checking)
+" Nam SungHyun <namsh@kldp.org> (Original maintainer)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+syn sync minlines=10
+
+" Identifiers
+syn match poStatementMsgCTxt "^msgctxt"
+syn match poStatementMsgidplural "^msgid_plural" contained
+syn match poPluralCaseN "[0-9]" contained
+syn match poStatementMsgstr "^msgstr\(\[[0-9]\]\)" contains=poPluralCaseN
+
+" Simple HTML and XML highlighting
+syn match poHtml "<\_[^<>]\+>" contains=poHtmlTranslatables,poLineBreak
+syn match poHtmlNot +"<[^<]\+>"+ms=s+1,me=e-1
+syn region poHtmlTranslatables start=+\(abbr\|alt\|content\|summary\|standby\|title\)=\\"+ms=e-1 end=+\\"+ contained contains=@Spell
+syn match poLineBreak +"\n"+ contained
+
+" Translation blocks
+syn region poMsgCTxt matchgroup=poStatementMsgCTxt start=+^msgctxt "+rs=e-1 matchgroup=poStringCTxt end=+^msgid "+me=s-1 contains=poStringCTxt
+syn region poMsgID matchgroup=poStatementMsgid start=+^msgid "+rs=e-1 matchgroup=poStringID end=+^msgstr\(\|\[[\]0\[]\]\) "+me=s-1 contains=poStringID,poStatementMsgidplural,poStatementMsgid
+syn region poMsgSTR matchgroup=poStatementMsgstr start=+^msgstr\(\|\[[\]0\[]\]\) "+rs=e-1 matchgroup=poStringSTR end=+\n\n+me=s-1 contains=poStringSTR,poStatementMsgstr
+syn region poStringCTxt start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn region poStringID start=+"+ skip=+\\\\\|\\"+ end=+"+ contained
+ \ contains=poSpecial,poFormat,poCommentKDE,poPluralKDE,poKDEdesktopFile,poHtml,poAcceleratorId,poHtmlNot,poVariable
+syn region poStringSTR start=+"+ skip=+\\\\\|\\"+ end=+"+ contained
+ \ contains=@Spell,poSpecial,poFormat,poHeaderItem,poCommentKDEError,poHeaderUndefined,poPluralKDEError,poMsguniqError,poKDEdesktopFile,poHtml,poAcceleratorStr,poHtmlNot,poVariable
+
+" Header and Copyright
+syn match poHeaderItem "\(Project-Id-Version\|Report-Msgid-Bugs-To\|POT-Creation-Date\|PO-Revision-Date\|Last-Translator\|Language-Team\|Language\|MIME-Version\|Content-Type\|Content-Transfer-Encoding\|Plural-Forms\|X-Generator\): " contained
+syn match poHeaderUndefined "\(PACKAGE VERSION\|YEAR-MO-DA HO:MI+ZONE\|FULL NAME <EMAIL@ADDRESS>\|LANGUAGE <LL@li.org>\|CHARSET\|ENCODING\|INTEGER\|EXPRESSION\)" contained
+syn match poCopyrightUnset "SOME DESCRIPTIVE TITLE\|FIRST AUTHOR <EMAIL@ADDRESS>, YEAR\|Copyright (C) YEAR Free Software Foundation, Inc\|YEAR THE PACKAGE\'S COPYRIGHT HOLDER\|PACKAGE" contained
+
+" Translation comment block including: translator comment, automatic coments, flags and locations
+syn match poComment "^#.*$"
+syn keyword poFlagFuzzy fuzzy contained
+syn match poCommentTranslator "^# .*$" contains=poCopyrightUnset
+syn match poCommentAutomatic "^#\..*$"
+syn match poCommentSources "^#:.*$"
+syn match poCommentFlags "^#,.*$" contains=poFlagFuzzy
+syn match poDiffOld '\(^#| "[^{]*+}\|{+[^}]*+}\|{+[^}]*\|"$\)' contained
+syn match poDiffNew '\(^#| "[^{]*-}\|{-[^}]*-}\|{-[^}]*\|"$\)' contained
+syn match poCommentDiff "^#|.*$" contains=poDiffOld,poDiffNew
+
+" Translations (also includes header fields as they appear in a translation msgstr)
+syn region poCommentKDE start=+"_: +ms=s+1 end="\\n" end="\"\n^msgstr"me=s-1 contained
+syn region poCommentKDEError start=+"\(\|\s\+\)_:+ms=s+1 end="\\n" end=+"\n\n+me=s-1 contained
+syn match poPluralKDE +"_n: +ms=s+1 contained
+syn region poPluralKDEError start=+"\(\|\s\+\)_n:+ms=s+1 end="\"\n\n"me=s-1 contained
+syn match poSpecial contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
+syn match poFormat "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
+syn match poFormat "%%" contained
+
+" msguniq and msgcat conflicts
+syn region poMsguniqError matchgroup=poMsguniqErrorMarkers start="#-#-#-#-#" end='#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)\\n' contained
+
+" Obsolete messages
+syn match poObsolete "^#\~.*$"
+
+" KDE Name= handling
+syn match poKDEdesktopFile "\"\(Name\|Comment\|GenericName\|Description\|Keywords\|About\)="ms=s+1,me=e-1
+
+" Accelerator keys - this messes up if the preceding or following char is a multibyte unicode char
+syn match poAcceleratorId contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1
+syn match poAcceleratorStr contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 contains=@Spell
+
+" Variables simple
+syn match poVariable contained "%\d"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link poCommentSources PreProc
+hi def link poComment Comment
+hi def link poCommentAutomatic Comment
+hi def link poCommentTranslator Comment
+hi def link poCommentFlags Special
+hi def link poCommentDiff Comment
+hi def link poCopyrightUnset Todo
+hi def link poFlagFuzzy Todo
+hi def link poDiffOld Todo
+hi def link poDiffNew Special
+hi def link poObsolete Comment
+
+hi def link poStatementMsgid Statement
+hi def link poStatementMsgstr Statement
+hi def link poStatementMsgidplural Statement
+hi def link poStatementMsgCTxt Statement
+hi def link poPluralCaseN Constant
+
+hi def link poStringCTxt Comment
+hi def link poStringID String
+hi def link poStringSTR String
+hi def link poCommentKDE Comment
+hi def link poCommentKDEError Error
+hi def link poPluralKDE Comment
+hi def link poPluralKDEError Error
+hi def link poHeaderItem Identifier
+hi def link poHeaderUndefined Todo
+hi def link poKDEdesktopFile Identifier
+
+hi def link poHtml Identifier
+hi def link poHtmlNot String
+hi def link poHtmlTranslatables String
+hi def link poLineBreak String
+
+hi def link poFormat poSpecial
+hi def link poSpecial Special
+hi def link poAcceleratorId Special
+hi def link poAcceleratorStr Special
+hi def link poVariable Special
+
+hi def link poMsguniqError Special
+hi def link poMsguniqErrorMarkers Comment
+
+
+let b:current_syntax = "po"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim:set ts=8 sts=2 sw=2 noet:
diff --git a/runtime/syntax/pod.vim b/runtime/syntax/pod.vim
new file mode 100644
index 0000000..90c9b99
--- /dev/null
+++ b/runtime/syntax/pod.vim
@@ -0,0 +1,222 @@
+" Vim syntax file
+" Language: Perl POD format
+" Maintainer: vim-perl <vim-perl@googlegroups.com>
+" Previously: Scott Bigham <dsb@killerbunnies.org>
+" Homepage: https://github.com/vim-perl/vim-perl
+" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+" License: Vim License (see :help license)
+" Last Change: 2022 Jun 13
+
+" To add embedded POD documentation highlighting to your syntax file, add
+" the commands:
+"
+" syn include @Pod <sfile>:p:h/pod.vim
+" syn region myPOD start="^=pod" start="^=head" end="^=cut" keepend contained contains=@Pod
+"
+" and add myPod to the contains= list of some existing region, probably a
+" comment. The "keepend" flag is needed because "=cut" is matched as a
+" pattern in its own right.
+
+
+" Remove any old syntax stuff hanging around (this is suppressed
+" automatically by ":syn include" if necessary).
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" TODO: add supported encodings when we can utilize better performing Vim 8 features
+syn match podEncoding "[0-9A-Za-z_-]\+" contained contains=@NoSpell
+
+" Text of a =head1, =head2 or =item command
+syn region podCmdText start="\S.*$" end="^\ze\s*$" end="^\ze=cut\>" contained contains=podFormat,@NoSpell
+
+" Indent amount of =over command
+syn match podOverIndent "\d*\.\=\d\+\>" contained contains=@NoSpell
+
+" Formatter identifier keyword for =for, =begin and =end commands
+syn match podForKeywd "\S\+" contained contains=@NoSpell
+
+" An indented line, to be displayed verbatim
+syn region podVerbatim start="^\s\+\S.*$" end="^\ze\s*$" end="^\ze=cut\>" contains=@NoSpell
+
+syn region podOrdinary start="^\S.*$" end="^\ze\s*$" end="^\ze=cut\>" contains=podFormat,podSpecial,@Spell
+
+" Inline textual items handled specially by POD
+syn match podSpecial "\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)" contains=@NoSpell
+syn match podSpecial "[$@%]\I\i*\(::\I\i*\)*\>" contains=@NoSpell
+
+" Special formatting sequences
+
+syn cluster podFormat contains=podFormat,podFormatError
+
+syn match podFormatError "[ADGHJKM-RT-WY]<"
+
+syn region podFormat matchgroup=podFormatDelimiter start="[IBSCLFX]<" end=">" contains=@podFormat,@NoSpell
+syn region podFormat matchgroup=podFormatDelimiter start="[IBSCLFX]<<\%(\s\+\|$\)" end="\%(\s\+\|^\)>>" contains=@podFormat,@NoSpell
+
+syn match podFormat "Z<>"
+
+syn region podFormat matchgroup=podFormatDelimiter start="E<" end=">" oneline contains=podEscape,podEscape2,@NoSpell
+
+" HTML entities {{{1
+" Source: Pod/Escapes.pm
+syn keyword podEscape contained lt gt quot amp apos sol verbar lchevron rchevron nbsp iexcl cent pound curren yen brvbar sect uml copy ordf laquo not shy reg macr deg plusmn sup2 sup3 acute micro para middot cedil sup1 ordm raquo frac14 frac12 frac34 iquest Agrave Aacute Acirc Atilde Auml Aring AElig Ccedil Egrave Eacute Ecirc Euml Igrave Iacute Icirc Iuml ETH Ntilde Ograve Oacute Ocirc Otilde Ouml times Oslash Ugrave Uacute Ucirc Uuml Yacute THORN szlig agrave aacute acirc atilde auml aring aelig ccedil egrave eacute ecirc euml igrave iacute icirc iuml eth ntilde ograve oacute ocirc otilde ouml divide oslash ugrave uacute ucirc uuml yacute thorn yuml fnof Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lambda Mu Nu Xi Omicron Pi Rho Sigma Tau Upsilon Phi Chi Psi Omega alpha beta gamma delta epsilon zeta eta theta iota kappa lambda mu nu xi omicron pi rho sigmaf sigma tau upsilon phi chi psi omega thetasym upsih piv bull hellip prime Prime oline frasl weierp image real trade alefsym larr uarr rarr darr harr crarr lArr uArr rArr dArr hArr forall part exist empty nabla isin notin ni prod sum minus lowast radic prop infin ang and or cap cup int there4 sim cong asymp ne equiv le ge sub sup nsub sube supe oplus otimes perp sdot lceil rceil lfloor rfloor lang rang loz spades clubs hearts diams OElig oelig Scaron scaron Yuml circ tilde ensp emsp thinsp zwnj zwj lrm rlm ndash mdash lsquo rsquo sbquo ldquo rdquo bdquo dagger Dagger permil lsaquo rsaquo
+" }}}
+
+syn match podEscape2 "\d\+" contained contains=@NoSpell
+syn match podEscape2 "0\=x\x\+" contained contains=@NoSpell
+syn match podEscape2 "0\o\+" contained contains=@NoSpell
+
+
+" POD commands
+syn match podCommand "^=encoding\>" nextgroup=podEncoding skipwhite contains=@NoSpell
+syn match podCommand "^=head[1234]\>" nextgroup=podCmdText skipwhite skipnl contains=@NoSpell
+syn match podCommand "^=item\>" nextgroup=podCmdText skipwhite skipnl contains=@NoSpell
+syn match podCommand "^=over\>" nextgroup=podOverIndent skipwhite contains=@NoSpell
+syn match podCommand "^=back" contains=@NoSpell
+syn match podCommand "^=cut" contains=@NoSpell
+syn match podCommand "^=pod" contains=@NoSpell
+syn match podCommand "^=for" nextgroup=podForKeywd skipwhite contains=@NoSpell
+syn match podCommand "^=begin" nextgroup=podForKeywd skipwhite contains=@NoSpell
+syn match podCommand "^=end" nextgroup=podForKeywd skipwhite contains=@NoSpell
+
+" Comments
+
+syn keyword podForKeywd comment contained nextgroup=podForComment skipwhite skipnl
+
+if exists("perl_pod_no_comment_fold")
+ syn region podBeginComment start="^=begin\s\+comment\s*$" end="^=end\s\+comment\ze\s*$" keepend extend contains=podCommand
+ syn region podForComment start="\S.*$" end="^\ze\s*$" end="^\ze=cut\>" contained contains=@Spell,podTodo
+else
+ syn region podBeginComment start="^=begin\s\+comment\s*$" end="^=end\s\+comment\ze\s*$" keepend extend contains=podCommand,podTodo fold
+ syn region podForComment start="\S.*$" end="^\ze\s*$" end="^\ze=cut\>" contained contains=@Spell,podTodo fold
+endif
+
+syn keyword podTodo contained TODO FIXME XXX
+
+" Plain Pod files
+syn region podNonPod start="\%^\%(=\w\+\>\)\@!" end="^\ze=\a\w*\>"
+syn region podNonPod matchgroup=podCommand start="^=cut\>" end="\%$"
+syn region podNonPod matchgroup=podCommand start="^=cut\>" end="^\ze=\a\w*\>"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link podCommand Statement
+hi def link podBeginComment Comment
+hi def link podForComment Comment
+hi def link podNonPod Comment
+hi def link podTodo Todo
+hi def link podCmdText String
+hi def link podEncoding Constant
+hi def link podOverIndent Number
+hi def link podForKeywd Identifier
+hi def link podVerbatim PreProc
+hi def link podFormat Identifier
+hi def link podFormatDelimiter podFormat
+hi def link podFormatError Error
+hi def link podSpecial Identifier
+hi def link podEscape Constant
+hi def link podEscape2 Number
+
+if exists("perl_pod_spellcheck_headings")
+ " Spell-check headings
+ syn clear podCmdText
+ syn region podCmdText start="\S.*$" end="^\s*$" end="^\ze=cut\>" contained contains=podFormat
+endif
+
+if exists("perl_pod_formatting")
+ " By default, escapes like C<> are not checked for spelling. Remove B<>
+ " and I<> from the list of escapes.
+ syn clear podFormat
+ syn region podFormat start="[CLF]<[^<]"me=e-1 end=">" contains=@podFormat,@NoSpell
+ syn region podFormat start="[CLF]<<\%(\s\+\|$\)" end="\%(\s\+\|^\)>>" contains=@podFormat,@NoSpell
+
+ " Don't spell-check inside E<>, but ensure that the E< itself isn't
+ " marked as a spelling mistake.
+ syn region podFormat start="E<" end=">" oneline contains=podEscape,podEscape2,@NoSpell
+
+ " Z<> is a mock formatting code. Ensure Z<> on its own isn't marked as a
+ " spelling mistake.
+ syn match podFormat "Z<>" contains=podEscape,podEscape2,@NoSpell
+
+ " These are required so that whatever is *within* B<...>, I<...>, etc. is
+ " spell-checked, but not the B, I, ... itself.
+ syn match podBoldOpen "B<" contains=@NoSpell
+ syn match podItalicOpen "I<" contains=@NoSpell
+ syn match podNoSpaceOpen "S<" contains=@NoSpell
+ syn match podIndexOpen "X<" contains=@NoSpell
+
+ " Same as above but for the << >> syntax.
+ syn match podBoldAlternativeDelimOpen "B<<\%(\s\+\|$\)" contains=@NoSpell
+ syn match podItalicAlternativeDelimOpen "I<<\%(\s\+\|$\)" contains=@NoSpell
+ syn match podNoSpaceAlternativeDelimOpen "S<<\%(\s\+\|$\)" contains=@NoSpell
+ syn match podIndexAlternativeDelimOpen "X<<\%(\s\+\|$\)" contains=@NoSpell
+
+ " Add support for spell checking text inside B<>, I<>, S<> and X<>.
+ syn region podBold start="B<[^<]"me=e end=">" contains=podBoldItalic,podBoldOpen
+ syn region podBoldAlternativeDelim start="B<<\%(\s\+\|$\)" end="\%(\s\+\|^\)>>" contains=podBoldAlternativeDelimOpen
+
+ syn region podItalic start="I<[^<]"me=e end=">" contains=podItalicBold,podItalicOpen
+ syn region podItalicAlternativeDelim start="I<<\%(\s\+\|$\)" end="\%(\s\+\|^\)>>" contains=podItalicAlternativeDelimOpen
+
+ " Nested bold/italic and vice-versa
+ syn region podBoldItalic contained start="I<[^<]"me=e end=">"
+ syn region podItalicBold contained start="B<[^<]"me=e end=">"
+
+ syn region podNoSpace start="S<[^<]"ms=s-2 end=">"me=e contains=podNoSpaceOpen
+ syn region podNoSpaceAlternativeDelim start="S<<\%(\s\+\|$\)"ms=s-2 end="\%(\s\+\|^\)>>"me=e contains=podNoSpaceAlternativeDelimOpen
+
+ syn region podIndex start="X<[^<]"ms=s-2 end=">"me=e contains=podIndexOpen
+ syn region podIndexAlternativeDelim start="X<<\%(\s\+\|$\)"ms=s-2 end="\%(\s\+\|^\)>>"me=e contains=podIndexAlternativeDelimOpen
+
+ " Restore this (otherwise B<> is shown as bold inside verbatim)
+ syn region podVerbatim start="^\s\+\S.*$" end="^\ze\s*$" end="^\ze=cut\>" contains=@NoSpell
+
+ " Ensure formatted text can be displayed in headings and items
+ syn clear podCmdText
+
+ if exists("perl_pod_spellcheck_headings")
+ syn match podCmdText ".*$" contained contains=@podFormat,podBold,
+ \podBoldAlternativeDelim,podItalic,podItalicAlternativeDelim,
+ \podBoldOpen,podItalicOpen,podBoldAlternativeDelimOpen,
+ \podItalicAlternativeDelimOpen,podNoSpaceOpen
+ else
+ syn match podCmdText ".*$" contained contains=@podFormat,podBold,
+ \podBoldAlternativeDelim,podItalic,podItalicAlternativeDelim,
+ \@NoSpell
+ endif
+
+ " Specify how to display these
+ hi def podBold term=bold cterm=bold gui=bold
+
+ hi link podBoldAlternativeDelim podBold
+ hi link podBoldAlternativeDelimOpen podBold
+ hi link podBoldOpen podBold
+
+ hi link podNoSpace Identifier
+ hi link podNoSpaceAlternativeDelim Identifier
+
+ hi link podIndex Identifier
+ hi link podIndexAlternativeDelim Identifier
+
+ hi def podItalic term=italic cterm=italic gui=italic
+
+ hi link podItalicAlternativeDelim podItalic
+ hi link podItalicAlternativeDelimOpen podItalic
+ hi link podItalicOpen podItalic
+
+ hi def podBoldItalic term=italic,bold cterm=italic,bold gui=italic,bold
+ hi def podItalicBold term=italic,bold cterm=italic,bold gui=italic,bold
+endif
+
+let b:current_syntax = "pod"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 fdm=marker:
diff --git a/runtime/syntax/poefilter.vim b/runtime/syntax/poefilter.vim
new file mode 100644
index 0000000..6561f7a
--- /dev/null
+++ b/runtime/syntax/poefilter.vim
@@ -0,0 +1,167 @@
+" Vim syntax file
+" Language: PoE item filter
+" Maintainer: ObserverOfTime <chronobserver@disroot.org>
+" Filenames: *.filter
+" Last Change: 2023 Feb 10
+
+if exists('b:current_syntax')
+ finish
+endif
+
+let s:cpo_save = &cpoptions
+set cpoptions&vim
+
+" Comment
+syn keyword poefilterTodo TODO NOTE XXX contained
+syn match poefilterCommentTag /\[[0-9A-Z\[\]]\+\]/ contained
+syn match poefilterComment /#.*$/ contains=poefilterTodo,poefilterCommentTag,@Spell
+
+" Blocks
+syn keyword poefilterBlock Show Hide Minimal
+
+" Conditions
+syn keyword poefilterCondition
+ \ AlternateQuality
+ \ AnyEnchantment
+ \ BlightedMap
+ \ Corrupted
+ \ ElderItem
+ \ ElderMap
+ \ FracturedItem
+ \ Identified
+ \ Mirrored
+ \ Replica
+ \ Scourged
+ \ ShapedMap
+ \ ShaperItem
+ \ SynthesisedItem
+ \ UberBlightedMap
+ \ skipwhite nextgroup=poefilterBoolean
+syn keyword poefilterCondition
+ \ ArchnemesisMod
+ \ BaseType
+ \ Class
+ \ EnchantmentPassiveNode
+ \ HasEnchantment
+ \ HasExplicitMod
+ \ ItemLevel
+ \ SocketGroup
+ \ Sockets
+ \ skipwhite nextgroup=poefilterOperator,poefilterString
+syn keyword poefilterCondition
+ \ AreaLevel
+ \ BaseArmour
+ \ BaseDefencePercentile
+ \ BaseEnergyShield
+ \ BaseEvasion
+ \ BaseWard
+ \ CorruptedMods
+ \ DropLevel
+ \ EnchantmentPassiveNum
+ \ GemLevel
+ \ HasEaterOfWorldsImplicit
+ \ HasSearingExarchImplicit
+ \ Height
+ \ LinkedSockets
+ \ MapTier
+ \ Quality
+ \ StackSize
+ \ Width
+ \ skipwhite nextgroup=poefilterOperator,poefilterNumber
+syn keyword poefilterCondition
+ \ GemQualityType
+ \ skipwhite nextgroup=poefilterString,poefilterQuality
+syn keyword poefilterCondition
+ \ HasInfluence
+ \ skipwhite nextgroup=poefilterString,poefilterInfluence
+syn keyword poefilterCondition
+ \ Rarity
+ \ skipwhite nextgroup=poefilterString,poefilterRarity
+
+" Actions
+syn keyword poefilterAction
+ \ PlayAlertSound
+ \ PlayAlertSoundPositional
+ \ skipwhite nextgroup=poefilterNumber,poefilterDisable
+syn keyword poefilterAction
+ \ CustomAlertSound
+ \ CustomAlertSoundOptional
+ \ skipwhite nextgroup=poefilterString
+syn keyword poefilterAction
+ \ DisableDropSound
+ \ EnableDropSound
+ \ DisableDropSoundIfAlertSound
+ \ EnableDropSoundIfAlertSound
+ \ skipwhite nextgroup=poefilterBoolean
+syn keyword poefilterAction
+ \ MinimapIcon
+ \ SetBackgroundColor
+ \ SetBorderColor
+ \ SetFontSize
+ \ SetTextColor
+ \ skipwhite nextgroup=poefilterNumber
+syn keyword poefilterAction
+ \ PlayEffect
+ \ skipwhite nextgroup=poefilterColour
+
+" Operators
+syn match poefilterOperator /!\|[<>=]=\?/ contained
+ \ skipwhite nextgroup=poefilterString,poefilterNumber,
+ \ poefilterQuality,poefilterRarity,poefilterInfluence
+
+" Arguments
+syn match poefilterString /[-a-zA-Z0-9:,']/ contained contains=@Spell
+ \ skipwhite nextgroup=poefilterString,poefilterNumber,
+ \ poefilterQuality,poefilterRarity,poefilterInfluence
+syn region poefilterString matchgroup=poefilterQuote keepend
+ \ start=/"/ end=/"/ concealends contained contains=@Spell
+ \ skipwhite nextgroup=poefilterString,poefilterNumber,
+ \ poefilterQuality,poefilterRarity,poefilterInfluence
+syn match poefilterNumber /-1\|0\|[1-9][0-9]*/ contained
+ \ skipwhite nextgroup=poefilterString,poefilterNumber,
+ \ poefilterQuality,poefilterRarity,poefilterInfluence,poefilterColour
+syn keyword poefilterBoolean True False contained
+
+" Special arguments (conditions)
+syn keyword poefilterQuality Superior Divergent Anomalous Phantasmal
+ \ contained skipwhite nextgroup=poefilterString,poefilterQuality
+syn keyword poefilterRarity Normal Magic Rare Unique
+ \ contained skipwhite nextgroup=poefilterString,poefilterRarity
+syn keyword poefilterInfluence Shaper Elder
+ \ Crusader Hunter Redeemer Warlord None
+ \ contained skipwhite nextgroup=poefilterString,poefilterInfluence
+
+" Special arguments (actions)
+syn keyword poefilterColour Red Green Blue Brown
+ \ White Yellow Cyan Grey Orange Pink Purple
+ \ contained skipwhite nextgroup=poefilterShape,poefilterTemp
+syn keyword poefilterShape Circle Diamond Hecagon Square Star Triangle
+ \ Cross Moon Raindrop Kite Pentagon UpsideDownHouse contained
+syn keyword poefilterDisable None contained
+syn keyword poefilterTemp Temp contained
+
+" Colours
+
+hi def link poefilterAction Statement
+hi def link poefilterBlock Structure
+hi def link poefilterBoolean Boolean
+hi def link poefilterColour Special
+hi def link poefilterComment Comment
+hi def link poefilterCommentTag SpecialComment
+hi def link poefilterCondition Conditional
+hi def link poefilterDisable Constant
+hi def link poefilterInfluence Special
+hi def link poefilterNumber Number
+hi def link poefilterOperator Operator
+hi def link poefilterQuality Special
+hi def link poefilterQuote Delimiter
+hi def link poefilterRarity Special
+hi def link poefilterShape Special
+hi def link poefilterString String
+hi def link poefilterTemp StorageClass
+hi def link poefilterTodo Todo
+
+let b:current_syntax = 'poefilter'
+
+let &cpoptions = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/poke.vim b/runtime/syntax/poke.vim
new file mode 100644
index 0000000..4a07a77
--- /dev/null
+++ b/runtime/syntax/poke.vim
@@ -0,0 +1,151 @@
+" Copyright (C) 2021 Matthew T. Ihlenfield.
+"
+" This program is free software: you can redistribute it and/or modify
+" it under the terms of the GNU General Public License as published by
+" the Free Software Foundation, either version 3 of the License, or
+" (at your option) any later version.
+"
+" This program is distributed in the hope that it will be useful,
+" but WITHOUT ANY WARRANTY; without even the implied warranty of
+" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+" GNU General Public License for more details.
+"
+" You should have received a copy of the GNU General Public License
+" along with this program. If not, see <http://www.gnu.org/licenses/>.
+"
+" Vim syntax file
+" Language: Poke
+" Maintainer: Matt Ihlenfield <mtihlenfield@protonmail.com>
+" Filenames: *.pk
+" Latest Revision: 10 March 2021
+
+if exists('b:current_syntax')
+ finish
+endif
+
+" Poke statement
+syn keyword pokeStatement assert break continue return
+syn keyword pokeStatement type unit fun method nextgroup=pokeFunction skipwhite
+syn keyword pokeStatement var nextgroup=pokeVar skipWhite
+
+" Identifiers
+syn match pokeVar '\h\w*' display contained
+
+" User defined functions
+syn match pokeFunction '\h\w*' display contained
+
+" Poke operators
+syn keyword pokeOperator in sizeof as isa unmap
+
+" Conditionals
+syn keyword pokeConditional if else where
+
+" Structures, unions, etc...
+syn keyword pokeStructure struct union pinned
+
+" Loops
+syn keyword pokeRepeat while for
+
+" Imports
+syn keyword pokeLoad load
+
+" Exceptions
+syn keyword pokeException try catch until raise
+
+" Exception types
+syn keyword pokeExceptionType Exception E_generic E_out_of_bounds
+syn keyword pokeExceptionType E_eof E_elem E_constraint
+syn keyword pokeExceptionType E_conv E_map_bounds E_map
+syn keyword pokeExceptionType E_div_by_zero E_no_ios E_no_return
+syn keyword pokeExceptionType E_io E_io_flags E_assert E_overflow
+
+" Exception codes
+syn keyword pokeExceptionCode EC_generic EC_out_of_bounds
+syn keyword pokeExceptionCode EC_eof EC_elem EC_constraint
+syn keyword pokeExceptionCode EC_conv EC_map_bounds EC_map
+syn keyword pokeExceptionCode EC_div_by_zero EC_no_ios EC_no_return
+syn keyword pokeExceptionCode EC_io EC_io_flags EC_assert EC_overflow
+
+" Poke builtin types
+syn keyword pokeBuiltinType string void int uint bit nibble
+syn keyword pokeBuiltinType byte char ushort short ulong long
+syn keyword pokeBuiltinType uint8 uint16 uint32 uint64
+syn keyword pokeBuiltinType off64 uoff64 offset
+syn keyword pokeBuiltinType Comparator POSIX_Time32 POSIX_Time64
+syn keyword pokeBuiltinType big little any
+
+" Poke constants
+syn keyword pokeConstant ENDIAN_LITTLE ENDIAN_BIG
+syn keyword pokeConstant IOS_F_READ IOS_F_WRITE IOS_F_TRUNCATE IOS_F_CREATE
+syn keyword pokeConstant IOS_M_RDONLY IOS_M_WRONLY IOS_M_RDWR
+syn keyword pokeConstant load_path NULL OFFSET
+
+" Poke std lib
+syn keyword pokeBuiltinFunction print printf catos stoca atoi ltos reverse
+syn keyword pokeBuiltinFunction ltrim rtrim strchr qsort crc32 alignto
+syn keyword pokeBuiltinFunction open close flush get_ios set_ios iosize
+syn keyword pokeBuiltinFunction rand get_endian set_endian strace exit
+syn keyword pokeBuiltinFunction getenv
+
+" Formats
+
+" Special chars
+syn match pokeSpecial "\\\([nt\\]\|\o\{1,3}\)" display contained
+
+" Chars
+syn match pokeChar "'[^']*'" contains=pokeSpecial
+
+" Attributes
+syn match pokeAttribute "\h\w*'\h\w"
+
+" Strings
+syn region pokeString skip=+\\\\\|\\"+ start=+"+ end=+"+ contains=pokeSpecial
+
+" Integer literals
+syn match pokeInteger "\<\d\+_*\d*\([LlHhBbNn]\=[Uu]\=\|[Uu]\=[LlHhBbNn]\=\)\>"
+syn match pokeInteger "\<0[Xx]\x\+_*\x*\([LlHhBbNn]\=[Uu]\=\|[Uu]\=[LlHhBbNn]\=\)\>"
+syn match pokeInteger "\<0[Oo]\o\+_*\o*\([LlHhBbNn]\=[Uu]\=\|[Uu]\=[LlHhBbNn]\=\)\>"
+syn match pokeInteger "\<0[Bb][01]\+_*[01]*\([LlHhBbNn]\=[Uu]\=\|[Uu]\=[LlHhBbNn]\=\)\>"
+
+" Units
+syn keyword pokeBuiltinUnit b M B
+syn keyword pokeBuiltinUnit Kb KB Mb MB Gb GB
+syn keyword pokeBuiltinUnit Kib KiB Mib MiB Gib GiB
+
+" Offsets
+syn match pokeOffset "#\h\w*" contains=pokeBuiltinUnit
+
+" Comments
+syn keyword pokeCommentTodo TODO FIXME XXX TBD contained
+syn match pokeLineComment "\/\/.*" contains=pokeCommentTodo,@Spell extend
+syn region pokeComment start="/\*" end="\*/" contains=pokeCommentTodo,@Spell fold extend
+
+" Allow folding of blocks
+syn region pokeBlock start="{" end="}" transparent fold
+
+" Highlight groups
+hi def link pokeBuiltinFunction Function
+hi def link pokeBuiltinType Type
+hi def link pokeBuiltinUnit Keyword
+hi def link pokeChar Character
+hi def link pokeComment Comment
+hi def link pokeCommentTodo Todo
+hi def link pokeConditional Conditional
+hi def link pokeConstant Constant
+hi def link pokeException Exception
+hi def link pokeExceptionCode Constant
+hi def link pokeExceptionType Type
+hi def link pokeFunction Function
+hi def link pokeInteger Number
+hi def link pokeLineComment Comment
+hi def link pokeLoad Include
+hi def link pokeOffset StorageClass
+hi def link pokeOperator Operator
+hi def link pokeSpecial SpecialChar
+hi def link pokeStatement Statement
+hi def link pokeString String
+hi def link pokeStructure Structure
+hi def link pokeRepeat Repeat
+hi def link pokeVar Identifier
+
+let b:current_syntax = 'poke'
diff --git a/runtime/syntax/postscr.vim b/runtime/syntax/postscr.vim
new file mode 100644
index 0000000..5af57aa
--- /dev/null
+++ b/runtime/syntax/postscr.vim
@@ -0,0 +1,780 @@
+" Vim syntax file
+" Language: PostScript - all Levels, selectable
+" Maintainer: Mike Williams <mrw@eandem.co.uk>
+" Filenames: *.ps,*.eps
+" Last Change: 31st October 2007
+" URL: http://www.eandem.co.uk/mrw/vim
+"
+" Options Flags:
+" postscr_level - language level to use for highlighting (1, 2, or 3)
+" postscr_display - include display PS operators
+" postscr_ghostscript - include GS extensions
+" postscr_fonts - highlight standard font names (a lot for PS 3)
+" postscr_encodings - highlight encoding names (there are a lot)
+" postscr_andornot_binary - highlight and, or, and not as binary operators (not logical)
+"
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" PostScript is case sensitive
+syn case match
+
+" Keyword characters - all 7-bit ASCII bar PS delimiters and ws
+setlocal iskeyword=33-127,^(,^),^<,^>,^[,^],^{,^},^/,^%
+
+" Yer trusty old TODO highlghter!
+syn keyword postscrTodo contained TODO
+
+" Comment
+syn match postscrComment "%.*$" contains=postscrTodo,@Spell
+" DSC comment start line (NB: defines DSC level, not PS level!)
+syn match postscrDSCComment "^%!PS-Adobe-\d\+\.\d\+\s*.*$"
+" DSC comment line (no check on possible comments - another language!)
+syn match postscrDSCComment "^%%\u\+.*$" contains=@postscrString,@postscrNumber,@Spell
+" DSC continuation line (no check that previous line is DSC comment)
+syn match postscrDSCComment "^%%+ *.*$" contains=@postscrString,@postscrNumber,@Spell
+
+" Names
+syn match postscrName "\k\+"
+
+" Identifiers
+syn match postscrIdentifierError "/\{1,2}[[:space:]\[\]{}]"me=e-1
+syn match postscrIdentifier "/\{1,2}\k\+" contains=postscrConstant,postscrBoolean,postscrCustConstant
+
+" Numbers
+syn case ignore
+" In file hex data - usually complete lines
+syn match postscrHex "^[[:xdigit:]][[:xdigit:][:space:]]*$"
+"syn match postscrHex "\<\x\{2,}\>"
+" Integers
+syn match postscrInteger "\<[+-]\=\d\+\>"
+" Radix
+syn match postscrRadix "\d\+#\x\+\>"
+" Reals - upper and lower case e is allowed
+syn match postscrFloat "[+-]\=\d\+\.\>"
+syn match postscrFloat "[+-]\=\d\+\.\d*\(e[+-]\=\d\+\)\=\>"
+syn match postscrFloat "[+-]\=\.\d\+\(e[+-]\=\d\+\)\=\>"
+syn match postscrFloat "[+-]\=\d\+e[+-]\=\d\+\>"
+syn cluster postscrNumber contains=postscrInteger,postscrRadix,postscrFloat
+syn case match
+
+" Escaped characters
+syn match postscrSpecialChar contained "\\[nrtbf\\()]"
+syn match postscrSpecialCharError contained "\\[^nrtbf\\()]"he=e-1
+" Escaped octal characters
+syn match postscrSpecialChar contained "\\\o\{1,3}"
+
+" Strings
+" ASCII strings
+syn region postscrASCIIString start=+(+ end=+)+ skip=+([^)]*)+ contains=postscrSpecialChar,postscrSpecialCharError,@Spell
+syn match postscrASCIIStringError ")"
+" Hex strings
+syn match postscrHexCharError contained "[^<>[:xdigit:][:space:]]"
+syn region postscrHexString start=+<\($\|[^<]\)+ end=+>+ contains=postscrHexCharError
+syn match postscrHexString "<>"
+" ASCII85 strings
+syn match postscrASCII85CharError contained "[^<>\~!-uz[:space:]]"
+syn region postscrASCII85String start=+<\~+ end=+\~>+ contains=postscrASCII85CharError
+syn cluster postscrString contains=postscrASCIIString,postscrHexString,postscrASCII85String
+
+
+" Set default highlighting to level 2 - most common at the moment
+if !exists("postscr_level")
+ let postscr_level = 2
+endif
+
+
+" PS level 1 operators - common to all levels (well ...)
+
+" Stack operators
+syn keyword postscrOperator pop exch dup copy index roll clear count mark cleartomark counttomark
+
+" Math operators
+syn keyword postscrMathOperator add div idiv mod mul sub abs neg ceiling floor round truncate sqrt atan cos
+syn keyword postscrMathOperator sin exp ln log rand srand rrand
+
+" Array operators
+syn match postscrOperator "[\[\]{}]"
+syn keyword postscrOperator array length get put getinterval putinterval astore aload copy
+syn keyword postscrRepeat forall
+
+" Dictionary operators
+syn keyword postscrOperator dict maxlength begin end def load store known where currentdict
+syn keyword postscrOperator countdictstack dictstack cleardictstack internaldict
+syn keyword postscrConstant $error systemdict userdict statusdict errordict
+
+" String operators
+syn keyword postscrOperator string anchorsearch search token
+
+" Logic operators
+syn keyword postscrLogicalOperator eq ne ge gt le lt and not or
+if exists("postscr_andornot_binaryop")
+ syn keyword postscrBinaryOperator and or not
+else
+ syn keyword postscrLogicalOperator and not or
+endif
+syn keyword postscrBinaryOperator xor bitshift
+syn keyword postscrBoolean true false
+
+" PS Type names
+syn keyword postscrConstant arraytype booleantype conditiontype dicttype filetype fonttype gstatetype
+syn keyword postscrConstant integertype locktype marktype nametype nulltype operatortype
+syn keyword postscrConstant packedarraytype realtype savetype stringtype
+
+" Control operators
+syn keyword postscrConditional if ifelse
+syn keyword postscrRepeat for repeat loop
+syn keyword postscrOperator exec exit stop stopped countexecstack execstack quit
+syn keyword postscrProcedure start
+
+" Object operators
+syn keyword postscrOperator type cvlit cvx xcheck executeonly noaccess readonly rcheck wcheck cvi cvn cvr
+syn keyword postscrOperator cvrs cvs
+
+" File operators
+syn keyword postscrOperator file closefile read write readhexstring writehexstring readstring writestring
+syn keyword postscrOperator bytesavailable flush flushfile resetfile status run currentfile print
+syn keyword postscrOperator stack pstack readline deletefile setfileposition fileposition renamefile
+syn keyword postscrRepeat filenameforall
+syn keyword postscrProcedure = ==
+
+" VM operators
+syn keyword postscrOperator save restore
+
+" Misc operators
+syn keyword postscrOperator bind null usertime executive echo realtime
+syn keyword postscrConstant product revision serialnumber version
+syn keyword postscrProcedure prompt
+
+" GState operators
+syn keyword postscrOperator gsave grestore grestoreall initgraphics setlinewidth setlinecap currentgray
+syn keyword postscrOperator currentlinejoin setmiterlimit currentmiterlimit setdash currentdash setgray
+syn keyword postscrOperator sethsbcolor currenthsbcolor setrgbcolor currentrgbcolor currentlinewidth
+syn keyword postscrOperator currentlinecap setlinejoin setcmykcolor currentcmykcolor
+
+" Device gstate operators
+syn keyword postscrOperator setscreen currentscreen settransfer currenttransfer setflat currentflat
+syn keyword postscrOperator currentblackgeneration setblackgeneration setundercolorremoval
+syn keyword postscrOperator setcolorscreen currentcolorscreen setcolortransfer currentcolortransfer
+syn keyword postscrOperator currentundercolorremoval
+
+" Matrix operators
+syn keyword postscrOperator matrix initmatrix identmatrix defaultmatrix currentmatrix setmatrix translate
+syn keyword postscrOperator concat concatmatrix transform dtransform itransform idtransform invertmatrix
+syn keyword postscrOperator scale rotate
+
+" Path operators
+syn keyword postscrOperator newpath currentpoint moveto rmoveto lineto rlineto arc arcn arcto curveto
+syn keyword postscrOperator closepath flattenpath reversepath strokepath charpath clippath pathbbox
+syn keyword postscrOperator initclip clip eoclip rcurveto
+syn keyword postscrRepeat pathforall
+
+" Painting operators
+syn keyword postscrOperator erasepage fill eofill stroke image imagemask colorimage
+
+" Device operators
+syn keyword postscrOperator showpage copypage nulldevice
+
+" Character operators
+syn keyword postscrProcedure findfont
+syn keyword postscrConstant FontDirectory ISOLatin1Encoding StandardEncoding
+syn keyword postscrOperator definefont scalefont makefont setfont currentfont show ashow
+syn keyword postscrOperator stringwidth kshow setcachedevice
+syn keyword postscrOperator setcharwidth widthshow awidthshow findencoding cshow rootfont setcachedevice2
+
+" Interpreter operators
+syn keyword postscrOperator vmstatus cachestatus setcachelimit
+
+" PS constants
+syn keyword postscrConstant contained Gray Red Green Blue All None DeviceGray DeviceRGB
+
+" PS Filters
+syn keyword postscrConstant contained ASCIIHexDecode ASCIIHexEncode ASCII85Decode ASCII85Encode LZWDecode
+syn keyword postscrConstant contained RunLengthDecode RunLengthEncode SubFileDecode NullEncode
+syn keyword postscrConstant contained GIFDecode PNGDecode LZWEncode
+
+" PS JPEG filter dictionary entries
+syn keyword postscrConstant contained DCTEncode DCTDecode Colors HSamples VSamples QuantTables QFactor
+syn keyword postscrConstant contained HuffTables ColorTransform
+
+" PS CCITT filter dictionary entries
+syn keyword postscrConstant contained CCITTFaxEncode CCITTFaxDecode Uncompressed K EndOfLine
+syn keyword postscrConstant contained Columns Rows EndOfBlock Blacks1 DamagedRowsBeforeError
+syn keyword postscrConstant contained EncodedByteAlign
+
+" PS Form dictionary entries
+syn keyword postscrConstant contained FormType XUID BBox Matrix PaintProc Implementation
+
+" PS Errors
+syn keyword postscrProcedure handleerror
+syn keyword postscrConstant contained configurationerror dictfull dictstackunderflow dictstackoverflow
+syn keyword postscrConstant contained execstackoverflow interrupt invalidaccess
+syn keyword postscrConstant contained invalidcontext invalidexit invalidfileaccess invalidfont
+syn keyword postscrConstant contained invalidid invalidrestore ioerror limitcheck nocurrentpoint
+syn keyword postscrConstant contained rangecheck stackoverflow stackunderflow syntaxerror timeout
+syn keyword postscrConstant contained typecheck undefined undefinedfilename undefinedresource
+syn keyword postscrConstant contained undefinedresult unmatchedmark unregistered VMerror
+
+if exists("postscr_fonts")
+" Font names
+ syn keyword postscrConstant contained Symbol Times-Roman Times-Italic Times-Bold Times-BoldItalic
+ syn keyword postscrConstant contained Helvetica Helvetica-Oblique Helvetica-Bold Helvetica-BoldOblique
+ syn keyword postscrConstant contained Courier Courier-Oblique Courier-Bold Courier-BoldOblique
+endif
+
+
+if exists("postscr_display")
+" Display PS only operators
+ syn keyword postscrOperator currentcontext fork join detach lock monitor condition wait notify yield
+ syn keyword postscrOperator viewclip eoviewclip rectviewclip initviewclip viewclippath deviceinfo
+ syn keyword postscrOperator sethalftonephase currenthalftonephase wtranslation defineusername
+endif
+
+" PS Character encoding names
+if exists("postscr_encodings")
+" Common encoding names
+ syn keyword postscrConstant contained .notdef
+
+" Standard and ISO encoding names
+ syn keyword postscrConstant contained space exclam quotedbl numbersign dollar percent ampersand quoteright
+ syn keyword postscrConstant contained parenleft parenright asterisk plus comma hyphen period slash zero
+ syn keyword postscrConstant contained one two three four five six seven eight nine colon semicolon less
+ syn keyword postscrConstant contained equal greater question at
+ syn keyword postscrConstant contained bracketleft backslash bracketright asciicircum underscore quoteleft
+ syn keyword postscrConstant contained braceleft bar braceright asciitilde
+ syn keyword postscrConstant contained exclamdown cent sterling fraction yen florin section currency
+ syn keyword postscrConstant contained quotesingle quotedblleft guillemotleft guilsinglleft guilsinglright
+ syn keyword postscrConstant contained fi fl endash dagger daggerdbl periodcentered paragraph bullet
+ syn keyword postscrConstant contained quotesinglbase quotedblbase quotedblright guillemotright ellipsis
+ syn keyword postscrConstant contained perthousand questiondown grave acute circumflex tilde macron breve
+ syn keyword postscrConstant contained dotaccent dieresis ring cedilla hungarumlaut ogonek caron emdash
+ syn keyword postscrConstant contained AE ordfeminine Lslash Oslash OE ordmasculine ae dotlessi lslash
+ syn keyword postscrConstant contained oslash oe germandbls
+" The following are valid names, but are used as short procedure names in generated PS!
+" a b c d e f g h i j k l m n o p q r s t u v w x y z
+" A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
+
+" Symbol encoding names
+ syn keyword postscrConstant contained universal existential suchthat asteriskmath minus
+ syn keyword postscrConstant contained congruent Alpha Beta Chi Delta Epsilon Phi Gamma Eta Iota theta1
+ syn keyword postscrConstant contained Kappa Lambda Mu Nu Omicron Pi Theta Rho Sigma Tau Upsilon sigma1
+ syn keyword postscrConstant contained Omega Xi Psi Zeta therefore perpendicular
+ syn keyword postscrConstant contained radicalex alpha beta chi delta epsilon phi gamma eta iota phi1
+ syn keyword postscrConstant contained kappa lambda mu nu omicron pi theta rho sigma tau upsilon omega1
+ syn keyword postscrConstant contained Upsilon1 minute lessequal infinity club diamond heart spade
+ syn keyword postscrConstant contained arrowboth arrowleft arrowup arrowright arrowdown degree plusminus
+ syn keyword postscrConstant contained second greaterequal multiply proportional partialdiff divide
+ syn keyword postscrConstant contained notequal equivalence approxequal arrowvertex arrowhorizex
+ syn keyword postscrConstant contained aleph Ifraktur Rfraktur weierstrass circlemultiply circleplus
+ syn keyword postscrConstant contained emptyset intersection union propersuperset reflexsuperset notsubset
+ syn keyword postscrConstant contained propersubset reflexsubset element notelement angle gradient
+ syn keyword postscrConstant contained registerserif copyrightserif trademarkserif radical dotmath
+ syn keyword postscrConstant contained logicalnot logicaland logicalor arrowdblboth arrowdblleft arrowdblup
+ syn keyword postscrConstant contained arrowdblright arrowdbldown omega xi psi zeta similar carriagereturn
+ syn keyword postscrConstant contained lozenge angleleft registersans copyrightsans trademarksans summation
+ syn keyword postscrConstant contained parenlefttp parenleftex parenleftbt bracketlefttp bracketleftex
+ syn keyword postscrConstant contained bracketleftbt bracelefttp braceleftmid braceleftbt braceex euro
+ syn keyword postscrConstant contained angleright integral integraltp integralex integralbt parenrighttp
+ syn keyword postscrConstant contained parenrightex parenrightbt bracketrighttp bracketrightex
+ syn keyword postscrConstant contained bracketrightbt bracerighttp bracerightmid bracerightbt
+
+" ISO Latin1 encoding names
+ syn keyword postscrConstant contained brokenbar copyright registered twosuperior threesuperior
+ syn keyword postscrConstant contained onesuperior onequarter onehalf threequarters
+ syn keyword postscrConstant contained Agrave Aacute Acircumflex Atilde Adieresis Aring Ccedilla Egrave
+ syn keyword postscrConstant contained Eacute Ecircumflex Edieresis Igrave Iacute Icircumflex Idieresis
+ syn keyword postscrConstant contained Eth Ntilde Ograve Oacute Ocircumflex Otilde Odieresis Ugrave Uacute
+ syn keyword postscrConstant contained Ucircumflex Udieresis Yacute Thorn
+ syn keyword postscrConstant contained agrave aacute acircumflex atilde adieresis aring ccedilla egrave
+ syn keyword postscrConstant contained eacute ecircumflex edieresis igrave iacute icircumflex idieresis
+ syn keyword postscrConstant contained eth ntilde ograve oacute ocircumflex otilde odieresis ugrave uacute
+ syn keyword postscrConstant contained ucircumflex udieresis yacute thorn ydieresis
+ syn keyword postscrConstant contained zcaron exclamsmall Hungarumlautsmall dollaroldstyle dollarsuperior
+ syn keyword postscrConstant contained ampersandsmall Acutesmall parenleftsuperior parenrightsuperior
+ syn keyword postscrConstant contained twodotenleader onedotenleader zerooldstyle oneoldstyle twooldstyle
+ syn keyword postscrConstant contained threeoldstyle fouroldstyle fiveoldstyle sixoldstyle sevenoldstyle
+ syn keyword postscrConstant contained eightoldstyle nineoldstyle commasuperior
+ syn keyword postscrConstant contained threequartersemdash periodsuperior questionsmall asuperior bsuperior
+ syn keyword postscrConstant contained centsuperior dsuperior esuperior isuperior lsuperior msuperior
+ syn keyword postscrConstant contained nsuperior osuperior rsuperior ssuperior tsuperior ff ffi ffl
+ syn keyword postscrConstant contained parenleftinferior parenrightinferior Circumflexsmall hyphensuperior
+ syn keyword postscrConstant contained Gravesmall Asmall Bsmall Csmall Dsmall Esmall Fsmall Gsmall Hsmall
+ syn keyword postscrConstant contained Ismall Jsmall Ksmall Lsmall Msmall Nsmall Osmall Psmall Qsmall
+ syn keyword postscrConstant contained Rsmall Ssmall Tsmall Usmall Vsmall Wsmall Xsmall Ysmall Zsmall
+ syn keyword postscrConstant contained colonmonetary onefitted rupiah Tildesmall exclamdownsmall
+ syn keyword postscrConstant contained centoldstyle Lslashsmall Scaronsmall Zcaronsmall Dieresissmall
+ syn keyword postscrConstant contained Brevesmall Caronsmall Dotaccentsmall Macronsmall figuredash
+ syn keyword postscrConstant contained hypheninferior Ogoneksmall Ringsmall Cedillasmall questiondownsmall
+ syn keyword postscrConstant contained oneeighth threeeighths fiveeighths seveneighths onethird twothirds
+ syn keyword postscrConstant contained zerosuperior foursuperior fivesuperior sixsuperior sevensuperior
+ syn keyword postscrConstant contained eightsuperior ninesuperior zeroinferior oneinferior twoinferior
+ syn keyword postscrConstant contained threeinferior fourinferior fiveinferior sixinferior seveninferior
+ syn keyword postscrConstant contained eightinferior nineinferior centinferior dollarinferior periodinferior
+ syn keyword postscrConstant contained commainferior Agravesmall Aacutesmall Acircumflexsmall
+ syn keyword postscrConstant contained Atildesmall Adieresissmall Aringsmall AEsmall Ccedillasmall
+ syn keyword postscrConstant contained Egravesmall Eacutesmall Ecircumflexsmall Edieresissmall Igravesmall
+ syn keyword postscrConstant contained Iacutesmall Icircumflexsmall Idieresissmall Ethsmall Ntildesmall
+ syn keyword postscrConstant contained Ogravesmall Oacutesmall Ocircumflexsmall Otildesmall Odieresissmall
+ syn keyword postscrConstant contained OEsmall Oslashsmall Ugravesmall Uacutesmall Ucircumflexsmall
+ syn keyword postscrConstant contained Udieresissmall Yacutesmall Thornsmall Ydieresissmall Black Bold Book
+ syn keyword postscrConstant contained Light Medium Regular Roman Semibold
+
+" Sundry standard and expert encoding names
+ syn keyword postscrConstant contained trademark Scaron Ydieresis Zcaron scaron softhyphen overscore
+ syn keyword postscrConstant contained graybox Sacute Tcaron Zacute sacute tcaron zacute Aogonek Scedilla
+ syn keyword postscrConstant contained Zdotaccent aogonek scedilla Lcaron lcaron zdotaccent Racute Abreve
+ syn keyword postscrConstant contained Lacute Cacute Ccaron Eogonek Ecaron Dcaron Dcroat Nacute Ncaron
+ syn keyword postscrConstant contained Ohungarumlaut Rcaron Uring Uhungarumlaut Tcommaaccent racute abreve
+ syn keyword postscrConstant contained lacute cacute ccaron eogonek ecaron dcaron dcroat nacute ncaron
+ syn keyword postscrConstant contained ohungarumlaut rcaron uring uhungarumlaut tcommaaccent Gbreve
+ syn keyword postscrConstant contained Idotaccent gbreve blank apple
+endif
+
+
+" By default level 3 includes all level 2 operators
+if postscr_level == 2 || postscr_level == 3
+" Dictionary operators
+ syn match postscrL2Operator "\(<<\|>>\)"
+ syn keyword postscrL2Operator undef
+ syn keyword postscrConstant globaldict shareddict
+
+" Device operators
+ syn keyword postscrL2Operator setpagedevice currentpagedevice
+
+" Path operators
+ syn keyword postscrL2Operator rectclip setbbox uappend ucache upath ustrokepath arct
+
+" Painting operators
+ syn keyword postscrL2Operator rectfill rectstroke ufill ueofill ustroke
+
+" Array operators
+ syn keyword postscrL2Operator currentpacking setpacking packedarray
+
+" Misc operators
+ syn keyword postscrL2Operator languagelevel
+
+" Insideness operators
+ syn keyword postscrL2Operator infill ineofill instroke inufill inueofill inustroke
+
+" GState operators
+ syn keyword postscrL2Operator gstate setgstate currentgstate setcolor
+ syn keyword postscrL2Operator setcolorspace currentcolorspace setstrokeadjust currentstrokeadjust
+ syn keyword postscrL2Operator currentcolor
+
+" Device gstate operators
+ syn keyword postscrL2Operator sethalftone currenthalftone setoverprint currentoverprint
+ syn keyword postscrL2Operator setcolorrendering currentcolorrendering
+
+" Character operators
+ syn keyword postscrL2Constant GlobalFontDirectory SharedFontDirectory
+ syn keyword postscrL2Operator glyphshow selectfont
+ syn keyword postscrL2Operator addglyph undefinefont xshow xyshow yshow
+
+" Pattern operators
+ syn keyword postscrL2Operator makepattern setpattern execform
+
+" Resource operators
+ syn keyword postscrL2Operator defineresource undefineresource findresource resourcestatus
+ syn keyword postscrL2Repeat resourceforall
+
+" File operators
+ syn keyword postscrL2Operator filter printobject writeobject setobjectformat currentobjectformat
+
+" VM operators
+ syn keyword postscrL2Operator currentshared setshared defineuserobject execuserobject undefineuserobject
+ syn keyword postscrL2Operator gcheck scheck startjob currentglobal setglobal
+ syn keyword postscrConstant UserObjects
+
+" Interpreter operators
+ syn keyword postscrL2Operator setucacheparams setvmthreshold ucachestatus setsystemparams
+ syn keyword postscrL2Operator setuserparams currentuserparams setcacheparams currentcacheparams
+ syn keyword postscrL2Operator currentdevparams setdevparams vmreclaim currentsystemparams
+
+" PS2 constants
+ syn keyword postscrConstant contained DeviceCMYK Pattern Indexed Separation Cyan Magenta Yellow Black
+ syn keyword postscrConstant contained CIEBasedA CIEBasedABC CIEBasedDEF CIEBasedDEFG
+
+" PS2 $error dictionary entries
+ syn keyword postscrConstant contained newerror errorname command errorinfo ostack estack dstack
+ syn keyword postscrConstant contained recordstacks binary
+
+" PS2 Category dictionary
+ syn keyword postscrConstant contained DefineResource UndefineResource FindResource ResourceStatus
+ syn keyword postscrConstant contained ResourceForAll Category InstanceType ResourceFileName
+
+" PS2 Category names
+ syn keyword postscrConstant contained Font Encoding Form Pattern ProcSet ColorSpace Halftone
+ syn keyword postscrConstant contained ColorRendering Filter ColorSpaceFamily Emulator IODevice
+ syn keyword postscrConstant contained ColorRenderingType FMapType FontType FormType HalftoneType
+ syn keyword postscrConstant contained ImageType PatternType Category Generic
+
+" PS2 pagedevice dictionary entries
+ syn keyword postscrConstant contained PageSize MediaColor MediaWeight MediaType InputAttributes ManualFeed
+ syn keyword postscrConstant contained OutputType OutputAttributes NumCopies Collate Duplex Tumble
+ syn keyword postscrConstant contained Separations HWResolution Margins NegativePrint MirrorPrint
+ syn keyword postscrConstant contained CutMedia AdvanceMedia AdvanceDistance ImagingBBox
+ syn keyword postscrConstant contained Policies Install BeginPage EndPage PolicyNotFound PolicyReport
+ syn keyword postscrConstant contained ManualSize OutputFaceUp Jog
+ syn keyword postscrConstant contained Bind BindDetails Booklet BookletDetails CollateDetails
+ syn keyword postscrConstant contained DeviceRenderingInfo ExitJamRecovery Fold FoldDetails Laminate
+ syn keyword postscrConstant contained ManualFeedTimeout Orientation OutputPage
+ syn keyword postscrConstant contained PostRenderingEnhance PostRenderingEnhanceDetails
+ syn keyword postscrConstant contained PreRenderingEnhance PreRenderingEnhanceDetails
+ syn keyword postscrConstant contained Signature SlipSheet Staple StapleDetails Trim
+ syn keyword postscrConstant contained ProofSet REValue PrintQuality ValuesPerColorComponent AntiAlias
+
+" PS2 PDL resource entries
+ syn keyword postscrConstant contained Selector LanguageFamily LanguageVersion
+
+" PS2 halftone dictionary entries
+ syn keyword postscrConstant contained HalftoneType HalftoneName
+ syn keyword postscrConstant contained AccurateScreens ActualAngle Xsquare Ysquare AccurateFrequency
+ syn keyword postscrConstant contained Frequency SpotFunction Angle Width Height Thresholds
+ syn keyword postscrConstant contained RedFrequency RedSpotFunction RedAngle RedWidth RedHeight
+ syn keyword postscrConstant contained GreenFrequency GreenSpotFunction GreenAngle GreenWidth GreenHeight
+ syn keyword postscrConstant contained BlueFrequency BlueSpotFunction BlueAngle BlueWidth BlueHeight
+ syn keyword postscrConstant contained GrayFrequency GrayAngle GraySpotFunction GrayWidth GrayHeight
+ syn keyword postscrConstant contained GrayThresholds BlueThresholds GreenThresholds RedThresholds
+ syn keyword postscrConstant contained TransferFunction
+
+" PS2 CSR dictionaries
+ syn keyword postscrConstant contained RangeA DecodeA MatrixA RangeABC DecodeABC MatrixABC BlackPoint
+ syn keyword postscrConstant contained RangeLMN DecodeLMN MatrixLMN WhitePoint RangeDEF DecodeDEF RangeHIJ
+ syn keyword postscrConstant contained RangeDEFG DecodeDEFG RangeHIJK Table
+
+" PS2 CRD dictionaries
+ syn keyword postscrConstant contained ColorRenderingType EncodeLMB EncodeABC RangePQR MatrixPQR
+ syn keyword postscrConstant contained AbsoluteColorimetric RelativeColorimetric Saturation Perceptual
+ syn keyword postscrConstant contained TransformPQR RenderTable
+
+" PS2 Pattern dictionary
+ syn keyword postscrConstant contained PatternType PaintType TilingType XStep YStep
+
+" PS2 Image dictionary
+ syn keyword postscrConstant contained ImageType ImageMatrix MultipleDataSources DataSource
+ syn keyword postscrConstant contained BitsPerComponent Decode Interpolate
+
+" PS2 Font dictionaries
+ syn keyword postscrConstant contained FontType FontMatrix FontName FontInfo LanguageLevel WMode Encoding
+ syn keyword postscrConstant contained UniqueID StrokeWidth Metrics Metrics2 CDevProc CharStrings Private
+ syn keyword postscrConstant contained FullName Notice version ItalicAngle isFixedPitch UnderlinePosition
+ syn keyword postscrConstant contained FMapType Encoding FDepVector PrefEnc EscChar ShiftOut ShiftIn
+ syn keyword postscrConstant contained WeightVector Blend $Blend CIDFontType sfnts CIDSystemInfo CodeMap
+ syn keyword postscrConstant contained CMap CIDFontName CIDSystemInfo UIDBase CIDDevProc CIDCount
+ syn keyword postscrConstant contained CIDMapOffset FDArray FDBytes GDBytes GlyphData GlyphDictionary
+ syn keyword postscrConstant contained SDBytes SubrMapOffset SubrCount BuildGlyph CIDMap FID MIDVector
+ syn keyword postscrConstant contained Ordering Registry Supplement CMapName CMapVersion UIDOffset
+ syn keyword postscrConstant contained SubsVector UnderlineThickness FamilyName FontBBox CurMID
+ syn keyword postscrConstant contained Weight
+
+" PS2 User parameters
+ syn keyword postscrConstant contained MaxFontItem MinFontCompress MaxUPathItem MaxFormItem MaxPatternItem
+ syn keyword postscrConstant contained MaxScreenItem MaxOpStack MaxDictStack MaxExecStack MaxLocalVM
+ syn keyword postscrConstant contained VMReclaim VMThreshold
+
+" PS2 System parameters
+ syn keyword postscrConstant contained SystemParamsPassword StartJobPassword BuildTime ByteOrder RealFormat
+ syn keyword postscrConstant contained MaxFontCache CurFontCache MaxOutlineCache CurOutlineCache
+ syn keyword postscrConstant contained MaxUPathCache CurUPathCache MaxFormCache CurFormCache
+ syn keyword postscrConstant contained MaxPatternCache CurPatternCache MaxScreenStorage CurScreenStorage
+ syn keyword postscrConstant contained MaxDisplayList CurDisplayList
+
+" PS2 LZW Filters
+ syn keyword postscrConstant contained Predictor
+
+" Paper Size operators
+ syn keyword postscrL2Operator letter lettersmall legal ledger 11x17 a4 a3 a4small b5 note
+
+" Paper Tray operators
+ syn keyword postscrL2Operator lettertray legaltray ledgertray a3tray a4tray b5tray 11x17tray
+
+" SCC compatibility operators
+ syn keyword postscrL2Operator sccbatch sccinteractive setsccbatch setsccinteractive
+
+" Page duplexing operators
+ syn keyword postscrL2Operator duplexmode firstside newsheet setduplexmode settumble tumble
+
+" Device compatibility operators
+ syn keyword postscrL2Operator devdismount devformat devmount devstatus
+ syn keyword postscrL2Repeat devforall
+
+" Imagesetter compatibility operators
+ syn keyword postscrL2Operator accuratescreens checkscreen pagemargin pageparams setaccuratescreens setpage
+ syn keyword postscrL2Operator setpagemargin setpageparams
+
+" Misc compatibility operators
+ syn keyword postscrL2Operator appletalktype buildtime byteorder checkpassword defaulttimeouts diskonline
+ syn keyword postscrL2Operator diskstatus manualfeed manualfeedtimeout margins mirrorprint pagecount
+ syn keyword postscrL2Operator pagestackorder printername processcolors sethardwareiomode setjobtimeout
+ syn keyword postscrL2Operator setpagestockorder setprintername setresolution doprinterrors dostartpage
+ syn keyword postscrL2Operator hardwareiomode initializedisk jobname jobtimeout ramsize realformat resolution
+ syn keyword postscrL2Operator setdefaulttimeouts setdoprinterrors setdostartpage setdosysstart
+ syn keyword postscrL2Operator setuserdiskpercent softwareiomode userdiskpercent waittimeout
+ syn keyword postscrL2Operator setsoftwareiomode dosysstart emulate setmargins setmirrorprint
+
+endif " PS2 highlighting
+
+if postscr_level == 3
+" Shading operators
+ syn keyword postscrL3Operator setsmoothness currentsmoothness shfill
+
+" Clip operators
+ syn keyword postscrL3Operator clipsave cliprestore
+
+" Pagedevive operators
+ syn keyword postscrL3Operator setpage setpageparams
+
+" Device gstate operators
+ syn keyword postscrL3Operator findcolorrendering
+
+" Font operators
+ syn keyword postscrL3Operator composefont
+
+" PS LL3 Output device resource entries
+ syn keyword postscrConstant contained DeviceN TrappingDetailsType
+
+" PS LL3 pagdevice dictionary entries
+ syn keyword postscrConstant contained DeferredMediaSelection ImageShift InsertSheet LeadingEdge MaxSeparations
+ syn keyword postscrConstant contained MediaClass MediaPosition OutputDevice PageDeviceName PageOffset ProcessColorModel
+ syn keyword postscrConstant contained RollFedMedia SeparationColorNames SeparationOrder Trapping TrappingDetails
+ syn keyword postscrConstant contained TraySwitch UseCIEColor
+ syn keyword postscrConstant contained ColorantDetails ColorantName ColorantType NeutralDensity TrappingOrder
+ syn keyword postscrConstant contained ColorantSetName
+
+" PS LL3 trapping dictionary entries
+ syn keyword postscrConstant contained BlackColorLimit BlackDensityLimit BlackWidth ColorantZoneDetails
+ syn keyword postscrConstant contained SlidingTrapLimit StepLimit TrapColorScaling TrapSetName TrapWidth
+ syn keyword postscrConstant contained ImageResolution ImageToObjectTrapping ImageTrapPlacement
+ syn keyword postscrConstant contained StepLimit TrapColorScaling Enabled ImageInternalTrapping
+
+" PS LL3 filters and entries
+ syn keyword postscrConstant contained ReusableStreamDecode CloseSource CloseTarget UnitSize LowBitFirst
+ syn keyword postscrConstant contained FlateEncode FlateDecode DecodeParams Intent AsyncRead
+
+" PS LL3 halftone dictionary entries
+ syn keyword postscrConstant contained Height2 Width2
+
+" PS LL3 function dictionary entries
+ syn keyword postscrConstant contained FunctionType Domain Range Order BitsPerSample Encode Size C0 C1 N
+ syn keyword postscrConstant contained Functions Bounds
+
+" PS LL3 image dictionary entries
+ syn keyword postscrConstant contained InterleaveType MaskDict DataDict MaskColor
+
+" PS LL3 Pattern and shading dictionary entries
+ syn keyword postscrConstant contained Shading ShadingType Background ColorSpace Coords Extend Function
+ syn keyword postscrConstant contained VerticesPerRow BitsPerCoordinate BitsPerFlag
+
+" PS LL3 image dictionary entries
+ syn keyword postscrConstant contained XOrigin YOrigin UnpaintedPath PixelCopy
+
+" PS LL3 colorrendering procedures
+ syn keyword postscrProcedure GetHalftoneName GetPageDeviceName GetSubstituteCRD
+
+" PS LL3 CIDInit procedures
+ syn keyword postscrProcedure beginbfchar beginbfrange begincidchar begincidrange begincmap begincodespacerange
+ syn keyword postscrProcedure beginnotdefchar beginnotdefrange beginrearrangedfont beginusematrix
+ syn keyword postscrProcedure endbfchar endbfrange endcidchar endcidrange endcmap endcodespacerange
+ syn keyword postscrProcedure endnotdefchar endnotdefrange endrearrangedfont endusematrix
+ syn keyword postscrProcedure StartData usefont usecmp
+
+" PS LL3 Trapping procedures
+ syn keyword postscrProcedure settrapparams currenttrapparams settrapzone
+
+" PS LL3 BitmapFontInit procedures
+ syn keyword postscrProcedure removeall removeglyphs
+
+" PS LL3 Font names
+ if exists("postscr_fonts")
+ syn keyword postscrConstant contained AlbertusMT AlbertusMT-Italic AlbertusMT-Light Apple-Chancery Apple-ChanceryCE
+ syn keyword postscrConstant contained AntiqueOlive-Roman AntiqueOlive-Italic AntiqueOlive-Bold AntiqueOlive-Compact
+ syn keyword postscrConstant contained AntiqueOliveCE-Roman AntiqueOliveCE-Italic AntiqueOliveCE-Bold AntiqueOliveCE-Compact
+ syn keyword postscrConstant contained ArialMT Arial-ItalicMT Arial-LightMT Arial-BoldMT Arial-BoldItalicMT
+ syn keyword postscrConstant contained ArialCE ArialCE-Italic ArialCE-Light ArialCE-Bold ArialCE-BoldItalic
+ syn keyword postscrConstant contained AvantGarde-Book AvantGarde-BookOblique AvantGarde-Demi AvantGarde-DemiOblique
+ syn keyword postscrConstant contained AvantGardeCE-Book AvantGardeCE-BookOblique AvantGardeCE-Demi AvantGardeCE-DemiOblique
+ syn keyword postscrConstant contained Bodoni Bodoni-Italic Bodoni-Bold Bodoni-BoldItalic Bodoni-Poster Bodoni-PosterCompressed
+ syn keyword postscrConstant contained BodoniCE BodoniCE-Italic BodoniCE-Bold BodoniCE-BoldItalic BodoniCE-Poster BodoniCE-PosterCompressed
+ syn keyword postscrConstant contained Bookman-Light Bookman-LightItalic Bookman-Demi Bookman-DemiItalic
+ syn keyword postscrConstant contained BookmanCE-Light BookmanCE-LightItalic BookmanCE-Demi BookmanCE-DemiItalic
+ syn keyword postscrConstant contained Carta Chicago ChicagoCE Clarendon Clarendon-Light Clarendon-Bold
+ syn keyword postscrConstant contained ClarendonCE ClarendonCE-Light ClarendonCE-Bold CooperBlack CooperBlack-Italic
+ syn keyword postscrConstant contained Copperplate-ThirtyTwoBC CopperPlate-ThirtyThreeBC Coronet-Regular CoronetCE-Regular
+ syn keyword postscrConstant contained CourierCE CourierCE-Oblique CourierCE-Bold CourierCE-BoldOblique
+ syn keyword postscrConstant contained Eurostile Eurostile-Bold Eurostile-ExtendedTwo Eurostile-BoldExtendedTwo
+ syn keyword postscrConstant contained Eurostile EurostileCE-Bold EurostileCE-ExtendedTwo EurostileCE-BoldExtendedTwo
+ syn keyword postscrConstant contained Geneva GenevaCE GillSans GillSans-Italic GillSans-Bold GillSans-BoldItalic GillSans-BoldCondensed
+ syn keyword postscrConstant contained GillSans-Light GillSans-LightItalic GillSans-ExtraBold
+ syn keyword postscrConstant contained GillSansCE-Roman GillSansCE-Italic GillSansCE-Bold GillSansCE-BoldItalic GillSansCE-BoldCondensed
+ syn keyword postscrConstant contained GillSansCE-Light GillSansCE-LightItalic GillSansCE-ExtraBold
+ syn keyword postscrConstant contained Goudy Goudy-Italic Goudy-Bold Goudy-BoldItalic Goudy-ExtraBould
+ syn keyword postscrConstant contained HelveticaCE HelveticaCE-Oblique HelveticaCE-Bold HelveticaCE-BoldOblique
+ syn keyword postscrConstant contained Helvetica-Condensed Helvetica-Condensed-Oblique Helvetica-Condensed-Bold Helvetica-Condensed-BoldObl
+ syn keyword postscrConstant contained HelveticaCE-Condensed HelveticaCE-Condensed-Oblique HelveticaCE-Condensed-Bold
+ syn keyword postscrConstant contained HelveticaCE-Condensed-BoldObl Helvetica-Narrow Helvetica-Narrow-Oblique Helvetica-Narrow-Bold
+ syn keyword postscrConstant contained Helvetica-Narrow-BoldOblique HelveticaCE-Narrow HelveticaCE-Narrow-Oblique HelveticaCE-Narrow-Bold
+ syn keyword postscrConstant contained HelveticaCE-Narrow-BoldOblique HoeflerText-Regular HoeflerText-Italic HoeflerText-Black
+ syn keyword postscrConstant contained HoeflerText-BlackItalic HoeflerText-Ornaments HoeflerTextCE-Regular HoeflerTextCE-Italic
+ syn keyword postscrConstant contained HoeflerTextCE-Black HoeflerTextCE-BlackItalic
+ syn keyword postscrConstant contained JoannaMT JoannaMT-Italic JoannaMT-Bold JoannaMT-BoldItalic
+ syn keyword postscrConstant contained JoannaMTCE JoannaMTCE-Italic JoannaMTCE-Bold JoannaMTCE-BoldItalic
+ syn keyword postscrConstant contained LetterGothic LetterGothic-Slanted LetterGothic-Bold LetterGothic-BoldSlanted
+ syn keyword postscrConstant contained LetterGothicCE LetterGothicCE-Slanted LetterGothicCE-Bold LetterGothicCE-BoldSlanted
+ syn keyword postscrConstant contained LubalinGraph-Book LubalinGraph-BookOblique LubalinGraph-Demi LubalinGraph-DemiOblique
+ syn keyword postscrConstant contained LubalinGraphCE-Book LubalinGraphCE-BookOblique LubalinGraphCE-Demi LubalinGraphCE-DemiOblique
+ syn keyword postscrConstant contained Marigold Monaco MonacoCE MonaLisa-Recut Oxford Symbol Tekton
+ syn keyword postscrConstant contained NewCennturySchlbk-Roman NewCenturySchlbk-Italic NewCenturySchlbk-Bold NewCenturySchlbk-BoldItalic
+ syn keyword postscrConstant contained NewCenturySchlbkCE-Roman NewCenturySchlbkCE-Italic NewCenturySchlbkCE-Bold
+ syn keyword postscrConstant contained NewCenturySchlbkCE-BoldItalic NewYork NewYorkCE
+ syn keyword postscrConstant contained Optima Optima-Italic Optima-Bold Optima-BoldItalic
+ syn keyword postscrConstant contained OptimaCE OptimaCE-Italic OptimaCE-Bold OptimaCE-BoldItalic
+ syn keyword postscrConstant contained Palatino-Roman Palatino-Italic Palatino-Bold Palatino-BoldItalic
+ syn keyword postscrConstant contained PalatinoCE-Roman PalatinoCE-Italic PalatinoCE-Bold PalatinoCE-BoldItalic
+ syn keyword postscrConstant contained StempelGaramond-Roman StempelGaramond-Italic StempelGaramond-Bold StempelGaramond-BoldItalic
+ syn keyword postscrConstant contained StempelGaramondCE-Roman StempelGaramondCE-Italic StempelGaramondCE-Bold StempelGaramondCE-BoldItalic
+ syn keyword postscrConstant contained TimesCE-Roman TimesCE-Italic TimesCE-Bold TimesCE-BoldItalic
+ syn keyword postscrConstant contained TimesNewRomanPSMT TimesNewRomanPS-ItalicMT TimesNewRomanPS-BoldMT TimesNewRomanPS-BoldItalicMT
+ syn keyword postscrConstant contained TimesNewRomanCE TimesNewRomanCE-Italic TimesNewRomanCE-Bold TimesNewRomanCE-BoldItalic
+ syn keyword postscrConstant contained Univers Univers-Oblique Univers-Bold Univers-BoldOblique
+ syn keyword postscrConstant contained UniversCE-Medium UniversCE-Oblique UniversCE-Bold UniversCE-BoldOblique
+ syn keyword postscrConstant contained Univers-Light Univers-LightOblique UniversCE-Light UniversCE-LightOblique
+ syn keyword postscrConstant contained Univers-Condensed Univers-CondensedOblique Univers-CondensedBold Univers-CondensedBoldOblique
+ syn keyword postscrConstant contained UniversCE-Condensed UniversCE-CondensedOblique UniversCE-CondensedBold UniversCE-CondensedBoldOblique
+ syn keyword postscrConstant contained Univers-Extended Univers-ExtendedObl Univers-BoldExt Univers-BoldExtObl
+ syn keyword postscrConstant contained UniversCE-Extended UniversCE-ExtendedObl UniversCE-BoldExt UniversCE-BoldExtObl
+ syn keyword postscrConstant contained Wingdings-Regular ZapfChancery-MediumItalic ZapfChanceryCE-MediumItalic ZapfDingBats
+ endif " Font names
+
+endif " PS LL3 highlighting
+
+
+if exists("postscr_ghostscript")
+ " GS gstate operators
+ syn keyword postscrGSOperator .setaccuratecurves .currentaccuratecurves .setclipoutside
+ syn keyword postscrGSOperator .setdashadapt .currentdashadapt .setdefaultmatrix .setdotlength
+ syn keyword postscrGSOperator .currentdotlength .setfilladjust2 .currentfilladjust2
+ syn keyword postscrGSOperator .currentclipoutside .setcurvejoin .currentcurvejoin
+ syn keyword postscrGSOperator .setblendmode .currentblendmode .setopacityalpha .currentopacityalpha .setshapealpha .currentshapealpha
+ syn keyword postscrGSOperator .setlimitclamp .currentlimitclamp .setoverprintmode .currentoverprintmode
+
+ " GS path operators
+ syn keyword postscrGSOperator .dashpath .rectappend
+
+ " GS painting operators
+ syn keyword postscrGSOperator .setrasterop .currentrasterop .setsourcetransparent
+ syn keyword postscrGSOperator .settexturetransparent .currenttexturetransparent
+ syn keyword postscrGSOperator .currentsourcetransparent
+
+ " GS character operators
+ syn keyword postscrGSOperator .charboxpath .type1execchar %Type1BuildChar %Type1BuildGlyph
+
+ " GS mathematical operators
+ syn keyword postscrGSMathOperator arccos arcsin
+
+ " GS dictionary operators
+ syn keyword postscrGSOperator .dicttomark .forceput .forceundef .knownget .setmaxlength
+
+ " GS byte and string operators
+ syn keyword postscrGSOperator .type1encrypt .type1decrypt
+ syn keyword postscrGSOperator .bytestring .namestring .stringmatch
+
+ " GS relational operators (seem like math ones to me!)
+ syn keyword postscrGSMathOperator max min
+
+ " GS file operators
+ syn keyword postscrGSOperator findlibfile unread writeppmfile
+ syn keyword postscrGSOperator .filename .fileposition .peekstring .unread
+
+ " GS vm operators
+ syn keyword postscrGSOperator .forgetsave
+
+ " GS device operators
+ syn keyword postscrGSOperator copydevice .getdevice makeimagedevice makewordimagedevice copyscanlines
+ syn keyword postscrGSOperator setdevice currentdevice getdeviceprops putdeviceprops flushpage
+ syn keyword postscrGSOperator finddevice findprotodevice .getbitsrect
+
+ " GS misc operators
+ syn keyword postscrGSOperator getenv .makeoperator .setdebug .oserrno .oserror .execn
+
+ " GS rendering stack operators
+ syn keyword postscrGSOperator .begintransparencygroup .discardtransparencygroup .endtransparencygroup
+ syn keyword postscrGSOperator .begintransparencymask .discardtransparencymask .endtransparencymask .inittransparencymask
+ syn keyword postscrGSOperator .settextknockout .currenttextknockout
+
+ " GS filters
+ syn keyword postscrConstant contained BCPEncode BCPDecode eexecEncode eexecDecode PCXDecode
+ syn keyword postscrConstant contained PixelDifferenceEncode PixelDifferenceDecode
+ syn keyword postscrConstant contained PNGPredictorDecode TBCPEncode TBCPDecode zlibEncode
+ syn keyword postscrConstant contained zlibDecode PNGPredictorEncode PFBDecode
+ syn keyword postscrConstant contained MD5Encode
+
+ " GS filter keys
+ syn keyword postscrConstant contained InitialCodeLength FirstBitLowOrder BlockData DecodedByteAlign
+
+ " GS device parameters
+ syn keyword postscrConstant contained BitsPerPixel .HWMargins HWSize Name GrayValues
+ syn keyword postscrConstant contained ColorValues TextAlphaBits GraphicsAlphaBits BufferSpace
+ syn keyword postscrConstant contained OpenOutputFile PageCount BandHeight BandWidth BandBufferSpace
+ syn keyword postscrConstant contained ViewerPreProcess GreenValues BlueValues OutputFile
+ syn keyword postscrConstant contained MaxBitmap RedValues
+
+endif " GhostScript highlighting
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link postscrComment Comment
+
+hi def link postscrConstant Constant
+hi def link postscrString String
+hi def link postscrASCIIString postscrString
+hi def link postscrHexString postscrString
+hi def link postscrASCII85String postscrString
+hi def link postscrNumber Number
+hi def link postscrInteger postscrNumber
+hi def link postscrHex postscrNumber
+hi def link postscrRadix postscrNumber
+hi def link postscrFloat Float
+hi def link postscrBoolean Boolean
+
+hi def link postscrIdentifier Identifier
+hi def link postscrProcedure Function
+
+hi def link postscrName Statement
+hi def link postscrConditional Conditional
+hi def link postscrRepeat Repeat
+hi def link postscrL2Repeat postscrRepeat
+hi def link postscrOperator Operator
+hi def link postscrL1Operator postscrOperator
+hi def link postscrL2Operator postscrOperator
+hi def link postscrL3Operator postscrOperator
+hi def link postscrMathOperator postscrOperator
+hi def link postscrLogicalOperator postscrOperator
+hi def link postscrBinaryOperator postscrOperator
+
+hi def link postscrDSCComment SpecialComment
+hi def link postscrSpecialChar SpecialChar
+
+hi def link postscrTodo Todo
+
+hi def link postscrError Error
+hi def link postscrSpecialCharError postscrError
+hi def link postscrASCII85CharError postscrError
+hi def link postscrHexCharError postscrError
+hi def link postscrASCIIStringError postscrError
+hi def link postscrIdentifierError postscrError
+
+if exists("postscr_ghostscript")
+hi def link postscrGSOperator postscrOperator
+hi def link postscrGSMathOperator postscrMathOperator
+else
+hi def link postscrGSOperator postscrError
+hi def link postscrGSMathOperator postscrError
+endif
+
+
+let b:current_syntax = "postscr"
+
+" vim: ts=8
diff --git a/runtime/syntax/pov.vim b/runtime/syntax/pov.vim
new file mode 100644
index 0000000..8595bcb
--- /dev/null
+++ b/runtime/syntax/pov.vim
@@ -0,0 +1,144 @@
+" Vim syntax file
+" Language: PoV-Ray(tm) 3.7 Scene Description Language
+" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
+" Last Change: 2011-04-23
+" Required Vim Version: 6.0
+
+" Setup
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+" Top level stuff
+syn keyword povCommands global_settings
+syn keyword povObjects array atmosphere background bicubic_patch blob box camera component cone cubic cylinder disc fog height_field isosurface julia_fractal lathe light_group light_source mesh mesh2 object ovus parametric pattern photons plane poly polygon polynomial prism quadric quartic rainbow sky_sphere smooth_triangle sor sphere sphere_sweep spline superellipsoid text torus triangle
+syn keyword povCSG clipped_by composite contained_by difference intersection merge union
+syn keyword povAppearance interior material media texture interior_texture texture_list
+syn keyword povGlobalSettings ambient_light assumed_gamma charset hf_gray_16 irid_wavelength max_intersections max_trace_level number_of_waves radiosity noise_generator
+syn keyword povTransform inverse matrix rotate scale translate transform
+
+" Descriptors
+syn keyword povDescriptors finish inside_vector normal pigment uv_mapping uv_vectors vertex_vectors
+syn keyword povDescriptors adc_bailout always_sample brightness count error_bound distance_maximum gray_threshold load_file low_error_factor maximum_reuse max_sample media minimum_reuse mm_per_unit nearest_count normal pretrace_end pretrace_start recursion_limit save_file
+syn keyword povDescriptors color colour rgb rgbt rgbf rgbft srgb srgbf srgbt srgbft
+syn match povDescriptors "\<\(red\|green\|blue\|gray\)\>"
+syn keyword povDescriptors bump_map color_map colour_map image_map material_map pigment_map quick_color quick_colour normal_map texture_map image_pattern pigment_pattern
+syn keyword povDescriptors ambient brilliance conserve_energy crand diffuse fresnel irid metallic phong phong_size refraction reflection reflection_exponent roughness specular subsurface
+syn keyword povDescriptors cylinder fisheye mesh_camera omnimax orthographic panoramic perspective spherical ultra_wide_angle
+syn keyword povDescriptors agate aoi average brick boxed bozo bumps cells checker crackle cylindrical dents facets function gradient granite hexagon julia leopard magnet mandel marble onion pavement planar quilted radial ripples slope spherical spiral1 spiral2 spotted square tiles tile2 tiling toroidal triangular waves wood wrinkles
+syn keyword povDescriptors density_file
+syn keyword povDescriptors area_light shadowless spotlight parallel
+syn keyword povDescriptors absorption confidence density emission intervals ratio samples scattering variance
+syn keyword povDescriptors distance fog_alt fog_offset fog_type turb_depth
+syn keyword povDescriptors b_spline bezier_spline cubic_spline evaluate face_indices form linear_spline max_gradient natural_spline normal_indices normal_vectors quadratic_spline uv_indices
+syn keyword povDescriptors target
+
+" Modifiers
+syn keyword povModifiers caustics dispersion dispersion_samples fade_color fade_colour fade_distance fade_power ior
+syn keyword povModifiers bounded_by double_illuminate hierarchy hollow no_shadow open smooth sturm threshold water_level
+syn keyword povModifiers importance no_radiosity
+syn keyword povModifiers hypercomplex max_iteration precision quaternion slice
+syn keyword povModifiers conic_sweep linear_sweep
+syn keyword povModifiers flatness type u_steps v_steps
+syn keyword povModifiers aa_level aa_threshold adaptive area_illumination falloff jitter looks_like media_attenuation media_interaction method point_at radius tightness
+syn keyword povModifiers angle aperture bokeh blur_samples confidence direction focal_point h_angle location look_at right sky up v_angle variance
+syn keyword povModifiers all bump_size gamma interpolate map_type once premultiplied slope_map use_alpha use_color use_colour use_index
+syn match povModifiers "\<\(filter\|transmit\)\>"
+syn keyword povModifiers black_hole agate_turb brick_size control0 control1 cubic_wave density_map flip frequency interpolate inverse lambda metric mortar octaves offset omega phase poly_wave ramp_wave repeat scallop_wave sine_wave size strength triangle_wave thickness turbulence turb_depth type warp
+syn keyword povModifiers eccentricity extinction
+syn keyword povModifiers arc_angle falloff_angle width
+syn keyword povModifiers accuracy all_intersections altitude autostop circular collect coords cutaway_textures dist_exp expand_thresholds exponent exterior gather global_lights major_radius max_trace no_bump_scale no_image no_reflection orient orientation pass_through precompute projected_through range_divider solid spacing split_union tolerance
+
+" Words not marked `reserved' in documentation, but...
+syn keyword povBMPType alpha exr gif hdr iff jpeg pgm png pot ppm sys tga tiff
+syn keyword povFontType ttf contained
+syn keyword povDensityType df3 contained
+syn keyword povCharset ascii utf8 contained
+
+" Math functions on floats, vectors and strings
+syn keyword povFunctions abs acos acosh asc asin asinh atan atan2 atanh bitwise_and bitwise_or bitwise_xor ceil cos cosh defined degrees dimensions dimension_size div exp file_exists floor inside int internal ln log max min mod pow prod radians rand seed select sin sinh sqrt strcmp strlen sum tan tanh val vdot vlength vstr vturbulence
+syn keyword povFunctions min_extent max_extent trace vcross vrotate vaxis_rotate vnormalize vturbulence
+syn keyword povFunctions chr concat datetime now substr str strupr strlwr
+syn keyword povJuliaFunctions acosh asinh atan cosh cube pwr reciprocal sinh sqr tanh
+
+" Specialities
+syn keyword povConsts clock clock_delta clock_on final_clock final_frame frame_number initial_clock initial_frame input_file_name image_width image_height false no off on pi true version yes
+syn match povConsts "\<[tuvxyz]\>"
+syn match povDotItem "\.\@<=\(blue\|green\|gray\|filter\|red\|transmit\|hf\|t\|u\|v\|x\|y\|z\)\>" display
+
+" Comments
+syn region povComment start="/\*" end="\*/" contains=povTodo,povComment
+syn match povComment "//.*" contains=povTodo
+syn match povCommentError "\*/"
+syn sync ccomment povComment
+syn sync minlines=50
+syn keyword povTodo TODO FIXME XXX NOT contained
+syn cluster povPRIVATE add=povTodo
+
+" Language directives
+syn match povConditionalDir "#\s*\(else\|end\|for\|if\|ifdef\|ifndef\|switch\|while\)\>"
+syn match povLabelDir "#\s*\(break\|case\|default\|range\)\>"
+syn match povDeclareDir "#\s*\(declare\|default\|local\|macro\|undef\|version\)\>" nextgroup=povDeclareOption skipwhite
+syn keyword povDeclareOption deprecated once contained nextgroup=povDeclareOption skipwhite
+syn match povIncludeDir "#\s*include\>"
+syn match povFileDir "#\s*\(fclose\|fopen\|read\|write\)\>"
+syn keyword povFileDataType uint8 sint8 unit16be uint16le sint16be sint16le sint32le sint32be
+syn match povMessageDir "#\s*\(debug\|error\|render\|statistics\|warning\)\>"
+syn region povFileOpen start="#\s*fopen\>" skip=+"[^"]*"+ matchgroup=povOpenType end="\<\(read\|write\|append\)\>" contains=ALLBUT,PovParenError,PovBraceError,@PovPRIVATE transparent keepend
+
+" Literal strings
+syn match povSpecialChar "\\u\x\{4}\|\\\d\d\d\|\\." contained
+syn region povString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=povSpecialChar oneline
+syn cluster povPRIVATE add=povSpecialChar
+
+" Catch errors caused by wrong parenthesization
+syn region povParen start='(' end=')' contains=ALLBUT,povParenError,@povPRIVATE transparent
+syn match povParenError ")"
+syn region povBrace start='{' end='}' contains=ALLBUT,povBraceError,@povPRIVATE transparent
+syn match povBraceError "}"
+
+" Numbers
+syn match povNumber "\(^\|\W\)\@<=[+-]\=\(\d\+\)\=\.\=\d\+\([eE][+-]\=\d\+\)\="
+
+" Define the default highlighting
+hi def link povComment Comment
+hi def link povTodo Todo
+hi def link povNumber Number
+hi def link povString String
+hi def link povFileOpen Constant
+hi def link povConsts Constant
+hi def link povDotItem povSpecial
+hi def link povBMPType povSpecial
+hi def link povCharset povSpecial
+hi def link povDensityType povSpecial
+hi def link povFontType povSpecial
+hi def link povOpenType povSpecial
+hi def link povSpecialChar povSpecial
+hi def link povSpecial Special
+hi def link povConditionalDir PreProc
+hi def link povLabelDir PreProc
+hi def link povDeclareDir Define
+hi def link povDeclareOption Define
+hi def link povIncludeDir Include
+hi def link povFileDir PreProc
+hi def link povFileDataType Special
+hi def link povMessageDir Debug
+hi def link povAppearance povDescriptors
+hi def link povObjects povDescriptors
+hi def link povGlobalSettings povDescriptors
+hi def link povDescriptors Type
+hi def link povJuliaFunctions PovFunctions
+hi def link povModifiers povFunctions
+hi def link povFunctions Function
+hi def link povCommands Operator
+hi def link povTransform Operator
+hi def link povCSG Operator
+hi def link povParenError povError
+hi def link povBraceError povError
+hi def link povCommentError povError
+hi def link povError Error
+
+let b:current_syntax = "pov"
diff --git a/runtime/syntax/povini.vim b/runtime/syntax/povini.vim
new file mode 100644
index 0000000..ac1f878
--- /dev/null
+++ b/runtime/syntax/povini.vim
@@ -0,0 +1,56 @@
+" Vim syntax file
+" Language: PoV-Ray(tm) 3.7 configuration/initialization files
+" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
+" Last Change: 2011-04-24
+" Required Vim Version: 6.0
+
+" Setup
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" Syntax
+syn match poviniInclude "^\s*[^[+-;]\S*\s*$" contains=poviniSection
+syn match poviniLabel "^.\{-1,}\ze=" transparent contains=poviniKeyword nextgroup=poviniBool,poviniNumber
+syn keyword poviniBool On Off True False Yes No
+syn match poviniNumber "\<\d*\.\=\d\+\>"
+syn keyword poviniKeyword Clock Initial_Frame Final_Frame Frame_Final Frame_Step Initial_Clock Final_Clock Subset_Start_Frame Subset_End_Frame Cyclic_Animation Clockless_Animation Real_Time_Raytracing Field_Render Odd_Field Work_Threads
+syn keyword poviniKeyword Width Height Start_Column Start_Row End_Column End_Row Test_Abort Test_Abort_Count Continue_Trace Create_Ini
+syn keyword poviniKeyword Display Video_Mode Palette Display_Gamma Pause_When_Done Verbose Draw_Vistas Preview_Start_Size Preview_End_Size Render_Block_Size Render_Block_Step Render_Pattern Max_Image_Buffer_Memory
+syn keyword poviniKeyword Output_to_File Output_File_Type Output_Alpha Bits_Per_Color Output_File_Name Buffer_Output Buffer_Size Dither Dither_Method File_Gamma
+syn keyword poviniKeyword BSP_Base BSP_Child BSP_Isect BSP_Max BSP_Miss
+syn keyword poviniKeyword Histogram_Type Histogram_Grid_Size Histogram_Name
+syn keyword poviniKeyword Input_File_Name Include_Header Library_Path Version
+syn keyword poviniKeyword Debug_Console Fatal_Console Render_Console Statistic_Console Warning_Console All_Console Debug_File Fatal_File Render_File Statistic_File Warning_File All_File Warning_Level
+syn keyword poviniKeyword Quality Bounding Bounding_Method Bounding_Threshold Light_Buffer Vista_Buffer Remove_Bounds Split_Unions Antialias Sampling_Method Antialias_Threshold Jitter Jitter_Amount Antialias_Depth Antialias_Gamma
+syn keyword poviniKeyword Pre_Scene_Return Pre_Frame_Return Post_Scene_Return Post_Frame_Return User_Abort_Return Fatal_Error_Return
+syn keyword poviniKeyword Radiosity Radiosity_File_Name Radiosity_From_File Radiosity_To_File Radiosity_Vain_Pretrace High_Reproducibility
+syn match poviniShellOut "^\s*\(Pre_Scene_Command\|Pre_Frame_Command\|Post_Scene_Command\|Post_Frame_Command\|User_Abort_Command\|Fatal_Error_Command\)\>" nextgroup=poviniShellOutEq skipwhite
+syn match poviniShellOutEq "=" nextgroup=poviniShellOutRHS skipwhite contained
+syn match poviniShellOutRHS "[^;]\+" skipwhite contained contains=poviniShellOutSpecial
+syn match poviniShellOutSpecial "%[osnkhw%]" contained
+syn keyword poviniDeclare Declare
+syn match poviniComment ";.*$"
+syn match poviniOption "^\s*[+-]\S*"
+syn match poviniIncludeLabel "^\s*Include_INI\s*=" nextgroup=poviniIncludedFile skipwhite
+syn match poviniIncludedFile "[^;]\+" contains=poviniSection contained
+syn region poviniSection start="\[" end="\]"
+
+" Define the default highlighting
+hi def link poviniSection Special
+hi def link poviniComment Comment
+hi def link poviniDeclare poviniKeyword
+hi def link poviniShellOut poviniKeyword
+hi def link poviniIncludeLabel poviniKeyword
+hi def link poviniKeyword Type
+hi def link poviniShellOutSpecial Special
+hi def link poviniIncludedFile poviniInclude
+hi def link poviniInclude Include
+hi def link poviniOption Keyword
+hi def link poviniBool Constant
+hi def link poviniNumber Number
+
+let b:current_syntax = "povini"
diff --git a/runtime/syntax/ppd.vim b/runtime/syntax/ppd.vim
new file mode 100644
index 0000000..da67e1f
--- /dev/null
+++ b/runtime/syntax/ppd.vim
@@ -0,0 +1,35 @@
+" Vim syntax file
+" Language: PPD (PostScript printer description) file
+" Maintainer: Bjoern Jacke <bjacke@suse.de>
+" Last Change: 2001-10-06
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+syn match ppdComment "^\*%.*"
+syn match ppdDef "\*[a-zA-Z0-9]\+"
+syn match ppdDefine "\*[a-zA-Z0-9\-_]\+:"
+syn match ppdUI "\*[a-zA-Z]*\(Open\|Close\)UI"
+syn match ppdUIGroup "\*[a-zA-Z]*\(Open\|Close\)Group"
+syn match ppdGUIText "/.*:"
+syn match ppdContraints "^*UIConstraints:"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+
+hi def link ppdComment Comment
+hi def link ppdDefine Statement
+hi def link ppdUI Function
+hi def link ppdUIGroup Function
+hi def link ppdDef String
+hi def link ppdGUIText Type
+hi def link ppdContraints Special
+
+
+let b:current_syntax = "ppd"
+
+" vim: ts=8
diff --git a/runtime/syntax/ppwiz.vim b/runtime/syntax/ppwiz.vim
new file mode 100644
index 0000000..514f8f3
--- /dev/null
+++ b/runtime/syntax/ppwiz.vim
@@ -0,0 +1,84 @@
+" Vim syntax file
+" Language: PPWizard (preprocessor by Dennis Bareis)
+" Maintainer: Stefan Schwarzer <s.schwarzer@ndh.net>
+" URL: http://www.ndh.net/home/sschwarzer/download/ppwiz.vim
+" Last Change: 2003 May 11
+" Filename: ppwiz.vim
+
+" Remove old syntax stuff
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+if !exists("ppwiz_highlight_defs")
+ let ppwiz_highlight_defs = 1
+endif
+
+if !exists("ppwiz_with_html")
+ let ppwiz_with_html = 1
+endif
+
+" comments
+syn match ppwizComment "^;.*$"
+syn match ppwizComment ";;.*$"
+" HTML
+if ppwiz_with_html > 0
+ syn region ppwizHTML start="<" end=">" contains=ppwizArg,ppwizMacro
+ syn match ppwizHTML "\&\w\+;"
+endif
+" define, evaluate etc.
+if ppwiz_highlight_defs == 1
+ syn match ppwizDef "^\s*\#\S\+\s\+\S\+" contains=ALL
+ syn match ppwizDef "^\s*\#\(if\|else\|endif\)" contains=ALL
+ syn match ppwizDef "^\s*\#\({\|break\|continue\|}\)" contains=ALL
+" elseif ppwiz_highlight_defs == 2
+" syn region ppwizDef start="^\s*\#" end="[^\\]$" end="^$" keepend contains=ALL
+else
+ syn region ppwizDef start="^\s*\#" end="[^\\]$" end="^$" keepend contains=ppwizCont
+endif
+syn match ppwizError "\s.\\$"
+syn match ppwizCont "\s\([+\-%]\|\)\\$"
+" macros to execute
+syn region ppwizMacro start="<\$" end=">" contains=@ppwizArgVal,ppwizCont
+" macro arguments
+syn region ppwizArg start="{" end="}" contains=ppwizEqual,ppwizString
+syn match ppwizEqual "=" contained
+syn match ppwizOperator "<>\|=\|<\|>" contained
+" standard variables (builtin)
+syn region ppwizStdVar start="<?[^?]" end=">" contains=@ppwizArgVal
+" Rexx variables
+syn region ppwizRexxVar start="<??" end=">" contains=@ppwizArgVal
+" Constants
+syn region ppwizString start=+"+ end=+"+ contained contains=ppwizMacro,ppwizArg,ppwizHTML,ppwizCont,ppwizStdVar,ppwizRexxVar
+syn region ppwizString start=+'+ end=+'+ contained contains=ppwizMacro,ppwizArg,ppwizHTML,ppwizCont,ppwizStdVar,ppwizRexxVar
+syn match ppwizInteger "\d\+" contained
+
+" Clusters
+syn cluster ppwizArgVal add=ppwizString,ppwizInteger
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link ppwizSpecial Special
+hi def link ppwizEqual ppwizSpecial
+hi def link ppwizOperator ppwizSpecial
+hi def link ppwizComment Comment
+hi def link ppwizDef PreProc
+hi def link ppwizMacro Statement
+hi def link ppwizArg Identifier
+hi def link ppwizStdVar Identifier
+hi def link ppwizRexxVar Identifier
+hi def link ppwizString Constant
+hi def link ppwizInteger Constant
+hi def link ppwizCont ppwizSpecial
+hi def link ppwizError Error
+hi def link ppwizHTML Type
+
+
+let b:current_syntax = "ppwiz"
+
+" vim: ts=4
+
diff --git a/runtime/syntax/prescribe.vim b/runtime/syntax/prescribe.vim
new file mode 100644
index 0000000..cd5ddbe
--- /dev/null
+++ b/runtime/syntax/prescribe.vim
@@ -0,0 +1,56 @@
+" Vim syntax file
+" Language: Kyocera PreScribe2e
+" Maintainer: Klaus Muth <klaus@hampft.de>
+" URL: http://www.hampft.de/vim/syntax/prescribe.vim
+" Last Change: 2005 Mar 04
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match prescribeSpecial "!R!"
+
+" all prescribe commands
+syn keyword prescribeStatement ALTF AMCR ARC ASFN ASTK BARC BLK BOX CALL
+syn keyword prescribeStatement CASS CIR CLIP CLPR CLSP COPY CPTH CSET CSTK
+syn keyword prescribeStatement CTXT DAF DAM DAP DELF DELM DPAT DRP DRPA DUPX
+syn keyword prescribeStatement DXPG DXSD DZP ENDD ENDM ENDR EPL EPRM EXIT
+syn keyword prescribeStatement FDIR FILL FLAT FLST FONT FPAT FRPO FSET FTMD
+syn keyword prescribeStatement GPAT ICCD INTL JOG LDFC MAP MCRO MDAT MID
+syn keyword prescribeStatement MLST MRP MRPA MSTK MTYP MZP NEWP PAGE PARC PAT
+syn keyword prescribeStatement PCRP PCZP PDIR RDRP PDZP PELP PIE PMRA PMRP PMZP
+syn keyword prescribeStatement PRBX PRRC PSRC PXPL RDMP RES RSL RGST RPCS RPF
+syn keyword prescribeStatement RPG RPP RPU RTTX RTXT RVCD RVRD SBM SCAP SCCS
+syn keyword prescribeStatement SCF SCG SCP SCPI SCRC SCS SCU SDP SEM SETF SFA
+syn keyword prescribeStatement SFNT SIMG SIR SLJN SLM SLPI SLPP SLS SMLT SPD
+syn keyword prescribeStatement SPL SPLT SPO SPSZ SPW SRM SRO SROP SSTK STAT STRK
+syn keyword prescribeStatement SULP SVCP TATR TEXT TPRS UNIT UOM WIDE WRED XPAT
+syn match prescribeStatement "\<ALTB\s\+[ACDEGRST]\>"
+syn match prescribeStatement "\<CPPY\s\+[DE]\>"
+syn match prescribeStatement "\<EMCR\s\+[DE]\>"
+syn match prescribeStatement "\<FRPO\s\+INIT\>"
+syn match prescribeStatement "\<JOB[DLOPST]\>"
+syn match prescribeStatement "\<LDFC\s\+[CFS]\>"
+syn match prescribeStatement "\<RWER\s\+[DFILRSTW]\>"
+
+syn match prescribeCSETArg "[0-9]\{1,3}[A-Z]"
+syn match prescribeFRPOArg "[A-Z][0-9]\{1,2}"
+syn match prescribeNumber "[0-9]\+"
+syn region prescribeString start=+'+ end=+'+ skip=+\\'+
+syn region prescribeComment start=+CMNT+ end=+;+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link prescribeSpecial PreProc
+hi def link prescribeStatement Statement
+hi def link prescribeNumber Number
+hi def link prescribeCSETArg String
+hi def link prescribeFRPOArg String
+hi def link prescribeComment Comment
+
+
+let b:current_syntax = "prescribe"
+
+" vim: ts=8
diff --git a/runtime/syntax/privoxy.vim b/runtime/syntax/privoxy.vim
new file mode 100644
index 0000000..9e6ff1d
--- /dev/null
+++ b/runtime/syntax/privoxy.vim
@@ -0,0 +1,71 @@
+" Vim syntax file
+" Language: Privoxy actions file
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" URL: http://gus.gscit.monash.edu.au/~djkea2/vim/syntax/privoxy.vim
+" Last Change: 2007 Mar 30
+
+" Privoxy 3.0.6
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=@,48-57,_,-
+
+syn keyword privoxyTodo contained TODO FIXME XXX NOTE
+syn match privoxyComment "#.*" contains=privoxyTodo,@Spell
+
+syn region privoxyActionLine matchgroup=privoxyActionLineDelimiter start="^\s*\zs{" end="}\ze\s*$"
+ \ contains=privoxyEnabledPrefix,privoxyDisabledPrefix
+
+syn match privoxyEnabledPrefix "\%(^\|\s\|{\)\@<=+\l\@=" nextgroup=privoxyAction,privoxyFilterAction contained
+syn match privoxyDisabledPrefix "\%(^\|\s\|{\)\@<=-\l\@=" nextgroup=privoxyAction,privoxyFilterAction contained
+
+syn match privoxyAction "\%(add-header\|block\|content-type-overwrite\|crunch-client-header\|crunch-if-none-match\)\>" contained
+syn match privoxyAction "\%(crunch-incoming-cookies\|crunch-outgoing-cookies\|crunch-server-header\|deanimate-gifs\)\>" contained
+syn match privoxyAction "\%(downgrade-http-version\|fast-redirects\|filter-client-headers\|filter-server-headers\)\>" contained
+syn match privoxyAction "\%(filter\|force-text-mode\|handle-as-empty-document\|handle-as-image\)\>" contained
+syn match privoxyAction "\%(hide-accept-language\|hide-content-disposition\|hide-forwarded-for-headers\)\>" contained
+syn match privoxyAction "\%(hide-from-header\|hide-if-modified-since\|hide-referrer\|hide-user-agent\|inspect-jpegs\)\>" contained
+syn match privoxyAction "\%(kill-popups\|limit-connect\|overwrite-last-modified\|prevent-compression\|redirect\)\>" contained
+syn match privoxyAction "\%(send-vanilla-wafer\|send-wafer\|session-cookies-only\|set-image-blocker\)\>" contained
+syn match privoxyAction "\%(treat-forbidden-connects-like-blocks\)\>"
+
+syn match privoxyFilterAction "filter{[^}]*}" contained contains=privoxyFilterArg,privoxyActionBraces
+syn match privoxyActionBraces "[{}]" contained
+syn keyword privoxyFilterArg js-annoyances js-events html-annoyances content-cookies refresh-tags unsolicited-popups all-popups
+ \ img-reorder banners-by-size banners-by-link webbugs tiny-textforms jumping-windows frameset-borders demoronizer
+ \ shockwave-flash quicktime-kioskmode fun crude-parental ie-exploits site-specifics no-ping google yahoo msn blogspot
+ \ x-httpd-php-to-html html-to-xml xml-to-html hide-tor-exit-notation contained
+
+" Alternative spellings
+syn match privoxyAction "\%(kill-popup\|hide-referer\|prevent-keeping-cookies\)\>" contained
+
+" Pre-3.0 compatibility
+syn match privoxyAction "\%(no-cookie-read\|no-cookie-set\|prevent-reading-cookies\|prevent-setting-cookies\)\>" contained
+syn match privoxyAction "\%(downgrade\|hide-forwarded\|hide-from\|image\|image-blocker\|no-compression\)\>" contained
+syn match privoxyAction "\%(no-cookies-keep\|no-cookies-read\|no-cookies-set\|no-popups\|vanilla-wafer\|wafer\)\>" contained
+
+syn match privoxySetting "\<for-privoxy-version\>"
+
+syn match privoxyHeader "^\s*\zs{{\%(alias\|settings\)}}\ze\s*$"
+
+hi def link privoxyAction Identifier
+hi def link privoxyFilterAction Identifier
+hi def link privoxyActionLineDelimiter Delimiter
+hi def link privoxyDisabledPrefix SpecialChar
+hi def link privoxyEnabledPrefix SpecialChar
+hi def link privoxyHeader PreProc
+hi def link privoxySetting Identifier
+hi def link privoxyFilterArg Constant
+
+hi def link privoxyComment Comment
+hi def link privoxyTodo Todo
+
+let b:current_syntax = "privoxy"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/procmail.vim b/runtime/syntax/procmail.vim
new file mode 100644
index 0000000..93f50fe
--- /dev/null
+++ b/runtime/syntax/procmail.vim
@@ -0,0 +1,54 @@
+" Vim syntax file
+" Language: Procmail definition file
+" Maintainer: Melchior FRANZ <mfranz@aon.at>
+" Last Change: 2003 Aug 14
+" Author: Sonia Heimann
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match procmailComment "#.*$" contains=procmailTodo
+syn keyword procmailTodo contained Todo TBD
+
+syn region procmailString start=+"+ skip=+\\"+ end=+"+
+syn region procmailString start=+'+ skip=+\\'+ end=+'+
+
+syn region procmailVarDeclRegion start="^\s*[a-zA-Z0-9_]\+\s*="hs=e-1 skip=+\\$+ end=+$+ contains=procmailVar,procmailVarDecl,procmailString
+syn match procmailVarDecl contained "^\s*[a-zA-Z0-9_]\+"
+syn match procmailVar "$[a-zA-Z0-9_]\+"
+
+syn match procmailCondition contained "^\s*\*.*"
+
+syn match procmailActionFolder contained "^\s*[-_a-zA-Z0-9/]\+"
+syn match procmailActionVariable contained "^\s*$[a-zA-Z_]\+"
+syn region procmailActionForward start=+^\s*!+ skip=+\\$+ end=+$+
+syn region procmailActionPipe start=+^\s*|+ skip=+\\$+ end=+$+
+syn region procmailActionNested start=+^\s*{+ end=+^\s*}+ contains=procmailRecipe,procmailComment,procmailVarDeclRegion
+
+syn region procmailRecipe start=+^\s*:.*$+ end=+^\s*\($\|}\)+me=e-1 contains=procmailComment,procmailCondition,procmailActionFolder,procmailActionVariable,procmailActionForward,procmailActionPipe,procmailActionNested,procmailVarDeclRegion
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link procmailComment Comment
+hi def link procmailTodo Todo
+
+hi def link procmailRecipe Statement
+"hi def link procmailCondition Statement
+
+hi def link procmailActionFolder procmailAction
+hi def link procmailActionVariable procmailAction
+hi def link procmailActionForward procmailAction
+hi def link procmailActionPipe procmailAction
+hi def link procmailAction Function
+hi def link procmailVar Identifier
+hi def link procmailVarDecl Identifier
+
+hi def link procmailString String
+
+
+let b:current_syntax = "procmail"
+
+" vim: ts=8
diff --git a/runtime/syntax/progress.vim b/runtime/syntax/progress.vim
new file mode 100644
index 0000000..5e7cfef
--- /dev/null
+++ b/runtime/syntax/progress.vim
@@ -0,0 +1,312 @@
+" Vim syntax file
+" Language: Progress 4GL
+" Filename extensions: *.p (collides with Pascal),
+" *.i (collides with assembler)
+" *.w (collides with cweb)
+" Maintainer: Philip Uren <philuSPAXY@ieee.org> Remove SPAXY spam block
+" Contributors: Matthew Stickney <mtstickneySPAXY@gmail.com>
+" Chris Ruprecht <chrisSPAXY@ruprecht.org>
+" Mikhail Kuperblum <mikhailSPAXY@whasup.com>
+" John Florian <jflorianSPAXY@voyager.net>
+" Version: 13
+" Last Change: Nov 11 2012
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=@,48-57,_,-,!,#,$,%
+
+" The Progress editor doesn't cope with tabs very well.
+set expandtab
+
+syn case ignore
+
+" Progress Blocks of code and mismatched "end." errors.
+syn match ProgressEndError "\<end\>"
+syn region ProgressDoBlock transparent matchgroup=ProgressDo start="\<do\>" matchgroup=ProgressDo end="\<end\>" contains=ALLBUT,ProgressProcedure,ProgressFunction
+syn region ProgressForBlock transparent matchgroup=ProgressFor start="\<for\>" matchgroup=ProgressFor end="\<end\>" contains=ALLBUT,ProgressProcedure,ProgressFunction
+syn region ProgressRepeatBlock transparent matchgroup=ProgressRepeat start="\<repeat\>" matchgroup=ProgressRepeat end="\<end\>" contains=ALLBUT,ProgressProcedure,ProgressFunction
+syn region ProgressCaseBlock transparent matchgroup=ProgressCase start="\<case\>" matchgroup=ProgressCase end="\<end\scase\>\|\<end\>" contains=ALLBUT,ProgressProcedure,ProgressFunction
+
+" These are Progress reserved words,
+" and they could go in ProgressReserved,
+" but I found it more helpful to highlight them in a different color.
+syn keyword ProgressConditional if else then when otherwise
+syn keyword ProgressFor each where
+
+" Make those TODO and debugging notes stand out!
+syn keyword ProgressTodo contained TODO BUG FIX
+syn keyword ProgressDebug contained DEBUG
+syn keyword ProgressDebug debugger
+
+" If you like to highlight the whole line of
+" the start and end of procedures
+" to make the whole block of code stand out:
+syn match ProgressProcedure "^\s*procedure.*"
+syn match ProgressProcedure "^\s*end\s\s*procedure.*"
+syn match ProgressFunction "^\s*function.*"
+syn match ProgressFunction "^\s*end\s\s*function.*"
+" ... otherwise use this:
+" syn keyword ProgressFunction procedure function
+
+syn keyword ProgressReserved accum[ulate] active-form active-window add alias all alter ambig[uous] analyz[e] and any apply as asc[ending]
+syn keyword ProgressReserved assign asynchronous at attr[-space] audit-control audit-policy authorization auto-ret[urn] avail[able] back[ground]
+syn keyword ProgressReserved before-h[ide] begins bell between big-endian blank break buffer-comp[are] buffer-copy by by-pointer by-variant-point[er] call
+syn keyword ProgressReserved can-do can-find case case-sen[sitive] cast center[ed] check chr clear clipboard codebase-locator colon color column-lab[el]
+syn keyword ProgressReserved col[umns] com-self compiler connected control copy-lob count-of cpstream create current current-changed current-lang[uage]
+syn keyword ProgressReserved current-window current_date curs[or] database dataservers dataset dataset-handle db-remote-host dbcodepage dbcollation dbname
+syn keyword ProgressReserved dbparam dbrest[rictions] dbtaskid dbtype dbvers[ion] dde deblank debug-list debugger decimals declare default
+syn keyword ProgressReserved default-noxl[ate] default-window def[ine] delete delimiter desc[ending] dict[ionary] disable discon[nect] disp[lay] distinct do dos
+syn keyword ProgressReserved down drop dynamic-cast dynamic-func[tion] dynamic-new each editing else enable encode end entry error-stat[us] escape
+syn keyword ProgressReserved etime event-procedure except exclusive[-lock] exclusive-web[-user] exists export false fetch field[s] file-info[rmation]
+syn keyword ProgressReserved fill find find-case-sensitive find-global find-next-occurrence find-prev-occurrence find-select find-wrap-around first
+syn keyword ProgressReserved first-of focus font for form[at] fram[e] frame-col frame-db frame-down frame-field frame-file frame-inde[x] frame-line
+syn keyword ProgressReserved frame-name frame-row frame-val[ue] from from-c[hars] from-p[ixels] function-call-type gateway[s] get-attr-call-type get-byte
+syn keyword ProgressReserved get-codepage[s] get-coll[ations] get-column get-error-column get-error-row get-file-name get-file-offse[t] get-key-val[ue]
+syn keyword ProgressReserved get-message-type get-row getbyte global go-on go-pend[ing] grant graphic-e[dge] group having header help hide host-byte-order if
+syn keyword ProgressReserved import in index indicator input input-o[utput] insert into is is-attr[-space] join kblabel key-code key-func[tion] key-label
+syn keyword ProgressReserved keycode keyfunc[tion] keylabel keys keyword label last last-even[t] last-key last-of lastkey ldbname leave library like
+syn keyword ProgressReserved like-sequential line-count[er] listi[ng] little-endian locked log-manager lookup machine-class map member message message-lines mouse
+syn keyword ProgressReserved mpe new next next-prompt no no-attr[-space] no-error no-f[ill] no-help no-hide no-label[s] no-lobs no-lock no-map
+syn keyword ProgressReserved no-mes[sage] no-pause no-prefe[tch] no-return-val[ue] no-undo no-val[idate] no-wait not now null num-ali[ases] num-dbs num-entries
+syn keyword ProgressReserved of off old on open opsys option or os-append os-command os-copy os-create-dir os-delete os-dir os-drive[s] os-error
+syn keyword ProgressReserved os-rename otherwise output overlay page page-bot[tom] page-num[ber] page-top param[eter] password-field pause pdbname
+syn keyword ProgressReserved persist[ent] pixels preproc[ess] privileges proc-ha[ndle] proc-st[atus] procedure-call-type process profiler program-name progress
+syn keyword ProgressReserved prompt[-for] promsgs propath provers[ion] publish put put-byte put-key-val[ue] putbyte query query-tuning quit r-index
+syn keyword ProgressReserved rcode-info[rmation] read-available read-exact-num readkey recid record-len[gth] rect[angle] release repeat reposition retain retry return
+syn keyword ProgressReserved return-val[ue] revert revoke row-created row-deleted row-modified row-unmodified run save sax-comple[te] sax-parser-error
+syn keyword ProgressReserved sax-running sax-uninitialized sax-write-begin sax-write-complete sax-write-content sax-write-element sax-write-error
+syn keyword ProgressReserved sax-write-idle sax-write-tag schema screen screen-io screen-lines scroll sdbname search search-self search-target security-policy
+syn keyword ProgressReserved seek select self session set set-attr-call-type setuser[id] share[-lock] shared show-stat[s] skip some source-procedure
+syn keyword ProgressReserved space status stream stream-handle stream-io string-xref subscribe super system-dialog table table-handle target-procedure
+syn keyword ProgressReserved term[inal] text text-cursor text-seg[-grow] then this-object this-procedure time title to today top-only trans[action] trigger
+syn keyword ProgressReserved triggers trim true underl[ine] undo unform[atted] union unique unix unless-hidden unsubscribe up update use-index use-revvideo
+syn keyword ProgressReserved use-underline user[id] using value values view view-as wait-for web-con[text] when where while window window-delayed-min[imize]
+syn keyword ProgressReserved window-maxim[ized] window-minim[ized] window-normal with work-tab[le] workfile write xcode xcode-session-key xref xref-xml yes
+
+" Strings. Handles embedded quotes.
+" Note that, for some reason, Progress doesn't use the backslash, "\"
+" as the escape character; it uses tilde, "~".
+syn region ProgressString matchgroup=ProgressQuote start=+"+ end=+"+ skip=+\~'\|\~\~\|\~"+ contains=@Spell
+syn region ProgressString matchgroup=ProgressQuote start=+'+ end=+'+ skip=+\~'\|\~\~\|\~"+ contains=@Spell
+
+syn match ProgressIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>()"
+
+" syn match ProgressDelimiter "()"
+
+syn match ProgressMatrixDelimiter "[][]"
+" If you prefer you can highlight the range:
+"syn match ProgressMatrixDelimiter "[\d\+\.\.\d\+]"
+
+syn match ProgressNumber "\<\-\=\d\+\(u\=l\=\|lu\|f\)\>"
+syn match ProgressByte "\$[0-9a-fA-F]\+"
+
+" More values: Logicals, and Progress's unknown value, ?.
+syn match ProgressNumber "?"
+syn keyword ProgressNumber true false yes no
+
+" If you don't like tabs:
+syn match ProgressShowTab "\t"
+
+" If you don't like white space on the end of lines, uncomment this:
+" syn match ProgressSpaceError "\s\+$"
+
+syn region ProgressComment start="/\*" end="\*/" contains=ProgressComment,ProgressTodo,ProgressDebug,@Spell
+syn region ProgressInclude start="^[ ]*[{]" end="[}]" contains=ProgressPreProc,ProgressOperator,ProgressString,ProgressComment
+syn region ProgressPreProc start="&" end="\>" contained
+
+" This next line works reasonably well.
+" syn match ProgressOperator "[!;|)(:.><+*=-]"
+"
+" Progress allows a '-' to be part of an identifier. To be considered
+" the subtraction/negation operation operator it needs a non-word
+" character on either side. Also valid are cases where the minus
+" operation appears at the beginning or end of a line.
+" This next line trips up on "no-undo" etc.
+" syn match ProgressOperator "[!;|)(:.><+*=]\|\W-\W\|^-\W\|\W-$"
+syn match ProgressOperator "[!;|)(:.><+*=]\|\s-\s\|^-\s\|\s-$"
+
+syn keyword ProgressOperator <= <> >=
+syn keyword ProgressOperator abs[olute] accelerator accept-changes accept-row-changes across active actor add-buffer add-calc-col[umn]
+syn keyword ProgressOperator add-columns-from add-events-proc[edure] add-fields-from add-first add-header-entry add-index-field add-interval add-last
+syn keyword ProgressOperator add-like-col[umn] add-like-field add-like-index add-new-field add-new-index add-rel[ation] add-schema-location add-source-buffer
+syn keyword ProgressOperator add-super-proc[edure] adm-data advise after-buffer after-rowid after-table alert-box allow-column-searching allow-replication alternate-key
+syn keyword ProgressOperator always-on-top ansi-only anywhere append append-child appl-alert[-boxes] appl-context-id application apply-callback appserver-info
+syn keyword ProgressOperator appserver-password appserver-userid array-m[essage] ask-overwrite assembly async-request-count async-request-handle attach-data-source
+syn keyword ProgressOperator attached-pairlist attach attribute-names audit-enabled audit-event-context authentication-failed auto-comp[letion] auto-delete
+syn keyword ProgressOperator auto-delete-xml auto-end-key auto-endkey auto-go auto-ind[ent] auto-resize auto-synchronize auto-val[idate] auto-z[ap] automatic
+syn keyword ProgressOperator available-formats ave[rage] avg backward[s] base-ade base-key basic-logging batch[-mode] batch-size before-buffer before-rowid
+syn keyword ProgressOperator before-table begin-event-group bgc[olor] binary bind bind-where blob block-iteration-display border-b[ottom-chars]
+syn keyword ProgressOperator border-bottom-p[ixels] border-l[eft-chars] border-left-p[ixels] border-r[ight-chars] border-right-p[ixels] border-t[op-chars]
+syn keyword ProgressOperator border-top-p[ixels] both bottom box box-select[able] browse buffer buffer-chars buffer-create buffer-delete buffer-field buffer-handle
+syn keyword ProgressOperator buffer-lines buffer-n[ame] buffer-releas[e] buffer-validate buffer-value button[s] by-reference by-value byte bytes-read
+syn keyword ProgressOperator bytes-written cache cache-size call-name call-type can-crea[te] can-dele[te] can-query can-read can-set can-writ[e] cancel-break
+syn keyword ProgressOperator cancel-button cancel-requests cancelled caps careful-paint catch cdecl chained char[acter] character_length charset checked
+syn keyword ProgressOperator child-buffer child-num choose class class-type clear-appl-context clear-log clear-select[ion] clear-sort-arrow[s]
+syn keyword ProgressOperator client-connection-id client-principal client-tty client-type client-workstation clob clone-node close close-log code codepage
+syn keyword ProgressOperator codepage-convert col-of collate colon-align[ed] color-table column-bgc[olor] column-codepage column-dcolor column-fgc[olor]
+syn keyword ProgressOperator column-font column-movable column-of column-pfc[olor] column-read-only column-resizable column-sc[rolling] com-handle combo-box
+syn keyword ProgressOperator command compare[s] compile complete config-name connect constructor contents context context-help context-help-file
+syn keyword ProgressOperator context-help-id context-pop[up] control-box control-fram[e] convert convert-to-offs[et] copy-dataset copy-sax-attributes
+syn keyword ProgressOperator copy-temp-table count cpcase cpcoll cpint[ernal] cplog cpprint cprcodein cprcodeout cpterm crc-val[ue] create-like
+syn keyword ProgressOperator create-like-sequential create-node create-node-namespace create-result-list-entry create-test-file current-column current-env[ironment]
+syn keyword ProgressOperator current-iteration current-query current-result-row current-row-modified current-value cursor-char cursor-line cursor-offset data-b[ind]
+syn keyword ProgressOperator data-entry-ret[urn] data-rel[ation] data-source data-source-complete-map data-source-modified data-source-rowid data-t[ype] date
+syn keyword ProgressOperator date-f[ormat] day db-references dcolor dde-error dde-i[d] dde-item dde-name dde-topic debu[g] debug-alert
+syn keyword ProgressOperator declare-namespace decrypt default-buffer-handle default-but[ton] default-commit default-ex[tension] default-string
+syn keyword ProgressOperator default-value define-user-event-manager defined delete-char delete-current-row delete-header-entry delete-line delete-node
+syn keyword ProgressOperator delete-result-list-entry delete-selected-row delete-selected-rows descript[ion] deselect-focused-row deselect-rows deselect-selected-row
+syn keyword ProgressOperator destructor detach-data-source dialog-box dir directory disable-auto-zap disable-connections disable-dump-triggers
+syn keyword ProgressOperator disable-load-triggers disabled display-message display-timezone display-t[ype] domain-description domain-name domain-type double
+syn keyword ProgressOperator drag-enabled drop-down drop-down-list drop-target dump dump-logging-now dynamic dynamic-current-value dynamic-next-value echo
+syn keyword ProgressOperator edge[-chars] edge-p[ixels] edit-can-paste edit-can-undo edit-clear edit-copy edit-cut edit-paste edit-undo editor empty
+syn keyword ProgressOperator empty-dataset empty-temp-table enable-connections enabled encoding encrypt encrypt-audit-mac-key encryption-salt end-document
+syn keyword ProgressOperator end-element end-event-group end-file-drop end-key end-user-prompt endkey entered entry-types-list eq error error-col[umn]
+syn keyword ProgressOperator error-object-detail error-row error-stack-trace error-string event-group-id event-procedure-context event-t[ype] events exclusive-id
+syn keyword ProgressOperator execute execution-log exp expand expandable expire explicit export-principal extended extent external extract
+syn keyword ProgressOperator fetch-selected-row fgc[olor] file file-create-d[ate] file-create-t[ime] file-mod-d[ate] file-mod-t[ime] file-name file-off[set]
+syn keyword ProgressOperator file-size file-type filename fill-in fill-mode fill-where-string filled filters final finally find-by-rowid find-current
+syn keyword ProgressOperator find-first find-last find-unique finder first-async[-request] first-buffer first-child first-column first-data-source
+syn keyword ProgressOperator first-dataset first-form first-object first-proc[edure] first-query first-serv[er] first-server-socket first-socket
+syn keyword ProgressOperator first-tab-i[tem] fit-last-column fix-codepage fixed-only flat-button float focused-row focused-row-selected font-table force-file
+syn keyword ProgressOperator fore[ground] foreign-key-hidden form-input form-long-input formatte[d] forward-only forward[s] fragmen[t] frame-spa[cing] frame-x
+syn keyword ProgressOperator frame-y frequency from-cur[rent] full-height[-chars] full-height-p[ixels] full-pathn[ame] full-width[-chars]
+syn keyword ProgressOperator full-width-p[ixels] function ge generate-pbe-key generate-pbe-salt generate-random-key generate-uuid get get-attribute get-attribute-node
+syn keyword ProgressOperator get-binary-data get-bits get-blue[-value] get-browse-col[umn] get-buffer-handle get-byte-order get-bytes get-bytes-available
+syn keyword ProgressOperator get-callback-proc-context get-callback-proc-name get-cgi-list get-cgi-long-value get-cgi-value get-changes get-child get-child-rel[ation]
+syn keyword ProgressOperator get-config-value get-curr[ent] get-dataset-buffer get-dir get-document-element get-double get-dropped-file get-dynamic get-file
+syn keyword ProgressOperator get-firs[t] get-float get-green[-value] get-header-entr[y] get-index-by-namespace-name get-index-by-qname get-iteration get-last
+syn keyword ProgressOperator get-localname-by-index get-long get-message get-next get-node get-number get-parent get-pointer-value get-prev get-printers get-property
+syn keyword ProgressOperator get-qname-by-index get-red[-value] get-rel[ation] get-repositioned-row get-rgb[-value] get-selected[-widget] get-serialized get-short
+syn keyword ProgressOperator get-signature get-size get-socket-option get-source-buffer get-string get-tab-item get-text-height[-chars] get-text-height-p[ixels]
+syn keyword ProgressOperator get-text-width[-chars] get-text-width-p[ixels] get-top-buffer get-type-by-index get-type-by-namespace-name get-type-by-qname
+syn keyword ProgressOperator get-unsigned-long get-unsigned-short get-uri-by-index get-value-by-index get-value-by-namespace-name get-value-by-qname
+syn keyword ProgressOperator get-wait[-state] grayed grid-factor-h[orizontal] grid-factor-v[ertical] grid-snap grid-unit-height[-chars] grid-unit-height-p[ixels]
+syn keyword ProgressOperator grid-unit-width[-chars] grid-unit-width-p[ixels] grid-visible group-box gt guid handle handler has-lobs has-records height[-chars]
+syn keyword ProgressOperator height-p[ixels] help-topic hex-decode hex-encode hidden hint hori[zontal] html-charset html-end-of-line html-end-of-page
+syn keyword ProgressOperator html-frame-begin html-frame-end html-header-begin html-header-end html-title-begin html-title-end hwnd icfparam[eter] icon
+syn keyword ProgressOperator ignore-current-mod[ified] image image-down image-insensitive image-size image-size-c[hars] image-size-p[ixels] image-up immediate-display
+syn keyword ProgressOperator implements import-node import-principal in-handle increment-exclusive-id index-hint index-info[rmation] indexed-reposition
+syn keyword ProgressOperator info[rmation] inherit-bgc[olor] inherit-fgc[olor] inherits init[ial] initial-dir initial-filter initialize-document-type initiate
+syn keyword ProgressOperator inner inner-chars inner-lines input-value insert-attribute insert-b[acktab] insert-before insert-file insert-row
+syn keyword ProgressOperator insert-string insert-t[ab] instantiating-procedure int[eger] interface internal-entries interval invoke is-clas[s]
+syn keyword ProgressOperator is-codepage-fixed is-column-codepage is-lead-byte is-open is-parameter-set is-row-selected is-selected is-xml iso-date item
+syn keyword ProgressOperator items-per-row join-by-sqldb keep-connection-open keep-frame-z[-order] keep-messages keep-security-cache keep-tab-order key
+syn keyword ProgressOperator keyword-all label-bgc[olor] label-dc[olor] label-fgc[olor] label-font label-pfc[olor] labels landscape language[s] large
+syn keyword ProgressOperator large-to-small last-async[-request] last-batch last-child last-form last-object last-proce[dure] last-serv[er] last-server-socket
+syn keyword ProgressOperator last-socket last-tab-i[tem] lc le leading left left-align[ed] left-trim length line list-events list-item-pairs list-items
+syn keyword ProgressOperator list-property-names list-query-attrs list-set-attrs list-widgets literal-question load load-domains load-icon load-image load-image-down
+syn keyword ProgressOperator load-image-insensitive load-image-up load-mouse-p[ointer] load-picture load-small-icon lob-dir local-host local-name local-port
+syn keyword ProgressOperator locator-column-number locator-line-number locator-public-id locator-system-id locator-type lock-registration log log-audit-event
+syn keyword ProgressOperator log-entry-types log-threshold logfile-name logging-level logical login-expiration-timestamp login-host login-state logout long[char]
+syn keyword ProgressOperator longchar-to-node-value lookahead lower lt mandatory manual-highlight margin-extra margin-height[-chars] margin-height-p[ixels]
+syn keyword ProgressOperator margin-width[-chars] margin-width-p[ixels] mark-new mark-row-state matches max-button max-chars max-data-guess max-height[-chars]
+syn keyword ProgressOperator max-height-p[ixels] max-rows max-size max-val[ue] max-width[-chars] max-width-p[ixels] maximize max[imum] maximum-level memory memptr
+syn keyword ProgressOperator memptr-to-node-value menu menu-bar menu-item menu-k[ey] menu-m[ouse] menubar merge-by-field merge-changes merge-row-changes message-area
+syn keyword ProgressOperator message-area-font method min-button min-column-width-c[hars] min-column-width-p[ixels] min-height[-chars] min-height-p[ixels]
+syn keyword ProgressOperator min-schema-marshal min-size min-val[ue] min-width[-chars] min-width-p[ixels] min[imum] modified mod[ulo] month mouse-p[ointer] movable
+syn keyword ProgressOperator move-after[-tab-item] move-befor[e-tab-item] move-col[umn] move-to-b[ottom] move-to-eof move-to-t[op] mtime multi-compile multiple
+syn keyword ProgressOperator multiple-key multitasking-interval must-exist must-understand name namespace-prefix namespace-uri native ne needs-appserver-prompt
+syn keyword ProgressOperator needs-prompt nested new-instance new-row next-col[umn] next-rowid next-sibling next-tab-ite[m] next-value no-apply
+syn keyword ProgressOperator no-array-m[essage] no-assign no-attr-l[ist] no-auto-validate no-bind-where no-box no-console no-convert no-current-value no-debug
+syn keyword ProgressOperator no-drag no-echo no-empty-space no-focus no-index-hint no-inherit-bgc[olor] no-inherit-fgc[olor] no-join-by-sqldb no-lookahead
+syn keyword ProgressOperator no-row-markers no-schema-marshal no-scrollbar-v[ertical] no-separate-connection no-separators no-tab[-stop] no-und[erline]
+syn keyword ProgressOperator no-word-wrap node-value node-value-to-longchar node-value-to-memptr nonamespace-schema-location none normalize not-active
+syn keyword ProgressOperator num-buffers num-but[tons] num-child-relations num-children num-col[umns] num-copies num-dropped-files num-fields num-formats
+syn keyword ProgressOperator num-header-entries num-items num-iterations num-lines num-locked-col[umns] num-log-files num-messages num-parameters num-references
+syn keyword ProgressOperator num-relations num-repl[aced] num-results num-selected-rows num-selected[-widgets] num-source-buffers num-tabs num-to-retain
+syn keyword ProgressOperator num-top-buffers num-visible-col[umns] numeric numeric-dec[imal-point] numeric-f[ormat] numeric-sep[arator] object ok ok-cancel
+syn keyword ProgressOperator on-frame[-border] ordered-join ordinal orientation origin-handle origin-rowid os-getenv outer outer-join override owner owner-document
+syn keyword ProgressOperator page-size page-wid[th] paged parent parent-buffer parent-rel[ation] parse-status partial-key pascal pathname
+syn keyword ProgressOperator pbe-hash-alg[orithm] pbe-key-rounds perf[ormance] persistent-cache-disabled persistent-procedure pfc[olor] pixels-per-col[umn]
+syn keyword ProgressOperator pixels-per-row popup-m[enu] popup-o[nly] portrait position precision prefer-dataset prepare-string prepared presel[ect] prev
+syn keyword ProgressOperator prev-col[umn] prev-sibling prev-tab-i[tem] primary printer printer-control-handle printer-hdc printer-name printer-port
+syn keyword ProgressOperator printer-setup private private-d[ata] proce[dure] procedure-name progress-s[ource] property protected proxy proxy-password
+syn keyword ProgressOperator proxy-userid public public-id published-events put-bits put-bytes put-double put-float put-long put-short put-string
+syn keyword ProgressOperator put-unsigned-long put-unsigned-short query-close query-off-end query-open query-prepare question quoter radio-buttons radio-set random
+syn keyword ProgressOperator raw raw-transfer read read-file read-only read-xml read-xmlschema real recursive reference-only refresh
+syn keyword ProgressOperator refresh-audit-policy refreshable register-domain reject-changes reject-row-changes rejected relation-fi[elds] relations-active remote
+syn keyword ProgressOperator remote-host remote-port remove-attribute remove-child remove-events-proc[edure] remove-super-proc[edure] replace replace-child
+syn keyword ProgressOperator replace-selection-text replication-create replication-delete replication-write reposition-back[ward] reposition-forw[ard] reposition-to-row
+syn keyword ProgressOperator reposition-to-rowid request reset resiza[ble] resize restart-row restart-rowid result retain-s[hape] retry-cancel return-ins[erted]
+syn keyword ProgressOperator return-to-start-di[r] return-value-data-type returns reverse-from rgb-v[alue] right right-align[ed] right-trim roles round rounded
+syn keyword ProgressOperator routine-level row row-height[-chars] row-height-p[ixels] row-ma[rkers] row-of row-resizable row-state rowid rule run-proc[edure]
+syn keyword ProgressOperator save-as save-file save-row-changes save-where-string sax-attributes sax-parse sax-parse-first sax-parse-next sax-reader
+syn keyword ProgressOperator sax-writer schema-change schema-location schema-marshal schema-path screen-val[ue] scroll-bars scroll-delta scroll-offset
+syn keyword ProgressOperator scroll-to-current-row scroll-to-i[tem] scroll-to-selected-row scrollable scrollbar-h[orizontal] scrollbar-v[ertical]
+syn keyword ProgressOperator scrolled-row-pos[ition] scrolling seal seal-timestamp section select-all select-focused-row select-next-row select-prev-row select-row
+syn keyword ProgressOperator selectable selected selection-end selection-list selection-start selection-text send sensitive separate-connection
+syn keyword ProgressOperator separator-fgc[olor] separators server server-connection-bo[und] server-connection-bound-re[quest] server-connection-co[ntext]
+syn keyword ProgressOperator server-connection-id server-operating-mode server-socket session-end session-id set-actor set-appl-context set-attribute
+syn keyword ProgressOperator set-attribute-node set-blue[-value] set-break set-buffers set-byte-order set-callback set-callback-procedure set-client set-commit
+syn keyword ProgressOperator set-connect-procedure set-contents set-db-client set-dynamic set-green[-value] set-input-source set-must-understand set-node
+syn keyword ProgressOperator set-numeric-form[at] set-option set-output-destination set-parameter set-pointer-val[ue] set-property set-read-response-procedure
+syn keyword ProgressOperator set-red[-value] set-repositioned-row set-rgb[-value] set-rollback set-selection set-serialized set-size set-socket-option
+syn keyword ProgressOperator set-sort-arrow set-wait[-state] short show-in-task[bar] side-label-h[andle] side-lab[els] silent simple single single-character size
+syn keyword ProgressOperator size-c[hars] size-p[ixels] skip-deleted-rec[ord] slider small-icon small-title smallint soap-fault soap-fault-actor
+syn keyword ProgressOperator soap-fault-code soap-fault-detail soap-fault-string soap-header soap-header-entryref socket sort sort-ascending sort-number source
+syn keyword ProgressOperator sql sqrt ssl-server-name standalone start-document start-element start[ing] startup-parameters state-detail static
+syn keyword ProgressOperator status-area status-area-font stdcall stop stop-parsing stoppe[d] stored-proc[edure] stretch-to-fit strict string string-value
+syn keyword ProgressOperator sub-ave[rage] sub-count sub-max[imum] sub-menu sub-menu-help sub-min[imum] sub-total subst[itute] substr[ing] subtype sum
+syn keyword ProgressOperator super-proc[edures] suppress-namespace-processing suppress-w[arnings] suspend symmetric-encryption-algorithm symmetric-encryption-iv
+syn keyword ProgressOperator symmetric-encryption-key symmetric-support synchronize system-alert[-boxes] system-help system-id tab-position tab-stop table-crc-list
+syn keyword ProgressOperator table-list table-num[ber] target temp-dir[ectory] temp-table temp-table-prepar[e] terminate text-selected three-d through throw
+syn keyword ProgressOperator thru tic-marks time-source timezone title-bgc[olor] title-dc[olor] title-fgc[olor] title-fo[nt] to-rowid toggle-box
+syn keyword ProgressOperator tooltip tooltips top top-nav-query topic total tracking-changes trailing trans-init-proc[edure] transaction-mode
+syn keyword ProgressOperator transpar[ent] trunc[ate] ttcodepage type type-of unbox unbuff[ered] unique-id unique-match unload unsigned-byte unsigned-integer
+syn keyword ProgressOperator unsigned-long unsigned-short update-attribute upper url url-decode url-encode url-password url-userid use use-dic[t-exps]
+syn keyword ProgressOperator use-filename use-text use-widget-pool user-id valid-event valid-handle valid-object validate validate-expressio[n]
+syn keyword ProgressOperator validate-message validate-seal validate-xml validation-enabled var[iable] verb[ose] version vert[ical] view-first-column-on-reopen
+syn keyword ProgressOperator virtual-height[-chars] virtual-height-p[ixels] virtual-width[-chars] virtual-width-p[ixels] visible void wait warning weekday where-string
+syn keyword ProgressOperator widget widget-e[nter] widget-h[andle] widget-id widget-l[eave] widget-pool width[-chars] width-p[ixels] window-name
+syn keyword ProgressOperator window-sta[te] window-sys[tem] word-index word-wrap work-area-height-p[ixels] work-area-width-p[ixels] work-area-x work-area-y
+syn keyword ProgressOperator write-cdata write-characters write-comment write-data-element write-empty-element write-entity-ref write-external-dtd
+syn keyword ProgressOperator write-fragment write-message write-processing-instruction write-status write-xml write-xmlschema x x-document x-noderef x-of
+syn keyword ProgressOperator xml-data-type xml-node-name xml-node-type xml-schema-pat[h] xml-suppress-namespace-processing y y-of year year-offset yes-no
+syn keyword ProgressOperator yes-no-cancel
+
+syn keyword ProgressType char[acter] int[eger] int64 dec[imal] log[ical] da[te] datetime datetime-tz
+
+syn sync lines=800
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later.
+hi def link ProgressByte Number
+hi def link ProgressCase Repeat
+hi def link ProgressComment Comment
+hi def link ProgressConditional Conditional
+hi def link ProgressDebug Debug
+hi def link ProgressDo Repeat
+hi def link ProgressEndError Error
+hi def link ProgressFor Repeat
+hi def link ProgressFunction Procedure
+hi def link ProgressIdentifier Identifier
+hi def link ProgressInclude Include
+hi def link ProgressMatrixDelimiter Identifier
+hi def link ProgressNumber Number
+hi def link ProgressOperator Operator
+hi def link ProgressPreProc PreProc
+hi def link ProgressProcedure Procedure
+hi def link ProgressQuote Delimiter
+hi def link ProgressRepeat Repeat
+hi def link ProgressReserved Statement
+hi def link ProgressSpaceError Error
+hi def link ProgressString String
+hi def link ProgressTodo Todo
+hi def link ProgressType Statement
+hi def link ProgressShowTab Error
+
+
+let b:current_syntax = "progress"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 sw=8
diff --git a/runtime/syntax/prolog.vim b/runtime/syntax/prolog.vim
new file mode 100644
index 0000000..93aba4d
--- /dev/null
+++ b/runtime/syntax/prolog.vim
@@ -0,0 +1,118 @@
+" Vim syntax file
+" Language: PROLOG
+" Maintainer: Anton Kochkov <anton.kochkov@gmail.com>
+" Last Change: 2021 Jan 05
+
+" There are two sets of highlighting in here:
+" If the "prolog_highlighting_clean" variable exists, it is rather sparse.
+" Otherwise you get more highlighting.
+"
+" You can also set the "prolog_highlighting_no_keyword" variable. If set,
+" keywords will not be highlighted.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Prolog is case sensitive.
+syn case match
+
+" Very simple highlighting for comments, clause heads and
+" character codes. It respects prolog strings and atoms.
+
+syn region prologCComment start=+/\*+ end=+\*/+ contains=@Spell
+syn match prologComment +%.*+ contains=@Spell
+
+if !exists("prolog_highlighting_no_keyword")
+ syn keyword prologKeyword module meta_predicate multifile dynamic
+endif
+syn match prologCharCode +0'\\\=.+
+syn region prologString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
+syn region prologAtom start=+'+ skip=+\\\\\|\\'+ end=+'+
+syn region prologClause matchgroup=prologClauseHead start=+^\s*[a-z]\w*+ matchgroup=Normal end=+\.\s\|\.$+ contains=ALLBUT,prologClause contains=@NoSpell
+
+if !exists("prolog_highlighting_clean")
+
+ " some keywords
+ " some common predicates are also highlighted as keywords
+ " is there a better solution?
+ if !exists("prolog_highlighting_no_keyword")
+ syn keyword prologKeyword abolish current_output peek_code
+ syn keyword prologKeyword append current_predicate put_byte
+ syn keyword prologKeyword arg current_prolog_flag put_char
+ syn keyword prologKeyword asserta fail put_code
+ syn keyword prologKeyword assertz findall read
+ syn keyword prologKeyword at_end_of_stream float read_term
+ syn keyword prologKeyword atom flush_output repeat
+ syn keyword prologKeyword atom_chars functor retract
+ syn keyword prologKeyword atom_codes get_byte set_input
+ syn keyword prologKeyword atom_concat get_char set_output
+ syn keyword prologKeyword atom_length get_code set_prolog_flag
+ syn keyword prologKeyword atomic halt set_stream_position
+ syn keyword prologKeyword bagof integer setof
+ syn keyword prologKeyword call is stream_property
+ syn keyword prologKeyword catch nl sub_atom
+ syn keyword prologKeyword char_code nonvar throw
+ syn keyword prologKeyword char_conversion number true
+ syn keyword prologKeyword clause number_chars unify_with_occurs_check
+ syn keyword prologKeyword close number_codes var
+ syn keyword prologKeyword compound once write
+ syn keyword prologKeyword copy_term op write_canonical
+ syn keyword prologKeyword current_char_conversion open write_term
+ syn keyword prologKeyword current_input peek_byte writeq
+ syn keyword prologKeyword current_op peek_char
+ endif
+
+ syn match prologOperator "=\\=\|=:=\|\\==\|=<\|==\|>=\|\\=\|\\+\|=\.\.\|<\|>\|="
+ syn match prologAsIs "===\|\\===\|<=\|=>"
+
+ syn match prologNumber "\<\d*\>'\@!"
+ syn match prologNumber "\<0[xX]\x*\>'\@!"
+ syn match prologCommentError "\*/"
+ syn match prologSpecialCharacter ";"
+ syn match prologSpecialCharacter "!"
+ syn match prologSpecialCharacter ":-"
+ syn match prologSpecialCharacter "-->"
+ syn match prologQuestion "?-.*\." contains=prologNumber
+
+
+endif
+
+syn sync maxlines=50
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default highlighting.
+hi def link prologComment Comment
+hi def link prologCComment Comment
+hi def link prologCharCode Special
+
+if exists ("prolog_highlighting_clean")
+
+hi def link prologKeyword Statement
+hi def link prologClauseHead Statement
+hi def link prologClause Normal
+
+else
+
+hi def link prologKeyword Keyword
+hi def link prologClauseHead Constant
+hi def link prologClause Normal
+hi def link prologQuestion PreProc
+hi def link prologSpecialCharacter Special
+hi def link prologNumber Number
+hi def link prologAsIs Normal
+hi def link prologCommentError Error
+hi def link prologAtom String
+hi def link prologString String
+hi def link prologOperator Operator
+
+endif
+
+
+let b:current_syntax = "prolog"
+
+" vim: ts=8
diff --git a/runtime/syntax/promela.vim b/runtime/syntax/promela.vim
new file mode 100644
index 0000000..add4514
--- /dev/null
+++ b/runtime/syntax/promela.vim
@@ -0,0 +1,53 @@
+" Vim syntax file
+" Language: ProMeLa
+" Maintainer: Maurizio Tranchero <maurizio.tranchero@polito.it> - <maurizio.tranchero@gmail.com>
+" First Release: Mon Oct 16 08:49:46 CEST 2006
+" Last Change: Thu Aug 7 21:22:48 CEST 2008
+" Version: 0.5
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" case is significant
+" syn case ignore
+" ProMeLa Keywords
+syn keyword promelaStatement proctype if else while chan do od fi break goto unless
+syn keyword promelaStatement active assert label atomic
+syn keyword promelaFunctions skip timeout run
+syn keyword promelaTodo contained TODO
+" ProMeLa Types
+syn keyword promelaType bit bool byte short int
+" Operators and special characters
+syn match promelaOperator "!"
+syn match promelaOperator "?"
+syn match promelaOperator "->"
+syn match promelaOperator "="
+syn match promelaOperator "+"
+syn match promelaOperator "*"
+syn match promelaOperator "/"
+syn match promelaOperator "-"
+syn match promelaOperator "<"
+syn match promelaOperator ">"
+syn match promelaOperator "<="
+syn match promelaOperator ">="
+syn match promelaSpecial "\["
+syn match promelaSpecial "\]"
+syn match promelaSpecial ";"
+syn match promelaSpecial "::"
+" ProMeLa Comments
+syn region promelaComment start="/\*" end="\*/" contains=promelaTodo,@Spell
+syn match promelaComment "//.*" contains=promelaTodo,@Spell
+
+" Class Linking
+hi def link promelaStatement Statement
+hi def link promelaType Type
+hi def link promelaComment Comment
+hi def link promelaOperator Type
+hi def link promelaSpecial Special
+hi def link promelaFunctions Special
+hi def link promelaString String
+hi def link promelaTodo Todo
+
+let b:current_syntax = "promela"
diff --git a/runtime/syntax/proto.vim b/runtime/syntax/proto.vim
new file mode 100644
index 0000000..0d2d2f2
--- /dev/null
+++ b/runtime/syntax/proto.vim
@@ -0,0 +1,83 @@
+" Protocol Buffers - Google's data interchange format
+" Copyright 2008 Google Inc. All rights reserved.
+" https://developers.google.com/protocol-buffers/
+"
+" Redistribution and use in source and binary forms, with or without
+" modification, are permitted provided that the following conditions are
+" met:
+"
+" * Redistributions of source code must retain the above copyright
+" notice, this list of conditions and the following disclaimer.
+" * Redistributions in binary form must reproduce the above
+" copyright notice, this list of conditions and the following disclaimer
+" in the documentation and/or other materials provided with the
+" distribution.
+" * Neither the name of Google Inc. nor the names of its
+" contributors may be used to endorse or promote products derived from
+" this software without specific prior written permission.
+"
+" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+" OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+" OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+" This is the Vim syntax file for Google Protocol Buffers as found at
+" https://github.com/protocolbuffers/protobuf
+" Last update: 2020 Oct 29
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+syn keyword protoTodo contained TODO FIXME XXX
+syn cluster protoCommentGrp contains=protoTodo
+
+syn keyword protoSyntax syntax import option
+syn keyword protoStructure package message group oneof
+syn keyword protoRepeat optional required repeated
+syn keyword protoDefault default
+syn keyword protoExtend extend extensions to max reserved
+syn keyword protoRPC service rpc returns
+
+syn keyword protoType int32 int64 uint32 uint64 sint32 sint64
+syn keyword protoType fixed32 fixed64 sfixed32 sfixed64
+syn keyword protoType float double bool string bytes
+syn keyword protoTypedef enum
+syn keyword protoBool true false
+
+syn match protoInt /-\?\<\d\+\>/
+syn match protoInt /\<0[xX]\x+\>/
+syn match protoFloat /\<-\?\d*\(\.\d*\)\?/
+syn region protoComment start="\/\*" end="\*\/" contains=@pbCommentGrp,@Spell
+syn region protoComment start="//" skip="\\$" end="$" keepend contains=@pbCommentGrp,@Spell
+syn region protoString start=/"/ skip=/\\./ end=/"/ contains=@Spell
+syn region protoString start=/'/ skip=/\\./ end=/'/ contains=@Spell
+
+hi def link protoTodo Todo
+
+hi def link protoSyntax Include
+hi def link protoStructure Structure
+hi def link protoRepeat Repeat
+hi def link protoDefault Keyword
+hi def link protoExtend Keyword
+hi def link protoRPC Keyword
+hi def link protoType Type
+hi def link protoTypedef Typedef
+hi def link protoBool Boolean
+
+hi def link protoInt Number
+hi def link protoFloat Float
+hi def link protoComment Comment
+hi def link protoString String
+
+let b:current_syntax = "proto"
diff --git a/runtime/syntax/protocols.vim b/runtime/syntax/protocols.vim
new file mode 100644
index 0000000..f31ca5a
--- /dev/null
+++ b/runtime/syntax/protocols.vim
@@ -0,0 +1,44 @@
+" Vim syntax file
+" Language: protocols(5) - Internet protocols definition file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match protocolsBegin display '^'
+ \ nextgroup=protocolsName,protocolsComment
+
+syn match protocolsName contained display '[[:graph:]]\+'
+ \ nextgroup=protocolsPort skipwhite
+
+syn match protocolsPort contained display '\d\+'
+ \ nextgroup=protocolsAliases,protocolsComment
+ \ skipwhite
+
+syn match protocolsAliases contained display '\S\+'
+ \ nextgroup=protocolsAliases,protocolsComment
+ \ skipwhite
+
+syn keyword protocolsTodo contained TODO FIXME XXX NOTE
+
+syn region protocolsComment display oneline start='#' end='$'
+ \ contains=protocolsTodo,@Spell
+
+hi def link protocolsTodo Todo
+hi def link protocolsComment Comment
+hi def link protocolsName Identifier
+hi def link protocolsPort Number
+hi def link protocolsPPDiv Delimiter
+hi def link protocolsPPDivDepr Error
+hi def link protocolsProtocol Type
+hi def link protocolsAliases Macro
+
+let b:current_syntax = "protocols"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/ps1.vim b/runtime/syntax/ps1.vim
new file mode 100644
index 0000000..e8f6b2f
--- /dev/null
+++ b/runtime/syntax/ps1.vim
@@ -0,0 +1,182 @@
+" Vim syntax file
+" Language: Windows PowerShell
+" URL: https://github.com/PProvost/vim-ps1
+" Last Change: 2020 Nov 24
+"
+" The following settings are available for tuning syntax highlighting:
+" let ps1_nofold_blocks = 1
+" let ps1_nofold_sig = 1
+" let ps1_nofold_region = 1
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" Operators contain dashes
+setlocal iskeyword+=-
+
+" PowerShell doesn't care about case
+syn case ignore
+
+" Sync-ing method
+syn sync minlines=100
+
+" Certain tokens can't appear at the top level of the document
+syn cluster ps1NotTop contains=@ps1Comment,ps1CDocParam,ps1FunctionDeclaration
+
+" Comments and special comment words
+syn keyword ps1CommentTodo TODO FIXME XXX TBD HACK NOTE contained
+syn match ps1CDocParam /.*/ contained
+syn match ps1CommentDoc /^\s*\zs\.\w\+\>/ nextgroup=ps1CDocParam contained
+syn match ps1CommentDoc /#\s*\zs\.\w\+\>/ nextgroup=ps1CDocParam contained
+syn match ps1Comment /#.*/ contains=ps1CommentTodo,ps1CommentDoc,@Spell
+syn region ps1Comment start="<#" end="#>" contains=ps1CommentTodo,ps1CommentDoc,@Spell
+
+" Language keywords and elements
+syn keyword ps1Conditional if else elseif switch default
+syn keyword ps1Repeat while for do until break continue foreach in
+syn match ps1Repeat /\<foreach\>/ nextgroup=ps1Block skipwhite
+syn match ps1Keyword /\<while\>/ nextgroup=ps1Block skipwhite
+syn match ps1Keyword /\<where\>/ nextgroup=ps1Block skipwhite
+
+syn keyword ps1Exception begin process end exit inlinescript parallel sequence
+syn keyword ps1Keyword try catch finally throw
+syn keyword ps1Keyword return filter in trap param data dynamicparam
+syn keyword ps1Constant $true $false $null
+syn match ps1Constant +\$?+
+syn match ps1Constant +\$_+
+syn match ps1Constant +\$\$+
+syn match ps1Constant +\$^+
+
+" Keywords reserved for future use
+syn keyword ps1Keyword class define from using var
+
+" Function declarations
+syn keyword ps1Keyword function nextgroup=ps1Function skipwhite
+syn keyword ps1Keyword filter nextgroup=ps1Function skipwhite
+syn keyword ps1Keyword workflow nextgroup=ps1Function skipwhite
+syn keyword ps1Keyword configuration nextgroup=ps1Function skipwhite
+syn keyword ps1Keyword class nextgroup=ps1Function skipwhite
+syn keyword ps1Keyword enum nextgroup=ps1Function skipwhite
+
+" Function declarations and invocations
+syn match ps1Cmdlet /\v(add|clear|close|copy|enter|exit|find|format|get|hide|join|lock|move|new|open|optimize|pop|push|redo|remove|rename|reset|search|select|Set|show|skip|split|step|switch|undo|unlock|watch)(-\w+)+/ contained
+syn match ps1Cmdlet /\v(connect|disconnect|read|receive|send|write)(-\w+)+/ contained
+syn match ps1Cmdlet /\v(backup|checkpoint|compare|compress|convert|convertfrom|convertto|dismount|edit|expand|export|group|import|initialize|limit|merge|mount|out|publish|restore|save|sync|unpublish|update)(-\w+)+/ contained
+syn match ps1Cmdlet /\v(debug|measure|ping|repair|resolve|test|trace)(-\w+)+/ contained
+syn match ps1Cmdlet /\v(approve|assert|build|complete|confirm|deny|deploy|disable|enable|install|invoke|register|request|restart|resume|start|stop|submit|suspend|uninstall|unregister|wait)(-\w+)+/ contained
+syn match ps1Cmdlet /\v(block|grant|protect|revoke|unblock|unprotect)(-\w+)+/ contained
+syn match ps1Cmdlet /\v(use)(-\w+)+/ contained
+
+" Other functions
+syn match ps1Function /\w\+\(-\w\+\)\+/ contains=ps1Cmdlet
+
+" Type declarations
+syn match ps1Type /\[[a-z_][a-z0-9_.,\[\]]\+\]/
+
+" Variable references
+syn match ps1ScopeModifier /\(global:\|local:\|private:\|script:\)/ contained
+syn match ps1Variable /\$\w\+\(:\w\+\)\?/ contains=ps1ScopeModifier
+syn match ps1Variable /\${\w\+\(:\?[[:alnum:]_()]\+\)\?}/ contains=ps1ScopeModifier
+
+" Operators
+syn keyword ps1Operator -eq -ne -ge -gt -lt -le -like -notlike -match -notmatch -replace -split -contains -notcontains
+syn keyword ps1Operator -ieq -ine -ige -igt -ile -ilt -ilike -inotlike -imatch -inotmatch -ireplace -isplit -icontains -inotcontains
+syn keyword ps1Operator -ceq -cne -cge -cgt -clt -cle -clike -cnotlike -cmatch -cnotmatch -creplace -csplit -ccontains -cnotcontains
+syn keyword ps1Operator -in -notin
+syn keyword ps1Operator -is -isnot -as -join
+syn keyword ps1Operator -and -or -not -xor -band -bor -bnot -bxor
+syn keyword ps1Operator -f
+syn match ps1Operator /!/
+syn match ps1Operator /=/
+syn match ps1Operator /+=/
+syn match ps1Operator /-=/
+syn match ps1Operator /\*=/
+syn match ps1Operator /\/=/
+syn match ps1Operator /%=/
+syn match ps1Operator /+/
+syn match ps1Operator /-\(\s\|\d\|\.\|\$\|(\)\@=/
+syn match ps1Operator /\*/
+syn match ps1Operator /\//
+syn match ps1Operator /|/
+syn match ps1Operator /%/
+syn match ps1Operator /&/
+syn match ps1Operator /::/
+syn match ps1Operator /,/
+syn match ps1Operator /\(^\|\s\)\@<=\. \@=/
+
+" Regular Strings
+" These aren't precisely correct and could use some work
+syn region ps1String start=/"/ skip=/`"/ end=/"/ contains=@ps1StringSpecial,@Spell
+syn region ps1String start=/'/ skip=/''/ end=/'/
+
+" Here-Strings
+syn region ps1String start=/@"$/ end=/^"@/ contains=@ps1StringSpecial,@Spell
+syn region ps1String start=/@'$/ end=/^'@/
+
+" Interpolation
+syn match ps1Escape /`./
+syn region ps1Interpolation matchgroup=ps1InterpolationDelimiter start="$(" end=")" contained contains=ALLBUT,@ps1NotTop
+syn region ps1NestedParentheses start="(" skip="\\\\\|\\)" matchgroup=ps1Interpolation end=")" transparent contained
+syn cluster ps1StringSpecial contains=ps1Escape,ps1Interpolation,ps1Variable,ps1Boolean,ps1Constant,ps1BuiltIn,@Spell
+
+" Numbers
+syn match ps1Number "\(\<\|-\)\@<=\(0[xX]\x\+\|\d\+\)\([KMGTP][B]\)\=\(\>\|-\)\@="
+syn match ps1Number "\(\(\<\|-\)\@<=\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[dD]\="
+syn match ps1Number "\<\d\+[eE][-+]\=\d\+[dD]\=\>"
+syn match ps1Number "\<\d\+\([eE][-+]\=\d\+\)\=[dD]\>"
+
+" Constants
+syn match ps1Boolean "$\%(true\|false\)\>"
+syn match ps1Constant /\$null\>/
+syn match ps1BuiltIn "$^\|$?\|$_\|$\$"
+syn match ps1BuiltIn "$\%(args\|error\|foreach\|home\|input\)\>"
+syn match ps1BuiltIn "$\%(match\(es\)\?\|myinvocation\|host\|lastexitcode\)\>"
+syn match ps1BuiltIn "$\%(ofs\|shellid\|stacktrace\)\>"
+
+" Named Switch
+syn match ps1Label /\s-\w\+/
+
+" Folding blocks
+if !exists('g:ps1_nofold_blocks')
+ syn region ps1Block start=/{/ end=/}/ transparent fold
+endif
+
+if !exists('g:ps1_nofold_region')
+ syn region ps1Region start=/#region/ end=/#endregion/ transparent fold keepend extend
+endif
+
+if !exists('g:ps1_nofold_sig')
+ syn region ps1Signature start=/# SIG # Begin signature block/ end=/# SIG # End signature block/ transparent fold
+endif
+
+" Setup default color highlighting
+hi def link ps1Number Number
+hi def link ps1Block Block
+hi def link ps1Region Region
+hi def link ps1Exception Exception
+hi def link ps1Constant Constant
+hi def link ps1String String
+hi def link ps1Escape SpecialChar
+hi def link ps1InterpolationDelimiter Delimiter
+hi def link ps1Conditional Conditional
+hi def link ps1Cmdlet Function
+hi def link ps1Function Identifier
+hi def link ps1Variable Identifier
+hi def link ps1Boolean Boolean
+hi def link ps1Constant Constant
+hi def link ps1BuiltIn StorageClass
+hi def link ps1Type Type
+hi def link ps1ScopeModifier StorageClass
+hi def link ps1Comment Comment
+hi def link ps1CommentTodo Todo
+hi def link ps1CommentDoc Tag
+hi def link ps1CDocParam Identifier
+hi def link ps1Operator Operator
+hi def link ps1Repeat Repeat
+hi def link ps1RepeatAndCmdlet Repeat
+hi def link ps1Keyword Keyword
+hi def link ps1KeywordAndCmdlet Keyword
+hi def link ps1Label Label
+
+let b:current_syntax = "ps1"
diff --git a/runtime/syntax/ps1xml.vim b/runtime/syntax/ps1xml.vim
new file mode 100644
index 0000000..6ca9ed0
--- /dev/null
+++ b/runtime/syntax/ps1xml.vim
@@ -0,0 +1,51 @@
+" Vim syntax file
+" Language: Windows PowerShell
+" URL: https://github.com/PProvost/vim-ps1
+" Last Change: 2013 Jun 24
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:ps1xml_cpo_save = &cpo
+set cpo&vim
+
+doau syntax xml
+unlet b:current_syntax
+
+syn case ignore
+syn include @ps1xmlScriptBlock <sfile>:p:h/ps1.vim
+unlet b:current_syntax
+
+syn region ps1xmlScriptBlock
+ \ matchgroup=xmlTag start="<Script>"
+ \ matchgroup=xmlEndTag end="</Script>"
+ \ fold
+ \ contains=@ps1xmlScriptBlock
+ \ keepend
+syn region ps1xmlScriptBlock
+ \ matchgroup=xmlTag start="<ScriptBlock>"
+ \ matchgroup=xmlEndTag end="</ScriptBlock>"
+ \ fold
+ \ contains=@ps1xmlScriptBlock
+ \ keepend
+syn region ps1xmlScriptBlock
+ \ matchgroup=xmlTag start="<GetScriptBlock>"
+ \ matchgroup=xmlEndTag end="</GetScriptBlock>"
+ \ fold
+ \ contains=@ps1xmlScriptBlock
+ \ keepend
+syn region ps1xmlScriptBlock
+ \ matchgroup=xmlTag start="<SetScriptBlock>"
+ \ matchgroup=xmlEndTag end="</SetScriptBlock>"
+ \ fold
+ \ contains=@ps1xmlScriptBlock
+ \ keepend
+
+syn cluster xmlRegionHook add=ps1xmlScriptBlock
+
+let b:current_syntax = "ps1xml"
+
+let &cpo = s:ps1xml_cpo_save
+unlet s:ps1xml_cpo_save
+
diff --git a/runtime/syntax/psf.vim b/runtime/syntax/psf.vim
new file mode 100644
index 0000000..0971fe9
--- /dev/null
+++ b/runtime/syntax/psf.vim
@@ -0,0 +1,91 @@
+" Vim syntax file
+" Language: Software Distributor product specification file
+" (POSIX 1387.2-1995).
+" Maintainer: Rex Barzee <rex_barzee@hp.com>
+" Last change: 25 Apr 2001
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Product specification files are case sensitive
+syn case match
+
+syn keyword psfObject bundle category control_file depot distribution
+syn keyword psfObject end file fileset host installed_software media
+syn keyword psfObject product root subproduct vendor
+
+syn match psfUnquotString +[^"# ][^#]*+ contained
+syn region psfQuotString start=+"+ skip=+\\"+ end=+"+ contained
+
+syn match psfObjTag "\<[-_+A-Z0-9a-z]\+\(\.[-_+A-Z0-9a-z]\+\)*" contained
+syn match psfAttAbbrev ",\<\(fa\|fr\|[aclqrv]\)\(<\|>\|<=\|>=\|=\|==\)[^,]\+" contained
+syn match psfObjTags "\<[-_+A-Z0-9a-z]\+\(\.[-_+A-Z0-9a-z]\+\)*\(\s\+\<[-_+A-Z0-9a-z]\+\(\.[-_+A-Z0-9a-z]\+\)*\)*" contained
+
+syn match psfNumber "\<\d\+\>" contained
+syn match psfFloat "\<\d\+\>\(\.\<\d\+\>\)*" contained
+
+syn match psfLongDate "\<\d\d\d\d\d\d\d\d\d\d\d\d\.\d\d\>" contained
+
+syn keyword psfState available configured corrupt installed transient contained
+syn keyword psfPState applied committed superseded contained
+
+syn keyword psfBoolean false true contained
+
+
+"Some of the attributes covered by attUnquotString and attQuotString:
+" architecture category_tag control_directory copyright
+" create_date description directory file_permissions install_source
+" install_type location machine_type mod_date number os_name os_release
+" os_version pose_as_os_name pose_as_os_release readme revision
+" share_link title vendor_tag
+syn region psfAttUnquotString matchgroup=psfAttrib start=~^\s*[^# ]\+\s\+[^#" ]~rs=e-1 contains=psfUnquotString,psfComment end=~$~ keepend oneline
+
+syn region psfAttQuotString matchgroup=psfAttrib start=~^\s*[^# ]\+\s\+"~rs=e-1 contains=psfQuotString,psfComment skip=~\\"~ matchgroup=psfQuotString end=~"~ keepend
+
+
+" These regions are defined in attempt to do syntax checking for some
+" of the attributes.
+syn region psfAttTag matchgroup=psfAttrib start="^\s*tag\s\+" contains=psfObjTag,psfComment end="$" keepend oneline
+
+syn region psfAttSpec matchgroup=psfAttrib start="^\s*\(ancestor\|applied_patches\|applied_to\|contents\|corequisites\|exrequisites\|prerequisites\|software_spec\|supersedes\|superseded_by\)\s\+" contains=psfObjTag,psfAttAbbrev,psfComment end="$" keepend
+
+syn region psfAttTags matchgroup=psfAttrib start="^\s*all_filesets\s\+" contains=psfObjTags,psfComment end="$" keepend
+
+syn region psfAttNumber matchgroup=psfAttrib start="^\s*\(compressed_size\|instance_id\|media_sequence_number\|sequence_number\|size\)\s\+" contains=psfNumber,psfComment end="$" keepend oneline
+
+syn region psfAttTime matchgroup=psfAttrib start="^\s*\(create_time\|ctime\|mod_time\|mtime\|timestamp\)\s\+" contains=psfNumber,psfComment end="$" keepend oneline
+
+syn region psfAttFloat matchgroup=psfAttrib start="^\s*\(data_model_revision\|layout_version\)\s\+" contains=psfFloat,psfComment end="$" keepend oneline
+
+syn region psfAttLongDate matchgroup=psfAttrib start="^\s*install_date\s\+" contains=psfLongDate,psfComment end="$" keepend oneline
+
+syn region psfAttState matchgroup=psfAttrib start="^\s*\(state\)\s\+" contains=psfState,psfComment end="$" keepend oneline
+
+syn region psfAttPState matchgroup=psfAttrib start="^\s*\(patch_state\)\s\+" contains=psfPState,psfComment end="$" keepend oneline
+
+syn region psfAttBoolean matchgroup=psfAttrib start="^\s*\(is_kernel\|is_locatable\|is_patch\|is_protected\|is_reboot\|is_reference\|is_secure\|is_sparse\)\s\+" contains=psfBoolean,psfComment end="$" keepend oneline
+
+syn match psfComment "#.*$"
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link psfObject Statement
+hi def link psfAttrib Type
+hi def link psfQuotString String
+hi def link psfObjTag Identifier
+hi def link psfAttAbbrev PreProc
+hi def link psfObjTags Identifier
+
+hi def link psfComment Comment
+
+
+" Long descriptions and copyrights confuse the syntax highlighting, so
+" force vim to backup at least 100 lines before the top visible line
+" looking for a sync location.
+syn sync lines=100
+
+let b:current_syntax = "psf"
diff --git a/runtime/syntax/psl.vim b/runtime/syntax/psl.vim
new file mode 100644
index 0000000..ff6e833
--- /dev/null
+++ b/runtime/syntax/psl.vim
@@ -0,0 +1,83 @@
+" Vim syntax file
+" Language: Property Specification Language (PSL)
+" Maintainer: Daniel Kho <daniel.kho@logik.haus>
+" Last Changed: 2021 Apr 17 by Daniel Kho
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read in VHDL syntax files
+runtime! syntax/vhdl.vim
+unlet b:current_syntax
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" case is not significant
+syn case ignore
+
+" Add ! character to keyword recognition.
+setlocal iskeyword+=33
+
+" PSL keywords
+syn keyword pslOperator A AF AG AX
+syn keyword pslOperator E EF EG EX
+syn keyword pslOperator F G U W X X!
+syn keyword pslOperator abort always assert assume async_abort
+syn keyword pslOperator before before! before!_ before_ bit bitvector boolean
+syn keyword pslOperator clock const countones cover
+syn keyword pslOperator default
+syn keyword pslOperator ended eventually!
+syn keyword pslOperator fairness fell for forall
+syn keyword pslOperator hdltype
+syn keyword pslOperator in inf inherit isunknown
+syn keyword pslOperator mutable
+syn keyword pslOperator never next next! next_a next_a! next_e next_e! next_event next_event! next_event_a next_event_a! next_event_e next_event_e! nondet nondet_vector numeric
+syn keyword pslOperator onehot onehot0
+syn keyword pslOperator property prev
+syn keyword pslOperator report restrict restrict! rose
+syn keyword pslOperator sequence stable string strong sync_abort
+syn keyword pslOperator union until until! until!_ until_
+syn keyword pslOperator vmode vpkg vprop vunit
+syn keyword pslOperator within
+"" Common keywords with VHDL
+"syn keyword pslOperator and is not or to
+
+" PSL operators
+syn match pslOperator "=>\||=>"
+syn match pslOperator "<-\|->"
+syn match pslOperator "@"
+
+
+"Modify the following as needed. The trade-off is performance versus functionality.
+syn sync minlines=600
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link pslSpecial Special
+hi def link pslStatement Statement
+hi def link pslCharacter Character
+hi def link pslString String
+hi def link pslVector Number
+hi def link pslBoolean Number
+hi def link pslTodo Todo
+hi def link pslFixme Fixme
+hi def link pslComment Comment
+hi def link pslNumber Number
+hi def link pslTime Number
+hi def link pslType Type
+hi def link pslOperator Operator
+hi def link pslError Error
+hi def link pslAttribute Special
+hi def link pslPreProc PreProc
+
+
+let b:current_syntax = "psl"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8
diff --git a/runtime/syntax/ptcap.vim b/runtime/syntax/ptcap.vim
new file mode 100644
index 0000000..5db7bda
--- /dev/null
+++ b/runtime/syntax/ptcap.vim
@@ -0,0 +1,95 @@
+" Vim syntax file
+" Language: printcap/termcap database
+" Maintainer: Haakon Riiser <hakonrk@fys.uio.no>
+" URL: http://folk.uio.no/hakonrk/vim/syntax/ptcap.vim
+" Last Change: 2001 May 15
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Since I only highlight based on the structure of the databases, not
+" specific keywords, case sensitivity isn't required
+syn case ignore
+
+" Since everything that is not caught by the syntax patterns is assumed
+" to be an error, we start parsing 20 lines up, unless something else
+" is specified
+if exists("ptcap_minlines")
+ exe "syn sync lines=".ptcap_minlines
+else
+ syn sync lines=20
+endif
+
+" Highlight everything that isn't caught by the rules as errors,
+" except blank lines
+syn match ptcapError "^.*\S.*$"
+
+syn match ptcapLeadBlank "^\s\+" contained
+
+" `:' and `|' are delimiters for fields and names, and should not be
+" highlighted. Hence, they are linked to `NONE'
+syn match ptcapDelimiter "[:|]" contained
+
+" Escaped characters receive special highlighting
+syn match ptcapEscapedChar "\\." contained
+syn match ptcapEscapedChar "\^." contained
+syn match ptcapEscapedChar "\\\o\{3}" contained
+
+" A backslash at the end of a line will suppress the newline
+syn match ptcapLineCont "\\$" contained
+
+" A number follows the same rules as an integer in C
+syn match ptcapNumber "#\(+\|-\)\=\d\+"lc=1 contained
+syn match ptcapNumberError "#\d*[^[:digit:]:\\]"lc=1 contained
+syn match ptcapNumber "#0x\x\{1,8}"lc=1 contained
+syn match ptcapNumberError "#0x\X"me=e-1,lc=1 contained
+syn match ptcapNumberError "#0x\x\{9}"lc=1 contained
+syn match ptcapNumberError "#0x\x*[^[:xdigit:]:\\]"lc=1 contained
+
+" The `@' operator clears a flag (i.e., sets it to zero)
+" The `#' operator assigns a following number to the flag
+" The `=' operator assigns a string to the preceding flag
+syn match ptcapOperator "[@#=]" contained
+
+" Some terminal capabilities have special names like `#5' and `@1', and we
+" need special rules to match these properly
+syn match ptcapSpecialCap "\W[#@]\d" contains=ptcapDelimiter contained
+
+" If editing a termcap file, an entry in the database is terminated by
+" a (non-escaped) newline. Otherwise, it is terminated by a line which
+" does not start with a colon (:)
+if exists("b:ptcap_type") && b:ptcap_type[0] == 't'
+ syn region ptcapEntry start="^\s*[^[:space:]:]" end="[^\\]\(\\\\\)*$" end="^$" contains=ptcapNames,ptcapField,ptcapLeadBlank keepend
+else
+ syn region ptcapEntry start="^\s*[^[:space:]:]"me=e-1 end="^\s*[^[:space:]:#]"me=e-1 contains=ptcapNames,ptcapField,ptcapLeadBlank,ptcapComment
+endif
+syn region ptcapNames start="^\s*[^[:space:]:]" skip="[^\\]\(\\\\\)*\\:" end=":"me=e-1 contains=ptcapDelimiter,ptcapEscapedChar,ptcapLineCont,ptcapLeadBlank,ptcapComment keepend contained
+syn region ptcapField start=":" skip="[^\\]\(\\\\\)*\\$" end="[^\\]\(\\\\\)*:"me=e-1 end="$" contains=ptcapDelimiter,ptcapString,ptcapNumber,ptcapNumberError,ptcapOperator,ptcapLineCont,ptcapSpecialCap,ptcapLeadBlank,ptcapComment keepend contained
+syn region ptcapString matchgroup=ptcapOperator start="=" skip="[^\\]\(\\\\\)*\\:" matchgroup=ptcapDelimiter end=":"me=e-1 matchgroup=NONE end="[^\\]\(\\\\\)*[^\\]$" end="^$" contains=ptcapEscapedChar,ptcapLineCont keepend contained
+syn region ptcapComment start="^\s*#" end="$" contains=ptcapLeadBlank
+
+
+hi def link ptcapComment Comment
+hi def link ptcapDelimiter Delimiter
+" The highlighting of "ptcapEntry" should always be overridden by
+" its contents, so I use Todo highlighting to indicate that there
+" is work to be done with the syntax file if you can see it :-)
+hi def link ptcapEntry Todo
+hi def link ptcapError Error
+hi def link ptcapEscapedChar SpecialChar
+hi def link ptcapField Type
+hi def link ptcapLeadBlank NONE
+hi def link ptcapLineCont Special
+hi def link ptcapNames Label
+hi def link ptcapNumber NONE
+hi def link ptcapNumberError Error
+hi def link ptcapOperator Operator
+hi def link ptcapSpecialCap Type
+hi def link ptcapString NONE
+
+
+let b:current_syntax = "ptcap"
+
+" vim: sts=4 sw=4 ts=8
diff --git a/runtime/syntax/purifylog.vim b/runtime/syntax/purifylog.vim
new file mode 100644
index 0000000..2143d9f
--- /dev/null
+++ b/runtime/syntax/purifylog.vim
@@ -0,0 +1,106 @@
+" Vim syntax file
+" Language: purify log files
+" Maintainer: Gautam H. Mudunuri <gmudunur@informatica.com>
+" Last Change: 2003 May 11
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Purify header
+syn match purifyLogHeader "^\*\*\*\*.*$"
+
+" Informational messages
+syn match purifyLogFIU "^FIU:.*$"
+syn match purifyLogMAF "^MAF:.*$"
+syn match purifyLogMIU "^MIU:.*$"
+syn match purifyLogSIG "^SIG:.*$"
+syn match purifyLogWPF "^WPF:.*$"
+syn match purifyLogWPM "^WPM:.*$"
+syn match purifyLogWPN "^WPN:.*$"
+syn match purifyLogWPR "^WPR:.*$"
+syn match purifyLogWPW "^WPW:.*$"
+syn match purifyLogWPX "^WPX:.*$"
+
+" Warning messages
+syn match purifyLogABR "^ABR:.*$"
+syn match purifyLogBSR "^BSR:.*$"
+syn match purifyLogBSW "^BSW:.*$"
+syn match purifyLogFMR "^FMR:.*$"
+syn match purifyLogMLK "^MLK:.*$"
+syn match purifyLogMSE "^MSE:.*$"
+syn match purifyLogPAR "^PAR:.*$"
+syn match purifyLogPLK "^PLK:.*$"
+syn match purifyLogSBR "^SBR:.*$"
+syn match purifyLogSOF "^SOF:.*$"
+syn match purifyLogUMC "^UMC:.*$"
+syn match purifyLogUMR "^UMR:.*$"
+
+" Corrupting messages
+syn match purifyLogABW "^ABW:.*$"
+syn match purifyLogBRK "^BRK:.*$"
+syn match purifyLogFMW "^FMW:.*$"
+syn match purifyLogFNH "^FNH:.*$"
+syn match purifyLogFUM "^FUM:.*$"
+syn match purifyLogMRE "^MRE:.*$"
+syn match purifyLogSBW "^SBW:.*$"
+
+" Fatal messages
+syn match purifyLogCOR "^COR:.*$"
+syn match purifyLogNPR "^NPR:.*$"
+syn match purifyLogNPW "^NPW:.*$"
+syn match purifyLogZPR "^ZPR:.*$"
+syn match purifyLogZPW "^ZPW:.*$"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link purifyLogFIU purifyLogInformational
+hi def link purifyLogMAF purifyLogInformational
+hi def link purifyLogMIU purifyLogInformational
+hi def link purifyLogSIG purifyLogInformational
+hi def link purifyLogWPF purifyLogInformational
+hi def link purifyLogWPM purifyLogInformational
+hi def link purifyLogWPN purifyLogInformational
+hi def link purifyLogWPR purifyLogInformational
+hi def link purifyLogWPW purifyLogInformational
+hi def link purifyLogWPX purifyLogInformational
+
+hi def link purifyLogABR purifyLogWarning
+hi def link purifyLogBSR purifyLogWarning
+hi def link purifyLogBSW purifyLogWarning
+hi def link purifyLogFMR purifyLogWarning
+hi def link purifyLogMLK purifyLogWarning
+hi def link purifyLogMSE purifyLogWarning
+hi def link purifyLogPAR purifyLogWarning
+hi def link purifyLogPLK purifyLogWarning
+hi def link purifyLogSBR purifyLogWarning
+hi def link purifyLogSOF purifyLogWarning
+hi def link purifyLogUMC purifyLogWarning
+hi def link purifyLogUMR purifyLogWarning
+
+hi def link purifyLogABW purifyLogCorrupting
+hi def link purifyLogBRK purifyLogCorrupting
+hi def link purifyLogFMW purifyLogCorrupting
+hi def link purifyLogFNH purifyLogCorrupting
+hi def link purifyLogFUM purifyLogCorrupting
+hi def link purifyLogMRE purifyLogCorrupting
+hi def link purifyLogSBW purifyLogCorrupting
+
+hi def link purifyLogCOR purifyLogFatal
+hi def link purifyLogNPR purifyLogFatal
+hi def link purifyLogNPW purifyLogFatal
+hi def link purifyLogZPR purifyLogFatal
+hi def link purifyLogZPW purifyLogFatal
+
+hi def link purifyLogHeader Comment
+hi def link purifyLogInformational PreProc
+hi def link purifyLogWarning Type
+hi def link purifyLogCorrupting Error
+hi def link purifyLogFatal Error
+
+
+let b:current_syntax = "purifylog"
+
+" vim:ts=8
diff --git a/runtime/syntax/pyrex.vim b/runtime/syntax/pyrex.vim
new file mode 100644
index 0000000..b860658
--- /dev/null
+++ b/runtime/syntax/pyrex.vim
@@ -0,0 +1,51 @@
+" Vim syntax file
+" Language: Pyrex
+" Maintainer: Marco Barisione <marco.bari@people.it>
+" URL: http://marcobari.altervista.org/pyrex_vim.html
+" Last Change: 2009 Nov 09
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the Python syntax to start with
+runtime! syntax/python.vim
+unlet b:current_syntax
+
+" Pyrex extentions
+syn keyword pyrexStatement cdef typedef ctypedef sizeof
+syn keyword pyrexType int long short float double char object void
+syn keyword pyrexType signed unsigned
+syn keyword pyrexStructure struct union enum
+syn keyword pyrexInclude include cimport
+syn keyword pyrexAccess public private property readonly extern
+" If someome wants Python's built-ins highlighted probably he
+" also wants Pyrex's built-ins highlighted
+if exists("python_highlight_builtins") || exists("pyrex_highlight_builtins")
+ syn keyword pyrexBuiltin NULL
+endif
+
+" This deletes "from" from the keywords and re-adds it as a
+" match with lower priority than pyrexForFrom
+syn clear pythonInclude
+syn keyword pythonInclude import
+syn match pythonInclude "from"
+
+" With "for[^:]*\zsfrom" VIM does not match "for" anymore, so
+" I used the slower "\@<=" form
+syn match pyrexForFrom "\(for[^:]*\)\@<=from"
+
+" Default highlighting
+hi def link pyrexStatement Statement
+hi def link pyrexType Type
+hi def link pyrexStructure Structure
+hi def link pyrexInclude PreCondit
+hi def link pyrexAccess pyrexStatement
+if exists("python_highlight_builtins") || exists("pyrex_highlight_builtins")
+hi def link pyrexBuiltin Function
+endif
+hi def link pyrexForFrom Statement
+
+
+let b:current_syntax = "pyrex"
diff --git a/runtime/syntax/python.vim b/runtime/syntax/python.vim
new file mode 100644
index 0000000..ff58325
--- /dev/null
+++ b/runtime/syntax/python.vim
@@ -0,0 +1,340 @@
+" Vim syntax file
+" Language: Python
+" Maintainer: Zvezdan Petkovic <zpetkovic@acm.org>
+" Last Change: 2023 Feb 26
+" Credits: Neil Schemenauer <nas@python.ca>
+" Dmitry Vasiliev
+"
+" This version is a major rewrite by Zvezdan Petkovic.
+"
+" - introduced highlighting of doctests
+" - updated keywords, built-ins, and exceptions
+" - corrected regular expressions for
+"
+" * functions
+" * decorators
+" * strings
+" * escapes
+" * numbers
+" * space error
+"
+" - corrected synchronization
+" - more highlighting is ON by default, except
+" - space error highlighting is OFF by default
+"
+" Optional highlighting can be controlled using these variables.
+"
+" let python_no_builtin_highlight = 1
+" let python_no_doctest_code_highlight = 1
+" let python_no_doctest_highlight = 1
+" let python_no_exception_highlight = 1
+" let python_no_number_highlight = 1
+" let python_space_error_highlight = 1
+"
+" All the options above can be switched on together.
+"
+" let python_highlight_all = 1
+"
+" The use of Python 2 compatible syntax highlighting can be enforced.
+" The straddling code (Python 2 and 3 compatible), up to Python 3.5,
+" will be also supported.
+"
+" let python_use_python2_syntax = 1
+"
+" This option will exclude all modern Python 3.6 or higher features.
+"
+
+" quit when a syntax file was already loaded.
+if exists("b:current_syntax")
+ finish
+endif
+
+" Use of Python 2 and 3.5 or lower requested.
+if exists("python_use_python2_syntax")
+ runtime! syntax/python2.vim
+ finish
+endif
+
+" We need nocompatible mode in order to continue lines with backslashes.
+" Original setting will be restored.
+let s:cpo_save = &cpo
+set cpo&vim
+
+if exists("python_no_doctest_highlight")
+ let python_no_doctest_code_highlight = 1
+endif
+
+if exists("python_highlight_all")
+ if exists("python_no_builtin_highlight")
+ unlet python_no_builtin_highlight
+ endif
+ if exists("python_no_doctest_code_highlight")
+ unlet python_no_doctest_code_highlight
+ endif
+ if exists("python_no_doctest_highlight")
+ unlet python_no_doctest_highlight
+ endif
+ if exists("python_no_exception_highlight")
+ unlet python_no_exception_highlight
+ endif
+ if exists("python_no_number_highlight")
+ unlet python_no_number_highlight
+ endif
+ let python_space_error_highlight = 1
+endif
+
+" Keep Python keywords in alphabetical order inside groups for easy
+" comparison with the table in the 'Python Language Reference'
+" https://docs.python.org/reference/lexical_analysis.html#keywords.
+" Groups are in the order presented in NAMING CONVENTIONS in syntax.txt.
+" Exceptions come last at the end of each group (class and def below).
+"
+" The list can be checked using:
+"
+" python3 -c 'import keyword, pprint; pprint.pprint(keyword.kwlist + keyword.softkwlist, compact=True)'
+"
+syn keyword pythonStatement False None True
+syn keyword pythonStatement as assert break continue del global
+syn keyword pythonStatement lambda nonlocal pass return with yield
+syn keyword pythonStatement class def nextgroup=pythonFunction skipwhite
+syn keyword pythonConditional elif else if
+syn keyword pythonRepeat for while
+syn keyword pythonOperator and in is not or
+syn keyword pythonException except finally raise try
+syn keyword pythonInclude from import
+syn keyword pythonAsync async await
+
+" Soft keywords
+" These keywords do not mean anything unless used in the right context.
+" See https://docs.python.org/3/reference/lexical_analysis.html#soft-keywords
+" for more on this.
+syn match pythonConditional "^\s*\zscase\%(\s\+.*:.*$\)\@="
+syn match pythonConditional "^\s*\zsmatch\%(\s\+.*:\s*\%(#.*\)\=$\)\@="
+
+" Decorators
+" A dot must be allowed because of @MyClass.myfunc decorators.
+syn match pythonDecorator "@" display contained
+syn match pythonDecoratorName "@\s*\h\%(\w\|\.\)*" display contains=pythonDecorator
+
+" Python 3.5 introduced the use of the same symbol for matrix multiplication:
+" https://www.python.org/dev/peps/pep-0465/. We now have to exclude the
+" symbol from highlighting when used in that context.
+" Single line multiplication.
+syn match pythonMatrixMultiply
+ \ "\%(\w\|[])]\)\s*@"
+ \ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue
+ \ transparent
+" Multiplication continued on the next line after backslash.
+syn match pythonMatrixMultiply
+ \ "[^\\]\\\s*\n\%(\s*\.\.\.\s\)\=\s\+@"
+ \ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue
+ \ transparent
+" Multiplication in a parenthesized expression over multiple lines with @ at
+" the start of each continued line; very similar to decorators and complex.
+syn match pythonMatrixMultiply
+ \ "^\s*\%(\%(>>>\|\.\.\.\)\s\+\)\=\zs\%(\h\|\%(\h\|[[(]\).\{-}\%(\w\|[])]\)\)\s*\n\%(\s*\.\.\.\s\)\=\s\+@\%(.\{-}\n\%(\s*\.\.\.\s\)\=\s\+@\)*"
+ \ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue
+ \ transparent
+
+syn match pythonFunction "\h\w*" display contained
+
+syn match pythonComment "#.*$" contains=pythonTodo,@Spell
+syn keyword pythonTodo FIXME NOTE NOTES TODO XXX contained
+
+" Triple-quoted strings can contain doctests.
+syn region pythonString matchgroup=pythonQuotes
+ \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
+ \ contains=pythonEscape,@Spell
+syn region pythonString matchgroup=pythonTripleQuotes
+ \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend
+ \ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell
+syn region pythonRawString matchgroup=pythonQuotes
+ \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
+ \ contains=@Spell
+syn region pythonRawString matchgroup=pythonTripleQuotes
+ \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend
+ \ contains=pythonSpaceError,pythonDoctest,@Spell
+
+syn match pythonEscape +\\[abfnrtv'"\\]+ contained
+syn match pythonEscape "\\\o\{1,3}" contained
+syn match pythonEscape "\\x\x\{2}" contained
+syn match pythonEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained
+" Python allows case-insensitive Unicode IDs: http://www.unicode.org/charts/
+syn match pythonEscape "\\N{\a\+\%(\s\a\+\)*}" contained
+syn match pythonEscape "\\$"
+
+" It is very important to understand all details before changing the
+" regular expressions below or their order.
+" The word boundaries are *not* the floating-point number boundaries
+" because of a possible leading or trailing decimal point.
+" The expressions below ensure that all valid number literals are
+" highlighted, and invalid number literals are not. For example,
+"
+" - a decimal point in '4.' at the end of a line is highlighted,
+" - a second dot in 1.0.0 is not highlighted,
+" - 08 is not highlighted,
+" - 08e0 or 08j are highlighted,
+"
+" and so on, as specified in the 'Python Language Reference'.
+" https://docs.python.org/reference/lexical_analysis.html#numeric-literals
+if !exists("python_no_number_highlight")
+ " numbers (including longs and complex)
+ syn match pythonNumber "\<0[oO]\=\o\+[Ll]\=\>"
+ syn match pythonNumber "\<0[xX]\x\+[Ll]\=\>"
+ syn match pythonNumber "\<0[bB][01]\+[Ll]\=\>"
+ syn match pythonNumber "\<\%([1-9]\d*\|0\)[Ll]\=\>"
+ syn match pythonNumber "\<\d\+[jJ]\>"
+ syn match pythonNumber "\<\d\+[eE][+-]\=\d\+[jJ]\=\>"
+ syn match pythonNumber
+ \ "\<\d\+\.\%([eE][+-]\=\d\+\)\=[jJ]\=\%(\W\|$\)\@="
+ syn match pythonNumber
+ \ "\%(^\|\W\)\zs\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>"
+endif
+
+" Group the built-ins in the order in the 'Python Library Reference' for
+" easier comparison.
+" https://docs.python.org/library/constants.html
+" http://docs.python.org/library/functions.html
+" Python built-in functions are in alphabetical order.
+"
+" The list can be checked using:
+"
+" python3 -c 'import builtins, pprint; pprint.pprint(dir(builtins), compact=True)'
+"
+" The constants added by the `site` module are not listed below because they
+" should not be used in programs, only in interactive interpreter.
+" Similarly for some other attributes and functions `__`-enclosed from the
+" output of the above command.
+"
+if !exists("python_no_builtin_highlight")
+ " built-in constants
+ " 'False', 'True', and 'None' are also reserved words in Python 3
+ syn keyword pythonBuiltin False True None
+ syn keyword pythonBuiltin NotImplemented Ellipsis __debug__
+ " constants added by the `site` module
+ syn keyword pythonBuiltin quit exit copyright credits license
+ " built-in functions
+ syn keyword pythonBuiltin abs all any ascii bin bool breakpoint bytearray
+ syn keyword pythonBuiltin bytes callable chr classmethod compile complex
+ syn keyword pythonBuiltin delattr dict dir divmod enumerate eval exec
+ syn keyword pythonBuiltin filter float format frozenset getattr globals
+ syn keyword pythonBuiltin hasattr hash help hex id input int isinstance
+ syn keyword pythonBuiltin issubclass iter len list locals map max
+ syn keyword pythonBuiltin memoryview min next object oct open ord pow
+ syn keyword pythonBuiltin print property range repr reversed round set
+ syn keyword pythonBuiltin setattr slice sorted staticmethod str sum super
+ syn keyword pythonBuiltin tuple type vars zip __import__
+ " avoid highlighting attributes as builtins
+ syn match pythonAttribute /\.\h\w*/hs=s+1
+ \ contains=ALLBUT,pythonBuiltin,pythonFunction,pythonAsync
+ \ transparent
+endif
+
+" From the 'Python Library Reference' class hierarchy at the bottom.
+" http://docs.python.org/library/exceptions.html
+if !exists("python_no_exception_highlight")
+ " builtin base exceptions (used mostly as base classes for other exceptions)
+ syn keyword pythonExceptions BaseException Exception
+ syn keyword pythonExceptions ArithmeticError BufferError LookupError
+ " builtin exceptions (actually raised)
+ syn keyword pythonExceptions AssertionError AttributeError EOFError
+ syn keyword pythonExceptions FloatingPointError GeneratorExit ImportError
+ syn keyword pythonExceptions IndentationError IndexError KeyError
+ syn keyword pythonExceptions KeyboardInterrupt MemoryError
+ syn keyword pythonExceptions ModuleNotFoundError NameError
+ syn keyword pythonExceptions NotImplementedError OSError OverflowError
+ syn keyword pythonExceptions RecursionError ReferenceError RuntimeError
+ syn keyword pythonExceptions StopAsyncIteration StopIteration SyntaxError
+ syn keyword pythonExceptions SystemError SystemExit TabError TypeError
+ syn keyword pythonExceptions UnboundLocalError UnicodeDecodeError
+ syn keyword pythonExceptions UnicodeEncodeError UnicodeError
+ syn keyword pythonExceptions UnicodeTranslateError ValueError
+ syn keyword pythonExceptions ZeroDivisionError
+ " builtin exception aliases for OSError
+ syn keyword pythonExceptions EnvironmentError IOError WindowsError
+ " builtin OS exceptions in Python 3
+ syn keyword pythonExceptions BlockingIOError BrokenPipeError
+ syn keyword pythonExceptions ChildProcessError ConnectionAbortedError
+ syn keyword pythonExceptions ConnectionError ConnectionRefusedError
+ syn keyword pythonExceptions ConnectionResetError FileExistsError
+ syn keyword pythonExceptions FileNotFoundError InterruptedError
+ syn keyword pythonExceptions IsADirectoryError NotADirectoryError
+ syn keyword pythonExceptions PermissionError ProcessLookupError TimeoutError
+ " builtin warnings
+ syn keyword pythonExceptions BytesWarning DeprecationWarning FutureWarning
+ syn keyword pythonExceptions ImportWarning PendingDeprecationWarning
+ syn keyword pythonExceptions ResourceWarning RuntimeWarning
+ syn keyword pythonExceptions SyntaxWarning UnicodeWarning
+ syn keyword pythonExceptions UserWarning Warning
+endif
+
+if exists("python_space_error_highlight")
+ " trailing whitespace
+ syn match pythonSpaceError display excludenl "\s\+$"
+ " mixed tabs and spaces
+ syn match pythonSpaceError display " \+\t"
+ syn match pythonSpaceError display "\t\+ "
+endif
+
+" Do not spell doctests inside strings.
+" Notice that the end of a string, either ''', or """, will end the contained
+" doctest too. Thus, we do *not* need to have it as an end pattern.
+if !exists("python_no_doctest_highlight")
+ if !exists("python_no_doctest_code_highlight")
+ syn region pythonDoctest
+ \ start="^\s*>>>\s" end="^\s*$"
+ \ contained contains=ALLBUT,pythonDoctest,pythonFunction,@Spell
+ syn region pythonDoctestValue
+ \ start=+^\s*\%(>>>\s\|\.\.\.\s\|"""\|'''\)\@!\S\++ end="$"
+ \ contained
+ else
+ syn region pythonDoctest
+ \ start="^\s*>>>" end="^\s*$"
+ \ contained contains=@NoSpell
+ endif
+endif
+
+" Sync at the beginning of class, function, or method definition.
+syn sync match pythonSync grouphere NONE "^\%(def\|class\)\s\+\h\w*\s*[(:]"
+
+" The default highlight links. Can be overridden later.
+hi def link pythonStatement Statement
+hi def link pythonConditional Conditional
+hi def link pythonRepeat Repeat
+hi def link pythonOperator Operator
+hi def link pythonException Exception
+hi def link pythonInclude Include
+hi def link pythonAsync Statement
+hi def link pythonDecorator Define
+hi def link pythonDecoratorName Function
+hi def link pythonFunction Function
+hi def link pythonComment Comment
+hi def link pythonTodo Todo
+hi def link pythonString String
+hi def link pythonRawString String
+hi def link pythonQuotes String
+hi def link pythonTripleQuotes pythonQuotes
+hi def link pythonEscape Special
+if !exists("python_no_number_highlight")
+ hi def link pythonNumber Number
+endif
+if !exists("python_no_builtin_highlight")
+ hi def link pythonBuiltin Function
+endif
+if !exists("python_no_exception_highlight")
+ hi def link pythonExceptions Structure
+endif
+if exists("python_space_error_highlight")
+ hi def link pythonSpaceError Error
+endif
+if !exists("python_no_doctest_highlight")
+ hi def link pythonDoctest Special
+ hi def link pythonDoctestValue Define
+endif
+
+let b:current_syntax = "python"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim:set sw=2 sts=2 ts=8 noet:
diff --git a/runtime/syntax/python2.vim b/runtime/syntax/python2.vim
new file mode 100644
index 0000000..3b30eab
--- /dev/null
+++ b/runtime/syntax/python2.vim
@@ -0,0 +1,345 @@
+" Vim syntax file
+" Language: Python 2
+" Maintainer: Zvezdan Petkovic <zpetkovic@acm.org>
+" Last Change: 2016 Oct 29
+" Credits: Neil Schemenauer <nas@python.ca>
+" Dmitry Vasiliev
+"
+" This version is a major rewrite by Zvezdan Petkovic.
+"
+" - introduced highlighting of doctests
+" - updated keywords, built-ins, and exceptions
+" - corrected regular expressions for
+"
+" * functions
+" * decorators
+" * strings
+" * escapes
+" * numbers
+" * space error
+"
+" - corrected synchronization
+" - more highlighting is ON by default, except
+" - space error highlighting is OFF by default
+"
+" Optional highlighting can be controlled using these variables.
+"
+" let python_no_builtin_highlight = 1
+" let python_no_doctest_code_highlight = 1
+" let python_no_doctest_highlight = 1
+" let python_no_exception_highlight = 1
+" let python_no_number_highlight = 1
+" let python_space_error_highlight = 1
+"
+" All the options above can be switched on together.
+"
+" let python_highlight_all = 1
+"
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+" NOTE: This file is a copy of the last commit of runtime/syntax/python.vim
+" that still supported Python 2. There is support for Python 3, up to 3.5,
+" and it was kept in the file as is, because it supports the straddling code
+" (Python 2 and 3 compatible) better.
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+" quit when a syntax file was already loaded.
+if exists("b:current_syntax")
+ finish
+endif
+
+" We need nocompatible mode in order to continue lines with backslashes.
+" Original setting will be restored.
+let s:cpo_save = &cpo
+set cpo&vim
+
+if exists("python_no_doctest_highlight")
+ let python_no_doctest_code_highlight = 1
+endif
+
+if exists("python_highlight_all")
+ if exists("python_no_builtin_highlight")
+ unlet python_no_builtin_highlight
+ endif
+ if exists("python_no_doctest_code_highlight")
+ unlet python_no_doctest_code_highlight
+ endif
+ if exists("python_no_doctest_highlight")
+ unlet python_no_doctest_highlight
+ endif
+ if exists("python_no_exception_highlight")
+ unlet python_no_exception_highlight
+ endif
+ if exists("python_no_number_highlight")
+ unlet python_no_number_highlight
+ endif
+ let python_space_error_highlight = 1
+endif
+
+" Keep Python keywords in alphabetical order inside groups for easy
+" comparison with the table in the 'Python Language Reference'
+" https://docs.python.org/2/reference/lexical_analysis.html#keywords,
+" https://docs.python.org/3/reference/lexical_analysis.html#keywords.
+" Groups are in the order presented in NAMING CONVENTIONS in syntax.txt.
+" Exceptions come last at the end of each group (class and def below).
+"
+" Keywords 'with' and 'as' are new in Python 2.6
+" (use 'from __future__ import with_statement' in Python 2.5).
+"
+" Some compromises had to be made to support both Python 3 and 2.
+" We include Python 3 features, but when a definition is duplicated,
+" the last definition takes precedence.
+"
+" - 'False', 'None', and 'True' are keywords in Python 3 but they are
+" built-ins in 2 and will be highlighted as built-ins below.
+" - 'exec' is a built-in in Python 3 and will be highlighted as
+" built-in below.
+" - 'nonlocal' is a keyword in Python 3 and will be highlighted.
+" - 'print' is a built-in in Python 3 and will be highlighted as
+" built-in below (use 'from __future__ import print_function' in 2)
+" - async and await were added in Python 3.5 and are soft keywords.
+"
+syn keyword pythonStatement False None True
+syn keyword pythonStatement as assert break continue del exec global
+syn keyword pythonStatement lambda nonlocal pass print return with yield
+syn keyword pythonStatement class def nextgroup=pythonFunction skipwhite
+syn keyword pythonConditional elif else if
+syn keyword pythonRepeat for while
+syn keyword pythonOperator and in is not or
+syn keyword pythonException except finally raise try
+syn keyword pythonInclude from import
+syn keyword pythonAsync async await
+
+" Decorators (new in Python 2.4)
+" A dot must be allowed because of @MyClass.myfunc decorators.
+syn match pythonDecorator "@" display contained
+syn match pythonDecoratorName "@\s*\h\%(\w\|\.\)*" display contains=pythonDecorator
+
+" Python 3.5 introduced the use of the same symbol for matrix multiplication:
+" https://www.python.org/dev/peps/pep-0465/. We now have to exclude the
+" symbol from highlighting when used in that context.
+" Single line multiplication.
+syn match pythonMatrixMultiply
+ \ "\%(\w\|[])]\)\s*@"
+ \ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue
+ \ transparent
+" Multiplication continued on the next line after backslash.
+syn match pythonMatrixMultiply
+ \ "[^\\]\\\s*\n\%(\s*\.\.\.\s\)\=\s\+@"
+ \ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue
+ \ transparent
+" Multiplication in a parenthesized expression over multiple lines with @ at
+" the start of each continued line; very similar to decorators and complex.
+syn match pythonMatrixMultiply
+ \ "^\s*\%(\%(>>>\|\.\.\.\)\s\+\)\=\zs\%(\h\|\%(\h\|[[(]\).\{-}\%(\w\|[])]\)\)\s*\n\%(\s*\.\.\.\s\)\=\s\+@\%(.\{-}\n\%(\s*\.\.\.\s\)\=\s\+@\)*"
+ \ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue
+ \ transparent
+
+syn match pythonFunction "\h\w*" display contained
+
+syn match pythonComment "#.*$" contains=pythonTodo,@Spell
+syn keyword pythonTodo FIXME NOTE NOTES TODO XXX contained
+
+" Triple-quoted strings can contain doctests.
+syn region pythonString matchgroup=pythonQuotes
+ \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
+ \ contains=pythonEscape,@Spell
+syn region pythonString matchgroup=pythonTripleQuotes
+ \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend
+ \ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell
+syn region pythonRawString matchgroup=pythonQuotes
+ \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
+ \ contains=@Spell
+syn region pythonRawString matchgroup=pythonTripleQuotes
+ \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend
+ \ contains=pythonSpaceError,pythonDoctest,@Spell
+
+syn match pythonEscape +\\[abfnrtv'"\\]+ contained
+syn match pythonEscape "\\\o\{1,3}" contained
+syn match pythonEscape "\\x\x\{2}" contained
+syn match pythonEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained
+" Python allows case-insensitive Unicode IDs: http://www.unicode.org/charts/
+syn match pythonEscape "\\N{\a\+\%(\s\a\+\)*}" contained
+syn match pythonEscape "\\$"
+
+" It is very important to understand all details before changing the
+" regular expressions below or their order.
+" The word boundaries are *not* the floating-point number boundaries
+" because of a possible leading or trailing decimal point.
+" The expressions below ensure that all valid number literals are
+" highlighted, and invalid number literals are not. For example,
+"
+" - a decimal point in '4.' at the end of a line is highlighted,
+" - a second dot in 1.0.0 is not highlighted,
+" - 08 is not highlighted,
+" - 08e0 or 08j are highlighted,
+"
+" and so on, as specified in the 'Python Language Reference'.
+" https://docs.python.org/2/reference/lexical_analysis.html#numeric-literals
+" https://docs.python.org/3/reference/lexical_analysis.html#numeric-literals
+if !exists("python_no_number_highlight")
+ " numbers (including longs and complex)
+ syn match pythonNumber "\<0[oO]\=\o\+[Ll]\=\>"
+ syn match pythonNumber "\<0[xX]\x\+[Ll]\=\>"
+ syn match pythonNumber "\<0[bB][01]\+[Ll]\=\>"
+ syn match pythonNumber "\<\%([1-9]\d*\|0\)[Ll]\=\>"
+ syn match pythonNumber "\<\d\+[jJ]\>"
+ syn match pythonNumber "\<\d\+[eE][+-]\=\d\+[jJ]\=\>"
+ syn match pythonNumber
+ \ "\<\d\+\.\%([eE][+-]\=\d\+\)\=[jJ]\=\%(\W\|$\)\@="
+ syn match pythonNumber
+ \ "\%(^\|\W\)\zs\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>"
+endif
+
+" Group the built-ins in the order in the 'Python Library Reference' for
+" easier comparison.
+" https://docs.python.org/2/library/constants.html
+" https://docs.python.org/3/library/constants.html
+" http://docs.python.org/2/library/functions.html
+" http://docs.python.org/3/library/functions.html
+" http://docs.python.org/2/library/functions.html#non-essential-built-in-functions
+" http://docs.python.org/3/library/functions.html#non-essential-built-in-functions
+" Python built-in functions are in alphabetical order.
+if !exists("python_no_builtin_highlight")
+ " built-in constants
+ " 'False', 'True', and 'None' are also reserved words in Python 3
+ syn keyword pythonBuiltin False True None
+ syn keyword pythonBuiltin NotImplemented Ellipsis __debug__
+ " built-in functions
+ syn keyword pythonBuiltin abs all any bin bool bytearray callable chr
+ syn keyword pythonBuiltin classmethod compile complex delattr dict dir
+ syn keyword pythonBuiltin divmod enumerate eval filter float format
+ syn keyword pythonBuiltin frozenset getattr globals hasattr hash
+ syn keyword pythonBuiltin help hex id input int isinstance
+ syn keyword pythonBuiltin issubclass iter len list locals map max
+ syn keyword pythonBuiltin memoryview min next object oct open ord pow
+ syn keyword pythonBuiltin print property range repr reversed round set
+ syn keyword pythonBuiltin setattr slice sorted staticmethod str
+ syn keyword pythonBuiltin sum super tuple type vars zip __import__
+ " Python 2 only
+ syn keyword pythonBuiltin basestring cmp execfile file
+ syn keyword pythonBuiltin long raw_input reduce reload unichr
+ syn keyword pythonBuiltin unicode xrange
+ " Python 3 only
+ syn keyword pythonBuiltin ascii bytes exec
+ " non-essential built-in functions; Python 2 only
+ syn keyword pythonBuiltin apply buffer coerce intern
+ " avoid highlighting attributes as builtins
+ syn match pythonAttribute /\.\h\w*/hs=s+1
+ \ contains=ALLBUT,pythonBuiltin,pythonFunction,pythonAsync
+ \ transparent
+endif
+
+" From the 'Python Library Reference' class hierarchy at the bottom.
+" http://docs.python.org/2/library/exceptions.html
+" http://docs.python.org/3/library/exceptions.html
+if !exists("python_no_exception_highlight")
+ " builtin base exceptions (used mostly as base classes for other exceptions)
+ syn keyword pythonExceptions BaseException Exception
+ syn keyword pythonExceptions ArithmeticError BufferError
+ syn keyword pythonExceptions LookupError
+ " builtin base exceptions removed in Python 3
+ syn keyword pythonExceptions EnvironmentError StandardError
+ " builtin exceptions (actually raised)
+ syn keyword pythonExceptions AssertionError AttributeError
+ syn keyword pythonExceptions EOFError FloatingPointError GeneratorExit
+ syn keyword pythonExceptions ImportError IndentationError
+ syn keyword pythonExceptions IndexError KeyError KeyboardInterrupt
+ syn keyword pythonExceptions MemoryError NameError NotImplementedError
+ syn keyword pythonExceptions OSError OverflowError ReferenceError
+ syn keyword pythonExceptions RuntimeError StopIteration SyntaxError
+ syn keyword pythonExceptions SystemError SystemExit TabError TypeError
+ syn keyword pythonExceptions UnboundLocalError UnicodeError
+ syn keyword pythonExceptions UnicodeDecodeError UnicodeEncodeError
+ syn keyword pythonExceptions UnicodeTranslateError ValueError
+ syn keyword pythonExceptions ZeroDivisionError
+ " builtin OS exceptions in Python 3
+ syn keyword pythonExceptions BlockingIOError BrokenPipeError
+ syn keyword pythonExceptions ChildProcessError ConnectionAbortedError
+ syn keyword pythonExceptions ConnectionError ConnectionRefusedError
+ syn keyword pythonExceptions ConnectionResetError FileExistsError
+ syn keyword pythonExceptions FileNotFoundError InterruptedError
+ syn keyword pythonExceptions IsADirectoryError NotADirectoryError
+ syn keyword pythonExceptions PermissionError ProcessLookupError
+ syn keyword pythonExceptions RecursionError StopAsyncIteration
+ syn keyword pythonExceptions TimeoutError
+ " builtin exceptions deprecated/removed in Python 3
+ syn keyword pythonExceptions IOError VMSError WindowsError
+ " builtin warnings
+ syn keyword pythonExceptions BytesWarning DeprecationWarning FutureWarning
+ syn keyword pythonExceptions ImportWarning PendingDeprecationWarning
+ syn keyword pythonExceptions RuntimeWarning SyntaxWarning UnicodeWarning
+ syn keyword pythonExceptions UserWarning Warning
+ " builtin warnings in Python 3
+ syn keyword pythonExceptions ResourceWarning
+endif
+
+if exists("python_space_error_highlight")
+ " trailing whitespace
+ syn match pythonSpaceError display excludenl "\s\+$"
+ " mixed tabs and spaces
+ syn match pythonSpaceError display " \+\t"
+ syn match pythonSpaceError display "\t\+ "
+endif
+
+" Do not spell doctests inside strings.
+" Notice that the end of a string, either ''', or """, will end the contained
+" doctest too. Thus, we do *not* need to have it as an end pattern.
+if !exists("python_no_doctest_highlight")
+ if !exists("python_no_doctest_code_highlight")
+ syn region pythonDoctest
+ \ start="^\s*>>>\s" end="^\s*$"
+ \ contained contains=ALLBUT,pythonDoctest,pythonFunction,@Spell
+ syn region pythonDoctestValue
+ \ start=+^\s*\%(>>>\s\|\.\.\.\s\|"""\|'''\)\@!\S\++ end="$"
+ \ contained
+ else
+ syn region pythonDoctest
+ \ start="^\s*>>>" end="^\s*$"
+ \ contained contains=@NoSpell
+ endif
+endif
+
+" Sync at the beginning of class, function, or method definition.
+syn sync match pythonSync grouphere NONE "^\%(def\|class\)\s\+\h\w*\s*[(:]"
+
+" The default highlight links. Can be overridden later.
+hi def link pythonStatement Statement
+hi def link pythonConditional Conditional
+hi def link pythonRepeat Repeat
+hi def link pythonOperator Operator
+hi def link pythonException Exception
+hi def link pythonInclude Include
+hi def link pythonAsync Statement
+hi def link pythonDecorator Define
+hi def link pythonDecoratorName Function
+hi def link pythonFunction Function
+hi def link pythonComment Comment
+hi def link pythonTodo Todo
+hi def link pythonString String
+hi def link pythonRawString String
+hi def link pythonQuotes String
+hi def link pythonTripleQuotes pythonQuotes
+hi def link pythonEscape Special
+if !exists("python_no_number_highlight")
+ hi def link pythonNumber Number
+endif
+if !exists("python_no_builtin_highlight")
+ hi def link pythonBuiltin Function
+endif
+if !exists("python_no_exception_highlight")
+ hi def link pythonExceptions Structure
+endif
+if exists("python_space_error_highlight")
+ hi def link pythonSpaceError Error
+endif
+if !exists("python_no_doctest_highlight")
+ hi def link pythonDoctest Special
+ hi def link pythonDoctestValue Define
+endif
+
+let b:current_syntax = "python"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim:set sw=2 sts=2 ts=8 noet:
diff --git a/runtime/syntax/qb64.vim b/runtime/syntax/qb64.vim
new file mode 100644
index 0000000..a777e14
--- /dev/null
+++ b/runtime/syntax/qb64.vim
@@ -0,0 +1,409 @@
+" Vim syntax file
+" Language: QB64
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2022 Jan 21
+
+" Prelude {{{1
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" syn iskeyword set after sourcing of basic.vim
+
+syn case ignore
+
+let s:prefix = search('\c^\s*$NOPREFIX\>', 'n') ? '_\=' : '_'
+
+" Statements {{{1
+
+let s:statements =<< trim EOL " {{{2
+ acceptfiledrop
+ allowfullscreen
+ assert
+ console
+ consolecursor
+ consolefont
+ consoletitle
+ continue
+ copypalette
+ define
+ delay
+ depthbuffer
+ displayorder
+ dontblend
+ echo
+ exit\s\+\%(select\|case\)
+ finishdrop
+ freefont
+ freeimage
+ icon
+ keyclear
+ limit
+ maptriangle
+ memcopy
+ memfill
+ memfree
+ memput
+ mousehide
+ mousemove
+ mouseshow
+ printimage
+ printstring
+ putimage
+ screenclick
+ screenhide
+ screenmove
+ screenprint
+ screenshow
+ setalpha
+ sndbal
+ sndclose
+ sndlimit
+ sndloop
+ sndpause
+ sndplay
+ sndplaycopy
+ sndplayfile
+ sndraw
+ sndrawdone
+ sndsetpos
+ sndstop
+ sndvol
+ title
+EOL
+" }}}
+
+for s in s:statements
+ exe 'syn match qb64Statement "\<' .. s:prefix .. s .. '\>" contained contains=qb64Underscore'
+endfor
+
+" Functions {{{1
+
+let s:functions =<< trim EOL " {{{2
+ acos
+ acosh
+ alpha
+ alpha32
+ arccot
+ arccsc
+ arcsec
+ asin
+ asinh
+ atan2
+ atanh
+ axis
+ backgroundcolor
+ blue
+ blue32
+ button
+ buttonchange
+ ceil
+ cinp
+ commandcount
+ connected
+ connectionaddress
+ connectionaddress$
+ consoleinput
+ copyimage
+ cot
+ coth
+ cosh
+ csc
+ csch
+ cv
+ cwd$
+ d2g
+ d2r
+ defaultcolor
+ deflate$
+ desktopheight
+ desktopwidth
+ device$
+ deviceinput
+ devices
+ dir$
+ direxists
+ droppedfile
+ droppedfile$
+ errorline
+ errormessage$
+ exit
+ fileexists
+ fontheight
+ fontwidth
+ freetimer
+ g2d
+ g2r
+ green
+ green32
+ height
+ hypot
+ inclerrorfile$
+ inclerrorline
+ inflate$
+ instrrev
+ keyhit
+ keydown
+ lastaxis
+ lastbutton
+ lastwheel
+ loadfont
+ loadimage
+ mem
+ memelement
+ memexists
+ memimage
+ memnew
+ memsound
+ mk$
+ mousebutton
+ mouseinput
+ mousemovementx
+ mousemovementy
+ mousepipeopen
+ mousewheel
+ mousex
+ mousey
+ newimage
+ offset
+ openclient
+ os$
+ pi
+ pixelsize
+ printwidth
+ r2d
+ r2g
+ red
+ red32
+ readbit
+ resetbit
+ resizeheight
+ resizewidth
+ rgb
+ rgb32
+ rgba
+ rgba32
+ round
+ sec
+ sech
+ screenexists
+ screenimage
+ screenx
+ screeny
+ setbit
+ shellhide
+ shl
+ shr
+ sinh
+ sndcopy
+ sndgetpos
+ sndlen
+ sndopen
+ sndopenraw
+ sndpaused
+ sndplaying
+ sndrate
+ sndrawlen
+ startdir$
+ strcmp
+ stricmp
+ tanh
+ title$
+ togglebit
+ totaldroppedfiles
+ trim$
+ wheel
+ width
+ windowhandle
+ windowhasfocus
+EOL
+" }}}
+
+for f in s:functions
+ exe 'syn match qb64Function "\<' .. s:prefix .. f .. '\>" contains=qb64Underscore'
+endfor
+
+" Functions and statements (same name) {{{1
+
+let s:common =<< trim EOL " {{{2
+ autodisplay
+ blend
+ blink
+ capslock
+ clearcolor
+ clipboard$
+ clipboardimage
+ controlchr
+ dest
+ display
+ font
+ fullscreen
+ mapunicode
+ memget
+ numlock
+ palettecolor
+ printmode
+ resize
+ screenicon
+ scrolllock
+ source
+EOL
+" }}}
+
+for c in s:common
+ exe 'syn match qb64Statement "\<' .. s:prefix .. c .. '\>" contains=qb64Underscore contained'
+ exe 'syn match qb64Function "\<' .. s:prefix .. c .. '\>" contains=qb64Underscore'
+endfor
+
+" Keywords {{{1
+
+" Non-prefixed keywords {{{2
+" TIMER FREE
+" _DEPTH_BUFFER LOCK
+syn keyword qb64Keyword free lock
+
+let s:keywords =<< trim EOL " {{{2
+ all
+ anticlockwise
+ behind
+ clear
+ clip
+ console
+ dontwait
+ explicit
+ explicitarray
+ fillbackground
+ hardware
+ hardware1
+ hide
+ keepbackground
+ middle
+ none
+ off
+ only
+ onlybackground
+ ontop
+ openconnection
+ openhost
+ preserve
+ seamless
+ smooth
+ smoothshrunk
+ smoothstretched
+ software
+ squarepixels
+ stretch
+ toggle
+EOL
+" }}}
+
+for k in s:keywords
+ exe 'syn match qb64Keyword "\<' .. s:prefix .. k .. '\>" contains=qb64Underscore'
+endfor
+
+syn match qb64Underscore "\<_" contained conceal transparent
+
+" Source QuickBASIC syntax {{{1
+runtime! syntax/basic.vim
+
+" add after the BASIC syntax file is sourced so cluster already exists
+syn cluster basicStatements add=qb64Statement,qb64Metacommand,qb64IfMetacommand
+syn cluster basicLineIdentifier add=qb64LineLabel
+syn cluster qb64NotTop contains=@basicNotTop,qb64Metavariable
+
+syn iskeyword @,48-57,.,_,!,#,$,%,&,`
+
+" Unsupported QuickBASIC features {{{1
+" TODO: add linux only missing features
+syn keyword qb64Unsupported alias any byval calls cdecl erdev erdev$ fileattr
+syn keyword qb64Unsupported fre ioctl ioctl$ pen play setmem signal uevent
+syn keyword qb64Unsupported tron troff
+syn match qb64Unsupported "\<declare\%(\s\+\%(sub\|function\)\>\)\@="
+syn match qb64Unsupported "\<\%(date\|time\)$\ze\s*=" " statements only
+syn match qb64Unsupported "\<def\zs\s\+FN"
+syn match qb64Unsupported "\<\%(exit\|end\)\s\+def\>"
+syn match qb64Unsupported "\<width\s\+lprint\>"
+
+" Types {{{1
+syn keyword qb64Type _BIT _BYTE _FLOAT _INTEGER64 _MEM _OFFSET _UNSIGNED
+
+" Type suffixes {{{1
+if exists("basic_type_suffixes")
+ " TODO: handle leading word boundary and __+ prefix
+ syn match qb64TypeSuffix "\%(\a[[:alnum:]._]*\)\@<=\~\=`\%(\d\+\)\="
+ syn match qb64TypeSuffix "\%(\a[[:alnum:]._]*\)\@<=\~\=\%(%\|%%\|&\|&&\|%&\)"
+ syn match qb64TypeSuffix "\%(\a[[:alnum:]._]*\)\@<=\%(!\|##\|#\)"
+ syn match qb64TypeSuffix "\%(\a[[:alnum:]._]*\)\@<=$\%(\d\+\)\="
+endif
+
+" Numbers {{{1
+
+" Integers
+syn match qb64Number "-\=&b[01]\+&\>\="
+
+syn match qb64Number "-\=\<[01]\~\=`\>"
+syn match qb64Number "-\=\<\d\+`\d\+\>"
+
+syn match qb64Number "-\=\<\d\+\%(%%\|&&\|%&\)\>"
+syn match qb64Number "\<\d\+\~\%(%%\|&&\|%&\)\>"
+
+syn match qb64Number "-\=\<&b[01]\+\%(%%\|&&\|%&\)\>"
+syn match qb64Number "\<&b[01]\+\~\%(%%\|&&\|%&\)\>"
+
+syn match qb64Number "-\=\<&o\=\o\+\%(%%\|&&\|%&\)\>"
+syn match qb64Number "\<&o\=\o\+\~\%(%%\|&&\|%&\)\>"
+
+syn match qb64Number "-\=\<&h\x\+\%(%%\|&&\|%&\)\>"
+syn match qb64Number "\<&h\x\+\~\%(%%\|&&\|%&\)\>"
+
+" Floats
+syn match qb64Float "-\=\<\d\+\.\=\d*##\>"
+syn match qb64Float "-\=\<\.\d\+##\>"
+
+" Line numbers and labels {{{1
+syn match qb64LineLabel "\%(_\{2,}\)\=\a[[:alnum:]._]*[[:alnum:]]\ze\s*:" nextgroup=@basicStatements skipwhite contained
+
+" Metacommands {{{1
+syn match qb64Metacommand contained "$NOPREFIX\>"
+syn match qb64Metacommand contained "$ASSERTS\%(:CONSOLE\)\=\>"
+syn match qb64Metacommand contained "$CHECKING:\%(ON\|OFF\)\>"
+syn match qb64Metacommand contained "$COLOR:\%(0\|32\)\>"
+syn match qb64Metacommand contained "$CONSOLE\%(:ONLY\)\=\>"
+syn match qb64Metacommand contained "$EXEICON\s*:\s*'[^']\+'"
+syn match qb64Metacommand contained "$ERROR\>"
+syn match qb64Metacommand contained "$LET\>"
+syn match qb64Metacommand contained "$RESIZE:\%(ON\|OFF\|STRETCH\|SMOOTH\)\>"
+syn match qb64Metacommand contained "$SCREEN\%(HIDE\|SHOW\)\>"
+syn match qb64Metacommand contained "$VERSIONINFO\s*:.*"
+syn match qb64Metacommand contained "$VIRTUALKEYBOARD:\%(ON\|OFF\)\>"
+
+syn region qb64IfMetacommand contained matchgroup=qb64Metacommand start="$\%(IF\|ELSEIF\)\>" end="\<THEN\>" oneline transparent contains=qb64Metavariable
+syn match qb64Metacommand contained "$\%(ELSE\|END\s*IF\)\>"
+
+syn keyword qb64Metavariable contained defined undefined
+syn keyword qb64Metavariable contained windows win linux mac maxosx
+syn keyword qb64Metavariable contained 32bit 64bit version
+
+" Default Highlighting {{{1
+hi def link qb64Float basicFloat
+hi def link qb64Function Function
+hi def link qb64Keyword Keyword
+hi def link qb64LineLabel basicLineLabel
+hi def link qb64Metacommand PreProc
+hi def link qb64Metavariable Identifier
+hi def link qb64Number basicNumber
+hi def link qb64Statement Statement
+hi def link qb64TypeSuffix basicTypeSuffix
+hi def link qb64Type Type
+hi def link qb64Unsupported Error
+
+" Postscript {{{1
+let b:current_syntax = "qb64"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
diff --git a/runtime/syntax/qf.vim b/runtime/syntax/qf.vim
new file mode 100644
index 0000000..5c987a9
--- /dev/null
+++ b/runtime/syntax/qf.vim
@@ -0,0 +1,24 @@
+" Vim syntax file
+" Language: Quickfix window
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last change: 2001 Jan 15
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" A bunch of useful C keywords
+syn match qfFileName "^[^|]*" nextgroup=qfSeparator
+syn match qfSeparator "|" nextgroup=qfLineNr contained
+syn match qfLineNr "[^|]*" contained contains=qfError
+syn match qfError "error" contained
+
+" The default highlighting.
+hi def link qfFileName Directory
+hi def link qfLineNr LineNr
+hi def link qfError Error
+
+let b:current_syntax = "qf"
+
+" vim: ts=8
diff --git a/runtime/syntax/quake.vim b/runtime/syntax/quake.vim
new file mode 100644
index 0000000..7db5310
--- /dev/null
+++ b/runtime/syntax/quake.vim
@@ -0,0 +1,170 @@
+" Vim syntax file
+" Language: Quake[1-3] configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-06-17
+" quake_is_quake1 - the syntax is to be used for quake1 configs
+" quake_is_quake2 - the syntax is to be used for quake2 configs
+" quake_is_quake3 - the syntax is to be used for quake3 configs
+" Credits: Tomasz Kalkosinski wrote the original quake3Colors stuff
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword+=-,+
+
+syn keyword quakeTodo contained TODO FIXME XXX NOTE
+
+syn region quakeComment display oneline start='//' end='$' end=';'
+ \ keepend contains=quakeTodo,@Spell
+
+syn region quakeString display oneline start=+"+ skip=+\\\\\|\\"+
+ \ end=+"\|$+ contains=quakeNumbers,
+ \ @quakeCommands,@quake3Colors
+
+syn case ignore
+
+syn match quakeNumbers display transparent '\<-\=\d\|\.\d'
+ \ contains=quakeNumber,quakeFloat,
+ \ quakeOctalError,quakeOctal
+syn match quakeNumber contained display '\d\+\>'
+syn match quakeFloat contained display '\d\+\.\d*'
+syn match quakeFloat contained display '\.\d\+\>'
+
+if exists("quake_is_quake1") || exists("quake_is_quake2")
+ syn match quakeOctal contained display '0\o\+\>'
+ \ contains=quakeOctalZero
+ syn match quakeOctalZero contained display '\<0'
+ syn match quakeOctalError contained display '0\o*[89]\d*'
+endif
+
+syn cluster quakeCommands contains=quakeCommand,quake1Command,
+ \ quake12Command,Quake2Command,Quake23Command,
+ \ Quake3Command
+
+syn keyword quakeCommand +attack +back +forward +left +lookdown +lookup
+syn keyword quakeCommand +mlook +movedown +moveleft +moveright +moveup
+syn keyword quakeCommand +right +speed +strafe -attack -back bind
+syn keyword quakeCommand bindlist centerview clear connect cvarlist dir
+syn keyword quakeCommand disconnect dumpuser echo error exec -forward
+syn keyword quakeCommand god heartbeat joy_advancedupdate kick kill
+syn keyword quakeCommand killserver -left -lookdown -lookup map
+syn keyword quakeCommand messagemode messagemode2 -mlook modellist
+syn keyword quakeCommand -movedown -moveleft -moveright -moveup play
+syn keyword quakeCommand quit rcon reconnect record -right say say_team
+syn keyword quakeCommand screenshot serverinfo serverrecord serverstop
+syn keyword quakeCommand set sizedown sizeup snd_restart soundinfo
+syn keyword quakeCommand soundlist -speed spmap status -strafe stopsound
+syn keyword quakeCommand toggleconsole unbind unbindall userinfo pause
+syn keyword quakeCommand vid_restart viewpos wait weapnext weapprev
+
+if exists("quake_is_quake1")
+ syn keyword quake1Command sv
+endif
+
+if exists("quake_is_quake1") || exists("quake_is_quake2")
+ syn keyword quake12Command +klook alias cd impulse link load save
+ syn keyword quake12Command timerefresh changing info loading
+ syn keyword quake12Command pingservers playerlist players score
+endif
+
+if exists("quake_is_quake2")
+ syn keyword quake2Command cmd demomap +use condump download drop gamemap
+ syn keyword quake2Command give gun_model setmaster sky sv_maplist wave
+ syn keyword quake2Command cmdlist gameversiona gun_next gun_prev invdrop
+ syn keyword quake2Command inven invnext invnextp invnextw invprev
+ syn keyword quake2Command invprevp invprevw invuse menu_addressbook
+ syn keyword quake2Command menu_credits menu_dmoptions menu_game
+ syn keyword quake2Command menu_joinserver menu_keys menu_loadgame
+ syn keyword quake2Command menu_main menu_multiplayer menu_options
+ syn keyword quake2Command menu_playerconfig menu_quit menu_savegame
+ syn keyword quake2Command menu_startserver menu_video
+ syn keyword quake2Command notarget precache prog togglechat vid_front
+ syn keyword quake2Command weaplast
+endif
+
+if exists("quake_is_quake2") || exists("quake_is_quake3")
+ syn keyword quake23Command imagelist modellist path z_stats
+endif
+
+if exists("quake_is_quake3")
+ syn keyword quake3Command +info +scores +zoom addbot arena banClient
+ syn keyword quake3Command banUser callteamvote callvote changeVectors
+ syn keyword quake3Command cinematic clientinfo clientkick cmd cmdlist
+ syn keyword quake3Command condump configstrings crash cvar_restart devmap
+ syn keyword quake3Command fdir follow freeze fs_openedList Fs_pureList
+ syn keyword quake3Command Fs_referencedList gfxinfo globalservers
+ syn keyword quake3Command hunk_stats in_restart -info levelshot
+ syn keyword quake3Command loaddeferred localservers map_restart mem_info
+ syn keyword quake3Command messagemode3 messagemode4 midiinfo model music
+ syn keyword quake3Command modelist net_restart nextframe nextskin noclip
+ syn keyword quake3Command notarget ping prevframe prevskin reset restart
+ syn keyword quake3Command s_disable_a3d s_enable_a3d s_info s_list s_stop
+ syn keyword quake3Command scanservers -scores screenshotJPEG sectorlist
+ syn keyword quake3Command serverstatus seta setenv sets setu setviewpos
+ syn keyword quake3Command shaderlist showip skinlist spdevmap startOribt
+ syn keyword quake3Command stats stopdemo stoprecord systeminfo togglemenu
+ syn keyword quake3Command tcmd team teamtask teamvote tell tell_attacker
+ syn keyword quake3Command tell_target testgun testmodel testshader toggle
+ syn keyword quake3Command touchFile vminfo vmprofile vmtest vosay
+ syn keyword quake3Command vosay_team vote votell vsay vsay_team vstr
+ syn keyword quake3Command vtaunt vtell vtell_attacker vtell_target weapon
+ syn keyword quake3Command writeconfig -zoom
+ syn match quake3Command display "\<[+-]button\(\d\|1[0-4]\)\>"
+endif
+
+if exists("quake_is_quake3")
+ syn cluster quake3Colors contains=quake3Red,quake3Green,quake3Yellow,
+ \ quake3Blue,quake3Cyan,quake3Purple,quake3White,
+ \ quake3Orange,quake3Grey,quake3Black,quake3Shadow
+
+ syn region quake3Red contained start=+\^1+hs=e+1 end=+[$^"\n]+he=e-1
+ syn region quake3Green contained start=+\^2+hs=e+1 end=+[$^"\n]+he=e-1
+ syn region quake3Yellow contained start=+\^3+hs=e+1 end=+[$^"\n]+he=e-1
+ syn region quake3Blue contained start=+\^4+hs=e+1 end=+[$^"\n]+he=e-1
+ syn region quake3Cyan contained start=+\^5+hs=e+1 end=+[$^"\n]+he=e-1
+ syn region quake3Purple contained start=+\^6+hs=e+1 end=+[$^"\n]+he=e-1
+ syn region quake3White contained start=+\^7+hs=e+1 end=+[$^"\n]+he=e-1
+ syn region quake3Orange contained start=+\^8+hs=e+1 end=+[$^\"\n]+he=e-1
+ syn region quake3Grey contained start=+\^9+hs=e+1 end=+[$^"\n]+he=e-1
+ syn region quake3Black contained start=+\^0+hs=e+1 end=+[$^"\n]+he=e-1
+ syn region quake3Shadow contained start=+\^[Xx]+hs=e+1 end=+[$^"\n]+he=e-1
+endif
+
+hi def link quakeComment Comment
+hi def link quakeTodo Todo
+hi def link quakeString String
+hi def link quakeNumber Number
+hi def link quakeOctal Number
+hi def link quakeOctalZero PreProc
+hi def link quakeFloat Number
+hi def link quakeOctalError Error
+hi def link quakeCommand quakeCommands
+hi def link quake1Command quakeCommands
+hi def link quake12Command quakeCommands
+hi def link quake2Command quakeCommands
+hi def link quake23Command quakeCommands
+hi def link quake3Command quakeCommands
+hi def link quakeCommands Keyword
+
+if exists("quake_is_quake3")
+ hi quake3Red ctermfg=Red guifg=Red
+ hi quake3Green ctermfg=Green guifg=Green
+ hi quake3Yellow ctermfg=Yellow guifg=Yellow
+ hi quake3Blue ctermfg=Blue guifg=Blue
+ hi quake3Cyan ctermfg=Cyan guifg=Cyan
+ hi quake3Purple ctermfg=DarkMagenta guifg=Purple
+ hi quake3White ctermfg=White guifg=White
+ hi quake3Black ctermfg=Black guifg=Black
+ hi quake3Orange ctermfg=Brown guifg=Orange
+ hi quake3Grey ctermfg=LightGrey guifg=LightGrey
+ hi quake3Shadow cterm=underline gui=underline
+endif
+
+let b:current_syntax = "quake"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/quarto.vim b/runtime/syntax/quarto.vim
new file mode 100644
index 0000000..d5d4ee2
--- /dev/null
+++ b/runtime/syntax/quarto.vim
@@ -0,0 +1,17 @@
+" Language: Quarto (Markdown with chunks of R, Python and other languages)
+" Provisory Maintainer: Jakson Aquino <jalvesaq@gmail.com>
+" Homepage: https://github.com/jalvesaq/R-Vim-runtime
+" Last Change: Fri Feb 24, 2023 08:26AM
+"
+" The developers of tools for Quarto maintain Vim runtime files in their
+" Github repository and, if required, I will hand over the maintenance of
+" this script for them.
+
+runtime syntax/rmd.vim
+
+syn match quartoShortarg /\S\+/ contained
+syn keyword quartoShortkey var meta env pagebreak video include contained
+syn region quartoShortcode matchgroup=PreProc start='{{< ' end=' >}}' contains=quartoShortkey,quartoShortarg transparent keepend
+
+hi def link quartoShortkey Include
+hi def link quartoShortarg String
diff --git a/runtime/syntax/r.vim b/runtime/syntax/r.vim
new file mode 100644
index 0000000..9b3754a
--- /dev/null
+++ b/runtime/syntax/r.vim
@@ -0,0 +1,390 @@
+" Vim syntax file
+" Language: R (GNU S)
+" Maintainer: Jakson Aquino <jalvesaq@gmail.com>
+" Former Maintainers: Vaidotas Zemlys <zemlys@gmail.com>
+" Tom Payne <tom@tompayne.org>
+" Contributor: Johannes Ranke <jranke@uni-bremen.de>
+" Homepage: https://github.com/jalvesaq/R-Vim-runtime
+" Last Change: Thu Nov 17, 2022 10:13PM
+" Filenames: *.R *.r *.Rhistory *.Rt
+"
+" NOTE: The highlighting of R functions might be defined in
+" runtime files created by a filetype plugin, if installed.
+"
+" CONFIGURATION:
+" Syntax folding can be turned on by
+"
+" let r_syntax_folding = 1
+"
+" ROxygen highlighting can be turned off by
+"
+" let r_syntax_hl_roxygen = 0
+"
+" Some lines of code were borrowed from Zhuojun Chen.
+
+if exists("b:current_syntax")
+ finish
+endif
+
+if has("patch-7.4.1142")
+ syn iskeyword @,48-57,_,.
+else
+ setlocal iskeyword=@,48-57,_,.
+endif
+
+" The variables g:r_hl_roxygen and g:r_syn_minlines were renamed on April 8, 2017.
+if exists("g:r_hl_roxygen")
+ let g:r_syntax_hl_roxygen = g:r_hl_roxygen
+endif
+if exists("g:r_syn_minlines")
+ let g:r_syntax_minlines = g:r_syn_minlines
+endif
+
+if exists("g:r_syntax_folding") && g:r_syntax_folding
+ setlocal foldmethod=syntax
+endif
+
+let g:r_syntax_hl_roxygen = get(g:, 'r_syntax_hl_roxygen', 1)
+
+syn case match
+
+" Comment
+syn match rCommentTodo contained "\(BUG\|FIXME\|NOTE\|TODO\):"
+syn match rTodoParen contained "\(BUG\|FIXME\|NOTE\|TODO\)\s*(.\{-})\s*:" contains=rTodoKeyw,rTodoInfo transparent
+syn keyword rTodoKeyw BUG FIXME NOTE TODO contained
+syn match rTodoInfo "(\zs.\{-}\ze)" contained
+syn match rComment contains=@Spell,rCommentTodo,rTodoParen "#.*"
+
+" Roxygen
+if g:r_syntax_hl_roxygen
+ " A roxygen block can start at the beginning of a file (first version) and
+ " after a blank line (second version). It ends when a line appears that does not
+ " contain a roxygen comment. In the following comments, any line containing
+ " a roxygen comment marker (one or two hash signs # followed by a single
+ " quote ' and preceded only by whitespace) is called a roxygen line. A
+ " roxygen line containing only a roxygen comment marker, optionally followed
+ " by whitespace is called an empty roxygen line.
+
+ syn match rOCommentKey "^\s*#\{1,2}'" contained
+ syn region rOExamples start="^\s*#\{1,2}' @examples.*"rs=e+1,hs=e+1 end="^\(#\{1,2}' @.*\)\@=" end="^\(#\{1,2}'\)\@!" contained contains=rOTag fold
+
+ " R6 classes may contain roxygen lines independent of roxygen blocks
+ syn region rOR6Class start=/R6Class(/ end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError fold
+ syn match rOR6Block "#\{1,2}'.*" contains=rOTag,rOExamples,@Spell containedin=rOR6Class contained
+ syn match rOR6Block "^\s*#\{1,2}'.*" contains=rOTag,rOExamples,@Spell containedin=rOR6Class contained
+
+ " First we match all roxygen blocks as containing only a title. In case an
+ " empty roxygen line ending the title or a tag is found, this will be
+ " overridden later by the definitions of rOBlock.
+ syn match rOTitleBlock "\(\%^\|^\s*\n\)\@<=\(\s*#\{1,2}' .*\n\)\{1,}" contains=rOCommentKey,rOTitleTag
+
+ " A title as part of a block is always at the beginning of the block, i.e.
+ " either at the start of a file or after a completely empty line.
+ syn match rOTitle "\(\%^\|^\s*\n\)\@<=\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag
+ syn match rOTitleTag contained "@title"
+
+ " When a roxygen block has a title and additional content, the title
+ " consists of one or more roxygen lines (as little as possible are matched),
+ " followed either by an empty roxygen line
+ syn region rOBlock start="\(\%^\|^\s*\n\)\@<=\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold
+
+ " or by a roxygen tag (we match everything starting with @ but not @@ which is used as escape sequence for a literal @).
+ syn region rOBlock start="\(\%^\|^\s*\n\)\@<=\(\s*#\{1,2}' .*\n\)\{-}\s*#\{1,2}' @\(@\)\@!" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold
+
+ " If a block contains an @rdname, @describeIn tag, it may have paragraph breaks, but does not have a title
+ syn region rOBlockNoTitle start="\(\%^\|^\s*\n\)\@<=\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @rdname" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold
+ syn region rOBlockNoTitle start="\(\%^\|^\s*\n\)\@<=\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @describeIn" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold
+
+ " rOTag list originally generated from the lists that were available in
+ " https://github.com/klutometis/roxygen/R/rd.R and
+ " https://github.com/klutometis/roxygen/R/namespace.R
+ " using s/^ \([A-Za-z0-9]*\) = .*/ syn match rOTag contained "@\1"/
+ " Plus we need the @include tag
+
+ " rd.R
+ syn match rOTag contained "@aliases"
+ syn match rOTag contained "@author"
+ syn match rOTag contained "@backref"
+ syn match rOTag contained "@concept"
+ syn match rOTag contained "@describeIn"
+ syn match rOTag contained "@description"
+ syn match rOTag contained "@details"
+ syn match rOTag contained "@docType"
+ syn match rOTag contained "@encoding"
+ syn match rOTag contained "@evalRd"
+ syn match rOTag contained "@example"
+ syn match rOTag contained "@examples"
+ syn match rOTag contained "@family"
+ syn match rOTag contained "@field"
+ syn match rOTag contained "@format"
+ syn match rOTag contained "@inherit"
+ syn match rOTag contained "@inheritParams"
+ syn match rOTag contained "@inheritDotParams"
+ syn match rOTag contained "@inheritSection"
+ syn match rOTag contained "@keywords"
+ syn match rOTag contained "@method"
+ syn match rOTag contained "@name"
+ syn match rOTag contained "@md"
+ syn match rOTag contained "@noMd"
+ syn match rOTag contained "@noRd"
+ syn match rOTag contained "@note"
+ syn match rOTag contained "@param"
+ syn match rOTag contained "@rdname"
+ syn match rOTag contained "@rawRd"
+ syn match rOTag contained "@references"
+ syn match rOTag contained "@return"
+ syn match rOTag contained "@section"
+ syn match rOTag contained "@seealso"
+ syn match rOTag contained "@slot"
+ syn match rOTag contained "@source"
+ syn match rOTag contained "@template"
+ syn match rOTag contained "@templateVar"
+ syn match rOTag contained "@title"
+ syn match rOTag contained "@usage"
+ " namespace.R
+ syn match rOTag contained "@export"
+ syn match rOTag contained "@exportClass"
+ syn match rOTag contained "@exportMethod"
+ syn match rOTag contained "@exportPattern"
+ syn match rOTag contained "@import"
+ syn match rOTag contained "@importClassesFrom"
+ syn match rOTag contained "@importFrom"
+ syn match rOTag contained "@importMethodsFrom"
+ syn match rOTag contained "@rawNamespace"
+ syn match rOTag contained "@S3method"
+ syn match rOTag contained "@useDynLib"
+ " other
+ syn match rOTag contained "@eval"
+ syn match rOTag contained "@include"
+ syn match rOTag contained "@includeRmd"
+ syn match rOTag contained "@order"
+endif
+
+
+if &filetype == "rhelp"
+ " string enclosed in double quotes
+ syn region rString contains=rSpecial,@Spell start=/"/ skip=/\\\\\|\\"/ end=/"/
+ " string enclosed in single quotes
+ syn region rString contains=rSpecial,@Spell start=/'/ skip=/\\\\\|\\'/ end=/'/
+else
+ " string enclosed in double quotes
+ syn region rString contains=rSpecial,rStrError,@Spell start=/"/ skip=/\\\\\|\\"/ end=/"/
+ " string enclosed in single quotes
+ syn region rString contains=rSpecial,rStrError,@Spell start=/'/ skip=/\\\\\|\\'/ end=/'/
+endif
+
+syn match rStrError display contained "\\."
+
+
+" New line, carriage return, tab, backspace, bell, feed, vertical tab, backslash
+syn match rSpecial display contained "\\\(n\|r\|t\|b\|a\|f\|v\|'\|\"\)\|\\\\"
+
+" Hexadecimal and Octal digits
+syn match rSpecial display contained "\\\(x\x\{1,2}\|[0-8]\{1,3}\)"
+
+" Unicode characters
+syn match rSpecial display contained "\\u\x\{1,4}"
+syn match rSpecial display contained "\\U\x\{1,8}"
+syn match rSpecial display contained "\\u{\x\{1,4}}"
+syn match rSpecial display contained "\\U{\x\{1,8}}"
+
+" Raw string
+syn region rRawString matchgroup=rRawStrDelim start=/[rR]\z(['"]\)\z(-*\)(/ end=/)\z2\z1/ keepend
+syn region rRawString matchgroup=rRawStrDelim start=/[rR]\z(['"]\)\z(-*\){/ end=/}\z2\z1/ keepend
+syn region rRawString matchgroup=rRawStrDelim start=/[rR]\z(['"]\)\z(-*\)\[/ end=/\]\z2\z1/ keepend
+
+" Statement
+syn keyword rStatement break next return
+syn keyword rConditional if else
+syn keyword rRepeat for in repeat while
+
+" Constant (not really)
+syn keyword rConstant T F LETTERS letters month.abb month.name pi
+syn keyword rConstant R.version.string
+
+syn keyword rNumber NA_integer_ NA_real_ NA_complex_ NA_character_
+
+" Constants
+syn keyword rConstant NULL
+syn keyword rBoolean FALSE TRUE
+syn keyword rNumber NA Inf NaN
+
+" integer
+syn match rInteger "\<\d\+L"
+syn match rInteger "\<0x\([0-9]\|[a-f]\|[A-F]\)\+L"
+syn match rInteger "\<\d\+[Ee]+\=\d\+L"
+
+" number with no fractional part or exponent
+syn match rNumber "\<\d\+\>"
+" hexadecimal number
+syn match rNumber "\<0x\([0-9]\|[a-f]\|[A-F]\)\+"
+
+" floating point number with integer and fractional parts and optional exponent
+syn match rFloat "\<\d\+\.\d*\([Ee][-+]\=\d\+\)\="
+" floating point number with no integer part and optional exponent
+syn match rFloat "\<\.\d\+\([Ee][-+]\=\d\+\)\="
+" floating point number with no fractional part and optional exponent
+syn match rFloat "\<\d\+[Ee][-+]\=\d\+"
+
+" complex number
+syn match rComplex "\<\d\+i"
+syn match rComplex "\<\d\++\d\+i"
+syn match rComplex "\<0x\([0-9]\|[a-f]\|[A-F]\)\+i"
+syn match rComplex "\<\d\+\.\d*\([Ee][-+]\=\d\+\)\=i"
+syn match rComplex "\<\.\d\+\([Ee][-+]\=\d\+\)\=i"
+syn match rComplex "\<\d\+[Ee][-+]\=\d\+i"
+
+syn match rAssign '='
+syn match rOperator "&"
+syn match rOperator '-'
+syn match rOperator '\*'
+syn match rOperator '+'
+if &filetype == "quarto" || &filetype == "rmd" || &filetype == "rrst"
+ syn match rOperator "[|!<>^~`/:]"
+else
+ syn match rOperator "[|!<>^~/:]"
+endif
+syn match rOperator "%\{2}\|%\S\{-}%"
+syn match rOperator '\([!><]\)\@<=='
+syn match rOperator '=='
+syn match rOperator '|>'
+syn match rOpError '\*\{3}'
+syn match rOpError '//'
+syn match rOpError '&&&'
+syn match rOpError '|||'
+syn match rOpError '<<'
+syn match rOpError '>>'
+
+syn match rAssign "<\{1,2}-"
+syn match rAssign "->\{1,2}"
+
+" Special
+syn match rDelimiter "[,;:]"
+
+" Error
+if exists("g:r_syntax_folding")
+ syn region rRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError fold
+ syn region rRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError fold
+ syn region rRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError fold
+ syn region rSection matchgroup=Title start=/^#.*[-=#]\{4,}/ end=/^#.*[-=#]\{4,}/ms=s-2,me=s-1 transparent contains=ALL fold
+else
+ syn region rRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError
+ syn region rRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError
+ syn region rRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError
+endif
+
+syn match rError "[)\]}]"
+syn match rBraceError "[)}]" contained
+syn match rCurlyError "[)\]]" contained
+syn match rParenError "[\]}]" contained
+
+" Use Nvim-R to highlight functions dynamically if it is installed
+if !exists("g:r_syntax_fun_pattern")
+ let s:ff = split(substitute(globpath(&rtp, "R/functions.vim"), "functions.vim", "", "g"), "\n")
+ if len(s:ff) > 0
+ let g:r_syntax_fun_pattern = 0
+ else
+ let g:r_syntax_fun_pattern = 1
+ endif
+endif
+
+" Only use Nvim-R to highlight functions if they should not be highlighted
+" according to a generic pattern
+if g:r_syntax_fun_pattern == 1
+ syn match rFunction '[0-9a-zA-Z_\.]\+\s*\ze('
+else
+ " Nvim-R:
+ runtime R/functions.vim
+endif
+
+syn match rDollar display contained "\$"
+syn match rDollar display contained "@"
+
+" List elements will not be highlighted as functions:
+syn match rLstElmt "\$[a-zA-Z0-9\\._]*" contains=rDollar
+syn match rLstElmt "@[a-zA-Z0-9\\._]*" contains=rDollar
+
+" Functions that may add new objects
+syn keyword rPreProc library require attach detach source
+
+if &filetype == "rhelp"
+ syn match rHelpIdent '\\method'
+ syn match rHelpIdent '\\S4method'
+endif
+
+" Type
+syn match rType "\\"
+syn keyword rType array category character complex double function integer list logical matrix numeric vector data.frame
+
+" Name of object with spaces
+if &filetype == "rmd" || &filetype == "rrst" || &filetype == "quarto"
+ syn region rNameWSpace start="`" end="`" contains=rSpaceFun containedin=rmdrChunk
+else
+ syn region rNameWSpace start="`" end="`" contains=rSpaceFun
+endif
+
+if &filetype == "rhelp"
+ syn match rhPreProc "^#ifdef.*"
+ syn match rhPreProc "^#endif.*"
+ syn match rhSection "\\dontrun\>"
+endif
+
+if exists("r_syntax_minlines")
+ exe "syn sync minlines=" . r_syntax_minlines
+else
+ syn sync minlines=40
+endif
+
+" Define the default highlighting.
+hi def link rAssign Statement
+hi def link rBoolean Boolean
+hi def link rBraceError Error
+hi def link rComment Comment
+hi def link rTodoParen Comment
+hi def link rTodoInfo SpecialComment
+hi def link rCommentTodo Todo
+hi def link rTodoKeyw Todo
+hi def link rComplex Number
+hi def link rConditional Conditional
+hi def link rConstant Constant
+hi def link rCurlyError Error
+hi def link rDelimiter Delimiter
+hi def link rDollar SpecialChar
+hi def link rError Error
+hi def link rFloat Float
+hi def link rFunction Function
+hi def link rSpaceFun Function
+hi def link rHelpIdent Identifier
+hi def link rhPreProc PreProc
+hi def link rhSection PreCondit
+hi def link rInteger Number
+hi def link rLstElmt Normal
+hi def link rNameWSpace Normal
+hi def link rNumber Number
+hi def link rOperator Operator
+hi def link rOpError Error
+hi def link rParenError Error
+hi def link rPreProc PreProc
+hi def link rRawString String
+hi def link rRawStrDelim Delimiter
+hi def link rRepeat Repeat
+hi def link rSpecial SpecialChar
+hi def link rStatement Statement
+hi def link rString String
+hi def link rStrError Error
+hi def link rType Type
+if g:r_syntax_hl_roxygen
+ hi def link rOTitleTag Operator
+ hi def link rOTag Operator
+ hi def link rOTitleBlock Title
+ hi def link rOBlock Comment
+ hi def link rOBlockNoTitle Comment
+ hi def link rOR6Block Comment
+ hi def link rOTitle Title
+ hi def link rOCommentKey Comment
+ hi def link rOExamples SpecialComment
+endif
+
+let b:current_syntax="r"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/racc.vim b/runtime/syntax/racc.vim
new file mode 100644
index 0000000..2d4c176
--- /dev/null
+++ b/runtime/syntax/racc.vim
@@ -0,0 +1,142 @@
+" Vim default file
+" Language: Racc input file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2008-06-22
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword raccTodo contained TODO FIXME XXX NOTE
+
+syn region raccComment start='/\*' end='\*/'
+ \ contains=raccTodo,@Spell
+syn region raccComment display oneline start='#' end='$'
+ \ contains=raccTodo,@Spell
+
+syn region raccClass transparent matchgroup=raccKeyword
+ \ start='\<class\>' end='\<rule\>'he=e-4
+ \ contains=raccComment,raccPrecedence,
+ \ raccTokenDecl,raccExpect,raccOptions,raccConvert,
+ \ raccStart,
+
+syn region raccPrecedence transparent matchgroup=raccKeyword
+ \ start='\<prechigh\>' end='\<preclow\>'
+ \ contains=raccComment,raccPrecSpec
+
+syn keyword raccPrecSpec contained nonassoc left right
+ \ nextgroup=raccPrecToken,raccPrecString skipwhite
+ \ skipnl
+
+syn match raccPrecToken contained '\<\u[A-Z0-9_]*\>'
+ \ nextgroup=raccPrecToken,raccPrecString skipwhite
+ \ skipnl
+
+syn region raccPrecString matchgroup=raccPrecString start=+"+
+ \ skip=+\\\\\|\\"+ end=+"+
+ \ contains=raccSpecial
+ \ nextgroup=raccPrecToken,raccPrecString skipwhite
+ \ skipnl
+syn region raccPrecString matchgroup=raccPrecString start=+'+
+ \ skip=+\\\\\|\\'+ end=+'+ contains=raccSpecial
+ \ nextgroup=raccPrecToken,raccPrecString skipwhite
+ \ skipnl
+
+syn keyword raccTokenDecl contained token
+ \ nextgroup=raccTokenR skipwhite skipnl
+
+syn match raccTokenR contained '\<\u[A-Z0-9_]*\>'
+ \ nextgroup=raccTokenR skipwhite skipnl
+
+syn keyword raccExpect contained expect
+ \ nextgroup=raccNumber skipwhite skipnl
+
+syn match raccNumber contained '\<\d\+\>'
+
+syn keyword raccOptions contained options
+ \ nextgroup=raccOptionsR skipwhite skipnl
+
+syn keyword raccOptionsR contained omit_action_call result_var
+ \ nextgroup=raccOptionsR skipwhite skipnl
+
+syn region raccConvert transparent contained matchgroup=raccKeyword
+ \ start='\<convert\>' end='\<end\>'
+ \ contains=raccComment,raccConvToken skipwhite
+ \ skipnl
+
+syn match raccConvToken contained '\<\u[A-Z0-9_]*\>'
+ \ nextgroup=raccString skipwhite skipnl
+
+syn keyword raccStart contained start
+ \ nextgroup=raccTargetS skipwhite skipnl
+
+syn match raccTargetS contained '\<\l[a-z0-9_]*\>'
+
+syn match raccSpecial contained '\\["'\\]'
+
+syn region raccString start=+"+ skip=+\\\\\|\\"+ end=+"+
+ \ contains=raccSpecial
+syn region raccString start=+'+ skip=+\\\\\|\\'+ end=+'+
+ \ contains=raccSpecial
+
+syn region raccRules transparent matchgroup=raccKeyword start='\<rule\>'
+ \ end='\<end\>' contains=raccComment,raccString,
+ \ raccNumber,raccToken,raccTarget,raccDelimiter,
+ \ raccAction
+
+syn match raccTarget contained '\<\l[a-z0-9_]*\>'
+
+syn match raccDelimiter contained '[:|]'
+
+syn match raccToken contained '\<\u[A-Z0-9_]*\>'
+
+syn include @raccRuby syntax/ruby.vim
+
+syn region raccAction transparent matchgroup=raccDelimiter
+ \ start='{' end='}' contains=@raccRuby
+
+syn region raccHeader transparent matchgroup=raccPreProc
+ \ start='^---- header.*' end='^----'he=e-4
+ \ contains=@raccRuby
+
+syn region raccInner transparent matchgroup=raccPreProc
+ \ start='^---- inner.*' end='^----'he=e-4
+ \ contains=@raccRuby
+
+syn region raccFooter transparent matchgroup=raccPreProc
+ \ start='^---- footer.*' end='^----'he=e-4
+ \ contains=@raccRuby
+
+syn sync match raccSyncHeader grouphere raccHeader '^---- header'
+syn sync match raccSyncInner grouphere raccInner '^---- inner'
+syn sync match raccSyncFooter grouphere raccFooter '^---- footer'
+
+hi def link raccTodo Todo
+hi def link raccComment Comment
+hi def link raccPrecSpec Type
+hi def link raccPrecToken raccToken
+hi def link raccPrecString raccString
+hi def link raccTokenDecl Keyword
+hi def link raccToken Identifier
+hi def link raccTokenR raccToken
+hi def link raccExpect Keyword
+hi def link raccNumber Number
+hi def link raccOptions Keyword
+hi def link raccOptionsR Identifier
+hi def link raccConvToken raccToken
+hi def link raccStart Keyword
+hi def link raccTargetS Type
+hi def link raccSpecial special
+hi def link raccString String
+hi def link raccTarget Type
+hi def link raccDelimiter Delimiter
+hi def link raccPreProc PreProc
+hi def link raccKeyword Keyword
+
+let b:current_syntax = "racc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/racket.vim b/runtime/syntax/racket.vim
new file mode 100644
index 0000000..b1ed2b4
--- /dev/null
+++ b/runtime/syntax/racket.vim
@@ -0,0 +1,656 @@
+" Vim syntax file
+" Language: Racket
+" Maintainer: D. Ben Knoble <ben.knoble+github@gmail.com>
+" Previous Maintainer: Will Langstroth <will@langstroth.com>
+" URL: https://github.com/benknoble/vim-racket
+" Description: Contains all of the keywords in #lang racket
+" Last Change: 2022 Aug 12
+
+" Initializing:
+if exists("b:current_syntax")
+ finish
+endif
+
+" Highlight unmatched parens
+syntax match racketError ,[]})],
+
+if version < 800
+ set iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_
+else
+ " syntax iskeyword 33,35-39,42-58,60-90,94,95,97-122,126,_
+ " converted from decimal to char
+ " :s/\d\+/\=submatch(0)->str2nr()->nr2char()/g
+ " but corrected to remove duplicate _, move ^ to end
+ syntax iskeyword @,!,#-',*-:,<-Z,a-z,~,_,^
+ " expanded
+ " syntax iskeyword !,#,$,%,&,',*,+,,,-,.,/,0-9,:,<,=,>,?,@,A-Z,_,a-z,~,^
+endif
+
+" Forms in order of appearance at
+" http://docs.racket-lang.org/reference/index.html
+"
+syntax keyword racketSyntax module module* module+ require provide quote
+syntax keyword racketSyntax #%datum #%expression #%top #%variable-reference #%app
+syntax keyword racketSyntax lambda case-lambda let let* letrec
+syntax keyword racketSyntax let-values let*-values let-syntax letrec-syntax
+syntax keyword racketSyntax let-syntaxes letrec-syntaxes letrec-syntaxes+values
+syntax keyword racketSyntax local shared
+syntax keyword racketSyntax if cond and or case define else =>
+syntax keyword racketSyntax define define-values define-syntax define-syntaxes
+syntax keyword racketSyntax define-for-syntax define-require-syntax define-provide-syntax
+syntax keyword racketSyntax define-syntax-rule
+syntax keyword racketSyntax define-record-type
+syntax keyword racketSyntax begin begin0
+syntax keyword racketSyntax begin-for-syntax
+syntax keyword racketSyntax when unless
+syntax keyword racketSyntax set! set!-values
+syntax keyword racketSyntax for for/list for/vector for/hash for/hasheq for/hasheqv
+syntax keyword racketSyntax for/and for/or for/lists for/first
+syntax keyword racketSyntax for/last for/fold
+syntax keyword racketSyntax for* for*/list for*/vector for*/hash for*/hasheq for*/hasheqv
+syntax keyword racketSyntax for*/and for*/or for*/lists for*/first
+syntax keyword racketSyntax for*/last for*/fold
+syntax keyword racketSyntax for/fold/derived for*/fold/derived
+syntax keyword racketSyntax define-sequence-syntax :do-in do
+syntax keyword racketSyntax with-continuation-mark
+syntax keyword racketSyntax quasiquote unquote unquote-splicing quote-syntax
+syntax keyword racketSyntax #%top-interaction
+syntax keyword racketSyntax define-package open-package package-begin
+syntax keyword racketSyntax define* define*-values define*-syntax define*-syntaxes open*-package
+syntax keyword racketSyntax package? package-exported-identifiers package-original-identifiers
+syntax keyword racketSyntax block #%stratified-body
+
+" 8 Contracts
+" 8.2 Function contracts
+syntax keyword racketSyntax -> ->* ->i ->d case-> dynamic->* unconstrained-domain->
+
+" 8.6.1 Nested Contract Boundaries
+syntax keyword racketSyntax with-contract define/contract define-struct/contract
+syntax keyword racketSyntax invariant-assertion current-contract-region
+
+" 9 Pattern Matching
+syntax keyword racketSyntax match match* match/values define/match
+syntax keyword racketSyntax match-lambda match-lambda* match-lambda**
+syntax keyword racketSyntax match-let match-let* match-let-values match-let*-values
+syntax keyword racketSyntax match-letrec match-define match-define-values
+
+" 10.2.3 Handling Exceptions
+syntax keyword racketSyntax with-handlers with-handlers*
+
+" 10.4 Continuations
+syntax keyword racketSyntax let/cc let/ec
+
+" 10.4.1 Additional Control Operators
+syntax keyword racketSyntax % prompt control prompt-at control-at reset shift
+syntax keyword racketSyntax reset-at shift-at prompt0 reset0 control0 shift0
+syntax keyword racketSyntax prompt0-at reset0-at control0-at shift0-at
+syntax keyword racketSyntax set cupto
+
+" 11.3.2 Parameters
+syntax keyword racketSyntax parameterize parameterize*
+
+" 12.5 Writing
+syntax keyword racketSyntax write display displayln print
+syntax keyword racketSyntax fprintf printf eprintf format
+syntax keyword racketSyntax print-pair-curly-braces print-mpair-curly-braces print-unreadable
+syntax keyword racketSyntax print-graph print-struct print-box print-vector-length print-hash-table
+syntax keyword racketSyntax print-boolean-long-form print-reader-abbreviations print-as-expression print-syntax-width
+syntax keyword racketSyntax current-write-relative-directory port-write-handler port-display-handler
+syntax keyword racketSyntax port-print-handler global-port-print-handler
+
+" 13.7 Custodians
+syntax keyword racketSyntax custodian? custodian-memory-accounting-available? custodian-box?
+syntax keyword racketSyntax make-custodian custodian-shutdown-all current-custodian custodian-managed-list
+syntax keyword racketSyntax custodian-require-memory custodian-limit-memory
+syntax keyword racketSyntax make-custodian-box custodian-box-value
+
+" lambda sign
+syntax match racketSyntax /\<[\u03bb]\>/
+
+
+" Functions ==================================================================
+
+syntax keyword racketFunc boolean? not equal? eqv? eq? equal?/recur immutable?
+syntax keyword racketFunc true false symbol=? boolean=? false?
+syntax keyword racketFunc number? complex? real? rational? integer?
+syntax keyword racketFunc exact-integer? exact-nonnegative-integer?
+syntax keyword racketFunc exact-positive-integer? inexact-real?
+syntax keyword racketFunc fixnum? flonum? zero? positive? negative?
+syntax keyword racketFunc even? odd? exact? inexact?
+syntax keyword racketFunc inexact->exact exact->inexact
+
+" 3.2.2 General Arithmetic
+
+" 3.2.2.1 Arithmetic
+syntax keyword racketFunc + - * / quotient remainder quotient/remainder modulo
+syntax keyword racketFunc add1 sub1 abs max min gcd lcm round exact-round floor
+syntax keyword racketFunc ceiling truncate numerator denominator rationalize
+
+" 3.2.2.2 Number Comparison
+syntax keyword racketFunc = < <= > >=
+
+" 3.2.2.3 Powers and Roots
+syntax keyword racketFunc sqrt integer-sqrt integer-sqrt/remainder
+syntax keyword racketFunc expt exp log
+
+" 3.2.2.3 Trigonometric Functions
+syntax keyword racketFunc sin cos tan asin acos atan
+
+" 3.2.2.4 Complex Numbers
+syntax keyword racketFunc make-rectangular make-polar
+syntax keyword racketFunc real-part imag-part magnitude angle
+syntax keyword racketFunc bitwise-ior bitwise-and bitwise-xor bitwise-not
+syntax keyword racketFunc bitwise-bit-set? bitwise-bit-field arithmetic-shift
+syntax keyword racketFunc integer-length
+
+" 3.2.2.5 Random Numbers
+syntax keyword racketFunc random random-seed
+syntax keyword racketFunc make-pseudo-random-generator pseudo-random-generator?
+syntax keyword racketFunc current-pseudo-random-generator pseudo-random-generator->vector
+syntax keyword racketFunc vector->pseudo-random-generator vector->pseudo-random-generator!
+
+" 3.2.2.8 Number-String Conversions
+syntax keyword racketFunc number->string string->number real->decimal-string
+syntax keyword racketFunc integer->integer-bytes
+syntax keyword racketFunc floating-point-bytes->real real->floating-point-bytes
+syntax keyword racketFunc system-big-endian?
+
+" 3.2.2.9 Extra Constants and Functions
+syntax keyword racketFunc pi sqr sgn conjugate sinh cosh tanh order-of-magnitude
+
+" 3.2.3 Flonums
+
+" 3.2.3.1 Flonum Arithmetic
+syntax keyword racketFunc fl+ fl- fl* fl/ flabs
+syntax keyword racketFunc fl= fl< fl> fl<= fl>= flmin flmax
+syntax keyword racketFunc flround flfloor flceiling fltruncate
+syntax keyword racketFunc flsin flcos fltan flasin flacos flatan
+syntax keyword racketFunc fllog flexp flsqrt
+syntax keyword racketFunc ->fl fl->exact-integer make-flrectangular
+syntax keyword racketFunc flreal-part flimag-part
+
+" 3.2.3.2 Flonum Vectors
+syntax keyword racketFunc flvector? flvector make-flvector flvector-length
+syntax keyword racketFunc flvector-ref flvector-set! flvector-copy in-flvector
+syntax keyword racketFunc shared-flvector make-shared-flvector
+syntax keyword racketSyntax for/flvector for*/flvector
+
+" 3.2.4 Fixnums
+syntax keyword racketFunc fx+ fx- fx* fxquotient fxremainder fxmodulo fxabs
+syntax keyword racketFunc fxand fxior fxxor fxnot fxlshift fxrshift
+syntax keyword racketFunc fx= fx< fx> fx<= fx>= fxmin fxmax fx->fl fl->fx
+
+" 3.2.4.2 Fixnum Vectors
+syntax keyword racketFunc fxvector? fxvector make-fxvector fxvector-length
+syntax keyword racketFunc fxvector-ref fxvector-set! fxvector-copy in-fxvector
+syntax keyword racketFunc for/fxvector for*/fxvector
+syntax keyword racketFunc shared-fxvector make-shared-fxvector
+
+" 3.3 Strings
+syntax keyword racketFunc string? make-string string string->immutable-string string-length
+syntax keyword racketFunc string-ref string-set! substring string-copy string-copy!
+syntax keyword racketFunc string-fill! string-append string->list list->string
+syntax keyword racketFunc build-string string=? string<? string<=? string>? string>=?
+syntax keyword racketFunc string-ci=? string-ci<? string-ci<=? string-ci>? string-ci>=?
+syntax keyword racketFunc string-upcase string-downcase string-titlecase string-foldcase
+syntax keyword racketFunc string-normalize-nfd string-normalize-nfc string-normalize-nfkc
+syntax keyword racketFunc string-normalize-spaces string-trim
+syntax keyword racketFunc string-locale=? string-locale>? string-locale<?
+syntax keyword racketFunc string-locale-ci=? string-locale<=?
+syntax keyword racketFunc string-locale-upcase string-locale-downcase
+syntax keyword racketFunc string-append* string-join
+
+" 3.4 Bytestrings
+syntax keyword racketFunc bytes? make-bytes bytes bytes->immutable-bytes byte?
+syntax keyword racketFunc bytes-length bytes-ref bytes-set! subbytes bytes-copy
+syntax keyword racketFunc bytes-copy! bytes-fill! bytes-append bytes->list list->bytes
+syntax keyword racketFunc make-shared-bytes shared-bytes
+syntax keyword racketFunc bytes=? bytes<? bytes>?
+syntax keyword racketFunc bytes->string/utf-8 bytes->string/latin-1
+syntax keyword racketFunc string->bytes/locale string->bytes/latin-1 string->bytes/utf-8
+syntax keyword racketFunc string-utf-8-length bytes-utf8-ref bytes-utf-8-index
+syntax keyword racketFunc bytes-open-converter bytes-close-converter
+syntax keyword racketFunc bytes-convert bytes-convert-end bytes-converter?
+syntax keyword racketFunc locale-string-encoding
+
+" 3.5 Characters
+syntax keyword racketFunc char? char->integer integer->char
+syntax keyword racketFunc char=? char<? char<=? char>? char>=?
+syntax keyword racketFunc char-ci=? char-ci<? char-ci<=? char-ci>? char-ci>=?
+syntax keyword racketFunc char-alphabetic? char-lower-case? char-upper-case? char-title-case?
+syntax keyword racketFunc char-numeric? char-symbolic? char-punctuation? char-graphic?
+syntax keyword racketFunc char-whitespace? char-blank?
+syntax keyword racketFunc char-iso-control? char-general-category
+syntax keyword racketFunc make-known-char-range-list
+syntax keyword racketFunc char-upcase char-downcase char-titlecase char-foldcase
+
+" 3.6 Symbols
+syntax keyword racketFunc symbol? symbol-interned? symbol-unreadable?
+syntax keyword racketFunc symbol->string string->symbol
+syntax keyword racketFunc string->uninterned-symbol string->unreadable-symbol
+syntax keyword racketFunc gensym
+
+" 3.7 Regular Expressions
+syntax keyword racketFunc regexp? pregexp? byte-regexp? byte-pregexp?
+syntax keyword racketFunc regexp pregexp byte-regexp byte-pregexp
+syntax keyword racketFunc regexp-quote regexp-match regexp-match*
+syntax keyword racketFunc regexp-try-match regexp-match-positions
+syntax keyword racketFunc regexp-match-positions* regexp-match?
+syntax keyword racketFunc regexp-match-peek-positions regexp-match-peek-immediate
+syntax keyword racketFunc regexp-match-peek regexp-match-peek-positions*
+syntax keyword racketFunc regexp-match/end regexp-match-positions/end
+syntax keyword racketFunc regexp-match-peek-positions-immediat/end
+syntax keyword racketFunc regexp-split regexp-replace regexp-replace*
+syntax keyword racketFunc regexp-replace-quote
+
+" 3.8 Keywords
+syntax keyword racketFunc keyword? keyword->string string->keyword keyword<?
+
+" 3.9 Pairs and Lists
+syntax keyword racketFunc pair? null? cons car cdr null
+syntax keyword racketFunc list? list list* build-list length
+syntax keyword racketFunc list-ref list-tail append reverse map andmap ormap
+syntax keyword racketFunc for-each foldl foldr filter remove remq remv remove*
+syntax keyword racketFunc remq* remv* sort member memv memq memf
+syntax keyword racketFunc findf assoc assv assq assf
+syntax keyword racketFunc caar cadr cdar cddr caaar caadr cadar caddr cdaar
+syntax keyword racketFunc cddar cdddr caaaar caaadr caadar caaddr cadadr caddar
+syntax keyword racketFunc cadddr cdaaar cdaadr cdadar cddaar cdddar cddddr
+
+" 3.9.7 Additional List Functions and Synonyms
+" (require racket/list)
+syntax keyword racketFunc empty cons? empty? first rest
+syntax keyword racketFunc second third fourth fifth sixth seventh eighth ninth tenth
+syntax keyword racketFunc last last-pair make-list take drop split-at
+syntax keyword racketFunc take-right drop-right split-at-right add-between
+syntax keyword racketFunc append* flatten remove-duplicates filter-map
+syntax keyword racketFunc count partition append-map filter-not shuffle
+syntax keyword racketFunc argmin argmax make-reader-graph placeholder? make-placeholder
+syntax keyword racketFunc placeholder-set! placeholder-get hash-placeholder?
+syntax keyword racketFunc make-hash-placeholder make-hasheq-placeholder
+syntax keyword racketFunc make-hasheqv-placeholder make-immutable-hasheqv
+
+" 3.10 Mutable Pairs and Lists
+syntax keyword racketFunc mpair? mcons mcar mcdr
+
+" 3.11 Vectors
+syntax keyword racketFunc vector? make-vector vector vector-immutable vector-length
+syntax keyword racketFunc vector-ref vector-set! vector->list list->vector
+syntax keyword racketFunc vector->immutable-vector vector-fill! vector-copy!
+syntax keyword racketFunc vector->values build-vector vector-set*! vector-map
+syntax keyword racketFunc vector-map! vector-append vector-take vector-take-right
+syntax keyword racketFunc vector-drop vector-drop-right vector-split-at
+syntax keyword racketFunc vector-split-at-right vector-copy vector-filter
+syntax keyword racketFunc vector-filter-not vector-count vector-argmin vector-argmax
+syntax keyword racketFunc vector-member vector-memv vector-memq
+
+" 3.12 Boxes
+syntax keyword racketFunc box? box box-immutable unbox set-box!
+
+" 3.13 Hash Tables
+syntax keyword racketFunc hash? hash-equal? hash-eqv? hash-eq? hash-weak? hash
+syntax keyword racketFunc hasheq hasheqv
+syntax keyword racketFunc make-hash make-hasheqv make-hasheq make-weak-hash make-weak-hasheqv
+syntax keyword racketFunc make-weak-hasheq make-immutable-hash make-immutable-hasheqv
+syntax keyword racketFunc make-immutable-hasheq
+syntax keyword racketFunc hash-set! hash-set*! hash-set hash-set* hash-ref hash-ref!
+syntax keyword racketFunc hash-has-key? hash-update! hash-update hash-remove!
+syntax keyword racketFunc hash-remove hash-map hash-keys hash-values
+syntax keyword racketFunc hash->list hash-for-each hash-count
+syntax keyword racketFunc hash-iterate-first hash-iterate-next hash-iterate-key
+syntax keyword racketFunc hash-iterate-value hash-copy eq-hash-code eqv-hash-code
+syntax keyword racketFunc equal-hash-code equal-secondary-hash-code
+
+" 3.15 Dictionaries
+syntax keyword racketFunc dict? dict-mutable? dict-can-remove-keys? dict-can-functional-set?
+syntax keyword racketFunc dict-set! dict-set*! dict-set dict-set* dict-has-key? dict-ref
+syntax keyword racketFunc dict-ref! dict-update! dict-update dict-remove! dict-remove
+syntax keyword racketFunc dict-map dict-for-each dict-count dict-iterate-first dict-iterate-next
+syntax keyword racketFunc dict-iterate-key dict-iterate-value in-dict in-dict-keys
+syntax keyword racketFunc in-dict-values in-dict-pairs dict-keys dict-values
+syntax keyword racketFunc dict->list prop: dict prop: dict/contract dict-key-contract
+syntax keyword racketFunc dict-value-contract dict-iter-contract make-custom-hash
+syntax keyword racketFunc make-immutable-custom-hash make-weak-custom-hash
+
+" 3.16 Sets
+syntax keyword racketFunc set seteqv seteq set-empty? set-count set-member?
+syntax keyword racketFunc set-add set-remove set-union set-intersect set-subtract
+syntax keyword racketFunc set-symmetric-difference set=? subset? proper-subset?
+syntax keyword racketFunc set-map set-for-each set? set-equal? set-eqv? set-eq?
+syntax keyword racketFunc set/c in-set for/set for/seteq for/seteqv for*/set
+syntax keyword racketFunc for*/seteq for*/seteqv list->set list->seteq
+syntax keyword racketFunc list->seteqv set->list
+
+" 3.17 Procedures
+syntax keyword racketFunc procedure? apply compose compose1 procedure-rename procedure->method
+syntax keyword racketFunc keyword-apply procedure-arity procedure-arity?
+syntax keyword racketFunc procedure-arity-includes? procedure-reduce-arity
+syntax keyword racketFunc procedure-keywords make-keyword-procedure
+syntax keyword racketFunc procedure-reduce-keyword-arity procedure-struct-type?
+syntax keyword racketFunc procedure-extract-target checked-procedure-check-and-extract
+syntax keyword racketFunc primitive? primitive-closure? primitive-result-arity
+syntax keyword racketFunc identity const thunk thunk* negate curry curryr
+
+" 3.18 Void
+syntax keyword racketFunc void void?
+
+" 4.1 Defining Structure Types
+syntax keyword racketFunc struct struct-field-index define-struct define-struct define-struct/derived
+
+" 4.2 Creating Structure Types
+syntax keyword racketFunc make-struct-type make-struct-field-accessor make-struct-field-mutator
+
+" 4.3 Structure Type Properties
+syntax keyword racketFunc make-struct-type-property struct-type-property? struct-type-property-accessor-procedure?
+
+" 4.4 Copying and Updating Structures
+syntax keyword racketFunc struct-copy
+
+" 4.5 Structure Utilities
+syntax keyword racketFunc struct->vector struct? struct-type?
+syntax keyword racketFunc struct-constructor-procedure? struct-predicate-procedure? struct-accessor-procedure? struct-mutator-procedure?
+syntax keyword racketFunc prefab-struct-key make-prefab-struct prefab-key->struct-type
+
+" 4.6 Structure Type Transformer Binding
+syntax keyword racketFunc struct-info? check-struct-info? make-struct-info extract-struct-info
+syntax keyword racketFunc struct-auto-info? struct-auto-info-lists
+
+" 5.1 Creating Interfaces
+syntax keyword racketFunc interface interface*
+
+" 5.2 Creating Classes
+syntax keyword racketFunc class* class inspect
+syntax keyword racketFunc init init-field field inherit field init-rest
+syntax keyword racketFunc public public* pubment pubment* public-final public-final*
+syntax keyword racketFunc override override* overment overment* override-final override-final*
+syntax keyword racketFunc augride augride* augment augment* augment-final augment-final*
+syntax keyword racketFunc abstract inherit inherit/super inherit/inner
+syntax keyword racketFunc rename-inner rename-super
+syntax keyword racketFunc define/public define/pubment define/public-final
+syntax keyword racketFunc define/override define/overment define/override-final
+syntax keyword racketFunc define/augride define/augment define/augment-final
+syntax keyword racketFunc private* define/private
+
+" 5.2.3 Methods
+syntax keyword racketFunc class/derived
+syntax keyword racketFunc super inner define-local-member-name define-member-name
+syntax keyword racketFunc member-name-key generate-member-key member-name-key?
+syntax keyword racketFunc member-name-key=? member-name-key-hash-code
+
+" 5.3 Creating Objects
+syntax keyword racketFunc make-object instantiate new
+syntax keyword racketFunc super-make-object super-instantiate super-new
+
+"5.4 Field and Method Access
+syntax keyword racketFunc method-id send send/apply send/keyword-apply dynamic-send send*
+syntax keyword racketFunc get-field set-field! field-bound?
+syntax keyword racketFunc class-field-accessor class-field-mutator
+
+"5.4.3 Generics
+syntax keyword racketFunc generic send-generic make-generic
+
+" 8.1 Data-strucure contracts
+syntax keyword racketFunc flat-contract-with-explanation flat-named-contract
+" TODO where do any/c and none/c `value`s go?
+syntax keyword racketFunc or/c first-or/c and/c not/c =/c </c >/c <=/c >=/c
+syntax keyword racketFunc between/c real-in integer-in char-in natural-number/c
+syntax keyword racketFunc string-len/c printable/c one-of/c symbols vectorof
+syntax keyword racketFunc vector-immutableof vector/c box/c box-immutable/c listof
+syntax keyword racketFunc non-empty-listof list*of cons/c cons/dc list/c *list/c
+syntax keyword racketFunc syntax/c struct/c struct/dc parameter/c
+syntax keyword racketFunc procedure-arity-includes/c hash/c hash/dc channel/c
+syntax keyword racketFunc prompt-tag/c continuation-mark-key/c evt/c promise/c
+syntax keyword racketFunc flat-contract flat-contract-predicate suggest/c
+
+" 9.1 Multiple Values
+syntax keyword racketFunc values call-with-values
+
+" 10.2.2 Raising Exceptions
+syntax keyword racketFunc raise error raise-user-error raise-argument-error
+syntax keyword racketFunc raise-result-error raise-argument-error raise-range-error
+syntax keyword racketFunc raise-type-error raise-mismatch-error raise-arity-error
+syntax keyword racketFunc raise-syntax-error
+
+" 10.2.3 Handling Exceptions
+syntax keyword racketFunc call-with-exception-handler uncaught-exception-handler
+
+" 10.2.4 Configuring Default Handlers
+syntax keyword racketFunc error-escape-handler error-display-handler error-print-width
+syntax keyword racketFunc error-print-context-length error-values->string-handler
+syntax keyword racketFunc error-print-source-location
+
+" 10.2.5 Built-in Exception Types
+syntax keyword racketFunc exn exn:fail exn:fail:contract exn:fail:contract:arity
+syntax keyword racketFunc exn:fail:contract:divide-by-zero exn:fail:contract:non-fixnum-result
+syntax keyword racketFunc exn:fail:contract:continuation exn:fail:contract:variable
+syntax keyword racketFunc exn:fail:syntax exn:fail:syntax:unbound exn:fail:syntax:missing-module
+syntax keyword racketFunc exn:fail:read exn:fail:read:eof exn:fail:read:non-char
+syntax keyword racketFunc exn:fail:filesystem exn:fail:filesystem:exists
+syntax keyword racketFunc exn:fail:filesystem:version exn:fail:filesystem:errno
+syntax keyword racketFunc exn:fail:filesystem:missing-module
+syntax keyword racketFunc exn:fail:network exn:fail:network:errno exn:fail:out-of-memory
+syntax keyword racketFunc exn:fail:unsupported exn:fail:user
+syntax keyword racketFunc exn:break exn:break:hang-up exn:break:terminate
+
+" 10.3 Delayed Evaluation
+syntax keyword racketFunc promise? delay lazy force promise-forced? promise-running?
+
+" 10.3.1 Additional Promise Kinds
+syntax keyword racketFunc delay/name promise/name delay/strict delay/sync delay/thread delay/idle
+
+" 10.4 Continuations
+syntax keyword racketFunc call-with-continuation-prompt abort-current-continuation make-continuation-prompt-tag
+syntax keyword racketFunc default-continuation-prompt-tag call-with-current-continuation call/cc
+syntax keyword racketFunc call-with-composable-continuation call-with-escape-continuation call/ec
+syntax keyword racketFunc call-with-continuation-barrier continuation-prompt-available
+syntax keyword racketFunc continuation? continuation-prompt-tag dynamic-wind
+
+" 10.4.1 Additional Control Operators
+syntax keyword racketFunc call/prompt abort/cc call/comp abort fcontrol spawn splitter new-prompt
+
+" 11.3.2 Parameters
+syntax keyword racketFunc make-parameter make-derived-parameter parameter?
+syntax keyword racketFunc parameter-procedure=? current-parameterization
+syntax keyword racketFunc call-with-parameterization parameterization?
+
+" 14.1.1 Manipulating Paths
+syntax keyword racketFunc path? path-string? path-for-some-system? string->path path->string path->bytes
+syntax keyword racketFunc string->path-element bytes->path-element path-element->string path-element->bytes
+syntax keyword racketFunc path-convention-type system-path-convention-type build-type
+syntax keyword racketFunc build-type/convention-type
+syntax keyword racketFunc absolute-path? relative-path? complete-path?
+syntax keyword racketFunc path->complete-path path->directory-path
+syntax keyword racketFunc resolve-path cleanse-path expand-user-path simplify-path normal-case-path split-path
+syntax keyword racketFunc path-replace-suffix path-add-suffix
+
+" 14.1.2 More Path Utilities
+syntax keyword racketFunc explode-path file-name-from-path filename-extension find-relative-path normalize-path
+syntax keyword racketFunc path-element? path-only simple-form-path some-simple-path->string string->some-system-path
+
+" 15.6 Time
+syntax keyword racketFunc current-seconds current-inexact-milliseconds
+syntax keyword racketFunc seconds->date current-milliseconds
+
+
+syntax match racketDelimiter !\<\.\>!
+
+syntax cluster racketTop contains=racketSyntax,racketFunc,racketDelimiter
+
+syntax match racketConstant ,\<\*\k\+\*\>,
+syntax match racketConstant ,\<<\k\+>\>,
+
+" Non-quoted lists, and strings
+syntax region racketStruc matchgroup=racketParen start="("rs=s+1 end=")"re=e-1 contains=@racketTop
+syntax region racketStruc matchgroup=racketParen start="#("rs=s+2 end=")"re=e-1 contains=@racketTop
+syntax region racketStruc matchgroup=racketParen start="{"rs=s+1 end="}"re=e-1 contains=@racketTop
+syntax region racketStruc matchgroup=racketParen start="#{"rs=s+2 end="}"re=e-1 contains=@racketTop
+syntax region racketStruc matchgroup=racketParen start="\["rs=s+1 end="\]"re=e-1 contains=@racketTop
+syntax region racketStruc matchgroup=racketParen start="#\["rs=s+2 end="\]"re=e-1 contains=@racketTop
+
+for lit in ['hash', 'hasheq', 'hasheqv']
+ execute printf('syntax match racketLit "\<%s\>" nextgroup=@racketParen containedin=ALLBUT,.*String,.*Comment', '#'.lit)
+endfor
+
+for lit in ['rx', 'rx#', 'px', 'px#']
+ execute printf('syntax match racketRe "\<%s\>" nextgroup=@racketString containedin=ALLBUT,.*String,.*Comment,', '#'.lit)
+endfor
+
+unlet lit
+
+" Simple literals
+
+" Strings
+
+syntax match racketStringEscapeError "\\." contained display
+
+syntax match racketStringEscape "\\[abtnvfre'"\\]" contained display
+syntax match racketStringEscape "\\$" contained display
+syntax match racketStringEscape "\\\o\{1,3}\|\\x\x\{1,2}" contained display
+
+syntax match racketUStringEscape "\\u\x\{1,4}\|\\U\x\{1,8}" contained display
+syntax match racketUStringEscape "\\u\x\{4}\\u\x\{4}" contained display
+
+syntax region racketString start=/\%(\\\)\@<!"/ skip=/\\[\\"]/ end=/"/ contains=racketStringEscapeError,racketStringEscape,racketUStringEscape
+syntax region racketString start=/#"/ skip=/\\[\\"]/ end=/"/ contains=racketStringEscapeError,racketStringEscape
+
+if exists("racket_no_string_fold")
+ syn region racketString start=/#<<\z(.*\)$/ end=/^\z1$/
+else
+ syn region racketString start=/#<<\z(.*\)$/ end=/^\z1$/ fold
+endif
+
+
+syntax cluster racketTop add=racketError,racketConstant,racketStruc,racketString
+
+" Numbers
+
+" anything which doesn't match the below rules, but starts with a #d, #b, #o,
+" #x, #i, or #e, is an error
+syntax match racketNumberError "\<#[xdobie]\k*"
+
+syntax match racketContainedNumberError "\<#o\k*[^-+0-7delfinas#./@]\>"
+syntax match racketContainedNumberError "\<#b\k*[^-+01delfinas#./@]\>"
+syntax match racketContainedNumberError "\<#[ei]#[ei]"
+syntax match racketContainedNumberError "\<#[xdob]#[xdob]"
+
+" start with the simpler sorts
+syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?\>" contains=racketContainedNumberError
+syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\?\d\+/\d\+\>" contains=racketContainedNumberError
+syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\?\d\+/\d\+[-+]\d\+\(/\d\+\)\?i\>" contains=racketContainedNumberError
+
+" different possible ways of expressing complex values
+syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?i\>" contains=racketContainedNumberError
+syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?[-+]\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?i\>" contains=racketContainedNumberError
+syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\(inf\|nan\)\.[0f][-+]\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?i\>" contains=racketContainedNumberError
+syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?[-+]\(inf\|nan\)\.[0f]i\>" contains=racketContainedNumberError
+syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?@[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?\>" contains=racketContainedNumberError
+syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\(inf\|nan\)\.[0f]@[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?\>" contains=racketContainedNumberError
+syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?@[-+]\(inf\|nan\)\.[0f]\>" contains=racketContainedNumberError
+
+" hex versions of the above (separate because of the different possible exponent markers)
+syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\?\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?\>"
+syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\?\x\+/\x\+\>"
+syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\?\x\+/\x\+[-+]\x\+\(/\x\+\)\?i\>"
+
+syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?i\>"
+syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\?\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?[-+]\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?i\>"
+syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\(inf\|nan\)\.[0f][-+]\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?i\>"
+syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\?\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?[-+]\(inf\|nan\)\.[0f]i\>"
+syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\?\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?@[-+]\?\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?\>"
+syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\(inf\|nan\)\.[0f]@[-+]\?\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?\>"
+syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\?\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?@[-+]\(inf\|nan\)\.[0f]\>"
+
+" these work for any radix
+syntax match racketNumber "\<\(#[xdobie]\)\{0,2}[-+]\(inf\|nan\)\.[0f]i\?\>" contains=racketContainedNumberError
+syntax match racketNumber "\<\(#[xdobie]\)\{0,2}[-+]\(inf\|nan\)\.[0f][-+]\(inf\|nan\)\.[0f]i\>" contains=racketContainedNumberError
+syntax match racketNumber "\<\(#[xdobie]\)\{0,2}[-+]\(inf\|nan\)\.[0f]@[-+]\(inf\|nan\)\.[0f]\>" contains=racketContainedNumberError
+
+syntax keyword racketBoolean #t #f #true #false #T #F
+
+syntax match racketError "\<#\\\k*\>"
+
+syntax match racketChar "\<#\\.\w\@!"
+syntax match racketChar "\<#\\space\>"
+syntax match racketChar "\<#\\newline\>"
+syntax match racketChar "\<#\\return\>"
+syntax match racketChar "\<#\\null\?\>"
+syntax match racketChar "\<#\\backspace\>"
+syntax match racketChar "\<#\\tab\>"
+syntax match racketChar "\<#\\linefeed\>"
+syntax match racketChar "\<#\\vtab\>"
+syntax match racketChar "\<#\\page\>"
+syntax match racketChar "\<#\\rubout\>"
+syntax match racketChar "\<#\\\o\{1,3}\>"
+syntax match racketChar "\<#\\x\x\{1,2}\>"
+syntax match racketChar "\<#\\u\x\{1,6}\>"
+
+syntax cluster racketTop add=racketNumber,racketBoolean,racketChar
+
+" Command-line parsing
+syntax keyword racketExtFunc command-line current-command-line-arguments once-any help-labels multi once-each
+
+syntax match racketSyntax "#lang "
+syntax match racketExtSyntax "#:\k\+"
+
+syntax cluster racketTop add=racketExtFunc,racketExtSyntax
+
+" syntax quoting, unquoting and quasiquotation
+syntax match racketQuote "#\?['`]"
+
+syntax match racketUnquote "#,"
+syntax match racketUnquote "#,@"
+syntax match racketUnquote ","
+syntax match racketUnquote ",@"
+
+" Comments
+syntax match racketSharpBang "\%^#![ /].*" display
+syntax match racketComment /;.*$/ contains=racketTodo,racketNote,@Spell
+syntax region racketMultilineComment start=/#|/ end=/|#/ contains=racketMultilineComment,racketTodo,racketNote,@Spell
+syntax match racketFormComment "#;" nextgroup=@racketTop
+
+syntax match racketTodo /\C\<\(FIXME\|TODO\|XXX\)\ze:\?\>/ contained
+syntax match racketNote /\CNOTE\ze:\?/ contained
+
+syntax cluster racketTop add=racketQuote,racketUnquote,racketComment,racketMultilineComment,racketFormComment
+
+" Synchronization and the wrapping up...
+syntax sync match matchPlace grouphere NONE "^[^ \t]"
+" ... i.e. synchronize on a line that starts at the left margin
+
+" Define the default highlighting.
+highlight default link racketSyntax Statement
+highlight default link racketFunc Function
+
+highlight default link racketString String
+highlight default link racketStringEscape Special
+highlight default link racketUStringEscape Special
+highlight default link racketStringEscapeError Error
+highlight default link racketChar Character
+highlight default link racketBoolean Boolean
+
+highlight default link racketNumber Number
+highlight default link racketNumberError Error
+highlight default link racketContainedNumberError Error
+
+highlight default link racketQuote SpecialChar
+highlight default link racketUnquote SpecialChar
+
+highlight default link racketDelimiter Delimiter
+highlight default link racketParen Delimiter
+highlight default link racketConstant Constant
+
+highlight default link racketLit Type
+highlight default link racketRe Type
+
+highlight default link racketComment Comment
+highlight default link racketMultilineComment Comment
+highlight default link racketFormComment SpecialChar
+highlight default link racketSharpBang Comment
+highlight default link racketTodo Todo
+highlight default link racketNote SpecialComment
+highlight default link racketError Error
+
+highlight default link racketExtSyntax Type
+highlight default link racketExtFunc PreProc
+
+let b:current_syntax = "racket"
diff --git a/runtime/syntax/radiance.vim b/runtime/syntax/radiance.vim
new file mode 100644
index 0000000..c49e339
--- /dev/null
+++ b/runtime/syntax/radiance.vim
@@ -0,0 +1,142 @@
+" Vim syntax file
+" Language: Radiance Scene Description
+" Maintainer: Georg Mischler <schorsch@schorsch.com>
+" Last change: 26. April. 2001
+
+" Radiance is a lighting simulation software package written
+" by Gregory Ward-Larson ("the computer artist formerly known
+" as Greg Ward"), then at LBNL.
+"
+" http://radsite.lbl.gov/radiance/HOME.html
+"
+" Of course, there is also information available about it
+" from http://www.schorsch.com/
+
+
+" We take a minimalist approach here, highlighting just the
+" essential properties of each object, its type and ID, as well as
+" comments, external command names and the null-modifier "void".
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" all printing characters except '#' and '!' are valid in names.
+setlocal iskeyword=\",$-~
+
+" The null-modifier
+syn keyword radianceKeyword void
+
+" The different kinds of scene description object types
+" Reference types
+syn keyword radianceExtraType contained alias instance
+" Surface types
+syn keyword radianceSurfType contained ring polygon sphere bubble
+syn keyword radianceSurfType contained cone cup cylinder tube source
+" Emitting material types
+syn keyword radianceLightType contained light glow illum spotlight
+" Material types
+syn keyword radianceMatType contained mirror mist prism1 prism2
+syn keyword radianceMatType contained metal plastic trans
+syn keyword radianceMatType contained metal2 plastic2 trans2
+syn keyword radianceMatType contained metfunc plasfunc transfunc
+syn keyword radianceMatType contained metdata plasdata transdata
+syn keyword radianceMatType contained dielectric interface glass
+syn keyword radianceMatType contained BRTDfunc antimatter
+" Pattern modifier types
+syn keyword radiancePatType contained colorfunc brightfunc
+syn keyword radiancePatType contained colordata colorpict brightdata
+syn keyword radiancePatType contained colortext brighttext
+" Texture modifier types
+syn keyword radianceTexType contained texfunc texdata
+" Mixture types
+syn keyword radianceMixType contained mixfunc mixdata mixpict mixtext
+
+
+" Each type name is followed by an ID.
+" This doesn't work correctly if the id is one of the type names of the
+" same class (which is legal for radiance), in which case the id will get
+" type color as well, and the int count (or alias reference) gets id color.
+
+syn region radianceID start="\<alias\>" end="\<\k*\>" contains=radianceExtraType
+syn region radianceID start="\<instance\>" end="\<\k*\>" contains=radianceExtraType
+
+syn region radianceID start="\<source\>" end="\<\k*\>" contains=radianceSurfType
+syn region radianceID start="\<ring\>" end="\<\k*\>" contains=radianceSurfType
+syn region radianceID start="\<polygon\>" end="\<\k*\>" contains=radianceSurfType
+syn region radianceID start="\<sphere\>" end="\<\k*\>" contains=radianceSurfType
+syn region radianceID start="\<bubble\>" end="\<\k*\>" contains=radianceSurfType
+syn region radianceID start="\<cone\>" end="\<\k*\>" contains=radianceSurfType
+syn region radianceID start="\<cup\>" end="\<\k*\>" contains=radianceSurfType
+syn region radianceID start="\<cylinder\>" end="\<\k*\>" contains=radianceSurfType
+syn region radianceID start="\<tube\>" end="\<\k*\>" contains=radianceSurfType
+
+syn region radianceID start="\<light\>" end="\<\k*\>" contains=radianceLightType
+syn region radianceID start="\<glow\>" end="\<\k*\>" contains=radianceLightType
+syn region radianceID start="\<illum\>" end="\<\k*\>" contains=radianceLightType
+syn region radianceID start="\<spotlight\>" end="\<\k*\>" contains=radianceLightType
+
+syn region radianceID start="\<mirror\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<mist\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<prism1\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<prism2\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<metal\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<plastic\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<trans\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<metal2\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<plastic2\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<trans2\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<metfunc\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<plasfunc\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<transfunc\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<metdata\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<plasdata\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<transdata\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<dielectric\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<interface\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<glass\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<BRTDfunc\>" end="\<\k*\>" contains=radianceMatType
+syn region radianceID start="\<antimatter\>" end="\<\k*\>" contains=radianceMatType
+
+syn region radianceID start="\<colorfunc\>" end="\<\k*\>" contains=radiancePatType
+syn region radianceID start="\<brightfunc\>" end="\<\k*\>" contains=radiancePatType
+syn region radianceID start="\<colordata\>" end="\<\k*\>" contains=radiancePatType
+syn region radianceID start="\<brightdata\>" end="\<\k*\>" contains=radiancePatType
+syn region radianceID start="\<colorpict\>" end="\<\k*\>" contains=radiancePatType
+syn region radianceID start="\<colortext\>" end="\<\k*\>" contains=radiancePatType
+syn region radianceID start="\<brighttext\>" end="\<\k*\>" contains=radiancePatType
+
+syn region radianceID start="\<texfunc\>" end="\<\k*\>" contains=radianceTexType
+syn region radianceID start="\<texdata\>" end="\<\k*\>" contains=radianceTexType
+
+syn region radianceID start="\<mixfunc\>" end="\<\k*\>" contains=radianceMixType
+syn region radianceID start="\<mixdata\>" end="\<\k*\>" contains=radianceMixType
+syn region radianceID start="\<mixtext\>" end="\<\k*\>" contains=radianceMixType
+
+" external commands (generators, xform et al.)
+syn match radianceCommand "^\s*!\s*[^\s]\+\>"
+
+" The usual suspects
+syn keyword radianceTodo contained TODO XXX
+syn match radianceComment "#.*$" contains=radianceTodo
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link radianceKeyword Keyword
+hi def link radianceExtraType Type
+hi def link radianceSurfType Type
+hi def link radianceLightType Type
+hi def link radianceMatType Type
+hi def link radiancePatType Type
+hi def link radianceTexType Type
+hi def link radianceMixType Type
+hi def link radianceComment Comment
+hi def link radianceCommand Function
+hi def link radianceID String
+hi def link radianceTodo Todo
+
+let b:current_syntax = "radiance"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/raku.vim b/runtime/syntax/raku.vim
new file mode 100644
index 0000000..1bf9b49
--- /dev/null
+++ b/runtime/syntax/raku.vim
@@ -0,0 +1,1971 @@
+" Vim syntax file
+" Language: Raku
+" Maintainer: vim-perl <vim-perl@googlegroups.com>
+" Homepage: https://github.com/Raku/vim-raku
+" Bugs/requests: https://github.com/Raku/vim-raku/issues
+" Last Change: 2021-04-16
+
+" Contributors: Luke Palmer <fibonaci@babylonia.flatirons.org>
+" Moritz Lenz <moritz@faui2k3.org>
+" Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
+"
+" This is a big undertaking.
+"
+" The ftdetect/raku.vim file in this repository takes care of setting the
+" right filetype for Raku files. To set it explicitly you can also add this
+" line near the bottom of your source file:
+" # vim: filetype=raku
+
+" TODO:
+" * Go over the list of keywords/types to see what's deprecated/missing
+" * Add more support for folding (:help syn-fold)
+"
+" If you want to have Pir code inside Q:PIR// strings highlighted, do:
+" let raku_embedded_pir=1
+"
+" The above requires pir.vim, which you can find in Parrot's repository:
+" https://github.com/parrot/parrot/tree/master/editor
+"
+" To highlight Perl 5 regexes (m:P5//):
+" let raku_perl5_regexes=1
+"
+" To enable folding:
+" let raku_fold=1
+
+if version < 704 | throw "raku.vim uses regex syntax which Vim <7.4 doesn't support. Try 'make fix_old_vim' in the vim-perl repository." | endif
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+" Patterns which will be interpolated by the preprocessor (tools/preproc.pl):
+"
+" @@IDENT_NONDIGIT@@ "[A-Za-z_\xC0-\xFF]"
+" @@IDENT_CHAR@@ "[A-Za-z_\xC0-\xFF0-9]"
+" @@IDENTIFIER@@ "\%(@@IDENT_NONDIGIT@@\%(@@IDENT_CHAR@@\|[-']@@IDENT_NONDIGIT@@\@=\)*\)"
+" @@IDENTIFIER_START@@ "@@IDENT_CHAR@@\@1<!\%(@@IDENT_NONDIGIT@@[-']\)\@2<!"
+" @@IDENTIFIER_END@@ "\%(@@IDENT_CHAR@@\|[-']@@IDENT_NONDIGIT@@\)\@!"
+" @@METAOP@@ #\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+#
+" @@ADVERBS@@ "\%(\_s*:!\?@@IDENTIFIER@@\%(([^)]*)\)\?\)*"
+"
+" Same but escaped, for use in string eval
+" @@IDENT_NONDIGIT_Q@@ "[A-Za-z_\\xC0-\\xFF]"
+" @@IDENT_CHAR_Q@@ "[A-Za-z_\\xC0-\\xFF0-9]"
+" @@IDENTIFIER_Q@@ "\\%(@@IDENT_NONDIGIT_Q@@\\%(@@IDENT_CHAR_Q@@\\|[-']@@IDENT_NONDIGIT_Q@@\\@=\\)*\\)"
+" @@IDENTIFIER_START_Q@@ "@@IDENT_CHAR_Q@@\\@1<!\\%(@@IDENT_NONDIGIT_Q@@[-']\\)\\@2<!"
+" @@IDENTIFIER_END_Q@@ "\\%(@@IDENT_CHAR_Q@@\\|[-']@@IDENT_NONDIGIT_Q@@\\)\\@!"
+
+" Identifiers (subroutines, methods, constants, classes, roles, etc)
+syn match rakuIdentifier display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+
+let s:keywords = {
+ \ "rakuInclude": [
+ \ "use require import unit",
+ \ ],
+ \ "rakuConditional": [
+ \ "if else elsif unless with orwith without once",
+ \ ],
+ \ "rakuVarStorage": [
+ \ "let my our state temp has constant",
+ \ ],
+ \ "rakuRepeat": [
+ \ "for loop repeat while until gather given",
+ \ "supply react race hyper lazy quietly",
+ \ ],
+ \ "rakuFlowControl": [
+ \ "take take-rw do when next last redo return return-rw",
+ \ "start default exit make continue break goto leave",
+ \ "proceed succeed whenever emit done",
+ \ ],
+ \ "rakuClosureTrait": [
+ \ "BEGIN CHECK INIT FIRST ENTER LEAVE KEEP",
+ \ "UNDO NEXT LAST PRE POST END CATCH CONTROL",
+ \ "DOC QUIT CLOSE COMPOSE",
+ \ ],
+ \ "rakuException": [
+ \ "die fail try warn",
+ \ ],
+ \ "rakuPragma": [
+ \ "MONKEY-GUTS MONKEY-SEE-NO-EVAL MONKEY-TYPING MONKEY",
+ \ "experimental fatal isms lib newline nqp precompilation",
+ \ "soft strict trace variables worries",
+ \ ],
+ \ "rakuOperator": [
+ \ "div xx x mod also leg cmp before after eq ne le lt not",
+ \ "gt ge eqv ff fff and andthen or xor orelse lcm gcd o",
+ \ "unicmp notandthen minmax",
+ \ ],
+ \ "rakuType": [
+ \ "int int1 int2 int4 int8 int16 int32 int64",
+ \ "rat rat1 rat2 rat4 rat8 rat16 rat32 rat64",
+ \ "buf buf1 buf2 buf4 buf8 buf16 buf32 buf64",
+ \ "blob blob1 blob2 blob4 blob8 blob16 blob32 blob64",
+ \ "uint uint1 uint2 uint4 uint8 uint16 uint32 bit bool",
+ \ "uint64 utf8 utf16 utf32 bag set mix complex",
+ \ "num num32 num64 long longlong Pointer size_t str void",
+ \ "ulong ulonglong ssize_t atomicint",
+ \ ],
+\ }
+
+" These can be immediately followed by parentheses
+let s:types = [
+ \ "Object Any Cool Junction Whatever Capture Match",
+ \ "Signature Proxy Matcher Package Module Class",
+ \ "Grammar Scalar Array Hash KeyHash KeySet KeyBag",
+ \ "Pair List Seq Range Set Bag Map Mapping Void Undef",
+ \ "Failure Exception Code Block Routine Sub Macro",
+ \ "Method Submethod Regex Str Blob Char Byte Parcel",
+ \ "Codepoint Grapheme StrPos StrLen Version Num",
+ \ "Complex Bit True False Order Same Less More",
+ \ "Increasing Decreasing Ordered Callable AnyChar",
+ \ "Positional Associative Ordering KeyExtractor",
+ \ "Comparator OrderingPair IO KitchenSink Role",
+ \ "Int Rat Buf UInt Abstraction Numeric Real",
+ \ "Nil Mu SeekFromBeginning SeekFromEnd SeekFromCurrent",
+\ ]
+
+" We explicitly enumerate the alphanumeric infix operators allowed after [RSXZ]
+" to avoid matching package names that start with those letters.
+let s:alpha_metaops = [
+ \ "div mod gcd lcm xx x does but cmp leg eq ne gt ge lt le before after eqv",
+ \ "min max not so andthen and or orelse unicmp coll minmax",
+\ ]
+let s:words_space = join(s:alpha_metaops, " ")
+let s:temp = split(s:words_space)
+let s:alpha_metaops_or = join(s:temp, "\\|")
+
+" We don't use "syn keyword" here because that always has higher priority
+" than matches/regions, which would prevent these words from matching as
+" autoquoted strings before "=>".
+syn match rakuKeywordStart display "\%(\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!\)\@=[A-Za-z_\xC0-\xFF0-9]\@1<!\%([A-Za-z_\xC0-\xFF][-']\)\@2<!"
+ \ nextgroup=rakuAttention,rakuVariable,rakuInclude,rakuConditional,rakuVarStorage,rakuRepeat,rakuFlowControl,rakuClosureTrait,rakuException,rakuNumber,rakuPragma,rakuType,rakuOperator,rakuIdentifier
+
+for [s:group, s:words_list] in items(s:keywords)
+ let s:words_space = join(s:words_list, " ")
+ let s:temp = split(s:words_space)
+ let s:words = join(s:temp, "\\|")
+ exec "syn match ". s:group ." display \"[.^]\\@1<!\\%(". s:words . "\\)(\\@!\\%([A-Za-z_\\xC0-\\xFF0-9]\\|[-'][A-Za-z_\\xC0-\\xFF]\\)\\@!\" contained"
+endfor
+
+let s:words_space = join(s:types, " ")
+let s:temp = split(s:words_space)
+let s:words = join(s:temp, "\\|")
+exec "syn match rakuType display \"\\%(". s:words . "\\)\\%([A-Za-z_\\xC0-\\xFF0-9]\\|[-'][A-Za-z_\\xC0-\\xFF]\\)\\@!\" contained"
+unlet s:group s:words_list s:keywords s:types s:words_space s:temp s:words
+
+syn match rakuPreDeclare display "[.^]\@1<!\<\%(multi\|proto\|only\)\>" nextgroup=rakuDeclare,rakuIdentifier skipwhite skipempty
+syn match rakuDeclare display "[.^]\@1<!\<\%(macro\|sub\|submethod\|method\|module\|class\|role\|package\|enum\|grammar\|slang\|subset\)\>" nextgroup=rakuIdentifier skipwhite skipempty
+syn match rakuDeclareRegex display "[.^]\@1<!\<\%(regex\|rule\|token\)\>" nextgroup=rakuRegexName skipwhite skipempty
+
+syn match rakuTypeConstraint display "\%([.^]\|^\s*\)\@<!\a\@=\%(does\|as\|but\|trusts\|of\|returns\|handles\|where\|augment\|supersede\)\>"
+syn match rakuTypeConstraint display "\%([.^]\|^\s*\)\@<![A-Za-z_\xC0-\xFF0-9]\@1<!\%([A-Za-z_\xC0-\xFF][-']\)\@2<!is\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=rakuProperty
+syn match rakuProperty display "\a\@=\%(signature\|context\|also\|shape\|prec\|irs\|ofs\|ors\|export\|deep\|binary\|unary\|reparsed\|rw\|parsed\|cached\|readonly\|defequiv\|will\|ref\|copy\|inline\|tighter\|looser\|equiv\|assoc\|required\|DEPRECATED\|raw\|repr\|dynamic\|hidden-from-backtrace\|nodal\|pure\)" contained
+
+" packages, must come after all the keywords
+syn match rakuIdentifier display "\%(::\)\@2<=\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)*"
+syn match rakuIdentifier display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(::\)\@="
+
+" The sigil in ::*Package
+syn match rakuPackageTwigil display "\%(::\)\@2<=\*"
+
+" some standard packages
+syn match rakuType display "\%(::\)\@2<!\%(SeekType\%(::SeekFromBeginning\|::SeekFromCurrent\|::SeekFromEnd\)\|Order\%(::Same\|::More\|::Less\)\?\|Bool\%(::True\|::False\)\?\)\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!"
+
+" Don't put a "\+" at the end of the character class. That makes it so
+" greedy that the "%" " in "+%foo" won't be allowed to match as a sigil,
+" among other things
+syn match rakuOperator display "[-+/*~?|=^!%&,<>».;\\∈∉∋∌∩∪≼≽⊂⊃⊄⊅⊆⊇⊈⊉âŠâŠŽâŠ–∅∘]"
+syn match rakuOperator display "\%(:\@1<!::\@2!\|::=\|\.::\)"
+" these require whitespace on the left side
+syn match rakuOperator display "\%(\s\|^\)\@1<=\%(xx=\)"
+" index overloading
+syn match rakuOperator display "\%(&\.(\@=\|@\.\[\@=\|%\.{\@=\)"
+
+" Reduce metaoperators like [+]
+syn match rakuReduceOp display "\%(^\|\s\|(\)\@1<=!*\%([RSXZ\[]\)*[&RSXZ]\?\[\+(\?\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+)\?]\+"
+syn match rakuSetOp display "R\?(\%([-^.+|&]\|[<>][=+]\?\|cont\|elem\))"
+
+" Reverse, cross, and zip metaoperators
+exec "syn match rakuRSXZOp display \"[RSXZ]:\\@!\\%(\\a\\@=\\%(". s:alpha_metaops_or . "\\)\\>\\|[[:alnum:]]\\@!\\%([.,]\\|[^[,.[:alnum:][:space:]]\\)\\+\\|\\s\\@=\\|$\\)\""
+
+syn match rakuBlockLabel display "^\s*\zs\h\w*\s*::\@!\_s\@="
+
+syn match rakuNumber display "[A-Za-z_\xC0-\xFF0-9]\@1<!\%(\%(\%(\_^\|\s\|[^*\a]\)\@1<=[-+]\)\?Inf\|NaN\)"
+syn match rakuNumber display "[A-Za-z_\xC0-\xFF0-9]\@1<!\%(\%(\_^\|\s\|[^*\a]\)\@1<=[-+]\)\?\%(\%(\d\|__\@!\)*[._]\@1<!\.\)\?_\@!\%(\d\|_\)\+_\@1<!\%([eE]-\?_\@!\%(\d\|_\)\+\)\?i\?"
+syn match rakuNumber display "[A-Za-z_\xC0-\xFF0-9]\@1<!\%(\%(\_^\|\s\|[^*\a]\)\@1<=[-+]\)\?0[obxd]\@=" nextgroup=rakuOctBase,rakuBinBase,rakuHexBase,rakuDecBase
+syn match rakuOctBase display "o" contained nextgroup=rakuOctNumber
+syn match rakuBinBase display "b" contained nextgroup=rakuBinNumber
+syn match rakuHexBase display "x" contained nextgroup=rakuHexNumber
+syn match rakuDecBase display "d" contained nextgroup=rakuDecNumber
+syn match rakuOctNumber display "[0-7][0-7_]*" contained
+syn match rakuBinNumber display "[01][01_]*" contained
+syn match rakuHexNumber display "\x[[:xdigit:]_]*" contained
+syn match rakuDecNumber display "\d[[:digit:]_]*" contained
+
+syn match rakuVersion display "\<v\d\+\%(\.\%(\*\|\d\+\)\)*+\?"
+
+" Contextualizers
+syn match rakuContext display "\<\%(item\|list\|slice\|hash\)\>"
+syn match rakuContext display "\%(\$\|@\|%\|&\)(\@="
+
+" Quoting
+
+" one cluster for every quote adverb
+syn cluster rakuInterp_scalar
+ \ add=rakuInterpScalar
+
+syn cluster rakuInterp_array
+ \ add=rakuInterpArray
+
+syn cluster rakuInterp_hash
+ \ add=rakuInterpHash
+
+syn cluster rakuInterp_function
+ \ add=rakuInterpFunction
+
+syn cluster rakuInterp_closure
+ \ add=rakuInterpClosure
+
+syn cluster rakuInterp_q
+ \ add=rakuEscQQ
+ \ add=rakuEscBackSlash
+
+syn cluster rakuInterp_backslash
+ \ add=@rakuInterp_q
+ \ add=rakuEscape
+ \ add=rakuEscOpenCurly
+ \ add=rakuEscCodePoint
+ \ add=rakuEscHex
+ \ add=rakuEscOct
+ \ add=rakuEscOctOld
+ \ add=rakuEscNull
+
+syn cluster rakuInterp_qq
+ \ add=@rakuInterp_scalar
+ \ add=@rakuInterp_array
+ \ add=@rakuInterp_hash
+ \ add=@rakuInterp_function
+ \ add=@rakuInterp_closure
+ \ add=@rakuInterp_backslash
+ \ add=rakuMatchVarSigil
+
+syn region rakuInterpScalar
+ \ start="\ze\z(\$\%(\%(\%(\d\+\|!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=\)\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\%(\.\^\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
+ \ start="\ze\z(\$\%(\%(\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=\)\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\|\%(\d\+\|!\|/\|¢\)\)\)"
+ \ end="\z1\zs"
+ \ contained keepend
+ \ contains=TOP
+
+syn region rakuInterpScalar
+ \ matchgroup=rakuContext
+ \ start="\$\ze()\@!"
+ \ skip="([^)]*)"
+ \ end=")\zs"
+ \ contained
+ \ contains=TOP
+
+syn region rakuInterpArray
+ \ start="\ze\z(@\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=\)\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\%(\.\^\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
+ \ end="\z1\zs"
+ \ contained keepend
+ \ contains=TOP
+
+syn region rakuInterpArray
+ \ matchgroup=rakuContext
+ \ start="@\ze()\@!"
+ \ skip="([^)]*)"
+ \ end=")\zs"
+ \ contained
+ \ contains=TOP
+
+syn region rakuInterpHash
+ \ start="\ze\z(%\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=\)\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\%(\.\^\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
+ \ end="\z1\zs"
+ \ contained keepend
+ \ contains=TOP
+
+syn region rakuInterpHash
+ \ matchgroup=rakuContext
+ \ start="%\ze()\@!"
+ \ skip="([^)]*)"
+ \ end=")\zs"
+ \ contained
+ \ contains=TOP
+
+syn region rakuInterpFunction
+ \ start="\ze\z(&\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=\)\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(\.\^\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
+ \ end="\z1\zs"
+ \ contained keepend
+ \ contains=TOP
+
+syn region rakuInterpFunction
+ \ matchgroup=rakuContext
+ \ start="&\ze()\@!"
+ \ skip="([^)]*)"
+ \ end=")\zs"
+ \ contained
+ \ contains=TOP
+
+syn region rakuInterpClosure
+ \ start="\\\@1<!{}\@!"
+ \ skip="{[^}]*}"
+ \ end="}"
+ \ contained keepend
+ \ contains=TOP
+
+" generic escape
+syn match rakuEscape display "\\\S" contained
+
+" escaped closing delimiters
+syn match rakuEscQuote display "\\'" contained
+syn match rakuEscDoubleQuote display "\\\"" contained
+syn match rakuEscCloseAngle display "\\>" contained
+syn match rakuEscCloseFrench display "\\»" contained
+syn match rakuEscBackTick display "\\`" contained
+syn match rakuEscForwardSlash display "\\/" contained
+syn match rakuEscVerticalBar display "\\|" contained
+syn match rakuEscExclamation display "\\!" contained
+syn match rakuEscComma display "\\," contained
+syn match rakuEscDollar display "\\\$" contained
+syn match rakuEscCloseCurly display "\\}" contained
+syn match rakuEscCloseBracket display "\\\]" contained
+
+" matches :key, :!key, :$var, :key<var>, etc
+" Since we don't know in advance how the adverb ends, we use a trick.
+" Consume nothing with the start pattern (\ze at the beginning),
+" while capturing the whole adverb into \z1 and then putting it before
+" the match start (\zs) of the end pattern.
+syn region rakuAdverb
+ \ start="\ze\z(:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)"
+ \ start="\ze\z(:!\?[@$%]\$*\%(::\|\%(\$\@1<=\d\+\|!\|/\|¢\)\|\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\)\|\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\)"
+ \ end="\z1\zs"
+ \ contained keepend
+ \ contains=TOP
+
+" <words>
+" Distinguishing this from the "less than" operator is tricky. For now,
+" it matches if any of the following is true:
+"
+" * There is whitespace missing on either side of the "<", since
+" people tend to put spaces around "less than". We make an exception
+" for " = < ... >" assignments though.
+" * It comes after "enum", "for", "any", "all", or "none"
+" * It's the first or last thing on a line (ignoring whitespace)
+" * It's preceded by "(\s*" or "=\s\+"
+" * It's empty and terminated on the same line (e.g. <> and < >)
+"
+" It never matches when:
+"
+" * Preceded by [<+~=!] (e.g. <<foo>>, =<$foo>, * !< 3)
+" * Followed by [-=] (e.g. <--, <=, <==, <->)
+syn region rakuStringAngle
+ \ matchgroup=rakuQuote
+ \ start="\%(\<\%(enum\|for\|any\|all\|none\)\>\s*(\?\s*\)\@<=<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
+ \ start="\%(\s\|[<+~=!]\)\@<!<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
+ \ start="[<+~=!]\@1<!<\%(\s\|<\|=>\|\%([=-]\{1,2}>\|[=-]\{1,2}\)\)\@!"
+ \ start="\%(^\s*\)\@<=<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
+ \ start="[<+~=!]\@1<!<\%(\s*$\)\@="
+ \ start="\%((\s*\|=\s\+\)\@<=<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
+ \ start="<\%(\s*>\)\@="
+ \ skip="\\\@1<!\\>"
+ \ end=">"
+ \ contains=rakuInnerAnglesOne,rakuEscBackSlash,rakuEscCloseAngle
+
+syn region rakuStringAngleFixed
+ \ matchgroup=rakuQuote
+ \ start="<"
+ \ skip="\\\@1<!\\>"
+ \ end=">"
+ \ contains=rakuInnerAnglesOne,rakuEscBackSlash,rakuEscCloseAngle
+ \ contained
+
+syn region rakuInnerAnglesOne
+ \ matchgroup=rakuStringAngle
+ \ start="\\\@1<!<"
+ \ skip="\\\@1<!\\>"
+ \ end=">"
+ \ transparent contained
+ \ contains=rakuInnerAnglesOne
+
+" <<words>>
+syn region rakuStringAngles
+ \ matchgroup=rakuQuote
+ \ start="<<=\@!"
+ \ skip="\\\@1<!\\>"
+ \ end=">>"
+ \ contains=rakuInnerAnglesTwo,@rakuInterp_qq,rakuComment,rakuBracketComment,rakuEscHash,rakuEscCloseAngle,rakuAdverb,rakuStringSQ,rakuStringDQ
+
+syn region rakuInnerAnglesTwo
+ \ matchgroup=rakuStringAngles
+ \ start="<<"
+ \ skip="\\\@1<!\\>"
+ \ end=">>"
+ \ transparent contained
+ \ contains=rakuInnerAnglesTwo
+
+" «words»
+syn region rakuStringFrench
+ \ matchgroup=rakuQuote
+ \ start="«"
+ \ skip="\\\@1<!\\»"
+ \ end="»"
+ \ contains=rakuInnerFrench,@rakuInterp_qq,rakuComment,rakuBracketComment,rakuEscHash,rakuEscCloseFrench,rakuAdverb,rakuStringSQ,rakuStringDQ
+
+syn region rakuInnerFrench
+ \ matchgroup=rakuStringFrench
+ \ start="\\\@1<!«"
+ \ skip="\\\@1<!\\»"
+ \ end="»"
+ \ transparent contained
+ \ contains=rakuInnerFrench
+
+" Hyperops. They need to come after "<>" and "«»" strings in order to override
+" them, but before other types of strings, to avoid matching those delimiters
+" as parts of hyperops.
+syn match rakuHyperOp display #[^[:digit:][{('",:[:space:]][^[{('",:[:space:]]*\%(«\|<<\)#
+syn match rakuHyperOp display "«\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+[«»]"
+syn match rakuHyperOp display "»\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+\%(«\|»\?\)"
+syn match rakuHyperOp display "<<\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+\%(<<\|>>\)"
+syn match rakuHyperOp display ">>\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+\%(<<\|\%(>>\)\?\)"
+
+" 'string'
+syn region rakuStringSQ
+ \ matchgroup=rakuQuote
+ \ start="'"
+ \ skip="\\\@1<!\\'"
+ \ end="'"
+ \ contains=@rakuInterp_q,rakuEscQuote
+ \ keepend extend
+
+" "string"
+syn region rakuStringDQ
+ \ matchgroup=rakuQuote
+ \ start=+"+
+ \ skip=+\\\@1<!\\"+
+ \ end=+"+
+ \ contains=@rakuInterp_qq,rakuEscDoubleQuote
+ \ keepend extend
+
+" Q// and friends
+
+syn match rakuQuoteQStart display "\%(:\|\%(sub\|role\)\s\)\@5<![Qq]\@=" nextgroup=rakuQuoteQ,rakuQuoteQ_q,rakuQuoteQ_qww,rakuQuoteQ_qq,rakuQuoteQ_to,rakuQuoteQ_qto,rakuQuoteQ_qqto,rakuIdentifier
+syn match rakuQuoteQ display "Q\%(qq\|ww\|[abcfhpsqvwx]\)\?[A-Za-z(]\@!" nextgroup=rakuPairsQ skipwhite skipempty contained
+syn match rakuQuoteQ_q display "q[abcfhpsvwx]\?[A-Za-z(]\@!" nextgroup=rakuPairsQ_q skipwhite skipempty contained
+syn match rakuQuoteQ_qww display "qww[A-Za-z(]\@!" nextgroup=rakuPairsQ_qww skipwhite skipempty contained
+syn match rakuQuoteQ_qq display "qq\%([pwx]\|ww\)\?[A-Za-z(]\@!" nextgroup=rakuPairsQ_qq skipwhite skipempty contained
+syn match rakuQuoteQ_to display "Qto[A-Za-z(]\@!" nextgroup=rakuStringQ_to skipwhite skipempty contained
+syn match rakuQuoteQ_qto display "qto[A-Za-z(]\@!" nextgroup=rakuStringQ_qto skipwhite skipempty contained
+syn match rakuQuoteQ_qqto display "qqto[A-Za-z(]\@!" nextgroup=rakuStringQ_qqto skipwhite skipempty contained
+syn match rakuQuoteQ_qto display "q\_s*\%(\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*:\%(to\|heredoc\)\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*(\@!\)\@=" nextgroup=rakuPairsQ_qto skipwhite skipempty contained
+syn match rakuQuoteQ_qqto display "qq\_s*\%(\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*:\%(to\|heredoc\)\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*(\@!\)\@=" nextgroup=rakuPairsQ_qqto skipwhite skipempty contained
+syn match rakuPairsQ "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ
+syn match rakuPairsQ_q "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ_q
+syn match rakuPairsQ_qww "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ_qww
+syn match rakuPairsQ_qq "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ_qq
+syn match rakuPairsQ_qto "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ_qto
+syn match rakuPairsQ_qqto "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ_qqto
+
+
+if exists("raku_embedded_pir") || exists("raku_extended_all")
+ syn include @rakuPIR syntax/pir.vim
+ syn match rakuQuote_QPIR display "Q[A-Za-z(]\@!\%(\_s*:PIR\)\@=" nextgroup=rakuPairsQ_PIR skipwhite skipempty
+ syn match rakuPairs_QPIR contained "\_s*:PIR" transparent skipwhite skipempty nextgroup=rakuStringQ_PIR
+endif
+
+" hardcoded set of delimiters
+let s:plain_delims = [
+ \ ["DQ", "\\\"", "\\\"", "rakuEscDoubleQuote", "\\\\\\@1<!\\\\\\\""],
+ \ ["SQ", "'", "'", "rakuEscQuote", "\\\\\\@1<!\\\\'"],
+ \ ["Slash", "/", "/", "rakuEscForwardSlash", "\\\\\\@1<!\\\\/"],
+ \ ["BackTick", "`", "`", "rakuEscBackTick", "\\\\\\@1<!\\\\`"],
+ \ ["Bar", "|", "|", "rakuEscVerticalBar", "\\\\\\@1<!\\\\|"],
+ \ ["Exclamation", "!", "!", "rakuEscExclamation", "\\\\\\@1<!\\\\!"],
+ \ ["Comma", ",", ",", "rakuEscComma", "\\\\\\@1<!\\\\,"],
+ \ ["Dollar", "\\$", "\\$", "rakuEscDollar", "\\\\\\@1<!\\\\\\$"],
+\ ]
+let s:bracketing_delims = [
+ \ ["Curly", "{", "}", "rakuEscCloseCurly", "\\%(\\\\\\@1<!\\\\}\\|{[^}]*}\\)"],
+ \ ["Angle", "<", ">", "rakuEscCloseAngle", "\\%(\\\\\\@1<!\\\\>\\|<[^>]*>\\)"],
+ \ ["French", "«", "»", "rakuEscCloseFrench", "\\%(\\\\\\@1<!\\\\»\\|«[^»]*»\\)"],
+ \ ["Bracket", "\\\[", "]", "rakuEscCloseBracket", "\\%(\\\\\\@1<!\\\\]\\|\\[^\\]]*]\\)"],
+ \ ["Paren", "\\s\\@1<=(", ")", "rakuEscCloseParen", "\\%(\\\\\\@1<!\\\\)\\|([^)]*)\\)"],
+\ ]
+let s:all_delims = s:plain_delims + s:bracketing_delims
+
+for [s:name, s:start_delim, s:end_delim, s:end_group, s:skip] in s:all_delims
+ exec "syn region rakuStringQ matchgroup=rakuQuote start=\"".s:start_delim."\" end=\"".s:end_delim."\" contained"
+ exec "syn region rakuStringQ_q matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contains=@rakuInterp_q,".s:end_group." contained"
+ exec "syn region rakuStringQ_qww matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contains=@rakuInterp_q,rakuStringSQ,rakuStringDQ".s:end_group." contained"
+ exec "syn region rakuStringQ_qq matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contains=@rakuInterp_qq,".s:end_group." contained"
+ exec "syn region rakuStringQ_to matchgroup=rakuQuote start=\"".s:start_delim."\\z([^".s:end_delim."]\\+\\)".s:end_delim."\" end=\"^\\s*\\z1$\" contained"
+ exec "syn region rakuStringQ_qto matchgroup=rakuQuote start=\"".s:start_delim."\\z([^".s:end_delim."]\\+\\)".s:end_delim."\" skip=\"".s:skip."\" end=\"^\\s*\\z1$\" contains=@rakuInterp_q,".s:end_group." contained"
+ exec "syn region rakuStringQ_qqto matchgroup=rakuQuote start=\"".s:start_delim."\\z(\[^".s:end_delim."]\\+\\)".s:end_delim."\" skip=\"".s:skip."\" end=\"^\\s*\\z1$\" contains=@rakuInterp_qq,".s:end_group." contained"
+
+ if exists("raku_embedded_pir") || exists("raku_extended_all")
+ exec "syn region rakuStringQ_PIR matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contains=@rakuPIR,".s:end_group." contained"
+ endif
+endfor
+unlet s:name s:start_delim s:end_delim s:end_group s:skip s:plain_delims s:all_delims
+
+" :key
+syn match rakuOperator display ":\@1<!::\@!!\?" nextgroup=rakuKey,rakuStringAngleFixed,rakuStringAngles,rakuStringFrench
+syn match rakuKey display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" contained nextgroup=rakuStringAngleFixed,rakuStringAngles,rakuStringFrench
+
+" Regexes and grammars
+
+syn match rakuRegexName display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\?" nextgroup=rakuRegexBlockCrap skipwhite skipempty contained
+syn match rakuRegexBlockCrap "[^{]*" nextgroup=rakuRegexBlock skipwhite skipempty transparent contained
+
+syn region rakuRegexBlock
+ \ matchgroup=rakuNormal
+ \ start="{"
+ \ end="}"
+ \ contained
+ \ contains=@rakuRegexen,@rakuVariables
+
+" Perl 6 regex bits
+
+syn cluster rakuRegexen
+ \ add=rakuRxMeta
+ \ add=rakuRxEscape
+ \ add=rakuEscCodePoint
+ \ add=rakuEscHex
+ \ add=rakuEscOct
+ \ add=rakuEscNull
+ \ add=rakuRxAnchor
+ \ add=rakuRxCapture
+ \ add=rakuRxGroup
+ \ add=rakuRxAlternation
+ \ add=rakuRxBoundary
+ \ add=rakuRxAdverb
+ \ add=rakuRxAdverbArg
+ \ add=rakuRxStorage
+ \ add=rakuRxAssertion
+ \ add=rakuRxAssertGroup
+ \ add=rakuRxQuoteWords
+ \ add=rakuRxClosure
+ \ add=rakuRxStringSQ
+ \ add=rakuRxStringDQ
+ \ add=rakuComment
+ \ add=rakuBracketComment
+ \ add=rakuMatchVarSigil
+
+syn match rakuRxMeta display contained ".\%([A-Za-z_\xC0-\xFF0-9]\|\s\)\@1<!"
+syn match rakuRxAnchor display contained "[$^]"
+syn match rakuRxEscape display contained "\\\S"
+syn match rakuRxCapture display contained "[()]"
+syn match rakuRxAlternation display contained "|"
+syn match rakuRxRange display contained "\.\."
+
+" misc escapes
+syn match rakuEscOctOld display "\\[1-9]\d\{1,2}" contained
+syn match rakuEscNull display "\\0\d\@!" contained
+syn match rakuEscCodePoint display "\\[cC]" contained nextgroup=rakuCodePoint
+syn match rakuEscHex display "\\[xX]" contained nextgroup=rakuHexSequence
+syn match rakuEscOct display "\\o" contained nextgroup=rakuOctSequence
+syn match rakuEscQQ display "\\qq" contained nextgroup=rakuQQSequence
+syn match rakuEscOpenCurly display "\\{" contained
+syn match rakuEscHash display "\\#" contained
+syn match rakuEscBackSlash display "\\\\" contained
+
+syn region rakuQQSequence
+ \ matchgroup=rakuEscape
+ \ start="\["
+ \ skip="\[[^\]]*]"
+ \ end="]"
+ \ contained transparent
+ \ contains=@rakuInterp_qq
+
+syn match rakuCodePoint display "\%(\d\+\|\S\)" contained
+syn region rakuCodePoint
+ \ matchgroup=rakuEscape
+ \ start="\["
+ \ end="]"
+ \ contained
+
+syn match rakuHexSequence display "\x\+" contained
+syn region rakuHexSequence
+ \ matchgroup=rakuEscape
+ \ start="\["
+ \ end="]"
+ \ contained
+
+syn match rakuOctSequence display "\o\+" contained
+syn region rakuOctSequence
+ \ matchgroup=rakuEscape
+ \ start="\["
+ \ end="]"
+ \ contained
+
+" $<match>, @<match>
+syn region rakuMatchVarSigil
+ \ matchgroup=rakuVariable
+ \ start="[$@]\%(<<\@!\)\@="
+ \ end=">\@1<="
+ \ contains=rakuMatchVar
+
+syn region rakuMatchVar
+ \ matchgroup=rakuTwigil
+ \ start="<"
+ \ end=">"
+ \ contained
+
+syn region rakuRxClosure
+ \ matchgroup=rakuNormal
+ \ start="{"
+ \ end="}"
+ \ contained
+ \ containedin=rakuRxClosure
+ \ contains=TOP
+syn region rakuRxGroup
+ \ matchgroup=rakuStringSpecial2
+ \ start="\["
+ \ end="]"
+ \ contained
+ \ contains=@rakuRegexen,@rakuVariables,rakuMatchVarSigil
+syn region rakuRxAssertion
+ \ matchgroup=rakuStringSpecial2
+ \ start="<\%(?\?\%(before\|after\)\|\%(\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)=\)\|[+?*]\)\?"
+ \ end=">"
+ \ contained
+ \ contains=@rakuRegexen,rakuIdentifier,@rakuVariables,rakuRxCharClass,rakuRxAssertCall
+syn region rakuRxAssertGroup
+ \ matchgroup=rakuStringSpecial2
+ \ start="<\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)=\["
+ \ skip="\\\@1<!\\]"
+ \ end="]"
+ \ contained
+syn match rakuRxAssertCall display "\%(::\|\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)" contained nextgroup=rakuRxAssertArgs
+syn region rakuRxAssertArgs
+ \ start="("
+ \ end=")"
+ \ contained keepend
+ \ contains=TOP
+syn region rakuRxAssertArgs
+ \ start=":"
+ \ end="\ze>"
+ \ contained keepend
+ \ contains=TOP
+syn match rakuRxBoundary display contained "\%([«»]\|<<\|>>\)"
+syn region rakuRxCharClass
+ \ matchgroup=rakuStringSpecial2
+ \ start="\%(<[-!+?]\?\)\@2<=\["
+ \ skip="\\]"
+ \ end="]"
+ \ contained
+ \ contains=rakuRxRange,rakuRxEscape,rakuEscHex,rakuEscOct,rakuEscCodePoint,rakuEscNull
+syn region rakuRxQuoteWords
+ \ matchgroup=rakuStringSpecial2
+ \ start="<\s"
+ \ end="\s\?>"
+ \ contained
+syn region rakuRxAdverb
+ \ start="\ze\z(:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)"
+ \ end="\z1\zs"
+ \ contained keepend
+ \ contains=TOP
+syn region rakuRxAdverbArg
+ \ start="\%(:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\@<=("
+ \ skip="([^)]\{-})"
+ \ end=")"
+ \ contained
+ \ keepend
+ \ contains=TOP
+syn region rakuRxStorage
+ \ matchgroup=rakuOperator
+ \ start="\%(^\s*\)\@<=:\%(my\>\|temp\>\)\@="
+ \ end="$"
+ \ contains=TOP
+ \ contained
+ \ keepend
+
+" 'string' inside a regex
+syn region rakuRxStringSQ
+ \ matchgroup=rakuQuote
+ \ start="'"
+ \ skip="\\\@1<!\\'"
+ \ end="'"
+ \ contained
+ \ contains=rakuEscQuote,rakuEscBackSlash
+
+" "string" inside a regex
+syn region rakuRxStringDQ
+ \ matchgroup=rakuQuote
+ \ start=+"+
+ \ skip=+\\\@1<!\\"+
+ \ end=+"+
+ \ contained
+ \ contains=rakuEscDoubleQuote,rakuEscBackSlash,@rakuInterp_qq
+
+" $!, $var, $!var, $::var, $package::var $*::package::var, etc
+" Thus must come after the matches for the "$" regex anchor, but before
+" the match for the $ regex delimiter
+syn cluster rakuVariables
+ \ add=rakuVarSlash
+ \ add=rakuVarExclam
+ \ add=rakuVarMatch
+ \ add=rakuVarNum
+ \ add=rakuVariable
+
+syn match rakuBareSigil display "[@$%&]\%(\s*\%([,)}=]\|where\>\)\)\@="
+syn match rakuVarSlash display "\$/"
+syn match rakuVarExclam display "\$!"
+syn match rakuVarMatch display "\$¢"
+syn match rakuVarNum display "\$\d\+"
+syn match rakuVariable display "self"
+syn match rakuVariable display "[@$%&]\?[@&$%]\$*\%(::\|\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\)\|[A-Za-z_\xC0-\xFF]\)\@=" nextgroup=rakuTwigil,rakuVarName,rakuPackageScope
+syn match rakuVarName display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" nextgroup=rakuPostHyperOp contained
+syn match rakuClose display "[\])]" transparent nextgroup=rakuPostHyperOp
+syn match rakuPostHyperOp display "\%(»\|>>\)" contained
+syn match rakuTwigil display "\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=" nextgroup=rakuPackageScope,rakuVarName contained
+syn match rakuPackageScope display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\?::" nextgroup=rakuPackageScope,rakuVarName contained
+
+" Perl 6 regex regions
+
+syn match rakuMatchStart_m display "\.\@1<!\<\%(mm\?\|rx\)\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=rakuMatchAdverbs_m
+syn match rakuMatchStart_s display "\.\@1<!\<[sS]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=rakuMatchAdverbs_s
+syn match rakuMatchStart_tr display "\.\@1<!\<tr\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=rakuMatchAdverbs_tr
+syn match rakuMatchAdverbs_m "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuMatch
+syn match rakuMatchAdverbs_s "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuSubstitution
+syn match rakuMatchAdverbs_tr "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuTransliteration
+
+" /foo/
+syn region rakuMatchBare
+ \ matchgroup=rakuQuote
+ \ start="/\@1<!\%(\%(\_^\|[!\[,=~|&/:({]\|\^\?fff\?\^\?\|=>\|\<\%(if\|unless\|while\|when\|where\|so\)\)\s*\)\@<=/[/=]\@!"
+ \ skip="\\/"
+ \ end="/"
+ \ contains=@rakuRegexen,rakuVariable,rakuVarExclam,rakuVarMatch,rakuVarNum
+
+" m/foo/, m$foo$, m!foo!, etc
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start=+\z([/!$,|`"]\)+
+ \ skip="\\\z1"
+ \ end="\z1"
+ \ contained
+ \ contains=@rakuRegexen,rakuVariable,rakuVarNum
+
+" m<foo>, m«foo», m{foo}, etc
+for [s:name, s:start_delim, s:end_delim, s:end_group, s:skip] in s:bracketing_delims
+ exec "syn region rakuMatch matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=@rakuRegexen,@rakuVariables"
+endfor
+unlet s:name s:start_delim s:end_delim s:end_group s:skip
+
+" Substitutions
+
+" s/foo//, s$foo$$, s!foo!!, etc
+syn region rakuSubstitution
+ \ matchgroup=rakuQuote
+ \ start=+\z([/!$,|`"]\)+
+ \ skip="\\\z1"
+ \ end="\z1"me=e-1
+ \ contained
+ \ contains=@rakuRegexen,rakuVariable,rakuVarNum
+ \ nextgroup=rakuReplacement
+
+syn region rakuReplacement
+ \ matchgroup=rakuQuote
+ \ start="\z(.\)"
+ \ skip="\\\z1"
+ \ end="\z1"
+ \ contained
+ \ contains=@rakuInterp_qq
+
+" s<foo><bar>, s«foo»«bar», s{foo}{bar}, etc
+for [s:name, s:start_delim, s:end_delim, s:end_group, s:skip] in s:bracketing_delims
+ exec "syn region rakuSubstitution matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=@rakuRegexen,@rakuVariables nextgroup=rakuRepl".s:name
+ exec "syn region rakuRepl".s:name." matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=@rakuInterp_qq"
+endfor
+unlet s:name s:start_delim s:end_delim s:end_group s:skip
+
+" Transliteration
+
+" tr/foo/bar/, tr|foo|bar, etc
+syn region rakuTransliteration
+ \ matchgroup=rakuQuote
+ \ start=+\z([/!$,|`"]\)+
+ \ skip="\\\z1"
+ \ end="\z1"me=e-1
+ \ contained
+ \ contains=rakuRxRange
+ \ nextgroup=rakuTransRepl
+
+syn region rakuTransRepl
+ \ matchgroup=rakuQuote
+ \ start="\z(.\)"
+ \ skip="\\\z1"
+ \ end="\z1"
+ \ contained
+ \ contains=@rakuInterp_qq,rakuRxRange
+
+" tr<foo><bar>, tr«foo»«bar», tr{foo}{bar}, etc
+for [s:name, s:start_delim, s:end_delim, s:end_group, s:skip] in s:bracketing_delims
+ exec "syn region rakuTransliteration matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=rakuRxRange nextgroup=rakuTransRepl".s:name
+ exec "syn region rakuTransRepl".s:name." matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=@rakuInterp_qq,rakuRxRange"
+endfor
+unlet s:name s:start_delim s:end_delim s:end_group s:skip s:bracketing_delims
+
+if exists("raku_perl5_regexes") || exists("raku_extended_all")
+
+" Perl 5 regex regions
+
+syn cluster rakuRegexP5Base
+ \ add=rakuRxP5Escape
+ \ add=rakuRxP5Oct
+ \ add=rakuRxP5Hex
+ \ add=rakuRxP5EscMeta
+ \ add=rakuRxP5CodePoint
+ \ add=rakuRxP5Prop
+
+" normal regex stuff
+syn cluster rakuRegexP5
+ \ add=@rakuRegexP5Base
+ \ add=rakuRxP5Quantifier
+ \ add=rakuRxP5Meta
+ \ add=rakuRxP5QuoteMeta
+ \ add=rakuRxP5ParenMod
+ \ add=rakuRxP5Verb
+ \ add=rakuRxP5Count
+ \ add=rakuRxP5Named
+ \ add=rakuRxP5ReadRef
+ \ add=rakuRxP5WriteRef
+ \ add=rakuRxP5CharClass
+ \ add=rakuRxP5Anchor
+
+" inside character classes
+syn cluster rakuRegexP5Class
+ \ add=@rakuRegexP5Base
+ \ add=rakuRxP5Posix
+ \ add=rakuRxP5Range
+
+syn match rakuRxP5Escape display contained "\\\S"
+syn match rakuRxP5CodePoint display contained "\\c\S\@=" nextgroup=rakuRxP5CPId
+syn match rakuRxP5CPId display contained "\S"
+syn match rakuRxP5Oct display contained "\\\%(\o\{1,3}\)\@=" nextgroup=rakuRxP5OctSeq
+syn match rakuRxP5OctSeq display contained "\o\{1,3}"
+syn match rakuRxP5Anchor display contained "[\^$]"
+syn match rakuRxP5Hex display contained "\\x\%({\x\+}\|\x\{1,2}\)\@=" nextgroup=rakuRxP5HexSeq
+syn match rakuRxP5HexSeq display contained "\x\{1,2}"
+syn region rakuRxP5HexSeq
+ \ matchgroup=rakuRxP5Escape
+ \ start="{"
+ \ end="}"
+ \ contained
+syn region rakuRxP5Named
+ \ matchgroup=rakuRxP5Escape
+ \ start="\%(\\N\)\@2<={"
+ \ end="}"
+ \ contained
+syn match rakuRxP5Quantifier display contained "\%([+*]\|(\@1<!?\)"
+syn match rakuRxP5ReadRef display contained "\\[1-9]\d\@!"
+syn match rakuRxP5ReadRef display contained "\[A-Za-z_\xC0-\xFF0-9]<\@=" nextgroup=rakuRxP5ReadRefId
+syn region rakuRxP5ReadRefId
+ \ matchgroup=rakuRxP5Escape
+ \ start="<"
+ \ end=">"
+ \ contained
+syn match rakuRxP5WriteRef display contained "\\g\%(\d\|{\)\@=" nextgroup=rakuRxP5WriteRefId
+syn match rakuRxP5WriteRefId display contained "\d\+"
+syn region rakuRxP5WriteRefId
+ \ matchgroup=rakuRxP5Escape
+ \ start="{"
+ \ end="}"
+ \ contained
+syn match rakuRxP5Prop display contained "\\[pP]\%(\a\|{\)\@=" nextgroup=rakuRxP5PropId
+syn match rakuRxP5PropId display contained "\a"
+syn region rakuRxP5PropId
+ \ matchgroup=rakuRxP5Escape
+ \ start="{"
+ \ end="}"
+ \ contained
+syn match rakuRxP5Meta display contained "[(|).]"
+syn match rakuRxP5ParenMod display contained "(\@1<=?\@=" nextgroup=rakuRxP5Mod,rakuRxP5ModName,rakuRxP5Code
+syn match rakuRxP5Mod display contained "?\%(<\?=\|<\?!\|[#:|]\)"
+syn match rakuRxP5Mod display contained "?-\?[impsx]\+"
+syn match rakuRxP5Mod display contained "?\%([-+]\?\d\+\|R\)"
+syn match rakuRxP5Mod display contained "?(DEFINE)"
+syn match rakuRxP5Mod display contained "?\%(&\|P[>=]\)" nextgroup=rakuRxP5ModDef
+syn match rakuRxP5ModDef display contained "\h\w*"
+syn region rakuRxP5ModName
+ \ matchgroup=rakuStringSpecial
+ \ start="?'"
+ \ end="'"
+ \ contained
+syn region rakuRxP5ModName
+ \ matchgroup=rakuStringSpecial
+ \ start="?P\?<"
+ \ end=">"
+ \ contained
+syn region rakuRxP5Code
+ \ matchgroup=rakuStringSpecial
+ \ start="??\?{"
+ \ end="})\@="
+ \ contained
+ \ contains=TOP
+syn match rakuRxP5EscMeta display contained "\\[?*.{}()[\]|\^$]"
+syn match rakuRxP5Count display contained "\%({\d\+\%(,\%(\d\+\)\?\)\?}\)\@=" nextgroup=rakuRxP5CountId
+syn region rakuRxP5CountId
+ \ matchgroup=rakuRxP5Escape
+ \ start="{"
+ \ end="}"
+ \ contained
+syn match rakuRxP5Verb display contained "(\@1<=\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\?\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\?\|ACCEPT\)"
+syn region rakuRxP5QuoteMeta
+ \ matchgroup=rakuRxP5Escape
+ \ start="\\Q"
+ \ end="\\E"
+ \ contained
+ \ contains=@rakuVariables,rakuEscBackSlash
+syn region rakuRxP5CharClass
+ \ matchgroup=rakuStringSpecial
+ \ start="\[\^\?"
+ \ skip="\\]"
+ \ end="]"
+ \ contained
+ \ contains=@rakuRegexP5Class
+syn region rakuRxP5Posix
+ \ matchgroup=rakuRxP5Escape
+ \ start="\[:"
+ \ end=":]"
+ \ contained
+syn match rakuRxP5Range display contained "-"
+
+" m:P5//
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=/"
+ \ skip="\\/"
+ \ end="/"
+ \ contains=@rakuRegexP5,rakuVariable,rakuVarExclam,rakuVarMatch,rakuVarNum
+
+" m:P5!!
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=!"
+ \ skip="\\!"
+ \ end="!"
+ \ contains=@rakuRegexP5,rakuVariable,rakuVarSlash,rakuVarMatch,rakuVarNum
+
+" m:P5$$, m:P5||, etc
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=\z([\"'`|,$]\)"
+ \ skip="\\\z1"
+ \ end="\z1"
+ \ contains=@rakuRegexP5,@rakuVariables
+
+" m:P5 ()
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s\+\)\@<=()\@!"
+ \ skip="\\)"
+ \ end=")"
+ \ contains=@rakuRegexP5,@rakuVariables
+
+" m:P5[]
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=[]\@!"
+ \ skip="\\]"
+ \ end="]"
+ \ contains=@rakuRegexP5,@rakuVariables
+
+" m:P5{}
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<={}\@!"
+ \ skip="\\}"
+ \ end="}"
+ \ contains=@rakuRegexP5,rakuVariables
+
+" m:P5<>
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=<>\@!"
+ \ skip="\\>"
+ \ end=">"
+ \ contains=@rakuRegexP5,rakuVariables
+
+" m:P5«»
+syn region rakuMatch
+ \ matchgroup=rakuQuote
+ \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=«»\@!"
+ \ skip="\\»"
+ \ end="»"
+ \ contains=@rakuRegexP5,rakuVariables
+
+endif
+
+" Comments
+
+syn match rakuAttention display "\<\%(ACHTUNG\|ATTN\|ATTENTION\|FIXME\|NB\|TODO\|TBD\|WTF\|XXX\|NOTE\)" contained
+
+" normal end-of-line comment
+syn match rakuComment display "#.*" contains=rakuAttention
+
+" Multiline comments. Arbitrary numbers of opening brackets are allowed,
+" but we only define regions for 1 to 3
+syn region rakuBracketComment
+ \ start="#[`|=]("
+ \ skip="([^)]*)"
+ \ end=")"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ start="#[`|=]\["
+ \ skip="\[[^\]]*]"
+ \ end="]"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ start="#[`|=]{"
+ \ skip="{[^}]*}"
+ \ end="}"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ start="#[`|=]<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ start="#[`|=]«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contains=rakuAttention,rakuBracketComment
+
+" Comments with double and triple delimiters
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=](("
+ \ skip="((\%([^)\|))\@!]\)*))"
+ \ end="))"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]((("
+ \ skip="(((\%([^)]\|)\%())\)\@!\)*)))"
+ \ end=")))"
+ \ contains=rakuAttention,rakuBracketComment
+
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]\[\["
+ \ skip="\[\[\%([^\]]\|]]\@!\)*]]"
+ \ end="]]"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]\[\[\["
+ \ skip="\[\[\[\%([^\]]\|]\%(]]\)\@!\)*]]]"
+ \ end="]]]"
+ \ contains=rakuAttention,rakuBracketComment
+
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]{{"
+ \ skip="{{\%([^}]\|}}\@!\)*}}"
+ \ end="}}"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]{{{"
+ \ skip="{{{\%([^}]\|}\%(}}\)\@!\)*}}}"
+ \ end="}}}"
+ \ contains=rakuAttention,rakuBracketComment
+
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]<<"
+ \ skip="<<\%([^>]\|>>\@!\)*>>"
+ \ end=">>"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]<<<"
+ \ skip="<<<\%([^>]\|>\%(>>\)\@!\)*>>>"
+ \ end=">>>"
+ \ contains=rakuAttention,rakuBracketComment
+
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]««"
+ \ skip="««\%([^»]\|»»\@!\)*»»"
+ \ end="»»"
+ \ contains=rakuAttention,rakuBracketComment
+syn region rakuBracketComment
+ \ matchgroup=rakuBracketComment
+ \ start="#[`|=]«««"
+ \ skip="«««\%([^»]\|»\%(»»\)\@!\)*»»»"
+ \ end="»»»"
+ \ contains=rakuAttention,rakuBracketComment
+
+syn match rakuShebang display "\%^#!.*"
+
+" => autoquoting
+syn match rakuStringAuto display "\.\@1<!\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\%(p5\)\@2<![RSXZ]\@1<!=>"
+syn match rakuStringAuto display "\.\@1<!\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\s\+=>"
+syn match rakuStringAuto display "\.\@1<!\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)p5\ze=>"
+
+" Pod
+
+" Abbreviated blocks (implicit code forbidden)
+syn region rakuPodAbbrRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^\s*\zs=\ze\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contains=rakuPodAbbrNoCodeType
+ \ keepend
+
+syn region rakuPodAbbrNoCodeType
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=rakuPodName,rakuPodAbbrNoCode
+
+syn match rakuPodName contained ".\+" contains=@rakuPodFormat
+syn match rakuPodComment contained ".\+"
+
+syn region rakuPodAbbrNoCode
+ \ start="^"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=@rakuPodFormat
+
+" Abbreviated blocks (everything is code)
+syn region rakuPodAbbrRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^\s*\zs=\zecode\>"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contains=rakuPodAbbrCodeType
+ \ keepend
+
+syn region rakuPodAbbrCodeType
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=rakuPodName,rakuPodAbbrCode
+
+syn region rakuPodAbbrCode
+ \ start="^"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+
+" Abbreviated blocks (everything is a comment)
+syn region rakuPodAbbrRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^=\zecomment\>"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contains=rakuPodAbbrCommentType
+ \ keepend
+
+syn region rakuPodAbbrCommentType
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=rakuPodComment,rakuPodAbbrNoCode
+
+" Abbreviated blocks (implicit code allowed)
+syn region rakuPodAbbrRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^=\ze\%(pod\|item\|nested\|\u\+\)\>"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contains=rakuPodAbbrType
+ \ keepend
+
+syn region rakuPodAbbrType
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=rakuPodName,rakuPodAbbr
+
+syn region rakuPodAbbr
+ \ start="^"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=@rakuPodFormat,rakuPodImplicitCode
+
+" Abbreviated block to end-of-file
+syn region rakuPodAbbrRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^=\zeEND\>"
+ \ end="\%$"
+ \ contains=rakuPodAbbrEOFType
+ \ keepend
+
+syn region rakuPodAbbrEOFType
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="\%$"
+ \ contained
+ \ contains=rakuPodName,rakuPodAbbrEOF
+
+syn region rakuPodAbbrEOF
+ \ start="^"
+ \ end="\%$"
+ \ contained
+ \ contains=@rakuPodNestedBlocks,@rakuPodFormat,rakuPodImplicitCode
+
+" Directives
+syn region rakuPodDirectRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^=\%(config\|use\)\>"
+ \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
+ \ contains=rakuPodDirectArgRegion
+ \ keepend
+
+syn region rakuPodDirectArgRegion
+ \ matchgroup=rakuPodType
+ \ start="\S\+"
+ \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
+ \ contained
+ \ contains=rakuPodDirectConfigRegion
+
+syn region rakuPodDirectConfigRegion
+ \ start=""
+ \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
+ \ contained
+ \ contains=@rakuPodConfig
+
+" =encoding is a special directive
+syn region rakuPodDirectRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^=encoding\>"
+ \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
+ \ contains=rakuPodEncodingArgRegion
+ \ keepend
+
+syn region rakuPodEncodingArgRegion
+ \ matchgroup=rakuPodName
+ \ start="\S\+"
+ \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
+ \ contained
+
+" Paragraph blocks (implicit code forbidden)
+syn region rakuPodParaRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^\s*\zs=for\>"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contains=rakuPodParaNoCodeTypeRegion
+ \ keepend extend
+
+syn region rakuPodParaNoCodeTypeRegion
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=rakuPodParaNoCode,rakuPodParaConfigRegion
+
+syn region rakuPodParaConfigRegion
+ \ start=""
+ \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\@1<!\)"
+ \ contained
+ \ contains=@rakuPodConfig
+
+syn region rakuPodParaNoCode
+ \ start="^[^=]"
+ \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=@rakuPodFormat
+
+" Paragraph blocks (everything is code)
+syn region rakuPodParaRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^\s*\zs=for\>\ze\s*code\>"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contains=rakuPodParaCodeTypeRegion
+ \ keepend extend
+
+syn region rakuPodParaCodeTypeRegion
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=rakuPodParaCode,rakuPodParaConfigRegion
+
+syn region rakuPodParaCode
+ \ start="^[^=]"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+
+" Paragraph blocks (implicit code allowed)
+syn region rakuPodParaRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^\s*\zs=for\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>"
+ \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contains=rakuPodParaTypeRegion
+ \ keepend extend
+
+syn region rakuPodParaTypeRegion
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=rakuPodPara,rakuPodParaConfigRegion
+
+syn region rakuPodPara
+ \ start="^[^=]"
+ \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
+ \ contained
+ \ contains=@rakuPodFormat,rakuPodImplicitCode
+
+" Paragraph block to end-of-file
+syn region rakuPodParaRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^=for\>\ze\s\+END\>"
+ \ end="\%$"
+ \ contains=rakuPodParaEOFTypeRegion
+ \ keepend extend
+
+syn region rakuPodParaEOFTypeRegion
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="\%$"
+ \ contained
+ \ contains=rakuPodParaEOF,rakuPodParaConfigRegion
+
+syn region rakuPodParaEOF
+ \ start="^[^=]"
+ \ end="\%$"
+ \ contained
+ \ contains=@rakuPodNestedBlocks,@rakuPodFormat,rakuPodImplicitCode
+
+" Delimited blocks (implicit code forbidden)
+syn region rakuPodDelimRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^\z(\s*\)\zs=begin\>"
+ \ end="^\z1\zs=end\>"
+ \ contains=rakuPodDelimNoCodeTypeRegion
+ \ keepend extend skipwhite
+ \ nextgroup=rakuPodType
+
+syn region rakuPodDelimNoCodeTypeRegion
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\s*\zs\ze=end\>"
+ \ contained
+ \ contains=rakuPodDelimNoCode,rakuPodDelimConfigRegion
+
+syn region rakuPodDelimConfigRegion
+ \ start=""
+ \ end="^\s*\zs\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
+ \ contained
+ \ contains=@rakuPodConfig
+
+syn region rakuPodDelimNoCode
+ \ start="^"
+ \ end="^\s*\zs\ze=end\>"
+ \ contained
+ \ contains=@rakuPodNestedBlocks,@rakuPodFormat
+
+" Delimited blocks (everything is code)
+syn region rakuPodDelimRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^\z(\s*\)\zs=begin\>\ze\s*code\>"
+ \ end="^\z1\zs=end\>"
+ \ contains=rakuPodDelimCodeTypeRegion
+ \ keepend extend skipwhite
+ \ nextgroup=rakuPodType
+
+syn region rakuPodDelimCodeTypeRegion
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\s*\zs\ze=end\>"
+ \ contained
+ \ contains=rakuPodDelimCode,rakuPodDelimConfigRegion
+
+syn region rakuPodDelimCode
+ \ start="^"
+ \ end="^\s*\zs\ze=end\>"
+ \ contained
+ \ contains=@rakuPodNestedBlocks
+
+" Delimited blocks (implicit code allowed)
+syn region rakuPodDelimRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^\z(\s*\)\zs=begin\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>"
+ \ end="^\z1\zs=end\>"
+ \ contains=rakuPodDelimTypeRegion
+ \ keepend extend skipwhite
+ \ nextgroup=rakuPodType
+
+syn region rakuPodDelimTypeRegion
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="^\s*\zs\ze=end\>"
+ \ contained
+ \ contains=rakuPodDelim,rakuPodDelimConfigRegion
+
+syn region rakuPodDelim
+ \ start="^"
+ \ end="^\s*\zs\ze=end\>"
+ \ contained
+ \ contains=@rakuPodNestedBlocks,@rakuPodFormat,rakuPodImplicitCode
+
+" Delimited block to end-of-file
+syn region rakuPodDelimRegion
+ \ matchgroup=rakuPodPrefix
+ \ start="^=begin\>\ze\s\+END\>"
+ \ end="\%$"
+ \ extend
+ \ contains=rakuPodDelimEOFTypeRegion
+
+syn region rakuPodDelimEOFTypeRegion
+ \ matchgroup=rakuPodType
+ \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+ \ end="\%$"
+ \ contained
+ \ contains=rakuPodDelimEOF,rakuPodDelimConfigRegion
+
+syn region rakuPodDelimEOF
+ \ start="^"
+ \ end="\%$"
+ \ contained
+ \ contains=@rakuPodNestedBlocks,@rakuPodFormat,rakuPodImplicitCode
+
+syn cluster rakuPodConfig
+ \ add=rakuPodConfigOperator
+ \ add=rakuPodExtraConfig
+ \ add=rakuStringAuto
+ \ add=rakuPodAutoQuote
+ \ add=rakuStringSQ
+
+syn region rakuPodParens
+ \ start="("
+ \ end=")"
+ \ contained
+ \ contains=rakuNumber,rakuStringSQ
+
+syn match rakuPodAutoQuote display contained "=>"
+syn match rakuPodConfigOperator display contained ":!\?" nextgroup=rakuPodConfigOption
+syn match rakuPodConfigOption display contained "[^[:space:](<]\+" nextgroup=rakuPodParens,rakuStringAngle
+syn match rakuPodExtraConfig display contained "^="
+syn match rakuPodVerticalBar display contained "|"
+syn match rakuPodColon display contained ":"
+syn match rakuPodSemicolon display contained ";"
+syn match rakuPodComma display contained ","
+syn match rakuPodImplicitCode display contained "^\s.*"
+syn match rakuPodType display contained "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
+
+" These may appear inside delimited blocks
+syn cluster rakuPodNestedBlocks
+ \ add=rakuPodAbbrRegion
+ \ add=rakuPodDirectRegion
+ \ add=rakuPodParaRegion
+ \ add=rakuPodDelimRegion
+
+" Pod formatting codes
+
+syn cluster rakuPodFormat
+ \ add=rakuPodFormatOne
+ \ add=rakuPodFormatTwo
+ \ add=rakuPodFormatThree
+ \ add=rakuPodFormatFrench
+
+" Balanced angles found inside formatting codes. Ensures proper nesting.
+
+syn region rakuPodFormatAnglesOne
+ \ matchgroup=rakuPodFormat
+ \ start="<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ transparent contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatAnglesOne
+
+syn region rakuPodFormatAnglesTwo
+ \ matchgroup=rakuPodFormat
+ \ start="<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ transparent contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatAnglesOne,rakuPodFormatAnglesTwo
+
+syn region rakuPodFormatAnglesThree
+ \ matchgroup=rakuPodFormat
+ \ start="<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ transparent contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatAnglesOne,rakuPodFormatAnglesTwo,rakuPodFormatAnglesThree
+
+syn region rakuPodFormatAnglesFrench
+ \ matchgroup=rakuPodFormat
+ \ start="«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ transparent contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatAnglesOne,rakuPodFormatAnglesTwo,rakuPodFormatAnglesThree
+
+" All formatting codes
+
+syn region rakuPodFormatOne
+ \ matchgroup=rakuPodFormatCode
+ \ start="\u<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne
+
+syn region rakuPodFormatTwo
+ \ matchgroup=rakuPodFormatCode
+ \ start="\u<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo
+
+syn region rakuPodFormatThree
+ \ matchgroup=rakuPodFormatCode
+ \ start="\u<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree
+
+syn region rakuPodFormatFrench
+ \ matchgroup=rakuPodFormatCode
+ \ start="\u«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree
+
+" C<> and V<> don't allow nested formatting formatting codes
+
+syn region rakuPodFormatOne
+ \ matchgroup=rakuPodFormatCode
+ \ start="[CV]<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=rakuPodFormatAnglesOne
+
+syn region rakuPodFormatTwo
+ \ matchgroup=rakuPodFormatCode
+ \ start="[CV]<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=rakuPodFormatAnglesTwo
+
+syn region rakuPodFormatThree
+ \ matchgroup=rakuPodFormatCode
+ \ start="[CV]<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=rakuPodFormatAnglesThree
+
+syn region rakuPodFormatFrench
+ \ matchgroup=rakuPodFormatCode
+ \ start="[CV]«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=rakuPodFormatAnglesFrench
+
+" L<> can have a "|" separator
+
+syn region rakuPodFormatOne
+ \ matchgroup=rakuPodFormatCode
+ \ start="L<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodVerticalBar
+
+syn region rakuPodFormatTwo
+ \ matchgroup=rakuPodFormatCode
+ \ start="L<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodVerticalBar
+
+syn region rakuPodFormatThree
+ \ matchgroup=rakuPodFormatCode
+ \ start="L<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar
+
+syn region rakuPodFormatFrench
+ \ matchgroup=rakuPodFormatCode
+ \ start="L«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar
+
+" E<> can have a ";" separator
+
+syn region rakuPodFormatOne
+ \ matchgroup=rakuPodFormatCode
+ \ start="E<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodSemiColon
+
+syn region rakuPodFormatTwo
+ \ matchgroup=rakuPodFormatCode
+ \ start="E<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodSemiColon
+
+syn region rakuPodFormatThree
+ \ matchgroup=rakuPodFormatCode
+ \ start="E<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodSemiColon
+
+syn region rakuPodFormatFrench
+ \ matchgroup=rakuPodFormatCode
+ \ start="E«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodSemiColon
+
+" M<> can have a ":" separator
+
+syn region rakuPodFormatOne
+ \ matchgroup=rakuPodFormatCode
+ \ start="M<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodColon
+
+syn region rakuPodFormatTwo
+ \ matchgroup=rakuPodFormatCode
+ \ start="M<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodColon
+
+syn region rakuPodFormatThree
+ \ matchgroup=rakuPodFormatCode
+ \ start="M<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodColon
+
+syn region rakuPodFormatFrench
+ \ matchgroup=rakuPodFormatCode
+ \ start="M«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodColon
+
+" D<> can have "|" and ";" separators
+
+syn region rakuPodFormatOne
+ \ matchgroup=rakuPodFormatCode
+ \ start="D<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodVerticalBar,rakuPodSemiColon
+
+syn region rakuPodFormatTwo
+ \ matchgroup=rakuPodFormatCode
+ \ start="D<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=rakuPodFormatAngleTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodVerticalBar,rakuPodSemiColon
+
+syn region rakuPodFormatThree
+ \ matchgroup=rakuPodFormatCode
+ \ start="D<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar,rakuPodSemiColon
+
+syn region rakuPodFormatFrench
+ \ matchgroup=rakuPodFormatCode
+ \ start="D«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar,rakuPodSemiColon
+
+" X<> can have "|", "," and ";" separators
+
+syn region rakuPodFormatOne
+ \ matchgroup=rakuPodFormatCode
+ \ start="X<"
+ \ skip="<[^>]*>"
+ \ end=">"
+ \ contained
+ \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodVerticalBar,rakuPodSemiColon,rakuPodComma
+
+syn region rakuPodFormatTwo
+ \ matchgroup=rakuPodFormatCode
+ \ start="X<<"
+ \ skip="<<[^>]*>>"
+ \ end=">>"
+ \ contained
+ \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodVerticalBar,rakuPodSemiColon,rakuPodComma
+
+syn region rakuPodFormatThree
+ \ matchgroup=rakuPodFormatCode
+ \ start="X<<<"
+ \ skip="<<<[^>]*>>>"
+ \ end=">>>"
+ \ contained
+ \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar,rakuPodSemiColon,rakuPodComma
+
+syn region rakuPodFormatFrench
+ \ matchgroup=rakuPodFormatCode
+ \ start="X«"
+ \ skip="«[^»]*»"
+ \ end="»"
+ \ contained
+ \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar,rakuPodSemiColon,rakuPodComma
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_raku_syntax_inits")
+ if version < 508
+ let did_raku_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink rakuEscOctOld rakuError
+ HiLink rakuPackageTwigil rakuTwigil
+ HiLink rakuStringAngle rakuString
+ HiLink rakuStringAngleFixed rakuString
+ HiLink rakuStringFrench rakuString
+ HiLink rakuStringAngles rakuString
+ HiLink rakuStringSQ rakuString
+ HiLink rakuStringDQ rakuString
+ HiLink rakuStringQ rakuString
+ HiLink rakuStringQ_q rakuString
+ HiLink rakuStringQ_qww rakuString
+ HiLink rakuStringQ_qq rakuString
+ HiLink rakuStringQ_to rakuString
+ HiLink rakuStringQ_qto rakuString
+ HiLink rakuStringQ_qqto rakuString
+ HiLink rakuRxStringSQ rakuString
+ HiLink rakuRxStringDQ rakuString
+ HiLink rakuReplacement rakuString
+ HiLink rakuReplCurly rakuString
+ HiLink rakuReplAngle rakuString
+ HiLink rakuReplFrench rakuString
+ HiLink rakuReplBracket rakuString
+ HiLink rakuReplParen rakuString
+ HiLink rakuTransliteration rakuString
+ HiLink rakuTransRepl rakuString
+ HiLink rakuTransReplCurly rakuString
+ HiLink rakuTransReplAngle rakuString
+ HiLink rakuTransReplFrench rakuString
+ HiLink rakuTransReplBracket rakuString
+ HiLink rakuTransReplParen rakuString
+ HiLink rakuStringAuto rakuString
+ HiLink rakuKey rakuString
+ HiLink rakuMatch rakuString
+ HiLink rakuSubstitution rakuString
+ HiLink rakuMatchBare rakuString
+ HiLink rakuRegexBlock rakuString
+ HiLink rakuRxP5CharClass rakuString
+ HiLink rakuRxP5QuoteMeta rakuString
+ HiLink rakuRxCharClass rakuString
+ HiLink rakuRxQuoteWords rakuString
+ HiLink rakuReduceOp rakuOperator
+ HiLink rakuSetOp rakuOperator
+ HiLink rakuRSXZOp rakuOperator
+ HiLink rakuHyperOp rakuOperator
+ HiLink rakuPostHyperOp rakuOperator
+ HiLink rakuQuoteQ rakuQuote
+ HiLink rakuQuoteQ_q rakuQuote
+ HiLink rakuQuoteQ_qww rakuQuote
+ HiLink rakuQuoteQ_qq rakuQuote
+ HiLink rakuQuoteQ_to rakuQuote
+ HiLink rakuQuoteQ_qto rakuQuote
+ HiLink rakuQuoteQ_qqto rakuQuote
+ HiLink rakuQuoteQ_PIR rakuQuote
+ HiLink rakuMatchStart_m rakuQuote
+ HiLink rakuMatchStart_s rakuQuote
+ HiLink rakuMatchStart_tr rakuQuote
+ HiLink rakuBareSigil rakuVariable
+ HiLink rakuRxRange rakuStringSpecial
+ HiLink rakuRxAnchor rakuStringSpecial
+ HiLink rakuRxBoundary rakuStringSpecial
+ HiLink rakuRxP5Anchor rakuStringSpecial
+ HiLink rakuCodePoint rakuStringSpecial
+ HiLink rakuRxMeta rakuStringSpecial
+ HiLink rakuRxP5Range rakuStringSpecial
+ HiLink rakuRxP5CPId rakuStringSpecial
+ HiLink rakuRxP5Posix rakuStringSpecial
+ HiLink rakuRxP5Mod rakuStringSpecial
+ HiLink rakuRxP5HexSeq rakuStringSpecial
+ HiLink rakuRxP5OctSeq rakuStringSpecial
+ HiLink rakuRxP5WriteRefId rakuStringSpecial
+ HiLink rakuHexSequence rakuStringSpecial
+ HiLink rakuOctSequence rakuStringSpecial
+ HiLink rakuRxP5Named rakuStringSpecial
+ HiLink rakuRxP5PropId rakuStringSpecial
+ HiLink rakuRxP5Quantifier rakuStringSpecial
+ HiLink rakuRxP5CountId rakuStringSpecial
+ HiLink rakuRxP5Verb rakuStringSpecial
+ HiLink rakuRxAssertGroup rakuStringSpecial2
+ HiLink rakuEscape rakuStringSpecial2
+ HiLink rakuEscNull rakuStringSpecial2
+ HiLink rakuEscHash rakuStringSpecial2
+ HiLink rakuEscQQ rakuStringSpecial2
+ HiLink rakuEscQuote rakuStringSpecial2
+ HiLink rakuEscDoubleQuote rakuStringSpecial2
+ HiLink rakuEscBackTick rakuStringSpecial2
+ HiLink rakuEscForwardSlash rakuStringSpecial2
+ HiLink rakuEscVerticalBar rakuStringSpecial2
+ HiLink rakuEscExclamation rakuStringSpecial2
+ HiLink rakuEscDollar rakuStringSpecial2
+ HiLink rakuEscOpenCurly rakuStringSpecial2
+ HiLink rakuEscCloseCurly rakuStringSpecial2
+ HiLink rakuEscCloseBracket rakuStringSpecial2
+ HiLink rakuEscCloseAngle rakuStringSpecial2
+ HiLink rakuEscCloseFrench rakuStringSpecial2
+ HiLink rakuEscBackSlash rakuStringSpecial2
+ HiLink rakuEscCodePoint rakuStringSpecial2
+ HiLink rakuEscOct rakuStringSpecial2
+ HiLink rakuEscHex rakuStringSpecial2
+ HiLink rakuRxEscape rakuStringSpecial2
+ HiLink rakuRxCapture rakuStringSpecial2
+ HiLink rakuRxAlternation rakuStringSpecial2
+ HiLink rakuRxP5 rakuStringSpecial2
+ HiLink rakuRxP5ReadRef rakuStringSpecial2
+ HiLink rakuRxP5Oct rakuStringSpecial2
+ HiLink rakuRxP5Hex rakuStringSpecial2
+ HiLink rakuRxP5EscMeta rakuStringSpecial2
+ HiLink rakuRxP5Meta rakuStringSpecial2
+ HiLink rakuRxP5Escape rakuStringSpecial2
+ HiLink rakuRxP5CodePoint rakuStringSpecial2
+ HiLink rakuRxP5WriteRef rakuStringSpecial2
+ HiLink rakuRxP5Prop rakuStringSpecial2
+
+ HiLink rakuProperty Tag
+ HiLink rakuAttention Todo
+ HiLink rakuType Type
+ HiLink rakuError Error
+ HiLink rakuBlockLabel Label
+ HiLink rakuNormal Normal
+ HiLink rakuIdentifier Normal
+ HiLink rakuPackage Normal
+ HiLink rakuPackageScope Normal
+ HiLink rakuNumber Number
+ HiLink rakuOctNumber Number
+ HiLink rakuBinNumber Number
+ HiLink rakuHexNumber Number
+ HiLink rakuDecNumber Number
+ HiLink rakuString String
+ HiLink rakuRepeat Repeat
+ HiLink rakuPragma Keyword
+ HiLink rakuPreDeclare Keyword
+ HiLink rakuDeclare Keyword
+ HiLink rakuDeclareRegex Keyword
+ HiLink rakuVarStorage Special
+ HiLink rakuFlowControl Special
+ HiLink rakuOctBase Special
+ HiLink rakuBinBase Special
+ HiLink rakuHexBase Special
+ HiLink rakuDecBase Special
+ HiLink rakuTwigil Special
+ HiLink rakuStringSpecial2 Special
+ HiLink rakuVersion Special
+ HiLink rakuComment Comment
+ HiLink rakuBracketComment Comment
+ HiLink rakuInclude Include
+ HiLink rakuShebang PreProc
+ HiLink rakuClosureTrait PreProc
+ HiLink rakuOperator Operator
+ HiLink rakuContext Operator
+ HiLink rakuQuote Delimiter
+ HiLink rakuTypeConstraint PreCondit
+ HiLink rakuException Exception
+ HiLink rakuVariable Identifier
+ HiLink rakuVarSlash Identifier
+ HiLink rakuVarNum Identifier
+ HiLink rakuVarExclam Identifier
+ HiLink rakuVarMatch Identifier
+ HiLink rakuVarName Identifier
+ HiLink rakuMatchVar Identifier
+ HiLink rakuRxP5ReadRefId Identifier
+ HiLink rakuRxP5ModDef Identifier
+ HiLink rakuRxP5ModName Identifier
+ HiLink rakuConditional Conditional
+ HiLink rakuStringSpecial SpecialChar
+
+ HiLink rakuPodAbbr rakuPod
+ HiLink rakuPodAbbrEOF rakuPod
+ HiLink rakuPodAbbrNoCode rakuPod
+ HiLink rakuPodAbbrCode rakuPodCode
+ HiLink rakuPodPara rakuPod
+ HiLink rakuPodParaEOF rakuPod
+ HiLink rakuPodParaNoCode rakuPod
+ HiLink rakuPodParaCode rakuPodCode
+ HiLink rakuPodDelim rakuPod
+ HiLink rakuPodDelimEOF rakuPod
+ HiLink rakuPodDelimNoCode rakuPod
+ HiLink rakuPodDelimCode rakuPodCode
+ HiLink rakuPodImplicitCode rakuPodCode
+ HiLink rakuPodExtraConfig rakuPodPrefix
+ HiLink rakuPodVerticalBar rakuPodFormatCode
+ HiLink rakuPodColon rakuPodFormatCode
+ HiLink rakuPodSemicolon rakuPodFormatCode
+ HiLink rakuPodComma rakuPodFormatCode
+ HiLink rakuPodFormatOne rakuPodFormat
+ HiLink rakuPodFormatTwo rakuPodFormat
+ HiLink rakuPodFormatThree rakuPodFormat
+ HiLink rakuPodFormatFrench rakuPodFormat
+
+ HiLink rakuPodType Type
+ HiLink rakuPodConfigOption String
+ HiLink rakuPodCode PreProc
+ HiLink rakuPod Comment
+ HiLink rakuPodComment Comment
+ HiLink rakuPodAutoQuote Operator
+ HiLink rakuPodConfigOperator Operator
+ HiLink rakuPodPrefix Statement
+ HiLink rakuPodName Identifier
+ HiLink rakuPodFormatCode SpecialChar
+ HiLink rakuPodFormat SpecialComment
+
+ delcommand HiLink
+endif
+
+if exists("raku_fold") || exists("raku_extended_all")
+ setl foldmethod=syntax
+ syn region rakuBlockFold
+ \ start="^\z(\s*\)\%(my\|our\|augment\|multi\|proto\|only\)\?\s*\%(\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\s\+\)\?\<\%(CATCH\|try\|ENTER\|LEAVE\|CHECK\|INIT\|BEGIN\|END\|KEEP\|UNDO\|PRE\|POST\|module\|package\|enum\|subset\|class\|sub\%(method\)\?\|multi\|method\|slang\|grammar\|regex\|token\|rule\)\>[^{]\+\%({\s*\%(#.*\)\?\)\?$"
+ \ end="^\z1}"
+ \ transparent fold keepend extend
+endif
+
+let b:current_syntax = "raku"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim:ts=8:sts=4:sw=4:expandtab:ft=vim
diff --git a/runtime/syntax/raml.vim b/runtime/syntax/raml.vim
new file mode 100644
index 0000000..062a71c
--- /dev/null
+++ b/runtime/syntax/raml.vim
@@ -0,0 +1,106 @@
+" Vim syntax file
+" Language: RAML (RESTful API Modeling Language)
+" Maintainer: Eric Hopkins <eric.on.tech@gmail.com>
+" URL: https://github.com/in3d/vim-raml
+" License: Same as Vim
+" Last Change: 2018-11-03
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword ramlTodo contained TODO FIXME XXX NOTE
+
+syn region ramlComment display oneline start='\%(^\|\s\)#' end='$'
+ \ contains=ramlTodo,@Spell
+
+syn region ramlVersion display oneline start='#%RAML' end='$'
+
+syn match ramlNodeProperty '!\%(![^\\^% ]\+\|[^!][^:/ ]*\)'
+
+syn match ramlAnchor '&.\+'
+
+syn match ramlAlias '\*.\+'
+
+syn match ramlDelimiter '[-,:]'
+syn match ramlBlock '[\[\]{}>|]'
+syn match ramlOperator '[?+-]'
+syn match ramlKey '\h\+\(?\)\?\ze\s*:'
+syn match ramlKey '\w\+\(\s\+\w\+\)*\(?\)\?\ze\s*:'
+syn match routeKey '\/\w\+\(\s\+\w\+\)*\ze\s*:'
+syn match routeKey 'application\/\w\+\ze\s*:'
+syn match routeParamKey '\/{\w\+}*\ze\s*:'
+
+syn region ramlString matchgroup=ramlStringDelimiter
+ \ start=+\s"+ skip=+\\"+ end=+"+
+ \ contains=ramlEscape
+syn region ramlString matchgroup=ramlStringDelimiter
+ \ start=+\s'+ skip=+''+ end=+'+
+ \ contains=ramlStringEscape
+syn region ramlParameter matchgroup=ramlParameterDelimiter
+ \ start=+<<+ skip=+''+ end=+>>+
+syn match ramlEscape contained display +\\[\\"abefnrtv^0_ NLP]+
+syn match ramlEscape contained display '\\x\x\{2}'
+syn match ramlEscape contained display '\\u\x\{4}'
+syn match ramlEscape contained display '\\U\x\{8}'
+syn match ramlEscape display '\\\%(\r\n\|[\r\n]\)'
+syn match ramlStringEscape contained +''+
+
+syn match ramlNumber display
+ \ '\<[+-]\=\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\='
+syn match ramlNumber display '0\o\+'
+syn match ramlNumber display '0x\x\+'
+syn match ramlNumber display '([+-]\=[iI]nf)'
+syn match ramlNumber display '(NaN)'
+
+syn match ramlConstant '\<[~yn]\>'
+syn keyword ramlConstant true True TRUE false False FALSE
+syn keyword ramlConstant yes Yes on ON no No off OFF
+syn keyword ramlConstant null Null NULL nil Nil NIL
+
+syn keyword httpVerbs get post put delete head patch options
+syn keyword ramlTypes string number integer date boolean file
+
+syn match ramlTimestamp '\d\d\d\d-\%(1[0-2]\|\d\)-\%(3[0-2]\|2\d\|1\d\|\d\)\%( \%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d [+-]\%([01]\d\|2[0-3]\):[0-5]\d\|t\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d[+-]\%([01]\d\|2[0-3]\):[0-5]\d\|T\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\dZ\)\='
+
+syn region ramlDocumentHeader start='---' end='$' contains=ramlDirective
+syn match ramlDocumentEnd '\.\.\.'
+
+syn match ramlDirective contained '%[^:]\+:.\+'
+
+hi def link ramlVersion String
+hi def link routeInterpolation String
+hi def link ramlInterpolation Constant
+hi def link ramlTodo Todo
+hi def link ramlComment Comment
+hi def link ramlDocumentHeader PreProc
+hi def link ramlDocumentEnd PreProc
+hi def link ramlDirective Keyword
+hi def link ramlNodeProperty Type
+hi def link ramlAnchor Type
+hi def link ramlAlias Type
+hi def link ramlBlock Operator
+hi def link ramlOperator Operator
+hi def link routeParamKey SpecialChar
+hi def link ramlKey Identifier
+hi def link routeKey SpecialChar
+hi def link ramlParameterDelimiter Type
+hi def link ramlParameter Type
+hi def link ramlString String
+hi def link ramlStringDelimiter ramlString
+hi def link ramlEscape SpecialChar
+hi def link ramlStringEscape SpecialChar
+hi def link ramlNumber Number
+hi def link ramlConstant Constant
+hi def link ramlTimestamp Number
+hi def link httpVerbs Statement
+hi def link ramlTypes Type
+hi def link ramlDelimiter Delimiter
+
+let b:current_syntax = "raml"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/ratpoison.vim b/runtime/syntax/ratpoison.vim
new file mode 100644
index 0000000..2322e85
--- /dev/null
+++ b/runtime/syntax/ratpoison.vim
@@ -0,0 +1,275 @@
+" Vim syntax file
+" Language: Ratpoison configuration/commands file ( /etc/ratpoisonrc ~/.ratpoisonrc )
+" Maintainer: Magnus Woldrich <m@japh.se>
+" URL: http://github.com/trapd00r/vim-syntax-ratpoison
+" Last Change: 2021-04-12 13:46:04
+" Previous Maintainer: Doug Kearns <djkea2@gus.gscit.monash.edu.au>
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match ratpoisonComment "^\s*#.*$" contains=ratpoisonTodo
+
+syn keyword ratpoisonTodo TODO NOTE FIXME XXX contained
+
+syn case ignore
+syn keyword ratpoisonBooleanArg on off contained
+syn case match
+
+syn keyword ratpoisonCommandArg abort addhook alias banish chdir contained
+syn keyword ratpoisonCommandArg clrunmanaged cnext colon compat cother contained
+syn keyword ratpoisonCommandArg cprev curframe dedicate definekey delete contained
+syn keyword ratpoisonCommandArg delkmap describekey echo escape exec contained
+syn keyword ratpoisonCommandArg fdump focus focusdown focuslast focusleft contained
+syn keyword ratpoisonCommandArg focusprev focusright focusup frestore fselect contained
+syn keyword ratpoisonCommandArg gdelete getenv getsel gmerge gmove contained
+syn keyword ratpoisonCommandArg gnew gnewbg gnext gprev gravity contained
+syn keyword ratpoisonCommandArg groups gselect help hsplit inext contained
+syn keyword ratpoisonCommandArg info iother iprev kill lastmsg contained
+syn keyword ratpoisonCommandArg license link listhook meta msgwait contained
+syn keyword ratpoisonCommandArg newkmap newwm next nextscreen number contained
+syn keyword ratpoisonCommandArg only other prev prevscreen prompt contained
+syn keyword ratpoisonCommandArg putsel quit ratclick rathold ratrelwarp contained
+syn keyword ratpoisonCommandArg ratwarp readkey redisplay redo remhook contained
+syn keyword ratpoisonCommandArg remove resize restart rudeness sdump contained
+syn keyword ratpoisonCommandArg select set setenv sfdump shrink contained
+syn keyword ratpoisonCommandArg source sselect startup_message time title contained
+syn keyword ratpoisonCommandArg tmpwm unalias undefinekey undo unmanage contained
+syn keyword ratpoisonCommandArg unsetenv verbexec version vsplit warp contained
+syn keyword ratpoisonCommandArg windows framefmt infofmt contained
+
+syn match ratpoisonGravityArg "\<\(n\|north\)\>" contained
+syn match ratpoisonGravityArg "\<\(nw\|northwest\)\>" contained
+syn match ratpoisonGravityArg "\<\(ne\|northeast\)\>" contained
+syn match ratpoisonGravityArg "\<\(w\|west\)\>" contained
+syn match ratpoisonGravityArg "\<\(c\|center\)\>" contained
+syn match ratpoisonGravityArg "\<\(e\|east\)\>" contained
+syn match ratpoisonGravityArg "\<\(s\|south\)\>" contained
+syn match ratpoisonGravityArg "\<\(sw\|southwest\)\>" contained
+syn match ratpoisonGravityArg "\<\(se\|southeast\)\>" contained
+syn case match
+
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(F[1-9][0-9]\=\|\(\a\|\d\)\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(space\|exclam\|quotedbl\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(numbersign\|dollar\|percent\|ampersand\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(apostrophe\|quoteright\|parenleft\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(parenright\|asterisk\|plus\|comma\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(minus\|period\|slash\|colon\|semicolon\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(less\|equal\|greater\|question\|at\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(bracketleft\|backslash\|bracketright\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(asciicircum\|underscore\|grave\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(quoteleft\|braceleft\|bar\|braceright\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(asciitilde\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(BackSpace\|Tab\|Linefeed\|Clear\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Return\|Pause\|Scroll_Lock\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Sys_Req\|Escape\|Delete\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Home\|Left\|Up\|Right\|Down\|Prior\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Page_Up\|Next\|Page_Down\|End\|Begin\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Select\|Print\|Execute\|Insert\|Undo\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Redo\|Menu\|Find\|Cancel\|Help\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Break\|Mode_switch\|script_switch\|Num_Lock\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Space\|Tab\|Enter\|F[1234]\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Home\|Left\|Up\|Right\|Down\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Prior\|Page_Up\|Next\|Page_Down\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(End\|Begin\|Insert\|Delete\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Equal\|Multiply\|Add\|Separator\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Subtract\|Decimal\|Divide\|\d\)\>" contained nextgroup=ratpoisonCommandArg skipwhite
+
+syn match ratpoisonHookArg "\<\(key\|switchwin\|switchframe\|switchgroup\|quit\|restart\)\>" contained
+
+syn match ratpoisonNumberArg "\<\d\+\>" contained nextgroup=ratpoisonNumberArg skipwhite
+
+syn keyword ratpoisonSetArg barborder contained nextgroup=ratpoisonNumberArg
+syn keyword ratpoisonSetArg bargravity contained nextgroup=ratpoisonGravityArg
+syn keyword ratpoisonSetArg barpadding contained nextgroup=ratpoisonNumberArg
+syn keyword ratpoisonSetArg bgcolor
+syn keyword ratpoisonSetArg border contained nextgroup=ratpoisonNumberArg
+syn keyword ratpoisonSetArg fgcolor
+syn keyword ratpoisonSetArg framefmt contained nextgroup=ratpoisonWinFmtArg
+syn keyword ratpoisonSetArg fwcolor
+syn keyword ratpoisonSetArg framemsgwait contained nextgroup=ratpoisonNumberArg
+syn keyword ratpoisonSetArg gravity contained nextgroup=ratpoisonGravityArg
+syn keyword ratpoisonSetArg bwcolor
+syn keyword ratpoisonSetArg gravity contained nextgroup=ratpoisonGravityArg
+syn keyword ratpoisonSetArg historysize
+syn keyword ratpoisonSetArg historycompaction
+syn keyword ratpoisonSetArg historyexpansion
+syn keyword ratpoisonSetArg infofmt contained nextgroup=ratpoisonWinFmtArg
+syn keyword ratpoisonSetArg topkmap
+syn keyword ratpoisonSetArg barinpadding
+syn keyword ratpoisonSetArg font
+syn keyword ratpoisonSetArg framesels
+syn keyword ratpoisonSetArg maxundos
+syn keyword ratpoisonSetArg inputwidth contained nextgroup=ratpoisonNumberArg
+syn keyword ratpoisonSetArg maxsizegravity contained nextgroup=ratpoisonGravityArg
+syn keyword ratpoisonSetArg msgwait contained nextgroup=ratpoisonNumberArg
+syn keyword ratpoisonSetArg padding contained nextgroup=ratpoisonNumberArg
+syn keyword ratpoisonSetArg resizeunit contained nextgroup=ratpoisonNumberArg
+syn keyword ratpoisonSetArg startup_message
+syn keyword ratpoisonSetArg transgravity contained nextgroup=ratpoisonGravityArg
+syn keyword ratpoisonSetArg waitcursor contained nextgroup=ratpoisonNumberArg
+syn keyword ratpoisonSetArg winfmt contained nextgroup=ratpoisonWinFmtArg
+syn keyword ratpoisonSetArg wingravity contained nextgroup=ratpoisonGravityArg
+syn keyword ratpoisonSetArg winliststyle contained nextgroup=ratpoisonWinListArg
+syn keyword ratpoisonSetArg winname contained nextgroup=ratpoisonWinNameArg
+
+syn match ratpoisonWinFmtArg "%[nstacil]" contained nextgroup=ratpoisonWinFmtArg skipwhite
+syn match ratpoisonFrameFmtArg "%[nstacil]" contained nextgroup=ratpoisonWinFmtArg skipwhite
+syn match ratpoisonInfoFmtArg "%[nstacil]" contained nextgroup=ratpoisonWinFmtArg skipwhite
+
+syn match ratpoisonWinListArg "\<\(row\|column\)\>" contained
+
+syn match ratpoisonWinNameArg "\<\(name\|title\|class\)\>" contained
+
+syn match ratpoisonDefCommand "^\s*set\s*" nextgroup=ratpoisonSetArg
+syn match ratpoisonDefCommand "^\s*defbarborder\s*" nextgroup=ratpoisonNumberArg
+syn match ratpoisonDefCommand "^\s*defbargravity\s*" nextgroup=ratpoisonGravityArg
+syn match ratpoisonDefCommand "^\s*defbarpadding\s*" nextgroup=ratpoisonNumberArg
+syn match ratpoisonDefCommand "^\s*defbgcolor\s*"
+syn match ratpoisonDefCommand "^\s*defborder\s*" nextgroup=ratpoisonNumberArg
+syn match ratpoisonDefCommand "^\s*deffgcolor\s*"
+syn match ratpoisonDefCommand "^\s*deffont\s*"
+syn match ratpoisonDefCommand "^\s*defframefmt\s*" nextgroup=ratpoisonWinFmtArg
+syn match ratpoisonDefCommand "^\s*defframesels\s*"
+syn match ratpoisonDefCommand "^\s*definputwidth\s*" nextgroup=ratpoisonNumberArg
+syn match ratpoisonDefCommand "^\s*defmaxsizegravity\s*" nextgroup=ratpoisonGravityArg
+syn match ratpoisonDefCommand "^\s*defpadding\s*" nextgroup=ratpoisonNumberArg
+syn match ratpoisonDefCommand "^\s*defresizeunit\s*" nextgroup=ratpoisonNumberArg
+syn match ratpoisonDefCommand "^\s*deftransgravity\s*" nextgroup=ratpoisonGravityArg
+syn match ratpoisonDefCommand "^\s*defwaitcursor\s*" nextgroup=ratpoisonNumberArg
+syn match ratpoisonDefCommand "^\s*defwinfmt\s*" nextgroup=ratpoisonWinFmtArg
+syn match ratpoisonDefCommand "^\s*defwingravity\s*" nextgroup=ratpoisonGravityArg
+syn match ratpoisonDefCommand "^\s*defwinliststyle\s*" nextgroup=ratpoisonWinListArg
+syn match ratpoisonDefCommand "^\s*defwinname\s*" nextgroup=ratpoisonWinNameArg
+syn match ratpoisonDefCommand "^\s*msgwait\s*" nextgroup=ratpoisonNumberArg
+
+syn match ratpoisonStringCommand "^\s*\zsaddhook\ze\s*" nextgroup=ratpoisonHookArg
+syn match ratpoisonStringCommand "^\s*\zsalias\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsbind\ze\s*" nextgroup=ratpoisonKeySeqArg
+syn match ratpoisonStringCommand "^\s*\zschdir\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zscolon\ze\s*" nextgroup=ratpoisonCommandArg
+syn match ratpoisonStringCommand "^\s*\zsdedicate\ze\s*" nextgroup=ratpoisonNumberArg
+syn match ratpoisonStringCommand "^\s*\zsdefinekey\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsdelkmap\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsdescribekey\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsecho\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsescape\ze\s*" nextgroup=ratpoisonKeySeqArg
+syn match ratpoisonStringCommand "^\s*\zsexec\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsfdump\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsfrestore\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsgdelete\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsgetenv\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsgravity\ze\s*" nextgroup=ratpoisonGravityArg
+syn match ratpoisonStringCommand "^\s*\zsgselect\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zslink\ze\s*" nextgroup=ratpoisonKeySeqArg
+syn match ratpoisonStringCommand "^\s*\zslisthook\ze\s*" nextgroup=ratpoisonHookArg
+syn match ratpoisonStringCommand "^\s*\zsnewkmap\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsnewwm\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsnumber\ze\s*" nextgroup=ratpoisonNumberArg
+syn match ratpoisonStringCommand "^\s*\zsprompt\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsratwarp\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsratrelwarp\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsratclick\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsrathold\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsreadkey\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsremhook\ze\s*" nextgroup=ratpoisonHookArg
+syn match ratpoisonStringCommand "^\s*\zsresize\ze\s*" nextgroup=ratpoisonNumberArg
+syn match ratpoisonStringCommand "^\s*\zsrudeness\ze\s*" nextgroup=ratpoisonNumberArg
+syn match ratpoisonStringCommand "^\s*\zsselect\ze\s*" nextgroup=ratpoisonNumberArg
+syn match ratpoisonStringCommand "^\s*\zssetenv\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zssource\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zssselect\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsstartup_message\ze\s*" nextgroup=ratpoisonBooleanArg
+syn match ratpoisonStringCommand "^\s*\zstitle\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zstmpwm\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsunalias\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsunbind\ze\s*" nextgroup=ratpoisonKeySeqArg
+syn match ratpoisonStringCommand "^\s*\zsundefinekey\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsunmanage\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsunsetenv\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zsverbexec\ze\s*"
+syn match ratpoisonStringCommand "^\s*\zswarp\ze\s*" nextgroup=ratpoisonBooleanArg
+
+syn match ratpoisonVoidCommand "^\s*\zsabort\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsbanish\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsclrunmanaged\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zscnext\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zscompat\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zscother\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zscprev\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zscurframe\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsdelete\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsfocusdown\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsfocuslast\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsfocusleft\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsfocusprev\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsfocusright\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsfocusup\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsfocus\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsfselect\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsgetsel\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsgmerge\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsgmove\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsgnewbg\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsgnew\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsgnext\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsgprev\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsgroups\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zshelp\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zshsplit\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsinext\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsinfo\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsiother\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsiprev\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zskill\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zslastmsg\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zslicense\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsmeta\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsnextscreen\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsnext\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsonly\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsother\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsprevscreen\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsprev\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsputsel\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsquit\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsredisplay\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsredo\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsremove\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsrestart\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zssdump\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zssfdump\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsshrink\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zssplit\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zstime\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsundo\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsversion\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zsvsplit\ze\s*$"
+syn match ratpoisonVoidCommand "^\s*\zswindows\ze\s*$"
+
+hi def link ratpoisonBooleanArg Boolean
+hi def link ratpoisonCommandArg Keyword
+hi def link ratpoisonComment Comment
+hi def link ratpoisonDefCommand Identifier
+hi def link ratpoisonFrameFmtArg Special
+hi def link ratpoisonGravityArg Constant
+hi def link ratpoisonInfoFmtArg Special
+hi def link ratpoisonKeySeqArg Special
+hi def link ratpoisonNumberArg Number
+hi def link ratpoisonSetArg Keyword
+hi def link ratpoisonStringCommand Identifier
+hi def link ratpoisonTodo Todo
+hi def link ratpoisonVoidCommand Identifier
+hi def link ratpoisonWinFmtArg Special
+hi def link ratpoisonWinNameArg Constant
+hi def link ratpoisonWinListArg Constant
+
+let b:current_syntax = "ratpoison"
+
+" vim: ts=8
diff --git a/runtime/syntax/rc.vim b/runtime/syntax/rc.vim
new file mode 100644
index 0000000..d69edd0
--- /dev/null
+++ b/runtime/syntax/rc.vim
@@ -0,0 +1,191 @@
+" Vim syntax file
+" Language: M$ Resource files (*.rc)
+" Maintainer: Christian Brabandt
+" Last Change: 20220116
+" Repository: https://github.com/chrisbra/vim-rc-syntax
+" License: Vim (see :h license)
+" Previous Maintainer: Heiko Erhardt <Heiko.Erhardt@munich.netsurf.de>
+
+" This file is based on the c.vim
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Common RC keywords
+syn keyword rcLanguage LANGUAGE
+
+syn keyword rcMainObject TEXTINCLUDE VERSIONINFO BITMAP ICON CURSOR CURSOR
+syn keyword rcMainObject MENU ACCELERATORS TOOLBAR DIALOG
+syn keyword rcMainObject STRINGTABLE MESSAGETABLE RCDATA DLGINIT DESIGNINFO
+
+syn keyword rcSubObject POPUP MENUITEM SEPARATOR
+syn keyword rcSubObject CONTROL LTEXT CTEXT RTEXT EDITTEXT
+syn keyword rcSubObject BUTTON PUSHBUTTON DEFPUSHBUTTON GROUPBOX LISTBOX COMBOBOX
+syn keyword rcSubObject FILEVERSION PRODUCTVERSION FILEFLAGSMASK FILEFLAGS FILEOS
+syn keyword rcSubObject FILETYPE FILESUBTYPE
+
+syn keyword rcCaptionParam CAPTION
+syn keyword rcParam CHARACTERISTICS CLASS STYLE EXSTYLE VERSION FONT
+
+syn keyword rcStatement BEGIN END BLOCK VALUE
+
+syn keyword rcCommonAttribute PRELOAD LOADONCALL FIXED MOVEABLE DISCARDABLE PURE IMPURE
+
+syn keyword rcAttribute WS_OVERLAPPED WS_POPUP WS_CHILD WS_MINIMIZE WS_VISIBLE WS_DISABLED WS_CLIPSIBLINGS
+syn keyword rcAttribute WS_CLIPCHILDREN WS_MAXIMIZE WS_CAPTION WS_BORDER WS_DLGFRAME WS_VSCROLL WS_HSCROLL
+syn keyword rcAttribute WS_SYSMENU WS_THICKFRAME WS_GROUP WS_TABSTOP WS_MINIMIZEBOX WS_MAXIMIZEBOX WS_TILED
+syn keyword rcAttribute WS_ICONIC WS_SIZEBOX WS_TILEDWINDOW WS_OVERLAPPEDWINDOW WS_POPUPWINDOW WS_CHILDWINDOW
+syn keyword rcAttribute WS_EX_DLGMODALFRAME WS_EX_NOPARENTNOTIFY WS_EX_TOPMOST WS_EX_ACCEPTFILES
+syn keyword rcAttribute WS_EX_TRANSPARENT WS_EX_MDICHILD WS_EX_TOOLWINDOW WS_EX_WINDOWEDGE WS_EX_CLIENTEDGE
+syn keyword rcAttribute WS_EX_CONTEXTHELP WS_EX_RIGHT WS_EX_LEFT WS_EX_RTLREADING WS_EX_LTRREADING
+syn keyword rcAttribute WS_EX_LEFTSCROLLBAR WS_EX_RIGHTSCROLLBAR WS_EX_CONTROLPARENT WS_EX_STATICEDGE
+syn keyword rcAttribute WS_EX_APPWINDOW WS_EX_OVERLAPPEDWINDOW WS_EX_PALETTEWINDOW
+syn keyword rcAttribute ES_LEFT ES_CENTER ES_RIGHT ES_MULTILINE ES_UPPERCASE ES_LOWERCASE ES_PASSWORD
+syn keyword rcAttribute ES_AUTOVSCROLL ES_AUTOHSCROLL ES_NOHIDESEL ES_OEMCONVERT ES_READONLY ES_WANTRETURN
+syn keyword rcAttribute ES_NUMBER
+syn keyword rcAttribute BS_PUSHBUTTON BS_DEFPUSHBUTTON BS_CHECKBOX BS_AUTOCHECKBOX BS_RADIOBUTTON BS_3STATE
+syn keyword rcAttribute BS_AUTO3STATE BS_GROUPBOX BS_USERBUTTON BS_AUTORADIOBUTTON BS_OWNERDRAW BS_LEFTTEXT
+syn keyword rcAttribute BS_TEXT BS_ICON BS_BITMAP BS_LEFT BS_RIGHT BS_CENTER BS_TOP BS_BOTTOM BS_VCENTER
+syn keyword rcAttribute BS_PUSHLIKE BS_MULTILINE BS_NOTIFY BS_FLAT BS_RIGHTBUTTON
+syn keyword rcAttribute SS_LEFT SS_CENTER SS_RIGHT SS_ICON SS_BLACKRECT SS_GRAYRECT SS_WHITERECT
+syn keyword rcAttribute SS_BLACKFRAME SS_GRAYFRAME SS_WHITEFRAME SS_USERITEM SS_SIMPLE SS_LEFTNOWORDWRAP
+syn keyword rcAttribute SS_OWNERDRAW SS_BITMAP SS_ENHMETAFILE SS_ETCHEDHORZ SS_ETCHEDVERT SS_ETCHEDFRAME
+syn keyword rcAttribute SS_TYPEMASK SS_NOPREFIX SS_NOTIFY SS_CENTERIMAGE SS_RIGHTJUST SS_REALSIZEIMAGE
+syn keyword rcAttribute SS_SUNKEN SS_ENDELLIPSIS SS_PATHELLIPSIS SS_WORDELLIPSIS SS_ELLIPSISMASK
+syn keyword rcAttribute DS_ABSALIGN DS_SYSMODAL DS_LOCALEDIT DS_SETFONT DS_MODALFRAME DS_NOIDLEMSG
+syn keyword rcAttribute DS_SETFOREGROUND DS_3DLOOK DS_FIXEDSYS DS_NOFAILCREATE DS_CONTROL DS_CENTER
+syn keyword rcAttribute DS_CENTERMOUSE DS_CONTEXTHELP
+syn keyword rcAttribute LBS_NOTIFY LBS_SORT LBS_NOREDRAW LBS_MULTIPLESEL LBS_OWNERDRAWFIXED
+syn keyword rcAttribute LBS_OWNERDRAWVARIABLE LBS_HASSTRINGS LBS_USETABSTOPS LBS_NOINTEGRALHEIGHT
+syn keyword rcAttribute LBS_MULTICOLUMN LBS_WANTKEYBOARDINPUT LBS_EXTENDEDSEL LBS_DISABLENOSCROLL
+syn keyword rcAttribute LBS_NODATA LBS_NOSEL LBS_STANDARD
+syn keyword rcAttribute CBS_SIMPLE CBS_DROPDOWN CBS_DROPDOWNLIST CBS_OWNERDRAWFIXED CBS_OWNERDRAWVARIABLE
+syn keyword rcAttribute CBS_AUTOHSCROLL CBS_OEMCONVERT CBS_SORT CBS_HASSTRINGS CBS_NOINTEGRALHEIGHT
+syn keyword rcAttribute CBS_DISABLENOSCROLL CBS_UPPERCASE CBS_LOWERCASE
+syn keyword rcAttribute SBS_HORZ SBS_VERT SBS_TOPALIGN SBS_LEFTALIGN SBS_BOTTOMALIGN SBS_RIGHTALIGN
+syn keyword rcAttribute SBS_SIZEBOXTOPLEFTALIGN SBS_SIZEBOXBOTTOMRIGHTALIGN SBS_SIZEBOX SBS_SIZEGRIP
+syn keyword rcAttribute CCS_TOP CCS_NOMOVEY CCS_BOTTOM CCS_NORESIZE CCS_NOPARENTALIGN CCS_ADJUSTABLE
+syn keyword rcAttribute CCS_NODIVIDER
+syn keyword rcAttribute LVS_ICON LVS_REPORT LVS_SMALLICON LVS_LIST LVS_TYPEMASK LVS_SINGLESEL LVS_SHOWSELALWAYS
+syn keyword rcAttribute LVS_SORTASCENDING LVS_SORTDESCENDING LVS_SHAREIMAGELISTS LVS_NOLABELWRAP
+syn keyword rcAttribute LVS_EDITLABELS LVS_OWNERDATA LVS_NOSCROLL LVS_TYPESTYLEMASK LVS_ALIGNTOP LVS_ALIGNLEFT
+syn keyword rcAttribute LVS_ALIGNMASK LVS_OWNERDRAWFIXED LVS_NOCOLUMNHEADER LVS_NOSORTHEADER LVS_AUTOARRANGE
+syn keyword rcAttribute TVS_HASBUTTONS TVS_HASLINES TVS_LINESATROOT TVS_EDITLABELS TVS_DISABLEDRAGDROP
+syn keyword rcAttribute TVS_SHOWSELALWAYS
+syn keyword rcAttribute TCS_FORCEICONLEFT TCS_FORCELABELLEFT TCS_TABS TCS_BUTTONS TCS_SINGLELINE TCS_MULTILINE
+syn keyword rcAttribute TCS_RIGHTJUSTIFY TCS_FIXEDWIDTH TCS_RAGGEDRIGHT TCS_FOCUSONBUTTONDOWN
+syn keyword rcAttribute TCS_OWNERDRAWFIXED TCS_TOOLTIPS TCS_FOCUSNEVER
+syn keyword rcAttribute ACS_CENTER ACS_TRANSPARENT ACS_AUTOPLAY
+syn keyword rcStdId IDI_APPLICATION IDI_HAND IDI_QUESTION IDI_EXCLAMATION IDI_ASTERISK IDI_WINLOGO IDI_WINLOGO
+syn keyword rcStdId IDI_WARNING IDI_ERROR IDI_INFORMATION
+syn keyword rcStdId IDCANCEL IDABORT IDRETRY IDIGNORE IDYES IDNO IDCLOSE IDHELP IDC_STATIC
+
+" Common RC keywords
+
+" Common RC keywords
+syn keyword rcTodo contained TODO FIXME XXX
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match rcSpecial contained "\\[0-7][0-7][0-7]\=\|\\."
+syn region rcString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rcSpecial
+syn match rcCharacter "'[^\\]'"
+syn match rcSpecialCharacter "'\\.'"
+syn match rcSpecialCharacter "'\\[0-7][0-7]'"
+syn match rcSpecialCharacter "'\\[0-7][0-7][0-7]'"
+
+"catch errors caused by wrong parenthesis
+syn region rcParen transparent start='(' end=')' contains=ALLBUT,rcParenError,rcIncluded,rcSpecial,rcTodo
+syn match rcParenError ")"
+syn match rcInParen contained "[{}]"
+
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match rcNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"
+"floating point number, with dot, optional exponent
+syn match rcFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, starting with a dot, optional exponent
+syn match rcFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match rcFloat "\<\d\+e[-+]\=\d\+[fl]\=\>"
+"hex number
+syn match rcNumber "\<0x[0-9a-f]\+\(u\=l\=\|lu\)\>"
+"syn match rcIdentifier "\<[a-z_][a-z0-9_]*\>"
+syn case match
+" flag an octal number with wrong digits
+syn match rcOctalError "\<0[0-7]*[89]"
+
+if exists("rc_comment_strings")
+ " A comment can contain rcString, rcCharacter and rcNumber.
+ " But a "*/" inside a rcString in a rcComment DOES end the comment! So we
+ " need to use a special type of rcString: rcCommentString, which also ends on
+ " "*/", and sees a "*" at the start of the line as comment again.
+ " Unfortunately this doesn't very well work for // type of comments :-(
+ syntax match rcCommentSkip contained "^\s*\*\($\|\s\+\)"
+ syntax region rcCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=rcSpecial,rcCommentSkip
+ syntax region rcComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=rcSpecial
+ syntax region rcComment start="/\*" end="\*/" contains=rcTodo,rcCommentString,rcCharacter,rcNumber,rcFloat
+ syntax match rcComment "//.*" contains=rcTodo,rcComment2String,rcCharacter,rcNumber
+else
+ syn region rcComment start="/\*" end="\*/" contains=rcTodo
+ syn match rcComment "//.*" contains=rcTodo
+endif
+syntax match rcCommentError "\*/"
+
+syn region rcPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=rcComment,rcString,rcCharacter,rcNumber,rcCommentError
+syn region rcIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match rcIncluded contained "<[^>]*>"
+syn match rcInclude "^\s*#\s*include\>\s*["<]" contains=rcIncluded
+"syn match rcLineSkip "\\$"
+syn region rcDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,rcPreCondit,rcIncluded,rcInclude,rcDefine,rcInParen
+syn region rcPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,rcPreCondit,rcIncluded,rcInclude,rcDefine,rcInParen
+
+syn sync ccomment rcComment minlines=10
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link rcCharacter Character
+hi def link rcSpecialCharacter rcSpecial
+hi def link rcNumber Number
+hi def link rcFloat Float
+hi def link rcOctalError rcError
+hi def link rcParenError rcError
+hi def link rcInParen rcError
+hi def link rcCommentError rcError
+hi def link rcInclude Include
+hi def link rcPreProc PreProc
+hi def link rcDefine Macro
+hi def link rcIncluded rcString
+hi def link rcError Error
+hi def link rcPreCondit PreCondit
+hi def link rcCommentString rcString
+hi def link rcComment2String rcString
+hi def link rcCommentSkip rcComment
+hi def link rcString String
+hi def link rcComment Comment
+hi def link rcSpecial SpecialChar
+hi def link rcTodo Todo
+
+hi def link rcAttribute rcCommonAttribute
+hi def link rcStdId rcStatement
+hi def link rcStatement Statement
+
+hi def link rcLanguage Constant
+hi def link rcCaptionParam Constant
+hi def link rcCommonAttribute Constant
+
+hi def link rcMainObject Identifier
+hi def link rcSubObject Define
+hi def link rcParam Constant
+hi def link rcStatement Statement
+"
+"hi def link rcIdentifier Identifier
+
+
+
+let b:current_syntax = "rc"
+
+" vim: ts=8
diff --git a/runtime/syntax/rcs.vim b/runtime/syntax/rcs.vim
new file mode 100644
index 0000000..5a34802
--- /dev/null
+++ b/runtime/syntax/rcs.vim
@@ -0,0 +1,63 @@
+" Vim syntax file
+" Language: RCS file
+" Maintainer: Dmitry Vasiliev <dima at hlabs dot org>
+" URL: https://github.com/hdima/vim-scripts/blob/master/syntax/rcs.vim
+" Last Change: 2012-02-11
+" Filenames: *,v
+" Version: 1.12
+
+" Options:
+" rcs_folding = 1 For folding strings
+
+" quit when a syntax file was already loaded.
+if exists("b:current_syntax")
+ finish
+endif
+
+" RCS file must end with a newline.
+syn match rcsEOFError ".\%$" containedin=ALL
+
+" Keywords.
+syn keyword rcsKeyword head branch access symbols locks strict
+syn keyword rcsKeyword comment expand date author state branches
+syn keyword rcsKeyword next desc log
+syn keyword rcsKeyword text nextgroup=rcsTextStr skipwhite skipempty
+
+" Revision numbers and dates.
+syn match rcsNumber "\<[0-9.]\+\>" display
+
+" Strings.
+if exists("rcs_folding") && has("folding")
+ " Folded strings.
+ syn region rcsString matchgroup=rcsString start="@" end="@" skip="@@" fold contains=rcsSpecial
+ syn region rcsTextStr matchgroup=rcsTextStr start="@" end="@" skip="@@" fold contained contains=rcsSpecial,rcsDiffLines
+else
+ syn region rcsString matchgroup=rcsString start="@" end="@" skip="@@" contains=rcsSpecial
+ syn region rcsTextStr matchgroup=rcsTextStr start="@" end="@" skip="@@" contained contains=rcsSpecial,rcsDiffLines
+endif
+syn match rcsSpecial "@@" contained
+syn match rcsDiffLines "[da]\d\+ \d\+$" contained
+
+" Synchronization.
+syn sync clear
+if exists("rcs_folding") && has("folding")
+ syn sync fromstart
+else
+ " We have incorrect folding if following sync patterns is turned on.
+ syn sync match rcsSync grouphere rcsString "[0-9.]\+\(\s\|\n\)\+log\(\s\|\n\)\+@"me=e-1
+ syn sync match rcsSync grouphere rcsTextStr "@\(\s\|\n\)\+text\(\s\|\n\)\+@"me=e-1
+endif
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet.
+
+hi def link rcsKeyword Keyword
+hi def link rcsNumber Identifier
+hi def link rcsString String
+hi def link rcsTextStr String
+hi def link rcsSpecial Special
+hi def link rcsDiffLines Special
+hi def link rcsEOFError Error
+
+
+let b:current_syntax = "rcs"
diff --git a/runtime/syntax/rcslog.vim b/runtime/syntax/rcslog.vim
new file mode 100644
index 0000000..18f4593
--- /dev/null
+++ b/runtime/syntax/rcslog.vim
@@ -0,0 +1,25 @@
+" Vim syntax file
+" Language: RCS log output
+" Maintainer: Joe Karthauser <joe@freebsd.org>
+" Last Change: 2001 May 09
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match rcslogRevision "^revision.*$"
+syn match rcslogFile "^RCS file:.*"
+syn match rcslogDate "^date: .*$"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link rcslogFile Type
+hi def link rcslogRevision Constant
+hi def link rcslogDate Identifier
+
+
+let b:current_syntax = "rcslog"
+
+" vim: ts=8
diff --git a/runtime/syntax/readline.vim b/runtime/syntax/readline.vim
new file mode 100644
index 0000000..3831ae1
--- /dev/null
+++ b/runtime/syntax/readline.vim
@@ -0,0 +1,411 @@
+" Vim syntax file
+" Language: readline(3) configuration file
+" Maintainer: Daniel Moch <daniel@danielmoch.com>
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2018-07-26
+" Add new functions for Readline 7 / Bash 4.4
+" (credit: Github user bewuethr)
+
+if exists('b:current_syntax')
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword+=-
+
+syn match readlineKey contained
+ \ '\S'
+ \ nextgroup=readlineKeyTerminator
+
+syn match readlineBegin display '^'
+ \ nextgroup=readlineComment,
+ \ readlineConditional,
+ \ readlineInclude,
+ \ readlineKeyName,
+ \ readlineKey,
+ \ readlineKeySeq,
+ \ readlineKeyword
+ \ skipwhite
+
+syn region readlineComment contained display oneline
+ \ start='#'
+ \ end='$'
+ \ contains=readlineTodo,
+ \ @Spell
+
+syn keyword readlineTodo contained
+ \ TODO
+ \ FIXME
+ \ XXX
+ \ NOTE
+
+syn match readlineConditional contained
+ \ '$if\>'
+ \ nextgroup=readlineTest,
+ \ readlineTestApp
+ \ skipwhite
+
+syn keyword readlineTest contained
+ \ mode
+ \ nextgroup=readlineTestModeEq
+
+syn match readlineTestModeEq contained
+ \ '='
+ \ nextgroup=readlineEditingMode
+
+syn keyword readlineTest contained
+ \ term
+ \ nextgroup=readlineTestTermEq
+
+syn match readlineTestTermEq contained
+ \ '='
+ \ nextgroup=readlineTestTerm
+
+syn match readlineTestTerm contained
+ \ '\S\+'
+
+syn match readlineTestApp contained
+ \ '\S\+'
+
+syn match readlineConditional contained display
+ \ '$\%(else\|endif\)\>'
+
+syn match readlineInclude contained display
+ \ '$include\>'
+ \ nextgroup=readlinePath
+
+syn match readlinePath contained display
+ \ '.\+'
+
+syn case ignore
+syn match readlineKeyName contained display
+ \ nextgroup=readlineKeySeparator,
+ \ readlineKeyTerminator
+ \ '\%(Control\|Del\|Esc\|Escape\|LFD\|Meta\|Newline\|Ret\|Return\|Rubout\|Space\|Spc\|Tab\)'
+syn case match
+
+syn match readlineKeySeparator contained
+ \ '-'
+ \ nextgroup=readlineKeyName,
+ \ readlineKey
+
+syn match readlineKeyTerminator contained
+ \ ':'
+ \ nextgroup=readlineFunction
+ \ skipwhite
+
+syn region readlineKeySeq contained display oneline
+ \ start=+"+
+ \ skip=+\\\\\|\\"+
+ \ end=+"+
+ \ contains=readlineKeyEscape
+ \ nextgroup=readlineKeyTerminator
+
+syn match readlineKeyEscape contained display
+ \ +\\\([CM]-\|[e\\"'abdfnrtv]\|\o\{3}\|x\x\{2}\)+
+
+syn keyword readlineKeyword contained
+ \ set
+ \ nextgroup=readlineVariable
+ \ skipwhite
+
+syn keyword readlineVariable contained
+ \ nextgroup=readlineBellStyle
+ \ skipwhite
+ \ bell-style
+
+syn keyword readlineVariable contained
+ \ nextgroup=readlineBoolean
+ \ skipwhite
+ \ bind-tty-special-chars
+ \ blink-matching-paren
+ \ colored-completion-prefix
+ \ colored-stats
+ \ completion-ignore-case
+ \ completion-map-case
+ \ convert-meta
+ \ disable-completion
+ \ echo-control-characters
+ \ enable-bracketed-paste
+ \ enable-keypad
+ \ enable-meta-key
+ \ expand-tilde
+ \ history-preserve-point
+ \ horizontal-scroll-mode
+ \ input-meta
+ \ meta-flag
+ \ mark-directories
+ \ mark-modified-lines
+ \ mark-symlinked-directories
+ \ match-hidden-files
+ \ menu-complete-display-prefix
+ \ output-meta
+ \ page-completions
+ \ print-completions-horizontally
+ \ revert-all-at-newline
+ \ show-all-if-ambiguous
+ \ show-all-if-unmodified
+ \ show-mode-in-prompt
+ \ skip-completed-text
+ \ visible-stats
+
+syn keyword readlineVariable contained
+ \ nextgroup=readlineString
+ \ skipwhite
+ \ comment-begin
+ \ isearch-terminators
+ \ vi-cmd-mode-string
+ \ vi-ins-mode-string
+ \ emacs-mode-string
+
+syn keyword readlineVariable contained
+ \ nextgroup=readlineNumber
+ \ skipwhite
+ \ completion-display-width
+ \ completion-prefix-display-length
+ \ completion-query-items
+ \ history-size
+ \ keyseq-timeout
+
+syn keyword readlineVariable contained
+ \ nextgroup=readlineEditingMode
+ \ skipwhite
+ \ editing-mode
+
+syn keyword readlineVariable contained
+ \ nextgroup=readlineKeymap
+ \ skipwhite
+ \ keymap
+
+syn keyword readlineBellStyle contained
+ \ audible
+ \ visible
+ \ none
+
+syn case ignore
+syn keyword readlineBoolean contained
+ \ on
+ \ off
+syn case match
+
+syn region readlineString contained display oneline
+ \ matchgroup=readlineStringDelimiter
+ \ start=+"+
+ \ skip=+\\\\\|\\"+
+ \ end=+"+
+
+syn match readlineNumber contained display
+ \ '[+-]\d\+\>'
+
+syn keyword readlineEditingMode contained
+ \ emacs
+ \ vi
+
+syn match readlineKeymap contained display
+ \ 'emacs\%(-\%(standard\|meta\|ctlx\)\)\=\|vi\%(-\%(move\|command\|insert\)\)\='
+
+syn keyword readlineFunction contained
+ \ beginning-of-line
+ \ end-of-line
+ \ forward-char
+ \ backward-char
+ \ forward-word
+ \ backward-word
+ \ clear-screen
+ \ redraw-current-line
+ \
+ \ accept-line
+ \ previous-history
+ \ next-history
+ \ beginning-of-history
+ \ end-of-history
+ \ reverse-search-history
+ \ forward-search-history
+ \ non-incremental-reverse-search-history
+ \ non-incremental-forward-search-history
+ \ history-search-forward
+ \ history-search-backward
+ \ yank-nth-arg
+ \ yank-last-arg
+ \
+ \ delete-char
+ \ backward-delete-char
+ \ forward-backward-delete-char
+ \ quoted-insert
+ \ tab-insert
+ \ self-insert
+ \ transpose-chars
+ \ transpose-words
+ \ upcase-word
+ \ downcase-word
+ \ capitalize-word
+ \ overwrite-mode
+ \
+ \ kill-line
+ \ backward-kill-line
+ \ unix-line-discard
+ \ kill-whole-line
+ \ kill-word
+ \ backward-kill-word
+ \ unix-word-rubout
+ \ unix-filename-rubout
+ \ delete-horizontal-space
+ \ kill-region
+ \ copy-region-as-kill
+ \ copy-backward-word
+ \ copy-forward-word
+ \ yank
+ \ yank-pop
+ \
+ \ digit-argument
+ \ universal-argument
+ \
+ \ complete
+ \ possible-completions
+ \ insert-completions
+ \ menu-complete
+ \ menu-complete-backward
+ \ delete-char-or-list
+ \
+ \ start-kbd-macro
+ \ end-kbd-macro
+ \ call-last-kbd-macro
+ \ print-last-kbd-macro
+ \
+ \ re-read-init-file
+ \ abort
+ \ do-uppercase-version
+ \ prefix-meta
+ \ undo
+ \ revert-line
+ \ tilde-expand
+ \ set-mark
+ \ exchange-point-and-mark
+ \ character-search
+ \ character-search-backward
+ \ skip-csi-sequence
+ \ insert-comment
+ \ dump-functions
+ \ dump-variables
+ \ dump-macros
+ \ emacs-editing-mode
+ \ vi-editing-mode
+ \
+ \ vi-eof-maybe
+ \ vi-movement-mode
+ \ vi-undo
+ \ vi-match
+ \ vi-tilde-expand
+ \ vi-complete
+ \ vi-char-search
+ \ vi-redo
+ \ vi-search
+ \ vi-arg-digit
+ \ vi-append-eol
+ \ vi-prev-word
+ \ vi-change-to
+ \ vi-delete-to
+ \ vi-end-word
+ \ vi-char-search
+ \ vi-fetch-history
+ \ vi-insert-beg
+ \ vi-search-again
+ \ vi-put
+ \ vi-replace
+ \ vi-subst
+ \ vi-char-search
+ \ vi-next-word
+ \ vi-yank-to
+ \ vi-first-print
+ \ vi-yank-arg
+ \ vi-goto-mark
+ \ vi-append-mode
+ \ vi-prev-word
+ \ vi-change-to
+ \ vi-delete-to
+ \ vi-end-word
+ \ vi-char-search
+ \ vi-insert-mode
+ \ vi-set-mark
+ \ vi-search-again
+ \ vi-put
+ \ vi-change-char
+ \ vi-subst
+ \ vi-char-search
+ \ vi-undo
+ \ vi-next-word
+ \ vi-delete
+ \ vi-yank-to
+ \ vi-column
+ \ vi-change-case
+
+if exists("readline_has_bash")
+ syn keyword readlineFunction contained
+ \ shell-forward-word
+ \ shell-backward-word
+ \ shell-expand-line
+ \ history-expand-line
+ \ magic-space
+ \ alias-expand-line
+ \ history-and-alias-expand-line
+ \ insert-last-argument
+ \ operate-and-get-next
+ \ forward-backward-delete-char
+ \ shell-kill-word
+ \ shell-backward-kill-word
+ \ delete-char-or-list
+ \ complete-filename
+ \ possible-filename-completions
+ \ complete-username
+ \ possible-username-completions
+ \ complete-variable
+ \ possible-variable-completions
+ \ complete-hostname
+ \ possible-hostname-completions
+ \ complete-command
+ \ possible-command-completions
+ \ dynamic-complete-history
+ \ dabbrev-expand
+ \ complete-into-braces
+ \ glob-expand-word
+ \ glob-list-expansions
+ \ display-shell-version
+ \ glob-complete-word
+ \ edit-and-execute-command
+endif
+
+hi def link readlineKey readlineKeySeq
+hi def link readlineComment Comment
+hi def link readlineTodo Todo
+hi def link readlineConditional Conditional
+hi def link readlineTest Type
+hi def link readlineDelimiter Delimiter
+hi def link readlineTestModeEq readlineEq
+hi def link readlineTestTermEq readlineEq
+hi def link readlineTestTerm readlineString
+hi def link readlineTestAppEq readlineEq
+hi def link readlineTestApp readlineString
+hi def link readlineInclude Include
+hi def link readlinePath String
+hi def link readlineKeyName SpecialChar
+hi def link readlineKeySeparator readlineKeySeq
+hi def link readlineKeyTerminator readlineDelimiter
+hi def link readlineKeySeq String
+hi def link readlineKeyEscape SpecialChar
+hi def link readlineKeyword Keyword
+hi def link readlineVariable Identifier
+hi def link readlineBellStyle Constant
+hi def link readlineBoolean Boolean
+hi def link readlineString String
+hi def link readlineStringDelimiter readlineString
+hi def link readlineNumber Number
+hi def link readlineEditingMode Constant
+hi def link readlineKeymap Constant
+hi def link readlineFunction Function
+
+let b:current_syntax = 'readline'
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/rebol.vim b/runtime/syntax/rebol.vim
new file mode 100644
index 0000000..a5d50c4
--- /dev/null
+++ b/runtime/syntax/rebol.vim
@@ -0,0 +1,199 @@
+" Vim syntax file
+" Language: Rebol
+" Maintainer: Mike Williams <mrw@eandem.co.uk>
+" Filenames: *.r
+" Last Change: 27th June 2002
+" URL: http://www.eandem.co.uk/mrw/vim
+"
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Rebol is case insensitive
+syn case ignore
+
+" As per current users documentation
+setlocal isk=@,48-57,?,!,.,',+,-,*,&,\|,=,_,~
+
+" Yer TODO highlighter
+syn keyword rebolTodo contained TODO
+
+" Comments
+syn match rebolComment ";.*$" contains=rebolTodo
+
+" Words
+syn match rebolWord "\a\k*"
+syn match rebolWordPath "[^[:space:]]/[^[:space]]"ms=s+1,me=e-1
+
+" Booleans
+syn keyword rebolBoolean true false on off yes no
+
+" Values
+" Integers
+syn match rebolInteger "\<[+-]\=\d\+\('\d*\)*\>"
+" Decimals
+syn match rebolDecimal "[+-]\=\(\d\+\('\d*\)*\)\=[,.]\d*\(e[+-]\=\d\+\)\="
+syn match rebolDecimal "[+-]\=\d\+\('\d*\)*\(e[+-]\=\d\+\)\="
+" Time
+syn match rebolTime "[+-]\=\(\d\+\('\d*\)*\:\)\{1,2}\d\+\('\d*\)*\([.,]\d\+\)\=\([AP]M\)\=\>"
+syn match rebolTime "[+-]\=:\d\+\([.,]\d*\)\=\([AP]M\)\=\>"
+" Dates
+" DD-MMM-YY & YYYY format
+syn match rebolDate "\d\{1,2}\([/-]\)\(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\)\1\(\d\{2}\)\{1,2}\>"
+" DD-month-YY & YYYY format
+syn match rebolDate "\d\{1,2}\([/-]\)\(January\|February\|March\|April\|May\|June\|July\|August\|September\|October\|November\|December\)\1\(\d\{2}\)\{1,2}\>"
+" DD-MM-YY & YY format
+syn match rebolDate "\d\{1,2}\([/-]\)\d\{1,2}\1\(\d\{2}\)\{1,2}\>"
+" YYYY-MM-YY format
+syn match rebolDate "\d\{4}-\d\{1,2}-\d\{1,2}\>"
+" DD.MM.YYYY format
+syn match rebolDate "\d\{1,2}\.\d\{1,2}\.\d\{4}\>"
+" Money
+syn match rebolMoney "\a*\$\d\+\('\d*\)*\([,.]\d\+\)\="
+" Strings
+syn region rebolString oneline start=+"+ skip=+^"+ end=+"+ contains=rebolSpecialCharacter
+syn region rebolString start=+[^#]{+ end=+}+ skip=+{[^}]*}+ contains=rebolSpecialCharacter
+" Binary
+syn region rebolBinary start=+\d*#{+ end=+}+ contains=rebolComment
+" Email
+syn match rebolEmail "\<\k\+@\(\k\+\.\)*\k\+\>"
+" File
+syn match rebolFile "%\(\k\+/\)*\k\+[/]\=" contains=rebolSpecialCharacter
+syn region rebolFile oneline start=+%"+ end=+"+ contains=rebolSpecialCharacter
+" URLs
+syn match rebolURL "http://\k\+\(\.\k\+\)*\(:\d\+\)\=\(/\(\k\+/\)*\(\k\+\)\=\)*"
+syn match rebolURL "file://\k\+\(\.\k\+\)*/\(\k\+/\)*\k\+"
+syn match rebolURL "ftp://\(\k\+:\k\+@\)\=\k\+\(\.\k\+\)*\(:\d\+\)\=/\(\k\+/\)*\k\+"
+syn match rebolURL "mailto:\k\+\(\.\k\+\)*@\k\+\(\.\k\+\)*"
+" Issues
+syn match rebolIssue "#\(\d\+-\)*\d\+"
+" Tuples
+syn match rebolTuple "\(\d\+\.\)\{2,}"
+
+" Characters
+syn match rebolSpecialCharacter contained "\^[^[:space:][]"
+syn match rebolSpecialCharacter contained "%\d\+"
+
+
+" Operators
+" Math operators
+syn match rebolMathOperator "\(\*\{1,2}\|+\|-\|/\{1,2}\)"
+syn keyword rebolMathFunction abs absolute add arccosine arcsine arctangent cosine
+syn keyword rebolMathFunction divide exp log-10 log-2 log-e max maximum min
+syn keyword rebolMathFunction minimum multiply negate power random remainder sine
+syn keyword rebolMathFunction square-root subtract tangent
+" Binary operators
+syn keyword rebolBinaryOperator complement and or xor ~
+" Logic operators
+syn match rebolLogicOperator "[<>=]=\="
+syn match rebolLogicOperator "<>"
+syn keyword rebolLogicOperator not
+syn keyword rebolLogicFunction all any
+syn keyword rebolLogicFunction head? tail?
+syn keyword rebolLogicFunction negative? positive? zero? even? odd?
+syn keyword rebolLogicFunction binary? block? char? date? decimal? email? empty?
+syn keyword rebolLogicFunction file? found? function? integer? issue? logic? money?
+syn keyword rebolLogicFunction native? none? object? paren? path? port? series?
+syn keyword rebolLogicFunction string? time? tuple? url? word?
+syn keyword rebolLogicFunction exists? input? same? value?
+
+" Datatypes
+syn keyword rebolType binary! block! char! date! decimal! email! file!
+syn keyword rebolType function! integer! issue! logic! money! native!
+syn keyword rebolType none! object! paren! path! port! string! time!
+syn keyword rebolType tuple! url! word!
+syn keyword rebolTypeFunction type?
+
+" Control statements
+syn keyword rebolStatement break catch exit halt reduce return shield
+syn keyword rebolConditional if else
+syn keyword rebolRepeat for forall foreach forskip loop repeat while until do
+
+" Series statements
+syn keyword rebolStatement change clear copy fifth find first format fourth free
+syn keyword rebolStatement func function head insert last match next parse past
+syn keyword rebolStatement pick remove second select skip sort tail third trim length?
+
+" Context
+syn keyword rebolStatement alias bind use
+
+" Object
+syn keyword rebolStatement import make make-object rebol info?
+
+" I/O statements
+syn keyword rebolStatement delete echo form format import input load mold prin
+syn keyword rebolStatement print probe read save secure send write
+syn keyword rebolOperator size? modified?
+
+" Debug statement
+syn keyword rebolStatement help probe trace
+
+" Misc statements
+syn keyword rebolStatement func function free
+
+" Constants
+syn keyword rebolConstant none
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link rebolTodo Todo
+
+hi def link rebolStatement Statement
+hi def link rebolLabel Label
+hi def link rebolConditional Conditional
+hi def link rebolRepeat Repeat
+
+hi def link rebolOperator Operator
+hi def link rebolLogicOperator rebolOperator
+hi def link rebolLogicFunction rebolLogicOperator
+hi def link rebolMathOperator rebolOperator
+hi def link rebolMathFunction rebolMathOperator
+hi def link rebolBinaryOperator rebolOperator
+hi def link rebolBinaryFunction rebolBinaryOperator
+
+hi def link rebolType Type
+hi def link rebolTypeFunction rebolOperator
+
+hi def link rebolWord Identifier
+hi def link rebolWordPath rebolWord
+hi def link rebolFunction Function
+
+hi def link rebolCharacter Character
+hi def link rebolSpecialCharacter SpecialChar
+hi def link rebolString String
+
+hi def link rebolNumber Number
+hi def link rebolInteger rebolNumber
+hi def link rebolDecimal rebolNumber
+hi def link rebolTime rebolNumber
+hi def link rebolDate rebolNumber
+hi def link rebolMoney rebolNumber
+hi def link rebolBinary rebolNumber
+hi def link rebolEmail rebolString
+hi def link rebolFile rebolString
+hi def link rebolURL rebolString
+hi def link rebolIssue rebolNumber
+hi def link rebolTuple rebolNumber
+hi def link rebolFloat Float
+hi def link rebolBoolean Boolean
+
+hi def link rebolConstant Constant
+
+hi def link rebolComment Comment
+
+hi def link rebolError Error
+
+
+if exists("my_rebol_file")
+ if file_readable(expand(my_rebol_file))
+ execute "source " . my_rebol_file
+ endif
+endif
+
+let b:current_syntax = "rebol"
+
+" vim: ts=8
diff --git a/runtime/syntax/redif.vim b/runtime/syntax/redif.vim
new file mode 100644
index 0000000..3651922
--- /dev/null
+++ b/runtime/syntax/redif.vim
@@ -0,0 +1,970 @@
+" Vim syntax file
+" Language: ReDIF
+" Maintainer: Axel Castellane <axel.castellane@polytechnique.edu>
+" Last Change: 2021 Jul 28
+" Original Author: Axel Castellane
+" Source: http://openlib.org/acmes/root/docu/redif_1.html
+" File Extension: rdf
+" Note: The ReDIF format is used by RePEc.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" ReDIF is case-insensitive
+syntax case ignore
+
+" Structure: Some fields determine what fields can come next. For example:
+" Template-Type
+" *-Name
+" File-URL
+" *-Institution
+" Those fields span a syntax region over several lines so that these regions
+" can only contain their respective items.
+
+" Any line which is not a correct template or part of an argument is an error.
+" This comes at the very beginning, so it has the lowest priority and will
+" only match if nothing else did.
+syntax match redifWrongLine /^.\+/ display
+
+highlight def link redifWrongLine redifError
+
+" Comments must start with # and it must be the first character of the line,
+" otherwise I believe that they are considered as part of an argument.
+syntax match redifComment /^#.*/ containedin=ALL display
+
+" Defines the 9 possible multi-lines regions of Template-Type and the fields
+" they can contain.
+syntax region redifRegionTemplatePaper start=/^Template-Type:\_s*ReDIF-Paper \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsPaper,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile fold
+syntax region redifRegionTemplateArticle start=/^Template-Type:\_s*ReDIF-Article \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsArticle,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile fold
+syntax region redifRegionTemplateChapter start=/^Template-Type:\_s*ReDIF-Chapter \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsChapter,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor fold
+syntax region redifRegionTemplateBook start=/^Template-Type:\_s*ReDIF-Book \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsBook,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor fold
+syntax region redifRegionTemplateSoftware start=/^Template-Type:\_s*ReDIF-Software \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsSoftware,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile fold
+syntax region redifRegionTemplateArchive start=/^Template-Type:\_s*ReDIF-Archive \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsArchive,redifWrongLine fold
+syntax region redifRegionTemplateSeries start=/^Template-Type:\_s*ReDIF-Series \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsSeries,redifWrongLine,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor fold
+syntax region redifRegionTemplateInstitution start=/^Template-Type:\_s*ReDIF-Institution \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsInstitution,redifWrongLine,redifRegionClusterPrimary,redifRegionClusterSecondary,redifRegionClusterTertiary,redifRegionClusterQuaternary fold
+syntax region redifRegionTemplatePerson start=/^Template-Type:\_s*ReDIF-Person \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsPerson,redifWrongLine,redifRegionClusterWorkplace fold
+
+" All fields are foldable (These come before clusters, so they have lower
+" priority). So they are contained in a foldable syntax region.
+syntax region redifContainerFieldsPaper start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTitle,redifFieldHandleOfWork,redifFieldLanguage,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNumber,redifFieldCreationDate,redifFieldRevisionDate,redifFieldPublicationStatus,redifFieldNote,redifFieldLength,redifFieldSeries,redifFieldAvailability,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldRestriction,redifFieldPrice,redifFieldNotification,redifFieldPublicationType,redifFieldTemplateType,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsArticle start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTitle,redifFieldHandleOfWork,redifFieldLanguage,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNumber,redifFieldCreationDate,redifFieldPublicationStatus,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldRestriction,redifFieldPrice,redifFieldNotification,redifFieldPublicationType,redifFieldJournal,redifFieldVolume,redifFieldYear,redifFieldIssue,redifFieldMonth,redifFieldPages,redifFieldNumber,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsChapter start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfWork,redifFieldTitle,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldBookTitle,redifFieldYear,redifFieldMonth,redifFieldPages,redifFieldChapter,redifFieldVolume,redifFieldEdition,redifFieldSeries,redifFieldISBN,redifFieldPublicationStatus,redifFieldNote,redifFieldInBook,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsBook start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTitle,redifFieldHandleOfWork,redifFieldContactEmail,redifFieldYear,redifFieldMonth,redifFieldVolume,redifFieldEdition,redifFieldSeries,redifFieldISBN,redifFieldPublicationStatus,redifFieldNote,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldHasChapter,redifFieldPrice,redifFieldOrderURL,redifFieldNumber,redifFieldCreationDate,redifFieldPublicationDate,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsSoftware start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfWork,redifFieldTitle,redifFieldProgrammingLanguage,redifFieldAbstract,redifFieldNumber,redifFieldVersion,redifFieldClassificationJEL,redifFieldKeywords,redifFieldSize,redifFieldSeries,redifFieldCreationDate,redifFieldRevisionDate,redifFieldNote,redifFieldRequires,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsArchive start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfArchive,redifFieldURL,redifFieldMaintainerEmail,redifFieldName,redifFieldMaintainerName,redifFieldMaintainerPhone,redifFieldMaintainerFax,redifFieldClassificationJEL,redifFieldHomepage,redifFieldDescription,redifFieldNotification,redifFieldRestriction,redifFieldTemplateType,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsSeries start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldName,redifFieldHandleOfSeries,redifFieldMaintainerEmail,redifFieldType,redifFieldOrderEmail,redifFieldOrderHomepage,redifFieldOrderPostal,redifFieldPrice,redifFieldRestriction,redifFieldMaintainerPhone,redifFieldMaintainerFax,redifFieldMaintainerName,redifFieldDescription,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNotification,redifFieldISSN,redifFieldFollowup,redifFieldPredecessor,redifFieldTemplateType,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsInstitution start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfInstitution,redifFieldPrimaryDefunct,redifFieldSecondaryDefunct,redifFieldTertiaryDefunct,redifFieldTemplateType,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsPerson start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfPerson,redifFieldNameFull,redifFieldNameFirst,redifFieldNameLast,redifFieldNamePrefix,redifFieldNameMiddle,redifFieldNameSuffix,redifFieldNameASCII,redifFieldEmail,redifFieldHomepage,redifFieldFax,redifFieldPostal,redifFieldPhone,redifFieldWorkplaceOrganization,redifFieldAuthorPaper,redifFieldAuthorArticle,redifFieldAuthorSoftware,redifFieldAuthorBook,redifFieldAuthorChapter,redifFieldEditorBook,redifFieldEditorSeries,redifFieldClassificationJEL,redifFieldShortId,redifFieldLastLoginDate,redifFieldRegisteredDate,redifWrongLine contained transparent fold
+
+" Defines the 10 possible clusters and what they can contain
+" A field not in the cluster ends the cluster.
+syntax region redifRegionClusterWorkplace start=/^Workplace-Name:/ skip=/^Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsWorkplace fold
+syntax region redifRegionClusterPrimary start=/^Primary-Name:/ skip=/^Primary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsPrimary fold
+syntax region redifRegionClusterSecondary start=/^Secondary-Name:/ skip=/^Secondary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsSecondary fold
+syntax region redifRegionClusterTertiary start=/^Tertiary-Name:/ skip=/^Tertiary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsTertiary fold
+syntax region redifRegionClusterQuaternary start=/^Quaternary-Name:/ skip=/^Quaternary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsQuaternary fold
+syntax region redifRegionClusterProvider start=/^Provider-Name:/ skip=/^Provider-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsProvider fold
+syntax region redifRegionClusterPublisher start=/^Publisher-Name:/ skip=/^Publisher-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsPublisher fold
+syntax region redifRegionClusterAuthor start=/^Author-Name:/ skip=/^Author-\%(Name\%(-First\|-Last\)\|Homepage\|Email\|Fax\|Postal\|Phone\|Person\|Workplace-Name\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifRegionClusterAuthorWorkplace,redifContainerFieldsAuthor fold
+syntax region redifRegionClusterEditor start=/^Editor-Name:/ skip=/^Editor-\%(Name\%(-First\|-Last\)\|Homepage\|Email\|Fax\|Postal\|Phone\|Person\|Workplace-Name\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifRegionClusterEditorWorkplace,redifContainerFieldsEditor fold
+syntax region redifRegionClusterFile start=/^File-URL:/ skip=/^File-\%(Format\|Function\|Size\|Restriction\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsFile fold
+
+" The foldable containers of the clusters.
+syntax region redifContainerFieldsWorkplace start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldWorkplaceName,redifFieldWorkplaceHomepage,redifFieldWorkplaceNameEnglish,redifFieldWorkplacePostal,redifFieldWorkplaceLocation,redifFieldWorkplaceEmail,redifFieldWorkplacePhone,redifFieldWorkplaceFax,redifFieldWorkplaceInstitution,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsPrimary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldPrimaryName,redifFieldPrimaryHomepage,redifFieldPrimaryNameEnglish,redifFieldPrimaryPostal,redifFieldPrimaryLocation,redifFieldPrimaryEmail,redifFieldPrimaryPhone,redifFieldPrimaryFax,redifFieldPrimaryInstitution,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsSecondary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldSecondaryName,redifFieldSecondaryHomepage,redifFieldSecondaryNameEnglish,redifFieldSecondaryPostal,redifFieldSecondaryLocation,redifFieldSecondaryEmail,redifFieldSecondaryPhone,redifFieldSecondaryFax,redifFieldSecondaryInstitution,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsTertiary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTertiaryName,redifFieldTertiaryHomepage,redifFieldTertiaryNameEnglish,redifFieldTertiaryPostal,redifFieldTertiaryLocation,redifFieldTertiaryEmail,redifFieldTertiaryPhone,redifFieldTertiaryFax,redifFieldTertiaryInstitution,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsQuaternary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldQuaternaryName,redifFieldQuaternaryHomepage,redifFieldQuaternaryNameEnglish,redifFieldQuaternaryPostal,redifFieldQuaternaryLocation,redifFieldQuaternaryEmail,redifFieldQuaternaryPhone,redifFieldQuaternaryFax,redifFieldQuaternaryInstitution,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsProvider start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldProviderName,redifFieldProviderHomepage,redifFieldProviderNameEnglish,redifFieldProviderPostal,redifFieldProviderLocation,redifFieldProviderEmail,redifFieldProviderPhone,redifFieldProviderFax,redifFieldProviderInstitution,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsPublisher start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldPublisherName,redifFieldPublisherHomepage,redifFieldPublisherNameEnglish,redifFieldPublisherPostal,redifFieldPublisherLocation,redifFieldPublisherEmail,redifFieldPublisherPhone,redifFieldPublisherFax,redifFieldPublisherInstitution,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsAuthor start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldAuthorName,redifFieldAuthorNameFirst,redifFieldAuthorNameLast,redifFieldAuthorHomepage,redifFieldAuthorEmail,redifFieldAuthorFax,redifFieldAuthorPostal,redifFieldAuthorPhone,redifFieldAuthorPerson,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsEditor start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldEditorName,redifFieldEditorNameFirst,redifFieldEditorNameLast,redifFieldEditorHomepage,redifFieldEditorEmail,redifFieldEditorFax,redifFieldEditorPostal,redifFieldEditorPhone,redifFieldEditorPerson,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsFile start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldFileURL,redifFieldFileFormat,redifFieldFileFunction,redifFieldFileSize,redifFieldFileRestriction,redifWrongLine contained transparent fold
+
+" The two clusters in cluster (must be presented after to have priority over
+" fields containers)
+syntax region redifRegionClusterAuthorWorkplace start=/^Author-Workplace-Name:/ skip=/^Author-Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsAuthorWorkplace fold
+syntax region redifRegionClusterEditorWorkplace start=/^Editor-Workplace-Name:/ skip=/^Editor-Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsEditorWorkplace fold
+
+" Their foldable fields containers
+syntax region redifContainerFieldsAuthorWorkplace start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldAuthorWorkplaceName,redifFieldAuthorWorkplaceHomepage,redifFieldAuthorWorkplaceNameEnglish,redifFieldAuthorWorkplacePostal,redifFieldAuthorWorkplaceLocation,redifFieldAuthorWorkplaceEmail,redifFieldAuthorWorkplacePhone,redifFieldAuthorWorkplaceFax,redifFieldAuthorWorkplaceInstitution,redifWrongLine contained transparent fold
+syntax region redifContainerFieldsEditorWorkplace start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldEditorWorkplaceName,redifFieldEditorWorkplaceHomepage,redifFieldEditorWorkplaceNameEnglish,redifFieldEditorWorkplacePostal,redifFieldEditorWorkplaceLocation,redifFieldEditorWorkplaceEmail,redifFieldEditorWorkplacePhone,redifFieldEditorWorkplaceFax,redifFieldEditorWorkplaceInstitution,redifWrongLine contained transparent fold
+
+" All the possible fields
+" Note: The "Handle" field is handled a little bit differently, because it
+" does not have the same meaning depending on the Template-Type. See:
+" /redifFieldHandleOf....
+syntax match redifFieldAbstract /^Abstract:/ skipwhite skipempty nextgroup=redifArgumentAbstract contained
+syntax match redifFieldArticleHandle /^Article-Handle:/ skipwhite skipempty nextgroup=redifArgumentArticleHandle contained
+syntax match redifFieldAuthorArticle /^Author-Article:/ skipwhite skipempty nextgroup=redifArgumentAuthorArticle contained
+syntax match redifFieldAuthorBook /^Author-Book:/ skipwhite skipempty nextgroup=redifArgumentAuthorBook contained
+syntax match redifFieldAuthorChapter /^Author-Chapter:/ skipwhite skipempty nextgroup=redifArgumentAuthorChapter contained
+syntax match redifFieldAuthorEmail /^Author-Email:/ skipwhite skipempty nextgroup=redifArgumentAuthorEmail contained
+syntax match redifFieldAuthorFax /^Author-Fax:/ skipwhite skipempty nextgroup=redifArgumentAuthorFax contained
+syntax match redifFieldAuthorHomepage /^Author-Homepage:/ skipwhite skipempty nextgroup=redifArgumentAuthorHomepage contained
+syntax match redifFieldAuthorName /^Author-Name:/ skipwhite skipempty nextgroup=redifArgumentAuthorName contained
+syntax match redifFieldAuthorNameFirst /^Author-Name-First:/ skipwhite skipempty nextgroup=redifArgumentAuthorNameFirst contained
+syntax match redifFieldAuthorNameLast /^Author-Name-Last:/ skipwhite skipempty nextgroup=redifArgumentAuthorNameLast contained
+syntax match redifFieldAuthorPaper /^Author-Paper:/ skipwhite skipempty nextgroup=redifArgumentAuthorPaper contained
+syntax match redifFieldAuthorPerson /^Author-Person:/ skipwhite skipempty nextgroup=redifArgumentAuthorPerson contained
+syntax match redifFieldAuthorPhone /^Author-Phone:/ skipwhite skipempty nextgroup=redifArgumentAuthorPhone contained
+syntax match redifFieldAuthorPostal /^Author-Postal:/ skipwhite skipempty nextgroup=redifArgumentAuthorPostal contained
+syntax match redifFieldAuthorSoftware /^Author-Software:/ skipwhite skipempty nextgroup=redifArgumentAuthorSoftware contained
+syntax match redifFieldAuthorWorkplaceEmail /^Author-Workplace-Email:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceEmail contained
+syntax match redifFieldAuthorWorkplaceFax /^Author-Workplace-Fax:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceFax contained
+syntax match redifFieldAuthorWorkplaceHomepage /^Author-Workplace-Homepage:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceHomepage contained
+syntax match redifFieldAuthorWorkplaceInstitution /^Author-Workplace-Institution:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceInstitution contained
+syntax match redifFieldAuthorWorkplaceLocation /^Author-Workplace-Location:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceLocation contained
+syntax match redifFieldAuthorWorkplaceName /^Author-Workplace-Name:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceName contained
+syntax match redifFieldAuthorWorkplaceNameEnglish /^Author-Workplace-Name-English:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceNameEnglish contained
+syntax match redifFieldAuthorWorkplacePhone /^Author-Workplace-Phone:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplacePhone contained
+syntax match redifFieldAuthorWorkplacePostal /^Author-Workplace-Postal:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplacePostal contained
+syntax match redifFieldAvailability /^Availability:/ skipwhite skipempty nextgroup=redifArgumentAvailability contained
+syntax match redifFieldBookHandle /^Book-Handle:/ skipwhite skipempty nextgroup=redifArgumentBookHandle contained
+syntax match redifFieldBookTitle /^Book-Title:/ skipwhite skipempty nextgroup=redifArgumentBookTitle contained
+syntax match redifFieldChapterHandle /^Chapter-Handle:/ skipwhite skipempty nextgroup=redifArgumentChapterHandle contained
+syntax match redifFieldChapter /^Chapter:/ skipwhite skipempty nextgroup=redifArgumentChapter contained
+syntax match redifFieldClassificationJEL /^Classification-JEL:/ skipwhite skipempty nextgroup=redifArgumentClassificationJEL contained
+syntax match redifFieldContactEmail /^Contact-Email:/ skipwhite skipempty nextgroup=redifArgumentContactEmail contained
+syntax match redifFieldCreationDate /^Creation-Date:/ skipwhite skipempty nextgroup=redifArgumentCreationDate contained
+syntax match redifFieldDescription /^Description:/ skipwhite skipempty nextgroup=redifArgumentDescription contained
+syntax match redifFieldEdition /^Edition:/ skipwhite skipempty nextgroup=redifArgumentEdition contained
+syntax match redifFieldEditorBook /^Editor-Book:/ skipwhite skipempty nextgroup=redifArgumentEditorBook contained
+syntax match redifFieldEditorEmail /^Editor-Email:/ skipwhite skipempty nextgroup=redifArgumentEditorEmail contained
+syntax match redifFieldEditorFax /^Editor-Fax:/ skipwhite skipempty nextgroup=redifArgumentEditorFax contained
+syntax match redifFieldEditorHomepage /^Editor-Homepage:/ skipwhite skipempty nextgroup=redifArgumentEditorHomepage contained
+syntax match redifFieldEditorName /^Editor-Name:/ skipwhite skipempty nextgroup=redifArgumentEditorName contained
+syntax match redifFieldEditorNameFirst /^Editor-Name-First:/ skipwhite skipempty nextgroup=redifArgumentEditorNameFirst contained
+syntax match redifFieldEditorNameLast /^Editor-Name-Last:/ skipwhite skipempty nextgroup=redifArgumentEditorNameLast contained
+syntax match redifFieldEditorPerson /^Editor-Person:/ skipwhite skipempty nextgroup=redifArgumentEditorPerson contained
+syntax match redifFieldEditorPhone /^Editor-Phone:/ skipwhite skipempty nextgroup=redifArgumentEditorPhone contained
+syntax match redifFieldEditorPostal /^Editor-Postal:/ skipwhite skipempty nextgroup=redifArgumentEditorPostal contained
+syntax match redifFieldEditorSeries /^Editor-Series:/ skipwhite skipempty nextgroup=redifArgumentEditorSeries contained
+syntax match redifFieldEditorWorkplaceEmail /^Editor-Workplace-Email:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceEmail contained
+syntax match redifFieldEditorWorkplaceFax /^Editor-Workplace-Fax:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceFax contained
+syntax match redifFieldEditorWorkplaceHomepage /^Editor-Workplace-Homepage:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceHomepage contained
+syntax match redifFieldEditorWorkplaceInstitution /^Editor-Workplace-Institution:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceInstitution contained
+syntax match redifFieldEditorWorkplaceLocation /^Editor-Workplace-Location:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceLocation contained
+syntax match redifFieldEditorWorkplaceName /^Editor-Workplace-Name:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceName contained
+syntax match redifFieldEditorWorkplaceNameEnglish /^Editor-Workplace-Name-English:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceNameEnglish contained
+syntax match redifFieldEditorWorkplacePhone /^Editor-Workplace-Phone:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplacePhone contained
+syntax match redifFieldEditorWorkplacePostal /^Editor-Workplace-Postal:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplacePostal contained
+syntax match redifFieldEmail /^Email:/ skipwhite skipempty nextgroup=redifArgumentEmail contained
+syntax match redifFieldFax /^Fax:/ skipwhite skipempty nextgroup=redifArgumentFax contained
+syntax match redifFieldFileFormat /^File-Format:/ skipwhite skipempty nextgroup=redifArgumentFileFormat contained
+syntax match redifFieldFileFunction /^File-Function:/ skipwhite skipempty nextgroup=redifArgumentFileFunction contained
+syntax match redifFieldFileRestriction /^File-Restriction:/ skipwhite skipempty nextgroup=redifArgumentFileRestriction contained
+syntax match redifFieldFileSize /^File-Size:/ skipwhite skipempty nextgroup=redifArgumentFileSize contained
+syntax match redifFieldFileURL /^File-URL:/ skipwhite skipempty nextgroup=redifArgumentFileURL contained
+syntax match redifFieldFollowup /^Followup:/ skipwhite skipempty nextgroup=redifArgumentFollowup contained
+syntax match redifFieldHandleOfArchive /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfArchive contained
+syntax match redifFieldHandleOfInstitution /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfInstitution contained
+syntax match redifFieldHandleOfPerson /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfPerson contained
+syntax match redifFieldHandleOfSeries /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfSeries contained
+syntax match redifFieldHandleOfWork /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfWork contained
+syntax match redifFieldHasChapter /^HasChapter:/ skipwhite skipempty nextgroup=redifArgumentHasChapter contained
+syntax match redifFieldHomepage /^Homepage:/ skipwhite skipempty nextgroup=redifArgumentHomepage contained
+syntax match redifFieldInBook /^In-Book:/ skipwhite skipempty nextgroup=redifArgumentInBook contained
+syntax match redifFieldISBN /^ISBN:/ skipwhite skipempty nextgroup=redifArgumentISBN contained
+syntax match redifFieldISSN /^ISSN:/ skipwhite skipempty nextgroup=redifArgumentISSN contained
+syntax match redifFieldIssue /^Issue:/ skipwhite skipempty nextgroup=redifArgumentIssue contained
+syntax match redifFieldJournal /^Journal:/ skipwhite skipempty nextgroup=redifArgumentJournal contained
+syntax match redifFieldKeywords /^Keywords:/ skipwhite skipempty nextgroup=redifArgumentKeywords contained
+syntax match redifFieldKeywords /^Keywords:/ skipwhite skipempty nextgroup=redifArgumentKeywords contained
+syntax match redifFieldLanguage /^Language:/ skipwhite skipempty nextgroup=redifArgumentLanguage contained
+syntax match redifFieldLastLoginDate /^Last-Login-Date:/ skipwhite skipempty nextgroup=redifArgumentLastLoginDate contained
+syntax match redifFieldLength /^Length:/ skipwhite skipempty nextgroup=redifArgumentLength contained
+syntax match redifFieldMaintainerEmail /^Maintainer-Email:/ skipwhite skipempty nextgroup=redifArgumentMaintainerEmail contained
+syntax match redifFieldMaintainerFax /^Maintainer-Fax:/ skipwhite skipempty nextgroup=redifArgumentMaintainerFax contained
+syntax match redifFieldMaintainerName /^Maintainer-Name:/ skipwhite skipempty nextgroup=redifArgumentMaintainerName contained
+syntax match redifFieldMaintainerPhone /^Maintainer-Phone:/ skipwhite skipempty nextgroup=redifArgumentMaintainerPhone contained
+syntax match redifFieldMonth /^Month:/ skipwhite skipempty nextgroup=redifArgumentMonth contained
+syntax match redifFieldNameASCII /^Name-ASCII:/ skipwhite skipempty nextgroup=redifArgumentNameASCII contained
+syntax match redifFieldNameFirst /^Name-First:/ skipwhite skipempty nextgroup=redifArgumentNameFirst contained
+syntax match redifFieldNameFull /^Name-Full:/ skipwhite skipempty nextgroup=redifArgumentNameFull contained
+syntax match redifFieldNameLast /^Name-Last:/ skipwhite skipempty nextgroup=redifArgumentNameLast contained
+syntax match redifFieldNameMiddle /^Name-Middle:/ skipwhite skipempty nextgroup=redifArgumentNameMiddle contained
+syntax match redifFieldNamePrefix /^Name-Prefix:/ skipwhite skipempty nextgroup=redifArgumentNamePrefix contained
+syntax match redifFieldNameSuffix /^Name-Suffix:/ skipwhite skipempty nextgroup=redifArgumentNameSuffix contained
+syntax match redifFieldName /^Name:/ skipwhite skipempty nextgroup=redifArgumentName contained
+syntax match redifFieldNote /^Note:/ skipwhite skipempty nextgroup=redifArgumentNote contained
+syntax match redifFieldNotification /^Notification:/ skipwhite skipempty nextgroup=redifArgumentNotification contained
+syntax match redifFieldNumber /^Number:/ skipwhite skipempty nextgroup=redifArgumentNumber contained
+syntax match redifFieldOrderEmail /^Order-Email:/ skipwhite skipempty nextgroup=redifArgumentOrderEmail contained
+syntax match redifFieldOrderHomepage /^Order-Homepage:/ skipwhite skipempty nextgroup=redifArgumentOrderHomepage contained
+syntax match redifFieldOrderPostal /^Order-Postal:/ skipwhite skipempty nextgroup=redifArgumentOrderPostal contained
+syntax match redifFieldOrderURL /^Order-URL:/ skipwhite skipempty nextgroup=redifArgumentOrderURL contained
+syntax match redifFieldPages /^Pages:/ skipwhite skipempty nextgroup=redifArgumentPages contained
+syntax match redifFieldPaperHandle /^Paper-Handle:/ skipwhite skipempty nextgroup=redifArgumentPaperHandle contained
+syntax match redifFieldPhone /^Phone:/ skipwhite skipempty nextgroup=redifArgumentPhone contained
+syntax match redifFieldPostal /^Postal:/ skipwhite skipempty nextgroup=redifArgumentPostal contained
+syntax match redifFieldPredecessor /^Predecessor:/ skipwhite skipempty nextgroup=redifArgumentPredecessor contained
+syntax match redifFieldPrice /^Price:/ skipwhite skipempty nextgroup=redifArgumentPrice contained
+syntax match redifFieldPrimaryDefunct /^Primary-Defunct:/ skipwhite skipempty nextgroup=redifArgumentPrimaryDefunct contained
+syntax match redifFieldPrimaryEmail /^Primary-Email:/ skipwhite skipempty nextgroup=redifArgumentPrimaryEmail contained
+syntax match redifFieldPrimaryFax /^Primary-Fax:/ skipwhite skipempty nextgroup=redifArgumentPrimaryFax contained
+syntax match redifFieldPrimaryHomepage /^Primary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentPrimaryHomepage contained
+syntax match redifFieldPrimaryInstitution /^Primary-Institution:/ skipwhite skipempty nextgroup=redifArgumentPrimaryInstitution contained
+syntax match redifFieldPrimaryLocation /^Primary-Location:/ skipwhite skipempty nextgroup=redifArgumentPrimaryLocation contained
+syntax match redifFieldPrimaryName /^Primary-Name:/ skipwhite skipempty nextgroup=redifArgumentPrimaryName contained
+syntax match redifFieldPrimaryNameEnglish /^Primary-Name-English:/ skipwhite skipempty nextgroup=redifArgumentPrimaryNameEnglish contained
+syntax match redifFieldPrimaryPhone /^Primary-Phone:/ skipwhite skipempty nextgroup=redifArgumentPrimaryPhone contained
+syntax match redifFieldPrimaryPostal /^Primary-Postal:/ skipwhite skipempty nextgroup=redifArgumentPrimaryPostal contained
+syntax match redifFieldProgrammingLanguage /^Programming-Language:/ skipwhite skipempty nextgroup=redifArgumentProgrammingLanguage contained
+syntax match redifFieldProviderEmail /^Provider-Email:/ skipwhite skipempty nextgroup=redifArgumentProviderEmail contained
+syntax match redifFieldProviderFax /^Provider-Fax:/ skipwhite skipempty nextgroup=redifArgumentProviderFax contained
+syntax match redifFieldProviderHomepage /^Provider-Homepage:/ skipwhite skipempty nextgroup=redifArgumentProviderHomepage contained
+syntax match redifFieldProviderInstitution /^Provider-Institution:/ skipwhite skipempty nextgroup=redifArgumentProviderInstitution contained
+syntax match redifFieldProviderLocation /^Provider-Location:/ skipwhite skipempty nextgroup=redifArgumentProviderLocation contained
+syntax match redifFieldProviderName /^Provider-Name:/ skipwhite skipempty nextgroup=redifArgumentProviderName contained
+syntax match redifFieldProviderNameEnglish /^Provider-Name-English:/ skipwhite skipempty nextgroup=redifArgumentProviderNameEnglish contained
+syntax match redifFieldProviderPhone /^Provider-Phone:/ skipwhite skipempty nextgroup=redifArgumentProviderPhone contained
+syntax match redifFieldProviderPostal /^Provider-Postal:/ skipwhite skipempty nextgroup=redifArgumentProviderPostal contained
+syntax match redifFieldPublicationDate /^Publication-Date:/ skipwhite skipempty nextgroup=redifArgumentPublicationDate contained
+syntax match redifFieldPublicationStatus /^Publication-Status:/ skipwhite skipempty nextgroup=redifArgumentPublicationStatus contained
+syntax match redifFieldPublicationType /^Publication-Type:/ skipwhite skipempty nextgroup=redifArgumentPublicationType contained
+syntax match redifFieldQuaternaryEmail /^Quaternary-Email:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryEmail contained
+syntax match redifFieldQuaternaryFax /^Quaternary-Fax:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryFax contained
+syntax match redifFieldQuaternaryHomepage /^Quaternary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryHomepage contained
+syntax match redifFieldQuaternaryInstitution /^Quaternary-Institution:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryInstitution contained
+syntax match redifFieldQuaternaryLocation /^Quaternary-Location:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryLocation contained
+syntax match redifFieldQuaternaryName /^Quaternary-Name:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryName contained
+syntax match redifFieldQuaternaryNameEnglish /^Quaternary-Name-English:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryNameEnglish contained
+syntax match redifFieldQuaternaryPhone /^Quaternary-Phone:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryPhone contained
+syntax match redifFieldQuaternaryPostal /^Quaternary-Postal:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryPostal contained
+syntax match redifFieldRegisteredDate /^Registered-Date:/ skipwhite skipempty nextgroup=redifArgumentRegisteredDate contained
+syntax match redifFieldRequires /^Requires:/ skipwhite skipempty nextgroup=redifArgumentRequires contained
+syntax match redifFieldRestriction /^Restriction:/ skipwhite skipempty nextgroup=redifArgumentRestriction contained
+syntax match redifFieldRevisionDate /^Revision-Date:/ skipwhite skipempty nextgroup=redifArgumentRevisionDate contained
+syntax match redifFieldSecondaryDefunct /^Secondary-Defunct:/ skipwhite skipempty nextgroup=redifArgumentSecondaryDefunct contained
+syntax match redifFieldSecondaryEmail /^Secondary-Email:/ skipwhite skipempty nextgroup=redifArgumentSecondaryEmail contained
+syntax match redifFieldSecondaryFax /^Secondary-Fax:/ skipwhite skipempty nextgroup=redifArgumentSecondaryFax contained
+syntax match redifFieldSecondaryHomepage /^Secondary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentSecondaryHomepage contained
+syntax match redifFieldSecondaryInstitution /^Secondary-Institution:/ skipwhite skipempty nextgroup=redifArgumentSecondaryInstitution contained
+syntax match redifFieldSecondaryLocation /^Secondary-Location:/ skipwhite skipempty nextgroup=redifArgumentSecondaryLocation contained
+syntax match redifFieldSecondaryName /^Secondary-Name:/ skipwhite skipempty nextgroup=redifArgumentSecondaryName contained
+syntax match redifFieldSecondaryNameEnglish /^Secondary-Name-English:/ skipwhite skipempty nextgroup=redifArgumentSecondaryNameEnglish contained
+syntax match redifFieldSecondaryPhone /^Secondary-Phone:/ skipwhite skipempty nextgroup=redifArgumentSecondaryPhone contained
+syntax match redifFieldSecondaryPostal /^Secondary-Postal:/ skipwhite skipempty nextgroup=redifArgumentSecondaryPostal contained
+syntax match redifFieldSeries /^Series:/ skipwhite skipempty nextgroup=redifArgumentSeries contained
+syntax match redifFieldShortId /^Short-Id:/ skipwhite skipempty nextgroup=redifArgumentShortId contained
+syntax match redifFieldSize /^Size:/ skipwhite skipempty nextgroup=redifArgumentSize contained
+syntax match redifFieldSoftwareHandle /^Software-Handle:/ skipwhite skipempty nextgroup=redifArgumentSoftwareHandle contained
+syntax match redifFieldTemplateType /^Template-Type:/ skipwhite skipempty nextgroup=redifArgumentTemplateType contained
+syntax match redifFieldTertiaryDefunct /^Tertiary-Defunct:/ skipwhite skipempty nextgroup=redifArgumentTertiaryDefunct contained
+syntax match redifFieldTertiaryEmail /^Tertiary-Email:/ skipwhite skipempty nextgroup=redifArgumentTertiaryEmail contained
+syntax match redifFieldTertiaryFax /^Tertiary-Fax:/ skipwhite skipempty nextgroup=redifArgumentTertiaryFax contained
+syntax match redifFieldTertiaryHomepage /^Tertiary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentTertiaryHomepage contained
+syntax match redifFieldTertiaryInstitution /^Tertiary-Institution:/ skipwhite skipempty nextgroup=redifArgumentTertiaryInstitution contained
+syntax match redifFieldTertiaryLocation /^Tertiary-Location:/ skipwhite skipempty nextgroup=redifArgumentTertiaryLocation contained
+syntax match redifFieldTertiaryName /^Tertiary-Name:/ skipwhite skipempty nextgroup=redifArgumentTertiaryName contained
+syntax match redifFieldTertiaryNameEnglish /^Tertiary-Name-English:/ skipwhite skipempty nextgroup=redifArgumentTertiaryNameEnglish contained
+syntax match redifFieldTertiaryPhone /^Tertiary-Phone:/ skipwhite skipempty nextgroup=redifArgumentTertiaryPhone contained
+syntax match redifFieldTertiaryPostal /^Tertiary-Postal:/ skipwhite skipempty nextgroup=redifArgumentTertiaryPostal contained
+syntax match redifFieldTitle /^Title:/ skipwhite skipempty nextgroup=redifArgumentTitle contained
+syntax match redifFieldType /^Type:/ skipwhite skipempty nextgroup=redifArgumentType contained
+syntax match redifFieldURL /^URL:/ skipwhite skipempty nextgroup=redifArgumentURL contained
+syntax match redifFieldVersion /^Version:/ skipwhite skipempty nextgroup=redifArgumentVersion contained
+syntax match redifFieldVolume /^Volume:/ skipwhite skipempty nextgroup=redifArgumentVolume contained
+syntax match redifFieldWorkplaceEmail /^Workplace-Email:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceEmail contained
+syntax match redifFieldWorkplaceFax /^Workplace-Fax:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceFax contained
+syntax match redifFieldWorkplaceHomepage /^Workplace-Homepage:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceHomepage contained
+syntax match redifFieldWorkplaceInstitution /^Workplace-Institution:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceInstitution contained
+syntax match redifFieldWorkplaceLocation /^Workplace-Location:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceLocation contained
+syntax match redifFieldWorkplaceName /^Workplace-Name:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceName contained
+syntax match redifFieldWorkplaceNameEnglish /^Workplace-Name-English:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceNameEnglish contained
+syntax match redifFieldWorkplaceOrganization /^Workplace-Organization:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceOrganization contained
+syntax match redifFieldWorkplacePhone /^Workplace-Phone:/ skipwhite skipempty nextgroup=redifArgumentWorkplacePhone contained
+syntax match redifFieldWorkplacePostal /^Workplace-Postal:/ skipwhite skipempty nextgroup=redifArgumentWorkplacePostal contained
+syntax match redifFieldYear /^Year:/ skipwhite skipempty nextgroup=redifArgumentYear contained
+
+highlight def link redifFieldAbstract redifField
+highlight def link redifFieldArticleHandle redifField
+highlight def link redifFieldAuthorArticle redifField
+highlight def link redifFieldAuthorBook redifField
+highlight def link redifFieldAuthorChapter redifField
+highlight def link redifFieldAuthorEmail redifField
+highlight def link redifFieldAuthorFax redifField
+highlight def link redifFieldAuthorHomepage redifField
+highlight def link redifFieldAuthorName redifField
+highlight def link redifFieldAuthorNameFirst redifField
+highlight def link redifFieldAuthorNameLast redifField
+highlight def link redifFieldAuthorPaper redifField
+highlight def link redifFieldAuthorPerson redifField
+highlight def link redifFieldAuthorPhone redifField
+highlight def link redifFieldAuthorPostal redifField
+highlight def link redifFieldAuthorSoftware redifField
+highlight def link redifFieldAuthorWorkplaceEmail redifField
+highlight def link redifFieldAuthorWorkplaceFax redifField
+highlight def link redifFieldAuthorWorkplaceHomepage redifField
+highlight def link redifFieldAuthorWorkplaceInstitution redifField
+highlight def link redifFieldAuthorWorkplaceLocation redifField
+highlight def link redifFieldAuthorWorkplaceName redifField
+highlight def link redifFieldAuthorWorkplaceNameEnglish redifField
+highlight def link redifFieldAuthorWorkplacePhone redifField
+highlight def link redifFieldAuthorWorkplacePostal redifField
+highlight def link redifFieldAvailability redifField
+highlight def link redifFieldBookHandle redifField
+highlight def link redifFieldBookTitle redifField
+highlight def link redifFieldChapterHandle redifField
+highlight def link redifFieldChapter redifField
+highlight def link redifFieldClassificationJEL redifField
+highlight def link redifFieldContactEmail redifField
+highlight def link redifFieldCreationDate redifField
+highlight def link redifFieldDescription redifField
+highlight def link redifFieldEdition redifField
+highlight def link redifFieldEditorBook redifField
+highlight def link redifFieldEditorEmail redifField
+highlight def link redifFieldEditorFax redifField
+highlight def link redifFieldEditorHomepage redifField
+highlight def link redifFieldEditorName redifField
+highlight def link redifFieldEditorNameFirst redifField
+highlight def link redifFieldEditorNameLast redifField
+highlight def link redifFieldEditorPerson redifField
+highlight def link redifFieldEditorPhone redifField
+highlight def link redifFieldEditorPostal redifField
+highlight def link redifFieldEditorSeries redifField
+highlight def link redifFieldEditorWorkplaceEmail redifField
+highlight def link redifFieldEditorWorkplaceFax redifField
+highlight def link redifFieldEditorWorkplaceHomepage redifField
+highlight def link redifFieldEditorWorkplaceInstitution redifField
+highlight def link redifFieldEditorWorkplaceLocation redifField
+highlight def link redifFieldEditorWorkplaceName redifField
+highlight def link redifFieldEditorWorkplaceNameEnglish redifField
+highlight def link redifFieldEditorWorkplacePhone redifField
+highlight def link redifFieldEditorWorkplacePostal redifField
+highlight def link redifFieldEmail redifField
+highlight def link redifFieldFax redifField
+highlight def link redifFieldFileFormat redifField
+highlight def link redifFieldFileFunction redifField
+highlight def link redifFieldFileRestriction redifField
+highlight def link redifFieldFileSize redifField
+highlight def link redifFieldFileURL redifField
+highlight def link redifFieldFollowup redifField
+highlight def link redifFieldHandleOfArchive redifField
+highlight def link redifFieldHandleOfInstitution redifField
+highlight def link redifFieldHandleOfPerson redifField
+highlight def link redifFieldHandleOfSeries redifField
+highlight def link redifFieldHandleOfWork redifField
+highlight def link redifFieldHasChapter redifField
+highlight def link redifFieldHomepage redifField
+highlight def link redifFieldInBook redifField
+highlight def link redifFieldISBN redifField
+highlight def link redifFieldISSN redifField
+highlight def link redifFieldIssue redifField
+highlight def link redifFieldJournal redifField
+highlight def link redifFieldKeywords redifField
+highlight def link redifFieldKeywords redifField
+highlight def link redifFieldLanguage redifField
+highlight def link redifFieldLastLoginDate redifField
+highlight def link redifFieldLength redifField
+highlight def link redifFieldMaintainerEmail redifField
+highlight def link redifFieldMaintainerFax redifField
+highlight def link redifFieldMaintainerName redifField
+highlight def link redifFieldMaintainerPhone redifField
+highlight def link redifFieldMonth redifField
+highlight def link redifFieldNameASCII redifField
+highlight def link redifFieldNameFirst redifField
+highlight def link redifFieldNameFull redifField
+highlight def link redifFieldNameLast redifField
+highlight def link redifFieldNameMiddle redifField
+highlight def link redifFieldNamePrefix redifField
+highlight def link redifFieldNameSuffix redifField
+highlight def link redifFieldName redifField
+highlight def link redifFieldNote redifField
+highlight def link redifFieldNotification redifField
+highlight def link redifFieldNumber redifField
+highlight def link redifFieldOrderEmail redifField
+highlight def link redifFieldOrderHomepage redifField
+highlight def link redifFieldOrderPostal redifField
+highlight def link redifFieldOrderURL redifField
+highlight def link redifFieldPages redifField
+highlight def link redifFieldPaperHandle redifField
+highlight def link redifFieldPhone redifField
+highlight def link redifFieldPostal redifField
+highlight def link redifFieldPredecessor redifField
+highlight def link redifFieldPrice redifField
+highlight def link redifFieldPrimaryDefunct redifField
+highlight def link redifFieldPrimaryEmail redifField
+highlight def link redifFieldPrimaryFax redifField
+highlight def link redifFieldPrimaryHomepage redifField
+highlight def link redifFieldPrimaryInstitution redifField
+highlight def link redifFieldPrimaryLocation redifField
+highlight def link redifFieldPrimaryName redifField
+highlight def link redifFieldPrimaryNameEnglish redifField
+highlight def link redifFieldPrimaryPhone redifField
+highlight def link redifFieldPrimaryPostal redifField
+highlight def link redifFieldProgrammingLanguage redifField
+highlight def link redifFieldProviderEmail redifField
+highlight def link redifFieldProviderFax redifField
+highlight def link redifFieldProviderHomepage redifField
+highlight def link redifFieldProviderInstitution redifField
+highlight def link redifFieldProviderLocation redifField
+highlight def link redifFieldProviderName redifField
+highlight def link redifFieldProviderNameEnglish redifField
+highlight def link redifFieldProviderPhone redifField
+highlight def link redifFieldProviderPostal redifField
+highlight def link redifFieldPublicationDate redifField
+highlight def link redifFieldPublicationStatus redifField
+highlight def link redifFieldPublicationType redifField
+highlight def link redifFieldQuaternaryEmail redifField
+highlight def link redifFieldQuaternaryFax redifField
+highlight def link redifFieldQuaternaryHomepage redifField
+highlight def link redifFieldQuaternaryInstitution redifField
+highlight def link redifFieldQuaternaryLocation redifField
+highlight def link redifFieldQuaternaryName redifField
+highlight def link redifFieldQuaternaryNameEnglish redifField
+highlight def link redifFieldQuaternaryPhone redifField
+highlight def link redifFieldQuaternaryPostal redifField
+highlight def link redifFieldRegisteredDate redifField
+highlight def link redifFieldRequires redifField
+highlight def link redifFieldRestriction redifField
+highlight def link redifFieldRevisionDate redifField
+highlight def link redifFieldSecondaryDefunct redifField
+highlight def link redifFieldSecondaryEmail redifField
+highlight def link redifFieldSecondaryFax redifField
+highlight def link redifFieldSecondaryHomepage redifField
+highlight def link redifFieldSecondaryInstitution redifField
+highlight def link redifFieldSecondaryLocation redifField
+highlight def link redifFieldSecondaryName redifField
+highlight def link redifFieldSecondaryNameEnglish redifField
+highlight def link redifFieldSecondaryPhone redifField
+highlight def link redifFieldSecondaryPostal redifField
+highlight def link redifFieldSeries redifField
+highlight def link redifFieldShortId redifField
+highlight def link redifFieldSize redifField
+highlight def link redifFieldSoftwareHandle redifField
+highlight def link redifFieldTemplateType redifField
+highlight def link redifFieldTertiaryDefunct redifField
+highlight def link redifFieldTertiaryEmail redifField
+highlight def link redifFieldTertiaryFax redifField
+highlight def link redifFieldTertiaryHomepage redifField
+highlight def link redifFieldTertiaryInstitution redifField
+highlight def link redifFieldTertiaryLocation redifField
+highlight def link redifFieldTertiaryName redifField
+highlight def link redifFieldTertiaryNameEnglish redifField
+highlight def link redifFieldTertiaryPhone redifField
+highlight def link redifFieldTertiaryPostal redifField
+highlight def link redifFieldTitle redifField
+highlight def link redifFieldTitle redifField
+highlight def link redifFieldType redifField
+highlight def link redifFieldURL redifField
+highlight def link redifFieldVersion redifField
+highlight def link redifFieldVolume redifField
+highlight def link redifFieldWorkplaceEmail redifField
+highlight def link redifFieldWorkplaceFax redifField
+highlight def link redifFieldWorkplaceHomepage redifField
+highlight def link redifFieldWorkplaceInstitution redifField
+highlight def link redifFieldWorkplaceLocation redifField
+highlight def link redifFieldWorkplaceName redifField
+highlight def link redifFieldWorkplaceNameEnglish redifField
+highlight def link redifFieldWorkplaceOrganization redifField
+highlight def link redifFieldWorkplacePhone redifField
+highlight def link redifFieldWorkplacePostal redifField
+highlight def link redifFieldYear redifField
+
+" Deprecated
+" same as Provider-*
+" nextgroup=redifArgumentProvider*
+syntax match redifFieldPublisherEmail /^Publisher-Email:/ skipwhite skipempty nextgroup=redifArgumentProviderEmail contained
+syntax match redifFieldPublisherFax /^Publisher-Fax:/ skipwhite skipempty nextgroup=redifArgumentProviderFax contained
+syntax match redifFieldPublisherHomepage /^Publisher-Homepage:/ skipwhite skipempty nextgroup=redifArgumentProviderHomepage contained
+syntax match redifFieldPublisherInstitution /^Publisher-Institution:/ skipwhite skipempty nextgroup=redifArgumentProviderInstitution contained
+syntax match redifFieldPublisherLocation /^Publisher-Location:/ skipwhite skipempty nextgroup=redifArgumentProviderLocation contained
+syntax match redifFieldPublisherName /^Publisher-Name:/ skipwhite skipempty nextgroup=redifArgumentProviderName contained
+syntax match redifFieldPublisherNameEnglish /^Publisher-Name-English:/ skipwhite skipempty nextgroup=redifArgumentProviderNameEnglish contained
+syntax match redifFieldPublisherPhone /^Publisher-Phone:/ skipwhite skipempty nextgroup=redifArgumentProviderPhone contained
+syntax match redifFieldPublisherPostal /^Publisher-Postal:/ skipwhite skipempty nextgroup=redifArgumentProviderPostal contained
+
+highlight def link redifFieldPublisherEmail redifFieldDeprecated
+highlight def link redifFieldPublisherFax redifFieldDeprecated
+highlight def link redifFieldPublisherHomepage redifFieldDeprecated
+highlight def link redifFieldPublisherInstitution redifFieldDeprecated
+highlight def link redifFieldPublisherLocation redifFieldDeprecated
+highlight def link redifFieldPublisherName redifFieldDeprecated
+highlight def link redifFieldPublisherNameEnglish redifFieldDeprecated
+highlight def link redifFieldPublisherPhone redifFieldDeprecated
+highlight def link redifFieldPublisherPostal redifFieldDeprecated
+
+" Standard arguments
+" By default, they contain all the argument until another field is started:
+" start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1
+" For arguments that must not span more than one line, use a match:
+" /\%(^\S\{-}:\)\@!\S.*/
+" AND ADD "display"
+" This is faster.
+"
+" Those arguments are not highlighted so far. They are here for future
+" extensions.
+" TODO Find more RegEx for these arguments
+" TODO Fax, Phone
+" TODO URL, Homepage
+" TODO Keywords
+" TODO Classification-JEL
+" TODO Short-Id, Author-Person, Editor-Person
+"
+" Arguments that may span several lines:
+syntax region redifArgumentAuthorWorkplaceLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentAuthorWorkplacePostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentEditorPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentEditorWorkplacePostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentFileFunction start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentIssue start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentJournal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentOrderPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentPrice start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentPrimaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentPrimaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentProviderLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentProviderPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentQuaternaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentQuaternaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentRequires start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentSecondaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentSecondaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentSize start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentTertiaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentTertiaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentVersion start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentWorkplaceLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentWorkplacePhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentWorkplacePostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+
+" Arguments that may not span several lines:
+" If you are sure that these arguments cannot span several lines, change
+" them to a match:
+" /\%(^\S\{-}:\)\@!\S.*/
+" AND ADD "display" after "contained"
+" You can use this command on each line that you want to change:
+" :s+\Vregion \(\w\+\) start=/\\%(^\\S\\{-}:\\)\\@!\\S/ end=/^\\S\\{-}:/me=s-1 contained+match \1 /\\%(^\\S\\{-}:\\)\\@!\\S.*/ contained display
+syntax region redifArgumentAuthorFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentAuthorHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentAuthorName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentAuthorNameFirst start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentAuthorNameLast start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentAuthorPerson start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentAuthorPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentAuthorPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentAuthorWorkplaceFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentAuthorWorkplaceHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentAuthorWorkplaceName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentAuthorWorkplaceNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentAuthorWorkplacePhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentEditorFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentEditorHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentEditorName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentEditorNameFirst start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentEditorNameLast start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentEditorPerson start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentEditorPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentEditorWorkplaceFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentEditorWorkplaceHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentEditorWorkplaceLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentEditorWorkplaceName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentEditorWorkplaceNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentEditorWorkplacePhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentFileURL start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentMaintainerFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentMaintainerName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentMaintainerPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentNameFirst start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentNameFull start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentNameLast start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentNameMiddle start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentNamePrefix start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentNameSuffix start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentNumber start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentOrderHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentOrderURL start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentPrimaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentPrimaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentPrimaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentPrimaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentPrimaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentProviderFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentProviderHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentProviderName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentProviderNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentProviderPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentQuaternaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentQuaternaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentQuaternaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentQuaternaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentQuaternaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentSecondaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentSecondaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentSecondaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentSecondaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentSecondaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentSeries start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentShortId start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentTertiaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentTertiaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentTertiaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentTertiaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentTertiaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentURL start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentWorkplaceFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentWorkplaceHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentWorkplaceName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentWorkplaceNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+syntax region redifArgumentWorkplaceOrganization start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
+
+" Special arguments
+" Those arguments require special values
+" TODO Improve some RegEx
+" TODO Improve Emails
+" TODO Improve ISBN
+" TODO Improve ISSN
+" TODO Improve spell check (add words from economics.
+" expl=macroeconometrics, Schumpeterian, IS-LM, etc.)
+"
+" Template-Type
+syntax match redifArgumentTemplateType /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectTemplateType contained display
+syntax match redifCorrectTemplateType /ReDIF-\%(Paper\|Article\|Chapter\|Book\|Software\|Archive\|Series\|Institution\|Person\)/ nextgroup=redifTemplateVersionNumberContainer contained display
+syntax match redifTemplateVersionNumberContainer /.\+/ contains=redifTemplateVersionNumber contained display
+syntax match redifTemplateVersionNumber / \d\+\.\d\+/ nextgroup=redifWrongLineEnding contained display
+
+highlight def link redifArgumentTemplateType redifError
+highlight def link redifCorrectTemplateType Constant
+highlight def link redifTemplateVersionNumber Number
+highlight def link redifTemplateVersionNumberContainer redifError
+
+" Handles:
+"
+" Handles of Works:
+syntax match redifArgumentHandleOfWork /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
+syntax match redifArgumentAuthorArticle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
+syntax match redifArgumentAuthorBook /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
+syntax match redifArgumentAuthorChapter /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
+syntax match redifArgumentAuthorPaper /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
+syntax match redifArgumentAuthorSoftware /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
+syntax match redifArgumentEditorBook /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
+syntax match redifArgumentEditorSeries /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
+syntax match redifArgumentInBook /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
+syntax match redifArgumentHasChapter /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
+syntax match redifArgumentArticleHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
+syntax match redifArgumentBookHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
+syntax match redifArgumentChapterHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
+syntax match redifArgumentPaperHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
+syntax match redifArgumentSoftwareHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
+syntax match redifCorrectHandleOfWork /RePEc:\a\a\a:\%(_\@!\w\)\{6}:\S\+/ contains=redifForbiddenCharactersInHandle,redifBestPracticeInHandle nextgroup=redifWrongLineEnding contained display
+" TODO Are those characters really forbidden???
+syntax match redifForbiddenCharactersInHandle /[\/*?"<>|]/ contained display
+syntax match redifBestPracticeInHandle /\<\%([vi]:[1-9]\d*\|y:[1-9]\d\{3}\|p:[1-9]\d*-[1-9]\d*\|i:\%(jan\|feb\|mar\|apr\|may\|jun\|jul\|aug\|sep\|oct\|nov\|dec\|spr\|sum\|aut\|win\|spe\|Q[1-4]\|\d\d-\d\d\)\|Q:[1-4]\)\>/ contained display
+
+highlight def link redifArgumentHandleOfWork redifError
+highlight def link redifArgumentAuthorArticle redifError
+highlight def link redifArgumentAuthorBook redifError
+highlight def link redifArgumentAuthorChapter redifError
+highlight def link redifArgumentAuthorPaper redifError
+highlight def link redifArgumentAuthorSoftware redifError
+highlight def link redifArgumentEditorBook redifError
+highlight def link redifArgumentEditorSeries redifError
+highlight def link redifArgumentInBook redifError
+highlight def link redifArgumentHasChapter redifError
+highlight def link redifArgumentArticleHandle redifError
+highlight def link redifArgumentBookHandle redifError
+highlight def link redifArgumentChapterHandle redifError
+highlight def link redifArgumentPaperHandle redifError
+highlight def link redifArgumentSoftwareHandle redifError
+highlight def link redifForbiddenCharactersInHandle redifError
+highlight def link redifBestPracticeInHandle redifSpecial
+
+" Handles of Series:
+syntax match redifArgumentHandleOfSeries /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfSeries contained display
+syntax match redifArgumentFollowup /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfSeries contained display
+syntax match redifArgumentPredecessor /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfSeries contained display
+syntax match redifCorrectHandleOfSeries /RePEc:\a\a\a:\%(_\@!\w\)\{6}/ nextgroup=redifWrongLineEnding contained display
+
+highlight def link redifArgumentHandleOfSeries redifError
+highlight def link redifArgumentFollowup redifError
+highlight def link redifArgumentPredecessor redifError
+
+" Handles of Archives:
+syntax match redifArgumentHandleOfArchive /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfArchive contained display
+syntax match redifCorrectHandleOfArchive /RePEc:\a\a\a/ nextgroup=redifWrongLineEnding contained display
+
+highlight def link redifArgumentHandleOfArchive redifError
+
+" Handles of Person:
+syntax match redifArgumentHandleOfPerson /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfPerson contained display
+syntax match redifCorrectHandleOfPerson /\%(\%(:\@!\S\)\{-}:\)\{2}[1-9]\d\{3}\%(-02\%(-[12]\d\|-0[1-9]\)\|-\%(0[469]\|11\)\%(-30\|-[12]\d\|-0[1-9]\)\|-\%(0[13578]\|1[02]\)\%(-3[01]\|-[12]\d\|-0[1-9]\)\):\S\+/ nextgroup=redifWrongLineEnding contained display
+
+highlight def link redifArgumentHandleOfPerson redifError
+
+" Handles of Institution:
+syntax match redifArgumentAuthorWorkplaceInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display
+syntax match redifArgumentEditorWorkplaceInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display
+syntax match redifArgumentPrimaryInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display
+syntax match redifArgumentProviderInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display
+syntax match redifArgumentPublisherInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display
+syntax match redifArgumentQuaternaryInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display
+syntax match redifArgumentSecondaryInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display
+syntax match redifArgumentTertiaryInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display
+syntax match redifArgumentWorkplaceInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display
+syntax match redifArgumentHandleOfInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display
+syntax match redifArgumentPrimaryDefunct /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display
+syntax match redifArgumentSecondaryDefunct /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display
+syntax match redifArgumentTertiaryDefunct /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display
+" TODO Are digits authorized? Apparently not.
+" Country codes:
+" http://www.iso.org/iso/country_codes/iso_3166_code_lists/country_names_and_code_elements.htm
+syntax match redifCorrectHandleOfInstitution /RePEc:\a\a\a:\a\{5}\(ea\|af\|ax\|al\|dz\|as\|ad\|ao\|ai\|aq\|ag\|ar\|am\|aw\|au\|at\|az\|bs\|bh\|bd\|bb\|by\|be\|bz\|bj\|bm\|bt\|bo\|bq\|ba\|bw\|bv\|br\|io\|bn\|bg\|bf\|bi\|kh\|cm\|ca\|cv\|ky\|cf\|td\|cl\|cn\|cx\|cc\|co\|km\|cg\|cd\|ck\|cr\|ci\|hr\|cu\|cw\|cy\|cz\|dk\|dj\|dm\|do\|ec\|eg\|sv\|gq\|er\|ee\|et\|fk\|fo\|fj\|fi\|fr\|gf\|pf\|tf\|ga\|gm\|ge\|de\|gh\|gi\|gr\|gl\|gd\|gp\|gu\|gt\|gg\|gn\|gw\|gy\|ht\|hm\|va\|hn\|hk\|hu\|is\|in\|id\|ir\|iq\|ie\|im\|il\|it\|jm\|jp\|je\|jo\|kz\|ke\|ki\|kp\|kr\|kw\|kg\|la\|lv\|lb\|ls\|lr\|ly\|li\|lt\|lu\|mo\|mk\|mg\|mw\|my\|mv\|ml\|mt\|mh\|mq\|mr\|mu\|yt\|mx\|fm\|md\|mc\|mn\|me\|ms\|ma\|mz\|mm\|na\|nr\|np\|nl\|nc\|nz\|ni\|ne\|ng\|nu\|nf\|mp\|no\|om\|pk\|pw\|ps\|pa\|pg\|py\|pe\|ph\|pn\|pl\|pt\|pr\|qa\|re\|ro\|ru\|rw\|bl\|sh\|kn\|lc\|mf\|pm\|vc\|ws\|sm\|st\|sa\|sn\|rs\|sc\|sl\|sg\|sx\|sk\|si\|sb\|so\|za\|gs\|ss\|es\|lk\|sd\|sr\|sj\|sz\|se\|ch\|sy\|tw\|tj\|tz\|th\|tl\|tg\|tk\|to\|tt\|tn\|tr\|tm\|tc\|tv\|ug\|ua\|ae\|gb\|us\|um\|uy\|uz\|vu\|ve\|vn\|vg\|vi\|wf\|eh\|ye\|zm\|zw\)/ nextgroup=redifWrongLineEnding contained display
+
+highlight def link redifArgumentHandleOfInstitution redifError
+highlight def link redifArgumentPrimaryDefunct redifError
+highlight def link redifArgumentSecondaryDefunct redifError
+highlight def link redifArgumentTertiaryDefunct redifError
+
+" Emails:
+syntax match redifArgumentAuthorEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
+syntax match redifArgumentAuthorWorkplaceEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
+syntax match redifArgumentContactEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
+syntax match redifArgumentEditorEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
+syntax match redifArgumentEditorWorkplaceEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
+syntax match redifArgumentEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
+syntax match redifArgumentMaintainerEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
+syntax match redifArgumentOrderEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
+syntax match redifArgumentPrimaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
+syntax match redifArgumentProviderEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
+syntax match redifArgumentPublisherEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
+syntax match redifArgumentQuaternaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
+syntax match redifArgumentSecondaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
+syntax match redifArgumentTertiaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
+syntax match redifArgumentWorkplaceEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
+syntax match redifCorrectEmail /\%(@\@!\S\)\+@\%(@\@!\S\)\+/ nextgroup=redifWrongLineEnding contained display
+
+highlight def link redifArgumentAuthorEmail redifError
+highlight def link redifArgumentAuthorWorkplaceEmail redifError
+highlight def link redifArgumentContactEmail redifError
+highlight def link redifArgumentEditorEmail redifError
+highlight def link redifArgumentEditorWorkplaceEmail redifError
+highlight def link redifArgumentEmail redifError
+highlight def link redifArgumentMaintainerEmail redifError
+highlight def link redifArgumentOrderEmail redifError
+highlight def link redifArgumentPrimaryEmail redifError
+highlight def link redifArgumentProviderEmail redifError
+highlight def link redifArgumentPublisherEmail redifError
+highlight def link redifArgumentQuaternaryEmail redifError
+highlight def link redifArgumentSecondaryEmail redifError
+highlight def link redifArgumentTertiaryEmail redifError
+highlight def link redifArgumentWorkplaceEmail redifError
+
+" Language
+" Source: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
+syntax match redifArgumentLanguage /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectLanguage contained display
+syntax match redifCorrectLanguage /\<\(aa\|ab\|af\|ak\|als\|am\|an\|ang\|ar\|arc\|as\|ast\|av\|ay\|az\|ba\|bar\|bat-smg\|bcl\|be\|be-x-old\|bg\|bh\|bi\|bm\|bn\|bo\|bpy\|br\|bs\|bug\|bxr\|ca\|ce\|ceb\|ch\|cho\|chr\|chy\|co\|cr\|cs\|csb\|cu\|cv\|cy\|da\|de\|diq\|dsb\|dv\|dz\|ee\|el\|en\|eo\|es\|et\|eu\|ext\|fa\|ff\|fi\|fiu-vro\|fj\|fo\|fr\|frp\|fur\|fy\|ga\|gd\|gil\|gl\|gn\|got\|gu\|gv\|ha\|haw\|he\|hi\|ho\|hr\|ht\|hu\|hy\|hz\|ia\|id\|ie\|ig\|ii\|ik\|ilo\|io\|is\|it\|iu\|ja\|jbo\|jv\|ka\|kg\|ki\|kj\|kk\|kl\|km\|kn\|khw\|ko\|kr\|ks\|ksh\|ku\|kv\|kw\|ky\|la\|lad\|lan\|lb\|lg\|li\|lij\|lmo\|ln\|lo\|lt\|lv\|map-bms\|mg\|mh\|mi\|mk\|ml\|mn\|mo\|mr\|ms\|mt\|mus\|my\|na\|nah\|nap\|nd\|nds\|nds-nl\|ne\|new\|ng\|nl\|nn\|no\|nr\|nso\|nrm\|nv\|ny\|oc\|oj\|om\|or\|os\|pa\|pag\|pam\|pap\|pdc\|pi\|pih\|pl\|pms\|ps\|pt\|qu\|rm\|rmy\|rn\|ro\|roa-rup\|ru\|rw\|sa\|sc\|scn\|sco\|sd\|se\|sg\|sh\|si\|simple\|sk\|sl\|sm\|sn\|so\|sq\|sr\|ss\|st\|su\|sv\|sw\|ta\|te\|tet\|tg\|th\|ti\|tk\|tl\|tlh\|tn\|to\|tpi\|tr\|ts\|tt\|tum\|tw\|ty\|udm\|ug\|uk\|ur\|uz\|ve\|vi\|vec\|vls\|vo\|wa\|war\|wo\|xal\|xh\|yi\|yo\|za\|zh\|zh-min-nan\|zh-yue\|zu\)\>/ nextgroup=redifWrongLineEnding contained display
+
+highlight def link redifArgumentLanguage redifError
+highlight def link redifCorrectLanguage redifSpecial
+
+" Length
+" Based on the example in the documentation. But apparently any field is
+" possible
+syntax region redifArgumentLength start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=redifGoodLength contained
+syntax match redifGoodLength /1 page\|[1-9]\d*\%( pages\)\=/ contained display
+
+highlight def link redifGoodLength redifSpecial
+
+" Publication-Type
+syntax match redifArgumentPublicationType /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectPublicationType contained display
+syntax match redifCorrectPublicationType /\<\(journal article\|book\|book chapter\|working paper\|conference paper\|report\|other\)\>/ nextgroup=redifWrongLineEnding contained display
+
+highlight def link redifArgumentPublicationType redifError
+highlight def link redifCorrectPublicationType redifSpecial
+
+" Publication-Status
+syntax region redifArgumentPublicationStatus start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=redifSpecialPublicationStatus contained
+syntax match redifSpecialPublicationStatus /published\|forthcoming/ nextgroup=redifCorrectPublicationStatus contained display
+syntax region redifCorrectPublicationStatus start=/./ end=/^\S\{-}:/me=s-1 contained
+
+highlight def link redifArgumentPublicationStatus redifError
+highlight def link redifSpecialPublicationStatus redifSpecial
+
+" Month
+" TODO Are numbers also allowed?
+syntax match redifArgumentMonth /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodMonth contained display
+syntax match redifGoodMonth /\<\(Jan\%(uary\)\=\|Feb\%(ruary\)\=\|Mar\%(ch\)\=\|Apr\%(il\)\=\|May\|June\=\|July\=\|Aug\%(ust\)\=\|Sep\%(tember\)\=\|Oct\%(ober\)\=\|Nov\%(ember\)\=\|Dec\%(ember\)\=\)\>/ contained display
+
+highlight def link redifGoodMonth redifSpecial
+
+" Integers: Volume, Chapter
+syntax match redifArgumentVolume /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectInteger contained display
+syntax match redifArgumentChapter /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectInteger contained display
+syntax match redifCorrectInteger /[1-9]\d*/ nextgroup=redifWrongLineEnding contained display
+
+highlight def link redifArgumentVolume redifError
+highlight def link redifArgumentChapter redifError
+
+" Year
+syntax match redifArgumentYear /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectYear contained display
+syntax match redifCorrectYear /[1-9]\d\{3}/ nextgroup=redifWrongLineEnding contained display
+
+highlight def link redifArgumentYear redifError
+
+" Edition
+" Based on the example in the documentation.
+syntax match redifArgumentEdition /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodEdition contained display
+syntax match redifGoodEdition /1st\|2nd\|3rd\|[4-9]th\|[1-9]\d*\%(1st\|2nd\|3rd\|[4-9]th\)\|[1-9]\d*/ contained display
+
+highlight def link redifGoodEdition redifSpecial
+
+" ISBN
+syntax match redifArgumentISBN /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodISBN contained display
+syntax match redifGoodISBN /\d[0-9-]\{8,15}\d/ contained display
+
+highlight def link redifGoodISBN redifSpecial
+
+" ISSN
+syntax match redifArgumentISSN /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodISSN contained display
+syntax match redifGoodISSN /\d\{4}-\d\{3}[0-9X]/ contained display
+
+highlight def link redifGoodISSN redifSpecial
+
+" File-Size
+" Based on the example in the documentation.
+syntax region redifArgumentFileSize start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=redifGoodSize contained
+syntax match redifGoodSize /kb\|bytes/ contained display
+
+highlight def link redifGoodSize redifSpecial
+
+" Type
+syntax match redifArgumentType /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectType contained display
+syntax match redifCorrectType /ReDIF-Paper\|ReDIF-Software\|ReDIF-Article\|ReDIF-Chapter\|ReDIF-Book/ nextgroup=redifWrongLineEnding contained display
+
+highlight def link redifArgumentType redifError
+highlight def link redifCorrectType redifSpecial
+
+" Dates: Publication-Date, Creation-Date, Revision-Date,
+" Last-Login-Date, Registration-Date
+syntax match redifArgumentCreationDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display
+syntax match redifArgumentLastLoginDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display
+syntax match redifArgumentPublicationDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display
+syntax match redifArgumentRegisteredDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display
+syntax match redifArgumentRevisionDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display
+syntax match redifCorrectDate /[1-9]\d\{3}\%(-02\%(-[12]\d\|-0[1-9]\)\=\|-\%(0[469]\|11\)\%(-30\|-[12]\d\|-0[1-9]\)\=\|-\%(0[13578]\|1[02]\)\%(-3[01]\|-[12]\d\|-0[1-9]\)\=\)\=/ nextgroup=redifWrongLineEnding contained display
+
+highlight def link redifArgumentCreationDate redifError
+highlight def link redifArgumentLastLoginDate redifError
+highlight def link redifArgumentPublicationDate redifError
+highlight def link redifArgumentRegisteredDate redifError
+highlight def link redifArgumentRevisionDate redifError
+
+" Classification-JEL
+syntax match redifArgumentClassificationJEL /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectJEL contained display
+syntax match redifCorrectJEL /\<\%(\u\d\{,2}[,; \t]\s*\)*\u\d\{,2}/ contains=redifSpecialJEL nextgroup=redifWrongLineEnding contained display
+syntax match redifSpecialJEL /\<\u\d\{,2}/ contained display
+
+highlight def link redifArgumentClassificationJEL redifError
+highlight def link redifSpecialJEL redifSpecial
+
+" Pages
+syntax match redifArgumentPages /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectPages contained display
+syntax match redifCorrectPages /[1-9]\d*-[1-9]\d*/ nextgroup=redifWrongLineEnding contained display
+
+highlight def link redifArgumentPages redifError
+
+" Name-ASCII
+syntax match redifArgumentNameASCII /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectNameASCII contained display
+syntax match redifCorrectNameASCII /[ -~]/ contained display
+
+highlight def link redifArgumentNameASCII redifError
+
+" Programming-Language
+syntax match redifArgumentProgrammingLanguage /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodProgrammingLanguage contained display
+syntax match redifGoodProgrammingLanguage /\<c++\|\<\%(c\|dos executable\|executable\|fortran\|gauss\|gretl\|java\|mathematica\|matlab\|octave\|ox\|perl\|python\|rats\|r\|shazam\|s-plus\|stata\|tsp international\)\>/ nextgroup=redifWrongLineEnding contained display
+
+highlight def link redifGoodProgrammingLanguage redifSpecial
+
+" File-Format
+" TODO The link in the documentation that gives the list of possible formats is broken.
+" ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/media-types
+" These are based on the examples in the documentation.
+syntax match redifArgumentFileFormat /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodFormat contained display
+syntax match redifGoodFormat "\a\+/[[:alpha:]+-]\+" nextgroup=redifWrongLineEnding contains=redifSpecialFormat contained display
+syntax match redifSpecialFormat "application/atom+xml\|application/ecmascript\|application/EDI-X12\|application/EDIFACT\|application/json\|application/javascript\|application/octet-stream\|application/ogg\|application/pdf\|application/postscript\|application/rdf+xml\|application/rss+xml\|application/soap+xml\|application/font-woff\|application/xhtml+xml\|application/xml\|application/xml-dtd\|application/xop+xml\|application/zip\|application/gzip\|audio/basic\|audio/L24\|audio/mp4\|audio/mpeg\|audio/ogg\|audio/vorbis\|audio/vnd.rn-realaudio\|audio/vnd.wave\|audio/webm\|image/gif\|image/jpeg\|image/pjpeg\|image/png\|image/svg+xml\|image/tiff\|image/vnd.microsoft.icon\|message/http\|message/imdn+xml\|message/partial\|message/rfc822\|model/example\|model/iges\|model/mesh\|model/vrml\|model/x3d+binary\|model/x3d+vrml\|model/x3d+xml\|multipart/mixed\|multipart/alternative\|multipart/related\|multipart/form-data\|multipart/signed\|multipart/encrypted\|text/cmd\|text/css\|text/csv\|text/html\|text/javascript\|text/plain\|text/vcard\|text/xml\|video/mpeg\|video/mp4\|video/ogg\|video/quicktime\|video/webm\|video/x-matroska\|video/x-ms-wmv\|video/x-flv" contained display
+
+highlight def link redifSpecialFormat redifSpecial
+highlight def link redifArgumentFileFormat redifError
+
+" Keywords
+" Spell checked
+syntax match redifArgumentKeywords /\%(^\S\{-}:\)\@!\S.*/ contains=@Spell,redifKeywordsSemicolon contained
+syntax match redifKeywordsSemicolon /;/ contained
+
+highlight def link redifKeywordsSemicolon redifSpecial
+
+" Other spell-checked arguments
+" Very useful when copy-pasting abstracts that may contain hyphens or
+" ligatures.
+syntax region redifArgumentAbstract start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
+syntax region redifArgumentAvailability start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
+syntax region redifArgumentBookTitle start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
+syntax region redifArgumentDescription start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
+syntax region redifArgumentFileRestriction start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
+syntax region redifArgumentNote start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
+syntax region redifArgumentNotification start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
+syntax region redifArgumentRestriction start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
+syntax region redifArgumentTitle start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
+
+" Wrong line ending
+syntax match redifWrongLineEnding /.\+/ contained display
+
+highlight def link redifWrongLineEnding redifError
+
+" Final highlight
+highlight def link redifComment Comment
+highlight def link redifError Error
+highlight def link redifField Identifier
+highlight def link redifFieldDeprecated Identifier
+highlight def link redifSpecial Special
+" For deprecated fields:
+highlight redifFieldDeprecated term=undercurl cterm=undercurl gui=undercurl guisp=DarkGrey
+
+" Sync: The template-type (ReDIF-Paper, ReDIF-Archive, etc.) influences which
+" fields can follow. Thus sync must search backwards for it.
+"
+" I would like to simply ask VIM to search backward for the first occurrence of
+" /^Template-Type:/, but it does not seem to be possible, so I have to start
+" from the beginning of the file... This might slow down a lot for files that
+" contain a lot of Template-Type statements.
+syntax sync fromstart
+
+" The problem with syntax sync match (tried below), it is that, for example,
+" it cannot realize when it is inside a Author-Name cluster, which is inside a
+" Template-Type template...
+"
+" TODO Is this linecont pattern really useful? It seems to work anyway...
+"syntax sync linecont /^\(Template-Type:\)\=\s*$/
+" TODO This sync is surprising... It seems to work on several lines even
+" though I replaced \_s* by \s*, even without the linecont pattern...
+"syntax sync match redifSyncForTemplatePaper groupthere redifRegionTemplatePaper /^Template-Type:\s*ReDIF-Paper \d\+\.\d\+/
+"syntax sync match redifSyncForTemplateArticle groupthere redifRegionTemplateArticle /^Template-Type:\s*ReDIF-Article \d\+\.\d\+/
+"syntax sync match redifSyncForTemplateChapter groupthere redifRegionTemplateChapter /^Template-Type:\s*ReDIF-Chapter \d\+\.\d\+/
+"syntax sync match redifSyncForTemplateBook groupthere redifRegionTemplateBook /^Template-Type:\s*ReDIF-Book \d\+\.\d\+/
+"syntax sync match redifSyncForTemplateSoftware groupthere redifRegionTemplateSoftware /^Template-Type:\s*ReDIF-Software \d\+\.\d\+/
+"syntax sync match redifSyncForTemplateArchive groupthere redifRegionTemplateArchive /^Template-Type:\s*ReDIF-Archive \d\+\.\d\+/
+"syntax sync match redifSyncForTemplateSeries groupthere redifRegionTemplateSeries /^Template-Type:\s*ReDIF-Series \d\+\.\d\+/
+"syntax sync match redifSyncForTemplateInstitution groupthere redifRegionTemplateInstitution /^Template-Type:\s*ReDIF-Institution \d\+\.\d\+/
+"syntax sync match redifSyncForTemplatePerson groupthere redifRegionTemplatePerson /^Template-Type:\s*ReDIF-Person \d\+\.\d\+/
+
+" I do not really know how sync linebreaks works, but it helps when making
+" changes on the argument when this argument is not on the same line than its
+" field. I just assume that people won't leave more than one line of
+" whitespace between fields and arguments (which is already very unlikely)
+" hence the value of 2.
+syntax sync linebreaks=2
+
+" Since folding is defined by the syntax, set foldmethod to syntax.
+set foldmethod=syntax
+
+" Set "b:current_syntax" to the name of the syntax at the end:
+let b:current_syntax="redif"
diff --git a/runtime/syntax/registry.vim b/runtime/syntax/registry.vim
new file mode 100644
index 0000000..67b5e49
--- /dev/null
+++ b/runtime/syntax/registry.vim
@@ -0,0 +1,103 @@
+" Vim syntax file
+" Language: Windows Registry export with regedit (*.reg)
+" Maintainer: Dominique Stéphan (dominique@mggen.com)
+" URL: http://www.mggen.com/vim/syntax/registry.zip (doesn't work)
+" Last change: 2014 Oct 31
+" Included patch from Alexander A. Ulitin
+
+" clear any unwanted syntax defs
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" shut case off
+syn case ignore
+
+" Head of regedit .reg files, it's REGEDIT4 on Win9#/NT
+syn match registryHead "^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$"
+
+" Comment
+syn match registryComment "^;.*$"
+
+" Registry Key constant
+syn keyword registryHKEY HKEY_LOCAL_MACHINE HKEY_CLASSES_ROOT HKEY_CURRENT_USER
+syn keyword registryHKEY HKEY_USERS HKEY_CURRENT_CONFIG HKEY_DYN_DATA
+" Registry Key shortcuts
+syn keyword registryHKEY HKLM HKCR HKCU HKU HKCC HKDD
+
+" Some values often found in the registry
+" GUID (Global Unique IDentifier)
+syn match registryGUID "{[0-9A-Fa-f]\{8}\-[0-9A-Fa-f]\{4}\-[0-9A-Fa-f]\{4}\-[0-9A-Fa-f]\{4}\-[0-9A-Fa-f]\{12}}" contains=registrySpecial
+
+" Disk
+" syn match registryDisk "[a-zA-Z]:\\\\"
+
+" Special and Separator characters
+syn match registrySpecial "\\"
+syn match registrySpecial "\\\\"
+syn match registrySpecial "\\\""
+syn match registrySpecial "\."
+syn match registrySpecial ","
+syn match registrySpecial "\/"
+syn match registrySpecial ":"
+syn match registrySpecial "-"
+
+" String
+syn match registryString "\".*\"" contains=registryGUID,registrySpecial
+
+" Path
+syn region registryPath start="\[" end="\]" contains=registryHKEY,registryGUID,registrySpecial
+
+" Path to remove
+" like preceding path but with a "-" at begin
+syn region registryRemove start="\[\-" end="\]" contains=registryHKEY,registryGUID,registrySpecial
+
+" Subkey
+syn match registrySubKey "^\".*\"="
+" Default value
+syn match registrySubKey "^@="
+
+" Numbers
+
+" Hex or Binary
+" The format can be precised between () :
+" 0 REG_NONE
+" 1 REG_SZ
+" 2 REG_EXPAND_SZ
+" 3 REG_BINARY
+" 4 REG_DWORD, REG_DWORD_LITTLE_ENDIAN
+" 5 REG_DWORD_BIG_ENDIAN
+" 6 REG_LINK
+" 7 REG_MULTI_SZ
+" 8 REG_RESOURCE_LIST
+" 9 REG_FULL_RESOURCE_DESCRIPTOR
+" 10 REG_RESOURCE_REQUIREMENTS_LIST
+" The value can take several lines, if \ ends the line
+" The limit to 999 matches is arbitrary, it avoids Vim crashing on a very long
+" line of hex values that ends in a comma.
+"syn match registryHex "hex\(([0-9]\{0,2})\)\=:\([0-9a-fA-F]\{2},\)\{0,999}\([0-9a-fA-F]\{2}\|\\\)$" contains=registrySpecial
+syn match registryHex "hex\(([0-9]\{0,2})\)\=:\([0-9a-fA-F]\{2},\)*\([0-9a-fA-F]\{2}\|\\\)$" contains=registrySpecial
+syn match registryHex "^\s*\([0-9a-fA-F]\{2},\)\{0,999}\([0-9a-fA-F]\{2}\|\\\)$" contains=registrySpecial
+" Dword (32 bits)
+syn match registryDword "dword:[0-9a-fA-F]\{8}$" contains=registrySpecial
+
+
+" The default methods for highlighting. Can be overridden later
+hi def link registryComment Comment
+hi def link registryHead Constant
+hi def link registryHKEY Constant
+hi def link registryPath Special
+hi def link registryRemove PreProc
+hi def link registryGUID Identifier
+hi def link registrySpecial Special
+hi def link registrySubKey Type
+hi def link registryString String
+hi def link registryHex Number
+hi def link registryDword Number
+
+
+
+let b:current_syntax = "registry"
+
+" vim:ts=8
diff --git a/runtime/syntax/rego.vim b/runtime/syntax/rego.vim
new file mode 100644
index 0000000..bc82030
--- /dev/null
+++ b/runtime/syntax/rego.vim
@@ -0,0 +1,120 @@
+" Vim syntax file
+" Language: rego policy language
+" Maintainer: Matt Dunford (zenmatic@gmail.com)
+" URL: https://github.com/zenmatic/vim-syntax-rego
+" Last Change: 2022 Dec 4
+
+" https://www.openpolicyagent.org/docs/latest/policy-language/
+
+" quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+syn keyword regoDirective package import allow deny
+syn keyword regoKeywords as default else every false if import package not null true with some in print
+
+syn keyword regoFuncAggregates count sum product max min sort all any
+syn match regoFuncArrays "\<array\.\(concat\|slice\|reverse\)\>"
+syn keyword regoFuncSets intersection union
+
+syn keyword regoFuncStrings concat /\<contains\>/ endswith format_int indexof indexof_n lower replace split sprintf startswith substring trim trim_left trim_prefix trim_right trim_suffix trim_space upper
+syn match regoFuncStrings2 "\<strings\.\(replace_n\|reverse\|any_prefix_match\|any_suffix_match\)\>"
+syn match regoFuncStrings3 "\<contains\>"
+
+syn keyword regoFuncRegex re_match
+syn match regoFuncRegex2 "\<regex\.\(is_valid\|split\|globs_match\|template_match\|find_n\|find_all_string_submatch_n\|replace\)\>"
+
+syn match regoFuncUuid "\<uuid.rfc4122\>"
+syn match regoFuncBits "\<bits\.\(or\|and\|negate\|xor\|lsh\|rsh\)\>"
+syn match regoFuncObject "\<object\.\(get\|remove\|subset\|union\|union_n\|filter\)\>"
+syn match regoFuncGlob "\<glob\.\(match\|quote_meta\)\>"
+syn match regoFuncUnits "\<units\.parse\(_bytes\)\=\>"
+syn keyword regoFuncTypes is_number is_string is_boolean is_array is_set is_object is_null type_name
+syn match regoFuncEncoding1 "\<base64\.\(encode\|decode\|is_valid\)\>"
+syn match regoFuncEncoding2 "\<base64url\.\(encode\(_no_pad\)\=\|decode\)\>"
+syn match regoFuncEncoding3 "\<urlquery\.\(encode\|decode\|\(en\|de\)code_object\)\>"
+syn match regoFuncEncoding4 "\<\(json\|yaml\)\.\(is_valid\|marshal\|unmarshal\)\>"
+syn match regoFuncEncoding5 "\<json\.\(filter\|patch\|remove\)\>"
+syn match regoFuncTokenSigning "\<io\.jwt\.\(encode_sign_raw\|encode_sign\)\>"
+syn match regoFuncTokenVerification1 "\<io\.jwt\.\(decode\|decode_verify\)\>"
+syn match regoFuncTokenVerification2 "\<io\.jwt\.verify_\(rs\|ps\|es\|hs\)\(256\|384\|512\)\>"
+syn match regoFuncTime "\<time\.\(now_ns\|parse_ns\|parse_rfc3339_ns\|parse_duration_ns\|date\|clock\|weekday\|diff\|add_date\)\>"
+syn match regoFuncCryptography "\<crypto\.x509\.\(parse_certificates\|parse_certificate_request\|parse_and_verify_certificates\|parse_rsa_private_key\)\>"
+syn match regoFuncCryptography "\<crypto\.\(md5\|sha1\|sha256\)"
+syn match regoFuncCryptography "\<crypto\.hmac\.\(md5\|sha1\|sha256\|sha512\)"
+syn keyword regoFuncGraphs walk
+syn match regoFuncGraphs2 "\<graph\.reachable\(_paths\)\=\>"
+syn match regoFuncGraphQl "\<graphql\.\(\(schema_\)\=is_valid\|parse\(_\(and_verify\|query\|schema\)\)\=\)\>"
+syn match regoFuncHttp "\<http\.send\>"
+syn match regoFuncNet "\<net\.\(cidr_merge\|cidr_contains\|cidr_contains_matches\|cidr_intersects\|cidr_expand\|lookup_ip_addr\|cidr_is_valid\)\>"
+syn match regoFuncRego "\<rego\.\(parse_module\|metadata\.\(rule\|chain\)\)\>"
+syn match regoFuncOpa "\<opa\.runtime\>"
+syn keyword regoFuncDebugging trace
+syn match regoFuncRand "\<rand\.intn\>"
+
+syn match regoFuncNumbers "\<numbers\.\(range\|intn\)\>"
+syn keyword regoFuncNumbers round ceil floor abs
+
+syn match regoFuncSemver "\<semver\.\(is_valid\|compare\)\>"
+syn keyword regoFuncConversions to_number
+syn match regoFuncHex "\<hex\.\(encode\|decode\)\>"
+
+hi def link regoFuncUuid Statement
+hi def link regoFuncBits Statement
+hi def link regoDirective Statement
+hi def link regoKeywords Statement
+hi def link regoFuncAggregates Statement
+hi def link regoFuncArrays Statement
+hi def link regoFuncSets Statement
+hi def link regoFuncStrings Statement
+hi def link regoFuncStrings2 Statement
+hi def link regoFuncStrings3 Statement
+hi def link regoFuncRegex Statement
+hi def link regoFuncRegex2 Statement
+hi def link regoFuncGlob Statement
+hi def link regoFuncUnits Statement
+hi def link regoFuncTypes Statement
+hi def link regoFuncEncoding1 Statement
+hi def link regoFuncEncoding2 Statement
+hi def link regoFuncEncoding3 Statement
+hi def link regoFuncEncoding4 Statement
+hi def link regoFuncEncoding5 Statement
+hi def link regoFuncTokenSigning Statement
+hi def link regoFuncTokenVerification1 Statement
+hi def link regoFuncTokenVerification2 Statement
+hi def link regoFuncTime Statement
+hi def link regoFuncCryptography Statement
+hi def link regoFuncGraphs Statement
+hi def link regoFuncGraphQl Statement
+hi def link regoFuncGraphs2 Statement
+hi def link regoFuncHttp Statement
+hi def link regoFuncNet Statement
+hi def link regoFuncRego Statement
+hi def link regoFuncOpa Statement
+hi def link regoFuncDebugging Statement
+hi def link regoFuncObject Statement
+hi def link regoFuncNumbers Statement
+hi def link regoFuncSemver Statement
+hi def link regoFuncConversions Statement
+hi def link regoFuncHex Statement
+hi def link regoFuncRand Statement
+
+" https://www.openpolicyagent.org/docs/latest/policy-language/#strings
+syn region regoString start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn region regoRawString start=+`+ end=+`+
+
+hi def link regoString String
+hi def link regoRawString String
+
+" Comments; their contents
+syn keyword regoTodo contained TODO FIXME XXX BUG
+syn cluster regoCommentGroup contains=regoTodo
+syn region regoComment start="#" end="$" contains=@regoCommentGroup,@Spell
+
+hi def link regoComment Comment
+hi def link regoTodo Todo
+
+let b:current_syntax = 'rego'
diff --git a/runtime/syntax/remind.vim b/runtime/syntax/remind.vim
new file mode 100644
index 0000000..9e7ff22
--- /dev/null
+++ b/runtime/syntax/remind.vim
@@ -0,0 +1,73 @@
+" Vim syntax file
+" Language: Remind
+" Maintainer: Davide Alberani <da@erlug.linux.it>
+" Last Change: 02 Nov 2015
+" Version: 0.7
+" URL: http://ismito.it/vim/syntax/remind.vim
+"
+" Remind is a sophisticated calendar and alarm program.
+" You can download remind from:
+" https://www.roaringpenguin.com/products/remind
+"
+" Changelog
+" version 0.7: updated email and link
+" version 0.6: added THROUGH keyword (courtesy of Ben Orchard)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" shut case off.
+syn case ignore
+
+syn keyword remindCommands REM OMIT SET FSET UNSET
+syn keyword remindExpiry UNTIL FROM SCANFROM SCAN WARN SCHED THROUGH
+syn keyword remindTag PRIORITY TAG
+syn keyword remindTimed AT DURATION
+syn keyword remindMove ONCE SKIP BEFORE AFTER
+syn keyword remindSpecial INCLUDE INC BANNER PUSH-OMIT-CONTEXT PUSH CLEAR-OMIT-CONTEXT CLEAR POP-OMIT-CONTEXT POP COLOR
+syn keyword remindRun MSG MSF RUN CAL SATISFY SPECIAL PS PSFILE SHADE MOON
+syn keyword remindConditional IF ELSE ENDIF IFTRIG
+syn keyword remindDebug DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE
+syn match remindComment "#.*$"
+syn region remindString start=+'+ end=+'+ skip=+\\\\\|\\'+ oneline
+syn region remindString start=+"+ end=+"+ skip=+\\\\\|\\"+ oneline
+syn match remindVar "\$[_a-zA-Z][_a-zA-Z0-9]*"
+syn match remindSubst "%[^ ]"
+syn match remindAdvanceNumber "\(\*\|+\|-\|++\|--\)[0-9]\+"
+" XXX: use different separators for dates and times?
+syn match remindDateSeparators "[/:@\.-]" contained
+syn match remindTimes "[0-9]\{1,2}[:\.][0-9]\{1,2}" contains=remindDateSeparators
+" XXX: why not match only valid dates? Ok, checking for 'Feb the 30' would
+" be impossible, but at least check for valid months and times.
+syn match remindDates "'[0-9]\{4}[/-][0-9]\{1,2}[/-][0-9]\{1,2}\(@[0-9]\{1,2}[:\.][0-9]\{1,2}\)\?'" contains=remindDateSeparators
+" This will match trailing whitespaces that seem to break rem2ps.
+" Courtesy of Michael Dunn.
+syn match remindWarning display excludenl "\S\s\+$"ms=s+1
+
+
+
+hi def link remindCommands Function
+hi def link remindExpiry Repeat
+hi def link remindTag Label
+hi def link remindTimed Statement
+hi def link remindMove Statement
+hi def link remindSpecial Include
+hi def link remindRun Function
+hi def link remindConditional Conditional
+hi def link remindComment Comment
+hi def link remindTimes String
+hi def link remindString String
+hi def link remindDebug Debug
+hi def link remindVar Identifier
+hi def link remindSubst Constant
+hi def link remindAdvanceNumber Number
+hi def link remindDateSeparators Comment
+hi def link remindDates String
+hi def link remindWarning Error
+
+
+let b:current_syntax = "remind"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/resolv.vim b/runtime/syntax/resolv.vim
new file mode 100644
index 0000000..9a2dec5
--- /dev/null
+++ b/runtime/syntax/resolv.vim
@@ -0,0 +1,119 @@
+" Vim syntax file
+" Language: resolver configuration file
+" Maintainer: Radu Dineiu <radu.dineiu@gmail.com>
+" URL: https://raw.github.com/rid9/vim-resolv/master/resolv.vim
+" Last Change: 2020 Mar 10
+" Version: 1.4
+"
+" Credits:
+" David Necas (Yeti) <yeti@physics.muni.cz>
+" Stefano Zacchiroli <zack@debian.org>
+" DJ Lucas <dj@linuxfromscratch.org>
+"
+" Changelog:
+" - 1.4: Added IPv6 support for sortlist.
+" - 1.3: Added IPv6 support for IPv4 dot-decimal notation.
+" - 1.2: Added new options.
+" - 1.1: Added IPv6 support.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Errors, comments and operators
+syn match resolvError /./
+syn match resolvComment /\s*[#;].*$/
+syn match resolvOperator /[\/:]/ contained
+
+" IP
+syn cluster resolvIPCluster contains=resolvIPError,resolvIPSpecial
+syn match resolvIPError /\%(\d\{4,}\|25[6-9]\|2[6-9]\d\|[3-9]\d\{2}\)[\.0-9]*/ contained
+syn match resolvIPSpecial /\%(127\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)/ contained
+
+" General
+syn match resolvIP contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}/ contains=@resolvIPCluster
+syn match resolvIPNetmask contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\%(\%(\d\{1,4}\.\)\{,3}\d\{1,4}\)\)\?/ contains=resolvOperator,@resolvIPCluster
+syn match resolvHostname contained /\w\{-}\.[-0-9A-Za-z_\.]*/
+
+" Nameserver IPv4
+syn match resolvIPNameserver contained /\%(\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\s\|$\)\)\+/ contains=@resolvIPCluster
+
+" Nameserver IPv6
+syn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{6}\%(\x\{1,4}:\x\{1,4}\)\>/
+syn match resolvIPNameserver contained /\s\@<=::\%(\x\{1,4}:\)\{,6}\x\{1,4}\>/
+syn match resolvIPNameserver contained /\s\@<=::\%(\x\{1,4}:\)\{,5}\%(\d\{1,4}\.\)\{3}\d\{1,4}\>/
+syn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{1}:\%(\x\{1,4}:\)\{,5}\x\{1,4}\>/
+syn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{1}:\%(\x\{1,4}:\)\{,4}\%(\d\{1,4}\.\)\{3}\d\{1,4}\>/
+syn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{2}:\%(\x\{1,4}:\)\{,4}\x\{1,4}\>/
+syn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{2}:\%(\x\{1,4}:\)\{,3}\%(\d\{1,4}\.\)\{3}\d\{1,4}\>/
+syn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{3}:\%(\x\{1,4}:\)\{,3}\x\{1,4}\>/
+syn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{3}:\%(\x\{1,4}:\)\{,2}\%(\d\{1,4}\.\)\{3}\d\{1,4}\>/
+syn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{4}:\%(\x\{1,4}:\)\{,2}\x\{1,4}\>/
+syn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{4}:\%(\x\{1,4}:\)\{,1}\%(\d\{1,4}\.\)\{3}\d\{1,4}\>/
+syn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{5}:\%(\d\{1,4}\.\)\{3}\d\{1,4}\>/
+syn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{6}:\x\{1,4}\>/
+syn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{1,7}:\%(\s\|;\|$\)\@=/
+
+" Search hostname
+syn match resolvHostnameSearch contained /\%(\%([-0-9A-Za-z_]\+\.\)*[-0-9A-Za-z_]\+\.\?\%(\s\|$\)\)\+/
+
+" Sortlist IPv4
+syn match resolvIPNetmaskSortList contained /\%(\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\%(\%(\d\{1,4}\.\)\{,3}\d\{1,4}\)\)\?\%(\s\|$\)\)\+/ contains=resolvOperator,@resolvIPCluster
+
+" Sortlist IPv6
+syn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{6}\%(\x\{1,4}:\x\{1,4}\)\%(\/\d\{1,3}\)\?\>/
+syn match resolvIPNetmaskSortList contained /\s\@<=::\%(\x\{1,4}:\)\{,6}\x\{1,4}\%(\/\d\{1,3}\)\?\>/
+syn match resolvIPNetmaskSortList contained /\s\@<=::\%(\x\{1,4}:\)\{,5}\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\d\{1,3}\)\?\>/
+syn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{1}:\%(\x\{1,4}:\)\{,5}\x\{1,4}\%(\/\d\{1,3}\)\?\>/
+syn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{1}:\%(\x\{1,4}:\)\{,4}\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\d\{1,3}\)\?\>/
+syn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{2}:\%(\x\{1,4}:\)\{,4}\x\{1,4}\%(\/\d\{1,3}\)\?\>/
+syn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{2}:\%(\x\{1,4}:\)\{,3}\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\d\{1,3}\)\?\>/
+syn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{3}:\%(\x\{1,4}:\)\{,3}\x\{1,4}\%(\/\d\{1,3}\)\?\>/
+syn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{3}:\%(\x\{1,4}:\)\{,2}\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\d\{1,3}\)\?\>/
+syn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{4}:\%(\x\{1,4}:\)\{,2}\x\{1,4}\%(\/\d\{1,3}\)\?\>/
+syn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{4}:\%(\x\{1,4}:\)\{,1}\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\d\{1,3}\)\?\>/
+syn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{5}:\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\d\{1,3}\)\?\>/
+syn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{6}:\x\{1,4}\%(\/\d\{1,3}\)\?\>/
+syn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{1,7}:\%(\s\|;\|$\)\@=\%(\/\d\{1,3}\)\?/
+
+" Identifiers
+syn match resolvNameserver /^\s*nameserver\>/ nextgroup=resolvIPNameserver skipwhite
+syn match resolvLwserver /^\s*lwserver\>/ nextgroup=resolvIPNameserver skipwhite
+syn match resolvDomain /^\s*domain\>/ nextgroup=resolvHostname skipwhite
+syn match resolvSearch /^\s*search\>/ nextgroup=resolvHostnameSearch skipwhite
+syn match resolvSortList /^\s*sortlist\>/ nextgroup=resolvIPNetmaskSortList skipwhite
+syn match resolvOptions /^\s*options\>/ nextgroup=resolvOption skipwhite
+
+" Options
+syn match resolvOption /\<\%(debug\|no_tld_query\|no-tld-query\|rotate\|no-check-names\|inet6\|ip6-bytestring\|\%(no-\)\?ip6-dotint\|edns0\|single-request\%(-reopen\)\?\|use-vc\)\>/ contained nextgroup=resolvOption skipwhite
+syn match resolvOption /\<\%(ndots\|timeout\|attempts\):\d\+\>/ contained contains=resolvOperator nextgroup=resolvOption skipwhite
+
+" Additional errors
+syn match resolvError /^search .\{257,}/
+
+hi def link resolvIP Number
+hi def link resolvIPNetmask Number
+hi def link resolvHostname String
+hi def link resolvOption String
+
+hi def link resolvIPNameserver Number
+hi def link resolvHostnameSearch String
+hi def link resolvIPNetmaskSortList Number
+
+hi def link resolvNameServer Identifier
+hi def link resolvLwserver Identifier
+hi def link resolvDomain Identifier
+hi def link resolvSearch Identifier
+hi def link resolvSortList Identifier
+hi def link resolvOptions Identifier
+
+hi def link resolvComment Comment
+hi def link resolvOperator Operator
+hi def link resolvError Error
+hi def link resolvIPError Error
+hi def link resolvIPSpecial Special
+
+let b:current_syntax = "resolv"
+
+" vim: ts=8 ft=vim
diff --git a/runtime/syntax/reva.vim b/runtime/syntax/reva.vim
new file mode 100644
index 0000000..39ad88d
--- /dev/null
+++ b/runtime/syntax/reva.vim
@@ -0,0 +1,191 @@
+" Vim syntax file
+" Language: Reva Forth
+" Version: 2011.2
+" Last Change: 2019 Sep 27
+" Maintainer: Ron Aaron <ron@ronware.org>
+" URL: http://ronware.org/reva/
+" Filetypes: *.rf *.frt
+" NOTE: You should also have the ftplugin/reva.vim file to set 'isk'
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn clear
+
+" Synchronization method
+syn sync ccomment
+syn sync maxlines=100
+
+
+syn case ignore
+" Some special, non-FORTH keywords
+"syn keyword revaTodo contained todo fixme bugbug todo: bugbug: note:
+syn match revaTodo contained '\(todo\|fixme\|bugbug\|note\)[:]*'
+syn match revaTodo contained 'copyright\(\s(c)\)\=\(\s[0-9]\{2,4}\)\='
+
+syn match revaHelpDesc '\S.*' contained
+syn match revaHelpStuff '\<\(def\|stack\|ctx\|ver\|os\|related\):\s.*'
+syn region revaHelpStuff start='\<desc:\>' end='^\S' contains=revaHelpDesc
+syn region revaEOF start='\<|||\>' end='{$}' contains=revaHelpStuff
+
+
+syn case match
+" basic mathematical and logical operators
+syn keyword revaoperators + - * / mod /mod negate abs min max umin umax
+syn keyword revaoperators and or xor not invert 1+ 1-
+syn keyword revaoperators m+ */ */mod m* um* m*/ um/mod fm/mod sm/rem
+syn keyword revaoperators d+ d- dnegate dabs dmin dmax > < = >> << u< <>
+
+
+" stack manipulations
+syn keyword revastack drop nip dup over tuck swap rot -rot ?dup pick roll
+syn keyword revastack 2drop 2nip 2dup 2over 2swap 2rot 3drop
+syn keyword revastack >r r> r@ rdrop
+" syn keyword revastack sp@ sp! rp@ rp!
+
+" address operations
+syn keyword revamemory @ ! +! c@ c! 2@ 2! align aligned allot allocate here free resize
+syn keyword revaadrarith chars char+ cells cell+ cell cell- 2cell+ 2cell- 3cell+ 4cell+
+syn keyword revamemblks move fill
+
+" conditionals
+syn keyword revacond if else then =if >if <if <>if if0 ;; catch throw
+
+" iterations
+syn keyword revaloop while repeat until again
+syn keyword revaloop do loop i j leave unloop skip more
+
+" new words
+syn match revaColonDef '\<noname:\|\<:\s+' contains=revaComment
+syn keyword revaEndOfColonDef ; ;inline
+syn keyword revadefine constant constant, variable create variable,
+syn keyword revadefine user value to +to defer! defer@ defer is does> immediate
+syn keyword revadefine compile literal ' [']
+
+" Built in words
+com! -nargs=+ Builtin syn keyword revaBuiltin <args>
+Builtin execute ahead interp bye >body here pad words make
+Builtin accept close cr creat delete ekey emit fsize ioerr key?
+Builtin mtime open/r open/rw read rename seek space spaces stat
+Builtin tell type type_ write (seek) (argv) (save) 0; 0drop;
+Builtin >class >lz >name >xt alias alias: appname argc asciiz, asciizl,
+Builtin body> clamp depth disassemble findprev fnvhash getenv here,
+Builtin iterate last! last@ later link lz> lzmax os parse/ peek
+Builtin peek-n pop prior push put rp@ rpick save setenv slurp
+Builtin stack-empty? stack-iterate stack-size stack: THROW_BADFUNC
+Builtin THROW_BADLIB THROW_GENERIC used xt>size z,
+Builtin +lplace +place -chop /char /string bounds c+lplace c+place
+Builtin chop cmp cmpi count lc lcount lplace place quote rsplit search split
+Builtin zcount zt \\char
+Builtin chdir g32 k32 u32 getcwd getpid hinst osname stdin stdout
+Builtin (-lib) (bye) (call) (else) (find) (func) (here) (if (lib) (s0) (s^)
+Builtin (to~) (while) >in >rel ?literal appstart cold compiling? context? d0 default_class
+Builtin defer? dict dolstr dostr find-word h0 if) interp isa onexit
+Builtin onstartup pdoes pop>ebx prompt rel> rp0 s0 src srcstr state str0 then,> then> tib
+Builtin tp vector vector! word? xt? .ver revaver revaver# && '' 'constant 'context
+Builtin 'create 'defer 'does 'forth 'inline 'macro 'macront 'notail 'value 'variable
+Builtin (.r) (context) (create) (header) (hide) (inline) (p.r) (words~) (xfind)
+Builtin ++ -- , -2drop -2nip -link -swap . .2x .classes .contexts .funcs .libs .needs .r
+Builtin .rs .x 00; 0do 0if 1, 2, 3, 2* 2/ 2constant 2variable 3dup 4dup ;then >base >defer
+Builtin >rr ? ?do @execute @rem appdir argv as back base base! between chain cleanup-libs
+Builtin cmove> context?? ctrl-c ctx>name data: defer: defer@def dictgone do_cr eleave
+Builtin endcase endof eval exception exec false find func: header heapgone help help/
+Builtin hex# hide inline{ last lastxt lib libdir literal, makeexename mnotail ms ms@
+Builtin newclass noop nosavedict notail nul of off on p: padchar parse parseln
+Builtin parsews rangeof rdepth remains reset reva revaused rol8 rr> scratch setclass sp
+Builtin strof super> temp time&date true turnkey? undo vfunc: w! w@
+Builtin xchg xchg2 xfind xt>name xwords { {{ }} } _+ _1+ _1- pathsep case \||
+" p[ [''] [ [']
+
+
+" debugging
+syn keyword revadebug .s dump see
+
+" basic character operations
+" syn keyword revaCharOps (.) CHAR EXPECT FIND WORD TYPE -TRAILING EMIT KEY
+" syn keyword revaCharOps KEY? TIB CR
+" syn match revaCharOps '\<char\s\S\s'
+" syn match revaCharOps '\<\[char\]\s\S\s'
+" syn region revaCharOps start=+."\s+ skip=+\\"+ end=+"+
+
+" char-number conversion
+syn keyword revaconversion s>d >digit digit> >single >double >number >float
+
+" contexts
+syn keyword revavocs forth macro inline
+syn keyword revavocs context:
+syn match revavocs /\<\~[^~ ]*/
+syn match revavocs /[^~ ]*\~\>/
+
+" numbers
+syn keyword revamath decimal hex base binary octal
+syn match revainteger '\<-\=[0-9.]*[0-9.]\+\>'
+" recognize hex and binary numbers, the '$' and '%' notation is for greva
+syn match revainteger '\<\$\x*\x\+\>' " *1* --- dont't mess
+syn match revainteger '\<\x*\d\x*\>' " *2* --- this order!
+syn match revainteger '\<%[0-1]*[0-1]\+\>'
+syn match revainteger "\<'.\>"
+
+" Strings
+" syn region revaString start=+\.\?\"+ end=+"+ end=+$+
+syn region revaString start=/"/ skip=/\\"/ end=/"/
+
+" Comments
+syn region revaComment start='\\S\s' end='.*' contains=revaTodo
+syn match revaComment '\.(\s[^)]\{-})' contains=revaTodo
+syn region revaComment start='(\s' skip='\\)' end=')' contains=revaTodo
+syn match revaComment '(\s[^\-]*\-\-[^\-]\{-})' contains=revaTodo
+syn match revaComment '\<|\s.*$' contains=revaTodo
+syn match revaColonDef '\<:m\?\s*[^ \t]\+\>' contains=revaComment
+
+" Include files
+syn match revaInclude '\<\(include\|needs\)\s\+\S\+'
+
+
+" Define the default highlighting.
+if !exists("did_reva_syntax_inits")
+ let did_reva_syntax_inits=1
+ " The default methods for highlighting. Can be overridden later.
+ hi def link revaEOF cIf0
+ hi def link revaHelpStuff special
+ hi def link revaHelpDesc Comment
+ hi def link revaTodo Todo
+ hi def link revaOperators Operator
+ hi def link revaMath Number
+ hi def link revaInteger Number
+ hi def link revaStack Special
+ hi def link revaFStack Special
+ hi def link revaSP Special
+ hi def link revaMemory Operator
+ hi def link revaAdrArith Function
+ hi def link revaMemBlks Function
+ hi def link revaCond Conditional
+ hi def link revaLoop Repeat
+ hi def link revaColonDef Define
+ hi def link revaEndOfColonDef Define
+ hi def link revaDefine Define
+ hi def link revaDebug Debug
+ hi def link revaCharOps Character
+ hi def link revaConversion String
+ hi def link revaForth Statement
+ hi def link revaVocs Statement
+ hi def link revaString String
+ hi def link revaComment Comment
+ hi def link revaClassDef Define
+ hi def link revaEndOfClassDef Define
+ hi def link revaObjectDef Define
+ hi def link revaEndOfObjectDef Define
+ hi def link revaInclude Include
+ hi def link revaBuiltin Keyword
+endif
+
+let b:current_syntax = "reva"
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8:sw=4:nocindent:smartindent:
diff --git a/runtime/syntax/rexx.vim b/runtime/syntax/rexx.vim
new file mode 100644
index 0000000..360fc8f
--- /dev/null
+++ b/runtime/syntax/rexx.vim
@@ -0,0 +1,318 @@
+" Vim syntax file
+" Language: Rexx
+" Maintainer: Thomas Geulig <geulig@nentec.de>
+" Last Change: 2012 Sep 14, added support for new ooRexx 4.0 features
+" URL: http://www.geulig.de/vim/rexx.vim
+" Special Thanks to Dan Sharp <dwsharp@hotmail.com> and Rony G. Flatscher
+" <Rony.Flatscher@wu-wien.ac.at> for comments and additions
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" add to valid identifier chars
+setlocal iskeyword+=.
+setlocal iskeyword+=!
+setlocal iskeyword+=?
+
+" ---rgf, position important: must be before comments etc. !
+syn match rexxOperator "[=|\/\\\+\*\[\],;:<>&\~%\-]"
+
+" rgf syn match rexxIdentifier "\<[a-zA-Z\!\?_]\([a-zA-Z0-9._?!]\)*\>"
+syn match rexxIdentifier "\<\K\k*\>"
+syn match rexxEnvironmentSymbol "\<\.\k\+\>"
+
+" A Keyword is the first symbol in a clause. A clause begins at the start
+" of a line or after a semicolon. THEN, ELSE, OTHERWISE, and colons are always
+" followed by an implied semicolon.
+syn match rexxClause "\(^\|;\|:\|then \|else \|when \|otherwise \)\s*\S*" contains=ALLBUT,rexxParse2,rexxRaise2,rexxForward2
+
+" Considered keywords when used together in a phrase and begin a clause
+syn match rexxParse "\<parse\s*\(\(upper\|lower\|caseless\)\s*\)\?\(arg\|linein\|pull\|source\|var\|\<value\>\|version\)\>" containedin=rexxClause contains=rexxParse2
+syn match rexxParse2 "\<with\>" containedin=rexxParse
+
+syn match rexxKeyword contained "\<numeric \(digits\|form \(scientific\|engineering\|value\)\|fuzz\)\>"
+syn match rexxKeyword contained "\<\(address\|trace\)\( value\)\?\>"
+syn match rexxKeyword contained "\<procedure\(\s*expose\)\?\>"
+
+syn match rexxKeyword contained "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\(\s\+forever\)\?\>"
+syn match rexxKeyword contained "\<use\>\s*\(strict\s*\)\?\<arg\>"
+
+" Another keyword phrase, separated to aid highlighting in rexxFunction
+syn match rexxRegularCallSignal contained "\<\(call\|signal\)\s\(\s*on\>\|\s*off\>\)\@!\(\k\+\ze\|\ze(\)\(\s*\|;\|$\|(\)"
+syn region rexxLabel contained start="\<\(call\|signal\)\>\s*\zs\(\k*\|(\)" end="\ze\(\s*\|;\|$\|(\)" containedin=rexxRegularCallSignal
+
+syn match rexxExceptionHandling contained "\<\(call\|signal\)\>\s\+\<\(on\|off\)\>.*\(;\|$\)" contains=rexxComment
+
+" hilite label given after keyword "name"
+syn match rexxLabel "name\s\+\zs\k\+\ze" containedin=rexxExceptionHandling
+" hilite condition name (serves as label)
+syn match rexxLabel "\<\(call\|signal\)\>\s\+\<\(on\|off\)\>\s*\zs\k\+\ze\s*\(;\|$\)" containedin=rexxExceptionHandling
+" user exception handling, hilite user defined name
+syn region rexxLabel contained start="user\s\+\zs\k" end="\ze\(\s\|;\|$\)" containedin=rexxExceptionHandling
+
+" Considered keywords when they begin a clause
+syn match rexxKeywordStatements "\<\(arg\|catch\|do\|drop\|end\|exit\|expose\|finally\|forward\|if\|interpret\|iterate\|leave\|loop\|nop\)\>"
+syn match rexxKeywordStatements "\<\(options\|pull\|push\|queue\|raise\|reply\|return\|say\|select\|trace\)\>"
+
+" Conditional keywords starting a new statement
+syn match rexxConditional "\<\(then\|else\|when\|otherwise\)\(\s*\|;\|\_$\|\)\>" contains=rexxKeywordStatements
+
+" Conditional phrases
+syn match rexxLoopKeywords "\<\(to\|by\|for\|until\|while\|over\)\>" containedin=doLoopSelectLabelRegion
+
+" must be after Conditional phrases!
+syn match doLoopSelectLabelRegion "\<\(do\|loop\|select\)\>\s\+\(label\s\+\)\?\(\s\+\k\+\s\+\zs\<over\>\)\?\k*\(\s\+forever\)\?\(\s\|;\|$\)" contains=doLoopSelectLabelRegion,rexxStartValueAssignment,rexxLoopKeywords
+
+" color label's name
+syn match rexxLabel2 "\<\(do\|loop\|select\)\>\s\+label\s\+\zs\k*\ze" containedin=doLoopSelectLabelRegion
+
+" make sure control variable is normal
+" TODO: re-activate ?
+"rgf syn match rexxControlVariable "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\s\+\zs.*\ze\s\+\<over\>" containedin=doLoopSelectLabelRegion
+
+" make sure control variable assignment is normal
+syn match rexxStartValueAssignment "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\s\+\zs.*\ze\(=.*\)\?\s\+\<to\>" containedin=doLoopSelectLabelRegion
+
+" highlight label name
+syn match endIterateLeaveLabelRegion "\<\(end\|leave\|iterate\)\>\(\s\+\K\k*\)" contains=rexxLabel2
+syn match rexxLabel2 "\<\(end\|leave\|iterate\)\>\s\+\zs\k*\ze" containedin=endIterateLeaveLabelRegion
+
+" Guard statement
+syn match rexxGuard "\(^\|;\|:\)\s*\<guard\>\s\+\<\(on\|off\)\>"
+
+" Trace statement
+syn match rexxTrace "\(^\|;\|:\)\s*\<trace\>\s\+\<\K\k*\>"
+
+" Raise statement
+" syn match rexxRaise "\(^\|;\|:\)\s\+\<raise\>\s*\<\(propagate\|error\|failure\|syntax\|user\)\>\?" contains=rexxRaise2
+syn match rexxRaise "\(^\|;\|:\)\s*\<raise\>\s*\<\(propagate\|error\|failure\|syntax\|user\)\>\?" contains=rexxRaise2
+syn match rexxRaise2 "\<\(additional\|array\|description\|exit\|propagate\|return\)\>" containedin=rexxRaise
+
+" Forward statement
+syn match rexxForward "\(^\|;\|:\)\<forward\>\s*" contains=rexxForward2
+syn match rexxForward2 "\<\(arguments\|array\|continue\|message\|class\|to\)\>" contained
+
+" Functions/Procedures
+syn match rexxFunction "\<\<[a-zA-Z\!\?_]\k*\>("me=e-1
+syn match rexxFunction "[()]"
+
+" String constants
+syn region rexxString start=+"+ skip=+""+ end=+"\(x\|b\)\?+ oneline
+syn region rexxString start=+'+ skip=+''+ end=+'\(x\|b\)\?+ oneline
+
+syn region rexxParen transparent start='(' end=')' contains=ALLBUT,rexxParenError,rexxTodo,rexxLabel,rexxKeyword
+" Catch errors caused by wrong parenthesis
+syn match rexxParenError ")"
+syn match rexxInParen "[\\[\\]{}]"
+
+" Comments
+syn region rexxComment start="/\*" end="\*/" contains=rexxTodo,rexxComment
+syn match rexxCommentError "\*/"
+syn region rexxLineComment start="--" end="\_$" oneline
+
+" Highlight User Labels
+" check for labels between comments, labels stated in a statement in the middle of a line
+syn match rexxLabel "\(\_^\|;\)\s*\(\/\*.*\*\/\)*\s*\k\+\s*\(\/\*.*\*\/\)*\s*:"me=e-1 contains=rexxTodo,rexxComment
+
+syn keyword rexxTodo contained TODO FIXME XXX
+
+" ooRexx messages
+syn region rexxMessageOperator start="\(\~\|\~\~\)" end="\(\S\|\s\)"me=e-1
+syn match rexxMessage "\(\~\|\~\~\)\s*\<\.*[a-zA-Z]\([a-zA-Z0-9._?!]\)*\>" contains=rexxMessageOperator
+
+" line continuations, take care of (line-)comments after it
+syn match rexxLineContinue ",\ze\s*\(--.*\|\/\*.*\)*$"
+
+" the following is necessary, otherwise three consecutive dashes will cause it to highlight the first one
+syn match rexxLineContinue "-\ze-\@!\s*\(--.*\|\s*\/\*.*\)\?$"
+
+" Special Variables
+syn keyword rexxSpecialVariable sigl rc result self super
+syn keyword rexxSpecialVariable .environment .error .input .local .methods .output .rs .stderr .stdin .stdout .stdque
+
+" Constants
+syn keyword rexxConst .true .false .nil .endOfLine .line .context
+
+" Rexx numbers
+" int like number
+syn match rexxNumber '\d\+' contained
+syn match rexxNumber '[-+]\s*\d\+' contained
+
+" Floating point number with decimal
+syn match rexxNumber '\d\+\.\d*' contained
+syn match rexxNumber '[-+]\s*\d\+\.\d*' contained
+
+" Floating point like number with E
+syn match rexxNumber '[-+]\s*\d*[eE][\-+]\d\+' contained
+syn match rexxNumber '\d*[eE][\-+]\d\+' contained
+
+" Floating point like number with E and decimal point (+,-)
+syn match rexxNumber '[-+]\s*\d*\.\d*[eE][\-+]\d\+' contained
+syn match rexxNumber '\d*\.\d*[eE][\-+]\d\+' contained
+
+
+" ooRexx builtin classes (as of version 3.2.0, fall 2007), first define dot to be o.k. in keywords
+syn keyword rexxBuiltinClass .Alarm .ArgUtil .Array .Bag .CaselessColumnComparator
+syn keyword rexxBuiltinClass .CaselessComparator .CaselessDescendingComparator .CircularQueue
+syn keyword rexxBuiltinClass .Class .Collection .ColumnComparator .Comparable .Comparator
+syn keyword rexxBuiltinClass .DateTime .DescendingComparator .Directory .File .InputOutputStream
+syn keyword rexxBuiltinClass .InputStream .InvertingComparator .List .MapCollection
+syn keyword rexxBuiltinClass .Message .Method .Monitor .MutableBuffer .Object
+syn keyword rexxBuiltinClass .OrderedCollection .OutputStream .Package .Properties .Queue
+syn keyword rexxBuiltinClass .RegularExpression .Relation .RexxContext .RexxQueue .Routine
+syn keyword rexxBuiltinClass .Set .SetCollection .Stem .Stream
+syn keyword rexxBuiltinClass .StreamSupplier .String .Supplier .Table .TimeSpan
+
+" Windows-only classes
+syn keyword rexxBuiltinClass .AdvancedControls .AnimatedButton .BaseDialog .ButtonControl
+syn keyword rexxBuiltinClass .CategoryDialog .CheckBox .CheckList .ComboBox .DialogControl
+syn keyword rexxBuiltinClass .DialogExtensions .DlgArea .DlgAreaU .DynamicDialog
+syn keyword rexxBuiltinClass .EditControl .InputBox .IntegerBox .ListBox .ListChoice
+syn keyword rexxBuiltinClass .ListControl .MenuObject .MessageExtensions .MultiInputBox
+syn keyword rexxBuiltinClass .MultiListChoice .OLEObject .OLEVariant
+syn keyword rexxBuiltinClass .PasswordBox .PlainBaseDialog .PlainUserDialog
+syn keyword rexxBuiltinClass .ProgressBar .ProgressIndicator .PropertySheet .RadioButton
+syn keyword rexxBuiltinClass .RcDialog .ResDialog .ScrollBar .SingleSelection .SliderControl
+syn keyword rexxBuiltinClass .StateIndicator .StaticControl .TabControl .TimedMessage
+syn keyword rexxBuiltinClass .TreeControl .UserDialog .VirtualKeyCodes .WindowBase
+syn keyword rexxBuiltinClass .WindowExtensions .WindowObject .WindowsClassesBase .WindowsClipboard
+syn keyword rexxBuiltinClass .WindowsEventLog .WindowsManager .WindowsProgramManager .WindowsRegistry
+
+" BSF4ooRexx classes
+syn keyword rexxBuiltinClass .BSF .bsf.dialog .bsf_proxy
+syn keyword rexxBuiltinClass .UNO .UNO_ENUM .UNO_CONSTANTS .UNO_PROPERTIES
+
+" ooRexx directives, ---rgf location important, otherwise directives in top of file not matched!
+syn region rexxClassDirective start="::\s*class\s*"ms=e+1 end="\ze\(\s\|;\|$\)"
+syn region rexxMethodDirective start="::\s*method\s*"ms=e+1 end="\ze\(\s\|;\|$\)"
+syn region rexxRequiresDirective start="::\s*requires\s*"ms=e+1 end="\ze\(\s\|;\|$\)"
+syn region rexxRoutineDirective start="::\s*routine\s*"ms=e+1 end="\ze\(\s\|;\|$\)"
+syn region rexxAttributeDirective start="::\s*attribute\s*"ms=e+1 end="\ze\(\s\|;\|$\)"
+" rgf, 2012-09-09
+syn region rexxOptionsDirective start="::\s*options\s*"ms=e+1 end="\ze\(\s\|;\|$\)"
+syn region rexxConstantDirective start="::\s*constant\s*"ms=e+1 end="\ze\(\s\|;\|$\)"
+
+syn region rexxDirective start="\(^\|;\)\s*::\s*\w\+" end="\($\|;\)" contains=rexxString,rexxNumber,rexxComment,rexxLineComment,rexxClassDirective,rexxMethodDirective,rexxRoutineDirective,rexxRequiresDirective,rexxAttributeDirective,rexxOptionsDirective,rexxConstantDirective keepend
+
+syn match rexxOptionsDirective2 "\<\(digits\|form\|fuzz\|trace\)\>" containedin = rexxOptionsDirective3
+syn region rexxOptionsDirective3 start="\(^\|;\)\s*::\s*options\s"ms=e+1 end="\($\|;\)" contains=rexxString,rexxNumber,rexxVariable,rexxComment,rexxLineComment containedin = rexxDirective
+
+
+syn region rexxVariable start="\zs\<\(\.\)\@!\K\k\+\>\ze\s*\(=\|,\|)\|%\|\]\|\\\||\|&\|+=\|-=\|<\|>\)" end="\(\_$\|.\)"me=e-1
+syn match rexxVariable "\(=\|,\|)\|%\|\]\|\\\||\|&\|+=\|-=\|<\|>\)\s*\zs\K\k*\ze"
+
+" rgf, 2007-07-22: unfortunately, the entire region is colored (not only the
+" patterns), hence useless (vim 7.0)! (syntax-docs hint that that should work)
+" attempt: just colorize the parenthesis in matching colors, keep content
+" transparent to keep the formatting already done to it!
+" TODO: test on 7.3
+" syn region par1 matchgroup=par1 start="(" matchgroup=par1 end=")" transparent contains=par2
+" syn region par2 matchgroup=par2 start="(" matchgroup=par2 end=")" transparent contains=par3 contained
+" syn region par3 matchgroup=par3 start="(" matchgroup=par3 end=")" transparent contains=par4 contained
+" syn region par4 matchgroup=par4 start="(" matchgroup=par4 end=")" transparent contains=par5 contained
+" syn region par5 matchgroup=par5 start="(" matchgroup=par5 end=")" transparent contains=par1 contained
+
+" this will colorize the entire region, removing any colorizing already done!
+" syn region par1 matchgroup=par1 start="(" end=")" contains=par2
+" syn region par2 matchgroup=par2 start="(" end=")" contains=par3 contained
+" syn region par3 matchgroup=par3 start="(" end=")" contains=par4 contained
+" syn region par4 matchgroup=par4 start="(" end=")" contains=par5 contained
+" syn region par5 matchgroup=par5 start="(" end=")" contains=par1 contained
+
+hi par1 ctermfg=red guifg=red "guibg=grey
+hi par2 ctermfg=blue guifg=blue "guibg=grey
+hi par3 ctermfg=darkgreen guifg=darkgreen "guibg=grey
+hi par4 ctermfg=darkyellow guifg=darkyellow "guibg=grey
+hi par5 ctermfg=darkgrey guifg=darkgrey "guibg=grey
+
+" line continuation (trailing comma or single dash)
+syn sync linecont "\(,\|-\ze-\@!\)\ze\s*\(--.*\|\/\*.*\)*$"
+
+" if !exists("rexx_minlines")
+" let rexx_minlines = 500
+" endif
+" exec "syn sync ccomment rexxComment minlines=" . rexx_minlines
+
+" always scan from start, PCs have long become to be powerful enough for that
+exec "syn sync fromstart"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" make binary and hex strings stand out
+hi rexxStringConstant term=bold,underline ctermfg=5 cterm=bold guifg=darkMagenta gui=bold
+
+hi def link rexxLabel2 Function
+hi def link doLoopSelectLabelRegion rexxKeyword
+hi def link endIterateLeaveLabelRegion rexxKeyword
+hi def link rexxLoopKeywords rexxKeyword " Todo
+
+hi def link rexxNumber Normal "DiffChange
+" hi def link rexxIdentifier DiffChange
+
+hi def link rexxRegularCallSignal Statement
+hi def link rexxExceptionHandling Statement
+
+hi def link rexxLabel Function
+hi def link rexxCharacter Character
+hi def link rexxParenError rexxError
+hi def link rexxInParen rexxError
+hi def link rexxCommentError rexxError
+hi def link rexxError Error
+hi def link rexxKeyword Statement
+hi def link rexxKeywordStatements Statement
+
+hi def link rexxFunction Function
+hi def link rexxString String
+hi def link rexxComment Comment
+hi def link rexxTodo Todo
+hi def link rexxSpecialVariable Special
+hi def link rexxConditional rexxKeyword
+
+hi def link rexxOperator Operator
+hi def link rexxMessageOperator rexxOperator
+hi def link rexxLineComment Comment
+
+hi def link rexxLineContinue WildMenu
+
+hi def link rexxDirective rexxKeyword
+hi def link rexxClassDirective Type
+hi def link rexxMethodDirective rexxFunction
+hi def link rexxAttributeDirective rexxFunction
+hi def link rexxRequiresDirective Include
+hi def link rexxRoutineDirective rexxFunction
+
+" rgf, 2012-09-09
+hi def link rexxOptionsDirective rexxFunction
+hi def link rexxOptionsDirective2 rexxOptionsDirective
+hi def link rexxOptionsDirective3 Normal " rexxOptionsDirective
+
+hi def link rexxConstantDirective rexxFunction
+
+hi def link rexxConst Constant
+hi def link rexxTypeSpecifier Type
+hi def link rexxBuiltinClass rexxTypeSpecifier
+
+hi def link rexxEnvironmentSymbol rexxConst
+hi def link rexxMessage rexxFunction
+
+hi def link rexxParse rexxKeyword
+hi def link rexxParse2 rexxParse
+
+hi def link rexxGuard rexxKeyword
+hi def link rexxTrace rexxKeyword
+
+hi def link rexxRaise rexxKeyword
+hi def link rexxRaise2 rexxRaise
+
+hi def link rexxForward rexxKeyword
+hi def link rexxForward2 rexxForward
+
+
+let b:current_syntax = "rexx"
+
+"vim: ts=8
diff --git a/runtime/syntax/rhelp.vim b/runtime/syntax/rhelp.vim
new file mode 100644
index 0000000..8cac585
--- /dev/null
+++ b/runtime/syntax/rhelp.vim
@@ -0,0 +1,274 @@
+" Vim syntax file
+" Language: R Help File
+" Maintainer: Jakson Aquino <jalvesaq@gmail.com>
+" Former Maintainer: Johannes Ranke <jranke@uni-bremen.de>
+" Homepage: https://github.com/jalvesaq/R-Vim-runtime
+" Last Change: Tue Jun 28, 2016 08:53AM
+" Remarks: - Includes R syntax highlighting in the appropriate
+" sections if an r.vim file is in the same directory or in the
+" default debian location.
+" - There is no Latex markup in equations
+" - Thanks to Will Gray for finding and fixing a bug
+" - No support for \var tag within quoted string
+
+" Version Clears: {{{1
+if exists("b:current_syntax")
+ finish
+endif
+
+scriptencoding utf-8
+
+syn case match
+
+" R help identifiers {{{1
+syn region rhelpIdentifier matchgroup=rhelpSection start="\\name{" end="}"
+syn region rhelpIdentifier matchgroup=rhelpSection start="\\alias{" end="}"
+syn region rhelpIdentifier matchgroup=rhelpSection start="\\pkg{" end="}" contains=rhelpLink
+syn region rhelpIdentifier matchgroup=rhelpSection start="\\CRANpkg{" end="}" contains=rhelpLink
+syn region rhelpIdentifier matchgroup=rhelpSection start="\\method{" end="}" contained
+syn region rhelpIdentifier matchgroup=rhelpSection start="\\Rdversion{" end="}"
+
+
+" Highlighting of R code using an existing r.vim syntax file if available {{{1
+syn include @R syntax/r.vim
+
+" Strings {{{1
+syn region rhelpString start=/"/ skip=/\\"/ end=/"/ contains=rhelpSpecialChar,rhelpCodeSpecial,rhelpLink contained
+
+" Special characters in R strings
+syn match rhelpCodeSpecial display contained "\\\\\(n\|r\|t\|b\|a\|f\|v\|'\|\"\)\|\\\\"
+
+" Special characters ( \$ \& \% \# \{ \} \_)
+syn match rhelpSpecialChar "\\[$&%#{}_]"
+
+
+" R code {{{1
+syn match rhelpDots "\\dots" containedin=@R
+syn region rhelpRcode matchgroup=Delimiter start="\\examples{" matchgroup=Delimiter transparent end="}" contains=@R,rhelpLink,rhelpIdentifier,rhelpString,rhelpSpecialChar,rhelpSection
+syn region rhelpRcode matchgroup=Delimiter start="\\usage{" matchgroup=Delimiter transparent end="}" contains=@R,rhelpIdentifier,rhelpS4method
+syn region rhelpRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimiter transparent end="}" contains=@R
+syn region rhelpRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end="}" contains=@R
+
+if v:version > 703
+ syn region rhelpRcode matchgroup=Delimiter start="\\code{" skip='\\\@1<!{.\{-}\\\@1<!}' transparent end="}" contains=@R,rhelpDots,rhelpString,rhelpSpecialChar,rhelpLink keepend
+else
+ syn region rhelpRcode matchgroup=Delimiter start="\\code{" skip='\\\@<!{.\{-}\\\@<!}' transparent end="}" contains=@R,rhelpDots,rhelpString,rhelpSpecialChar,rhelpLink keepend
+endif
+syn region rhelpS4method matchgroup=Delimiter start="\\S4method{.*}(" matchgroup=Delimiter transparent end=")" contains=@R,rhelpDots
+syn region rhelpSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter transparent end="}" contains=@R
+
+" PreProc {{{1
+syn match rhelpPreProc "^#ifdef.*"
+syn match rhelpPreProc "^#endif.*"
+
+" Special Delimiters {{{1
+syn match rhelpDelimiter "\\cr"
+syn match rhelpDelimiter "\\tab "
+
+" Keywords {{{1
+syn match rhelpKeyword "\\R\>"
+syn match rhelpKeyword "\\ldots\>"
+syn match rhelpKeyword "\\sspace\>"
+syn match rhelpKeyword "--"
+syn match rhelpKeyword "---"
+
+" Condition Keywords {{{2
+syn match rhelpKeyword "\\if\>"
+syn match rhelpKeyword "\\ifelse\>"
+syn match rhelpKeyword "\\out\>"
+" Examples of usage:
+" \ifelse{latex}{\eqn{p = 5 + 6 - 7 \times 8}}{\eqn{p = 5 + 6 - 7 * 8}}
+" \ifelse{latex}{\out{$\alpha$}}{\ifelse{html}{\out{&alpha;}}{alpha}}
+
+" Keywords and operators valid only if in math mode {{{2
+syn match rhelpMathOp "<" contained
+syn match rhelpMathOp ">" contained
+syn match rhelpMathOp "+" contained
+syn match rhelpMathOp "-" contained
+syn match rhelpMathOp "=" contained
+
+" Conceal function based on syntax/tex.vim {{{2
+if exists("g:tex_conceal")
+ let s:tex_conceal = g:tex_conceal
+else
+ let s:tex_conceal = 'gm'
+endif
+function s:HideSymbol(pat, cchar, hide)
+ if a:hide
+ exe "syn match rhelpMathSymb '" . a:pat . "' contained conceal cchar=" . a:cchar
+ else
+ exe "syn match rhelpMathSymb '" . a:pat . "' contained"
+ endif
+endfunction
+
+" Math symbols {{{2
+if s:tex_conceal =~ 'm'
+ let s:hd = 1
+else
+ let s:hd = 0
+endif
+call s:HideSymbol('\\infty\>', '∞', s:hd)
+call s:HideSymbol('\\ge\>', '≥', s:hd)
+call s:HideSymbol('\\le\>', '≤', s:hd)
+call s:HideSymbol('\\prod\>', 'âˆ', s:hd)
+call s:HideSymbol('\\sum\>', '∑', s:hd)
+syn match rhelpMathSymb "\\sqrt\>" contained
+
+" Greek letters {{{2
+if s:tex_conceal =~ 'g'
+ let s:hd = 1
+else
+ let s:hd = 0
+endif
+call s:HideSymbol('\\alpha\>', 'α', s:hd)
+call s:HideSymbol('\\beta\>', 'β', s:hd)
+call s:HideSymbol('\\gamma\>', 'γ', s:hd)
+call s:HideSymbol('\\delta\>', 'δ', s:hd)
+call s:HideSymbol('\\epsilon\>', 'ϵ', s:hd)
+call s:HideSymbol('\\zeta\>', 'ζ', s:hd)
+call s:HideSymbol('\\eta\>', 'η', s:hd)
+call s:HideSymbol('\\theta\>', 'θ', s:hd)
+call s:HideSymbol('\\iota\>', 'ι', s:hd)
+call s:HideSymbol('\\kappa\>', 'κ', s:hd)
+call s:HideSymbol('\\lambda\>', 'λ', s:hd)
+call s:HideSymbol('\\mu\>', 'μ', s:hd)
+call s:HideSymbol('\\nu\>', 'ν', s:hd)
+call s:HideSymbol('\\xi\>', 'ξ', s:hd)
+call s:HideSymbol('\\pi\>', 'Ï€', s:hd)
+call s:HideSymbol('\\rho\>', 'Ï', s:hd)
+call s:HideSymbol('\\sigma\>', 'σ', s:hd)
+call s:HideSymbol('\\tau\>', 'Ï„', s:hd)
+call s:HideSymbol('\\upsilon\>', 'Ï…', s:hd)
+call s:HideSymbol('\\phi\>', 'Ï•', s:hd)
+call s:HideSymbol('\\chi\>', 'χ', s:hd)
+call s:HideSymbol('\\psi\>', 'ψ', s:hd)
+call s:HideSymbol('\\omega\>', 'ω', s:hd)
+call s:HideSymbol('\\Gamma\>', 'Γ', s:hd)
+call s:HideSymbol('\\Delta\>', 'Δ', s:hd)
+call s:HideSymbol('\\Theta\>', 'Θ', s:hd)
+call s:HideSymbol('\\Lambda\>', 'Λ', s:hd)
+call s:HideSymbol('\\Xi\>', 'Ξ', s:hd)
+call s:HideSymbol('\\Pi\>', 'Π', s:hd)
+call s:HideSymbol('\\Sigma\>', 'Σ', s:hd)
+call s:HideSymbol('\\Upsilon\>', 'Î¥', s:hd)
+call s:HideSymbol('\\Phi\>', 'Φ', s:hd)
+call s:HideSymbol('\\Psi\>', 'Ψ', s:hd)
+call s:HideSymbol('\\Omega\>', 'Ω', s:hd)
+delfunction s:HideSymbol
+" Note: The letters 'omicron', 'Alpha', 'Beta', 'Epsilon', 'Zeta', 'Eta',
+" 'Iota', 'Kappa', 'Mu', 'Nu', 'Omicron', 'Rho', 'Tau' and 'Chi' are listed
+" at src/library/tools/R/Rd2txt.R because they are valid in HTML, although
+" they do not make valid LaTeX code (e.g. &Alpha; versus \Alpha).
+
+" Links {{{1
+syn region rhelpLink matchgroup=rhelpType start="\\link{" end="}" contained keepend extend
+syn region rhelpLink matchgroup=rhelpType start="\\link\[.\{-}\]{" end="}" contained keepend extend
+syn region rhelpLink matchgroup=rhelpType start="\\linkS4class{" end="}" contained keepend extend
+syn region rhelpLink matchgroup=rhelpType start="\\url{" end="}" contained keepend extend
+syn region rhelpLink matchgroup=rhelpType start="\\href{" end="}" contained keepend extend
+syn region rhelpLink matchgroup=rhelpType start="\\figure{" end="}" contained keepend extend
+
+" Verbatim like {{{1
+syn region rhelpVerbatim matchgroup=rhelpType start="\\samp{" skip='\\\@1<!{.\{-}\\\@1<!}' end="}" contains=rhelpSpecialChar,rhelpComment
+syn region rhelpVerbatim matchgroup=rhelpType start="\\verb{" skip='\\\@1<!{.\{-}\\\@1<!}' end="}" contains=rhelpSpecialChar,rhelpComment
+
+" Equation {{{1
+syn region rhelpEquation matchgroup=rhelpType start="\\eqn{" skip='\\\@1<!{.\{-}\\\@1<!}' end="}" contains=rhelpMathSymb,rhelpMathOp,rhelpRegion contained keepend extend
+syn region rhelpEquation matchgroup=rhelpType start="\\deqn{" skip='\\\@1<!{.\{-}\\\@1<!}' end="}" contains=rhelpMathSymb,rhelpMathOp,rhelpRegion contained keepend extend
+
+" Type Styles {{{1
+syn match rhelpType "\\emph\>"
+syn match rhelpType "\\strong\>"
+syn match rhelpType "\\bold\>"
+syn match rhelpType "\\sQuote\>"
+syn match rhelpType "\\dQuote\>"
+syn match rhelpType "\\preformatted\>"
+syn match rhelpType "\\kbd\>"
+syn match rhelpType "\\file\>"
+syn match rhelpType "\\email\>"
+syn match rhelpType "\\enc\>"
+syn match rhelpType "\\var\>"
+syn match rhelpType "\\env\>"
+syn match rhelpType "\\option\>"
+syn match rhelpType "\\command\>"
+syn match rhelpType "\\newcommand\>"
+syn match rhelpType "\\renewcommand\>"
+syn match rhelpType "\\dfn\>"
+syn match rhelpType "\\cite\>"
+syn match rhelpType "\\acronym\>"
+syn match rhelpType "\\doi\>"
+
+" rhelp sections {{{1
+syn match rhelpSection "\\encoding\>"
+syn match rhelpSection "\\title\>"
+syn match rhelpSection "\\item\>"
+syn match rhelpSection "\\description\>"
+syn match rhelpSection "\\concept\>"
+syn match rhelpSection "\\arguments\>"
+syn match rhelpSection "\\details\>"
+syn match rhelpSection "\\value\>"
+syn match rhelpSection "\\references\>"
+syn match rhelpSection "\\note\>"
+syn match rhelpSection "\\author\>"
+syn match rhelpSection "\\seealso\>"
+syn match rhelpSection "\\keyword\>"
+syn match rhelpSection "\\docType\>"
+syn match rhelpSection "\\format\>"
+syn match rhelpSection "\\source\>"
+syn match rhelpSection "\\itemize\>"
+syn match rhelpSection "\\describe\>"
+syn match rhelpSection "\\enumerate\>"
+syn match rhelpSection "\\item "
+syn match rhelpSection "\\item$"
+syn match rhelpSection "\\tabular{[lcr]*}"
+syn match rhelpSection "\\dontrun\>"
+syn match rhelpSection "\\dontshow\>"
+syn match rhelpSection "\\testonly\>"
+syn match rhelpSection "\\donttest\>"
+
+" Freely named Sections {{{1
+syn region rhelpFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end="}"
+syn region rhelpFreesubsec matchgroup=Delimiter start="\\subsection{" matchgroup=Delimiter transparent end="}"
+
+syn match rhelpDelimiter "{\|\[\|(\|)\|\]\|}"
+
+" R help file comments {{{1
+syn match rhelpComment /%.*$/
+
+" Error {{{1
+syn region rhelpRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim,rhelpEquation
+syn region rhelpRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim,rhelpEquation
+syn region rhelpRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim,rhelpEquation
+syn match rhelpError /[)\]}]/
+syn match rhelpBraceError /[)}]/ contained
+syn match rhelpCurlyError /[)\]]/ contained
+syn match rhelpParenError /[\]}]/ contained
+
+syntax sync match rhelpSyncRcode grouphere rhelpRcode "\\examples{"
+
+" Define the default highlighting {{{1
+hi def link rhelpVerbatim String
+hi def link rhelpDelimiter Delimiter
+hi def link rhelpIdentifier Identifier
+hi def link rhelpString String
+hi def link rhelpCodeSpecial Special
+hi def link rhelpKeyword Keyword
+hi def link rhelpDots Keyword
+hi def link rhelpLink Underlined
+hi def link rhelpType Type
+hi def link rhelpSection PreCondit
+hi def link rhelpError Error
+hi def link rhelpBraceError Error
+hi def link rhelpCurlyError Error
+hi def link rhelpParenError Error
+hi def link rhelpPreProc PreProc
+hi def link rhelpDelimiter Delimiter
+hi def link rhelpComment Comment
+hi def link rhelpRComment Comment
+hi def link rhelpSpecialChar SpecialChar
+hi def link rhelpMathSymb Special
+hi def link rhelpMathOp Operator
+
+let b:current_syntax = "rhelp"
+
+" vim: foldmethod=marker sw=2
diff --git a/runtime/syntax/rib.vim b/runtime/syntax/rib.vim
new file mode 100644
index 0000000..0ee6071
--- /dev/null
+++ b/runtime/syntax/rib.vim
@@ -0,0 +1,62 @@
+" Vim syntax file
+" Language: Renderman Interface Bytestream
+" Maintainer: Andrew Bromage <ajb@spamcop.net>
+" Last Change: 2003 May 11
+"
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+" Comments
+syn match ribLineComment "#.*$"
+syn match ribStructureComment "##.*$"
+
+syn case ignore
+syn match ribCommand /[A-Z][a-zA-Z]*/
+syn case match
+
+syn region ribString start=/"/ skip=/\\"/ end=/"/
+
+syn match ribStructure "[A-Z][a-zA-Z]*Begin\>\|[A-Z][a-zA-Z]*End"
+syn region ribSectionFold start="FrameBegin" end="FrameEnd" fold transparent keepend extend
+syn region ribSectionFold start="WorldBegin" end="WorldEnd" fold transparent keepend extend
+syn region ribSectionFold start="TransformBegin" end="TransformEnd" fold transparent keepend extend
+syn region ribSectionFold start="AttributeBegin" end="AttributeEnd" fold transparent keepend extend
+syn region ribSectionFold start="MotionBegin" end="MotionEnd" fold transparent keepend extend
+syn region ribSectionFold start="SolidBegin" end="SolidEnd" fold transparent keepend extend
+syn region ribSectionFold start="ObjectBegin" end="ObjectEnd" fold transparent keepend extend
+
+syn sync fromstart
+
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match ribNumbers display transparent "[-]\=\<\d\|\.\d" contains=ribNumber,ribFloat
+syn match ribNumber display contained "[-]\=\d\+\>"
+"floating point number, with dot, optional exponent
+syn match ribFloat display contained "[-]\=\d\+\.\d*\(e[-+]\=\d\+\)\="
+"floating point number, starting with a dot, optional exponent
+syn match ribFloat display contained "[-]\=\.\d\+\(e[-+]\=\d\+\)\=\>"
+"floating point number, without dot, with exponent
+syn match ribFloat display contained "[-]\=\d\+e[-+]\d\+\>"
+syn case match
+
+
+hi def link ribStructure Structure
+hi def link ribCommand Statement
+
+hi def link ribStructureComment SpecialComment
+hi def link ribLineComment Comment
+
+hi def link ribString String
+hi def link ribNumber Number
+hi def link ribFloat Float
+
+
+
+let b:current_syntax = "rib"
+
+" Options for vi: ts=8 sw=2 sts=2 nowrap noexpandtab ft=vim
diff --git a/runtime/syntax/rmd.vim b/runtime/syntax/rmd.vim
new file mode 100644
index 0000000..f849af9
--- /dev/null
+++ b/runtime/syntax/rmd.vim
@@ -0,0 +1,177 @@
+" Language: Markdown with chunks of R, Python and other languages
+" Maintainer: Jakson Aquino <jalvesaq@gmail.com>
+" Homepage: https://github.com/jalvesaq/R-Vim-runtime
+" Last Change: Fri Feb 24, 2023 08:28AM
+"
+" For highlighting pandoc extensions to markdown like citations and TeX and
+" many other advanced features like folding of markdown sections, it is
+" recommended to install the vim-pandoc filetype plugin as well as the
+" vim-pandoc-syntax filetype plugin from https://github.com/vim-pandoc.
+
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Highlight the header of the chunks as R code
+let g:rmd_syn_hl_chunk = get(g:, 'rmd_syn_hl_chunk', 0)
+
+" Pandoc-syntax has more features, but it is slower.
+" https://github.com/vim-pandoc/vim-pandoc-syntax
+
+" Don't waste time loading syntax that will be discarded:
+let s:save_pandoc_lngs = get(g:, 'pandoc#syntax#codeblocks#embeds#langs', [])
+let g:pandoc#syntax#codeblocks#embeds#langs = []
+
+" Step_1: Source pandoc.vim if it is installed:
+runtime syntax/pandoc.vim
+if exists("b:current_syntax")
+ if hlexists('pandocDelimitedCodeBlock')
+ syn clear pandocDelimitedCodeBlock
+ endif
+
+ if len(s:save_pandoc_lngs) > 0 && !exists('g:rmd_fenced_languages')
+ let g:rmd_fenced_languages = deepcopy(s:save_pandoc_lngs)
+ endif
+
+ " Recognize inline R code
+ syn region rmdrInline matchgroup=rmdInlineDelim start="`r " end="`" contains=@Rmdr containedin=pandocLaTeXRegion,yamlFlowString keepend
+else
+ " Step_2: Source markdown.vim if pandoc.vim is not installed
+
+ " Configuration if not using pandoc syntax:
+ " Add syntax highlighting of YAML header
+ let g:rmd_syn_hl_yaml = get(g:, 'rmd_syn_hl_yaml', 1)
+ " Add syntax highlighting of citation keys
+ let g:rmd_syn_hl_citations = get(g:, 'rmd_syn_hl_citations', 1)
+
+ " R chunks will not be highlighted by syntax/markdown because their headers
+ " follow a non standard pattern: "```{lang" instead of "^```lang".
+ " Make a copy of g:markdown_fenced_languages to highlight the chunks later:
+ if exists('g:markdown_fenced_languages') && !exists('g:rmd_fenced_languages')
+ let g:rmd_fenced_languages = deepcopy(g:markdown_fenced_languages)
+ endif
+
+ if exists('g:markdown_fenced_languages') && len(g:markdown_fenced_languages) > 0
+ let s:save_mfl = deepcopy(g:markdown_fenced_languages)
+ endif
+ " Don't waste time loading syntax that will be discarded:
+ let g:markdown_fenced_languages = []
+ runtime syntax/markdown.vim
+ if exists('s:save_mfl') > 0
+ let g:markdown_fenced_languages = deepcopy(s:save_mfl)
+ unlet s:save_mfl
+ endif
+ syn region rmdrInline matchgroup=rmdInlineDelim start="`r " end="`" contains=@Rmdr keepend
+
+ " Step_2a: Add highlighting for both YAML and citations which are pandoc
+ " specific, but also used in Rmd files
+
+ " You don't need this if either your markdown/syntax.vim already highlights
+ " the YAML header or you are writing standard markdown
+ if g:rmd_syn_hl_yaml
+ " Basic highlighting of YAML header
+ syn match rmdYamlFieldTtl /^\s*\zs\w\%(-\|\w\)*\ze:/ contained
+ syn match rmdYamlFieldTtl /^\s*-\s*\zs\w\%(-\|\w\)*\ze:/ contained
+ syn region yamlFlowString matchgroup=yamlFlowStringDelimiter start='"' skip='\\"' end='"' contains=yamlEscape,rmdrInline contained
+ syn region yamlFlowString matchgroup=yamlFlowStringDelimiter start="'" skip="''" end="'" contains=yamlSingleEscape,rmdrInline contained
+ syn match yamlEscape contained '\\\%([\\"abefnrtv\^0_ NLP\n]\|x\x\x\|u\x\{4}\|U\x\{8}\)'
+ syn match yamlSingleEscape contained "''"
+ syn match yamlComment /#.*/ contained
+ " A second colon is a syntax error, unles within a string or following !expr
+ syn match yamlColonError /:\s*[^'^"^!]*:/ contained
+ if &filetype == 'quarto'
+ syn region pandocYAMLHeader matchgroup=rmdYamlBlockDelim start=/\%(\%^\|\_^\s*\n\)\@<=\_^-\{3}\ze\n.\+/ end=/^---$/ keepend contains=rmdYamlFieldTtl,yamlFlowString,yamlComment,yamlColonError
+ else
+ syn region pandocYAMLHeader matchgroup=rmdYamlBlockDelim start=/\%(\%^\|\_^\s*\n\)\@<=\_^-\{3}\ze\n.\+/ end=/^\([-.]\)\1\{2}$/ keepend contains=rmdYamlFieldTtl,yamlFlowString,yamlComment,yamlColonError
+ endif
+ hi def link rmdYamlBlockDelim Delimiter
+ hi def link rmdYamlFieldTtl Identifier
+ hi def link yamlFlowString String
+ hi def link yamlComment Comment
+ hi def link yamlColonError Error
+ endif
+
+ " You don't need this if either your markdown/syntax.vim already highlights
+ " citations or you are writing standard markdown
+ if g:rmd_syn_hl_citations
+ " From vim-pandoc-syntax
+ " parenthetical citations
+ syn match pandocPCite /\^\@<!\[[^\[\]]\{-}-\{0,1}@[[:alnum:]_][[:alnum:]à-öø-ÿÀ-ÖØ-ß_:.#$%&\-+?<>~\/]*.\{-}\]/ contains=pandocEmphasis,pandocStrong,pandocLatex,pandocCiteKey,@Spell,pandocAmpersandEscape display
+ " in-text citations with location
+ syn match pandocICite /@[[:alnum:]_][[:alnum:]à-öø-ÿÀ-ÖØ-ß_:.#$%&\-+?<>~\/]*\s\[.\{-1,}\]/ contains=pandocCiteKey,@Spell display
+ " cite keys
+ syn match pandocCiteKey /\(-\=@[[:alnum:]_][[:alnum:]à-öø-ÿÀ-ÖØ-ß_:.#$%&\-+?<>~\/]*\)/ containedin=pandocPCite,pandocICite contains=@NoSpell display
+ syn match pandocCiteAnchor /[-@]/ contained containedin=pandocCiteKey display
+ syn match pandocCiteLocator /[\[\]]/ contained containedin=pandocPCite,pandocICite
+ hi def link pandocPCite Operator
+ hi def link pandocICite Operator
+ hi def link pandocCiteKey Label
+ hi def link pandocCiteAnchor Operator
+ hi def link pandocCiteLocator Operator
+ endif
+endif
+
+" Step_3: Highlight code blocks.
+
+syn region rmdCodeBlock matchgroup=rmdCodeDelim start="^\s*```\s*{.*}$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend
+syn region rmdCodeBlock matchgroup=rmdCodeDelim start="^\s*```.+$" matchgroup=rmdCodeDelim end="^```$" keepend
+hi link rmdCodeBlock Special
+
+" Now highlight chunks:
+syn region knitrBodyOptions start='^#| ' end='$' contained containedin=rComment,pythonComment contains=knitrBodyVar,knitrBodyValue transparent
+syn match knitrBodyValue ': \zs.*\ze$' keepend contained containedin=knitrBodyOptions
+syn match knitrBodyVar '| \zs\S\{-}\ze:' contained containedin=knitrBodyOptions
+
+let g:rmd_fenced_languages = get(g:, 'rmd_fenced_languages', ['r'])
+for s:type in g:rmd_fenced_languages
+ if s:type =~ '='
+ let s:ft = substitute(s:type, '.*=', '', '')
+ let s:nm = substitute(s:type, '=.*', '', '')
+ else
+ let s:ft = s:type
+ let s:nm = s:type
+ endif
+ unlet! b:current_syntax
+ exe 'syn include @Rmd'.s:nm.' syntax/'.s:ft.'.vim'
+ if g:rmd_syn_hl_chunk
+ exe 'syn match knitrChunkDelim /```\s*{\s*'.s:nm.'/ contained containedin=knitrChunkBrace contains=knitrChunkLabel'
+ exe 'syn match knitrChunkLabelDelim /```\s*{\s*'.s:nm.',\=\s*[-[:alnum:]]\{-1,}[,}]/ contained containedin=knitrChunkBrace'
+ syn match knitrChunkDelim /}\s*$/ contained containedin=knitrChunkBrace
+ exe 'syn match knitrChunkBrace /```\s*{\s*'.s:nm.'.*$/ contained containedin=rmd'.s:nm.'Chunk contains=knitrChunkDelim,knitrChunkLabelDelim,@Rmd'.s:nm
+ exe 'syn region rmd'.s:nm.'Chunk start="^\s*```\s*{\s*=\?'.s:nm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=knitrChunkBrace,@Rmd'.s:nm
+
+ hi link knitrChunkLabel Identifier
+ hi link knitrChunkDelim rmdCodeDelim
+ hi link knitrChunkLabelDelim rmdCodeDelim
+ else
+ exe 'syn region rmd'.s:nm.'Chunk matchgroup=rmdCodeDelim start="^\s*```\s*{\s*=\?'.s:nm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=@Rmd'.s:nm
+ endif
+endfor
+unlet! s:type
+
+" Step_4: Highlight code recognized by pandoc but not defined in pandoc.vim yet:
+syn match pandocDivBegin '^:::\+ {.\{-}}' contains=pandocHeaderAttr
+syn match pandocDivEnd '^:::\+$'
+
+hi def link knitrBodyVar PreProc
+hi def link knitrBodyValue Constant
+hi def link knitrBodyOptions rComment
+hi def link pandocDivBegin Delimiter
+hi def link pandocDivEnd Delimiter
+hi def link rmdInlineDelim Delimiter
+hi def link rmdCodeDelim Delimiter
+
+if len(s:save_pandoc_lngs)
+ let g:pandoc#syntax#codeblocks#embeds#langs = s:save_pandoc_lngs
+endif
+unlet s:save_pandoc_lngs
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+let b:current_syntax = "rmd"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/rnc.vim b/runtime/syntax/rnc.vim
new file mode 100644
index 0000000..7d3907e
--- /dev/null
+++ b/runtime/syntax/rnc.vim
@@ -0,0 +1,68 @@
+" Vim syntax file
+" Language: Relax NG compact syntax
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-06-17
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword+=-,.
+
+syn keyword rncTodo contained TODO FIXME XXX NOTE
+
+syn region rncComment display oneline start='^\s*#' end='$'
+ \ contains=rncTodo,@Spell
+
+syn match rncOperator display '[-|,&+?*~]'
+syn match rncOperator display '\%(|&\)\=='
+syn match rncOperator display '>>'
+
+syn match rncNamespace display '\<\k\+:'
+
+syn match rncQuoted display '\\\k\+\>'
+
+syn match rncSpecial display '\\x{\x\+}'
+
+syn region rncAnnotation transparent start='\[' end='\]'
+ \ contains=ALLBUT,rncComment,rncTodo
+
+syn region rncLiteral display oneline start=+"+ end=+"+
+ \ contains=rncSpecial
+syn region rncLiteral display oneline start=+'+ end=+'+
+syn region rncLiteral display oneline start=+"""+ end=+"""+
+ \ contains=rncSpecial
+syn region rncLiteral display oneline start=+'''+ end=+'''+
+
+syn match rncDelimiter display '[{},()]'
+
+syn keyword rncKeyword datatypes default div empty external grammar
+syn keyword rncKeyword include inherit list mixed name namespace
+syn keyword rncKeyword notAllowed parent start string text token
+
+syn match rncIdentifier display '\k\+\_s*\%(=\|&=\||=\)\@='
+ \ nextgroup=rncOperator
+syn keyword rncKeyword element attribute
+ \ nextgroup=rncIdName skipwhite skipempty
+syn match rncIdName contained '\k\+'
+
+hi def link rncTodo Todo
+hi def link rncComment Comment
+hi def link rncOperator Operator
+hi def link rncNamespace Identifier
+hi def link rncQuoted Special
+hi def link rncSpecial SpecialChar
+hi def link rncAnnotation Special
+hi def link rncLiteral String
+hi def link rncDelimiter Delimiter
+hi def link rncKeyword Keyword
+hi def link rncIdentifier Identifier
+hi def link rncIdName Identifier
+
+let b:current_syntax = "rnc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/rng.vim b/runtime/syntax/rng.vim
new file mode 100644
index 0000000..1ef864c
--- /dev/null
+++ b/runtime/syntax/rng.vim
@@ -0,0 +1,25 @@
+" Vim syntax file
+" Language: RELAX NG
+" Maintainer: Jaromir Hradilek <jhradilek@gmail.com>
+" URL: https://github.com/jhradilek/vim-rng
+" Last Change: 25 March 2013
+" Description: A syntax file for RELAX NG, a schema language for XML
+
+if exists('b:current_syntax')
+ finish
+endif
+
+do Syntax xml
+syn spell toplevel
+syn cluster xmlTagHook add=rngTagName
+syn case match
+
+syn keyword rngTagName anyName attribute choice data define div contained
+syn keyword rngTagName element empty except externalRef grammar contained
+syn keyword rngTagName group include interleave list mixed name contained
+syn keyword rngTagName notAllowed nsName oneOrMore optional param contained
+syn keyword rngTagName parentRef ref start text value zeroOrMore contained
+
+hi def link rngTagName Statement
+
+let b:current_syntax = 'rng'
diff --git a/runtime/syntax/rnoweb.vim b/runtime/syntax/rnoweb.vim
new file mode 100644
index 0000000..749860a
--- /dev/null
+++ b/runtime/syntax/rnoweb.vim
@@ -0,0 +1,52 @@
+" Vim syntax file
+" Language: R noweb Files
+" Maintainer: Johannes Ranke <jranke@uni-bremen.de>
+" Last Change: Thu Apr 05, 2018 11:06PM
+" Version: 0.9.1
+" Remarks: - This file is inspired by the proposal of
+" Fernando Henrique Ferraz Pereira da Rosa <feferraz@ime.usp.br>
+" http://www.ime.usp.br/~feferraz/en/sweavevim.html
+"
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+" Extension of Tex clusters {{{1
+runtime syntax/tex.vim
+unlet! b:current_syntax
+
+syn cluster texMatchGroup add=@rnoweb
+syn cluster texMathMatchGroup add=rnowebSexpr
+syn cluster texMathZoneGroup add=rnowebSexpr
+syn cluster texEnvGroup add=@rnoweb
+syn cluster texFoldGroup add=@rnoweb
+syn cluster texDocGroup add=@rnoweb
+syn cluster texPartGroup add=@rnoweb
+syn cluster texChapterGroup add=@rnoweb
+syn cluster texSectionGroup add=@rnoweb
+syn cluster texSubSectionGroup add=@rnoweb
+syn cluster texSubSubSectionGroup add=@rnoweb
+syn cluster texParaGroup add=@rnoweb
+
+" Highlighting of R code using an existing r.vim syntax file if available {{{1
+syn include @rnowebR syntax/r.vim
+syn region rnowebChunk matchgroup=rnowebDelimiter start="^\s*<<.*>>=" matchgroup=rnowebDelimiter end="^@" contains=@rnowebR,rnowebChunkReference,rnowebChunk fold keepend
+syn match rnowebChunkReference "^\s*<<.*>>$" contained
+syn region rnowebSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter end="}" contains=@rnowebR contained
+
+" Sweave options command {{{1
+syn region rnowebSweaveopts matchgroup=Delimiter start="\\SweaveOpts{" matchgroup=Delimiter end="}"
+
+" rnoweb Cluster {{{1
+syn cluster rnoweb contains=rnowebChunk,rnowebChunkReference,rnowebDelimiter,rnowebSexpr,rnowebSweaveopts
+
+" Highlighting {{{1
+hi def link rnowebDelimiter Delimiter
+hi def link rnowebSweaveOpts Statement
+hi def link rnowebChunkReference Delimiter
+
+let b:current_syntax = "rnoweb"
+" vim: foldmethod=marker:
diff --git a/runtime/syntax/robots.vim b/runtime/syntax/robots.vim
new file mode 100644
index 0000000..fcb9b02
--- /dev/null
+++ b/runtime/syntax/robots.vim
@@ -0,0 +1,57 @@
+" Vim syntax file
+" Language: "Robots.txt" files
+" Robots.txt files indicate to WWW robots which parts of a web site should not be accessed.
+" Maintainer: Dominique Stéphan (dominique@mggen.com)
+" URL: http://www.mggen.com/vim/syntax/robots.zip
+" Last change: 2001 May 09
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+" shut case off
+syn case ignore
+
+" Comment
+syn match robotsComment "#.*$" contains=robotsUrl,robotsMail,robotsString
+
+" Star * (means all spiders)
+syn match robotsStar "\*"
+
+" :
+syn match robotsDelimiter ":"
+
+
+" The keywords
+" User-agent
+syn match robotsAgent "^[Uu][Ss][Ee][Rr]\-[Aa][Gg][Ee][Nn][Tt]"
+" Disallow
+syn match robotsDisallow "^[Dd][Ii][Ss][Aa][Ll][Ll][Oo][Ww]"
+
+" Disallow: or User-Agent: and the rest of the line before an eventual comment
+synt match robotsLine "\(^[Uu][Ss][Ee][Rr]\-[Aa][Gg][Ee][Nn][Tt]\|^[Dd][Ii][Ss][Aa][Ll][Ll][Oo][Ww]\):[^#]*" contains=robotsAgent,robotsDisallow,robotsStar,robotsDelimiter
+
+" Some frequent things in comments
+syn match robotsUrl "http[s]\=://\S*"
+syn match robotsMail "\S*@\S*"
+syn region robotsString start=+L\="+ skip=+\\\\\|\\"+ end=+"+
+
+
+hi def link robotsComment Comment
+hi def link robotsAgent Type
+hi def link robotsDisallow Statement
+hi def link robotsLine Special
+hi def link robotsStar Operator
+hi def link robotsDelimiter Delimiter
+hi def link robotsUrl String
+hi def link robotsMail String
+hi def link robotsString String
+
+
+
+let b:current_syntax = "robots"
+
+" vim: ts=8 sw=2
+
diff --git a/runtime/syntax/routeros.vim b/runtime/syntax/routeros.vim
new file mode 100644
index 0000000..b6effc9
--- /dev/null
+++ b/runtime/syntax/routeros.vim
@@ -0,0 +1,91 @@
+" Vim syntax file
+" Language: MikroTik RouterOS Script
+" Maintainer: zainin <z@wintr.dev>
+" Original Author: ndbjorne @ MikroTik forums
+" Last Change: 2021 Nov 14
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+syn iskeyword @,48-57,-
+
+" comments
+syn match routerosComment /^\s*\zs#.*/
+
+" options submenus: /interface ether1 etc
+syn match routerosSubMenu "\([a-z]\)\@<!/[a-zA-Z0-9-]*"
+
+" variables are matched by looking at strings ending with "=", e.g. var=
+syn match routerosVariable "[a-zA-Z0-9-/]*\(=\)\@="
+syn match routerosVariable "$[a-zA-Z0-9-]*"
+
+" colored for clarity
+syn match routerosDelimiter "[,=]"
+" match slash in CIDR notation (1.2.3.4/24, 2001:db8::/48, ::1/128)
+syn match routerosDelimiter "\(\x\|:\)\@<=\/\(\d\)\@="
+" dash in IP ranges
+syn match routerosDelimiter "\(\x\|:\)\@<=-\(\x\|:\)\@="
+
+" match service names after "set", like in original routeros syntax
+syn match routerosService "\(set\)\@<=\s\(api-ssl\|api\|dns\|ftp\|http\|https\|pim\|ntp\|smb\|ssh\|telnet\|winbox\|www\|www-ssl\)"
+
+" colors various interfaces
+syn match routerosInterface "bridge\d\+\|ether\d\+\|wlan\d\+\|pppoe-\(out\|in\)\d\+"
+
+syn keyword routerosBoolean yes no true false
+
+syn keyword routerosConditional if
+
+" operators
+syn match routerosOperator " \zs[-+*<>=!~^&.,]\ze "
+syn match routerosOperator "[<>!]="
+syn match routerosOperator "<<\|>>"
+syn match routerosOperator "[+-]\d\@="
+
+syn keyword routerosOperator and or in
+
+" commands
+syn keyword routerosCommands beep delay put len typeof pick log time set find environment
+syn keyword routerosCommands terminal error parse resolve toarray tobool toid toip toip6
+syn keyword routerosCommands tonum tostr totime add remove enable disable where get print
+syn keyword routerosCommands export edit find append as-value brief detail count-only file
+syn keyword routerosCommands follow follow-only from interval terse value-list without-paging
+syn keyword routerosCommands return
+
+" variable types
+syn keyword routerosType global local
+
+" loop keywords
+syn keyword routerosRepeat do while for foreach
+
+syn match routerosSpecial "[():[\]{|}]"
+
+syn match routerosLineContinuation "\\$"
+
+syn match routerosEscape "\\["\\nrt$?_abfv]" contained display
+syn match routerosEscape "\\\x\x" contained display
+
+syn region routerosString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=routerosEscape,routerosLineContinuation
+
+hi link routerosComment Comment
+hi link routerosSubMenu Function
+hi link routerosVariable Identifier
+hi link routerosDelimiter Operator
+hi link routerosEscape Special
+hi link routerosService Type
+hi link routerosInterface Type
+hi link routerosBoolean Boolean
+hi link routerosConditional Conditional
+hi link routerosOperator Operator
+hi link routerosCommands Operator
+hi link routerosType Type
+hi link routerosRepeat Repeat
+hi link routerosSpecial Delimiter
+hi link routerosString String
+hi link routerosLineContinuation Special
+
+let b:current_syntax = "routeros"
diff --git a/runtime/syntax/rpcgen.vim b/runtime/syntax/rpcgen.vim
new file mode 100644
index 0000000..60c9b8c
--- /dev/null
+++ b/runtime/syntax/rpcgen.vim
@@ -0,0 +1,46 @@
+" Vim syntax file
+" Language: rpcgen
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Last Change: Aug 31, 2016
+" Version: 13
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_RPCGEN
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the C syntax to start with
+runtime! syntax/c.vim
+
+syn keyword rpcProgram program skipnl skipwhite nextgroup=rpcProgName
+syn match rpcProgName contained "\<\i\I*\>" skipnl skipwhite nextgroup=rpcProgZone
+syn region rpcProgZone contained matchgroup=Delimiter start="{" matchgroup=Delimiter end="}\s*=\s*\(\d\+\|0x[23]\x\{7}\)\s*;"me=e-1 contains=rpcVersion,cComment,rpcProgNmbrErr
+syn keyword rpcVersion contained version skipnl skipwhite nextgroup=rpcVersName
+syn match rpcVersName contained "\<\i\I*\>" skipnl skipwhite nextgroup=rpcVersZone
+syn region rpcVersZone contained matchgroup=Delimiter start="{" matchgroup=Delimiter end="}\s*=\s*\d\+\s*;"me=e-1 contains=cType,cStructure,cStorageClass,rpcDecl,rpcProcNmbr,cComment
+syn keyword rpcDecl contained string
+syn match rpcProcNmbr contained "=\s*\d\+;"me=e-1
+syn match rpcProgNmbrErr contained "=\s*0x[^23]\x*"ms=s+1
+syn match rpcPassThru "^\s*%.*$"
+
+" Define the default highlighting.
+if !exists("skip_rpcgen_syntax_inits")
+
+ hi def link rpcProgName rpcName
+ hi def link rpcProgram rpcStatement
+ hi def link rpcVersName rpcName
+ hi def link rpcVersion rpcStatement
+
+ hi def link rpcDecl cType
+ hi def link rpcPassThru cComment
+
+ hi def link rpcName Special
+ hi def link rpcProcNmbr Delimiter
+ hi def link rpcProgNmbrErr Error
+ hi def link rpcStatement Statement
+
+endif
+
+let b:current_syntax = "rpcgen"
+
+" vim: ts=8
diff --git a/runtime/syntax/rpl.vim b/runtime/syntax/rpl.vim
new file mode 100644
index 0000000..28c250b
--- /dev/null
+++ b/runtime/syntax/rpl.vim
@@ -0,0 +1,483 @@
+" Vim syntax file
+" Language: RPL/2
+" Version: 0.15.15 against RPL/2 version 4.00pre7i
+" Last Change: 2012 Feb 03 by Thilo Six
+" Maintainer: Joël BERTRAND <rpl2@free.fr>
+" URL: http://www.makalis.fr/~bertrand/rpl2/download/vim/indent/rpl.vim
+" Credits: Nothing
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Keyword characters (not used)
+" set iskeyword=33-127
+
+" Case sensitive
+syntax case match
+
+" Constants
+syntax match rplConstant "\(^\|\s\+\)\(e\|i\)\ze\($\|\s\+\)"
+
+" Any binary number
+syntax match rplBinaryError "\(^\|\s\+\)#\s*\S\+b\ze"
+syntax match rplBinary "\(^\|\s\+\)#\s*[01]\+b\ze\($\|\s\+\)"
+syntax match rplOctalError "\(^\|\s\+\)#\s*\S\+o\ze"
+syntax match rplOctal "\(^\|\s\+\)#\s*\o\+o\ze\($\|\s\+\)"
+syntax match rplDecimalError "\(^\|\s\+\)#\s*\S\+d\ze"
+syntax match rplDecimal "\(^\|\s\+\)#\s*\d\+d\ze\($\|\s\+\)"
+syntax match rplHexadecimalError "\(^\|\s\+\)#\s*\S\+h\ze"
+syntax match rplHexadecimal "\(^\|\s\+\)#\s*\x\+h\ze\($\|\s\+\)"
+
+" Case unsensitive
+syntax case ignore
+
+syntax match rplControl "\(^\|\s\+\)abort\ze\($\|\s\+\)"
+syntax match rplControl "\(^\|\s\+\)kill\ze\($\|\s\+\)"
+syntax match rplControl "\(^\|\s\+\)cont\ze\($\|\s\+\)"
+syntax match rplControl "\(^\|\s\+\)halt\ze\($\|\s\+\)"
+syntax match rplControl "\(^\|\s\+\)cmlf\ze\($\|\s\+\)"
+syntax match rplControl "\(^\|\s\+\)sst\ze\($\|\s\+\)"
+
+syntax match rplConstant "\(^\|\s\+\)pi\ze\($\|\s\+\)"
+
+syntax match rplStatement "\(^\|\s\+\)return\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)last\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)syzeval\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)wait\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)type\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)kind\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)eval\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)use\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)remove\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)external\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)dup\([2n]\|\)\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)drop\([2n]\|\)\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)depth\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)roll\(d\|\)\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)pick\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)rot\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)swap\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)over\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)clear\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)warranty\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)copyright\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)convert\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)date\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)time\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)mem\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)clmf\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)->num\ze\($\|\s\+\)"
+syntax match rplStatement "\(^\|\s\+\)help\ze\($\|\s\+\)"
+
+syntax match rplStorage "\(^\|\s\+\)get\(i\|r\|c\|\)\ze\($\|\s\+\)"
+syntax match rplStorage "\(^\|\s\+\)put\(i\|r\|c\|\)\ze\($\|\s\+\)"
+syntax match rplStorage "\(^\|\s\+\)rcl\ze\($\|\s\+\)"
+syntax match rplStorage "\(^\|\s\+\)purge\ze\($\|\s\+\)"
+syntax match rplStorage "\(^\|\s\+\)sinv\ze\($\|\s\+\)"
+syntax match rplStorage "\(^\|\s\+\)sneg\ze\($\|\s\+\)"
+syntax match rplStorage "\(^\|\s\+\)sconj\ze\($\|\s\+\)"
+syntax match rplStorage "\(^\|\s\+\)steq\ze\($\|\s\+\)"
+syntax match rplStorage "\(^\|\s\+\)rceq\ze\($\|\s\+\)"
+syntax match rplStorage "\(^\|\s\+\)vars\ze\($\|\s\+\)"
+syntax match rplStorage "\(^\|\s\+\)clusr\ze\($\|\s\+\)"
+syntax match rplStorage "\(^\|\s\+\)sto\([+-/\*]\|\)\ze\($\|\s\+\)"
+
+syntax match rplAlgConditional "\(^\|\s\+\)ift\(e\|\)\ze\($\|\s\+\)"
+
+syntax match rplOperator "\(^\|\s\+\)and\ze\($\|\s\+\)"
+syntax match rplOperator "\(^\|\s\+\)\(x\|\)or\ze\($\|\s\+\)"
+syntax match rplOperator "\(^\|\s\+\)not\ze\($\|\s\+\)"
+syntax match rplOperator "\(^\|\s\+\)same\ze\($\|\s\+\)"
+syntax match rplOperator "\(^\|\s\+\)==\ze\($\|\s\+\)"
+syntax match rplOperator "\(^\|\s\+\)<=\ze\($\|\s\+\)"
+syntax match rplOperator "\(^\|\s\+\)=<\ze\($\|\s\+\)"
+syntax match rplOperator "\(^\|\s\+\)=>\ze\($\|\s\+\)"
+syntax match rplOperator "\(^\|\s\+\)>=\ze\($\|\s\+\)"
+syntax match rplOperator "\(^\|\s\+\)<>\ze\($\|\s\+\)"
+syntax match rplOperator "\(^\|\s\+\)>\ze\($\|\s\+\)"
+syntax match rplOperator "\(^\|\s\+\)<\ze\($\|\s\+\)"
+syntax match rplOperator "\(^\|\s\+\)[+-]\ze\($\|\s\+\)"
+syntax match rplOperator "\(^\|\s\+\)[/\*]\ze\($\|\s\+\)"
+syntax match rplOperator "\(^\|\s\+\)\^\ze\($\|\s\+\)"
+syntax match rplOperator "\(^\|\s\+\)\*\*\ze\($\|\s\+\)"
+
+syntax match rplBoolean "\(^\|\s\+\)true\ze\($\|\s\+\)"
+syntax match rplBoolean "\(^\|\s\+\)false\ze\($\|\s\+\)"
+
+syntax match rplReadWrite "\(^\|\s\+\)store\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)recall\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)\(\|wf\|un\)lock\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)open\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)close\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)delete\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)create\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)format\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)rewind\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)backspace\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)\(\|re\)write\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)read\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)inquire\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)sync\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)append\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)suppress\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)seek\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)pr\(1\|int\|st\|stc\|lcd\|var\|usr\|md\)\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)paper\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)cr\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)erase\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)disp\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)input\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)prompt\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)key\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)cllcd\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)\(\|re\)draw\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)drax\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)indep\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)depnd\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)res\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)axes\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)label\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)pmin\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)pmax\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)centr\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)persist\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)title\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)\(slice\|auto\|log\|\)scale\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)eyept\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)\(p\|s\)par\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)function\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)polar\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)scatter\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)plotter\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)wireframe\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)parametric\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)slice\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)\*w\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)\*h\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)\*d\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)\*s\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)->lcd\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)lcd->\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)edit\ze\($\|\s\+\)"
+syntax match rplReadWrite "\(^\|\s\+\)visit\ze\($\|\s\+\)"
+
+syntax match rplIntrinsic "\(^\|\s\+\)abs\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)arg\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)conj\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)re\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)im\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)mant\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)xpon\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)ceil\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)fact\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)fp\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)floor\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)inv\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)ip\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)max\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)min\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)mod\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)neg\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)relax\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)sign\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)sq\(\|rt\)\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)xroot\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)cos\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)sin\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)tan\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)tg\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)a\(\|rc\)cos\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)a\(\|rc\)sin\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)atan\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)arctg\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)cosh\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)sinh\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)tanh\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(\|arg\)th\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)arg[cst]h\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)log\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)ln\(\|1\)\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)exp\(\|m\)\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)trn\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)con\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)idn\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)rdm\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)rsd\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)cnrm\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)cross\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)d[eo]t\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)[cr]swp\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)rci\(j\|\)\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(in\|de\)cr\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)bessel\ze\($\|\s\+\)"
+
+syntax match rplIntrinsic "\(^\|\s\+\)\(\|g\)egvl\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(\|g\)\(\|l\|r\)egv\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)rnrm\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(std\|fix\|sci\|eng\)\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(rad\|deg\)\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(\|n\)rand\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)rdz\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(\|i\)fft\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(dec\|bin\|oct\|hex\)\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)rclf\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)stof\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)[cs]f\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)chr\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)num\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)pos\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)sub\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)size\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(st\|rc\)ws\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(r\|s\)\(r\|l\)\(\|b\)\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)as\(r\|l\)\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(int\|der\)\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)stos\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(\|r\)cls\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)drws\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)scls\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)ns\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)tot\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)mean\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)sdev\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)var\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)maxs\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)mins\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)cov\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)cols\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)s\(x\(\|y\|2\)\|y\(\|2\)\)\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(x\|y\)col\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)corr\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)utp[cfnt]\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)comb\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)perm\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)lu\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)[lu]chol\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)schur\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)%\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)%ch\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)%t\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)hms->\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)->hms\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)hms+\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)hms-\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)d->r\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)r->d\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)b->r\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)r->b\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)c->r\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)r->c\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)r->p\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)p->r\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)str->\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)->str\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)array->\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)->array\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)list->\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)->list\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)s+\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)s-\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)col-\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)col+\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)row-\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)row+\ze\($\|\s\+\)"
+syntax match rplIntrinsic "\(^\|\s\+\)->q\ze\($\|\s\+\)"
+
+syntax match rplObsolete "\(^\|\s\+\)arry->\ze\($\|\s\+\)"hs=e-5
+syntax match rplObsolete "\(^\|\s\+\)->arry\ze\($\|\s\+\)"hs=e-5
+
+" Conditional structures
+syntax match rplConditionalError "\(^\|\s\+\)case\ze\($\|\s\+\)"hs=e-3
+syntax match rplConditionalError "\(^\|\s\+\)then\ze\($\|\s\+\)"hs=e-3
+syntax match rplConditionalError "\(^\|\s\+\)else\ze\($\|\s\+\)"hs=e-3
+syntax match rplConditionalError "\(^\|\s\+\)elseif\ze\($\|\s\+\)"hs=e-5
+syntax match rplConditionalError "\(^\|\s\+\)end\ze\($\|\s\+\)"hs=e-2
+syntax match rplConditionalError "\(^\|\s\+\)\(step\|next\)\ze\($\|\s\+\)"hs=e-3
+syntax match rplConditionalError "\(^\|\s\+\)until\ze\($\|\s\+\)"hs=e-4
+syntax match rplConditionalError "\(^\|\s\+\)repeat\ze\($\|\s\+\)"hs=e-5
+syntax match rplConditionalError "\(^\|\s\+\)default\ze\($\|\s\+\)"hs=e-6
+
+" FOR/(CYCLE)/(EXIT)/NEXT
+" FOR/(CYCLE)/(EXIT)/STEP
+" START/(CYCLE)/(EXIT)/NEXT
+" START/(CYCLE)/(EXIT)/STEP
+syntax match rplCycle "\(^\|\s\+\)\(cycle\|exit\)\ze\($\|\s\+\)"
+syntax region rplForNext matchgroup=rplRepeat start="\(^\|\s\+\)\(for\|start\)\ze\($\|\s\+\)" end="\(^\|\s\+\)\(next\|step\)\ze\($\|\s\+\)" contains=ALL keepend extend
+
+" ELSEIF/END
+syntax region rplElseifEnd matchgroup=rplConditional start="\(^\|\s\+\)elseif\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained contains=ALLBUT,rplElseEnd keepend
+
+" ELSE/END
+syntax region rplElseEnd matchgroup=rplConditional start="\(^\|\s\+\)else\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained contains=ALLBUT,rplElseEnd,rplThenEnd,rplElseifEnd keepend
+
+" THEN/END
+syntax region rplThenEnd matchgroup=rplConditional start="\(^\|\s\+\)then\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained containedin=rplIfEnd contains=ALLBUT,rplThenEnd keepend
+
+" IF/END
+syntax region rplIfEnd matchgroup=rplConditional start="\(^\|\s\+\)if\(err\|\)\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplElseEnd,rplElseifEnd keepend extend
+" if end is accepted !
+" select end too !
+
+" CASE/THEN
+syntax region rplCaseThen matchgroup=rplConditional start="\(^\|\s\+\)case\ze\($\|\s\+\)" end="\(^\|\s\+\)then\ze\($\|\s\+\)" contains=ALLBUT,rplCaseThen,rplCaseEnd,rplThenEnd keepend extend contained containedin=rplCaseEnd
+
+" CASE/END
+syntax region rplCaseEnd matchgroup=rplConditional start="\(^\|\s\+\)case\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplCaseEnd,rplThenEnd,rplElseEnd keepend extend contained containedin=rplSelectEnd
+
+" DEFAULT/END
+syntax region rplDefaultEnd matchgroup=rplConditional start="\(^\|\s\+\)default\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplDefaultEnd keepend contained containedin=rplSelectEnd
+
+" SELECT/END
+syntax region rplSelectEnd matchgroup=rplConditional start="\(^\|\s\+\)select\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplThenEnd keepend extend
+" select end is accepted !
+
+" DO/UNTIL/END
+syntax region rplUntilEnd matchgroup=rplConditional start="\(^\|\s\+\)until\ze\($\|\s\+\)" end="\(^\|\s\+\)\zsend\ze\($\|\s\+\)" contains=ALLBUT,rplUntilEnd contained containedin=rplDoUntil extend keepend
+syntax region rplDoUntil matchgroup=rplConditional start="\(^\|\s\+\)do\ze\($\|\s\+\)" end="\(^\|\s\+\)until\ze\($\|\s\+\)" contains=ALL keepend extend
+
+" WHILE/REPEAT/END
+syntax region rplRepeatEnd matchgroup=rplConditional start="\(^\|\s\+\)repeat\ze\($\|\s\+\)" end="\(^\|\s\+\)\zsend\ze\($\|\s\+\)" contains=ALLBUT,rplRepeatEnd contained containedin=rplWhileRepeat extend keepend
+syntax region rplWhileRepeat matchgroup=rplConditional start="\(^\|\s\+\)while\ze\($\|\s\+\)" end="\(^\|\s\+\)repeat\ze\($\|\s\+\)" contains=ALL keepend extend
+
+" Comments
+syntax match rplCommentError "\*/"
+syntax region rplCommentString contained start=+"+ end=+"+ end=+\*/+me=s-1
+syntax region rplCommentLine start="\(^\|\s\+\)//\ze" skip="\\$" end="$" contains=NONE keepend extend
+syntax region rplComment start="\(^\|\s\+\)/\*\ze" end="\*/" contains=rplCommentString keepend extend
+
+" Catch errors caused by too many right parentheses
+syntax region rplParen transparent start="(" end=")" contains=ALLBUT,rplParenError,rplComplex,rplIncluded keepend extend
+syntax match rplParenError ")"
+
+" Subroutines
+" Catch errors caused by too many right '>>'
+syntax match rplSubError "\(^\|\s\+\)>>\ze\($\|\s\+\)"hs=e-1
+syntax region rplSub matchgroup=rplSubDelimitor start="\(^\|\s\+\)<<\ze\($\|\s\+\)" end="\(^\|\s\+\)>>\ze\($\|\s\+\)" contains=ALLBUT,rplSubError,rplIncluded,rplDefaultEnd,rplStorageSub keepend extend
+
+" Expressions
+syntax region rplExpr start="\(^\|\s\+\)'" end="'\ze\($\|\s\+\)" contains=rplParen,rplParenError
+
+" Local variables
+syntax match rplStorageError "\(^\|\s\+\)->\ze\($\|\s\+\)"hs=e-1
+syntax region rplStorageSub matchgroup=rplStorage start="\(^\|\s\+\)<<\ze\($\|\s\+\)" end="\(^\|\s\+\)>>\ze\($\|\s\+\)" contains=ALLBUT,rplSubError,rplIncluded,rplDefaultEnd,rplStorageExpr contained containedin=rplLocalStorage keepend extend
+syntax region rplStorageExpr matchgroup=rplStorage start="\(^\|\s\+\)'" end="'\ze\($\|\s\+\)" contains=rplParen,rplParenError extend contained containedin=rplLocalStorage
+syntax region rplLocalStorage matchgroup=rplStorage start="\(^\|\s\+\)->\ze\($\|\s\+\)" end="\(^\|\s\+\)\(<<\ze\($\|\s\+\)\|'\)" contains=rplStorageSub,rplStorageExpr,rplComment,rplCommentLine keepend extend
+
+" Catch errors caused by too many right brackets
+syntax match rplArrayError "\]"
+syntax match rplArray "\]" contained containedin=rplArray
+syntax region rplArray matchgroup=rplArray start="\[" end="\]" contains=ALLBUT,rplArrayError keepend extend
+
+" Catch errors caused by too many right '}'
+syntax match rplListError "}"
+syntax match rplList "}" contained containedin=rplList
+syntax region rplList matchgroup=rplList start="{" end="}" contains=ALLBUT,rplListError,rplIncluded keepend extend
+
+" cpp is used by RPL/2
+syntax match rplPreProc "\_^#\s*\(define\|undef\)\>"
+syntax match rplPreProc "\_^#\s*\(warning\|error\)\>"
+syntax match rplPreCondit "\_^#\s*\(if\|ifdef\|ifndef\|elif\|else\|endif\)\>"
+syntax match rplIncluded contained "\<<\s*\S*\s*>\>"
+syntax match rplInclude "\_^#\s*include\>\s*["<]" contains=rplIncluded,rplString
+"syntax match rplExecPath "\%^\_^#!\s*\S*"
+syntax match rplExecPath "\%^\_^#!\p*\_$"
+
+" Any integer
+syntax match rplInteger "\(^\|\s\+\)[-+]\=\d\+\ze\($\|\s\+\)"
+
+" Floating point number
+" [S][ip].[fp]
+syntax match rplFloat "\(^\|\s\+\)[-+]\=\(\d*\)\=[\.,]\(\d*\)\=\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign
+" [S]ip[.fp]E[S]exp
+syntax match rplFloat "\(^\|\s\+\)[-+]\=\d\+\([\.,]\d*\)\=[eE]\([-+]\)\=\d\+\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign
+" [S].fpE[S]exp
+syntax match rplFloat "\(^\|\s\+\)[-+]\=\(\d*\)\=[\.,]\d\+[eE]\([-+]\)\=\d\+\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign
+syntax match rplPoint "\<[\.,]\>"
+syntax match rplSign "\<[+-]\>"
+
+" Complex number
+" (x,y)
+syntax match rplComplex "\(^\|\s\+\)([-+]\=\(\d*\)\=\.\=\d*\([eE][-+]\=\d\+\)\=\s*,\s*[-+]\=\(\d*\)\=\.\=\d*\([eE][-+]\=\d\+\)\=)\ze\($\|\s\+\)"
+" (x.y)
+syntax match rplComplex "\(^\|\s\+\)([-+]\=\(\d*\)\=,\=\d*\([eE][-+]\=\d\+\)\=\s*\.\s*[-+]\=\(\d*\)\=,\=\d*\([eE][-+]\=\d\+\)\=)\ze\($\|\s\+\)"
+
+" Strings
+syntax match rplStringGuilles "\\\""
+syntax match rplStringAntislash "\\\\"
+syntax region rplString start=+\(^\|\s\+\)"+ end=+"\ze\($\|\s\+\)+ contains=rplStringGuilles,rplStringAntislash
+
+syntax match rplTab "\t" transparent
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default highlighting.
+
+hi def link rplControl Statement
+hi def link rplStatement Statement
+hi def link rplAlgConditional Conditional
+hi def link rplConditional Repeat
+hi def link rplConditionalError Error
+hi def link rplRepeat Repeat
+hi def link rplCycle Repeat
+hi def link rplUntil Repeat
+hi def link rplIntrinsic Special
+hi def link rplStorage StorageClass
+hi def link rplStorageExpr StorageClass
+hi def link rplStorageError Error
+hi def link rplReadWrite rplIntrinsic
+
+hi def link rplOperator Operator
+
+hi def link rplList Special
+hi def link rplArray Special
+hi def link rplConstant Identifier
+hi def link rplExpr Type
+
+hi def link rplString String
+hi def link rplStringGuilles String
+hi def link rplStringAntislash String
+
+hi def link rplBinary Boolean
+hi def link rplOctal Boolean
+hi def link rplDecimal Boolean
+hi def link rplHexadecimal Boolean
+hi def link rplInteger Number
+hi def link rplFloat Float
+hi def link rplComplex Float
+hi def link rplBoolean Identifier
+
+hi def link rplObsolete Todo
+
+hi def link rplPreCondit PreCondit
+hi def link rplInclude Include
+hi def link rplIncluded rplString
+hi def link rplInclude Include
+hi def link rplExecPath Include
+hi def link rplPreProc PreProc
+hi def link rplComment Comment
+hi def link rplCommentLine Comment
+hi def link rplCommentString Comment
+hi def link rplSubDelimitor rplStorage
+hi def link rplCommentError Error
+hi def link rplParenError Error
+hi def link rplSubError Error
+hi def link rplArrayError Error
+hi def link rplListError Error
+hi def link rplTab Error
+hi def link rplBinaryError Error
+hi def link rplOctalError Error
+hi def link rplDecimalError Error
+hi def link rplHexadecimalError Error
+
+
+let b:current_syntax = "rpl"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8 tw=132
diff --git a/runtime/syntax/rrst.vim b/runtime/syntax/rrst.vim
new file mode 100644
index 0000000..3a56342
--- /dev/null
+++ b/runtime/syntax/rrst.vim
@@ -0,0 +1,43 @@
+" reStructured Text with R statements
+" Language: reST with R code chunks
+" Maintainer: Alex Zvoleff, azvoleff@mail.sdsu.edu
+" Homepage: https://github.com/jalvesaq/R-Vim-runtime
+" Last Change: Thu Apr 05, 2018 11:06PM
+"
+" CONFIGURATION:
+" To highlight chunk headers as R code, put in your vimrc:
+" let rrst_syn_hl_chunk = 1
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" load all of the rst info
+runtime syntax/rst.vim
+unlet! b:current_syntax
+
+" load all of the r syntax highlighting rules into @R
+syntax include @R syntax/r.vim
+
+" highlight R chunks
+if exists("g:rrst_syn_hl_chunk")
+ " highlight R code inside chunk header
+ syntax match rrstChunkDelim "^\.\. {r" contained
+ syntax match rrstChunkDelim "}$" contained
+else
+ syntax match rrstChunkDelim "^\.\. {r .*}$" contained
+endif
+syntax match rrstChunkDelim "^\.\. \.\.$" contained
+syntax region rrstChunk start="^\.\. {r.*}$" end="^\.\. \.\.$" contains=@R,rrstChunkDelim keepend transparent fold
+
+" also highlight in-line R code
+syntax match rrstInlineDelim "`" contained
+syntax match rrstInlineDelim ":r:" contained
+syntax region rrstInline start=":r: *`" skip=/\\\\\|\\`/ end="`" contains=@R,rrstInlineDelim keepend
+
+hi def link rrstChunkDelim Special
+hi def link rrstInlineDelim Special
+
+let b:current_syntax = "rrst"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/rst.vim b/runtime/syntax/rst.vim
new file mode 100644
index 0000000..a90c90b
--- /dev/null
+++ b/runtime/syntax/rst.vim
@@ -0,0 +1,290 @@
+" Vim reST syntax file
+" Language: reStructuredText documentation format
+" Maintainer: Marshall Ward <marshall.ward@gmail.com>
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Website: https://github.com/marshallward/vim-restructuredtext
+" Latest Revision: 2020-03-31
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case ignore
+
+syn match rstTransition /^[=`:.'"~^_*+#-]\{4,}\s*$/
+
+syn cluster rstCruft contains=rstEmphasis,rstStrongEmphasis,
+ \ rstInterpretedText,rstInlineLiteral,rstSubstitutionReference,
+ \ rstInlineInternalTargets,rstFootnoteReference,rstHyperlinkReference
+
+syn region rstLiteralBlock matchgroup=rstDelimiter
+ \ start='\(^\z(\s*\).*\)\@<=::\n\s*\n' skip='^\s*$' end='^\(\z1\s\+\)\@!'
+ \ contains=@NoSpell
+
+syn region rstQuotedLiteralBlock matchgroup=rstDelimiter
+ \ start="::\_s*\n\ze\z([!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]\)"
+ \ end='^\z1\@!' contains=@NoSpell
+
+syn region rstDoctestBlock oneline display matchgroup=rstDelimiter
+ \ start='^>>>\s' end='^$'
+
+syn region rstTable transparent start='^\n\s*+[-=+]\+' end='^$'
+ \ contains=rstTableLines,@rstCruft
+syn match rstTableLines contained display '|\|+\%(=\+\|-\+\)\='
+
+syn region rstSimpleTable transparent
+ \ start='^\n\%(\s*\)\@>\%(\%(=\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(=\+\)\@>\%(\s*\)\@>\)\+\)\@>$'
+ \ end='^$'
+ \ contains=rstSimpleTableLines,@rstCruft
+syn match rstSimpleTableLines contained display
+ \ '^\%(\s*\)\@>\%(\%(=\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(=\+\)\@>\%(\s*\)\@>\)\+\)\@>$'
+syn match rstSimpleTableLines contained display
+ \ '^\%(\s*\)\@>\%(\%(-\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(-\+\)\@>\%(\s*\)\@>\)\+\)\@>$'
+
+syn cluster rstDirectives contains=rstFootnote,rstCitation,
+ \ rstHyperlinkTarget,rstExDirective
+
+syn match rstExplicitMarkup '^\s*\.\.\_s'
+ \ nextgroup=@rstDirectives,rstComment,rstSubstitutionDefinition
+
+" "Simple reference names are single words consisting of alphanumerics plus
+" isolated (no two adjacent) internal hyphens, underscores, periods, colons
+" and plus signs."
+let s:ReferenceName = '[[:alnum:]]\%([-_.:+]\?[[:alnum:]]\+\)*'
+
+syn keyword rstTodo contained FIXME TODO XXX NOTE
+
+execute 'syn region rstComment contained' .
+ \ ' start=/.*/'
+ \ ' skip=+^$+' .
+ \ ' end=/^\s\@!/ contains=rstTodo'
+
+execute 'syn region rstFootnote contained matchgroup=rstDirective' .
+ \ ' start=+\[\%(\d\+\|#\%(' . s:ReferenceName . '\)\=\|\*\)\]\_s+' .
+ \ ' skip=+^$+' .
+ \ ' end=+^\s\@!+ contains=@rstCruft,@NoSpell'
+
+execute 'syn region rstCitation contained matchgroup=rstDirective' .
+ \ ' start=+\[' . s:ReferenceName . '\]\_s+' .
+ \ ' skip=+^$+' .
+ \ ' end=+^\s\@!+ contains=@rstCruft,@NoSpell'
+
+syn region rstHyperlinkTarget contained matchgroup=rstDirective
+ \ start='_\%(_\|[^:\\]*\%(\\.[^:\\]*\)*\):\_s' skip=+^$+ end=+^\s\@!+
+
+syn region rstHyperlinkTarget contained matchgroup=rstDirective
+ \ start='_`[^`\\]*\%(\\.[^`\\]*\)*`:\_s' skip=+^$+ end=+^\s\@!+
+
+syn region rstHyperlinkTarget matchgroup=rstDirective
+ \ start=+^__\_s+ skip=+^$+ end=+^\s\@!+
+
+execute 'syn region rstExDirective contained matchgroup=rstDirective' .
+ \ ' start=+' . s:ReferenceName . '::\_s+' .
+ \ ' skip=+^$+' .
+ \ ' end=+^\s\@!+ contains=@rstCruft,rstLiteralBlock'
+
+execute 'syn match rstSubstitutionDefinition contained' .
+ \ ' /|.*|\_s\+/ nextgroup=@rstDirectives'
+
+function! s:DefineOneInlineMarkup(name, start, middle, end, char_left, char_right)
+ " Only escape the first char of a multichar delimiter (e.g. \* inside **)
+ if a:start[0] == '\'
+ let first = a:start[0:1]
+ else
+ let first = a:start[0]
+ endif
+
+ execute 'syn match rstEscape'.a:name.' +\\\\\|\\'.first.'+'.' contained'
+
+ execute 'syn region rst' . a:name .
+ \ ' start=+' . a:char_left . '\zs' . a:start .
+ \ '\ze[^[:space:]' . a:char_right . a:start[strlen(a:start) - 1] . ']+' .
+ \ a:middle .
+ \ ' end=+' . a:end . '\ze\%($\|\s\|[''"’)\]}>/:.,;!?\\-]\)+' .
+ \ ' contains=rstEscape' . a:name
+
+ execute 'hi def link rstEscape'.a:name.' Special'
+endfunction
+
+function! s:DefineInlineMarkup(name, start, middle, end)
+ let middle = a:middle != "" ?
+ \ (' skip=+\\\\\|\\' . a:middle . '\|\s' . a:middle . '+') :
+ \ ""
+
+ call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, "'", "'")
+ call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '"', '"')
+ call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '(', ')')
+ call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '\[', '\]')
+ call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '{', '}')
+ call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '<', '>')
+ call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '’', '’')
+ " TODO: Additional Unicode Pd, Po, Pi, Pf, Ps characters
+
+ call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '\%(^\|\s\|\%ua0\|[/:]\)', '')
+
+ execute 'syn match rst' . a:name .
+ \ ' +\%(^\|\s\|\%ua0\|[''"([{</:]\)\zs' . a:start .
+ \ '[^[:space:]' . a:start[strlen(a:start) - 1] . ']'
+ \ a:end . '\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)+'
+
+ execute 'hi def link rst' . a:name . 'Delimiter' . ' rst' . a:name
+endfunction
+
+call s:DefineInlineMarkup('Emphasis', '\*', '\*', '\*')
+call s:DefineInlineMarkup('StrongEmphasis', '\*\*', '\*', '\*\*')
+call s:DefineInlineMarkup('InterpretedTextOrHyperlinkReference', '`', '`', '`_\{0,2}')
+call s:DefineInlineMarkup('InlineLiteral', '``', "", '``')
+call s:DefineInlineMarkup('SubstitutionReference', '|', '|', '|_\{0,2}')
+call s:DefineInlineMarkup('InlineInternalTargets', '_`', '`', '`')
+
+" Sections are identified through their titles, which are marked up with
+" adornment: "underlines" below the title text, or underlines and matching
+" "overlines" above the title. An underline/overline is a single repeated
+" punctuation character that begins in column 1 and forms a line extending at
+" least as far as the right edge of the title text.
+"
+" It is difficult to count characters in a regex, but we at least special-case
+" the case where the title has at least three characters to require the
+" adornment to have at least three characters as well, in order to handle
+" properly the case of a literal block:
+"
+" this is the end of a paragraph
+" ::
+" this is a literal block
+syn match rstSections "\v^%(([=`:.'"~^_*+#-])\1+\n)?.{1,2}\n([=`:.'"~^_*+#-])\2+$"
+ \ contains=@Spell
+syn match rstSections "\v^%(([=`:.'"~^_*+#-])\1{2,}\n)?.{3,}\n([=`:.'"~^_*+#-])\2{2,}$"
+ \ contains=@Spell
+
+" TODO: Can’t remember why these two can’t be defined like the ones above.
+execute 'syn match rstFootnoteReference contains=@NoSpell' .
+ \ ' +\%(\s\|^\)\[\%(\d\+\|#\%(' . s:ReferenceName . '\)\=\|\*\)\]_+'
+
+execute 'syn match rstCitationReference contains=@NoSpell' .
+ \ ' +\%(\s\|^\)\[' . s:ReferenceName . '\]_\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)+'
+
+execute 'syn match rstHyperlinkReference' .
+ \ ' /\<' . s:ReferenceName . '__\=\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)/'
+
+syn match rstStandaloneHyperlink contains=@NoSpell
+ \ "\<\%(\%(\%(https\=\|file\|ftp\|gopher\)://\|\%(mailto\|news\):\)[^[:space:]'\"<>]\+\|www[[:alnum:]_-]*\.[[:alnum:]_-]\+\.[^[:space:]'\"<>]\+\)[[:alnum:]/]"
+
+syn region rstCodeBlock contained matchgroup=rstDirective
+ \ start=+\%(sourcecode\|code\%(-block\)\=\)::\s*\(\S*\)\?\s*\n\%(\s*:.*:\s*.*\s*\n\)*\n\ze\z(\s\+\)+
+ \ skip=+^$+
+ \ end=+^\z1\@!+
+ \ contains=@NoSpell
+syn cluster rstDirectives add=rstCodeBlock
+
+if !exists('g:rst_syntax_code_list')
+ " A mapping from a Vim filetype to a list of alias patterns (pattern
+ " branches to be specific, see ':help /pattern'). E.g. given:
+ "
+ " let g:rst_syntax_code_list = {
+ " \ 'cpp': ['cpp', 'c++'],
+ " \ }
+ "
+ " then the respective contents of the following two rST directives:
+ "
+ " .. code:: cpp
+ "
+ " auto i = 42;
+ "
+ " .. code:: C++
+ "
+ " auto i = 42;
+ "
+ " will both be highlighted as C++ code. As shown by the latter block
+ " pattern matching will be case-insensitive.
+ let g:rst_syntax_code_list = {
+ \ 'vim': ['vim'],
+ \ 'java': ['java'],
+ \ 'cpp': ['cpp', 'c++'],
+ \ 'lisp': ['lisp'],
+ \ 'php': ['php'],
+ \ 'python': ['python'],
+ \ 'perl': ['perl'],
+ \ 'sh': ['sh'],
+ \ }
+elseif type(g:rst_syntax_code_list) == type([])
+ " backward compatibility with former list format
+ let s:old_spec = g:rst_syntax_code_list
+ let g:rst_syntax_code_list = {}
+ for s:elem in s:old_spec
+ let g:rst_syntax_code_list[s:elem] = [s:elem]
+ endfor
+endif
+
+for s:filetype in keys(g:rst_syntax_code_list)
+ unlet! b:current_syntax
+ " guard against setting 'isk' option which might cause problems (issue #108)
+ let prior_isk = &l:iskeyword
+ let s:alias_pattern = ''
+ \.'\%('
+ \.join(g:rst_syntax_code_list[s:filetype], '\|')
+ \.'\)'
+
+ exe 'syn include @rst'.s:filetype.' syntax/'.s:filetype.'.vim'
+ exe 'syn region rstDirective'.s:filetype
+ \.' matchgroup=rstDirective fold'
+ \.' start="\c\%(sourcecode\|code\%(-block\)\=\)::\s\+'.s:alias_pattern.'\_s*\n\ze\z(\s\+\)"'
+ \.' skip=#^$#'
+ \.' end=#^\z1\@!#'
+ \.' contains=@NoSpell,@rst'.s:filetype
+ exe 'syn cluster rstDirectives add=rstDirective'.s:filetype
+
+ " reset 'isk' setting, if it has been changed
+ if &l:iskeyword !=# prior_isk
+ let &l:iskeyword = prior_isk
+ endif
+ unlet! prior_isk
+endfor
+
+" Enable top level spell checking
+syntax spell toplevel
+
+" TODO: Use better syncing.
+syn sync minlines=50 linebreaks=2
+
+hi def link rstTodo Todo
+hi def link rstComment Comment
+hi def link rstSections Title
+hi def link rstTransition rstSections
+hi def link rstLiteralBlock String
+hi def link rstQuotedLiteralBlock String
+hi def link rstDoctestBlock PreProc
+hi def link rstTableLines rstDelimiter
+hi def link rstSimpleTableLines rstTableLines
+hi def link rstExplicitMarkup rstDirective
+hi def link rstDirective Keyword
+hi def link rstFootnote String
+hi def link rstCitation String
+hi def link rstHyperlinkTarget String
+hi def link rstExDirective String
+hi def link rstSubstitutionDefinition rstDirective
+hi def link rstDelimiter Delimiter
+hi def link rstInterpretedTextOrHyperlinkReference Identifier
+hi def link rstInlineLiteral String
+hi def link rstSubstitutionReference PreProc
+hi def link rstInlineInternalTargets Identifier
+hi def link rstFootnoteReference Identifier
+hi def link rstCitationReference Identifier
+hi def link rstHyperLinkReference Identifier
+hi def link rstStandaloneHyperlink Identifier
+hi def link rstCodeBlock String
+if exists('g:rst_use_emphasis_colors')
+ " TODO: Less arbitrary color selection
+ hi def rstEmphasis ctermfg=13 term=italic cterm=italic gui=italic
+ hi def rstStrongEmphasis ctermfg=1 term=bold cterm=bold gui=bold
+else
+ hi def rstEmphasis term=italic cterm=italic gui=italic
+ hi def rstStrongEmphasis term=bold cterm=bold gui=bold
+endif
+
+let b:current_syntax = "rst"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/rtf.vim b/runtime/syntax/rtf.vim
new file mode 100644
index 0000000..f8e031b
--- /dev/null
+++ b/runtime/syntax/rtf.vim
@@ -0,0 +1,75 @@
+" Vim syntax file
+" Language: Rich Text Format
+" "*.rtf" files
+"
+" The Rich Text Format (RTF) Specification is a method of encoding formatted
+" text and graphics for easy transfer between applications.
+" .hlp (windows help files) use compiled rtf files
+" rtf documentation at http://night.primate.wisc.edu/software/RTF/
+"
+" Maintainer: Dominique Stéphan (dominique@mggen.com)
+" URL: http://www.mggen.com/vim/syntax/rtf.zip
+" Last change: 2001 Mai 02
+
+" TODO: render underline, italic, bold
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" case on (all controls must be lower case)
+syn case match
+
+" Control Words
+syn match rtfControlWord "\\[a-z]\+[\-]\=[0-9]*"
+
+" New Control Words (not in the 1987 specifications)
+syn match rtfNewControlWord "\\\*\\[a-z]\+[\-]\=[0-9]*"
+
+" Control Symbol : any \ plus a non alpha symbol, *, \, { and } and '
+syn match rtfControlSymbol "\\[^a-zA-Z\*\{\}\\']"
+
+" { } and \ are special characters, to use them
+" we add a backslash \
+syn match rtfCharacter "\\\\"
+syn match rtfCharacter "\\{"
+syn match rtfCharacter "\\}"
+" Escaped characters (for 8 bytes characters upper than 127)
+syn match rtfCharacter "\\'[A-Za-z0-9][A-Za-z0-9]"
+" Unicode
+syn match rtfUnicodeCharacter "\\u[0-9][0-9]*"
+
+" Color values, we will put this value in Red, Green or Blue
+syn match rtfRed "\\red[0-9][0-9]*"
+syn match rtfGreen "\\green[0-9][0-9]*"
+syn match rtfBlue "\\blue[0-9][0-9]*"
+
+" Some stuff for help files
+syn match rtfFootNote "[#$K+]{\\footnote.*}" contains=rtfControlWord,rtfNewControlWord
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+
+hi def link rtfControlWord Statement
+hi def link rtfNewControlWord Special
+hi def link rtfControlSymbol Constant
+hi def link rtfCharacter Character
+hi def link rtfUnicodeCharacter SpecialChar
+hi def link rtfFootNote Comment
+
+" Define colors for the syntax file
+hi rtfRed term=underline cterm=underline ctermfg=DarkRed gui=underline guifg=DarkRed
+hi rtfGreen term=underline cterm=underline ctermfg=DarkGreen gui=underline guifg=DarkGreen
+hi rtfBlue term=underline cterm=underline ctermfg=DarkBlue gui=underline guifg=DarkBlue
+
+hi def link rtfRed rtfRed
+hi def link rtfGreen rtfGreen
+hi def link rtfBlue rtfBlue
+
+
+
+let b:current_syntax = "rtf"
+
+" vim:ts=8
diff --git a/runtime/syntax/ruby.vim b/runtime/syntax/ruby.vim
new file mode 100644
index 0000000..c951fcf
--- /dev/null
+++ b/runtime/syntax/ruby.vim
@@ -0,0 +1,606 @@
+" 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>
+" Last Change: 2021 Nov 03
+" ----------------------------------------------------------------------------
+"
+" 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
+
+" eRuby Config {{{1
+if exists('main_syntax') && main_syntax == 'eruby'
+ let b:ruby_no_expensive = 1
+endif
+
+" 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, 'NONE') > -1
+ return 0
+ endif
+
+ 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
+
+function! s:run_syntax_fold(args) abort
+ let [_0, _1, groups, cmd; _] = matchlist(a:args, '\(["'']\)\(.\{-}\)\1\s\+\(.*\)')
+ if call('s:foldable', split(groups))
+ let cmd .= ' fold'
+ endif
+ exe cmd
+endfunction
+
+com! -nargs=* SynFold call s:run_syntax_fold(<q-args>)
+
+" Not-Top Cluster {{{1
+syn cluster rubyNotTop contains=@rubyCommentNotTop,@rubyStringNotTop,@rubyRegexpSpecial,@rubyDeclaration,@rubyExceptionHandler,@rubyClassOperator,rubyConditional,rubyModuleName,rubyClassName,rubySymbolDelimiter,rubyDoubleQuoteSymbolDelimiter,rubySingleQuoteSymbolDelimiter,rubyParentheses,@Spell
+
+" 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
+
+syn match rubyEnglishBooleanOperator "\<\%(and\|or\|not\)\>"
+
+if exists("ruby_operators") || exists("ruby_pseudo_operators")
+ syn match rubyDotOperator "\.\|&\."
+
+ syn match rubyTernaryOperator "\%(\w\|[^\x00-\x7F]\)\@1<!?\|:"
+ syn match rubyArithmeticOperator "\*\*\|[*/%+]\|->\@!"
+ syn match rubyComparisonOperator "<=>\|<=\|<\|>=\|[-=]\@1<!>"
+ syn match rubyBitwiseOperator "[~^|]\|&\.\@!\|<<\|>>"
+ syn match rubyBooleanOperator "\%(\w\|[^\x00-\x7F]\)\@1<!!\|&&\|||"
+ syn match rubyRangeOperator "\.\.\.\="
+ syn match rubyAssignmentOperator "=>\@!\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|||=\||=\|%=\|+=\|>>=\|<<=\|\^="
+ syn match rubyAssignmentOperator "=>\@!" contained containedin=rubyBlockParameterList " TODO: this is inelegant
+ syn match rubyEqualityOperator "===\|==\|!=\|!\~\|=\~"
+
+ syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\%(\w\|[^\x00-\x7F]\)[?!]\=\|[]})]\)\@2<=\[" end="]" contains=ALLBUT,@rubyNotTop
+
+ syn match rubyScopeOperator "::"
+ syn match rubySuperClassOperator "<" contained
+ syn match rubyEigenClassOperator "<<" contained
+ syn match rubyLambdaOperator "->"
+ syn match rubySplatOperator "\%([[{(|,=]\_s*\)\@<=\*"
+ syn match rubySplatOperator "\%(^\|\s\)\@1<=\*\%(\h\|[^\x00-\x7F]\|[:$@[]\)\@="
+ syn match rubyDoubleSplatOperator "\%([{(|,]\_s*\)\@<=\*\*"
+ syn match rubyDoubleSplatOperator "\s\@1<=\*\*\%(\h\|[^\x00-\x7F]\|[:$@{]\)\@="
+ syn match rubyProcOperator "\%([[(|,]\_s*\)\@<=&"
+ syn match rubyProcOperator "\s\@1<=&\%(\h\|[^\x00-\x7F]\|[:$@]\|->\)\@="
+
+ syn cluster rubyProperOperator contains=rubyTernaryOperator,rubyArithmeticOperator,rubyComparisonOperator,rubyBitwiseOperator,rubyBooleanOperator,rubyRangeOperator,rubyAssignmentOperator,rubyEqualityOperator,rubyDefinedOperator,rubyEnglishBooleanOperator
+ syn cluster rubyClassOperator contains=rubyEigenClassOperator,rubySuperClassOperator
+ syn cluster rubyPseudoOperator contains=rubyDotOperator,rubyScopeOperator,rubyEigenClassOperator,rubySuperClassOperator,rubyLambdaOperator,rubySplatOperator,rubyDoubleSplatOperator,rubyProcOperator
+ syn cluster rubyOperator contains=ruby.*Operator
+endif
+
+" String Interpolation and Backslash Notation {{{1
+syn region rubyInterpolation matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,@rubyNotTop
+syn match rubyInterpolation "#\$\%(-\w\|[!$&"'*+,./0:;<>?@\`~_]\|\w\+\)" display contained contains=rubyInterpolationDelimiter,@rubyGlobalVariable
+syn match rubyInterpolation "#@@\=\w\+" display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable
+syn match rubyInterpolationDelimiter "#\ze[$@]" display contained
+
+syn match rubyStringEscape "\\\_." contained display
+syn match rubyStringEscape "\\\o\{1,3}\|\\x\x\{1,2}" contained display
+syn match rubyStringEscape "\\u\%(\x\{4}\|{\x\{1,6}\%(\s\+\x\{1,6}\)*}\)" contained display
+syn match rubyStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=.\)" contained display
+
+syn match rubyBackslashEscape "\\\\" contained display
+syn match rubyQuoteEscape "\\'" contained display
+syn match rubySpaceEscape "\\ " contained display
+
+syn match rubyParenthesisEscape "\\[()]" contained display
+syn match rubyCurlyBraceEscape "\\[{}]" contained display
+syn match rubyAngleBracketEscape "\\[<>]" contained display
+syn match rubySquareBracketEscape "\\[[\]]" contained display
+
+syn region rubyNestedParentheses start="(" skip="\\\\\|\\)" end=")" transparent contained
+syn region rubyNestedCurlyBraces start="{" skip="\\\\\|\\}" end="}" transparent contained
+syn region rubyNestedAngleBrackets start="<" skip="\\\\\|\\>" end=">" transparent contained
+syn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" end="\]" transparent contained
+
+syn cluster rubySingleCharEscape contains=rubyBackslashEscape,rubyQuoteEscape,rubySpaceEscape,rubyParenthesisEscape,rubyCurlyBraceEscape,rubyAngleBracketEscape,rubySquareBracketEscape
+syn cluster rubyNestedBrackets contains=rubyNested.\+
+syn cluster rubyStringSpecial contains=rubyInterpolation,rubyStringEscape
+syn cluster rubyStringNotTop contains=@rubyStringSpecial,@rubyNestedBrackets,@rubySingleCharEscape
+
+" Regular Expression Metacharacters {{{1
+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=rubyRegexpBrackets,rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass,rubyRegexpIntersection oneline
+syn match rubyRegexpCharClass "\\[DdHhRSsWw]" contained display
+syn match rubyRegexpCharClass "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|word\|xdigit\):\]" contained
+syn match rubyRegexpCharClass "\\[pP]{^\=.\{-}}" contained display
+syn match rubyRegexpEscape "\\[].*?+^$|\\/(){}[]" contained " see commit e477f10
+syn match rubyRegexpQuantifier "[*?+][?+]\=" contained display
+syn match rubyRegexpQuantifier "{\d\+\%(,\d*\)\=}?\=" contained display
+syn match rubyRegexpAnchor "[$^]\|\\[ABbGZz]" contained display
+syn match rubyRegexpDot "\.\|\\X" contained display
+syn match rubyRegexpIntersection "&&" contained display
+syn match rubyRegexpSpecial "\\K" 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 rubyRegexpSpecial contains=@rubyStringSpecial,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment,rubyRegexpIntersection
+
+" Numbers {{{1
+syn match rubyInteger "\%(\%(\w\|[^\x00-\x7F]\|[]})\"']\s*\)\@<!-\)\=\<0[xX]\x\+\%(_\x\+\)*r\=i\=\>" display
+syn match rubyInteger "\%(\%(\w\|[^\x00-\x7F]\|[]})\"']\s*\)\@<!-\)\=\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)r\=i\=\>" display
+syn match rubyInteger "\%(\%(\w\|[^\x00-\x7F]\|[]})\"']\s*\)\@<!-\)\=\<0[oO]\=\o\+\%(_\o\+\)*r\=i\=\>" display
+syn match rubyInteger "\%(\%(\w\|[^\x00-\x7F]\|[]})\"']\s*\)\@<!-\)\=\<0[bB][01]\+\%(_[01]\+\)*r\=i\=\>" display
+syn match rubyFloat "\%(\%(\w\|[^\x00-\x7F]\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*r\=i\=\>" display
+syn match rubyFloat "\%(\%(\w\|[^\x00-\x7F]\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)i\=\>" display
+
+" Identifiers {{{1
+syn match rubyClassName "\%(\%(^\|[^.]\)\.\s*\)\@<!\<[[:upper:]]\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" contained
+syn match rubyModuleName "\%(\%(^\|[^.]\)\.\s*\)\@<!\<[[:upper:]]\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" contained
+syn match rubyConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<[[:upper:]]\%(\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 rubySymbolDelimiter ":" contained
+syn match rubySymbol "[]})\"':]\@1<!:\%(\^\|\~@\|\~\|<<\|<=>\|<=\|<\|===\|[=!]=\|[=!]\~\|!@\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" contains=rubySymbolDelimiter
+syn match rubySymbol "[]})\"':]\@1<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)" contains=rubySymbolDelimiter
+syn match rubySymbol "[]})\"':]\@1<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" contains=rubySymbolDelimiter
+syn match rubySymbol "[]})\"':]\@1<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\=" contains=rubySymbolDelimiter
+
+SynFold ':' syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape,rubyBackslashEscape
+SynFold ':' syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial
+
+syn match rubyCapitalizedMethod "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@="
+
+syn region rubyParentheses start="(" end=")" contains=ALLBUT,@rubyNotTop contained containedin=rubyBlockParameterList
+syn region rubyBlockParameterList start="\%(\%(\<do\>\|{\)\_s*\)\@32<=|" end="|" contains=ALLBUT,@rubyNotTop,@rubyProperOperator
+
+if exists('ruby_global_variable_error')
+ syn match rubyGlobalVariableError "$[^A-Za-z_]" display
+ syn match rubyGlobalVariableError "$-[^0FIKWadilpvw]" display
+endif
+
+syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<>?@\`~]#
+syn match rubyPredefinedVariable "$\d\+" display
+syn match rubyPredefinedVariable "$_\>" display
+syn match rubyPredefinedVariable "$-[0FIWadilpvw]\>" display
+syn match rubyPredefinedVariable "$\%(stderr\|stdin\|stdout\)\>" display
+syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display
+syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(ARGF\|ARGV\|ENV\|DATA\|STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\)\>\%(\s*(\)\@!"
+syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(RUBY_\%(VERSION\|RELEASE_DATE\|PLATFORM\|PATCHLEVEL\|REVISION\|DESCRIPTION\|COPYRIGHT\|ENGINE\)\)\>\%(\s*(\)\@!"
+
+" Deprecated/removed in 1.9
+syn match rubyPredefinedVariable "$="
+syn match rubyPredefinedVariable "$-K\>" display
+syn match rubyPredefinedVariable "$\%(deferr\|defout\)\>" display
+syn match rubyPredefinedVariable "$KCODE\>" display
+" Deprecated/removed in 2.4
+syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(FALSE\|NIL\|TRUE\)\>\%(\s*(\)\@!"
+
+syn cluster rubyGlobalVariable contains=rubyGlobalVariable,rubyPredefinedVariable,rubyGlobalVariableError
+
+" Normal Regular Expressions {{{1
+SynFold '/' syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial nextgroup=@rubyModifier skipwhite
+SynFold '/' syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\s\+\)\@<=/\%(=\|\_s\)\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial nextgroup=@rubyModifier skipwhite
+
+" Generalized Regular Expressions {{{1
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial nextgroup=@rubyModifier skipwhite
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial
+
+" Characters {{{1
+syn match rubyCharacter "\%(\w\|[^\x00-\x7F]\|[]})\"'/]\)\@1<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\[[:space:]]\|\\\=[^[:space:]]\)\)"
+syn match rubyCharacter "\%(\w\|[^\x00-\x7F]\|[]})\"'/]\)\@1<!?\\u\%(\x\{4}\|{\x\{1,6}}\)"
+
+" Normal Strings {{{1
+let s:spell_cluster = exists('ruby_spellcheck_strings') ? ',@Spell' : ''
+let s:fold_arg = s:foldable('string') ? ' fold' : ''
+exe 'syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial' . s:spell_cluster . s:fold_arg
+exe 'syn region rubyString matchgroup=rubyStringDelimiter start="''" end="''" skip="\\\\\|\\''" contains=rubyQuoteEscape,rubyBackslashEscape' . s:spell_cluster . s:fold_arg
+unlet s:spell_cluster s:fold_arg
+
+" Shell Command Output {{{1
+SynFold 'string' syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial
+
+" Generalized Single Quoted Strings, Symbols, Array of Strings and Array of Symbols {{{1
+
+" Non-bracket punctuation delimiters {{{2
+let s:names = { '~': 'Tilde', '`': 'BackQuote', '!': 'Bang', '@': 'At', '#': 'Hash', '$': 'Dollar', '%': 'Percent', '^': 'Caret',
+ \ '&': 'Ampersand', '*': 'Asterix', '_': 'Underscore', '-': 'Dash', '+': 'Plus', '=': 'Equals', '|': 'Bar',
+ \ '\': 'Backslash', ':': 'Colon', ';': 'Semicolon', '"': 'DoubleQuote', "'": 'Quote', ',': 'Comma', '.': 'Period',
+ \ '?': 'QuestionMark', '/': 'ForwardSlash' }
+
+for s:delimiter in keys(s:names)
+ let s:group = 'ruby' . s:names[s:delimiter] . 'Escape'
+
+ if s:delimiter =~ '[\"]'
+ let s:delimiter = '\' . s:delimiter
+ endif
+
+ exe 'syn match ' . s:group . ' "\V\\' . s:delimiter . '" contained display'
+ exe 'syn cluster rubySingleCharEscape add=' . s:group
+ exe 'SynFold ''%'' syn region rubyString matchgroup=rubyPercentStringDelimiter start="\V%q' . s:delimiter . '" end="\V' . s:delimiter . '" skip="\V\\\\\|\\' . s:delimiter . '" contains=rubyBackslashEscape,' . s:group . ' nextgroup=@rubyModifier skipwhite'
+ exe 'SynFold ''%'' syn region rubyString matchgroup=rubyPercentStringDelimiter start="\V%w' . s:delimiter . '" end="\V' . s:delimiter . '" skip="\V\\\\\|\\' . s:delimiter . '" contains=rubyBackslashEscape,rubySpaceEscape,' . s:group . ' nextgroup=@rubyModifier skipwhite'
+ exe 'SynFold ''%'' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="\V%s' . s:delimiter . '" end="\V' . s:delimiter . '" skip="\V\\\\\|\\' . s:delimiter . '" contains=rubyBackslashEscape,' . s:group . ' nextgroup=@rubyModifier skipwhite'
+ exe 'SynFold ''%'' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="\V%i' . s:delimiter . '" end="\V' . s:delimiter . '" skip="\V\\\\\|\\' . s:delimiter . '" contains=rubyBackslashEscape,rubySpaceEscape,' . s:group . ' nextgroup=@rubyModifier skipwhite'
+ exe 'hi def link ' . s:group . ' rubyStringEscape'
+endfor
+
+unlet s:delimiter s:group s:names
+" }}}2
+
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q{" end="}" skip="\\\\\|\\}" contains=rubyBackslashEscape,rubyCurlyBraceEscape,rubyNestedCurlyBraces
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q<" end=">" skip="\\\\\|\\>" contains=rubyBackslashEscape,rubyAngleBracketEscape,rubyNestedAngleBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q\[" end="\]" skip="\\\\\|\\\]" contains=rubyBackslashEscape,rubySquareBracketEscape,rubyNestedSquareBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q(" end=")" skip="\\\\\|\\)" contains=rubyBackslashEscape,rubyParenthesisEscape,rubyNestedParentheses
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=rubyBackslashEscape,rubySpaceEscape
+
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%w{" end="}" skip="\\\\\|\\}" contains=rubyBackslashEscape,rubySpaceEscape,rubyCurlyBraceEscape,rubyNestedCurlyBraces
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%w<" end=">" skip="\\\\\|\\>" contains=rubyBackslashEscape,rubySpaceEscape,rubyAngleBracketEscape,rubyNestedAngleBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%w\[" end="\]" skip="\\\\\|\\\]" contains=rubyBackslashEscape,rubySpaceEscape,rubySquareBracketEscape,rubyNestedSquareBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%w(" end=")" skip="\\\\\|\\)" contains=rubyBackslashEscape,rubySpaceEscape,rubyParenthesisEscape,rubyNestedParentheses
+
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" contains=rubyBackslashEscape,rubyCurlyBraceEscape,rubyNestedCurlyBraces
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" contains=rubyBackslashEscape,rubyAngleBracketEscape,rubyNestedAngleBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" contains=rubyBackslashEscape,rubySquareBracketEscape,rubyNestedSquareBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" contains=rubyBackslashEscape,rubyParenthesisEscape,rubyNestedParentheses
+SynFold '%' syn region rubyString matchgroup=rubyPercentSymbolDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=rubyBackslashEscape,rubySpaceEscape
+
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" contains=rubyBackslashEscape,rubySpaceEscape,rubyCurlyBraceEscape,rubyNestedCurlyBraces
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" contains=rubyBackslashEscape,rubySpaceEscape,rubyAngleBracketEscape,rubyNestedAngleBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" contains=rubyBackslashEscape,rubySpaceEscape,rubySquareBracketEscape,rubyNestedSquareBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" contains=rubyBackslashEscape,rubySpaceEscape,rubyParenthesisEscape,rubyNestedParentheses
+
+" Generalized Double Quoted Strings, Array of Strings, Array of Symbols and Shell Command Output {{{1
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="\%(\%(\w\|[^\x00-\x7F]\|]\)\s*\)\@<!%=" end="=" skip="\\\\\|\\=" contains=@rubyStringSpecial nextgroup=@rubyModifier skipwhite
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial nextgroup=@rubyModifier skipwhite
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial nextgroup=@rubyModifier skipwhite
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
+
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial nextgroup=@rubyModifier skipwhite
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses
+
+" Here Documents {{{1
+syn region rubyHeredocStart matchgroup=rubyHeredocDelimiter start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"'`]\)\s\|\w\)\@<!<<[-~]\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
+
+syn region rubyHeredocStart matchgroup=rubyHeredocDelimiter start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"'`]\)\s\|\w\)\@<!<<[-~]\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
+syn region rubyHeredocStart matchgroup=rubyHeredocDelimiter start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"'`]\)\s\|\w\)\@<!<<[-~]\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
+syn region rubyHeredocStart matchgroup=rubyHeredocDelimiter start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"'`]\)\s\|\w\)\@<!<<[-~]\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
+
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"'`]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyHeredocDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"'`]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyHeredocDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"'`]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyHeredocDelimiter end=+^\z1$+ contains=rubyHeredocStart keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"'`]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyHeredocDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
+
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyHeredocDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyHeredocDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyHeredocDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyHeredocDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
+
+" Module, Class, Method and Alias Declarations {{{1
+syn match rubyAliasDeclaration "[^[:space:];#.()]\+" contained contains=rubySymbol,@rubyGlobalVariable nextgroup=rubyAliasDeclaration2 skipwhite
+syn match rubyAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=rubySymbol,@rubyGlobalVariable
+syn match rubyMethodDeclaration "[^[:space:];#(]\+" contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable
+syn match rubyClassDeclaration "[^[:space:];#<]\+" contained contains=rubyClassName,rubyScopeOperator nextgroup=rubySuperClassOperator skipwhite
+syn match rubyModuleDeclaration "[^[:space:];#<]\+" contained contains=rubyModuleName,rubyScopeOperator
+
+syn match rubyMethodName "\<\%([_[:alpha:]]\|[^\x00-\x7F]\)\%([_[:alnum:]]\|[^\x00-\x7F]\)*[?!=]\=\%([[:alnum:]_.:?!=]\|[^\x00-\x7F]\)\@!" contained containedin=rubyMethodDeclaration
+syn match rubyMethodName "\%(\s\|^\)\@1<=\%([_[:alpha:]]\|[^\x00-\x7F]\)\%([_[:alnum:]]\|[^\x00-\x7F]\)*[?!=]\=\%(\s\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2
+syn match rubyMethodName "\%([[:space:].]\|^\)\@1<=\%(\[\]=\=\|\*\*\|[-+!~]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration
+
+syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyMethodName
+
+" Keywords {{{1
+" TODO: reorganise
+syn match rubyControl "\%#=1\<\%(break\|in\|next\|redo\|retry\|return\)\>"
+syn match rubyKeyword "\%#=1\<\%(super\|yield\)\>"
+syn match rubyBoolean "\%#=1\<\%(true\|false\)\>[?!]\@!"
+syn match rubyPseudoVariable "\%#=1\<\(self\|nil\)\>[?!]\@!"
+syn match rubyPseudoVariable "\%#=1\<__\%(ENCODING\|dir\|FILE\|LINE\|callee\|method\)__\>"
+syn match rubyBeginEnd "\%#=1\<\%(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=rubyMethodName skipwhite skipnl
+ syn match rubyClass "\<class\>" nextgroup=rubyClassDeclaration,rubyEigenClassOperator skipwhite skipnl
+ syn match rubyModule "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl
+
+ SynFold 'def' syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine skip="\<end:\|\%(\<def\_s\+\)\@<=end\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
+ SynFold 'class' syn region rubyClassBlock start="\<class\>" matchgroup=rubyClass skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop
+ SynFold 'module' syn region rubyModuleBlock start="\<module\>" matchgroup=rubyModule skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop
+
+ " endless def
+ syn match rubyDefine "\<def\s\+\ze[^[:space:];#(]\+\%(\s\+\|\s*(.*)\s*\)=" nextgroup=rubyMethodDeclaration skipwhite
+
+ " modifiers
+ syn match rubyLineContinuation "\\$" nextgroup=@rubyModifier skipwhite skipnl
+ syn match rubyConditionalModifier "\<\%(if\|unless\)\>"
+ syn match rubyRepeatModifier "\<\%(while\|until\)\>"
+ syn match rubyRescueModifier "\<rescue\>"
+
+ syn cluster rubyModifier contains=rubyConditionalModifier,rubyRepeatModifier,rubyRescueModifier
+
+ SynFold 'do' syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop
+
+ " curly bracket block or hash literal
+ SynFold '{' syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop
+ SynFold '[' syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\%(\w\|[^\x00-\x7F]\)[?!]\=\|[]})]\)\@2<!\[" end="]" contains=ALLBUT,@rubyNotTop
+
+ " statements without 'do'
+ SynFold 'begin' syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop
+ SynFold 'case' syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop
+
+ SynFold 'if' syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\<then\s\|\%(\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop
+
+ syn match rubyConditional "\<\%(then\|else\|when\)\>" contained containedin=rubyCaseExpression
+ syn match rubyConditional "\<\%(then\|else\|elsif\)\>" contained containedin=rubyConditionalExpression
+
+ syn match rubyExceptionHandler "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>" contained containedin=rubyBlockExpression,rubyDoBlock
+ syn match rubyExceptionHandler2 "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>" contained containedin=rubyModuleBlock,rubyClassBlock,rubyMethodBlock
+ syn cluster rubyExceptionHandler contains=rubyExceptionHandler,rubyExceptionHandler2
+
+ " statements with optional 'do'
+ syn region rubyOptionalDoLine matchgroup=rubyRepeat start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\@<![!?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyOptionalDo end="\<do\>" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop
+
+ SynFold 'for' syn region rubyRepeatExpression start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\@<![!?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine
+
+ if !exists("ruby_minlines")
+ let ruby_minlines = 500
+ endif
+ exe "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\|rescue\|ensure\|then\|when\|end\)\>"
+ syn match rubyKeyword "\<\%(alias\|undef\)\>"
+endif
+
+" Special Methods {{{1
+if !exists("ruby_no_special_methods")
+ syn match rubyAccess "\<\%(public\|protected\|private\)\>" " use re=2
+ syn match rubyAccess "\%#=1\<\%(public\|private\)_class_method\>"
+ syn match rubyAccess "\%#=1\<\%(public\|private\)_constant\>"
+ syn match rubyAccess "\%#=1\<module_function\>"
+ syn match rubyAttribute "\%#=1\%(\%(^\|;\)\s*\)\@<=attr\>\(\s*[.=]\)\@!" " attr is a common variable name
+ syn match rubyAttribute "\%#=1\<attr_\%(accessor\|reader\|writer\)\>"
+ syn match rubyControl "\%#=1\<\%(abort\|at_exit\|exit\|fork\|loop\|trap\)\>"
+ syn match rubyEval "\%#=1\<eval\>"
+ syn match rubyEval "\%#=1\<\%(class\|instance\|module\)_eval\>"
+ syn match rubyException "\%#=1\<\%(raise\|fail\|catch\|throw\)\>"
+ syn match rubyInclude "\%#=1\<\%(autoload\|gem\|load\|require\%(_relative\)\=\)\>"
+ syn match rubyKeyword "\%#=1\<\%(callcc\|caller\|lambda\|proc\)\>"
+ syn match rubyMacro "\%#=1\<\%(extend\|include\|prepend\|refine\|using\)\>"
+ syn match rubyMacro "\%#=1\<\%(alias\|define\|define_singleton\|remove\|undef\)_method\>"
+endif
+
+" Comments and Documentation {{{1
+syn match rubySharpBang "\%^#!.*" display
+syn keyword rubyTodo FIXME NOTE TODO OPTIMIZE HACK REVIEW XXX todo contained
+syn match rubyEncoding "[[:alnum:]-_]\+" contained display
+syn match rubyMagicComment "\c\%<3l#\s*\zs\%(coding\|encoding\):" contained nextgroup=rubyEncoding skipwhite
+syn match rubyMagicComment "\c\%<10l#\s*\zs\%(frozen_string_literal\|warn_indent\|warn_past_scope\):" contained nextgroup=rubyBoolean skipwhite
+syn match rubyMagicComment "\c\%<10l#\s*\zs\%(shareable_constant_value\):" contained nextgroup=rubyEncoding skipwhite
+syn match rubyComment "#.*" contains=@rubyCommentSpecial,rubySpaceError,@Spell
+
+syn cluster rubyCommentSpecial contains=rubySharpBang,rubyTodo,rubyMagicComment
+syn cluster rubyCommentNotTop contains=@rubyCommentSpecial,rubyEncoding
+
+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
+
+" {{{1 Useless Line Continuations
+syn match rubyUselessLineContinuation "\%([.:,;{([<>~\*%&^|+=-]\|%(\%(\w\|[^\x00-\x7F]\)\@1<![?!]\)\s*\zs\\$" nextgroup=rubyUselessLineContinuation skipwhite skipempty
+syn match rubyUselessLineContinuation "\\$" nextgroup=rubyUselessLineContinuation skipwhite skipempty contained
+
+" Keyword Nobbling {{{1
+" prevent methods with keyword names being highlighted as keywords when called
+syn match rubyKeywordAsMethod "\%(\%(\.\@1<!\.\)\|&\.\|::\)\_s*\%([_[:lower:]][_[:alnum:]]*\|\%(BEGIN\|END\)\>\)" transparent contains=rubyDotOperator,rubyScopeOperator
+
+" Bang and Predicate Methods and Operators {{{1
+syn match rubyBangPredicateMethod "\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[?!]"
+
+if !exists("ruby_no_special_methods")
+ syn match rubyControl "\%#=1\<exit!" display
+endif
+syn match rubyDefinedOperator "\%#=1\<defined?" display
+
+" 1.9-style Hash Keys and Keyword Parameters {{{1
+syn match rubySymbol "\%(\w\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[?!]\=::\@!"he=e-1 contained containedin=rubyBlockParameterList,rubyCurlyBlock
+syn match rubySymbol "[]})\"':]\@1<!\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],;]\@="he=e-1
+syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],;]\@="hs=s+1,he=e-1
+syn match rubySingleQuoteSymbolDelimiter "'" contained
+syn match rubySymbol "'\%(\\.\|[^']\)*'::\@!"he=e-1 contains=rubyQuoteEscape,rubyBackslashEscape,rubySingleQuoteSymbolDelimiter
+syn match rubyDoubleQuoteSymbolDelimiter "\"" contained
+syn match rubySymbol "\"\%(\\.\|[^\"]\)*\"::\@!"he=e-1 contains=@rubyStringSpecial,rubyDoubleQuoteSymbolDelimiter
+
+" __END__ Directive {{{1
+SynFold '__END__' syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$"
+
+" Default Highlighting {{{1
+hi def link rubyClass rubyDefine
+hi def link rubyModule rubyDefine
+hi def link rubyExceptionHandler2 rubyDefine
+hi def link rubyDefine Define
+hi def link rubyAccess rubyMacro
+hi def link rubyAttribute rubyMacro
+hi def link rubyMacro Macro
+hi def link rubyMethodName rubyFunction
+hi def link rubyFunction Function
+hi def link rubyConditional Conditional
+hi def link rubyConditionalModifier rubyConditional
+hi def link rubyExceptionHandler rubyConditional
+hi def link rubyRescueModifier rubyExceptionHandler
+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 rubyCharacter 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 rubyClassName rubyConstant
+hi def link rubyModuleName rubyConstant
+hi def link rubyGlobalVariable 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 rubyDefinedOperator rubyOperator
+hi def link rubyEnglishBooleanOperator rubyOperator
+if exists("ruby_operators")
+ hi def link rubyTernaryOperator rubyOperator
+ hi def link rubyArithmeticOperator rubyOperator
+ hi def link rubyComparisonOperator rubyOperator
+ hi def link rubyBitwiseOperator rubyOperator
+ hi def link rubyBooleanOperator rubyOperator
+ hi def link rubyRangeOperator rubyOperator
+ hi def link rubyAssignmentOperator rubyOperator
+ hi def link rubyEqualityOperator rubyOperator
+endif
+
+if exists("ruby_pseudo_operators")
+ hi def link rubyPseudoOperator Special
+ hi def link rubyDotOperator rubyPseudoOperator
+ hi def link rubyScopeOperator rubyPseudoOperator
+ hi def link rubySuperClassOperator rubyPseudoOperator
+ hi def link rubyEigenClassOperator rubyPseudoOperator
+ hi def link rubyLambdaOperator rubyPseudoOperator
+ hi def link rubyDoubleSplatOperator rubyPseudoOperator
+ hi def link rubySplatOperator rubyPseudoOperator
+ hi def link rubyProcOperator rubyPseudoOperator
+endif
+
+hi def link rubyBeginEnd Statement
+hi def link rubyEval Statement
+hi def link rubyPseudoVariable Constant
+hi def link rubyCapitalizedMethod NONE
+
+hi def link rubyComment Comment
+hi def link rubyEncoding Constant
+hi def link rubyMagicComment SpecialComment
+hi def link rubyData Comment
+hi def link rubyDataDirective Delimiter
+hi def link rubyDocumentation Comment
+hi def link rubyTodo Todo
+
+hi def link rubyBackslashEscape rubyStringEscape
+hi def link rubyQuoteEscape rubyStringEscape
+hi def link rubySpaceEscape rubyStringEscape
+hi def link rubyParenthesisEscape rubyStringEscape
+hi def link rubyCurlyBraceEscape rubyStringEscape
+hi def link rubyAngleBracketEscape rubyStringEscape
+hi def link rubySquareBracketEscape rubyStringEscape
+hi def link rubyStringEscape Special
+
+hi def link rubyInterpolationDelimiter Delimiter
+hi def link rubySharpBang PreProc
+hi def link rubyStringDelimiter Delimiter
+hi def link rubyHeredocDelimiter rubyStringDelimiter
+hi def link rubyPercentRegexpDelimiter rubyRegexpDelimiter
+hi def link rubyPercentStringDelimiter rubyStringDelimiter
+hi def link rubyPercentSymbolDelimiter rubySymbolDelimiter
+hi def link rubyDoubleQuoteSymbolDelimiter rubySymbolDelimiter
+hi def link rubySingleQuoteSymbolDelimiter rubySymbolDelimiter
+hi def link rubyRegexpDelimiter rubyStringDelimiter
+hi def link rubySymbolDelimiter rubySymbol
+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 rubyRegexpIntersection rubyRegexpSpecial
+hi def link rubyRegexpSpecial Special
+hi def link rubyRegexpComment Comment
+hi def link rubyRegexp rubyString
+
+hi def link rubyError Error
+if exists("ruby_line_continuation_error")
+ hi def link rubyUselessLineContinuation rubyError
+endif
+hi def link rubyGlobalVariableError rubyError
+hi def link rubySpaceError rubyError
+
+" Postscript {{{1
+let b:current_syntax = "ruby"
+
+let &cpo = s:cpo_sav
+unlet! s:cpo_sav
+
+delc SynFold
+
+" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
diff --git a/runtime/syntax/rust.vim b/runtime/syntax/rust.vim
new file mode 100644
index 0000000..5734330
--- /dev/null
+++ b/runtime/syntax/rust.vim
@@ -0,0 +1,295 @@
+" Vim syntax file
+" Language: Rust
+" Maintainer: Patrick Walton <pcwalton@mozilla.com>
+" Maintainer: Ben Blum <bblum@cs.cmu.edu>
+" Maintainer: Chris Morgan <me@chrismorgan.info>
+" Last Change: Feb 24, 2016
+" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
+
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+" Syntax definitions {{{1
+" Basic keywords {{{2
+syn keyword rustConditional match if else
+syn keyword rustRepeat for loop while
+syn keyword rustTypedef type nextgroup=rustIdentifier skipwhite skipempty
+syn keyword rustStructure struct enum nextgroup=rustIdentifier skipwhite skipempty
+syn keyword rustUnion union nextgroup=rustIdentifier skipwhite skipempty contained
+syn match rustUnionContextual /\<union\_s\+\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*/ transparent contains=rustUnion
+syn keyword rustOperator as
+
+syn match rustAssert "\<assert\(\w\)*!" contained
+syn match rustPanic "\<panic\(\w\)*!" contained
+syn keyword rustKeyword break
+syn keyword rustKeyword box nextgroup=rustBoxPlacement skipwhite skipempty
+syn keyword rustKeyword continue
+syn keyword rustKeyword extern nextgroup=rustExternCrate,rustObsoleteExternMod skipwhite skipempty
+syn keyword rustKeyword fn nextgroup=rustFuncName skipwhite skipempty
+syn keyword rustKeyword in impl let
+syn keyword rustKeyword pub nextgroup=rustPubScope skipwhite skipempty
+syn keyword rustKeyword return
+syn keyword rustSuper super
+syn keyword rustKeyword unsafe where
+syn keyword rustKeyword use nextgroup=rustModPath skipwhite skipempty
+" FIXME: Scoped impl's name is also fallen in this category
+syn keyword rustKeyword mod trait nextgroup=rustIdentifier skipwhite skipempty
+syn keyword rustStorage move mut ref static const
+syn match rustDefault /\<default\ze\_s\+\(impl\|fn\|type\|const\)\>/
+
+syn keyword rustInvalidBareKeyword crate
+
+syn keyword rustPubScopeCrate crate contained
+syn match rustPubScopeDelim /[()]/ contained
+syn match rustPubScope /([^()]*)/ contained contains=rustPubScopeDelim,rustPubScopeCrate,rustSuper,rustModPath,rustModPathSep,rustSelf transparent
+
+syn keyword rustExternCrate crate contained nextgroup=rustIdentifier,rustExternCrateString skipwhite skipempty
+" This is to get the `bar` part of `extern crate "foo" as bar;` highlighting.
+syn match rustExternCrateString /".*"\_s*as/ contained nextgroup=rustIdentifier skipwhite transparent skipempty contains=rustString,rustOperator
+syn keyword rustObsoleteExternMod mod contained nextgroup=rustIdentifier skipwhite skipempty
+
+syn match rustIdentifier contains=rustIdentifierPrime "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained
+syn match rustFuncName "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained
+
+syn region rustBoxPlacement matchgroup=rustBoxPlacementParens start="(" end=")" contains=TOP contained
+" Ideally we'd have syntax rules set up to match arbitrary expressions. Since
+" we don't, we'll just define temporary contained rules to handle balancing
+" delimiters.
+syn region rustBoxPlacementBalance start="(" end=")" containedin=rustBoxPlacement transparent
+syn region rustBoxPlacementBalance start="\[" end="\]" containedin=rustBoxPlacement transparent
+" {} are handled by rustFoldBraces
+
+syn region rustMacroRepeat matchgroup=rustMacroRepeatDelimiters start="$(" end=")" contains=TOP nextgroup=rustMacroRepeatCount
+syn match rustMacroRepeatCount ".\?[*+]" contained
+syn match rustMacroVariable "$\w\+"
+
+" Reserved (but not yet used) keywords {{{2
+syn keyword rustReservedKeyword alignof become do offsetof priv pure sizeof typeof unsized yield abstract virtual final override macro
+
+" Built-in types {{{2
+syn keyword rustType isize usize char bool u8 u16 u32 u64 u128 f32
+syn keyword rustType f64 i8 i16 i32 i64 i128 str Self
+
+" Things from the libstd v1 prelude (src/libstd/prelude/v1.rs) {{{2
+" This section is just straight transformation of the contents of the prelude,
+" to make it easy to update.
+
+" Reexported core operators {{{3
+syn keyword rustTrait Copy Send Sized Sync
+syn keyword rustTrait Drop Fn FnMut FnOnce
+
+" Reexported functions {{{3
+" There’s no point in highlighting these; when one writes drop( or drop::< it
+" gets the same highlighting anyway, and if someone writes `let drop = …;` we
+" don’t really want *that* drop to be highlighted.
+"syn keyword rustFunction drop
+
+" Reexported types and traits {{{3
+syn keyword rustTrait Box
+syn keyword rustTrait ToOwned
+syn keyword rustTrait Clone
+syn keyword rustTrait PartialEq PartialOrd Eq Ord
+syn keyword rustTrait AsRef AsMut Into From
+syn keyword rustTrait Default
+syn keyword rustTrait Iterator Extend IntoIterator
+syn keyword rustTrait DoubleEndedIterator ExactSizeIterator
+syn keyword rustEnum Option
+syn keyword rustEnumVariant Some None
+syn keyword rustEnum Result
+syn keyword rustEnumVariant Ok Err
+syn keyword rustTrait SliceConcatExt
+syn keyword rustTrait String ToString
+syn keyword rustTrait Vec
+
+" Other syntax {{{2
+syn keyword rustSelf self
+syn keyword rustBoolean true false
+
+" If foo::bar changes to foo.bar, change this ("::" to "\.").
+" If foo::bar changes to Foo::bar, change this (first "\w" to "\u").
+syn match rustModPath "\w\(\w\)*::[^<]"he=e-3,me=e-3
+syn match rustModPathSep "::"
+
+syn match rustFuncCall "\w\(\w\)*("he=e-1,me=e-1
+syn match rustFuncCall "\w\(\w\)*::<"he=e-3,me=e-3 " foo::<T>();
+
+" This is merely a convention; note also the use of [A-Z], restricting it to
+" latin identifiers rather than the full Unicode uppercase. I have not used
+" [:upper:] as it depends upon 'noignorecase'
+"syn match rustCapsIdent display "[A-Z]\w\(\w\)*"
+
+syn match rustOperator display "\%(+\|-\|/\|*\|=\|\^\|&\||\|!\|>\|<\|%\)=\?"
+" This one isn't *quite* right, as we could have binary-& with a reference
+syn match rustSigil display /&\s\+[&~@*][^)= \t\r\n]/he=e-1,me=e-1
+syn match rustSigil display /[&~@*][^)= \t\r\n]/he=e-1,me=e-1
+" This isn't actually correct; a closure with no arguments can be `|| { }`.
+" Last, because the & in && isn't a sigil
+syn match rustOperator display "&&\|||"
+" This is rustArrowCharacter rather than rustArrow for the sake of matchparen,
+" so it skips the ->; see http://stackoverflow.com/a/30309949 for details.
+syn match rustArrowCharacter display "->"
+syn match rustQuestionMark display "?\([a-zA-Z]\+\)\@!"
+
+syn match rustMacro '\w\(\w\)*!' contains=rustAssert,rustPanic
+syn match rustMacro '#\w\(\w\)*' contains=rustAssert,rustPanic
+
+syn match rustEscapeError display contained /\\./
+syn match rustEscape display contained /\\\([nrt0\\'"]\|x\x\{2}\)/
+syn match rustEscapeUnicode display contained /\\u{\x\{1,6}}/
+syn match rustStringContinuation display contained /\\\n\s*/
+syn region rustString start=+b"+ skip=+\\\\\|\\"+ end=+"+ contains=rustEscape,rustEscapeError,rustStringContinuation
+syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustEscape,rustEscapeUnicode,rustEscapeError,rustStringContinuation,@Spell
+syn region rustString start='b\?r\z(#*\)"' end='"\z1' contains=@Spell
+
+syn region rustAttribute start="#!\?\[" end="\]" contains=rustString,rustDerive,rustCommentLine,rustCommentBlock,rustCommentLineDocError,rustCommentBlockDocError
+syn region rustDerive start="derive(" end=")" contained contains=rustDeriveTrait
+" This list comes from src/libsyntax/ext/deriving/mod.rs
+" Some are deprecated (Encodable, Decodable) or to be removed after a new snapshot (Show).
+syn keyword rustDeriveTrait contained Clone Hash RustcEncodable RustcDecodable Encodable Decodable PartialEq Eq PartialOrd Ord Rand Show Debug Default FromPrimitive Send Sync Copy
+
+" Number literals
+syn match rustDecNumber display "\<[0-9][0-9_]*\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\="
+syn match rustHexNumber display "\<0x[a-fA-F0-9_]\+\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\="
+syn match rustOctNumber display "\<0o[0-7_]\+\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\="
+syn match rustBinNumber display "\<0b[01_]\+\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\="
+
+" Special case for numbers of the form "1." which are float literals, unless followed by
+" an identifier, which makes them integer literals with a method call or field access,
+" or by another ".", which makes them integer literals followed by the ".." token.
+" (This must go first so the others take precedence.)
+syn match rustFloat display "\<[0-9][0-9_]*\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\|\.\)\@!"
+" To mark a number as a normal float, it must have at least one of the three things integral values don't have:
+" a decimal point and more numbers; an exponent; and a type suffix.
+syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)\="
+syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\(f32\|f64\)\="
+syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)"
+
+" For the benefit of delimitMate
+syn region rustLifetimeCandidate display start=/&'\%(\([^'\\]\|\\\(['nrt0\\\"]\|x\x\{2}\|u{\x\{1,6}}\)\)'\)\@!/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime
+syn region rustGenericRegion display start=/<\%('\|[^[cntrl:][:space:][:punct:]]\)\@=')\S\@=/ end=/>/ contains=rustGenericLifetimeCandidate
+syn region rustGenericLifetimeCandidate display start=/\%(<\|,\s*\)\@<='/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime
+
+"rustLifetime must appear before rustCharacter, or chars will get the lifetime highlighting
+syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*"
+syn match rustLabel display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*:"
+syn match rustCharacterInvalid display contained /b\?'\zs[\n\r\t']\ze'/
+" The groups negated here add up to 0-255 but nothing else (they do not seem to go beyond ASCII).
+syn match rustCharacterInvalidUnicode display contained /b'\zs[^[:cntrl:][:graph:][:alnum:][:space:]]\ze'/
+syn match rustCharacter /b'\([^\\]\|\\\(.\|x\x\{2}\)\)'/ contains=rustEscape,rustEscapeError,rustCharacterInvalid,rustCharacterInvalidUnicode
+syn match rustCharacter /'\([^\\]\|\\\(.\|x\x\{2}\|u{\x\{1,6}}\)\)'/ contains=rustEscape,rustEscapeUnicode,rustEscapeError,rustCharacterInvalid
+
+syn match rustShebang /\%^#![^[].*/
+syn region rustCommentLine start="//" end="$" contains=rustTodo,@Spell
+syn region rustCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell
+syn region rustCommentLineDocError start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell contained
+syn region rustCommentBlock matchgroup=rustCommentBlock start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell
+syn region rustCommentBlockDoc matchgroup=rustCommentBlockDoc start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell
+syn region rustCommentBlockDocError matchgroup=rustCommentBlockDocError start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,rustCommentBlockDocNestError,@Spell contained
+syn region rustCommentBlockNest matchgroup=rustCommentBlock start="/\*" end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell contained transparent
+syn region rustCommentBlockDocNest matchgroup=rustCommentBlockDoc start="/\*" end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell contained transparent
+syn region rustCommentBlockDocNestError matchgroup=rustCommentBlockDocError start="/\*" end="\*/" contains=rustTodo,rustCommentBlockDocNestError,@Spell contained transparent
+" FIXME: this is a really ugly and not fully correct implementation. Most
+" importantly, a case like ``/* */*`` should have the final ``*`` not being in
+" a comment, but in practice at present it leaves comments open two levels
+" deep. But as long as you stay away from that particular case, I *believe*
+" the highlighting is correct. Due to the way Vim's syntax engine works
+" (greedy for start matches, unlike Rust's tokeniser which is searching for
+" the earliest-starting match, start or end), I believe this cannot be solved.
+" Oh you who would fix it, don't bother with things like duplicating the Block
+" rules and putting ``\*\@<!`` at the start of them; it makes it worse, as
+" then you must deal with cases like ``/*/**/*/``. And don't try making it
+" worse with ``\%(/\@<!\*\)\@<!``, either...
+
+syn keyword rustTodo contained TODO FIXME XXX NB NOTE
+
+" Folding rules {{{2
+" Trivial folding rules to begin with.
+" FIXME: use the AST to make really good folding
+syn region rustFoldBraces start="{" end="}" transparent fold
+
+" Default highlighting {{{1
+hi def link rustDecNumber rustNumber
+hi def link rustHexNumber rustNumber
+hi def link rustOctNumber rustNumber
+hi def link rustBinNumber rustNumber
+hi def link rustIdentifierPrime rustIdentifier
+hi def link rustTrait rustType
+hi def link rustDeriveTrait rustTrait
+
+hi def link rustMacroRepeatCount rustMacroRepeatDelimiters
+hi def link rustMacroRepeatDelimiters Macro
+hi def link rustMacroVariable Define
+hi def link rustSigil StorageClass
+hi def link rustEscape Special
+hi def link rustEscapeUnicode rustEscape
+hi def link rustEscapeError Error
+hi def link rustStringContinuation Special
+hi def link rustString String
+hi def link rustCharacterInvalid Error
+hi def link rustCharacterInvalidUnicode rustCharacterInvalid
+hi def link rustCharacter Character
+hi def link rustNumber Number
+hi def link rustBoolean Boolean
+hi def link rustEnum rustType
+hi def link rustEnumVariant rustConstant
+hi def link rustConstant Constant
+hi def link rustSelf Constant
+hi def link rustFloat Float
+hi def link rustArrowCharacter rustOperator
+hi def link rustOperator Operator
+hi def link rustKeyword Keyword
+hi def link rustTypedef Keyword " More precise is Typedef, but it doesn't feel right for Rust
+hi def link rustStructure Keyword " More precise is Structure
+hi def link rustUnion rustStructure
+hi def link rustPubScopeDelim Delimiter
+hi def link rustPubScopeCrate rustKeyword
+hi def link rustSuper rustKeyword
+hi def link rustReservedKeyword Error
+hi def link rustRepeat Conditional
+hi def link rustConditional Conditional
+hi def link rustIdentifier Identifier
+hi def link rustCapsIdent rustIdentifier
+hi def link rustModPath Include
+hi def link rustModPathSep Delimiter
+hi def link rustFunction Function
+hi def link rustFuncName Function
+hi def link rustFuncCall Function
+hi def link rustShebang Comment
+hi def link rustCommentLine Comment
+hi def link rustCommentLineDoc SpecialComment
+hi def link rustCommentLineDocError Error
+hi def link rustCommentBlock rustCommentLine
+hi def link rustCommentBlockDoc rustCommentLineDoc
+hi def link rustCommentBlockDocError Error
+hi def link rustAssert PreCondit
+hi def link rustPanic PreCondit
+hi def link rustMacro Macro
+hi def link rustType Type
+hi def link rustTodo Todo
+hi def link rustAttribute PreProc
+hi def link rustDerive PreProc
+hi def link rustDefault StorageClass
+hi def link rustStorage StorageClass
+hi def link rustObsoleteStorage Error
+hi def link rustLifetime Special
+hi def link rustLabel Label
+hi def link rustInvalidBareKeyword Error
+hi def link rustExternCrate rustKeyword
+hi def link rustObsoleteExternMod Error
+hi def link rustBoxPlacementParens Delimiter
+hi def link rustQuestionMark Special
+
+" Other Suggestions:
+" hi rustAttribute ctermfg=cyan
+" hi rustDerive ctermfg=cyan
+" hi rustAssert ctermfg=yellow
+" hi rustPanic ctermfg=red
+" hi rustMacro ctermfg=magenta
+
+syn sync minlines=200
+syn sync maxlines=500
+
+let b:current_syntax = "rust"
diff --git a/runtime/syntax/samba.vim b/runtime/syntax/samba.vim
new file mode 100644
index 0000000..e096436
--- /dev/null
+++ b/runtime/syntax/samba.vim
@@ -0,0 +1,118 @@
+" Vim syntax file
+" Language: samba configuration files (smb.conf)
+" Maintainer: Rafael Garcia-Suarez <rgarciasuarez@free.fr>
+" URL: http://rgarciasuarez.free.fr/vim/syntax/samba.vim
+" Last change: 2009 Aug 06
+"
+" New maintainer wanted!
+"
+" Don't forget to run your config file through testparm(1)!
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+syn match sambaParameter /^[a-zA-Z \t]\+=/ contains=sambaKeyword
+syn match sambaSection /^\s*\[[a-zA-Z0-9_\-.$ ]\+\]/
+syn match sambaMacro /%[SPugUGHvhmLMNpRdaITD]/
+syn match sambaMacro /%$([a-zA-Z0-9_]\+)/
+syn match sambaComment /^\s*[;#].*/
+syn match sambaContinue /\\$/
+syn keyword sambaBoolean true false yes no
+
+" Keywords for Samba 2.0.5a
+syn keyword sambaKeyword contained account acl action add address admin aliases
+syn keyword sambaKeyword contained allow alternate always announce anonymous
+syn keyword sambaKeyword contained archive as auto available bind blocking
+syn keyword sambaKeyword contained bmpx break browsable browse browseable ca
+syn keyword sambaKeyword contained cache case casesignames cert certDir
+syn keyword sambaKeyword contained certFile change char character chars chat
+syn keyword sambaKeyword contained ciphers client clientcert code coding
+syn keyword sambaKeyword contained command comment compatibility config
+syn keyword sambaKeyword contained connections contention controller copy
+syn keyword sambaKeyword contained create deadtime debug debuglevel default
+syn keyword sambaKeyword contained delete deny descend dfree dir directory
+syn keyword sambaKeyword contained disk dns domain domains dont dos dot drive
+syn keyword sambaKeyword contained driver encrypt encrypted equiv exec fake
+syn keyword sambaKeyword contained file files filetime filetimes filter follow
+syn keyword sambaKeyword contained force fstype getwd group groups guest
+syn keyword sambaKeyword contained hidden hide home homedir hosts include
+syn keyword sambaKeyword contained interfaces interval invalid keepalive
+syn keyword sambaKeyword contained kernel key ldap length level level2 limit
+syn keyword sambaKeyword contained links list lm load local location lock
+syn keyword sambaKeyword contained locking locks log logon logons logs lppause
+syn keyword sambaKeyword contained lpq lpresume lprm machine magic mangle
+syn keyword sambaKeyword contained mangled mangling map mask master max mem
+syn keyword sambaKeyword contained message min mode modes mux name names
+syn keyword sambaKeyword contained netbios nis notify nt null offset ok ole
+syn keyword sambaKeyword contained only open oplock oplocks options order os
+syn keyword sambaKeyword contained output packet page panic passwd password
+syn keyword sambaKeyword contained passwords path permissions pipe port ports
+syn keyword sambaKeyword contained postexec postscript prediction preexec
+syn keyword sambaKeyword contained prefered preferred preload preserve print
+syn keyword sambaKeyword contained printable printcap printer printers
+syn keyword sambaKeyword contained printing program protocol proxy public
+syn keyword sambaKeyword contained queuepause queueresume raw read readonly
+syn keyword sambaKeyword contained realname remote require resign resolution
+syn keyword sambaKeyword contained resolve restrict revalidate rhosts root
+syn keyword sambaKeyword contained script security sensitive server servercert
+syn keyword sambaKeyword contained service services set share shared short
+syn keyword sambaKeyword contained size smb smbrun socket space ssl stack stat
+syn keyword sambaKeyword contained status strict string strip suffix support
+syn keyword sambaKeyword contained symlinks sync syslog system time timeout
+syn keyword sambaKeyword contained times timestamp to trusted ttl unix update
+syn keyword sambaKeyword contained use user username users valid version veto
+syn keyword sambaKeyword contained volume wait wide wins workgroup writable
+syn keyword sambaKeyword contained write writeable xmit
+
+" New keywords for Samba 2.0.6
+syn keyword sambaKeyword contained hook hires pid uid close rootpreexec
+
+" New keywords for Samba 2.0.7
+syn keyword sambaKeyword contained utmp wtmp hostname consolidate
+syn keyword sambaKeyword contained inherit source environment
+
+" New keywords for Samba 2.2.0
+syn keyword sambaKeyword contained addprinter auth browsing deleteprinter
+syn keyword sambaKeyword contained enhanced enumports filemode gid host jobs
+syn keyword sambaKeyword contained lanman msdfs object os2 posix processes
+syn keyword sambaKeyword contained scope separator shell show smbd template
+syn keyword sambaKeyword contained total vfs winbind wizard
+
+" New keywords for Samba 2.2.1
+syn keyword sambaKeyword contained large obey pam readwrite restrictions
+syn keyword sambaKeyword contained unreadable
+
+" New keywords for Samba 2.2.2 - 2.2.4
+syn keyword sambaKeyword contained acls allocate bytes count csc devmode
+syn keyword sambaKeyword contained disable dn egd entropy enum extensions mmap
+syn keyword sambaKeyword contained policy spin spoolss
+
+" Since Samba 3.0.2
+syn keyword sambaKeyword contained abort afs algorithmic backend
+syn keyword sambaKeyword contained charset cups defer display
+syn keyword sambaKeyword contained enable idmap kerberos lookups
+syn keyword sambaKeyword contained methods modules nested NIS ntlm NTLMv2
+syn keyword sambaKeyword contained objects paranoid partners passdb
+syn keyword sambaKeyword contained plaintext prefix primary private
+syn keyword sambaKeyword contained profile quota realm replication
+syn keyword sambaKeyword contained reported rid schannel sendfile sharing
+syn keyword sambaKeyword contained shutdown signing special spnego
+syn keyword sambaKeyword contained store unknown unwriteable
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link sambaParameter Normal
+hi def link sambaKeyword Type
+hi def link sambaSection Statement
+hi def link sambaMacro PreProc
+hi def link sambaComment Comment
+hi def link sambaContinue Operator
+hi def link sambaBoolean Constant
+
+let b:current_syntax = "samba"
+
+" vim: ts=8
diff --git a/runtime/syntax/sas.vim b/runtime/syntax/sas.vim
new file mode 100644
index 0000000..fad6066
--- /dev/null
+++ b/runtime/syntax/sas.vim
@@ -0,0 +1,265 @@
+" Vim syntax file
+" Language: SAS
+" Maintainer: Zhen-Huan Hu <wildkeny@gmail.com>
+" Original Maintainer: James Kidd <james.kidd@covance.com>
+" Version: 3.0.0
+" Last Change: Aug 26, 2017
+"
+" 2017 Mar 7
+"
+" Upgrade version number to 3.0. Improvements include:
+" - Improve sync speed
+" - Largely enhance precision
+" - Update keywords in the latest SAS (as of Mar 2017)
+" - Add syntaxes for date/time constants
+" - Add syntax for data lines
+" - Add (back) syntax for TODO in comments
+"
+" 2017 Feb 9
+"
+" Add syntax folding
+"
+" 2016 Oct 10
+"
+" Add highlighting for functions
+"
+" 2016 Sep 14
+"
+" Change the implementation of syntaxing
+" macro function names so that macro parameters same
+" as SAS keywords won't be highlighted
+" (Thank Joug Raw for the suggestion)
+" Add section highlighting:
+" - Use /** and **/ to define a section
+" - It functions the same as a comment but
+" with different highlighting
+"
+" 2016 Jun 14
+"
+" Major changes so upgrade version number to 2.0
+" Overhaul the entire script (again). Improvements include:
+" - Higher precision
+" - Faster synchronization
+" - Separate color for control statements
+" - Highlight hash and java objects
+" - Highlight macro variables in double quoted strings
+" - Update all syntaxes based on SAS 9.4
+" - Add complete SAS/GRAPH and SAS/STAT procedure syntaxes
+" - Add Proc TEMPLATE and GTL syntaxes
+" - Add complete DS2 syntaxes
+" - Add basic IML syntaxes
+" - Many other improvements and bug fixes
+" Drop support for VIM version < 600
+
+if version < 600
+ syntax clear
+elseif exists('b:current_syntax')
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case ignore
+
+" Basic SAS syntaxes
+syn keyword sasOperator and eq ge gt in le lt ne not of or
+syn keyword sasReserved _all_ _automatic_ _char_ _character_ _data_ _infile_ _last_ _n_ _name_ _null_ _num_ _numeric_ _temporary_ _user_ _webout_
+" Strings
+syn region sasString start=+'+ skip=+''+ end=+'+ contains=@Spell
+syn region sasString start=+"+ skip=+""+ end=+"+ contains=sasMacroVariable,@Spell
+" Constants
+syn match sasNumber /\v<\d+%(\.\d+)=%(>|e[\-+]=\d+>)/ display
+syn match sasDateTime /\v(['"])\d{2}%(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d{2}%(\d{2})=:\d{2}:\d{2}%(:\d{2})=%(am|pm)\1dt>/ display
+syn match sasDateTime /\v(['"])\d{2}%(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d{2}%(\d{2})=\1d>/ display
+syn match sasDateTime /\v(['"])\d{2}:\d{2}%(:\d{2})=%(am|pm)\1t>/ display
+" Comments
+syn keyword sasTodo todo tbd fixme contained
+syn region sasComment start='/\*' end='\*/' contains=sasTodo
+syn region sasComment start='\v%(^|;)\s*\zs\%=\*' end=';'me=s-1 contains=sasTodo
+syn region sasSectLbl matchgroup=sasSectLblEnds start='/\*\*\s*' end='\s*\*\*/' concealends
+" Macros
+syn match sasMacroVariable '\v\&+\w+%(\.\w+)=' display
+syn match sasMacroReserved '\v\%%(abort|by|copy|display|do|else|end|global|goto|if|include|input|let|list|local|macro|mend|put|return|run|symdel|syscall|sysexec|syslput|sysrput|then|to|until|window|while)>' display
+syn region sasMacroFunction matchgroup=sasMacroFunctionName start='\v\%\w+\ze\(' end=')'he=s-1 contains=@sasBasicSyntax,sasMacroFunction
+syn region sasMacroFunction matchgroup=sasMacroFunctionName start='\v\%q=sysfunc\ze\(' end=')'he=s-1 contains=@sasBasicSyntax,sasMacroFunction,sasDataStepFunction
+" Syntax cluster for basic SAS syntaxes
+syn cluster sasBasicSyntax contains=sasOperator,sasReserved,sasNumber,sasDateTime,sasString,sasComment,sasMacroReserved,sasMacroFunction,sasMacroVariable,sasSectLbl
+
+" Formats
+syn match sasFormat '\v\$\w+\.' display contained
+syn match sasFormat '\v<\w+\.%(\d+>)=' display contained
+syn region sasFormatContext start='.' end=';'me=s-1 contained contains=@sasBasicSyntax,sasFormat
+
+" Define global statements that can be accessed out of data step or procedures
+syn keyword sasGlobalStatementKeyword catname dm endsas filename footnote footnote1 footnote2 footnote3 footnote4 footnote5 footnote6 footnote7 footnote8 footnote9 footnote10 missing libname lock ods options page quit resetline run sasfile skip sysecho title title1 title2 title3 title4 title5 title6 title7 title8 title9 title10 contained
+syn keyword sasGlobalStatementODSKeyword chtml csvall docbook document escapechar epub epub2 epub3 exclude excel graphics html html3 html5 htmlcss imode listing markup output package path pcl pdf preferences phtml powerpoint printer proclabel proctitle ps results rtf select show tagsets trace usegopt verify wml contained
+syn match sasGlobalStatement '\v%(^|;)\s*\zs\h\w*>' display transparent contains=sasGlobalStatementKeyword
+syn match sasGlobalStatement '\v%(^|;)\s*\zsods>' display transparent contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty
+
+" Data step statements, 9.4
+syn keyword sasDataStepFunctionName abs addr addrlong airy allcomb allperm anyalnum anyalpha anycntrl anydigit anyfirst anygraph anylower anyname anyprint anypunct anyspace anyupper anyxdigit arcos arcosh arsin arsinh artanh atan atan2 attrc attrn band beta betainv blackclprc blackptprc blkshclprc blkshptprc blshift bnot bor brshift bxor byte cat catq cats catt catx cdf ceil ceilz cexist char choosec choosen cinv close cmiss cnonct coalesce coalescec collate comb compare compbl compfuzz compged complev compound compress constant convx convxp cos cosh cot count countc countw csc css cumipmt cumprinc curobs cv daccdb daccdbsl daccsl daccsyd dacctab dairy datdif date datejul datepart datetime day dclose dcreate depdb depdbsl depsl depsyd deptab dequote deviance dhms dif digamma dim dinfo divide dnum dopen doptname doptnum dosubl dread dropnote dsname dsncatlgd dur durp effrate envlen erf erfc euclid exist exp fact fappend fclose fcol fcopy fdelete fetch fetchobs fexist fget fileexist filename fileref finance find findc findw finfo finv fipname fipnamel fipstate first floor floorz fmtinfo fnonct fnote fopen foptname foptnum fpoint fpos fput fread frewind frlen fsep fuzz fwrite gaminv gamma garkhclprc garkhptprc gcd geodist geomean geomeanz getoption getvarc getvarn graycode harmean harmeanz hbound hms holiday holidayck holidaycount holidayname holidaynx holidayny holidaytest hour htmldecode htmlencode ibessel ifc ifn index indexc indexw input inputc inputn int intcindex intck intcycle intfit intfmt intget intindex intnx intrr intseas intshift inttest intz iorcmsg ipmt iqr irr jbessel juldate juldate7 kurtosis lag largest lbound lcm lcomb left length lengthc lengthm lengthn lexcomb lexcombi lexperk lexperm lfact lgamma libname libref log log1px log10 log2 logbeta logcdf logistic logpdf logsdf lowcase lperm lpnorm mad margrclprc margrptprc max md5 mdy mean median min minute missing mod modexist module modulec modulen modz month mopen mort msplint mvalid contained
+syn keyword sasDataStepFunctionName n netpv nliteral nmiss nomrate normal notalnum notalpha notcntrl notdigit note notfirst notgraph notlower notname notprint notpunct notspace notupper notxdigit npv nvalid nwkdom open ordinal pathname pctl pdf peek peekc peekclong peeklong perm pmt point poisson ppmt probbeta probbnml probbnrm probchi probf probgam probhypr probit probmc probnegb probnorm probt propcase prxchange prxmatch prxparen prxparse prxposn ptrlongadd put putc putn pvp qtr quantile quote ranbin rancau rand ranexp rangam range rank rannor ranpoi rantbl rantri ranuni rename repeat resolve reverse rewind right rms round rounde roundz saving savings scan sdf sec second sha256 sha256hex sha256hmachex sign sin sinh skewness sleep smallest soapweb soapwebmeta soapwipservice soapwipsrs soapws soapwsmeta soundex spedis sqrt squantile std stderr stfips stname stnamel strip subpad substr substrn sum sumabs symexist symget symglobl symlocal sysexist sysget sysmsg sysparm sysprocessid sysprocessname sysprod sysrc system tan tanh time timepart timevalue tinv tnonct today translate transtrn tranwrd trigamma trim trimn trunc tso typeof tzoneid tzonename tzoneoff tzones2u tzoneu2s uniform upcase urldecode urlencode uss uuidgen var varfmt varinfmt varlabel varlen varname varnum varray varrayx vartype verify vformat vformatd vformatdx vformatn vformatnx vformatw vformatwx vformatx vinarray vinarrayx vinformat vinformatd vinformatdx vinformatn vinformatnx vinformatw vinformatwx vinformatx vlabel vlabelx vlength vlengthx vname vnamex vtype vtypex vvalue vvaluex week weekday whichc whichn wto year yieldp yrdif yyq zipcity zipcitydistance zipfips zipname zipnamel zipstate contained
+syn keyword sasDataStepCallRoutineName allcomb allcombi allperm cats catt catx compcost execute graycode is8601_convert label lexcomb lexcombi lexperk lexperm logistic missing module poke pokelong prxchange prxdebug prxfree prxnext prxposn prxsubstr ranbin rancau rancomb ranexp rangam rannor ranperk ranperm ranpoi rantbl rantri ranuni scan set sleep softmax sortc sortn stdize streaminit symput symputx system tanh tso vname vnext wto contained
+syn region sasDataStepFunctionContext start='(' end=')' contained contains=@sasBasicSyntax,sasDataStepFunction
+syn region sasDataStepFunctionFormatContext start='(' end=')' contained contains=@sasBasicSyntax,sasDataStepFunction,sasFormat
+syn match sasDataStepFunction '\v<\w+\ze\(' contained contains=sasDataStepFunctionName,sasDataStepCallRoutineName nextgroup=sasDataStepFunctionContext
+syn match sasDataStepFunction '\v%(input|put)\ze\(' contained contains=sasDataStepFunctionName nextgroup=sasDataStepFunctionFormatContext
+syn keyword sasDataStepHashMethodName add check clear definedata definedone definekey delete do_over equals find find_next find_prev first has_next has_prev last next output prev ref remove removedup replace replacedup reset_dup setcur sum sumdup contained
+syn region sasDataStepHashMethodContext start='(' end=')' contained contains=@sasBasicSyntax,sasDataStepFunction
+syn match sasDataStepHashMethod '\v\.\w+\ze\(' contained contains=sasDataStepHashMethodName nextgroup=sasDataStepHashMethodContext
+syn keyword sasDataStepHashAttributeName item_size num_items contained
+syn match sasDataStepHashAttribute '\v\.\w+>\ze\_[^(]' display contained contains=sasDataStepHashAttributeName
+syn keyword sasDataStepControl continue do end go goto if leave link otherwise over return select to until when while contained
+syn keyword sasDataStepControl else then contained nextgroup=sasDataStepStatementKeyword skipwhite skipnl skipempty
+syn keyword sasDataStepHashOperator _new_ contained
+syn keyword sasDataStepStatementKeyword abort array attrib by call cards cards4 datalines datalines4 dcl declare delete describe display drop error execute file format infile informat input keep label length lines lines4 list lostcard merge modify output put putlog redirect remove rename replace retain set stop update where window contained
+syn keyword sasDataStepStatementHashKeyword hash hiter javaobj contained
+syn match sasDataStepStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasDataStepStatementKeyword,sasGlobalStatementKeyword
+syn match sasDataStepStatement '\v%(^|;)\s*\zs%(dcl|declare)>' display contained contains=sasDataStepStatementKeyword nextgroup=sasDataStepStatementHashKeyword skipwhite skipnl skipempty
+syn match sasDataStepStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty
+syn match sasDataStepStatement '\v%(^|;)\s*\zs%(format|informat|input|put)>' display contained contains=sasDataStepStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty
+syn match sasDataStepStatement '\v%(^|;)\s*\zs%(cards|datalines|lines)4=\s*;' display contained contains=sasDataStepStatementKeyword nextgroup=sasDataLine skipwhite skipnl skipempty
+syn region sasDataLine start='^' end='^\s*;'me=s-1 contained
+syn region sasDataStep matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsdata>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,@sasDataStepSyntax
+syn cluster sasDataStepSyntax contains=sasDataStepFunction,sasDataStepHashOperator,sasDataStepHashAttribute,sasDataStepHashMethod,sasDataStepControl,sasDataStepStatement
+
+" Procedures, base SAS, 9.4
+syn keyword sasProcStatementKeyword abort age append array attrib audit block break by calid cdfplot change checkbox class classlev column compute contents copy create datarow dbencoding define delete deletefunc deletesubr delimiter device dialog dur endcomp exact exchange exclude explore fin fmtlib fontfile fontpath format formats freq function getnames guessingrows hbar hdfs histogram holidur holifin holistart holivar id idlabel informat inset invalue item key keylabel keyword label line link listfunc listsubr mapmiss mapreduce mean menu messages meta modify opentype outargs outdur outfin output outstart pageby partial picture pie pig plot ppplot printer probplot profile prompter qqplot radiobox ranks rbreak rbutton rebuild record remove rename repair report roptions save select selection separator source star start statistics struct submenu subroutine sum sumby table tables test text trantab truetype type1 types value var vbar ways weight where with write contained
+syn match sasProcStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasProcStatementKeyword,sasGlobalStatementKeyword
+syn match sasProcStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty
+syn match sasProcStatement '\v%(^|;)\s*\zs%(format|informat)>' display contained contains=sasProcStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty
+syn region sasProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc%(\s+\h\w*)=>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasProcStatement
+syn region sasProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(catalog|chart|datasets|document|plot)>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasProcStatement
+
+" Procedures, SAS/GRAPH, 9.4
+syn keyword sasGraphProcStatementKeyword add area axis bar block bubble2 byline cc ccopy cdef cdelete chart cmap choro copy delete device dial donut exclude flow format fs goptions gout grid group hbar hbar3d hbullet hslider htrafficlight id igout label legend list modify move nobyline note pattern pie pie3d plot plot2 preview prism quit rename replay select scatter speedometer star surface symbol tc tcopy tdef tdelete template tile toggle treplay vbar vbar3d vtrafficlight vbullet vslider where contained
+syn match sasGraphProcStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasGraphProcStatementKeyword,sasGlobalStatementKeyword
+syn match sasGraphProcStatement '\v%(^|;)\s*\zsformat>' display contained contains=sasGraphProcStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty
+syn region sasGraphProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(g3d|g3grid|ganno|gcontour|gdevice|geocode|gfont|ginside|goptions|gproject|greduce|gremove|mapimport)>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasGraphProcStatement
+syn region sasGraphProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(gareabar|gbarline|gchart|gkpi|gmap|gplot|gradar|greplay|gslide|gtile)>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasGraphProcStatement
+
+" Procedures, SAS/STAT, 14.1
+syn keyword sasAnalyticalProcStatementKeyword absorb add array assess baseline bayes beginnodata bivar bootstrap bounds by cdfplot cells class cluster code compute condition contrast control coordinates copy cosan cov covtest coxreg der design determ deviance direct directions domain effect effectplot effpart em endnodata equality estimate exact exactoptions factor factors fcs filter fitindex format freq fwdlink gender grid group grow hazardratio height hyperprior id impjoint inset insetgroup invar invlink ippplot lincon lineqs lismod lmtests location logistic loglin lpredplot lsmeans lsmestimate manova matings matrix mcmc mean means missmodel mnar model modelaverage modeleffects monotone mstruct mtest multreg name nlincon nloptions oddsratio onecorr onesamplefreq onesamplemeans onewayanova outfiles output paired pairedfreq pairedmeans parameters parent parms partial partition path pathdiagram pcov performance plot population poststrata power preddist predict predpplot priors process probmodel profile prune pvar ram random ratio reference refit refmodel renameparm repeated replicate repweights response restore restrict retain reweight ridge rmsstd roc roccontrast rules samplesize samplingunit seed size scale score selection show simtests simulate slice std stderr store strata structeq supplementary table tables test testclass testfreq testfunc testid time transform treatments trend twosamplefreq twosamplemeans towsamplesurvival twosamplewilcoxon uds units univar var variance varnames weight where with zeromodel contained
+syn match sasAnalyticalProcStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasAnalyticalProcStatementKeyword,sasGlobalStatementKeyword
+syn match sasAnalyticalProcStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty
+syn match sasAnalyticalProcStatement '\v%(^|;)\s*\zsformat>' display contained contains=sasAnalyticalProcStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty
+syn region sasAnalyticalProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(aceclus|adaptivereg|bchoice|boxplot|calis|cancorr|candisc|cluster|corresp|discrim|distance|factor|fastclus|fmm|freq|gam|gampl|gee|genmod|glimmix|glmmod|glmpower|glmselect|hpcandisc|hpfmm|hpgenselect|hplmixed|hplogistic|hpmixed|hpnlmod|hppls|hpprincomp|hpquantselect|hpreg|hpsplit|iclifetest|icphreg|inbreed|irt|kde|krige2d|lattice|lifereg|lifetest|loess|logistic|mcmc|mds|mi|mianalyze|mixed|modeclus|multtest|nested|nlin|nlmixed|npar1way|orthoreg|phreg|plm|pls|power|princomp|prinqual|probit|quantlife|quantreg|quantselect|robustreg|rsreg|score|seqdesign|seqtest|sim2d|simnormal|spp|stdize|stdrate|stepdisc|surveyfreq|surveyimpute|surveylogistic|surveymeans|surveyphreg|surveyreg|surveyselect|tpspline|transreg|tree|ttest|varclus|varcomp|variogram)>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepControl,sasDataStepFunction,sasAnalyticalProcStatement
+syn region sasAnalyticalProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(anova|arima|catmod|factex|glm|model|optex|plan|reg)>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepControl,sasDataStepFunction,sasAnalyticalProcStatement
+
+" Procedures, ODS graphics, 9.4
+syn keyword sasODSGraphicsProcStatementKeyword band block bubble by colaxis compare dattrvar density dot dropline dynamic ellipse ellipseparm format fringe gradlegend hbar hbarbasic hbarparm hbox heatmap heatmapparm highlow histogram hline inset keylegend label lineparm loess matrix needle parent panelby pbspline plot polygon refline reg rowaxis scatter series spline step style styleattrs symbolchar symbolimage text vbar vbarbasic vbarparm vbox vector vline waterfall where xaxis x2axis yaxis y2axis yaxistable contained
+syn match sasODSGraphicsProcStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasODSGraphicsProcStatementKeyword,sasGlobalStatementKeyword
+syn match sasODSGraphicsProcStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty
+syn match sasODSGraphicsProcStatement '\v%(^|;)\s*\zsformat>' display contained contains=sasODSGraphicsProcStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty
+syn region sasODSGraphicsProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(sgdesign|sgpanel|sgplot|sgrender|sgscatter)>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasODSGraphicsProcStatement
+
+" Proc TEMPLATE, 9.4
+syn keyword sasProcTemplateClause as into
+syn keyword sasProcTemplateStatementKeyword block break cellstyle class close column compute continue define delete delstream do done dynamic edit else end eval flush footer header import iterate link list mvar ndent next nmvar notes open path put putl putlog putq putstream putvars replace set source stop style test text text2 text3 translate trigger unblock unset xdent contained
+syn keyword sasProcTemplateStatementComplexKeyword cellvalue column crosstabs event footer header statgraph style table tagset contained
+syn keyword sasProcTemplateGTLStatementKeyword axislegend axistable bandplot barchart barchartparm begingraph beginpolygon beginpolyline bihistogram3dparm blockplot boxplot boxplotparm bubbleplot continuouslegend contourplotparm dendrogram discretelegend drawarrow drawimage drawline drawoval drawrectangle drawtext dropline ellipse ellipseparm endgraph endinnermargin endlayout endpolygon endpolyline endsidebar entry entryfootnote entrytitle fringeplot heatmap heatmapparm highlowplot histogram histogramparm innermargin layout legenditem legendtextitems linechart lineparm loessplot mergedlegend modelband needleplot pbsplineplot polygonplot referenceline regressionplot scatterplot seriesplot sidebar stepplot surfaceplotparm symbolchar symbolimage textplot vectorplot waterfallchart contained
+syn keyword sasProcTemplateGTLComplexKeyword datalattice datapanel globallegend gridded lattice overlay overlayequated overlay3d region contained
+syn match sasProcTemplateStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasProcTemplateStatementKeyword,sasProcTemplateGTLStatementKeyword,sasGlobalStatementKeyword
+syn match sasProcTemplateStatement '\v%(^|;)\s*\zsdefine>' display contained contains=sasProcTemplateStatementKeyword nextgroup=sasProcTemplateStatementComplexKeyword skipwhite skipnl skipempty
+syn match sasProcTemplateStatement '\v%(^|;)\s*\zslayout>' display contained contains=sasProcTemplateGTLStatementKeyword nextgroup=sasProcTemplateGTLComplexKeyword skipwhite skipnl skipempty
+syn match sasProcTemplateStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty
+syn region sasProcTemplate matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+template>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasProcTemplateClause,sasProcTemplateStatement
+
+" Proc SQL, 9.4
+syn keyword sasProcSQLFunctionName avg count css cv freq max mean median min n nmiss prt range std stderr sum sumwgt t uss var contained
+syn region sasProcSQLFunctionContext start='(' end=')' contained contains=@sasBasicSyntax,sasProcSQLFunction
+syn match sasProcSQLFunction '\v<\w+\ze\(' contained contains=sasProcSQLFunctionName,sasDataStepFunctionName nextgroup=sasProcSQLFunctionContext
+syn keyword sasProcSQLClause add asc between by calculated cascade case check connection constraint cross desc distinct drop else end escape except exists foreign from full group having in inner intersect into is join key left libname like modify natural newline notrim null on order outer primary references restrict right separated set then to trimmed union unique user using values when where contained
+syn keyword sasProcSQLClause as contained nextgroup=sasProcSQLStatementKeyword skipwhite skipnl skipempty
+syn keyword sasProcSQLStatementKeyword connect delete disconnect execute insert reset select update validate contained
+syn keyword sasProcSQLStatementComplexKeyword alter create describe drop contained nextgroup=sasProcSQLStatementNextKeyword skipwhite skipnl skipempty
+syn keyword sasProcSQLStatementNextKeyword index table view contained
+syn match sasProcSQLStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasProcSQLStatementKeyword,sasGlobalStatementKeyword
+syn match sasProcSQLStatement '\v%(^|;)\s*\zs%(alter|create|describe|drop)>' display contained contains=sasProcSQLStatementComplexKeyword nextgroup=sasProcSQLStatementNextKeyword skipwhite skipnl skipempty
+syn match sasProcSQLStatement '\v%(^|;)\s*\zsvalidate>' display contained contains=sasProcSQLStatementKeyword nextgroup=sasProcSQLStatementKeyword,sasProcSQLStatementComplexKeyword skipwhite skipnl skipempty
+syn match sasProcSQLStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty
+syn region sasProcSQL matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+sql>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasProcSQLFunction,sasProcSQLClause,sasProcSQLStatement
+
+" SAS/DS2, 9.4
+syn keyword sasDS2FunctionName abs anyalnum anyalpha anycntrl anydigit anyfirst anygraph anylower anyname anyprint anypunct anyspace anyupper anyxdigit arcos arcosh arsin arsinh artanh atan atan2 band beta betainv blackclprc blackptprc blkshclprc blkshptprc blshift bnot bor brshift bxor byte cat cats catt catx ceil ceilz choosec choosen cmp cmpt coalesce coalescec comb compare compbl compfuzz compound compress constant convx convxp cos cosh count countc countw css cumipmt cumprinc cv datdif date datejul datepart datetime day dequote deviance dhms dif digamma dim divide dur durp effrate erf erfc exp fact find findc findw floor floorz fmtinfo fuzz gaminv gamma garkhclprc garkhptprc gcd geodist geomean geomeanz harmean harmeanz hbound hms holiday hour index indexc indexw inputc inputn int intcindex intck intcycle intdt intfit intget intindex intnest intnx intrr intseas intshift inttest intts intz ipmt iqr irr juldate juldate7 kcount kstrcat kstrip kupdate kupdates kurtosis lag largest lbound lcm left length lengthc lengthm lengthn lgamma log logbeta log10 log1px log2 lowcase mad margrclprc margrptprc max md5 mdy mean median min minute missing mod modz month mort n ndims netpv nmiss nomrate notalnum notalpha notcntrl notdigit notfirst notgraph notlower notname notprint notpunct notspace notupper notxdigit npv null nwkdom ordinal pctl perm pmt poisson power ppmt probbeta probbnml probbnrm probchi probdf probf probgam probhypr probit probmc probmed probnegb probnorm probt prxchange prxmatch prxparse prxposn put pvp qtr quote ranbin rancau rand ranexp rangam range rank rannor ranpoi rantbl rantri ranuni repeat reverse right rms round rounde roundz savings scan sec second sha256hex sha256hmachex sign sin sinh skewness sleep smallest sqlexec sqrt std stderr streaminit strip substr substrn sum sumabs tan tanh time timepart timevalue tinv to_date to_double to_time to_timestamp today translate transtrn tranwrd trigamma trim trimn trunc uniform upcase uss uuidgen var verify vformat vinarray vinformat vlabel vlength vname vtype week weekday whichc whichn year yieldp yrdif yyq contained
+syn region sasDS2FunctionContext start='(' end=')' contained contains=@sasBasicSyntax,sasDS2Function
+syn match sasDS2Function '\v<\w+\ze\(' contained contains=sasDS2FunctionName nextgroup=sasDS2FunctionContext
+syn keyword sasDS2Control continue data dcl declare do drop else end enddata endpackage endthread from go goto if leave method otherwise package point return select then thread to until when while contained
+syn keyword sasDS2StatementKeyword array by forward keep merge output put rename retain set stop vararray varlist contained
+syn keyword sasDS2StatementComplexKeyword package thread contained
+syn match sasDS2Statement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasDS2StatementKeyword,sasGlobalStatementKeyword
+syn match sasDS2Statement '\v%(^|;)\s*\zs%(dcl|declare|drop)>' display contained contains=sasDS2StatementKeyword nextgroup=sasDS2StatementComplexKeyword skipwhite skipnl skipempty
+syn match sasDS2Statement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty
+syn region sasDS2 matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+ds2>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDS2Function,sasDS2Control,sasDS2Statement
+
+" SAS/IML, 14.1
+syn keyword sasIMLFunctionName abs all allcomb allperm any apply armasim bin blankstr block branks bspline btran byte char choose col colvec concat contents convexit corr corr2cov countmiss countn countunique cov cov2corr covlag cshape cusum cuprod cv cvexhull datasets design designf det diag dif dimension distance do duration echelon eigval eigvec element exp expmatrix expandgrid fft forward froot full gasetup geomean ginv hadamard half hankel harmean hdir hermite homogen i ifft insert int inv invupdt isempty isskipped j jroot kurtosis lag length loc log logabsdet mad magic mahalanobis max mean median min mod moduleic modulein name ncol ndx2sub nleng norm normal nrow num opscal orpol parentname palette polyroot prod product pv quartile rancomb randdirichlet randfun randmultinomial randmvt randnormal randwishart ranperk ranperm range rank ranktie rates ratio remove repeat root row rowcat rowcatc rowvec rsubstr sample setdif shape shapecol skewness solve sparse splinev spot sqrsym sqrt sqrvech ssq standard std storage sub2ndx substr sum sweep symsqr t toeplitz trace trisolv type uniform union unique uniqueby value var vecdiag vech xmult xsect yield contained
+syn keyword sasIMLCallRoutineName appcort armacov armalik bar box change comport delete eigen execute exportdatasettor exportmatrixtor farmacov farmafit farmalik farmasim fdif gaend gagetmem gagetval gainit gareeval garegen gasetcro gasetmut gasetobj gasetsel gblkvp gblkvpd gclose gdelete gdraw gdrawl geneig ggrid ginclude gopen gpie gpiexy gpoint gpoly gport gportpop gportstk gscale gscript gset gshow gsorth gstart gstop gstrlen gtext gvtext gwindow gxaxis gyaxis heatmapcont heatmapdisc histogram importdatasetfromr importmatrixfromr ipf itsolver kalcvf kalcvs kaldff kaldfs lav lcp lms lp lpsolve lts lupdt marg maxqform mcd milpsolve modulei mve nlpcg nlpdd nlpfdd nlpfea nlphqn nlplm nlpnms nlpnra nlpnrr nlpqn nlpqua nlptr ode odsgraph ortvec pgraf push qntl qr quad queue randgen randseed rdodt rupdt rename rupdt rzlind scatter seq seqscale seqshift seqscale seqshift series solvelin sort sortndx sound spline splinec svd tabulate tpspline tpsplnev tsbaysea tsdecomp tsmlocar tsmlomar tsmulmar tspears tspred tsroot tstvcar tsunimar valset varmacov varmalik varmasim vnormal vtsroot wavft wavget wavift wavprint wavthrsh contained
+syn region sasIMLFunctionContext start='(' end=')' contained contains=@sasBasicSyntax,sasIMLFunction
+syn match sasIMLFunction '\v<\w+\ze\(' contained contains=sasIMLFunctionName,sasDataStepFunction nextgroup=sasIMLFunctionContext
+syn keyword sasIMLControl abort by do else end finish goto if link pause quit resume return run start stop then to until while contained
+syn keyword sasIMLStatementKeyword append call close closefile create delete display edit file find force free index infile input list load mattrib print purge read remove replace reset save setin setout show sort store summary use window contained
+syn match sasIMLStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasIMLStatementKeyword,sasGlobalStatementKeyword
+syn match sasIMLStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty
+syn region sasIML matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+iml>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasIMLFunction,sasIMLControl,sasIMLStatement
+
+" Macro definition
+syn region sasMacro start='\v\%macro>' end='\v\%mend>' fold keepend contains=@sasBasicSyntax,@sasDataStepSyntax,sasDataStep,sasProc,sasODSGraphicsProc,sasGraphProc,sasAnalyticalProc,sasProcTemplate,sasProcSQL,sasDS2,sasIML
+
+" Define default highlighting
+hi def link sasComment Comment
+hi def link sasTodo Delimiter
+hi def link sasSectLbl Title
+hi def link sasSectLblEnds Comment
+hi def link sasNumber Number
+hi def link sasDateTime Constant
+hi def link sasString String
+hi def link sasDataStepControl Keyword
+hi def link sasProcTemplateClause Keyword
+hi def link sasProcSQLClause Keyword
+hi def link sasDS2Control Keyword
+hi def link sasIMLControl Keyword
+hi def link sasOperator Operator
+hi def link sasGlobalStatementKeyword Statement
+hi def link sasGlobalStatementODSKeyword Statement
+hi def link sasSectionKeyword Statement
+hi def link sasDataStepFunctionName Function
+hi def link sasDataStepCallRoutineName Function
+hi def link sasDataStepStatementKeyword Statement
+hi def link sasDataStepStatementHashKeyword Statement
+hi def link sasDataStepHashOperator Operator
+hi def link sasDataStepHashMethodName Function
+hi def link sasDataStepHashAttributeName Identifier
+hi def link sasProcStatementKeyword Statement
+hi def link sasODSGraphicsProcStatementKeyword Statement
+hi def link sasGraphProcStatementKeyword Statement
+hi def link sasAnalyticalProcStatementKeyword Statement
+hi def link sasProcTemplateStatementKeyword Statement
+hi def link sasProcTemplateStatementComplexKeyword Statement
+hi def link sasProcTemplateGTLStatementKeyword Statement
+hi def link sasProcTemplateGTLComplexKeyword Statement
+hi def link sasProcSQLFunctionName Function
+hi def link sasProcSQLStatementKeyword Statement
+hi def link sasProcSQLStatementComplexKeyword Statement
+hi def link sasProcSQLStatementNextKeyword Statement
+hi def link sasDS2FunctionName Function
+hi def link sasDS2StatementKeyword Statement
+hi def link sasIMLFunctionName Function
+hi def link sasIMLCallRoutineName Function
+hi def link sasIMLStatementKeyword Statement
+hi def link sasMacroReserved PreProc
+hi def link sasMacroVariable Define
+hi def link sasMacroFunctionName Define
+hi def link sasDataLine SpecialChar
+hi def link sasFormat SpecialChar
+hi def link sasReserved Special
+
+" Syncronize from beginning to keep large blocks from losing
+" syntax coloring while moving through code.
+syn sync fromstart
+
+let b:current_syntax = "sas"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/sass.vim b/runtime/syntax/sass.vim
new file mode 100644
index 0000000..8f41aba
--- /dev/null
+++ b/runtime/syntax/sass.vim
@@ -0,0 +1,106 @@
+" Vim syntax file
+" Language: Sass
+" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
+" Filenames: *.sass
+" Last Change: 2022 Mar 15
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/css.vim
+
+syn case ignore
+
+syn cluster sassCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp
+syn cluster sassCssAttributes contains=css.*Attr,sassEndOfLineComment,scssComment,cssValue.*,cssColor,cssURL,sassDefault,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp
+
+syn region sassDefinition matchgroup=cssBraces start="{" end="}" contains=TOP
+
+syn match sassProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:" contains=css.*Prop skipwhite nextgroup=sassCssAttribute contained containedin=sassDefinition
+syn match sassProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute
+syn match sassProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute
+syn match sassCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@sassCssAttributes,sassVariable,sassFunction,sassInterpolation
+syn match sassFlag "!\%(default\|global\|optional\)\>" contained
+syn match sassVariable "$[[:alnum:]_-]\+"
+syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=\%(||\)\==" nextgroup=sassCssAttribute skipwhite
+syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=:" nextgroup=sassCssAttribute skipwhite
+
+syn match sassFunction "\<\%(rgb\|rgba\|red\|green\|blue\|mix\)\>(\@=" contained
+syn match sassFunction "\<\%(hsl\|hsla\|hue\|saturation\|lightness\|adjust-hue\|lighten\|darken\|saturate\|desaturate\|grayscale\|complement\)\>(\@=" contained
+syn match sassFunction "\<\%(alpha\|opacity\|rgba\|opacify\|fade-in\|transparentize\|fade-out\)\>(\@=" contained
+syn match sassFunction "\<\%(unquote\|quote\)\>(\@=" contained
+syn match sassFunction "\<\%(percentage\|round\|ceil\|floor\|abs\)\>(\@=" contained
+syn match sassFunction "\<\%(type-of\|unit\|unitless\|comparable\)\>(\@=" contained
+
+syn region sassInterpolation matchgroup=sassInterpolationDelimiter start="#{" end="}" contains=@sassCssAttributes,sassVariable,sassFunction containedin=cssStringQ,cssStringQQ,cssPseudoClass,sassProperty
+
+syn match sassMixinName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute
+syn match sassMixin "^=" nextgroup=sassMixinName skipwhite
+syn match sassMixin "\%([{};]\s*\|^\s*\)\@<=@mixin" nextgroup=sassMixinName skipwhite
+syn match sassMixing "^\s\+\zs+" nextgroup=sassMixinName
+syn match sassMixing "\%([{};]\s*\|^\s*\)\@<=@include" nextgroup=sassMixinName skipwhite
+syn match sassExtend "\%([{};]\s*\|^\s*\)\@<=@extend"
+
+syn match sassFunctionName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute
+syn match sassFunctionDecl "\%([{};]\s*\|^\s*\)\@<=@function" nextgroup=sassFunctionName skipwhite
+syn match sassReturn "\%([{};]\s*\|^\s*\)\@<=@return"
+
+syn match sassEscape "^\s*\zs\\"
+syn match sassIdChar "#[[:alnum:]_-]\@=" nextgroup=sassId
+syn match sassId "[[:alnum:]_-]\+" contained
+syn match sassClassChar "\.[[:alnum:]_-]\@=" nextgroup=sassClass
+syn match sassPlaceholder "\%([{};]\s*\|^\s*\)\@<=%" nextgroup=sassClass
+syn match sassClass "[[:alnum:]_-]\+" contained
+syn match sassAmpersand "&"
+
+" TODO: Attribute namespaces
+" TODO: Arithmetic (including strings and concatenation)
+
+syn region sassMediaQuery matchgroup=sassMedia start="@media" end="[{};]\@=\|$" contains=sassMediaOperators
+syn region sassKeyframe matchgroup=cssAtKeyword start=/@\(-[a-z]\+-\)\=keyframes\>/ end=";\|$" contains=cssVendor,cssComment nextgroup=cssDefinition
+syn keyword sassMediaOperators and not only contained
+syn region sassCharset start="@charset" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType
+syn region sassInclude start="@import" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType
+syn region sassDebugLine end=";\|$" matchgroup=sassDebug start="@debug\>" contains=@sassCssAttributes,sassVariable,sassFunction
+syn region sassWarnLine end=";\|$" matchgroup=sassWarn start="@warn\>" contains=@sassCssAttributes,sassVariable,sassFunction
+syn region sassControlLine matchgroup=sassControl start="@\%(if\|else\%(\s\+if\)\=\|while\|for\|each\)\>" end="[{};]\@=\|$" contains=sassFor,@sassCssAttributes,sassVariable,sassFunction
+syn keyword sassFor from to through in contained
+
+syn keyword sassTodo FIXME NOTE TODO OPTIMIZE XXX contained
+syn region sassComment start="^\z(\s*\)//" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell
+syn region sassCssComment start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell
+syn match sassEndOfLineComment "//.*" contains=sassComment,sassTodo,@Spell
+
+hi def link sassEndOfLineComment sassComment
+hi def link sassCssComment sassComment
+hi def link sassComment Comment
+hi def link sassFlag cssImportant
+hi def link sassVariable Identifier
+hi def link sassFunction Function
+hi def link sassMixing PreProc
+hi def link sassMixin PreProc
+hi def link sassPlaceholder sassClassChar
+hi def link sassExtend PreProc
+hi def link sassFunctionDecl PreProc
+hi def link sassReturn PreProc
+hi def link sassTodo Todo
+hi def link sassCharset PreProc
+hi def link sassMedia PreProc
+hi def link sassMediaOperators PreProc
+hi def link sassInclude Include
+hi def link sassDebug sassControl
+hi def link sassWarn sassControl
+hi def link sassControl PreProc
+hi def link sassFor PreProc
+hi def link sassEscape Special
+hi def link sassIdChar Special
+hi def link sassClassChar Special
+hi def link sassInterpolationDelimiter Delimiter
+hi def link sassAmpersand Character
+hi def link sassId Identifier
+hi def link sassClass Type
+
+let b:current_syntax = "sass"
+
+" vim:set sw=2:
diff --git a/runtime/syntax/sather.vim b/runtime/syntax/sather.vim
new file mode 100644
index 0000000..de8bdad
--- /dev/null
+++ b/runtime/syntax/sather.vim
@@ -0,0 +1,92 @@
+" Vim syntax file
+" Language: Sather/pSather
+" Maintainer: Claudio Fleiner <claudio@fleiner.com>
+" URL: http://www.fleiner.com/vim/syntax/sather.vim
+" Last Change: 2003 May 11
+
+" Sather is a OO-language developped at the International Computer Science
+" Institute (ICSI) in Berkeley, CA. pSather is a parallel extension to Sather.
+" Homepage: http://www.icsi.berkeley.edu/~sather
+" Sather files use .sa as suffix
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" keyword definitions
+syn keyword satherExternal extern
+syn keyword satherBranch break continue
+syn keyword satherLabel when then
+syn keyword satherConditional if else elsif end case typecase assert with
+syn match satherConditional "near$"
+syn match satherConditional "far$"
+syn match satherConditional "near *[^(]"he=e-1
+syn match satherConditional "far *[^(]"he=e-1
+syn keyword satherSynchronize lock guard sync
+syn keyword satherRepeat loop parloop do
+syn match satherRepeat "while!"
+syn match satherRepeat "break!"
+syn match satherRepeat "until!"
+syn keyword satherBoolValue true false
+syn keyword satherValue self here cluster
+syn keyword satherOperator new "== != & ^ | && ||
+syn keyword satherOperator and or not
+syn match satherOperator "[#!]"
+syn match satherOperator ":-"
+syn keyword satherType void attr where
+syn match satherType "near *("he=e-1
+syn match satherType "far *("he=e-1
+syn keyword satherStatement return
+syn keyword satherStorageClass static const
+syn keyword satherExceptions try raise catch
+syn keyword satherMethodDecl is pre post
+syn keyword satherClassDecl abstract value class include
+syn keyword satherScopeDecl public private readonly
+
+
+syn match satherSpecial contained "\\\d\d\d\|\\."
+syn region satherString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=satherSpecial
+syn match satherCharacter "'[^\\]'"
+syn match satherSpecialCharacter "'\\.'"
+syn match satherNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
+syn match satherCommentSkip contained "^\s*\*\($\|\s\+\)"
+syn region satherComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+$\|"+ contains=satherSpecial
+syn match satherComment "--.*" contains=satherComment2String,satherCharacter,satherNumber
+
+
+syn sync ccomment satherComment
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link satherBranch satherStatement
+hi def link satherLabel satherStatement
+hi def link satherConditional satherStatement
+hi def link satherSynchronize satherStatement
+hi def link satherRepeat satherStatement
+hi def link satherExceptions satherStatement
+hi def link satherStorageClass satherDeclarative
+hi def link satherMethodDecl satherDeclarative
+hi def link satherClassDecl satherDeclarative
+hi def link satherScopeDecl satherDeclarative
+hi def link satherBoolValue satherValue
+hi def link satherSpecial satherValue
+hi def link satherString satherValue
+hi def link satherCharacter satherValue
+hi def link satherSpecialCharacter satherValue
+hi def link satherNumber satherValue
+hi def link satherStatement Statement
+hi def link satherOperator Statement
+hi def link satherComment Comment
+hi def link satherType Type
+hi def link satherValue String
+hi def link satherString String
+hi def link satherSpecial String
+hi def link satherCharacter String
+hi def link satherDeclarative Type
+hi def link satherExternal PreCondit
+
+let b:current_syntax = "sather"
+
+" vim: ts=8
diff --git a/runtime/syntax/sbt.vim b/runtime/syntax/sbt.vim
new file mode 100644
index 0000000..cbf73be
--- /dev/null
+++ b/runtime/syntax/sbt.vim
@@ -0,0 +1,32 @@
+" Vim syntax file
+" Language: sbt
+" Maintainer: Steven Dobay <stevendobay at protonmail.com>
+" Last Change: 2017.04.30
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/scala.vim
+
+syn region sbtString start="\"[^"]" skip="\\\"" end="\"" contains=sbtStringEscape
+syn match sbtStringEscape "\\u[0-9a-fA-F]\{4}" contained
+syn match sbtStringEscape "\\[nrfvb\\\"]" contained
+
+syn match sbtIdentitifer "^\S\+\ze\s*\(:=\|++=\|+=\|<<=\|<+=\)"
+syn match sbtBeginningSeq "^[Ss]eq\>"
+
+syn match sbtSpecial "\(:=\|++=\|+=\|<<=\|<+=\)"
+
+syn match sbtLineComment "//.*"
+syn region sbtComment start="/\*" end="\*/"
+syn region sbtDocComment start="/\*\*" end="\*/" keepend
+
+hi link sbtString String
+hi link sbtIdentitifer Keyword
+hi link sbtBeginningSeq Keyword
+hi link sbtSpecial Special
+hi link sbtComment Comment
+hi link sbtLineComment Comment
+hi link sbtDocComment Comment
+
diff --git a/runtime/syntax/scala.vim b/runtime/syntax/scala.vim
new file mode 100644
index 0000000..c08e60e
--- /dev/null
+++ b/runtime/syntax/scala.vim
@@ -0,0 +1,233 @@
+" Vim syntax file
+" Language: Scala
+" Maintainer: Derek Wyatt
+" URL: https://github.com/derekwyatt/vim-scala
+" License: Same as Vim
+" Last Change: 23 January 2022
+" ----------------------------------------------------------------------------
+
+if !exists('main_syntax')
+ " quit when a syntax file was already loaded
+ if exists("b:current_syntax")
+ finish
+ endif
+ let main_syntax = 'scala'
+endif
+
+scriptencoding utf-8
+
+let b:current_syntax = "scala"
+
+" Allows for embedding, see #59; main_syntax convention instead? Refactor TOP
+"
+" The @Spell here is a weird hack, it means *exclude* if the first group is
+" TOP. Otherwise we get spelling errors highlighted on code elements that
+" match scalaBlock, even with `syn spell notoplevel`.
+function! s:ContainedGroup()
+ try
+ silent syn list @scala
+ return '@scala,@NoSpell'
+ catch /E392/
+ return 'TOP,@Spell'
+ endtry
+endfunction
+
+unlet! b:current_syntax
+
+syn case match
+syn sync minlines=200 maxlines=1000
+
+syn keyword scalaKeyword catch do else final finally for forSome if
+syn keyword scalaKeyword match return throw try while yield macro
+syn keyword scalaKeyword class trait object extends with nextgroup=scalaInstanceDeclaration skipwhite
+syn keyword scalaKeyword case nextgroup=scalaKeyword,scalaCaseFollowing skipwhite
+syn keyword scalaKeyword val nextgroup=scalaNameDefinition,scalaQuasiQuotes skipwhite
+syn keyword scalaKeyword def var nextgroup=scalaNameDefinition skipwhite
+hi def link scalaKeyword Keyword
+
+exe 'syn region scalaBlock start=/{/ end=/}/ contains=' . s:ContainedGroup() . ' fold'
+
+syn keyword scalaAkkaSpecialWord when goto using startWith initialize onTransition stay become unbecome
+hi def link scalaAkkaSpecialWord PreProc
+
+syn keyword scalatestSpecialWord shouldBe
+syn match scalatestShouldDSLA /^\s\+\zsit should/
+syn match scalatestShouldDSLB /\<should\>/
+hi def link scalatestSpecialWord PreProc
+hi def link scalatestShouldDSLA PreProc
+hi def link scalatestShouldDSLB PreProc
+
+syn match scalaSymbol /'[_A-Za-z0-9$]\+/
+hi def link scalaSymbol Number
+
+syn match scalaChar /'.'/
+syn match scalaChar /'\\[\\"'ntbrf]'/ contains=scalaEscapedChar
+syn match scalaChar /'\\u[A-Fa-f0-9]\{4}'/ contains=scalaUnicodeChar
+syn match scalaEscapedChar /\\[\\"'ntbrf]/
+syn match scalaUnicodeChar /\\u[A-Fa-f0-9]\{4}/
+hi def link scalaChar Character
+hi def link scalaEscapedChar Special
+hi def link scalaUnicodeChar Special
+
+syn match scalaOperator "||"
+syn match scalaOperator "&&"
+syn match scalaOperator "|"
+syn match scalaOperator "&"
+hi def link scalaOperator Special
+
+syn match scalaNameDefinition /\<[_A-Za-z0-9$]\+\>/ contained nextgroup=scalaPostNameDefinition,scalaVariableDeclarationList
+syn match scalaNameDefinition /`[^`]\+`/ contained nextgroup=scalaPostNameDefinition
+syn match scalaVariableDeclarationList /\s*,\s*/ contained nextgroup=scalaNameDefinition
+syn match scalaPostNameDefinition /\_s*:\_s*/ contained nextgroup=scalaTypeDeclaration
+hi def link scalaNameDefinition Function
+
+syn match scalaInstanceDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaInstanceHash
+syn match scalaInstanceDeclaration /`[^`]\+`/ contained
+syn match scalaInstanceHash /#/ contained nextgroup=scalaInstanceDeclaration
+hi def link scalaInstanceDeclaration Special
+hi def link scalaInstanceHash Type
+
+syn match scalaUnimplemented /???/
+hi def link scalaUnimplemented ERROR
+
+syn match scalaCapitalWord /\<[A-Z][A-Za-z0-9$]*\>/
+hi def link scalaCapitalWord Special
+
+" Handle type declarations specially
+syn region scalaTypeStatement matchgroup=Keyword start=/\<type\_s\+\ze/ end=/$/ contains=scalaTypeTypeDeclaration,scalaSquareBrackets,scalaTypeTypeEquals,scalaTypeStatement
+
+" Ugh... duplication of all the scalaType* stuff to handle special highlighting
+" of `type X =` declarations
+syn match scalaTypeTypeDeclaration /(/ contained nextgroup=scalaTypeTypeExtension,scalaTypeTypeEquals contains=scalaRoundBrackets skipwhite
+syn match scalaTypeTypeDeclaration /\%(⇒\|=>\)\ze/ contained nextgroup=scalaTypeTypeDeclaration contains=scalaTypeTypeExtension skipwhite
+syn match scalaTypeTypeDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeTypeExtension,scalaTypeTypeEquals skipwhite
+syn match scalaTypeTypeEquals /=\ze[^>]/ contained nextgroup=scalaTypeTypePostDeclaration skipwhite
+syn match scalaTypeTypeExtension /)\?\_s*\zs\%(⇒\|=>\|<:\|:>\|=:=\|::\|#\)/ contained contains=scalaTypeOperator nextgroup=scalaTypeTypeDeclaration skipwhite
+syn match scalaTypeTypePostDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeTypePostExtension skipwhite
+syn match scalaTypeTypePostExtension /\%(⇒\|=>\|<:\|:>\|=:=\|::\)/ contained contains=scalaTypeOperator nextgroup=scalaTypeTypePostDeclaration skipwhite
+hi def link scalaTypeTypeDeclaration Type
+hi def link scalaTypeTypeExtension Keyword
+hi def link scalaTypeTypePostDeclaration Special
+hi def link scalaTypeTypePostExtension Keyword
+
+syn match scalaTypeDeclaration /(/ contained nextgroup=scalaTypeExtension contains=scalaRoundBrackets skipwhite
+syn match scalaTypeDeclaration /\%(⇒\|=>\)\ze/ contained nextgroup=scalaTypeDeclaration contains=scalaTypeExtension skipwhite
+syn match scalaTypeDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeExtension skipwhite
+syn match scalaTypeExtension /)\?\_s*\zs\%(⇒\|=>\|<:\|:>\|=:=\|::\|#\)/ contained contains=scalaTypeOperator nextgroup=scalaTypeDeclaration skipwhite
+hi def link scalaTypeDeclaration Type
+hi def link scalaTypeExtension Keyword
+hi def link scalaTypePostExtension Keyword
+
+syn match scalaTypeAnnotation /\%([_a-zA-Z0-9$\s]:\_s*\)\ze[_=(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeDeclaration contains=scalaRoundBrackets
+syn match scalaTypeAnnotation /)\_s*:\_s*\ze[_=(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeDeclaration
+hi clear scalaTypeAnnotation
+
+syn match scalaCaseFollowing /\<[_\.A-Za-z0-9$]\+\>/ contained contains=scalaCapitalWord
+syn match scalaCaseFollowing /`[^`]\+`/ contained contains=scalaCapitalWord
+hi def link scalaCaseFollowing Special
+
+syn keyword scalaKeywordModifier abstract override final lazy implicit private protected sealed null super
+syn keyword scalaSpecialFunction implicitly require
+hi def link scalaKeywordModifier Function
+hi def link scalaSpecialFunction Function
+
+syn keyword scalaSpecial this true false ne eq
+syn keyword scalaSpecial new nextgroup=scalaInstanceDeclaration skipwhite
+syn match scalaSpecial "\%(=>\|⇒\|<-\|â†\|->\|→\)"
+syn match scalaSpecial /`[^`]\+`/ " Backtick literals
+hi def link scalaSpecial PreProc
+
+syn keyword scalaExternal package import
+hi def link scalaExternal Include
+
+syn match scalaStringEmbeddedQuote /\\"/ contained
+syn region scalaString start=/"/ end=/"/ contains=scalaStringEmbeddedQuote,scalaEscapedChar,scalaUnicodeChar
+hi def link scalaString String
+hi def link scalaStringEmbeddedQuote String
+
+syn region scalaIString matchgroup=scalaInterpolationBrackets start=/\<[a-zA-Z][a-zA-Z0-9_]*"/ skip=/\\"/ end=/"/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar
+syn region scalaTripleIString matchgroup=scalaInterpolationBrackets start=/\<[a-zA-Z][a-zA-Z0-9_]*"""/ end=/"""\ze\%([^"]\|$\)/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar
+hi def link scalaIString String
+hi def link scalaTripleIString String
+
+syn match scalaInterpolation /\$[a-zA-Z0-9_$]\+/ contained
+exe 'syn region scalaInterpolationB matchgroup=scalaInterpolationBoundary start=/\${/ end=/}/ contained contains=' . s:ContainedGroup()
+hi def link scalaInterpolation Function
+hi clear scalaInterpolationB
+
+syn region scalaFString matchgroup=scalaInterpolationBrackets start=/f"/ skip=/\\"/ end=/"/ contains=scalaFInterpolation,scalaFInterpolationB,scalaEscapedChar,scalaUnicodeChar
+syn match scalaFInterpolation /\$[a-zA-Z0-9_$]\+\(%[-A-Za-z0-9\.]\+\)\?/ contained
+exe 'syn region scalaFInterpolationB matchgroup=scalaInterpolationBoundary start=/${/ end=/}\(%[-A-Za-z0-9\.]\+\)\?/ contained contains=' . s:ContainedGroup()
+hi def link scalaFString String
+hi def link scalaFInterpolation Function
+hi clear scalaFInterpolationB
+
+syn region scalaTripleString start=/"""/ end=/"""\%([^"]\|$\)/ contains=scalaEscapedChar,scalaUnicodeChar
+syn region scalaTripleFString matchgroup=scalaInterpolationBrackets start=/f"""/ end=/"""\%([^"]\|$\)/ contains=scalaFInterpolation,scalaFInterpolationB,scalaEscapedChar,scalaUnicodeChar
+hi def link scalaTripleString String
+hi def link scalaTripleFString String
+
+hi def link scalaInterpolationBrackets Special
+hi def link scalaInterpolationBoundary Function
+
+syn match scalaNumber /\<0[dDfFlL]\?\>/ " Just a bare 0
+syn match scalaNumber /\<[1-9]\d*[dDfFlL]\?\>/ " A multi-digit number - octal numbers with leading 0's are deprecated in Scala
+syn match scalaNumber /\<0[xX][0-9a-fA-F]\+[dDfFlL]\?\>/ " Hex number
+syn match scalaNumber /\%(\<\d\+\.\d*\|\.\d\+\)\%([eE][-+]\=\d\+\)\=[fFdD]\=/ " exponential notation 1
+syn match scalaNumber /\<\d\+[eE][-+]\=\d\+[fFdD]\=\>/ " exponential notation 2
+syn match scalaNumber /\<\d\+\%([eE][-+]\=\d\+\)\=[fFdD]\>/ " exponential notation 3
+hi def link scalaNumber Number
+
+syn region scalaRoundBrackets start="(" end=")" skipwhite contained contains=scalaTypeDeclaration,scalaSquareBrackets,scalaRoundBrackets
+
+syn region scalaSquareBrackets matchgroup=scalaSquareBracketsBrackets start="\[" end="\]" skipwhite nextgroup=scalaTypeExtension contains=scalaTypeDeclaration,scalaSquareBrackets,scalaTypeOperator,scalaTypeAnnotationParameter
+syn match scalaTypeOperator /[-+=:<>]\+/ contained
+syn match scalaTypeAnnotationParameter /@\<[`_A-Za-z0-9$]\+\>/ contained
+hi def link scalaSquareBracketsBrackets Type
+hi def link scalaTypeOperator Keyword
+hi def link scalaTypeAnnotationParameter Function
+
+syn match scalaShebang "\%^#!.*" display
+syn region scalaMultilineComment start="/\*" end="\*/" contains=scalaMultilineComment,scalaDocLinks,scalaParameterAnnotation,scalaCommentAnnotation,scalaTodo,scalaCommentCodeBlock,@Spell keepend fold
+syn match scalaCommentAnnotation "@[_A-Za-z0-9$]\+" contained
+syn match scalaParameterAnnotation "\%(@tparam\|@param\|@see\)" nextgroup=scalaParamAnnotationValue skipwhite contained
+syn match scalaParamAnnotationValue /[.`_A-Za-z0-9$]\+/ contained
+syn region scalaDocLinks start="\[\[" end="\]\]" contained
+syn region scalaCommentCodeBlock matchgroup=Keyword start="{{{" end="}}}" contained
+syn match scalaTodo "\vTODO|FIXME|XXX" contained
+hi def link scalaShebang Comment
+hi def link scalaMultilineComment Comment
+hi def link scalaDocLinks Function
+hi def link scalaParameterAnnotation Function
+hi def link scalaParamAnnotationValue Keyword
+hi def link scalaCommentAnnotation Function
+hi def link scalaCommentCodeBlock String
+hi def link scalaTodo Todo
+
+syn match scalaAnnotation /@\<[`_A-Za-z0-9$]\+\>/
+hi def link scalaAnnotation PreProc
+
+syn match scalaTrailingComment "//.*$" contains=scalaTodo,@Spell
+hi def link scalaTrailingComment Comment
+
+syn match scalaAkkaFSM /goto([^)]*)\_s\+\<using\>/ contains=scalaAkkaFSMGotoUsing
+syn match scalaAkkaFSM /stay\_s\+using/
+syn match scalaAkkaFSM /^\s*stay\s*$/
+syn match scalaAkkaFSM /when\ze([^)]*)/
+syn match scalaAkkaFSM /startWith\ze([^)]*)/
+syn match scalaAkkaFSM /initialize\ze()/
+syn match scalaAkkaFSM /onTransition/
+syn match scalaAkkaFSM /onTermination/
+syn match scalaAkkaFSM /whenUnhandled/
+syn match scalaAkkaFSMGotoUsing /\<using\>/
+syn match scalaAkkaFSMGotoUsing /\<goto\>/
+hi def link scalaAkkaFSM PreProc
+hi def link scalaAkkaFSMGotoUsing PreProc
+
+let b:current_syntax = 'scala'
+
+if main_syntax ==# 'scala'
+ unlet main_syntax
+endif
+
+" vim:set sw=2 sts=2 ts=8 et:
diff --git a/runtime/syntax/scdoc.vim b/runtime/syntax/scdoc.vim
new file mode 100644
index 0000000..0180f35
--- /dev/null
+++ b/runtime/syntax/scdoc.vim
@@ -0,0 +1,63 @@
+" Syntax file for scdoc files
+" Maintainer: Gregory Anders <contact@gpanders.com>
+" Last Updated: 2022-05-09
+" Upstream: https://github.com/gpanders/vim-scdoc
+
+if exists('b:current_syntax')
+ finish
+endif
+let b:current_syntax = 'scdoc'
+
+syntax match scdocFirstLineError "\%^.*$"
+syntax match scdocFirstLineValid "\%^\S\+(\d[0-9A-Za-z]*)\%(\s\+\"[^"]*\"\%(\s\+\"[^"]*\"\)\=\)\=$"
+
+syntax region scdocCommentError start="^;\S" end="$" keepend
+syntax region scdocComment start="^; " end="$" keepend
+
+syntax region scdocHeaderError start="^#\{3,}" end="$" keepend
+syntax region scdocHeader start="^#\{1,2}" end="$" keepend
+
+syntax match scdocIndentError "^[ ]\+"
+
+syntax match scdocLineBreak "++$"
+
+syntax region scdocOrderedListItem matchgroup=scdocOrderedListMarker start="^\z(\s*\)\." skip="^\z1 .*$" end="^" contains=scdocBold,scdocUnderline
+syntax region scdocListItem matchgroup=scdocListMarker start="^\z(\s*\)-" skip="^\z1 .*$" end="^" contains=scdocBold,scdocUnderline
+
+" Tables cannot start with a column
+syntax match scdocTableError "^:"
+
+syntax region scdocTable matchgroup=scdocTableEntry start="^[\[|\]][\[\-\]<=>]" end="^$" contains=scdocTableEntry,scdocTableError,scdocTableContinuation,scdocBold,scdocUnderline,scdocPre
+syntax match scdocTableError "^.*$" contained
+syntax match scdocTableContinuation "^ \+\S\+" contained
+syntax match scdocTableEntry "^[|:][\[\-\]<=> ]" contained
+syntax match scdocTableError "^[|:][\[\-\]<=> ]\S.*$" contained
+
+syntax region scdocBold concealends matchgroup=scdocBoldDelimiter start="\\\@<!\*" end="\\\@<!\*"
+syntax region scdocUnderline concealends matchgroup=scdocUnderlineDelimiter start="\<\\\@<!_" end="\\\@<!_\>"
+syntax region scdocPre matchgroup=scdocPreDelimiter start="^\t*```" end="^\t*```"
+
+syntax sync minlines=50
+
+hi default link scdocFirstLineValid Comment
+hi default link scdocComment Comment
+hi default link scdocHeader Title
+hi default link scdocOrderedListMarker Statement
+hi default link scdocListMarker scdocOrderedListMarker
+hi default link scdocLineBreak Special
+hi default link scdocTableSpecifier Statement
+hi default link scdocTableEntry Statement
+
+hi default link scdocFirstLineError Error
+hi default link scdocCommentError Error
+hi default link scdocHeaderError Error
+hi default link scdocIndentError Error
+hi default link scdocTableError Error
+hi default link scdocTableError Error
+
+hi default link scdocPreDelimiter Delimiter
+
+hi default scdocBold term=bold cterm=bold gui=bold
+hi default scdocUnderline term=underline cterm=underline gui=underline
+hi default link scdocBoldDelimiter scdocBold
+hi default link scdocUnderlineDelimiter scdocUnderline
diff --git a/runtime/syntax/scheme.vim b/runtime/syntax/scheme.vim
new file mode 100644
index 0000000..c4454fc
--- /dev/null
+++ b/runtime/syntax/scheme.vim
@@ -0,0 +1,467 @@
+" Vim syntax file
+" Language: Scheme (R7RS)
+" Last Change: 2021-01-03
+" Author: Evan Hanson <evhan@foldling.org>
+" Maintainer: Evan Hanson <evhan@foldling.org>
+" Previous Author: Dirk van Deun <dirk@igwe.vub.ac.be>
+" Previous Maintainer: Sergey Khorev <sergey.khorev@gmail.com>
+" Repository: https://git.foldling.org/vim-scheme.git
+" URL: https://foldling.org/vim/syntax/scheme.vim
+
+if exists('b:current_syntax')
+ finish
+endif
+
+let s:cpo = &cpo
+set cpo&vim
+
+syn spell notoplevel
+
+syn match schemeParentheses "[^ '`\t\n()\[\]";]\+"
+syn match schemeParentheses "[)\]]"
+
+syn match schemeIdentifier /[^ '`\t\n()\[\]"|;][^ '`\t\n()\[\]"|;]*/
+
+syn region schemeQuote matchgroup=schemeData start=/'[`']*/ end=/[ \t\n()\[\]";]/me=e-1
+syn region schemeQuote matchgroup=schemeData start=/'['`]*"/ skip=/\\[\\"]/ end=/"/
+syn region schemeQuote matchgroup=schemeData start=/'['`]*|/ skip=/\\[\\|]/ end=/|/
+syn region schemeQuote matchgroup=schemeData start=/'['`]*#\?(/ end=/)/ contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster
+
+syn region schemeQuasiquote matchgroup=schemeData start=/`['`]*/ end=/[ \t\n()\[\]";]/me=e-1
+syn region schemeQuasiquote matchgroup=schemeData start=/`['`]*#\?(/ end=/)/ contains=ALLBUT,schemeQuote,schemeQuoteForm,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster
+
+syn region schemeUnquote matchgroup=schemeParentheses start=/,/ end=/[ `'\t\n\[\]()";]/me=e-1 contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster
+syn region schemeUnquote matchgroup=schemeParentheses start=/,@/ end=/[ `'\t\n\[\]()";]/me=e-1 contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster
+syn region schemeUnquote matchgroup=schemeParentheses start=/,(/ end=/)/ contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster
+syn region schemeUnquote matchgroup=schemeParentheses start=/,@(/ end=/)/ contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster
+
+syn region schemeQuoteForm matchgroup=schemeData start=/(/ end=/)/ contained contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster
+syn region schemeQuasiquoteForm matchgroup=schemeData start=/(/ end=/)/ contained contains=ALLBUT,schemeQuote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster
+
+syn region schemeString start=/\(\\\)\@<!"/ skip=/\\[\\"]/ end=/"/ contains=@Spell
+syn region schemeSymbol start=/\(\\\)\@<!|/ skip=/\\[\\|]/ end=/|/
+
+syn match schemeNumber /\(#[dbeio]\)*[+\-]*\([0-9]\+\|inf.0\|nan.0\)\(\/\|\.\)\?[0-9+\-@\ilns]*\>/
+syn match schemeNumber /#x[+\-]*[0-9a-fA-F]\+\>/
+
+syn match schemeBoolean /#t\(rue\)\?/
+syn match schemeBoolean /#f\(alse\)\?/
+
+syn match schemeCharacter /#\\.[^ `'\t\n\[\]()]*/
+syn match schemeCharacter /#\\x[0-9a-fA-F]\+/
+
+syn match schemeComment /;.*$/ contains=@Spell
+
+syn region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeMultilineComment,@Spell
+
+syn region schemeForm matchgroup=schemeParentheses start="(" end=")" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster
+syn region schemeForm matchgroup=schemeParentheses start="\[" end="\]" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster
+
+syn region schemeVector matchgroup=schemeData start="#(" end=")" contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster
+syn region schemeVector matchgroup=schemeData start="#[fsu]\d\+(" end=")" contains=schemeNumber,schemeComment,schemeDatumComment
+
+if exists('g:is_chicken') || exists('b:is_chicken')
+ syn region schemeImport matchgroup=schemeImport start="\(([ \t\n]*\)\@<=\(import\|import-syntax\|use\|require-extension\)\(-for-syntax\)\?\>" end=")"me=e-1 contained contains=schemeImportForm,schemeIdentifier,schemeComment,schemeDatumComment
+else
+ syn region schemeImport matchgroup=schemeImport start="\(([ \t\n]*\)\@<=\(import\)\>" end=")"me=e-1 contained contains=schemeImportForm,schemeIdentifier,schemeComment,schemeDatumComment
+endif
+
+syn match schemeImportKeyword "\(([ \t\n]*\)\@<=\(except\|only\|prefix\|rename\)\>"
+syn region schemeImportForm matchgroup=schemeParentheses start="(" end=")" contained contains=schemeIdentifier,schemeComment,schemeDatumComment,@schemeImportCluster
+syn cluster schemeImportCluster contains=schemeImportForm,schemeImportKeyword
+
+syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*/ end=/[ \t\n()\[\]";]/me=e-1
+syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*"/ skip=/\\[\\"]/ end=/"/
+syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*|/ skip=/\\[\\|]/ end=/|/
+syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*\(#\([usf]\d\+\)\?\)\?(/ end=/)/ contains=schemeDatumCommentForm
+syn region schemeDatumCommentForm start="(" end=")" contained contains=schemeDatumCommentForm
+
+syn cluster schemeSyntaxCluster contains=schemeFunction,schemeKeyword,schemeSyntax,schemeExtraSyntax,schemeLibrarySyntax,schemeSyntaxSyntax
+
+syn keyword schemeLibrarySyntax define-library
+syn keyword schemeLibrarySyntax export
+syn keyword schemeLibrarySyntax include
+syn keyword schemeLibrarySyntax include-ci
+syn keyword schemeLibrarySyntax include-library-declarations
+syn keyword schemeLibrarySyntax library
+syn keyword schemeLibrarySyntax cond-expand
+
+syn keyword schemeSyntaxSyntax define-syntax
+syn keyword schemeSyntaxSyntax let-syntax
+syn keyword schemeSyntaxSyntax letrec-syntax
+syn keyword schemeSyntaxSyntax syntax-rules
+
+syn keyword schemeSyntax =>
+syn keyword schemeSyntax and
+syn keyword schemeSyntax begin
+syn keyword schemeSyntax case
+syn keyword schemeSyntax case-lambda
+syn keyword schemeSyntax cond
+syn keyword schemeSyntax define
+syn keyword schemeSyntax define-record-type
+syn keyword schemeSyntax define-values
+syn keyword schemeSyntax delay
+syn keyword schemeSyntax delay-force
+syn keyword schemeSyntax do
+syn keyword schemeSyntax else
+syn keyword schemeSyntax guard
+syn keyword schemeSyntax if
+syn keyword schemeSyntax lambda
+syn keyword schemeSyntax let
+syn keyword schemeSyntax let*
+syn keyword schemeSyntax let*-values
+syn keyword schemeSyntax let-values
+syn keyword schemeSyntax letrec
+syn keyword schemeSyntax letrec*
+syn keyword schemeSyntax or
+syn keyword schemeSyntax parameterize
+syn keyword schemeSyntax quasiquote
+syn keyword schemeSyntax quote
+syn keyword schemeSyntax set!
+syn keyword schemeSyntax unless
+syn keyword schemeSyntax unquote
+syn keyword schemeSyntax unquote-splicing
+syn keyword schemeSyntax when
+
+syn keyword schemeFunction *
+syn keyword schemeFunction +
+syn keyword schemeFunction -
+syn keyword schemeFunction /
+syn keyword schemeFunction <
+syn keyword schemeFunction <=
+syn keyword schemeFunction =
+syn keyword schemeFunction >
+syn keyword schemeFunction >=
+syn keyword schemeFunction abs
+syn keyword schemeFunction acos
+syn keyword schemeFunction acos
+syn keyword schemeFunction angle
+syn keyword schemeFunction append
+syn keyword schemeFunction apply
+syn keyword schemeFunction asin
+syn keyword schemeFunction assoc
+syn keyword schemeFunction assq
+syn keyword schemeFunction assv
+syn keyword schemeFunction atan
+syn keyword schemeFunction binary-port?
+syn keyword schemeFunction boolean=?
+syn keyword schemeFunction boolean?
+syn keyword schemeFunction bytevector
+syn keyword schemeFunction bytevector-append
+syn keyword schemeFunction bytevector-append
+syn keyword schemeFunction bytevector-copy
+syn keyword schemeFunction bytevector-copy!
+syn keyword schemeFunction bytevector-length
+syn keyword schemeFunction bytevector-u8-ref
+syn keyword schemeFunction bytevector-u8-set!
+syn keyword schemeFunction bytevector?
+syn keyword schemeFunction caaaar
+syn keyword schemeFunction caaadr
+syn keyword schemeFunction caaar
+syn keyword schemeFunction caadar
+syn keyword schemeFunction caaddr
+syn keyword schemeFunction caadr
+syn keyword schemeFunction caar
+syn keyword schemeFunction cadaar
+syn keyword schemeFunction cadadr
+syn keyword schemeFunction cadar
+syn keyword schemeFunction caddar
+syn keyword schemeFunction cadddr
+syn keyword schemeFunction caddr
+syn keyword schemeFunction cadr
+syn keyword schemeFunction call-with-current-continuation
+syn keyword schemeFunction call-with-input-file
+syn keyword schemeFunction call-with-output-file
+syn keyword schemeFunction call-with-port
+syn keyword schemeFunction call-with-values
+syn keyword schemeFunction call/cc
+syn keyword schemeFunction car
+syn keyword schemeFunction cdaaar
+syn keyword schemeFunction cdaadr
+syn keyword schemeFunction cdaar
+syn keyword schemeFunction cdadar
+syn keyword schemeFunction cdaddr
+syn keyword schemeFunction cdadr
+syn keyword schemeFunction cdar
+syn keyword schemeFunction cddaar
+syn keyword schemeFunction cddadr
+syn keyword schemeFunction cddar
+syn keyword schemeFunction cdddar
+syn keyword schemeFunction cddddr
+syn keyword schemeFunction cdddr
+syn keyword schemeFunction cddr
+syn keyword schemeFunction cdr
+syn keyword schemeFunction ceiling
+syn keyword schemeFunction char->integer
+syn keyword schemeFunction char-alphabetic?
+syn keyword schemeFunction char-ci<=?
+syn keyword schemeFunction char-ci<?
+syn keyword schemeFunction char-ci=?
+syn keyword schemeFunction char-ci>=?
+syn keyword schemeFunction char-ci>?
+syn keyword schemeFunction char-downcase
+syn keyword schemeFunction char-foldcase
+syn keyword schemeFunction char-lower-case?
+syn keyword schemeFunction char-numeric?
+syn keyword schemeFunction char-ready?
+syn keyword schemeFunction char-upcase
+syn keyword schemeFunction char-upper-case?
+syn keyword schemeFunction char-whitespace?
+syn keyword schemeFunction char<=?
+syn keyword schemeFunction char<?
+syn keyword schemeFunction char=?
+syn keyword schemeFunction char>=?
+syn keyword schemeFunction char>?
+syn keyword schemeFunction char?
+syn keyword schemeFunction close-input-port
+syn keyword schemeFunction close-output-port
+syn keyword schemeFunction close-port
+syn keyword schemeFunction command-line
+syn keyword schemeFunction complex?
+syn keyword schemeFunction cons
+syn keyword schemeFunction cos
+syn keyword schemeFunction current-error-port
+syn keyword schemeFunction current-input-port
+syn keyword schemeFunction current-jiffy
+syn keyword schemeFunction current-output-port
+syn keyword schemeFunction current-second
+syn keyword schemeFunction delete-file
+syn keyword schemeFunction denominator
+syn keyword schemeFunction digit-value
+syn keyword schemeFunction display
+syn keyword schemeFunction dynamic-wind
+syn keyword schemeFunction emergency-exit
+syn keyword schemeFunction environment
+syn keyword schemeFunction eof-object
+syn keyword schemeFunction eof-object?
+syn keyword schemeFunction eq?
+syn keyword schemeFunction equal?
+syn keyword schemeFunction eqv?
+syn keyword schemeFunction error
+syn keyword schemeFunction error-object-irritants
+syn keyword schemeFunction error-object-message
+syn keyword schemeFunction error-object?
+syn keyword schemeFunction eval
+syn keyword schemeFunction even?
+syn keyword schemeFunction exact
+syn keyword schemeFunction exact->inexact
+syn keyword schemeFunction exact-integer-sqrt
+syn keyword schemeFunction exact-integer?
+syn keyword schemeFunction exact?
+syn keyword schemeFunction exit
+syn keyword schemeFunction exp
+syn keyword schemeFunction expt
+syn keyword schemeFunction features
+syn keyword schemeFunction file-error?
+syn keyword schemeFunction file-exists?
+syn keyword schemeFunction finite?
+syn keyword schemeFunction floor
+syn keyword schemeFunction floor-quotient
+syn keyword schemeFunction floor-remainder
+syn keyword schemeFunction floor/
+syn keyword schemeFunction flush-output-port
+syn keyword schemeFunction for-each
+syn keyword schemeFunction force
+syn keyword schemeFunction gcd
+syn keyword schemeFunction get-environment-variable
+syn keyword schemeFunction get-environment-variables
+syn keyword schemeFunction get-output-bytevector
+syn keyword schemeFunction get-output-string
+syn keyword schemeFunction imag-part
+syn keyword schemeFunction inexact
+syn keyword schemeFunction inexact->exact
+syn keyword schemeFunction inexact?
+syn keyword schemeFunction infinite?
+syn keyword schemeFunction input-port-open?
+syn keyword schemeFunction input-port?
+syn keyword schemeFunction integer->char
+syn keyword schemeFunction integer?
+syn keyword schemeFunction interaction-environment
+syn keyword schemeFunction jiffies-per-second
+syn keyword schemeFunction lcm
+syn keyword schemeFunction length
+syn keyword schemeFunction list
+syn keyword schemeFunction list->string
+syn keyword schemeFunction list->vector
+syn keyword schemeFunction list-copy
+syn keyword schemeFunction list-ref
+syn keyword schemeFunction list-set!
+syn keyword schemeFunction list-tail
+syn keyword schemeFunction list?
+syn keyword schemeFunction load
+syn keyword schemeFunction log
+syn keyword schemeFunction magnitude
+syn keyword schemeFunction make-bytevector
+syn keyword schemeFunction make-list
+syn keyword schemeFunction make-parameter
+syn keyword schemeFunction make-polar
+syn keyword schemeFunction make-promise
+syn keyword schemeFunction make-rectangular
+syn keyword schemeFunction make-string
+syn keyword schemeFunction make-vector
+syn keyword schemeFunction map
+syn keyword schemeFunction max
+syn keyword schemeFunction member
+syn keyword schemeFunction memq
+syn keyword schemeFunction memv
+syn keyword schemeFunction min
+syn keyword schemeFunction modulo
+syn keyword schemeFunction nan?
+syn keyword schemeFunction negative?
+syn keyword schemeFunction newline
+syn keyword schemeFunction not
+syn keyword schemeFunction null-environment
+syn keyword schemeFunction null?
+syn keyword schemeFunction number->string
+syn keyword schemeFunction number?
+syn keyword schemeFunction numerator
+syn keyword schemeFunction odd?
+syn keyword schemeFunction open-binary-input-file
+syn keyword schemeFunction open-binary-output-file
+syn keyword schemeFunction open-input-bytevector
+syn keyword schemeFunction open-input-file
+syn keyword schemeFunction open-input-string
+syn keyword schemeFunction open-output-bytevector
+syn keyword schemeFunction open-output-file
+syn keyword schemeFunction open-output-string
+syn keyword schemeFunction output-port-open?
+syn keyword schemeFunction output-port?
+syn keyword schemeFunction pair?
+syn keyword schemeFunction peek-char
+syn keyword schemeFunction peek-u8
+syn keyword schemeFunction port?
+syn keyword schemeFunction positive?
+syn keyword schemeFunction procedure?
+syn keyword schemeFunction promise?
+syn keyword schemeFunction quotient
+syn keyword schemeFunction raise
+syn keyword schemeFunction raise-continuable
+syn keyword schemeFunction rational?
+syn keyword schemeFunction rationalize
+syn keyword schemeFunction read
+syn keyword schemeFunction read-bytevector
+syn keyword schemeFunction read-bytevector!
+syn keyword schemeFunction read-char
+syn keyword schemeFunction read-error?
+syn keyword schemeFunction read-line
+syn keyword schemeFunction read-string
+syn keyword schemeFunction read-u8
+syn keyword schemeFunction real-part
+syn keyword schemeFunction real?
+syn keyword schemeFunction remainder
+syn keyword schemeFunction reverse
+syn keyword schemeFunction round
+syn keyword schemeFunction scheme-report-environment
+syn keyword schemeFunction set-car!
+syn keyword schemeFunction set-cdr!
+syn keyword schemeFunction sin
+syn keyword schemeFunction sqrt
+syn keyword schemeFunction square
+syn keyword schemeFunction string
+syn keyword schemeFunction string->list
+syn keyword schemeFunction string->number
+syn keyword schemeFunction string->symbol
+syn keyword schemeFunction string->utf8
+syn keyword schemeFunction string->vector
+syn keyword schemeFunction string-append
+syn keyword schemeFunction string-ci<=?
+syn keyword schemeFunction string-ci<?
+syn keyword schemeFunction string-ci=?
+syn keyword schemeFunction string-ci>=?
+syn keyword schemeFunction string-ci>?
+syn keyword schemeFunction string-copy
+syn keyword schemeFunction string-copy!
+syn keyword schemeFunction string-downcase
+syn keyword schemeFunction string-fill!
+syn keyword schemeFunction string-foldcase
+syn keyword schemeFunction string-for-each
+syn keyword schemeFunction string-length
+syn keyword schemeFunction string-map
+syn keyword schemeFunction string-ref
+syn keyword schemeFunction string-set!
+syn keyword schemeFunction string-upcase
+syn keyword schemeFunction string<=?
+syn keyword schemeFunction string<?
+syn keyword schemeFunction string=?
+syn keyword schemeFunction string>=?
+syn keyword schemeFunction string>?
+syn keyword schemeFunction string?
+syn keyword schemeFunction substring
+syn keyword schemeFunction symbol->string
+syn keyword schemeFunction symbol=?
+syn keyword schemeFunction symbol?
+syn keyword schemeFunction syntax-error
+syn keyword schemeFunction tan
+syn keyword schemeFunction textual-port?
+syn keyword schemeFunction transcript-off
+syn keyword schemeFunction transcript-on
+syn keyword schemeFunction truncate
+syn keyword schemeFunction truncate-quotient
+syn keyword schemeFunction truncate-remainder
+syn keyword schemeFunction truncate/
+syn keyword schemeFunction u8-ready?
+syn keyword schemeFunction utf8->string
+syn keyword schemeFunction values
+syn keyword schemeFunction vector
+syn keyword schemeFunction vector->list
+syn keyword schemeFunction vector->string
+syn keyword schemeFunction vector-append
+syn keyword schemeFunction vector-copy
+syn keyword schemeFunction vector-copy!
+syn keyword schemeFunction vector-fill!
+syn keyword schemeFunction vector-for-each
+syn keyword schemeFunction vector-length
+syn keyword schemeFunction vector-map
+syn keyword schemeFunction vector-ref
+syn keyword schemeFunction vector-set!
+syn keyword schemeFunction vector?
+syn keyword schemeFunction with-exception-handler
+syn keyword schemeFunction with-input-from-file
+syn keyword schemeFunction with-output-to-file
+syn keyword schemeFunction write
+syn keyword schemeFunction write-bytevector
+syn keyword schemeFunction write-char
+syn keyword schemeFunction write-shared
+syn keyword schemeFunction write-simple
+syn keyword schemeFunction write-string
+syn keyword schemeFunction write-u8
+syn keyword schemeFunction zero?
+
+hi def link schemeBoolean Boolean
+hi def link schemeCharacter Character
+hi def link schemeComment Comment
+hi def link schemeConstant Constant
+hi def link schemeData Delimiter
+hi def link schemeDatumComment Comment
+hi def link schemeDatumCommentForm Comment
+hi def link schemeDelimiter Delimiter
+hi def link schemeError Error
+hi def link schemeExtraSyntax Underlined
+hi def link schemeFunction Function
+hi def link schemeIdentifier Normal
+hi def link schemeImport PreProc
+hi def link schemeImportKeyword PreProc
+hi def link schemeKeyword Type
+hi def link schemeLibrarySyntax PreProc
+hi def link schemeMultilineComment Comment
+hi def link schemeNumber Number
+hi def link schemeParentheses Normal
+hi def link schemeQuasiquote Delimiter
+hi def link schemeQuote Delimiter
+hi def link schemeSpecialSyntax Special
+hi def link schemeString String
+hi def link schemeSymbol Normal
+hi def link schemeSyntax Statement
+hi def link schemeSyntaxSyntax PreProc
+hi def link schemeTypeSyntax Type
+
+let b:did_scheme_syntax = 1
+
+if exists('b:is_chicken') || exists('g:is_chicken')
+ exe 'ru! syntax/chicken.vim'
+endif
+
+unlet b:did_scheme_syntax
+let b:current_syntax = 'scheme'
+let &cpo = s:cpo
+unlet s:cpo
diff --git a/runtime/syntax/scilab.vim b/runtime/syntax/scilab.vim
new file mode 100644
index 0000000..03e123b
--- /dev/null
+++ b/runtime/syntax/scilab.vim
@@ -0,0 +1,102 @@
+"
+" Vim syntax file
+" Language : Scilab
+" Maintainer : Benoit Hamelin
+" File type : *.sci (see :help filetype)
+" History
+" 28jan2002 benoith 0.1 Creation. Adapted from matlab.vim.
+" 04feb2002 benoith 0.5 Fixed bugs with constant highlighting.
+"
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+" Reserved words.
+syn keyword scilabStatement abort clear clearglobal end exit global mode predef quit resume
+syn keyword scilabStatement return
+syn keyword scilabFunction function endfunction funptr
+syn keyword scilabPredicate null iserror isglobal
+syn keyword scilabKeyword typename
+syn keyword scilabDebug debug pause what where whereami whereis who whos
+syn keyword scilabRepeat for while break
+syn keyword scilabConditional if then else elseif
+syn keyword scilabMultiplex select case
+
+" Reserved constants.
+syn match scilabConstant "\(%\)[0-9A-Za-z?!#$]\+"
+syn match scilabBoolean "\(%\)[FTft]\>"
+
+" Delimiters and operators.
+syn match scilabDelimiter "[][;,()]"
+syn match scilabComparison "[=~]="
+syn match scilabComparison "[<>]=\="
+syn match scilabComparison "<>"
+syn match scilabLogical "[&|~]"
+syn match scilabAssignment "="
+syn match scilabArithmetic "[+-]"
+syn match scilabArithmetic "\.\=[*/\\]\.\="
+syn match scilabArithmetic "\.\=^"
+syn match scilabRange ":"
+syn match scilabMlistAccess "\."
+
+syn match scilabLineContinuation "\.\{2,}"
+
+syn match scilabTransposition "[])a-zA-Z0-9?!_#$.]'"lc=1
+
+" Comments and tools.
+syn keyword scilabTodo TODO todo FIXME fixme TBD tbd contained
+syn match scilabComment "//.*$" contains=scilabTodo
+
+" Constants.
+syn match scilabNumber "[0-9]\+\(\.[0-9]*\)\=\([DEde][+-]\=[0-9]\+\)\="
+syn match scilabNumber "\.[0-9]\+\([DEde][+-]\=[0-9]\+\)\="
+syn region scilabString start=+'+ skip=+''+ end=+'+ oneline
+syn region scilabString start=+"+ end=+"+ oneline
+
+" Identifiers.
+syn match scilabIdentifier "\<[A-Za-z?!_#$][A-Za-z0-9?!_#$]*\>"
+syn match scilabOverload "%[A-Za-z0-9?!_#$]\+_[A-Za-z0-9?!_#$]\+"
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link scilabStatement Statement
+hi def link scilabFunction Keyword
+hi def link scilabPredicate Keyword
+hi def link scilabKeyword Keyword
+hi def link scilabDebug Debug
+hi def link scilabRepeat Repeat
+hi def link scilabConditional Conditional
+hi def link scilabMultiplex Conditional
+
+hi def link scilabConstant Constant
+hi def link scilabBoolean Boolean
+
+hi def link scilabDelimiter Delimiter
+hi def link scilabMlistAccess Delimiter
+hi def link scilabComparison Operator
+hi def link scilabLogical Operator
+hi def link scilabAssignment Operator
+hi def link scilabArithmetic Operator
+hi def link scilabRange Operator
+hi def link scilabLineContinuation Underlined
+hi def link scilabTransposition Operator
+
+hi def link scilabTodo Todo
+hi def link scilabComment Comment
+
+hi def link scilabNumber Number
+hi def link scilabString String
+
+hi def link scilabIdentifier Identifier
+hi def link scilabOverload Special
+
+
+let b:current_syntax = "scilab"
+
+"EOF vim: ts=4 noet tw=100 sw=4 sts=0
diff --git a/runtime/syntax/screen.vim b/runtime/syntax/screen.vim
new file mode 100644
index 0000000..d576d29
--- /dev/null
+++ b/runtime/syntax/screen.vim
@@ -0,0 +1,260 @@
+" Vim syntax file
+" Language: screen(1) configuration file
+" Maintainer: Dmitri Vereshchagin <dmitri.vereshchagin@gmail.com>
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2015-09-24
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match screenEscape '\\.'
+
+syn keyword screenTodo contained TODO FIXME XXX NOTE
+
+syn region screenComment display oneline start='#' end='$'
+ \ contains=screenTodo,@Spell
+
+syn region screenString display oneline start=+"+ skip=+\\"+ end=+"+
+ \ contains=screenVariable,screenSpecial
+
+syn region screenLiteral display oneline start=+'+ skip=+\\'+ end=+'+
+
+syn match screenVariable contained display '$\%(\h\w*\|{\h\w*}\)'
+
+syn keyword screenBoolean on off
+
+syn match screenNumbers display '\<\d\+\>'
+
+syn match screenSpecials contained
+ \ '%\%([%aAdDhlmMstuwWyY?:{]\|[0-9]*n\|0?cC\)'
+
+syn keyword screenCommands
+ \ acladd
+ \ aclchg
+ \ acldel
+ \ aclgrp
+ \ aclumask
+ \ activity
+ \ addacl
+ \ allpartial
+ \ altscreen
+ \ at
+ \ attrcolor
+ \ autodetach
+ \ autonuke
+ \ backtick
+ \ bce
+ \ bd_bc_down
+ \ bd_bc_left
+ \ bd_bc_right
+ \ bd_bc_up
+ \ bd_bell
+ \ bd_braille_table
+ \ bd_eightdot
+ \ bd_info
+ \ bd_link
+ \ bd_lower_left
+ \ bd_lower_right
+ \ bd_ncrc
+ \ bd_port
+ \ bd_scroll
+ \ bd_skip
+ \ bd_start_braille
+ \ bd_type
+ \ bd_upper_left
+ \ bd_upper_right
+ \ bd_width
+ \ bell
+ \ bell_msg
+ \ bind
+ \ bindkey
+ \ blanker
+ \ blankerprg
+ \ break
+ \ breaktype
+ \ bufferfile
+ \ bumpleft
+ \ bumpright
+ \ c1
+ \ caption
+ \ chacl
+ \ charset
+ \ chdir
+ \ cjkwidth
+ \ clear
+ \ collapse
+ \ colon
+ \ command
+ \ compacthist
+ \ console
+ \ copy
+ \ crlf
+ \ debug
+ \ defautonuke
+ \ defbce
+ \ defbreaktype
+ \ defc1
+ \ defcharset
+ \ defencoding
+ \ defescape
+ \ defflow
+ \ defgr
+ \ defhstatus
+ \ defkanji
+ \ deflog
+ \ deflogin
+ \ defmode
+ \ defmonitor
+ \ defmousetrack
+ \ defnonblock
+ \ defobuflimit
+ \ defscrollback
+ \ defshell
+ \ defsilence
+ \ defslowpaste
+ \ defutf8
+ \ defwrap
+ \ defwritelock
+ \ defzombie
+ \ detach
+ \ digraph
+ \ dinfo
+ \ displays
+ \ dumptermcap
+ \ echo
+ \ encoding
+ \ escape
+ \ eval
+ \ exec
+ \ fit
+ \ flow
+ \ focus
+ \ focusminsize
+ \ gr
+ \ group
+ \ hardcopy
+ \ hardcopy_append
+ \ hardcopydir
+ \ hardstatus
+ \ height
+ \ help
+ \ history
+ \ hstatus
+ \ idle
+ \ ignorecase
+ \ info
+ \ kanji
+ \ kill
+ \ lastmsg
+ \ layout
+ \ license
+ \ lockscreen
+ \ log
+ \ logfile
+ \ login
+ \ logtstamp
+ \ mapdefault
+ \ mapnotnext
+ \ maptimeout
+ \ markkeys
+ \ maxwin
+ \ meta
+ \ monitor
+ \ mousetrack
+ \ msgminwait
+ \ msgwait
+ \ multiuser
+ \ nethack
+ \ next
+ \ nonblock
+ \ number
+ \ obuflimit
+ \ only
+ \ other
+ \ partial
+ \ password
+ \ paste
+ \ pastefont
+ \ pow_break
+ \ pow_detach
+ \ pow_detach_msg
+ \ prev
+ \ printcmd
+ \ process
+ \ quit
+ \ readbuf
+ \ readreg
+ \ redisplay
+ \ register
+ \ remove
+ \ removebuf
+ \ rendition
+ \ reset
+ \ resize
+ \ screen
+ \ scrollback
+ \ select
+ \ sessionname
+ \ setenv
+ \ setsid
+ \ shell
+ \ shelltitle
+ \ silence
+ \ silencewait
+ \ sleep
+ \ slowpaste
+ \ sorendition
+ \ sort
+ \ source
+ \ split
+ \ startup_message
+ \ stuff
+ \ su
+ \ suspend
+ \ term
+ \ termcap
+ \ termcapinfo
+ \ terminfo
+ \ time
+ \ title
+ \ umask
+ \ unbindall
+ \ unsetenv
+ \ utf8
+ \ vbell
+ \ vbell_msg
+ \ vbellwait
+ \ verbose
+ \ version
+ \ wall
+ \ width
+ \ windowlist
+ \ windows
+ \ wrap
+ \ writebuf
+ \ writelock
+ \ xoff
+ \ xon
+ \ zmodem
+ \ zombie
+ \ zombie_timeout
+
+hi def link screenEscape Special
+hi def link screenComment Comment
+hi def link screenTodo Todo
+hi def link screenString String
+hi def link screenLiteral String
+hi def link screenVariable Identifier
+hi def link screenBoolean Boolean
+hi def link screenNumbers Number
+hi def link screenSpecials Special
+hi def link screenCommands Keyword
+
+let b:current_syntax = "screen"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/scss.vim b/runtime/syntax/scss.vim
new file mode 100644
index 0000000..9d79dc5
--- /dev/null
+++ b/runtime/syntax/scss.vim
@@ -0,0 +1,25 @@
+" Vim syntax file
+" Language: SCSS
+" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
+" Filenames: *.scss
+" Last Change: 2019 Dec 05
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/sass.vim
+
+syn clear sassComment
+syn clear sassCssComment
+syn clear sassEndOfLineComment
+
+syn match scssComment "//.*" contains=sassTodo,@Spell
+syn region scssCssComment start="/\*" end="\*/" contains=sassTodo,@Spell
+
+hi def link scssCssComment scssComment
+hi def link scssComment Comment
+
+let b:current_syntax = "scss"
+
+" vim:set sw=2:
diff --git a/runtime/syntax/sd.vim b/runtime/syntax/sd.vim
new file mode 100644
index 0000000..b497ba5
--- /dev/null
+++ b/runtime/syntax/sd.vim
@@ -0,0 +1,71 @@
+" Language: streaming descriptor file
+" Maintainer: Puria Nafisi Azizi (pna) <pna@netstudent.polito.it>
+" License: This file can be redistribued and/or modified under the same terms
+" as Vim itself.
+" URL: http://netstudent.polito.it/vim_syntax/
+" Last Change: 2012 Feb 03 by Thilo Six
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Always ignore case
+syn case ignore
+
+" Comments
+syn match sdComment /\s*[#;].*$/
+
+" IP Adresses
+syn cluster sdIPCluster contains=sdIPError,sdIPSpecial
+syn match sdIPError /\%(\d\{4,}\|25[6-9]\|2[6-9]\d\|[3-9]\d\{2}\)[\.0-9]*/ contained
+syn match sdIPSpecial /\%(127\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)/ contained
+syn match sdIP contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}/ contains=@sdIPCluster
+
+" Statements
+syn keyword sdStatement AGGREGATE AUDIO_CHANNELS
+syn keyword sdStatement BYTE_PER_PCKT BIT_PER_SAMPLE BITRATE
+syn keyword sdStatement CLOCK_RATE CODING_TYPE CREATOR
+syn match sdStatement /^\s*CODING_TYPE\>/ nextgroup=sdCoding skipwhite
+syn match sdStatement /^\s*ENCODING_NAME\>/ nextgroup=sdEncoding skipwhite
+syn keyword sdStatement FILE_NAME FRAME_LEN FRAME_RATE FORCE_FRAME_RATE
+syn keyword sdStatement LICENSE
+syn match sdStatement /^\s*MEDIA_SOURCE\>/ nextgroup=sdSource skipwhite
+syn match sdStatement /^\s*MULTICAST\>/ nextgroup=sdIP skipwhite
+syn keyword sdStatement PAYLOAD_TYPE PKT_LEN PRIORITY
+syn keyword sdStatement SAMPLE_RATE
+syn keyword sdStatement TITLE TWIN
+syn keyword sdStatement VERIFY
+
+" Known Options
+syn keyword sdEncoding H26L MPV MP2T MP4V-ES
+syn keyword sdCoding FRAME SAMPLE
+syn keyword sdSource STORED LIVE
+
+"Specials
+syn keyword sdSpecial TRUE FALSE NULL
+syn keyword sdDelimiter STREAM STREAM_END
+syn match sdError /^search .\{257,}/
+
+
+hi def link sdIP Number
+hi def link sdHostname Type
+hi def link sdEncoding Identifier
+hi def link sdCoding Identifier
+hi def link sdSource Identifier
+hi def link sdComment Comment
+hi def link sdIPError Error
+hi def link sdError Error
+hi def link sdStatement Statement
+hi def link sdIPSpecial Special
+hi def link sdSpecial Special
+hi def link sdDelimiter Delimiter
+
+
+let b:current_syntax = "sd"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/sdc.vim b/runtime/syntax/sdc.vim
new file mode 100644
index 0000000..0ca9bec
--- /dev/null
+++ b/runtime/syntax/sdc.vim
@@ -0,0 +1,41 @@
+" Vim syntax file
+" Language: SDC - Synopsys Design Constraints
+" Maintainer: Maurizio Tranchero - maurizio.tranchero@gmail.com
+" Last Change: Thu Mar 25 17:35:16 CET 2009
+" Credits: based on TCL Vim syntax file
+" Version: 0.3
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the TCL syntax to start with
+runtime! syntax/tcl.vim
+
+" SDC-specific keywords
+syn keyword sdcCollections foreach_in_collection
+syn keyword sdcObjectsQuery get_clocks get_ports
+syn keyword sdcObjectsInfo get_point_info get_node_info get_path_info
+syn keyword sdcObjectsInfo get_timing_paths set_attribute
+syn keyword sdcConstraints set_false_path
+syn keyword sdcNonIdealities set_min_delay set_max_delay
+syn keyword sdcNonIdealities set_input_delay set_output_delay
+syn keyword sdcNonIdealities set_load set_min_capacitance set_max_capacitance
+syn keyword sdcCreateOperations create_clock create_timing_netlist update_timing_netlist
+
+" command flags highlighting
+syn match sdcFlags "[[:space:]]-[[:alpha:]]*\>"
+
+" Define the default highlighting.
+hi def link sdcCollections Repeat
+hi def link sdcObjectsInfo Operator
+hi def link sdcCreateOperations Operator
+hi def link sdcObjectsQuery Operator
+hi def link sdcConstraints Operator
+hi def link sdcNonIdealities Operator
+hi def link sdcFlags Special
+
+let b:current_syntax = "sdc"
+
+" vim: ts=8
diff --git a/runtime/syntax/sdl.vim b/runtime/syntax/sdl.vim
new file mode 100644
index 0000000..7df38d1
--- /dev/null
+++ b/runtime/syntax/sdl.vim
@@ -0,0 +1,153 @@
+" Vim syntax file
+" Language: SDL
+" Maintainer: Michael Piefel <entwurf@piefel.de>
+" Last Change: 2 May 2001
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("sdl_2000")
+ syntax case ignore
+endif
+
+" A bunch of useful SDL keywords
+syn keyword sdlStatement task else nextstate
+syn keyword sdlStatement in out with from interface
+syn keyword sdlStatement to via env and use
+syn keyword sdlStatement process procedure block system service type
+syn keyword sdlStatement endprocess endprocedure endblock endsystem
+syn keyword sdlStatement package endpackage connection endconnection
+syn keyword sdlStatement channel endchannel connect
+syn keyword sdlStatement synonym dcl signal gate timer signallist signalset
+syn keyword sdlStatement create output set reset call
+syn keyword sdlStatement operators literals
+syn keyword sdlStatement active alternative any as atleast constants
+syn keyword sdlStatement default endalternative endmacro endoperator
+syn keyword sdlStatement endselect endsubstructure external
+syn keyword sdlStatement if then fi for import macro macrodefinition
+syn keyword sdlStatement macroid mod nameclass nodelay not operator or
+syn keyword sdlStatement parent provided referenced rem
+syn keyword sdlStatement select spelling substructure xor
+syn keyword sdlNewState state endstate
+syn keyword sdlInput input start stop return none save priority
+syn keyword sdlConditional decision enddecision join
+syn keyword sdlVirtual virtual redefined finalized adding inherits
+syn keyword sdlExported remote exported export
+
+if !exists("sdl_no_96")
+ syn keyword sdlStatement all axioms constant endgenerator endrefinement endservice
+ syn keyword sdlStatement error fpar generator literal map noequality ordering
+ syn keyword sdlStatement refinement returns revealed reverse service signalroute
+ syn keyword sdlStatement view viewed
+ syn keyword sdlExported imported
+endif
+
+if exists("sdl_2000")
+ syn keyword sdlStatement abstract aggregation association break choice composition
+ syn keyword sdlStatement continue endmethod handle method
+ syn keyword sdlStatement ordered private protected public
+ syn keyword sdlException exceptionhandler endexceptionhandler onexception
+ syn keyword sdlException catch new raise
+ " The same in uppercase
+ syn keyword sdlStatement TASK ELSE NEXTSTATE
+ syn keyword sdlStatement IN OUT WITH FROM INTERFACE
+ syn keyword sdlStatement TO VIA ENV AND USE
+ syn keyword sdlStatement PROCESS PROCEDURE BLOCK SYSTEM SERVICE TYPE
+ syn keyword sdlStatement ENDPROCESS ENDPROCEDURE ENDBLOCK ENDSYSTEM
+ syn keyword sdlStatement PACKAGE ENDPACKAGE CONNECTION ENDCONNECTION
+ syn keyword sdlStatement CHANNEL ENDCHANNEL CONNECT
+ syn keyword sdlStatement SYNONYM DCL SIGNAL GATE TIMER SIGNALLIST SIGNALSET
+ syn keyword sdlStatement CREATE OUTPUT SET RESET CALL
+ syn keyword sdlStatement OPERATORS LITERALS
+ syn keyword sdlStatement ACTIVE ALTERNATIVE ANY AS ATLEAST CONSTANTS
+ syn keyword sdlStatement DEFAULT ENDALTERNATIVE ENDMACRO ENDOPERATOR
+ syn keyword sdlStatement ENDSELECT ENDSUBSTRUCTURE EXTERNAL
+ syn keyword sdlStatement IF THEN FI FOR IMPORT MACRO MACRODEFINITION
+ syn keyword sdlStatement MACROID MOD NAMECLASS NODELAY NOT OPERATOR OR
+ syn keyword sdlStatement PARENT PROVIDED REFERENCED REM
+ syn keyword sdlStatement SELECT SPELLING SUBSTRUCTURE XOR
+ syn keyword sdlNewState STATE ENDSTATE
+ syn keyword sdlInput INPUT START STOP RETURN NONE SAVE PRIORITY
+ syn keyword sdlConditional DECISION ENDDECISION JOIN
+ syn keyword sdlVirtual VIRTUAL REDEFINED FINALIZED ADDING INHERITS
+ syn keyword sdlExported REMOTE EXPORTED EXPORT
+
+ syn keyword sdlStatement ABSTRACT AGGREGATION ASSOCIATION BREAK CHOICE COMPOSITION
+ syn keyword sdlStatement CONTINUE ENDMETHOD ENDOBJECT ENDVALUE HANDLE METHOD OBJECT
+ syn keyword sdlStatement ORDERED PRIVATE PROTECTED PUBLIC
+ syn keyword sdlException EXCEPTIONHANDLER ENDEXCEPTIONHANDLER ONEXCEPTION
+ syn keyword sdlException CATCH NEW RAISE
+endif
+
+" String and Character contstants
+" Highlight special characters (those which have a backslash) differently
+syn match sdlSpecial contained "\\\d\d\d\|\\."
+syn region sdlString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial
+syn region sdlString start=+'+ skip=+''+ end=+'+
+
+" No, this doesn't happen, I just wanted to scare you. SDL really allows all
+" these characters for identifiers; fortunately, keywords manage without them.
+" set iskeyword=@,48-57,_,192-214,216-246,248-255,-
+
+syn region sdlComment start="/\*" end="\*/"
+syn region sdlComment start="comment" end=";"
+syn region sdlComment start="--" end="--\|$"
+syn match sdlCommentError "\*/"
+
+syn keyword sdlOperator present
+syn keyword sdlType integer real natural duration pid boolean time
+syn keyword sdlType character charstring ia5string
+syn keyword sdlType self now sender offspring
+syn keyword sdlStructure asntype endasntype syntype endsyntype struct
+
+if !exists("sdl_no_96")
+ syn keyword sdlStructure newtype endnewtype
+endif
+
+if exists("sdl_2000")
+ syn keyword sdlStructure object endobject value endvalue
+ " The same in uppercase
+ syn keyword sdlStructure OBJECT ENDOBJECT VALUE ENDVALUE
+ syn keyword sdlOperator PRESENT
+ syn keyword sdlType INTEGER NATURAL DURATION PID BOOLEAN TIME
+ syn keyword sdlType CHARSTRING IA5STRING
+ syn keyword sdlType SELF NOW SENDER OFFSPRING
+ syn keyword sdlStructure ASNTYPE ENDASNTYPE SYNTYPE ENDSYNTYPE STRUCT
+endif
+
+" ASN.1 in SDL
+syn case match
+syn keyword sdlType SET OF BOOLEAN INTEGER REAL BIT OCTET
+syn keyword sdlType SEQUENCE CHOICE
+syn keyword sdlType STRING OBJECT IDENTIFIER NULL
+
+syn sync ccomment sdlComment
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+command -nargs=+ Hi hi def <args>
+
+hi def link sdlException Label
+hi def link sdlConditional sdlStatement
+hi def link sdlVirtual sdlStatement
+hi def link sdlExported sdlFlag
+hi def link sdlCommentError sdlError
+hi def link sdlOperator Operator
+hi def link sdlStructure sdlType
+Hi sdlStatement term=bold ctermfg=4 guifg=Blue
+Hi sdlFlag term=bold ctermfg=4 guifg=Blue gui=italic
+Hi sdlNewState term=italic ctermfg=2 guifg=Magenta gui=underline
+Hi sdlInput term=bold guifg=Red
+hi def link sdlType Type
+hi def link sdlString String
+hi def link sdlComment Comment
+hi def link sdlSpecial Special
+hi def link sdlError Error
+
+delcommand Hi
+
+let b:current_syntax = "sdl"
+
+" vim: ts=8
diff --git a/runtime/syntax/sed.vim b/runtime/syntax/sed.vim
new file mode 100644
index 0000000..d1f631d
--- /dev/null
+++ b/runtime/syntax/sed.vim
@@ -0,0 +1,123 @@
+" Vim syntax file
+" Language: sed
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Haakon Riiser <hakonrk@fys.uio.no>
+" Contributor: Jack Haden-Enneking
+" Last Change: 2022 Oct 15
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn keyword sedTodo contained TODO FIXME XXX
+
+syn match sedError "\S"
+
+syn match sedWhitespace "\s\+" contained
+syn match sedSemicolon ";"
+syn match sedAddress "[[:digit:]$]"
+syn match sedAddress "\d\+\~\d\+"
+syn region sedAddress matchgroup=Special start="[{,;]\s*/\%(\\/\)\="lc=1 skip="[^\\]\%(\\\\\)*\\/" end="/I\=" contains=sedTab,sedRegexpMeta
+syn region sedAddress matchgroup=Special start="^\s*/\%(\\/\)\=" skip="[^\\]\%(\\\\\)*\\/" end="/I\=" contains=sedTab,sedRegexpMeta
+syn match sedFunction "[dDgGhHlnNpPqQx=]\s*\%($\|;\)" contains=sedSemicolon,sedWhitespace
+if exists("g:sed_dialect") && g:sed_dialect ==? "bsd"
+ syn match sedComment "^\s*#.*$" contains=sedTodo
+else
+ syn match sedFunction "[dDgGhHlnNpPqQx=]\s*\ze#" contains=sedSemicolon,sedWhitespace
+ syn match sedComment "#.*$" contains=sedTodo
+endif
+syn match sedLabel ":[^;]*"
+syn match sedLineCont "^\%(\\\\\)*\\$" contained
+syn match sedLineCont "[^\\]\%(\\\\\)*\\$"ms=e contained
+syn match sedSpecial "[{},!]"
+
+" continue to silently support the old name
+let s:highlight_tabs = v:false
+if exists("g:highlight_sedtabs") || get(g:, "sed_highlight_tabs", 0)
+ let s:highlight_tabs = v:true
+ syn match sedTab "\t" contained
+endif
+
+" Append/Change/Insert
+syn region sedACI matchgroup=sedFunction start="[aci]\\$" matchgroup=NONE end="^.*$" contains=sedLineCont,sedTab
+
+syn region sedBranch matchgroup=sedFunction start="[bt]" matchgroup=sedSemicolon end=";\|$" contains=sedWhitespace
+syn region sedRW matchgroup=sedFunction start="[rw]" matchgroup=sedSemicolon end=";\|$" contains=sedWhitespace
+
+" Substitution/transform with various delimiters
+syn region sedFlagWrite matchgroup=sedFlag start="w" matchgroup=sedSemicolon end=";\|$" contains=sedWhitespace contained
+syn match sedFlag "[[:digit:]gpI]*w\=" contains=sedFlagWrite contained
+syn match sedRegexpMeta "[.*^$]" contained
+syn match sedRegexpMeta "\\." contains=sedTab contained
+syn match sedRegexpMeta "\[.\{-}\]" contains=sedTab contained
+syn match sedRegexpMeta "\\{\d\*,\d*\\}" contained
+syn match sedRegexpMeta "\\%(.\{-}\\)" contains=sedTab contained
+syn match sedReplaceMeta "&\|\\\%($\|.\)" contains=sedTab contained
+
+" Metacharacters: $ * . \ ^ [ ~
+" @ is used as delimiter and treated on its own below
+let s:at = char2nr("@")
+let s:i = char2nr(" ") " ASCII: 32, EBCDIC: 64
+if has("ebcdic")
+ let s:last = 255
+else
+ let s:last = 126
+endif
+let s:metacharacters = '$*.\^[~'
+while s:i <= s:last
+ let s:delimiter = escape(nr2char(s:i), s:metacharacters)
+ if s:i != s:at
+ exe 'syn region sedAddress matchgroup=Special start=@\\'.s:delimiter.'\%(\\'.s:delimiter.'\)\=@ skip=@[^\\]\%(\\\\\)*\\'.s:delimiter.'@ end=@'.s:delimiter.'[IM]\=@ contains=sedTab'
+ exe 'syn region sedRegexp'.s:i 'matchgroup=Special start=@'.s:delimiter.'\%(\\\\\|\\'.s:delimiter.'\)*@ skip=@[^\\'.s:delimiter.']\%(\\\\\)*\\'.s:delimiter.'@ end=@'.s:delimiter.'@me=e-1 contains=sedTab,sedRegexpMeta keepend contained nextgroup=sedReplacement'.s:i
+ exe 'syn region sedReplacement'.s:i 'matchgroup=Special start=@'.s:delimiter.'\%(\\\\\|\\'.s:delimiter.'\)*@ skip=@[^\\'.s:delimiter.']\%(\\\\\)*\\'.s:delimiter.'@ end=@'.s:delimiter.'@ contains=sedTab,sedReplaceMeta keepend contained nextgroup=@sedFlags'
+ endif
+ let s:i = s:i + 1
+endwhile
+syn region sedAddress matchgroup=Special start=+\\@\%(\\@\)\=+ skip=+[^\\]\%(\\\\\)*\\@+ end=+@I\=+ contains=sedTab,sedRegexpMeta
+syn region sedRegexp64 matchgroup=Special start=+@\%(\\\\\|\\@\)*+ skip=+[^\\@]\%(\\\\\)*\\@+ end=+@+me=e-1 contains=sedTab,sedRegexpMeta keepend contained nextgroup=sedReplacement64
+syn region sedReplacement64 matchgroup=Special start=+@\%(\\\\\|\\@\)*+ skip=+[^\\@]\%(\\\\\)*\\@+ end=+@+ contains=sedTab,sedReplaceMeta keepend contained nextgroup=sedFlag
+
+" Since the syntax for the substitution command is very similar to the
+" syntax for the transform command, I use the same pattern matching
+" for both commands. There is one problem -- the transform command
+" (y) does not allow any flags. To save memory, I ignore this problem.
+syn match sedST "[sy]" nextgroup=sedRegexp\d\+
+
+
+hi def link sedAddress Macro
+hi def link sedACI NONE
+hi def link sedBranch Label
+hi def link sedComment Comment
+hi def link sedDelete Function
+hi def link sedError Error
+hi def link sedFlag Type
+hi def link sedFlagWrite Constant
+hi def link sedFunction Function
+hi def link sedLabel Label
+hi def link sedLineCont Special
+hi def link sedPutHoldspc Function
+hi def link sedReplaceMeta Special
+hi def link sedRegexpMeta Special
+hi def link sedRW Constant
+hi def link sedSemicolon Special
+hi def link sedST Function
+hi def link sedSpecial Special
+hi def link sedTodo Todo
+hi def link sedWhitespace NONE
+if s:highlight_tabs
+ hi def link sedTab Todo
+endif
+let s:i = char2nr(" ") " ASCII: 32, EBCDIC: 64
+while s:i <= s:last
+ exe "hi def link sedRegexp".s:i "Macro"
+ exe "hi def link sedReplacement".s:i "NONE"
+ let s:i = s:i + 1
+endwhile
+
+unlet s:i s:last s:delimiter s:metacharacters s:at
+unlet s:highlight_tabs
+
+let b:current_syntax = "sed"
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/syntax/sendpr.vim b/runtime/syntax/sendpr.vim
new file mode 100644
index 0000000..2541b95
--- /dev/null
+++ b/runtime/syntax/sendpr.vim
@@ -0,0 +1,37 @@
+" Vim syntax file
+" Language: FreeBSD send-pr file
+" Maintainer: Hendrik Scholz <hendrik@scholz.net>
+" Last Change: 2022 Jun 14
+"
+" http://raisdorf.net/files/misc/send-pr.vim
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match sendprComment /^SEND-PR:/
+" email address
+syn match sendprType /<[a-zA-Z0-9\-\_\.]*@[a-zA-Z0-9\-\_\.]*>/
+" ^> lines
+syn match sendprString /^>[a-zA-Z\-]*:/
+syn region sendprLabel start="\[" end="\]"
+syn match sendprString /^To:/
+syn match sendprString /^From:/
+syn match sendprString /^Reply-To:/
+syn match sendprString /^Cc:/
+syn match sendprString /^X-send-pr-version:/
+syn match sendprString /^X-GNATS-Notify:/
+
+hi def link sendprComment Comment
+hi def link sendprType Type
+hi def link sendprString String
+hi def link sendprLabel Label
+
+let b:current_syntax = 'sendpr'
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/sensors.vim b/runtime/syntax/sensors.vim
new file mode 100644
index 0000000..f8bc4c6
--- /dev/null
+++ b/runtime/syntax/sensors.vim
@@ -0,0 +1,52 @@
+" Vim syntax file
+" Language: sensors.conf(5) - libsensors configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword sensorsTodo contained TODO FIXME XXX NOTE
+
+syn region sensorsComment display oneline start='#' end='$'
+ \ contains=sensorsTodo,@Spell
+
+
+syn keyword sensorsKeyword bus chip label compute ignore set
+
+syn region sensorsName display oneline
+ \ start=+"+ skip=+\\\\\|\\"+ end=+"+
+ \ contains=sensorsNameSpecial
+syn match sensorsName display '\w\+'
+
+syn match sensorsNameSpecial display '\\["\\rnt]'
+
+syn match sensorsLineContinue '\\$'
+
+syn match sensorsNumber display '\d*.\d\+\>'
+
+syn match sensorsRealWorld display '@'
+
+syn match sensorsOperator display '[+*/-]'
+
+syn match sensorsDelimiter display '[()]'
+
+hi def link sensorsTodo Todo
+hi def link sensorsComment Comment
+hi def link sensorsKeyword Keyword
+hi def link sensorsName String
+hi def link sensorsNameSpecial SpecialChar
+hi def link sensorsLineContinue Special
+hi def link sensorsNumber Number
+hi def link sensorsRealWorld Identifier
+hi def link sensorsOperator Normal
+hi def link sensorsDelimiter Normal
+
+let b:current_syntax = "sensors"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/services.vim b/runtime/syntax/services.vim
new file mode 100644
index 0000000..94e39ae
--- /dev/null
+++ b/runtime/syntax/services.vim
@@ -0,0 +1,54 @@
+" Vim syntax file
+" Language: services(5) - Internet network services list
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match servicesBegin display '^'
+ \ nextgroup=servicesName,servicesComment
+
+syn match servicesName contained display '[[:graph:]]\+'
+ \ nextgroup=servicesPort skipwhite
+
+syn match servicesPort contained display '\d\+'
+ \ nextgroup=servicesPPDiv,servicesPPDivDepr
+ \ skipwhite
+
+syn match servicesPPDiv contained display '/'
+ \ nextgroup=servicesProtocol skipwhite
+
+syn match servicesPPDivDepr contained display ','
+ \ nextgroup=servicesProtocol skipwhite
+
+syn match servicesProtocol contained display '\S\+'
+ \ nextgroup=servicesAliases,servicesComment
+ \ skipwhite
+
+syn match servicesAliases contained display '\S\+'
+ \ nextgroup=servicesAliases,servicesComment
+ \ skipwhite
+
+syn keyword servicesTodo contained TODO FIXME XXX NOTE
+
+syn region servicesComment display oneline start='#' end='$'
+ \ contains=servicesTodo,@Spell
+
+hi def link servicesTodo Todo
+hi def link servicesComment Comment
+hi def link servicesName Identifier
+hi def link servicesPort Number
+hi def link servicesPPDiv Delimiter
+hi def link servicesPPDivDepr Error
+hi def link servicesProtocol Type
+hi def link servicesAliases Macro
+
+let b:current_syntax = "services"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/setserial.vim b/runtime/syntax/setserial.vim
new file mode 100644
index 0000000..967fa5f
--- /dev/null
+++ b/runtime/syntax/setserial.vim
@@ -0,0 +1,120 @@
+" Vim syntax file
+" Language: setserial(8) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match setserialBegin display '^'
+ \ nextgroup=setserialDevice,setserialComment
+ \ skipwhite
+
+syn match setserialDevice contained display '\%(/[^ \t/]*\)\+'
+ \ nextgroup=setserialParameter skipwhite
+
+syn keyword setserialParameter contained port irq baud_base divisor
+ \ close_delay closing_wait rx_trigger
+ \ tx_trigger flow_off flow_on rx_timeout
+ \ nextgroup=setserialNumber skipwhite
+
+syn keyword setserialParameter contained uart
+ \ nextgroup=setserialUARTType skipwhite
+
+syn keyword setserialParameter contained autoconfig auto_irq skip_test
+ \ spd_hi spd_vhi spd_shi spd_warp spd_cust
+ \ spd_normal sak fourport session_lockout
+ \ pgrp_lockout hup_notify split_termios
+ \ callout_nohup low_latency
+ \ nextgroup=setserialParameter skipwhite
+
+syn match setserialParameter contained display
+ \ '\^\%(auto_irq\|skip_test\|sak\|fourport\)'
+ \ contains=setserialNegation
+ \ nextgroup=setserialParameter skipwhite
+
+syn match setserialParameter contained display
+ \ '\^\%(session_lockout\|pgrp_lockout\)'
+ \ contains=setserialNegation
+ \ nextgroup=setserialParameter skipwhite
+
+syn match setserialParameter contained display
+ \ '\^\%(hup_notify\|split_termios\)'
+ \ contains=setserialNegation
+ \ nextgroup=setserialParameter skipwhite
+
+syn match setserialParameter contained display
+ \ '\^\%(callout_nohup\|low_latency\)'
+ \ contains=setserialNegation
+ \ nextgroup=setserialParameter skipwhite
+
+syn keyword setserialParameter contained set_multiport
+ \ nextgroup=setserialMultiport skipwhite
+
+syn match setserialNumber contained display '\<\d\+\>'
+ \ nextgroup=setserialParameter skipwhite
+syn match setserialNumber contained display '0x\x\+'
+ \ nextgroup=setserialParameter skipwhite
+
+syn keyword setserialUARTType contained none
+
+syn match setserialUARTType contained display
+ \ '8250\|16[4789]50\|16550A\=\|16650\%(V2\)\='
+ \ nextgroup=setserialParameter skipwhite
+
+syn match setserialUARTType contained display '166[59]4'
+ \ nextgroup=setserialParameter skipwhite
+
+syn match setserialNegation contained display '\^'
+
+syn match setserialMultiport contained '\<port\d\+\>'
+ \ nextgroup=setserialPort skipwhite
+
+syn match setserialPort contained display '\<\d\+\>'
+ \ nextgroup=setserialMask skipwhite
+syn match setserialPort contained display '0x\x\+'
+ \ nextgroup=setserialMask skipwhite
+
+syn match setserialMask contained '\<mask\d\+\>'
+ \ nextgroup=setserialBitMask skipwhite
+
+syn match setserialBitMask contained display '\<\d\+\>'
+ \ nextgroup=setserialMatch skipwhite
+syn match setserialBitMask contained display '0x\x\+'
+ \ nextgroup=setserialMatch skipwhite
+
+syn match setserialMatch contained '\<match\d\+\>'
+ \ nextgroup=setserialMatchBits skipwhite
+
+syn match setserialMatchBits contained display '\<\d\+\>'
+ \ nextgroup=setserialMultiport skipwhite
+syn match setserialMatchBits contained display '0x\x\+'
+ \ nextgroup=setserialMultiport skipwhite
+
+syn keyword setserialTodo contained TODO FIXME XXX NOTE
+
+syn region setserialComment display oneline start='^\s*#' end='$'
+ \ contains=setserialTodo,@Spell
+
+hi def link setserialTodo Todo
+hi def link setserialComment Comment
+hi def link setserialDevice Normal
+hi def link setserialParameter Identifier
+hi def link setserialNumber Number
+hi def link setserialUARTType Type
+hi def link setserialNegation Operator
+hi def link setserialMultiport Type
+hi def link setserialPort setserialNumber
+hi def link setserialMask Type
+hi def link setserialBitMask setserialNumber
+hi def link setserialMatch Type
+hi def link setserialMatchBits setserialNumber
+
+let b:current_syntax = "setserial"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/sexplib.vim b/runtime/syntax/sexplib.vim
new file mode 100644
index 0000000..55dd3fb
--- /dev/null
+++ b/runtime/syntax/sexplib.vim
@@ -0,0 +1,88 @@
+" Vim syntax file
+" Language: S-expressions as used in Sexplib
+" Filenames: *.sexp
+" Maintainers: Markus Mottl <markus.mottl@gmail.com>
+" URL: https://github.com/ocaml/vim-ocaml
+" Last Change: 2020 Dec 31 - Updated header for Vim contribution (MM)
+" 2017 Apr 11 - Improved matching of negative numbers (MM)
+" 2012 Jun 20 - Fixed a block comment highlighting bug (MM)
+
+" 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") && b:current_syntax == "sexplib"
+ finish
+endif
+
+" Sexplib is case sensitive.
+syn case match
+
+" Comments
+syn keyword sexplibTodo contained TODO FIXME XXX NOTE
+syn region sexplibBlockComment matchgroup=sexplibComment start="#|" matchgroup=sexplibComment end="|#" contains=ALLBUT,sexplibQuotedAtom,sexplibUnquotedAtom,sexplibEncl,sexplibComment
+syn match sexplibSexpComment "#;" skipwhite skipempty nextgroup=sexplibQuotedAtomComment,sexplibUnquotedAtomComment,sexplibListComment,sexplibComment
+syn region sexplibQuotedAtomComment start=+"+ skip=+\\\\\|\\"+ end=+"+ contained
+syn match sexplibUnquotedAtomComment /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*/ contained
+syn region sexplibListComment matchgroup=sexplibComment start="(" matchgroup=sexplibComment end=")" contained contains=ALLBUT,sexplibEncl,sexplibString,sexplibQuotedAtom,sexplibUnquotedAtom,sexplibTodo,sexplibNumber,sexplibFloat
+syn match sexplibComment ";.*" contains=sexplibTodo
+
+" Atoms
+syn match sexplibUnquotedAtom /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*/
+syn region sexplibQuotedAtom start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match sexplibNumber "-\=\<\d\(_\|\d\)*[l|L|n]\?\>"
+syn match sexplibNumber "-\=\<0[x|X]\(\x\|_\)\+[l|L|n]\?\>"
+syn match sexplibNumber "-\=\<0[o|O]\(\o\|_\)\+[l|L|n]\?\>"
+syn match sexplibNumber "-\=\<0[b|B]\([01]\|_\)\+[l|L|n]\?\>"
+syn match sexplibFloat "-\=\<\d\(_\|\d\)*\.\?\(_\|\d\)*\([eE][-+]\=\d\(_\|\d\)*\)\=\>"
+
+" Lists
+syn region sexplibEncl transparent matchgroup=sexplibEncl start="(" matchgroup=sexplibEncl end=")" contains=ALLBUT,sexplibParenErr
+
+" Errors
+syn match sexplibUnquotedAtomErr /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*\(#|\||#\)[^;()" \t]*/
+syn match sexplibParenErr ")"
+
+" Synchronization
+syn sync minlines=50
+syn sync maxlines=500
+
+" 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_sexplib_syntax_inits")
+ if version < 508
+ let did_sexplib_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink sexplibParenErr Error
+ HiLink sexplibUnquotedAtomErr Error
+
+ HiLink sexplibComment Comment
+ HiLink sexplibSexpComment Comment
+ HiLink sexplibQuotedAtomComment Include
+ HiLink sexplibUnquotedAtomComment Comment
+ HiLink sexplibBlockComment Comment
+ HiLink sexplibListComment Comment
+
+ HiLink sexplibBoolean Boolean
+ HiLink sexplibCharacter Character
+ HiLink sexplibNumber Number
+ HiLink sexplibFloat Float
+ HiLink sexplibUnquotedAtom Identifier
+ HiLink sexplibEncl Identifier
+ HiLink sexplibQuotedAtom Keyword
+
+ HiLink sexplibTodo Todo
+
+ HiLink sexplibEncl Keyword
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "sexplib"
+
+" vim: ts=8
diff --git a/runtime/syntax/sgml.vim b/runtime/syntax/sgml.vim
new file mode 100644
index 0000000..00d58d1
--- /dev/null
+++ b/runtime/syntax/sgml.vim
@@ -0,0 +1,334 @@
+" Vim syntax file
+" Language: SGML
+" Maintainer: Johannes Zellner <johannes@zellner.org>
+" Last Change: Tue, 27 Apr 2004 15:05:21 CEST
+" Filenames: *.sgml,*.sgm
+" $Id: sgml.vim,v 1.1 2004/06/13 17:52:57 vimboss Exp $
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:sgml_cpo_save = &cpo
+set cpo&vim
+
+syn case match
+
+" mark illegal characters
+syn match sgmlError "[<&]"
+
+
+" unicode numbers:
+" provide different highlithing for unicode characters
+" inside strings and in plain text (character data).
+"
+" EXAMPLE:
+"
+" \u4e88
+"
+syn match sgmlUnicodeNumberAttr +\\u\x\{4}+ contained contains=sgmlUnicodeSpecifierAttr
+syn match sgmlUnicodeSpecifierAttr +\\u+ contained
+syn match sgmlUnicodeNumberData +\\u\x\{4}+ contained contains=sgmlUnicodeSpecifierData
+syn match sgmlUnicodeSpecifierData +\\u+ contained
+
+
+" strings inside character data or comments
+"
+syn region sgmlString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=sgmlEntity,sgmlUnicodeNumberAttr display
+syn region sgmlString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=sgmlEntity,sgmlUnicodeNumberAttr display
+
+" punctuation (within attributes) e.g. <tag sgml:foo.attribute ...>
+" ^ ^
+syn match sgmlAttribPunct +[:.]+ contained display
+
+
+" no highlighting for sgmlEqual (sgmlEqual has no highlighting group)
+syn match sgmlEqual +=+
+
+
+" attribute, everything before the '='
+"
+" PROVIDES: @sgmlAttribHook
+"
+" EXAMPLE:
+"
+" <tag foo.attribute = "value">
+" ^^^^^^^^^^^^^
+"
+syn match sgmlAttrib
+ \ +[^-'"<]\@<=\<[a-zA-Z0-9.:]\+\>\([^'">]\@=\|$\)+
+ \ contained
+ \ contains=sgmlAttribPunct,@sgmlAttribHook
+ \ display
+
+
+" UNQUOTED value (not including the '=' -- sgmlEqual)
+"
+" PROVIDES: @sgmlValueHook
+"
+" EXAMPLE:
+"
+" <tag foo.attribute = value>
+" ^^^^^
+"
+syn match sgmlValue
+ \ +[^"' =/!?<>][^ =/!?<>]*+
+ \ contained
+ \ contains=sgmlEntity,sgmlUnicodeNumberAttr,@sgmlValueHook
+ \ display
+
+
+" QUOTED value (not including the '=' -- sgmlEqual)
+"
+" PROVIDES: @sgmlValueHook
+"
+" EXAMPLE:
+"
+" <tag foo.attribute = "value">
+" ^^^^^^^
+" <tag foo.attribute = 'value'>
+" ^^^^^^^
+"
+syn region sgmlValue contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+ \ contains=sgmlEntity,sgmlUnicodeNumberAttr,@sgmlValueHook
+syn region sgmlValue contained start=+'+ skip=+\\\\\|\\'+ end=+'+
+ \ contains=sgmlEntity,sgmlUnicodeNumberAttr,@sgmlValueHook
+
+
+" value, everything after (and including) the '='
+" no highlighting!
+"
+" EXAMPLE:
+"
+" <tag foo.attribute = "value">
+" ^^^^^^^^^
+" <tag foo.attribute = value>
+" ^^^^^^^
+"
+syn match sgmlEqualValue
+ \ +=\s*[^ =/!?<>]\++
+ \ contained
+ \ contains=sgmlEqual,sgmlString,sgmlValue
+ \ display
+
+
+" start tag
+" use matchgroup=sgmlTag to skip over the leading '<'
+" see also sgmlEmptyTag below.
+"
+" PROVIDES: @sgmlTagHook
+"
+syn region sgmlTag
+ \ matchgroup=sgmlTag start=+<[^ /!?"']\@=+
+ \ matchgroup=sgmlTag end=+>+
+ \ contained
+ \ contains=sgmlError,sgmlAttrib,sgmlEqualValue,@sgmlTagHook
+
+
+" tag content for empty tags. This is the same as sgmlTag
+" above, except the `matchgroup=sgmlEndTag for highlighting
+" the end '/>' differently.
+"
+" PROVIDES: @sgmlTagHook
+"
+syn region sgmlEmptyTag
+ \ matchgroup=sgmlTag start=+<[^ /!?"']\@=+
+ \ matchgroup=sgmlEndTag end=+/>+
+ \ contained
+ \ contains=sgmlError,sgmlAttrib,sgmlEqualValue,@sgmlTagHook
+
+
+" end tag
+" highlight everything but not the trailing '>' which
+" was already highlighted by the containing sgmlRegion.
+"
+" PROVIDES: @sgmlTagHook
+" (should we provide a separate @sgmlEndTagHook ?)
+"
+syn match sgmlEndTag
+ \ +</[^ /!?>"']\+>+
+ \ contained
+ \ contains=@sgmlTagHook
+
+
+" [-- SGML SPECIFIC --]
+
+" SGML specific
+" tag content for abbreviated regions
+"
+" PROVIDES: @sgmlTagHook
+"
+syn region sgmlAbbrTag
+ \ matchgroup=sgmlTag start=+<[^ /!?"']\@=+
+ \ matchgroup=sgmlTag end=+/+
+ \ contained
+ \ contains=sgmlError,sgmlAttrib,sgmlEqualValue,@sgmlTagHook
+
+
+" SGML specific
+" just highlight the trailing '/'
+syn match sgmlAbbrEndTag +/+
+
+
+" SGML specific
+" abbreviated regions
+"
+" No highlighting, highlighting is done by contained elements.
+"
+" PROVIDES: @sgmlRegionHook
+"
+" EXAMPLE:
+"
+" <bold/Im Anfang war das Wort/
+"
+syn match sgmlAbbrRegion
+ \ +<[^/!?>"']\+/\_[^/]\+/+
+ \ contains=sgmlAbbrTag,sgmlAbbrEndTag,sgmlCdata,sgmlComment,sgmlEntity,sgmlUnicodeNumberData,@sgmlRegionHook
+
+" [-- END OF SGML SPECIFIC --]
+
+
+" real (non-empty) elements. We cannot do syntax folding
+" as in xml, because end tags may be optional in sgml depending
+" on the dtd.
+" No highlighting, highlighting is done by contained elements.
+"
+" PROVIDES: @sgmlRegionHook
+"
+" EXAMPLE:
+"
+" <tag id="whoops">
+" <!-- comment -->
+" <another.tag></another.tag>
+" <another.tag/>
+" some data
+" </tag>
+"
+" SGML specific:
+" compared to xmlRegion:
+" - removed folding
+" - added a single '/'in the start pattern
+"
+syn region sgmlRegion
+ \ start=+<\z([^ /!?>"']\+\)\(\(\_[^/>]*[^/!?]>\)\|>\)+
+ \ end=+</\z1>+
+ \ contains=sgmlTag,sgmlEndTag,sgmlCdata,@sgmlRegionCluster,sgmlComment,sgmlEntity,sgmlUnicodeNumberData,@sgmlRegionHook
+ \ keepend
+ \ extend
+
+
+" empty tags. Just a container, no highlighting.
+" Compare this with sgmlTag.
+"
+" EXAMPLE:
+"
+" <tag id="lola"/>
+"
+" TODO use sgmlEmptyTag instead of sgmlTag
+syn match sgmlEmptyRegion
+ \ +<[^ /!?>"']\(\_[^"'<>]\|"\_[^"]*"\|'\_[^']*'\)*/>+
+ \ contains=sgmlEmptyTag
+
+
+" cluster which contains the above two elements
+syn cluster sgmlRegionCluster contains=sgmlRegion,sgmlEmptyRegion,sgmlAbbrRegion
+
+
+" &entities; compare with dtd
+syn match sgmlEntity "&[^; \t]*;" contains=sgmlEntityPunct
+syn match sgmlEntityPunct contained "[&.;]"
+
+
+" The real comments (this implements the comments as defined by sgml,
+" but not all sgml pages actually conform to it. Errors are flagged.
+syn region sgmlComment start=+<!+ end=+>+ contains=sgmlCommentPart,sgmlString,sgmlCommentError,sgmlTodo
+syn keyword sgmlTodo contained TODO FIXME XXX display
+syn match sgmlCommentError contained "[^><!]"
+syn region sgmlCommentPart contained start=+--+ end=+--+
+
+
+" CData sections
+"
+" PROVIDES: @sgmlCdataHook
+"
+syn region sgmlCdata
+ \ start=+<!\[CDATA\[+
+ \ end=+]]>+
+ \ contains=sgmlCdataStart,sgmlCdataEnd,@sgmlCdataHook
+ \ keepend
+ \ extend
+" using the following line instead leads to corrupt folding at CDATA regions
+" syn match sgmlCdata +<!\[CDATA\[\_.\{-}]]>+ contains=sgmlCdataStart,sgmlCdataEnd,@sgmlCdataHook
+syn match sgmlCdataStart +<!\[CDATA\[+ contained contains=sgmlCdataCdata
+syn keyword sgmlCdataCdata CDATA contained
+syn match sgmlCdataEnd +]]>+ contained
+
+
+" Processing instructions
+" This allows "?>" inside strings -- good idea?
+syn region sgmlProcessing matchgroup=sgmlProcessingDelim start="<?" end="?>" contains=sgmlAttrib,sgmlEqualValue
+
+
+" DTD -- we use dtd.vim here
+syn region sgmlDocType matchgroup=sgmlDocTypeDecl start="\c<!DOCTYPE"he=s+2,rs=s+2 end=">" contains=sgmlDocTypeKeyword,sgmlInlineDTD,sgmlString
+syn keyword sgmlDocTypeKeyword contained DOCTYPE PUBLIC SYSTEM
+syn region sgmlInlineDTD contained start="\[" end="]" contains=@sgmlDTD
+syn include @sgmlDTD <sfile>:p:h/dtd.vim
+
+
+" synchronizing
+" TODO !!! to be improved !!!
+
+syn sync match sgmlSyncDT grouphere sgmlDocType +\_.\(<!DOCTYPE\)\@=+
+" syn sync match sgmlSyncDT groupthere NONE +]>+
+
+syn sync match sgmlSync grouphere sgmlRegion +\_.\(<[^ /!?>"']\+\)\@=+
+" syn sync match sgmlSync grouphere sgmlRegion "<[^ /!?>"']*>"
+syn sync match sgmlSync groupthere sgmlRegion +</[^ /!?>"']\+>+
+
+syn sync minlines=100
+
+
+" The default highlighting.
+hi def link sgmlTodo Todo
+hi def link sgmlTag Function
+hi def link sgmlEndTag Identifier
+" SGML specifig
+hi def link sgmlAbbrEndTag Identifier
+hi def link sgmlEmptyTag Function
+hi def link sgmlEntity Statement
+hi def link sgmlEntityPunct Type
+
+hi def link sgmlAttribPunct Comment
+hi def link sgmlAttrib Type
+
+hi def link sgmlValue String
+hi def link sgmlString String
+hi def link sgmlComment Comment
+hi def link sgmlCommentPart Comment
+hi def link sgmlCommentError Error
+hi def link sgmlError Error
+
+hi def link sgmlProcessingDelim Comment
+hi def link sgmlProcessing Type
+
+hi def link sgmlCdata String
+hi def link sgmlCdataCdata Statement
+hi def link sgmlCdataStart Type
+hi def link sgmlCdataEnd Type
+
+hi def link sgmlDocTypeDecl Function
+hi def link sgmlDocTypeKeyword Statement
+hi def link sgmlInlineDTD Function
+hi def link sgmlUnicodeNumberAttr Number
+hi def link sgmlUnicodeSpecifierAttr SpecialChar
+hi def link sgmlUnicodeNumberData Number
+hi def link sgmlUnicodeSpecifierData SpecialChar
+
+let b:current_syntax = "sgml"
+
+let &cpo = s:sgml_cpo_save
+unlet s:sgml_cpo_save
+
+" vim: ts=8
diff --git a/runtime/syntax/sgmldecl.vim b/runtime/syntax/sgmldecl.vim
new file mode 100644
index 0000000..6c1cde1
--- /dev/null
+++ b/runtime/syntax/sgmldecl.vim
@@ -0,0 +1,72 @@
+" Vim syntax file
+" Language: SGML (SGML Declaration <!SGML ...>)
+" Last Change: jueves, 28 de diciembre de 2000, 13:51:44 CLST
+" Maintainer: "Daniel A. Molina W." <sickd@linux-chile.org>
+" You can modify and maintain this file, in other case send comments
+" the maintainer email address.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+syn case ignore
+
+syn region sgmldeclDeclBlock transparent start=+<!SGML+ end=+>+
+syn region sgmldeclTagBlock transparent start=+<+ end=+>+
+ \ contains=ALLBUT,
+ \ @sgmlTagError,@sgmlErrInTag
+syn region sgmldeclComment contained start=+--+ end=+--+
+
+syn keyword sgmldeclDeclKeys SGML CHARSET CAPACITY SCOPE SYNTAX
+ \ FEATURES
+
+syn keyword sgmldeclTypes BASESET DESCSET DOCUMENT NAMING DELIM
+ \ NAMES QUANTITY SHUNCHAR DOCTYPE
+ \ ELEMENT ENTITY ATTLIST NOTATION
+ \ TYPE
+
+syn keyword sgmldeclStatem CONTROLS FUNCTION NAMECASE MINIMIZE
+ \ LINK OTHER APPINFO REF ENTITIES
+
+syn keyword sgmldeclVariables TOTALCAP GRPCAP ENTCAP DATATAG OMITTAG RANK
+ \ SIMPLE IMPLICIT EXPLICIT CONCUR SUBDOC FORMAL ATTCAP
+ \ ATTCHCAP AVGRPCAP ELEMCAP ENTCHCAP IDCAP IDREFCAP
+ \ SHORTTAG
+
+syn match sgmldeclNConst contained +[0-9]\++
+
+syn region sgmldeclString contained start=+"+ end=+"+
+
+syn keyword sgmldeclBool YES NO
+
+syn keyword sgmldeclSpecial SHORTREF SGMLREF UNUSED NONE GENERAL
+ \ SEEALSO ANY
+
+syn sync lines=250
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link sgmldeclDeclKeys Keyword
+hi def link sgmldeclTypes Type
+hi def link sgmldeclConst Constant
+hi def link sgmldeclNConst Constant
+hi def link sgmldeclString String
+hi def link sgmldeclDeclBlock Normal
+hi def link sgmldeclBool Boolean
+hi def link sgmldeclSpecial Special
+hi def link sgmldeclComment Comment
+hi def link sgmldeclStatem Statement
+hi def link sgmldeclVariables Type
+
+
+let b:current_syntax = "sgmldecl"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim:set tw=78 ts=4:
diff --git a/runtime/syntax/sgmllnx.vim b/runtime/syntax/sgmllnx.vim
new file mode 100644
index 0000000..ccd78f4
--- /dev/null
+++ b/runtime/syntax/sgmllnx.vim
@@ -0,0 +1,54 @@
+" Vim syntax file
+" Language: SGML-linuxdoc (supported by old sgmltools-1.x)
+" Maintainer: SungHyun Nam <goweol@gmail.com>
+" Last Change: 2013 May 13
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" tags
+syn region sgmllnxEndTag start=+</+ end=+>+ contains=sgmllnxTagN,sgmllnxTagError
+syn region sgmllnxTag start=+<[^/]+ end=+>+ contains=sgmllnxTagN,sgmllnxTagError
+syn match sgmllnxTagN contained +<\s*[-a-zA-Z0-9]\++ms=s+1 contains=sgmllnxTagName
+syn match sgmllnxTagN contained +</\s*[-a-zA-Z0-9]\++ms=s+2 contains=sgmllnxTagName
+
+syn region sgmllnxTag2 start=+<\s*[a-zA-Z]\+/+ keepend end=+/+ contains=sgmllnxTagN2
+syn match sgmllnxTagN2 contained +/.*/+ms=s+1,me=e-1
+
+syn region sgmllnxSpecial oneline start="&" end=";"
+
+" tag names
+syn keyword sgmllnxTagName contained article author date toc title sect verb
+syn keyword sgmllnxTagName contained abstract tscreen p itemize item enum
+syn keyword sgmllnxTagName contained descrip quote htmlurl code ref
+syn keyword sgmllnxTagName contained tt tag bf it url
+syn match sgmllnxTagName contained "sect\d\+"
+
+" Comments
+syn region sgmllnxComment start=+<!--+ end=+-->+
+syn region sgmllnxDocType start=+<!doctype+ end=+>+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link sgmllnxTag2 Function
+hi def link sgmllnxTagN2 Function
+hi def link sgmllnxTag Special
+hi def link sgmllnxEndTag Special
+hi def link sgmllnxParen Special
+hi def link sgmllnxEntity Type
+hi def link sgmllnxDocEnt Type
+hi def link sgmllnxTagName Statement
+hi def link sgmllnxComment Comment
+hi def link sgmllnxSpecial Special
+hi def link sgmllnxDocType PreProc
+hi def link sgmllnxTagError Error
+
+
+let b:current_syntax = "sgmllnx"
+
+" vim:set tw=78 ts=8 sts=2 sw=2 noet:
diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim
new file mode 100644
index 0000000..f455f19
--- /dev/null
+++ b/runtime/syntax/sh.vim
@@ -0,0 +1,813 @@
+" Vim syntax file
+" Language: shell (sh) Korn shell (ksh) bash (sh)
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int>
+" Last Change: Feb 11, 2023
+" Version: 207
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH
+" For options and settings, please use: :help ft-sh-syntax
+" This file includes many ideas from Eric Brunet (eric.brunet@ens.fr) and heredoc fixes from Felipe Contreras
+
+" quit when a syntax file was already loaded {{{1
+if exists("b:current_syntax")
+ finish
+endif
+
+" If the shell script itself specifies which shell to use, use it
+if getline(1) =~ '\<ksh\>'
+ let b:is_kornshell = 1
+elseif getline(1) =~ '\<bash\>'
+ let b:is_bash = 1
+elseif getline(1) =~ '\<dash\>'
+ let b:is_dash = 1
+elseif !exists("g:is_kornshell") && !exists("g:is_bash") && !exists("g:is_posix") && !exists("g:is_sh") && !exists("g:is_dash")
+ " user did not specify which shell to use, and
+ " the script itself does not specify which shell to use. FYI: /bin/sh is ambiguous.
+ " Assuming /bin/sh is executable, and if its a link, find out what it links to.
+ let s:shell = ""
+ if executable("/bin/sh")
+ let s:shell = resolve("/bin/sh")
+ elseif executable("/usr/bin/sh")
+ let s:shell = resolve("/usr/bin/sh")
+ endif
+ if s:shell =~ '\<ksh\>'
+ let b:is_kornshell= 1
+ elseif s:shell =~ '\<bash\>'
+ let b:is_bash = 1
+ elseif s:shell =~ '\<dash\>'
+ let b:is_dash = 1
+ endif
+ unlet s:shell
+endif
+
+" handling /bin/sh with is_kornshell/is_sh {{{1
+" b:is_sh will be set when "#! /bin/sh" is found;
+" However, it often is just a masquerade by bash (typically Linux)
+" or kornshell (typically workstations with Posix "sh").
+" So, when the user sets "g:is_bash", "g:is_kornshell",
+" or "g:is_posix", a b:is_sh is converted into b:is_bash/b:is_kornshell,
+" respectively.
+if !exists("b:is_kornshell") && !exists("b:is_bash") && !exists("b:is_dash")
+ if exists("g:is_posix") && !exists("g:is_kornshell")
+ let g:is_kornshell= g:is_posix
+ endif
+ if exists("g:is_kornshell")
+ let b:is_kornshell= 1
+ if exists("b:is_sh")
+ unlet b:is_sh
+ endif
+ elseif exists("g:is_bash")
+ let b:is_bash= 1
+ if exists("b:is_sh")
+ unlet b:is_sh
+ endif
+ elseif exists("g:is_dash")
+ let b:is_dash= 1
+ if exists("b:is_sh")
+ unlet b:is_sh
+ endif
+ else
+ let b:is_sh= 1
+ endif
+endif
+
+" if b:is_dash, set b:is_posix too
+if exists("b:is_dash")
+ let b:is_posix= 1
+endif
+
+" set up default g:sh_fold_enabled {{{1
+" ================================
+if !exists("g:sh_fold_enabled")
+ let g:sh_fold_enabled= 0
+elseif g:sh_fold_enabled != 0 && !has("folding")
+ let g:sh_fold_enabled= 0
+ echomsg "Ignoring g:sh_fold_enabled=".g:sh_fold_enabled."; need to re-compile vim for +fold support"
+endif
+let s:sh_fold_functions= and(g:sh_fold_enabled,1)
+let s:sh_fold_heredoc = and(g:sh_fold_enabled,2)
+let s:sh_fold_ifdofor = and(g:sh_fold_enabled,4)
+if g:sh_fold_enabled && &fdm == "manual"
+ " Given that the user provided g:sh_fold_enabled
+ " AND g:sh_fold_enabled is manual (usual default)
+ " implies a desire for syntax-based folding
+ setl fdm=syntax
+endif
+
+" set up the syntax-highlighting for iskeyword
+if (v:version == 704 && has("patch-7.4.1142")) || v:version > 704
+ if !exists("g:sh_syntax_isk") || (exists("g:sh_syntax_isk") && g:sh_syntax_isk)
+ if exists("b:is_bash")
+ exe "syn iskeyword ".&iskeyword.",-,:"
+ else
+ exe "syn iskeyword ".&iskeyword.",-"
+ endif
+ endif
+endif
+
+" Set up folding commands for shell {{{1
+" =================================
+sil! delc ShFoldFunctions
+sil! delc ShFoldHereDoc
+sil! delc ShFoldIfDoFor
+if s:sh_fold_functions
+ com! -nargs=* ShFoldFunctions <args> fold
+else
+ com! -nargs=* ShFoldFunctions <args>
+endif
+if s:sh_fold_heredoc
+ com! -nargs=* ShFoldHereDoc <args> fold
+else
+ com! -nargs=* ShFoldHereDoc <args>
+endif
+if s:sh_fold_ifdofor
+ com! -nargs=* ShFoldIfDoFor <args> fold
+else
+ com! -nargs=* ShFoldIfDoFor <args>
+endif
+
+" sh syntax is case sensitive {{{1
+syn case match
+
+" Clusters: contains=@... clusters {{{1
+"==================================
+syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError,shOK
+if exists("b:is_kornshell") || exists("b:is_bash")
+ syn cluster ErrorList add=shDTestError
+endif
+syn cluster shArithParenList contains=shArithmetic,shArithParen,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor,shFunctionKey,shFunctionOne,shFunctionTwo
+syn cluster shArithList contains=@shArithParenList,shParenError
+syn cluster shCaseEsacList contains=shCaseStart,shCaseLabel,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange
+syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSubBQ,shComment,shDblBrace,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq
+if exists("b:is_kornshell") || exists("b:is_bash")
+ syn cluster shCaseList add=shForPP
+endif
+syn cluster shCommandSubList contains=shAlias,shArithmetic,shCmdParenRegion,shCommandSub,shComment,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shHereDoc,shNumber,shOperator,shOption,shPosnParm,shHereString,shRedir,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable
+syn cluster shCurlyList contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial
+" COMBAK: removing shEscape from shDblQuoteList fails ksh04:43 -- Jun 09, 2022: I don't see the problem with ksh04, so am reinstating shEscape
+syn cluster shDblQuoteList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDeref,shDerefSimple,shEscape,shPosnParm,shCtrlSeq,shSpecial,shSpecialDQ
+syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPSR,shDerefPPS
+syn cluster shDerefVarList contains=shDerefOffset,shDerefOp,shDerefVarArray,shDerefOpError
+syn cluster shEchoList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDeref,shDerefSimple,shEscape,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote
+syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq
+syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest
+syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq
+if exists("b:is_kornshell") || exists("b:is_bash")
+ syn cluster shFunctionList add=shRepeat,shDblBrace,shDblParen,shForPP
+ syn cluster shDerefList add=shCommandSubList,shEchoDeref
+endif
+syn cluster shHereBeginList contains=@shCommandSubList
+syn cluster shHereList contains=shBeginHere,shHerePayload
+syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload
+syn cluster shIdList contains=shArithmetic,shCommandSub,shCommandSubBQ,shWrapLineOperator,shSetOption,shComment,shDeref,shDerefSimple,shHereString,shNumber,shOperator,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr
+syn cluster shIfList contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo
+syn cluster shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shIf,shOption,shSet,shTest,shTestOpr,shTouch
+if exists("b:is_kornshell") || exists("b:is_bash")
+ syn cluster shLoopoList add=shForPP
+endif
+syn cluster shPPSLeftList contains=shAlias,shArithmetic,shCmdParenRegion,shCommandSub,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shHereDoc,shNumber,shOperator,shOption,shPosnParm,shHereString,shRedir,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable
+syn cluster shPPSRightList contains=shDeref,shDerefSimple,shEscape,shPosnParm
+syn cluster shSubShList contains=@shCommandSubList,shCommandSubBQ,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator
+syn cluster shTestList contains=shArithmetic,shCharClass,shCommandSub,shCommandSubBQ,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shSpecialDQ,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shSingleQuote,shTest,shTestOpr
+syn cluster shNoZSList contains=shSpecialNoZS
+syn cluster shForList contains=shTestOpr,shNumber,shDerefSimple,shDeref,shCommandSub,shCommandSubBQ,shArithmetic
+
+" Echo: {{{1
+" ====
+" This one is needed INSIDE a CommandSub, so that `echo bla` be correct
+syn region shEcho matchgroup=shStatement start="\<echo\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment
+syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment
+if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix")
+ syn region shEchoDeref contained matchgroup=shStatement start="\<echo\>" skip="\\$" matchgroup=shEchoDelim end="$" end="[<>;&|()`}]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment
+ syn region shEchoDeref contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shEchoDelim end="$" end="[<>;&|()`}]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment
+endif
+syn match shEchoQuote contained '\%(\\\\\)*\\["`'()]'
+
+" This must be after the strings, so that ... \" will be correct
+syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shExDoubleQuote,shDoubleQuote,shCharClass,shCtrlSeq
+
+" Alias: {{{1
+" =====
+if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix")
+ syn match shStatement "\<alias\>"
+ syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]*\)\@=" skip="\\$" end="\>\|`"
+ syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]*=\)\@=" skip="\\$" end="="
+" syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]\+\)\@=" skip="\\$" end="\>\|`"
+" syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]\+=\)\@=" skip="\\$" end="="
+
+ " Touch: {{{1
+ " =====
+ syn match shTouch '\<touch\>[^;#]*' skipwhite nextgroup=shComment contains=shTouchCmd,shDoubleQuote,shSingleQuote,shDeref,shDerefSimple
+ syn match shTouchCmd '\<touch\>' contained
+endif
+
+" Error Codes: {{{1
+" ============
+if !exists("g:sh_no_error")
+ syn match shDoError "\<done\>"
+ syn match shIfError "\<fi\>"
+ syn match shInError "\<in\>"
+ syn match shCaseError ";;"
+ syn match shEsacError "\<esac\>"
+ syn match shCurlyError "}"
+ syn match shParenError ")"
+ syn match shOK '\.\(done\|fi\|in\|esac\)'
+ if exists("b:is_kornshell") || exists("b:is_bash")
+ syn match shDTestError "]]"
+ endif
+ syn match shTestError "]"
+endif
+
+" Options: {{{1
+" ====================
+syn match shOption "\s\zs[-+][-_a-zA-Z#@]\+"
+syn match shOption "\s\zs--[^ \t$=`'"|);]\+"
+
+" File Redirection Highlighted As Operators: {{{1
+"===========================================
+syn match shRedir "\d\=>\(&[-0-9]\)\="
+syn match shRedir "\d\=>>-\="
+syn match shRedir "\d\=<\(&[-0-9]\)\="
+syn match shRedir "\d<<-\="
+
+" Operators: {{{1
+" ==========
+syn match shOperator "<<\|>>" contained
+syn match shOperator "[!&;|]" contained
+syn match shOperator "\[[[^:]\|\]]" contained
+syn match shOperator "[-=/*+%]\==" skipwhite nextgroup=shPattern
+syn match shPattern "\<\S\+\())\)\@=" contained contains=shExSingleQuote,shSingleQuote,shExDoubleQuote,shDoubleQuote,shDeref
+
+" Subshells: {{{1
+" ==========
+syn region shExpr transparent matchgroup=shExprRegion start="{" end="}" contains=@shExprList2 nextgroup=shSpecialNxt
+syn region shSubSh transparent matchgroup=shSubShRegion start="[^(]\zs(" end=")" contains=@shSubShList nextgroup=shSpecialNxt
+
+" Tests: {{{1
+"=======
+syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$\|\[+ end="\]" contains=@shTestList,shSpecial
+syn region shTest transparent matchgroup=shStatement start="\<test\s" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1
+syn region shNoQuote start='\S' skip='\%(\\\\\)*\\.' end='\ze\s' end="\ze['"]" contained contains=shDerefSimple,shDeref
+syn match shAstQuote contained '\*\ze"' nextgroup=shString
+syn match shTestOpr contained '[^-+/%]\zs=' skipwhite nextgroup=shTestDoubleQuote,shTestSingleQuote,shTestPattern
+syn match shTestOpr contained "<=\|>=\|!=\|==\|=\~\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!<>]"
+syn match shTestPattern contained '\w\+'
+syn region shTestDoubleQuote contained start='\%(\%(\\\\\)*\\\)\@<!"' skip=+\\\\\|\\"+ end='"' contains=shDeref,shDerefSimple,shDerefSpecial
+syn match shTestSingleQuote contained '\\.' nextgroup=shTestSingleQuote
+syn match shTestSingleQuote contained "'[^']*'"
+if exists("b:is_kornshell") || exists("b:is_bash")
+ syn region shDblBrace matchgroup=Delimiter start="\[\[" skip=+\%(\\\\\)*\\$+ end="\]\]" contains=@shTestList,shAstQuote,shNoQuote,shComment
+ syn region shDblParen matchgroup=Delimiter start="((" skip=+\%(\\\\\)*\\$+ end="))" contains=@shTestList,shComment
+endif
+
+" Character Class In Range: {{{1
+" =========================
+syn match shCharClass contained "\[:\(backspace\|escape\|return\|xdigit\|alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|tab\):\]"
+
+" Loops: do, if, while, until {{{1
+" ======
+ShFoldIfDoFor syn region shDo transparent matchgroup=shConditional start="\<do\>" matchgroup=shConditional end="\<done\>" contains=@shLoopList
+ShFoldIfDoFor syn region shIf transparent matchgroup=shConditional start="\<if\_s" matchgroup=shConditional skip=+-fi\>+ end="\<;\_s*then\>" end="\<fi\>" contains=@shIfList
+ShFoldIfDoFor syn region shFor matchgroup=shLoop start="\<for\ze\_s\s*\%(((\)\@!" end="\<in\>" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn
+if exists("b:is_kornshell") || exists("b:is_bash")
+ ShFoldIfDoFor syn region shForPP matchgroup=shLoop start='\<for\>\_s*((' end='))' contains=@shForList
+endif
+
+if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix")
+ syn cluster shCaseList add=shRepeat
+ syn cluster shFunctionList add=shRepeat
+ syn region shRepeat matchgroup=shLoop start="\<while\_s" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen,shDblBrace
+ syn region shRepeat matchgroup=shLoop start="\<until\_s" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen,shDblBrace
+ if !exists("b:is_posix")
+ syn region shCaseEsac matchgroup=shConditional start="\<select\s" matchgroup=shConditional end="\<in\>" end="\<do\>" contains=@shLoopList
+ endif
+else
+ syn region shRepeat matchgroup=shLoop start="\<while\_s" end="\<do\>"me=e-2 contains=@shLoopList
+ syn region shRepeat matchgroup=shLoop start="\<until\_s" end="\<do\>"me=e-2 contains=@shLoopList
+endif
+syn region shCurlyIn contained matchgroup=Delimiter start="{" end="}" contains=@shCurlyList
+syn match shComma contained ","
+
+" Case: case...esac {{{1
+" ====
+syn match shCaseBar contained skipwhite "\(^\|[^\\]\)\(\\\\\)*\zs|" nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote
+syn match shCaseStart contained skipwhite skipnl "(" nextgroup=shCase,shCaseBar
+syn match shCaseLabel contained skipwhite "\%(\\.\|[-a-zA-Z0-9_*.]\)\+" contains=shCharClass
+if exists("b:is_bash")
+ ShFoldIfDoFor syn region shCase contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)" end=";;" end=";&" end=";;&" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment
+elseif exists("b:is_kornshell")
+ ShFoldIfDoFor syn region shCase contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)" end=";;" end=";&" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment
+else
+ ShFoldIfDoFor syn region shCase contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)" end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment
+endif
+ShFoldIfDoFor syn region shCaseEsac matchgroup=shConditional start="\<case\>" end="\<esac\>" contains=@shCaseEsacList
+
+syn keyword shCaseIn contained skipwhite skipnl in nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote
+if exists("b:is_bash") || exists("b:is_kornshell")
+ syn region shCaseExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial skipwhite skipnl nextgroup=shCaseBar contained
+elseif !exists("g:sh_no_error")
+ syn region shCaseExSingleQuote matchgroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained
+endif
+syn region shCaseSingleQuote matchgroup=shQuote start=+'+ end=+'+ contains=shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained
+syn region shCaseDoubleQuote matchgroup=shQuote start=+"+ skip=+\\\\\|\\.+ end=+"+ contains=@shDblQuoteList,shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained
+syn region shCaseCommandSub start=+`+ skip=+\\\\\|\\.+ end=+`+ contains=@shCommandSubList skipwhite skipnl nextgroup=shCaseBar contained
+if exists("b:is_bash")
+ syn region shCaseRange matchgroup=Delimiter start=+\[+ skip=+\\\\+ end=+\]+ contained contains=shCharClass
+ syn match shCharClass '\[:\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|word\|or\|xdigit\):\]' contained
+else
+ syn region shCaseRange matchgroup=Delimiter start=+\[+ skip=+\\\\+ end=+\]+ contained
+endif
+" Misc: {{{1
+"======
+syn match shWrapLineOperator "\\$"
+syn region shCommandSubBQ start="`" skip="\\\\\|\\." end="`" contains=shBQComment,@shCommandSubList
+"COMBAK: see ksh13:50
+"syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.' nextgroup=shSingleQuote,shDoubleQuote,shComment
+"COMBAK: see sh11:27
+syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.' nextgroup=shComment
+"COMBAK: see ksh13:53
+"syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.'
+
+" $() and $(()): {{{1
+" $(..) is not supported by sh (Bourne shell). However, apparently
+" some systems (HP?) have as their /bin/sh a (link to) Korn shell
+" (ie. Posix compliant shell). /bin/ksh should work for those
+" systems too, however, so the following syntax will flag $(..) as
+" an Error under /bin/sh. By consensus of vimdev'ers!
+if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix")
+ syn region shCommandSub matchgroup=shCmdSubRegion start="\$(\ze[^(]" skip='\\\\\|\\.' end=")" contains=@shCommandSubList
+ syn region shArithmetic matchgroup=shArithRegion start="\$((" skip='\\\\\|\\.' end="))" contains=@shArithList
+ syn region shArithmetic matchgroup=shArithRegion start="\$\[" skip='\\\\\|\\.' end="\]" contains=@shArithList
+ syn match shSkipInitWS contained "^\s\+"
+ syn region shArithParen matchgroup=shArithRegion contained start="(" end=")" contains=@shArithParenList
+elseif !exists("g:sh_no_error")
+ syn region shCommandSub matchgroup=Error start="\$(" end=")" contains=@shCommandSubList
+endif
+syn region shCmdParenRegion matchgroup=shCmdSubRegion start="(\ze[^(]" skip='\\\\\|\\.' end=")" contains=@shCommandSubList
+
+if exists("b:is_bash")
+ syn cluster shCommandSubList add=bashSpecialVariables,bashStatement
+ syn cluster shCaseList add=bashAdminStatement,bashStatement
+ syn keyword bashSpecialVariables contained auto_resume BASH BASH_ALIASES BASH_ALIASES BASH_ARGC BASH_ARGC BASH_ARGV BASH_ARGV BASH_CMDS BASH_CMDS BASH_COMMAND BASH_COMMAND BASH_ENV BASH_EXECUTION_STRING BASH_EXECUTION_STRING BASH_LINENO BASH_LINENO BASHOPTS BASHOPTS BASHPID BASHPID BASH_REMATCH BASH_REMATCH BASH_SOURCE BASH_SOURCE BASH_SUBSHELL BASH_SUBSHELL BASH_VERSINFO BASH_VERSION BASH_XTRACEFD BASH_XTRACEFD CDPATH COLUMNS COLUMNS COMP_CWORD COMP_CWORD COMP_KEY COMP_KEY COMP_LINE COMP_LINE COMP_POINT COMP_POINT COMPREPLY COMPREPLY COMP_TYPE COMP_TYPE COMP_WORDBREAKS COMP_WORDBREAKS COMP_WORDS COMP_WORDS COPROC COPROC DIRSTACK EMACS EMACS ENV ENV EUID FCEDIT FIGNORE FUNCNAME FUNCNAME FUNCNEST FUNCNEST GLOBIGNORE GROUPS histchars HISTCMD HISTCONTROL HISTFILE HISTFILESIZE HISTIGNORE HISTSIZE HISTTIMEFORMAT HISTTIMEFORMAT HOME HOSTFILE HOSTNAME HOSTTYPE IFS IGNOREEOF INPUTRC LANG LC_ALL LC_COLLATE LC_CTYPE LC_CTYPE LC_MESSAGES LC_NUMERIC LC_NUMERIC LINENO LINES LINES MACHTYPE MAIL MAILCHECK MAILPATH MAPFILE MAPFILE OLDPWD OPTARG OPTERR OPTIND OSTYPE PATH PIPESTATUS POSIXLY_CORRECT POSIXLY_CORRECT PPID PROMPT_COMMAND PS1 PS2 PS3 PS4 PWD RANDOM READLINE_LINE READLINE_LINE READLINE_POINT READLINE_POINT REPLY SECONDS SHELL SHELL SHELLOPTS SHLVL TIMEFORMAT TIMEOUT TMPDIR TMPDIR UID
+ syn keyword bashStatement chmod clear complete du egrep expr fgrep find gnufind gnugrep grep head less ls mkdir mv rm rmdir rpm sed sleep sort strip tail
+ syn keyword bashAdminStatement daemon killall killproc nice reload restart start status stop
+ syn keyword bashStatement command compgen
+endif
+
+if exists("b:is_kornshell") || exists("b:is_posix")
+ syn cluster shCommandSubList add=kshSpecialVariables,kshStatement
+ syn cluster shCaseList add=kshStatement
+ syn keyword kshSpecialVariables contained CDPATH COLUMNS EDITOR ENV ERRNO FCEDIT FPATH HISTFILE HISTSIZE HOME IFS LINENO LINES MAIL MAILCHECK MAILPATH OLDPWD OPTARG OPTIND PATH PPID PS1 PS2 PS3 PS4 PWD RANDOM REPLY SECONDS SHELL TMOUT VISUAL
+ syn keyword kshStatement cat chmod clear cp du egrep expr fgrep find grep head killall less ls mkdir mv nice printenv rm rmdir sed sort strip stty tail tput
+ syn keyword kshStatement command setgroups setsenv
+endif
+
+syn match shSource "^\.\s"
+syn match shSource "\s\.\s"
+"syn region shColon start="^\s*:" end="$" end="\s#"me=e-2 contains=@shColonList
+"syn region shColon start="^\s*\zs:" end="$" end="\s#"me=e-2
+if exists("b:is_kornshell") || exists("b:is_posix")
+ syn match shColon '^\s*\zs:'
+endif
+
+" String And Character Constants: {{{1
+"================================
+syn match shNumber "\<\d\+\>#\="
+syn match shNumber "\<-\=\.\=\d\+\>#\="
+syn match shCtrlSeq "\\\d\d\d\|\\[abcfnrtv0]" contained
+if exists("b:is_bash") || exists("b:is_kornshell")
+ syn match shSpecial "[^\\]\(\\\\\)*\zs\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained
+ syn match shSpecial "^\(\\\\\)*\zs\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained
+ syn region shExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial nextgroup=shSpecialNxt
+ syn region shExDoubleQuote matchgroup=shQuote start=+\$"+ skip=+\\\\\|\\.\|\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,shSpecial nextgroup=shSpecialNxt
+elseif !exists("g:sh_no_error")
+ syn region shExSingleQuote matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial
+ syn region shExDoubleQuote matchGroup=Error start=+\$"+ skip=+\\\\\|\\.+ end=+"+ contains=shStringSpecial
+endif
+syn region shSingleQuote matchgroup=shQuote start=+'+ end=+'+ contains=@Spell nextgroup=shSpecialStart,shSpecialSQ
+syn region shDoubleQuote matchgroup=shQuote start=+\%(\%(\\\\\)*\\\)\@<!"+ skip=+\\.+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell nextgroup=shSpecialStart
+syn match shStringSpecial "[^[:print:] \t]" contained
+syn match shStringSpecial "[^\\]\zs\%(\\\\\)*\(\\[\\"'`$()#]\)\+" nextgroup=shComment
+syn match shSpecialSQ "[^\\]\zs\%(\\\\\)*\(\\[\\"'`$()#]\)\+" contained nextgroup=shBkslshSnglQuote,@shNoZSList
+syn match shSpecialDQ "[^\\]\zs\%(\\\\\)*\(\\[\\"'`$()#]\)\+" contained nextgroup=shBkslshDblQuote,@shNoZSList
+syn match shSpecialStart "\%(\\\\\)*\\[\\"'`$()#]" contained nextgroup=shBkslshSnglQuote,shBkslshDblQuote,@shNoZSList
+syn match shSpecial "^\%(\\\\\)*\\[\\"'`$()#]"
+syn match shSpecialNoZS contained "\%(\\\\\)*\\[\\"'`$()#]"
+syn match shSpecialNxt contained "\\[\\"'`$()#]"
+"syn region shBkslshSnglQuote contained matchgroup=shQuote start=+'+ end=+'+ contains=@Spell nextgroup=shSpecialStart
+"syn region shBkslshDblQuote contained matchgroup=shQuote start=+"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell nextgroup=shSpecialStart
+
+" Comments: {{{1
+"==========
+syn cluster shCommentGroup contains=shTodo,@Spell
+if exists("b:is_bash")
+ syn match shTodo contained "\<\%(COMBAK\|FIXME\|TODO\|XXX\)\ze:\=\>"
+else
+ syn keyword shTodo contained COMBAK FIXME TODO XXX
+endif
+syn match shComment "^\s*\zs#.*$" contains=@shCommentGroup
+syn match shComment "\s\zs#.*$" contains=@shCommentGroup
+syn match shComment contained "#.*$" contains=@shCommentGroup
+syn match shQuickComment contained "#.*$" contains=@shCommentGroup
+syn match shBQComment contained "#.\{-}\ze`" contains=@shCommentGroup
+
+" Here Documents: {{{1
+" (modified by Felipe Contreras)
+" =========================================
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc01 start="<<\s*\z([^ \t|>]\+\)" matchgroup=shHereDoc01 end="^\z1$" contains=@shDblQuoteList
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc02 start="<<-\s*\z([^ \t|>]\+\)" matchgroup=shHereDoc02 end="^\s*\z1$" contains=@shDblQuoteList
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc03 start="<<\s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc03 end="^\z1$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc04 start="<<-\s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc04 end="^\s*\z1$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc05 start="<<\s*'\z([^']\+\)'" matchgroup=shHereDoc05 end="^\z1$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc06 start="<<-\s*'\z([^']\+\)'" matchgroup=shHereDoc06 end="^\s*\z1$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc07 start="<<\s*\"\z([^"]\+\)\"" matchgroup=shHereDoc07 end="^\z1$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc08 start="<<-\s*\"\z([^"]\+\)\"" matchgroup=shHereDoc08 end="^\s*\z1$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc09 start="<<\s*\\\_$\_s*\z([^ \t|>]\+\)" matchgroup=shHereDoc09 end="^\z1$" contains=@shDblQuoteList
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc10 start="<<-\s*\\\_$\_s*\z([^ \t|>]\+\)" matchgroup=shHereDoc10 end="^\s*\z1$" contains=@shDblQuoteList
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc11 start="<<\s*\\\_$\_s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc11 end="^\z1$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc12 start="<<-\s*\\\_$\_s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc12 end="^\s*\z1$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc13 start="<<\s*\\\_$\_s*'\z([^']\+\)'" matchgroup=shHereDoc13 end="^\z1$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc14 start="<<-\s*\\\_$\_s*'\z([^']\+\)'" matchgroup=shHereDoc14 end="^\s*\z1$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc15 start="<<\s*\\\_$\_s*\"\z([^"]\+\)\"" matchgroup=shHereDoc15 end="^\z1$"
+ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc16 start="<<-\s*\\\_$\_s*\"\z([^"]\+\)\"" matchgroup=shHereDoc16 end="^\s*\z1$"
+
+
+" Here Strings: {{{1
+" =============
+" available for: bash; ksh (really should be ksh93 only) but not if its a posix
+if exists("b:is_bash") || (exists("b:is_kornshell") && !exists("b:is_posix"))
+ syn match shHereString "<<<" skipwhite nextgroup=shCmdParenRegion
+endif
+
+" Identifiers: {{{1
+"=============
+syn match shSetOption "\s\zs[-+][a-zA-Z0-9]\+\>" contained
+syn match shVariable "\<\h\w*\ze=" nextgroup=shVarAssign
+syn match shVarAssign "=" contained nextgroup=shCmdParenRegion,shPattern,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shSingleQuote,shExSingleQuote,shVar
+syn match shVar contained "\h\w*"
+syn region shAtExpr contained start="@(" end=")" contains=@shIdList
+if exists("b:is_bash")
+ syn match shSet "^\s*set\ze\s\+$"
+ syn region shSetList oneline matchgroup=shSet start="\<\%(declare\|local\|export\)\>\ze[/a-zA-Z_]\@!" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+#\|=" contains=@shIdList
+ syn region shSetList oneline matchgroup=shSet start="\<\%(set\|unset\)\>[/a-zA-Z_]\@!" end="\ze[;|#)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+=" contains=@shIdList nextgroup=shComment
+elseif exists("b:is_kornshell") || exists("b:is_posix")
+ syn match shSet "^\s*set\ze\s\+$"
+ if exists("b:is_dash")
+ syn region shSetList oneline matchgroup=shSet start="\<\%(local\)\>\ze[/]\@!" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
+ endif
+ syn region shSetList oneline matchgroup=shSet start="\<\(export\)\>\ze[/]\@!" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
+ syn region shSetList oneline matchgroup=shSet start="\<\%(set\|unset\>\)\ze[/a-zA-Z_]\@!" end="\ze[;|#)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList nextgroup=shComment
+else
+ syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[/a-zA-Z_]\@!" end="\ze[;|#)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
+endif
+
+" KornShell namespace: {{{1
+if exists("b:is_kornshell")
+ syn keyword shFunctionKey namespace skipwhite skipnl nextgroup=shFunctionTwo
+endif
+
+" Functions: {{{1
+if !exists("b:is_posix")
+ syn keyword shFunctionKey function skipwhite skipnl nextgroup=shFunctionTwo
+endif
+
+if exists("b:is_bash")
+ ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*[A-Za-z_0-9:][-a-zA-Z_0-9:]*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
+ ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_0-9:][-a-zA-Z_0-9:]*\>\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
+ ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*[A-Za-z_0-9:][-a-zA-Z_0-9:]*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
+ ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_0-9:][-a-zA-Z_0-9:]*\>\s*\%(()\)\=\_s*)" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
+else
+ ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
+ ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<\h\w*\>\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
+ ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*\h\w*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
+ ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<\h\w*\>\s*\%(()\)\=\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
+endif
+
+" Parameter Dereferencing: {{{1
+" ========================
+" Note: sh04 failure with following line
+"if !exists("g:sh_no_error") && !(exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix"))
+if !exists("g:sh_no_error")
+ syn match shDerefWordError "[^}$[~]" contained
+endif
+syn match shDerefSimple "\$\%(\h\w*\|\d\)" nextgroup=@shNoZSList
+syn region shDeref matchgroup=PreProc start="\${" end="}" contains=@shDerefList,shDerefVarArray nextgroup=shSpecialStart
+syn match shDerefSimple "\$[-#*@!?]" nextgroup=@shNoZSList
+syn match shDerefSimple "\$\$" nextgroup=@shNoZSList
+syn match shDerefSimple "\${\d}" nextgroup=@shNoZSList nextgroup=shSpecialStart
+if exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix")
+ syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS,shSpecialStart
+ syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS,shSpecialStart
+endif
+
+" ksh: ${.sh.*} variables: {{{1
+" ========================================
+if exists("b:is_kornshell")
+ syn match shDerefVar contained "\.\+" nextgroup=@shDerefVarList
+endif
+
+" ksh: ${!var[*]} array index list syntax: {{{1
+" ========================================
+if exists("b:is_kornshell") || exists("b:is_posix")
+ syn region shDeref matchgroup=PreProc start="\${!" end="}" contains=@shDerefVarArray
+endif
+
+" bash: ${!prefix*} and ${#parameter}: {{{1
+" ====================================
+if exists("b:is_bash")
+ syn region shDeref matchgroup=PreProc start="\${!" end="\*\=}" contains=@shDerefList,shDerefOffset
+ syn match shDerefVar contained "{\@<=!\h\w*" nextgroup=@shDerefVarList
+endif
+if exists("b:is_kornshell")
+ syn match shDerefVar contained "{\@<=!\h\w*[[:alnum:]_.]*" nextgroup=@shDerefVarList
+endif
+
+syn match shDerefSpecial contained "{\@<=[-*@?0]" nextgroup=shDerefOp,shDerefOffset,shDerefOpError
+syn match shDerefSpecial contained "\({[#!]\)\@<=[[:alnum:]*@_]\+" nextgroup=@shDerefVarList,shDerefOp
+syn match shDerefVar contained "{\@<=\h\w*" nextgroup=@shDerefVarList
+syn match shDerefVar contained '\d' nextgroup=@shDerefVarList
+if exists("b:is_kornshell") || exists("b:is_posix")
+ syn match shDerefVar contained "{\@<=\h\w*[[:alnum:]_.]*" nextgroup=@shDerefVarList
+endif
+
+" sh ksh bash : ${var[... ]...} array reference: {{{1
+syn region shDerefVarArray contained matchgroup=shDeref start="\[" end="]" contains=@shCommandSubList nextgroup=shDerefOp,shDerefOpError
+
+" Special ${parameter OPERATOR word} handling: {{{1
+" sh ksh bash : ${parameter:-word} word is default value
+" sh ksh bash : ${parameter:=word} assign word as default value
+" sh ksh bash : ${parameter:?word} display word if parameter is null
+" sh ksh bash : ${parameter:+word} use word if parameter is not null, otherwise nothing
+" ksh bash : ${parameter#pattern} remove small left pattern
+" ksh bash : ${parameter##pattern} remove large left pattern
+" ksh bash : ${parameter%pattern} remove small right pattern
+" ksh bash : ${parameter%%pattern} remove large right pattern
+" bash : ${parameter^pattern} Case modification
+" bash : ${parameter^^pattern} Case modification
+" bash : ${parameter,pattern} Case modification
+" bash : ${parameter,,pattern} Case modification
+" bash : ${@:start:qty} display command line arguments from start to start+qty-1 (inferred)
+" bash : ${parameter@operator} transforms parameter (operator∈[uULqEPARa])
+syn cluster shDerefPatternList contains=shDerefPattern,shDerefString
+if !exists("g:sh_no_error")
+ syn match shDerefOpError contained ":[[:punct:]]"
+endif
+syn match shDerefOp contained ":\=[-=?]" nextgroup=@shDerefPatternList
+syn match shDerefOp contained ":\=+" nextgroup=@shDerefPatternList
+if exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix")
+ syn match shDerefOp contained "#\{1,2}" nextgroup=@shDerefPatternList
+ syn match shDerefOp contained "%\{1,2}" nextgroup=@shDerefPatternList
+ syn match shDerefPattern contained "[^{}]\+" contains=shDeref,shDerefSimple,shDerefPattern,shDerefString,shCommandSub,shDerefEscape nextgroup=shDerefPattern
+ syn region shDerefPattern contained start="{" end="}" contains=shDeref,shDerefSimple,shDerefString,shCommandSub nextgroup=shDerefPattern
+ syn match shDerefEscape contained '\%(\\\\\)*\\.'
+endif
+if exists("b:is_bash")
+ syn match shDerefOp contained "[,^]\{1,2}" nextgroup=@shDerefPatternList
+ syn match shDerefOp contained "@[uULQEPAKa]"
+endif
+syn region shDerefString contained matchgroup=shDerefDelim start=+\%(\\\)\@<!'+ end=+'+ contains=shStringSpecial
+syn region shDerefString contained matchgroup=shDerefDelim start=+\%(\\\)\@<!"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial
+syn match shDerefString contained "\\["']" nextgroup=shDerefPattern
+
+if exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix")
+ " bash ksh posix : ${parameter:offset}
+ " bash ksh posix : ${parameter:offset:length}
+ syn region shDerefOffset contained start=':[^-=?+]' end='\ze:' end='\ze}' contains=shDeref,shDerefSimple,shDerefEscape nextgroup=shDerefLen,shDeref,shDerefSimple
+ syn region shDerefOffset contained start=':\s-' end='\ze:' end='\ze}' contains=shDeref,shDerefSimple,shDerefEscape nextgroup=shDerefLen,shDeref,shDerefSimple
+ syn match shDerefLen contained ":[^}]\+" contains=shDeref,shDerefSimple,shArithmetic
+endif
+
+if exists("b:is_bash")
+ " bash : ${parameter//pattern/string}
+ " bash : ${parameter//pattern}
+ syn match shDerefPPS contained '/\{1,2}' nextgroup=shDerefPPSleft
+ syn region shDerefPPSleft contained start='.' skip=@\%(\\\\\)*\\/@ matchgroup=shDerefOp end='/' end='\ze}' end='"' nextgroup=shDerefPPSright contains=@shPPSLeftList
+ syn region shDerefPPSright contained start='.' skip=@\%(\\\\\)\+@ end='\ze}' contains=@shPPSRightList
+
+ " bash : ${parameter/#substring/replacement}
+ syn match shDerefPSR contained '/#' nextgroup=shDerefPSRleft,shDoubleQuote,shSingleQuote
+ syn region shDerefPSRleft contained start='[^"']' skip=@\%(\\\\\)*\\/@ matchgroup=shDerefOp end='/' end='\ze}' nextgroup=shDerefPSRright
+ syn region shDerefPSRright contained start='.' skip=@\%(\\\\\)\+@ end='\ze}'
+endif
+
+" Arithmetic Parenthesized Expressions: {{{1
+"syn region shParen matchgroup=shArithRegion start='[^$]\zs(\%(\ze[^(]\|$\)' end=')' contains=@shArithParenList
+syn region shParen matchgroup=shArithRegion start='\$\@!(\%(\ze[^(]\|$\)' end=')' contains=@shArithParenList
+
+" Additional sh Keywords: {{{1
+" ===================
+syn keyword shStatement break cd chdir continue eval exec exit kill newgrp pwd read readonly return shift test trap ulimit umask wait
+syn keyword shConditional contained elif else then
+if !exists("g:sh_no_error")
+ syn keyword shCondError elif else then
+endif
+
+" Additional ksh Keywords and Aliases: {{{1
+" ===================================
+if exists("b:is_kornshell") || exists("b:is_posix")
+ syn keyword shStatement bg builtin disown enum export false fg getconf getopts hist jobs let printf sleep true unalias whence
+ syn keyword shStatement typeset skipwhite nextgroup=shSetOption
+ syn keyword shStatement autoload compound fc float functions hash history integer nameref nohup r redirect source stop suspend times type
+ if exists("b:is_posix")
+ syn keyword shStatement command
+ else
+ syn keyword shStatement time
+ endif
+
+" Additional bash Keywords: {{{1
+" =====================
+elseif exists("b:is_bash")
+ syn keyword shStatement bg builtin disown export false fg getopts jobs let printf sleep true unalias
+ syn keyword shStatement typeset nextgroup=shSetOption
+ syn keyword shStatement fc hash history source suspend times type
+ syn keyword shStatement bind builtin caller compopt declare dirs disown enable export help logout mapfile popd pushd readarray shopt source typeset
+else
+ syn keyword shStatement login newgrp
+endif
+
+" Synchronization: {{{1
+" ================
+if !exists("g:sh_minlines")
+ let s:sh_minlines = 200
+else
+ let s:sh_minlines= g:sh_minlines
+endif
+if !exists("g:sh_maxlines")
+ let s:sh_maxlines = 2*s:sh_minlines
+ if s:sh_maxlines < 25
+ let s:sh_maxlines= 25
+ endif
+else
+ let s:sh_maxlines= g:sh_maxlines
+endif
+exec "syn sync minlines=" . s:sh_minlines . " maxlines=" . s:sh_maxlines
+syn sync match shCaseEsacSync grouphere shCaseEsac "\<case\>"
+syn sync match shCaseEsacSync groupthere shCaseEsac "\<esac\>"
+syn sync match shDoSync grouphere shDo "\<do\>"
+syn sync match shDoSync groupthere shDo "\<done\>"
+syn sync match shForSync grouphere shFor "\<for\>"
+syn sync match shForSync groupthere shFor "\<in\>"
+syn sync match shIfSync grouphere shIf "\<if\>"
+syn sync match shIfSync groupthere shIf "\<fi\>"
+syn sync match shUntilSync grouphere shRepeat "\<until\>"
+syn sync match shWhileSync grouphere shRepeat "\<while\>"
+
+" Default Highlighting: {{{1
+" =====================
+if !exists("skip_sh_syntax_inits")
+ hi def link shArithRegion shShellVariables
+ hi def link shAstQuote shDoubleQuote
+ hi def link shAtExpr shSetList
+ hi def link shBkslshSnglQuote shSingleQuote
+ hi def link shBkslshDblQuote shDOubleQuote
+ hi def link shBeginHere shRedir
+ hi def link shCaseBar shConditional
+ hi def link shCaseCommandSub shCommandSub
+ hi def link shCaseDoubleQuote shDoubleQuote
+ hi def link shCaseIn shConditional
+ hi def link shQuote shOperator
+ hi def link shCaseSingleQuote shSingleQuote
+ hi def link shCaseStart shConditional
+ hi def link shCmdSubRegion shShellVariables
+ hi def link shColon shComment
+ hi def link shDerefOp shOperator
+ hi def link shDerefPOL shDerefOp
+ hi def link shDerefPPS shDerefOp
+ hi def link shDerefPSR shDerefOp
+ hi def link shDeref shShellVariables
+ hi def link shDerefDelim shOperator
+ hi def link shDerefSimple shDeref
+ hi def link shDerefSpecial shDeref
+ hi def link shDerefString shDoubleQuote
+ hi def link shDerefVar shDeref
+ hi def link shDoubleQuote shString
+ hi def link shEcho shString
+ hi def link shEchoDelim shOperator
+ hi def link shEchoQuote shString
+ hi def link shForPP shLoop
+ hi def link shFunction Function
+ hi def link shEmbeddedEcho shString
+ hi def link shEscape shCommandSub
+ hi def link shExDoubleQuote shDoubleQuote
+ hi def link shExSingleQuote shSingleQuote
+ hi def link shHereDoc shString
+ hi def link shHereString shRedir
+ hi def link shHerePayload shHereDoc
+ hi def link shLoop shStatement
+ hi def link shSpecialNxt shSpecial
+ hi def link shNoQuote shDoubleQuote
+ hi def link shOption shCommandSub
+ hi def link shPattern shString
+ hi def link shParen shArithmetic
+ hi def link shPosnParm shShellVariables
+ hi def link shQuickComment shComment
+ hi def link shBQComment shComment
+ hi def link shRange shOperator
+ hi def link shRedir shOperator
+ hi def link shSetListDelim shOperator
+ hi def link shSetOption shOption
+ hi def link shSingleQuote shString
+ hi def link shSource shOperator
+ hi def link shStringSpecial shSpecial
+ hi def link shSpecialStart shSpecial
+ hi def link shSubShRegion shOperator
+ hi def link shTestOpr shConditional
+ hi def link shTestPattern shString
+ hi def link shTestDoubleQuote shString
+ hi def link shTestSingleQuote shString
+ hi def link shTouchCmd shStatement
+ hi def link shVariable shSetList
+ hi def link shWrapLineOperator shOperator
+
+ if exists("b:is_bash")
+ hi def link bashAdminStatement shStatement
+ hi def link bashSpecialVariables shShellVariables
+ hi def link bashStatement shStatement
+ hi def link shCharClass shSpecial
+ hi def link shDerefOffset shDerefOp
+ hi def link shDerefLen shDerefOffset
+ endif
+ if exists("b:is_kornshell") || exists("b:is_posix")
+ hi def link kshSpecialVariables shShellVariables
+ hi def link kshStatement shStatement
+ endif
+
+ if !exists("g:sh_no_error")
+ hi def link shCaseError Error
+ hi def link shCondError Error
+ hi def link shCurlyError Error
+ hi def link shDerefOpError Error
+ hi def link shDerefWordError Error
+ hi def link shDoError Error
+ hi def link shEsacError Error
+ hi def link shIfError Error
+ hi def link shInError Error
+ hi def link shParenError Error
+ hi def link shTestError Error
+ if exists("b:is_kornshell") || exists("b:is_posix")
+ hi def link shDTestError Error
+ endif
+ endif
+
+ hi def link shArithmetic Special
+ hi def link shCharClass Identifier
+ hi def link shSnglCase Statement
+ hi def link shCommandSub Special
+ hi def link shCommandSubBQ shCommandSub
+ hi def link shComment Comment
+ hi def link shConditional Conditional
+ hi def link shCtrlSeq Special
+ hi def link shExprRegion Delimiter
+ hi def link shFunctionKey Function
+ hi def link shFunctionName Function
+ hi def link shNumber Number
+ hi def link shOperator Operator
+ hi def link shRepeat Repeat
+ hi def link shSet Statement
+ hi def link shSetList Identifier
+ hi def link shShellVariables PreProc
+ hi def link shSpecial Special
+ hi def link shSpecialDQ Special
+ hi def link shSpecialSQ Special
+ hi def link shSpecialNoZS shSpecial
+ hi def link shStatement Statement
+ hi def link shString String
+ hi def link shTodo Todo
+ hi def link shAlias Identifier
+ hi def link shHereDoc01 shRedir
+ hi def link shHereDoc02 shRedir
+ hi def link shHereDoc03 shRedir
+ hi def link shHereDoc04 shRedir
+ hi def link shHereDoc05 shRedir
+ hi def link shHereDoc06 shRedir
+ hi def link shHereDoc07 shRedir
+ hi def link shHereDoc08 shRedir
+ hi def link shHereDoc09 shRedir
+ hi def link shHereDoc10 shRedir
+ hi def link shHereDoc11 shRedir
+ hi def link shHereDoc12 shRedir
+ hi def link shHereDoc13 shRedir
+ hi def link shHereDoc14 shRedir
+ hi def link shHereDoc15 shRedir
+ hi def link shHereDoc16 shRedir
+endif
+
+" Delete shell folding commands {{{1
+" =============================
+delc ShFoldFunctions
+delc ShFoldHereDoc
+delc ShFoldIfDoFor
+
+" Set Current Syntax: {{{1
+" ===================
+if exists("b:is_bash")
+ let b:current_syntax = "bash"
+elseif exists("b:is_kornshell")
+ let b:current_syntax = "ksh"
+elseif exists("b:is_posix")
+ let b:current_syntax = "posix"
+else
+ let b:current_syntax = "sh"
+endif
+
+" vim: ts=16 fdm=marker
diff --git a/runtime/syntax/shared/README.txt b/runtime/syntax/shared/README.txt
new file mode 100644
index 0000000..fade4b3
--- /dev/null
+++ b/runtime/syntax/shared/README.txt
@@ -0,0 +1,2 @@
+This directory "runtime/syntax/shared" contains Vim script files that are
+generated or used by more than one syntax file.
diff --git a/runtime/syntax/shared/context-data-context.vim b/runtime/syntax/shared/context-data-context.vim
new file mode 100644
index 0000000..82cf41b
--- /dev/null
+++ b/runtime/syntax/shared/context-data-context.vim
@@ -0,0 +1,345 @@
+vim9script
+
+# Vim syntax file
+# Language: ConTeXt
+# Automatically generated by mtx-interface (2022-08-12 10:49)
+
+syn keyword contextConstants zerocount minusone minustwo plusone plustwo contained
+syn keyword contextConstants plusthree plusfour plusfive plussix plusseven contained
+syn keyword contextConstants pluseight plusnine plusten pluseleven plustwelve contained
+syn keyword contextConstants plussixteen plusfifty plushundred plusonehundred plustwohundred contained
+syn keyword contextConstants plusfivehundred plusthousand plustenthousand plustwentythousand medcard contained
+syn keyword contextConstants maxcard maxcardminusone zeropoint onepoint halfapoint contained
+syn keyword contextConstants onebasepoint maxcount maxdimen scaledpoint thousandpoint contained
+syn keyword contextConstants points halfpoint zeroskip centeringskip stretchingskip contained
+syn keyword contextConstants shrinkingskip centeringfillskip stretchingfillskip shrinkingfillskip zeromuskip contained
+syn keyword contextConstants onemuskip pluscxxvii pluscxxviii pluscclv pluscclvi contained
+syn keyword contextConstants normalpagebox binaryshiftedten binaryshiftedtwenty binaryshiftedthirty thickermuskip contained
+syn keyword contextConstants directionlefttoright directionrighttoleft endoflinetoken outputnewlinechar emptytoks contained
+syn keyword contextConstants empty undefined prerollrun voidbox emptybox contained
+syn keyword contextConstants emptyvbox emptyhbox bigskipamount medskipamount smallskipamount contained
+syn keyword contextConstants fmtname fmtversion texengine texenginename texengineversion contained
+syn keyword contextConstants texenginefunctionality luatexengine pdftexengine xetexengine unknownengine contained
+syn keyword contextConstants contextformat contextversion contextlmtxmode contextmark mksuffix contained
+syn keyword contextConstants activecatcode bgroup egroup endline conditionaltrue contained
+syn keyword contextConstants conditionalfalse attributeunsetvalue statuswrite uprotationangle rightrotationangle contained
+syn keyword contextConstants downrotationangle leftrotationangle inicatcodes ctxcatcodes texcatcodes contained
+syn keyword contextConstants notcatcodes txtcatcodes vrbcatcodes prtcatcodes nilcatcodes contained
+syn keyword contextConstants luacatcodes tpacatcodes tpbcatcodes xmlcatcodes ctdcatcodes contained
+syn keyword contextConstants rlncatcodes escapecatcode begingroupcatcode endgroupcatcode mathshiftcatcode contained
+syn keyword contextConstants alignmentcatcode endoflinecatcode parametercatcode superscriptcatcode subscriptcatcode contained
+syn keyword contextConstants ignorecatcode spacecatcode lettercatcode othercatcode activecatcode contained
+syn keyword contextConstants commentcatcode invalidcatcode tabasciicode newlineasciicode formfeedasciicode contained
+syn keyword contextConstants endoflineasciicode endoffileasciicode commaasciicode spaceasciicode periodasciicode contained
+syn keyword contextConstants hashasciicode dollarasciicode commentasciicode ampersandasciicode colonasciicode contained
+syn keyword contextConstants backslashasciicode circumflexasciicode underscoreasciicode leftbraceasciicode barasciicode contained
+syn keyword contextConstants rightbraceasciicode tildeasciicode delasciicode leftparentasciicode rightparentasciicode contained
+syn keyword contextConstants lessthanasciicode morethanasciicode doublecommentsignal atsignasciicode exclamationmarkasciicode contained
+syn keyword contextConstants questionmarkasciicode doublequoteasciicode singlequoteasciicode forwardslashasciicode primeasciicode contained
+syn keyword contextConstants hyphenasciicode percentasciicode leftbracketasciicode rightbracketasciicode hsizefrozenparcode contained
+syn keyword contextConstants skipfrozenparcode hangfrozenparcode indentfrozenparcode parfillfrozenparcode adjustfrozenparcode contained
+syn keyword contextConstants protrudefrozenparcode tolerancefrozenparcode stretchfrozenparcode loosenessfrozenparcode lastlinefrozenparcode contained
+syn keyword contextConstants linepenaltyfrozenparcode clubpenaltyfrozenparcode widowpenaltyfrozenparcode displaypenaltyfrozenparcode brokenpenaltyfrozenparcode contained
+syn keyword contextConstants demeritsfrozenparcode shapefrozenparcode linefrozenparcode hyphenationfrozenparcode shapingpenaltyfrozenparcode contained
+syn keyword contextConstants orphanpenaltyfrozenparcode allfrozenparcode mathpenaltyfrozenparcode activemathcharcode activetabtoken contained
+syn keyword contextConstants activeformfeedtoken activeendoflinetoken batchmodecode nonstopmodecode scrollmodecode contained
+syn keyword contextConstants errorstopmodecode bottomlevelgroupcode simplegroupcode hboxgroupcode adjustedhboxgroupcode contained
+syn keyword contextConstants vboxgroupcode vtopgroupcode aligngroupcode noaligngroupcode outputgroupcode contained
+syn keyword contextConstants mathgroupcode discretionarygroupcode insertgroupcode vadjustgroupcode vcentergroupcode contained
+syn keyword contextConstants mathabovegroupcode mathchoicegroupcode alsosimplegroupcode semisimplegroupcode mathshiftgroupcode contained
+syn keyword contextConstants mathleftgroupcode localboxgroupcode splitoffgroupcode splitkeepgroupcode preamblegroupcode contained
+syn keyword contextConstants alignsetgroupcode finrowgroupcode discretionarygroupcode markautomigrationcode insertautomigrationcode contained
+syn keyword contextConstants adjustautomigrationcode preautomigrationcode postautomigrationcode charnodecode hlistnodecode contained
+syn keyword contextConstants vlistnodecode rulenodecode insertnodecode marknodecode adjustnodecode contained
+syn keyword contextConstants ligaturenodecode discretionarynodecode whatsitnodecode mathnodecode gluenodecode contained
+syn keyword contextConstants kernnodecode penaltynodecode unsetnodecode mathsnodecode charifcode contained
+syn keyword contextConstants catifcode numifcode dimifcode oddifcode vmodeifcode contained
+syn keyword contextConstants hmodeifcode mmodeifcode innerifcode voidifcode hboxifcode contained
+syn keyword contextConstants vboxifcode xifcode eofifcode trueifcode falseifcode contained
+syn keyword contextConstants caseifcode definedifcode csnameifcode fontcharifcode overrulemathcontrolcode contained
+syn keyword contextConstants underrulemathcontrolcode radicalrulemathcontrolcode fractionrulemathcontrolcode accentskewhalfmathcontrolcode accentskewapplymathcontrolcode contained
+syn keyword contextConstants applyordinarykernpairmathcontrolcode applyverticalitalickernmathcontrolcode applyordinaryitalickernmathcontrolcode applycharitalickernmathcontrolcode reboxcharitalickernmathcontrolcode contained
+syn keyword contextConstants applyboxeditalickernmathcontrolcode staircasekernmathcontrolcode applytextitalickernmathcontrolcode applyscriptitalickernmathcontrolcode checkspaceitalickernmathcontrolcode contained
+syn keyword contextConstants checktextitalickernmathcontrolcode analyzescriptnucleuscharmathcontrolcode analyzescriptnucleuslistmathcontrolcode analyzescriptnucleusboxmathcontrolcode noligaturingglyphoptioncode contained
+syn keyword contextConstants nokerningglyphoptioncode noexpansionglyphoptioncode noprotrusionglyphoptioncode noleftkerningglyphoptioncode noleftligaturingglyphoptioncode contained
+syn keyword contextConstants norightkerningglyphoptioncode norightligaturingglyphoptioncode noitaliccorrectionglyphoptioncode normalparcontextcode vmodeparcontextcode contained
+syn keyword contextConstants vboxparcontextcode vtopparcontextcode vcenterparcontextcode vadjustparcontextcode insertparcontextcode contained
+syn keyword contextConstants outputparcontextcode alignparcontextcode noalignparcontextcode spanparcontextcode resetparcontextcode contained
+syn keyword contextConstants leftoriginlistanchorcode leftheightlistanchorcode leftdepthlistanchorcode rightoriginlistanchorcode rightheightlistanchorcode contained
+syn keyword contextConstants rightdepthlistanchorcode centeroriginlistanchorcode centerheightlistanchorcode centerdepthlistanchorcode halfwaytotallistanchorcode contained
+syn keyword contextConstants halfwayheightlistanchorcode halfwaydepthlistanchorcode halfwayleftlistanchorcode halfwayrightlistanchorcode negatexlistsigncode contained
+syn keyword contextConstants negateylistsigncode negatelistsigncode fontslantperpoint fontinterwordspace fontinterwordstretch contained
+syn keyword contextConstants fontinterwordshrink fontexheight fontemwidth fontextraspace slantperpoint contained
+syn keyword contextConstants mathexheight mathemwidth interwordspace interwordstretch interwordshrink contained
+syn keyword contextConstants exheight emwidth extraspace mathaxisheight muquad contained
+syn keyword contextConstants startmode stopmode startnotmode stopnotmode startmodeset contained
+syn keyword contextConstants stopmodeset doifmode doifelsemode doifmodeelse doifnotmode contained
+syn keyword contextConstants startmodeset stopmodeset startallmodes stopallmodes startnotallmodes contained
+syn keyword contextConstants stopnotallmodes doifallmodes doifelseallmodes doifallmodeselse doifnotallmodes contained
+syn keyword contextConstants startenvironment stopenvironment environment startcomponent stopcomponent contained
+syn keyword contextConstants component startproduct stopproduct product startproject contained
+syn keyword contextConstants stopproject project starttext stoptext startnotext contained
+syn keyword contextConstants stopnotext startdocument stopdocument documentvariable unexpandeddocumentvariable contained
+syn keyword contextConstants setupdocument presetdocument doifelsedocumentvariable doifdocumentvariableelse doifdocumentvariable contained
+syn keyword contextConstants doifnotdocumentvariable startmodule stopmodule usemodule usetexmodule contained
+syn keyword contextConstants useluamodule setupmodule currentmoduleparameter moduleparameter everystarttext contained
+syn keyword contextConstants everystoptext startTEXpage stopTEXpage enablemode disablemode contained
+syn keyword contextConstants preventmode definemode globalenablemode globaldisablemode globalpreventmode contained
+syn keyword contextConstants pushmode popmode typescriptone typescripttwo typescriptthree contained
+syn keyword contextConstants mathsizesuffix mathordinarycode mathordcode mathoperatorcode mathopcode contained
+syn keyword contextConstants mathbinarycode mathbincode mathrelationcode mathrelcode mathopencode contained
+syn keyword contextConstants mathclosecode mathpunctuationcode mathpunctcode mathovercode mathundercode contained
+syn keyword contextConstants mathinnercode mathradicalcode mathfractioncode mathmiddlecode mathaccentcode contained
+syn keyword contextConstants mathfencedcode mathghostcode mathvariablecode mathactivecode mathvcentercode contained
+syn keyword contextConstants mathconstructcode mathwrappedcode mathbegincode mathendcode mathexplicitcode contained
+syn keyword contextConstants mathdivisioncode mathfactorialcode mathdimensioncode mathexperimentalcode mathtextpunctuationcode contained
+syn keyword contextConstants mathimaginarycode mathdifferentialcode mathexponentialcode mathellipsiscode mathfunctioncode contained
+syn keyword contextConstants mathdigitcode mathalphacode mathboxcode mathchoicecode mathnothingcode contained
+syn keyword contextConstants mathlimopcode mathnolopcode mathunsetcode mathunspacedcode mathallcode contained
+syn keyword contextConstants mathfakecode mathunarycode constantnumber constantnumberargument constantdimen contained
+syn keyword contextConstants constantdimenargument constantemptyargument luastringsep !!bs !!es contained
+syn keyword contextConstants lefttorightmark righttoleftmark lrm rlm bidilre contained
+syn keyword contextConstants bidirle bidipop bidilro bidirlo breakablethinspace contained
+syn keyword contextConstants nobreakspace nonbreakablespace narrownobreakspace zerowidthnobreakspace ideographicspace contained
+syn keyword contextConstants ideographichalffillspace twoperemspace threeperemspace fourperemspace fiveperemspace contained
+syn keyword contextConstants sixperemspace figurespace punctuationspace hairspace enquad contained
+syn keyword contextConstants emquad zerowidthspace zerowidthnonjoiner zerowidthjoiner zwnj contained
+syn keyword contextConstants zwj optionalspace asciispacechar softhyphen Ux contained
+syn keyword contextConstants eUx Umathaccents parfillleftskip parfillrightskip startlmtxmode contained
+syn keyword contextConstants stoplmtxmode startmkivmode stopmkivmode wildcardsymbol normalhyphenationcode contained
+syn keyword contextConstants automatichyphenationcode explicithyphenationcode syllablehyphenationcode uppercasehyphenationcode collapsehyphenationcode contained
+syn keyword contextConstants compoundhyphenationcode strictstarthyphenationcode strictendhyphenationcode automaticpenaltyhyphenationcode explicitpenaltyhyphenationcode contained
+syn keyword contextConstants permitgluehyphenationcode permitallhyphenationcode permitmathreplacehyphenationcode forcecheckhyphenationcode lazyligatureshyphenationcode contained
+syn keyword contextConstants forcehandlerhyphenationcode feedbackcompoundhyphenationcode ignoreboundshyphenationcode partialhyphenationcode completehyphenationcode contained
+syn keyword contextConstants normalizelinenormalizecode parindentskipnormalizecode swaphangindentnormalizecode swapparsshapenormalizecode breakafterdirnormalizecode contained
+syn keyword contextConstants removemarginkernsnormalizecode clipwidthnormalizecode flattendiscretionariesnormalizecode discardzerotabskipsnormalizecode flattenhleadersnormalizecode contained
+syn keyword contextConstants normalizeparnormalizeparcode flattenvleadersnormalizeparcode nopreslackclassoptioncode nopostslackclassoptioncode lefttopkernclassoptioncode contained
+syn keyword contextConstants righttopkernclassoptioncode leftbottomkernclassoptioncode rightbottomkernclassoptioncode lookaheadforendclassoptioncode noitaliccorrectionclassoptioncode contained
+syn keyword contextConstants defaultmathclassoptions checkligatureclassoptioncode checkitaliccorrectionclassoptioncode checkkernpairclassoptioncode flattenclassoptioncode contained
+syn keyword contextConstants omitpenaltyclassoptioncode unpackclassoptioncode raiseprimeclassoptioncode carryoverlefttopkernclassoptioncode carryoverleftbottomkernclassoptioncode contained
+syn keyword contextConstants carryoverrighttopkernclassoptioncode carryoverrightbottomkernclassoptioncode preferdelimiterdimensionsclassoptioncode noligaturingglyphoptioncode nokerningglyphoptioncode contained
+syn keyword contextConstants noleftligatureglyphoptioncode noleftkernglyphoptioncode norightligatureglyphoptioncode norightkernglyphoptioncode noexpansionglyphoptioncode contained
+syn keyword contextConstants noprotrusionglyphoptioncode noitaliccorrectionglyphoptioncode nokerningcode noligaturingcode frozenflagcode contained
+syn keyword contextConstants tolerantflagcode protectedflagcode primitiveflagcode permanentflagcode noalignedflagcode contained
+syn keyword contextConstants immutableflagcode mutableflagcode globalflagcode overloadedflagcode immediateflagcode contained
+syn keyword contextConstants conditionalflagcode valueflagcode instanceflagcode ordmathflattencode binmathflattencode contained
+syn keyword contextConstants relmathflattencode punctmathflattencode innermathflattencode normalworddiscoptioncode preworddiscoptioncode contained
+syn keyword contextConstants postworddiscoptioncode continueifinputfile continuewhenlmtxmode continuewhenmkivmode contained
+syn keyword contextHelpers startsetups stopsetups startxmlsetups stopxmlsetups startluasetups contained
+syn keyword contextHelpers stopluasetups starttexsetups stoptexsetups startrawsetups stoprawsetups contained
+syn keyword contextHelpers startlocalsetups stoplocalsetups starttexdefinition stoptexdefinition starttexcode contained
+syn keyword contextHelpers stoptexcode startcontextcode stopcontextcode startcontextdefinitioncode stopcontextdefinitioncode contained
+syn keyword contextHelpers texdefinition doifelsesetups doifsetupselse doifsetups doifnotsetups contained
+syn keyword contextHelpers setup setups texsetup xmlsetup luasetup contained
+syn keyword contextHelpers directsetup fastsetup copysetups resetsetups doifelsecommandhandler contained
+syn keyword contextHelpers doifcommandhandlerelse doifnotcommandhandler doifcommandhandler newmode setmode contained
+syn keyword contextHelpers resetmode newsystemmode setsystemmode resetsystemmode pushsystemmode contained
+syn keyword contextHelpers popsystemmode globalsetmode globalresetmode globalsetsystemmode globalresetsystemmode contained
+syn keyword contextHelpers booleanmodevalue newcount newdimen newskip newmuskip contained
+syn keyword contextHelpers newbox newtoks newread newwrite newmarks contained
+syn keyword contextHelpers newinsert newattribute newif newlanguage newfamily contained
+syn keyword contextHelpers newfam newhelp then begcsname autorule contained
+syn keyword contextHelpers strippedcsname checkedstrippedcsname nofarguments firstargumentfalse firstargumenttrue contained
+syn keyword contextHelpers secondargumentfalse secondargumenttrue thirdargumentfalse thirdargumenttrue fourthargumentfalse contained
+syn keyword contextHelpers fourthargumenttrue fifthargumentfalse fifthargumenttrue sixthargumentfalse sixthargumenttrue contained
+syn keyword contextHelpers seventhargumentfalse seventhargumenttrue vkern hkern vpenalty contained
+syn keyword contextHelpers hpenalty doglobal dodoglobal redoglobal resetglobal contained
+syn keyword contextHelpers donothing untraceddonothing dontcomplain moreboxtracing lessboxtracing contained
+syn keyword contextHelpers noboxtracing forgetall donetrue donefalse foundtrue contained
+syn keyword contextHelpers foundfalse inlineordisplaymath indisplaymath forcedisplaymath startforceddisplaymath contained
+syn keyword contextHelpers stopforceddisplaymath startpickupmath stoppickupmath reqno forceinlinemath contained
+syn keyword contextHelpers mathortext thebox htdp unvoidbox hfilll contained
+syn keyword contextHelpers vfilll mathbox mathlimop mathnolop mathnothing contained
+syn keyword contextHelpers mathalpha currentcatcodetable defaultcatcodetable catcodetablename newcatcodetable contained
+syn keyword contextHelpers startcatcodetable stopcatcodetable startextendcatcodetable stopextendcatcodetable pushcatcodetable contained
+syn keyword contextHelpers popcatcodetable restorecatcodes setcatcodetable letcatcodecommand defcatcodecommand contained
+syn keyword contextHelpers uedcatcodecommand hglue vglue hfillneg vfillneg contained
+syn keyword contextHelpers hfilllneg vfilllneg ruledhss ruledhfil ruledhfill contained
+syn keyword contextHelpers ruledhfilll ruledhfilneg ruledhfillneg normalhfillneg normalhfilllneg contained
+syn keyword contextHelpers ruledvss ruledvfil ruledvfill ruledvfilll ruledvfilneg contained
+syn keyword contextHelpers ruledvfillneg normalvfillneg normalvfilllneg ruledhbox ruledvbox contained
+syn keyword contextHelpers ruledvtop ruledvcenter ruledmbox ruledhpack ruledvpack contained
+syn keyword contextHelpers ruledtpack ruledhskip ruledvskip ruledkern ruledmskip contained
+syn keyword contextHelpers ruledmkern ruledhglue ruledvglue normalhglue normalvglue contained
+syn keyword contextHelpers ruledpenalty filledhboxb filledhboxr filledhboxg filledhboxc contained
+syn keyword contextHelpers filledhboxm filledhboxy filledhboxk scratchstring scratchstringone contained
+syn keyword contextHelpers scratchstringtwo tempstring scratchcounter globalscratchcounter privatescratchcounter contained
+syn keyword contextHelpers scratchdimen globalscratchdimen privatescratchdimen scratchskip globalscratchskip contained
+syn keyword contextHelpers privatescratchskip scratchmuskip globalscratchmuskip privatescratchmuskip scratchtoks contained
+syn keyword contextHelpers globalscratchtoks privatescratchtoks scratchbox globalscratchbox privatescratchbox contained
+syn keyword contextHelpers scratchmacro scratchmacroone scratchmacrotwo scratchconditiontrue scratchconditionfalse contained
+syn keyword contextHelpers ifscratchcondition scratchconditiononetrue scratchconditiononefalse ifscratchconditionone scratchconditiontwotrue contained
+syn keyword contextHelpers scratchconditiontwofalse ifscratchconditiontwo globalscratchcounterone globalscratchcountertwo globalscratchcounterthree contained
+syn keyword contextHelpers groupedcommand groupedcommandcs triggergroupedcommand triggergroupedcommandcs simplegroupedcommand contained
+syn keyword contextHelpers simplegroupedcommandcs pickupgroupedcommand pickupgroupedcommandcs mathgroupedcommandcs usedbaselineskip contained
+syn keyword contextHelpers usedlineskip usedlineskiplimit availablehsize localhsize setlocalhsize contained
+syn keyword contextHelpers distributedhsize hsizefraction next nexttoken nextbox contained
+syn keyword contextHelpers dowithnextbox dowithnextboxcs dowithnextboxcontent dowithnextboxcontentcs flushnextbox contained
+syn keyword contextHelpers boxisempty boxtostring contentostring prerolltostring givenwidth contained
+syn keyword contextHelpers givenheight givendepth scangivendimensions scratchwidth scratchheight contained
+syn keyword contextHelpers scratchdepth scratchoffset scratchdistance scratchtotal scratchitalic contained
+syn keyword contextHelpers scratchhsize scratchvsize scratchxoffset scratchyoffset scratchhoffset contained
+syn keyword contextHelpers scratchvoffset scratchxposition scratchyposition scratchtopoffset scratchbottomoffset contained
+syn keyword contextHelpers scratchleftoffset scratchrightoffset scratchcounterone scratchcountertwo scratchcounterthree contained
+syn keyword contextHelpers scratchcounterfour scratchcounterfive scratchcountersix scratchdimenone scratchdimentwo contained
+syn keyword contextHelpers scratchdimenthree scratchdimenfour scratchdimenfive scratchdimensix scratchskipone contained
+syn keyword contextHelpers scratchskiptwo scratchskipthree scratchskipfour scratchskipfive scratchskipsix contained
+syn keyword contextHelpers scratchmuskipone scratchmuskiptwo scratchmuskipthree scratchmuskipfour scratchmuskipfive contained
+syn keyword contextHelpers scratchmuskipsix scratchtoksone scratchtokstwo scratchtoksthree scratchtoksfour contained
+syn keyword contextHelpers scratchtoksfive scratchtokssix scratchboxone scratchboxtwo scratchboxthree contained
+syn keyword contextHelpers scratchboxfour scratchboxfive scratchboxsix scratchnx scratchny contained
+syn keyword contextHelpers scratchmx scratchmy scratchunicode scratchmin scratchmax contained
+syn keyword contextHelpers scratchleftskip scratchrightskip scratchtopskip scratchbottomskip doif contained
+syn keyword contextHelpers doifnot doifelse firstinset doifinset doifnotinset contained
+syn keyword contextHelpers doifelseinset doifinsetelse doifelsenextchar doifnextcharelse doifelsenextcharcs contained
+syn keyword contextHelpers doifnextcharcselse doifelsenextoptional doifnextoptionalelse doifelsenextoptionalcs doifnextoptionalcselse contained
+syn keyword contextHelpers doifelsefastoptionalcheck doiffastoptionalcheckelse doifelsefastoptionalcheckcs doiffastoptionalcheckcselse doifelsenextbgroup contained
+syn keyword contextHelpers doifnextbgroupelse doifelsenextbgroupcs doifnextbgroupcselse doifelsenextparenthesis doifnextparenthesiselse contained
+syn keyword contextHelpers doifelseundefined doifundefinedelse doifelsedefined doifdefinedelse doifundefined contained
+syn keyword contextHelpers doifdefined doifelsevalue doifvalue doifnotvalue doifnothing contained
+syn keyword contextHelpers doifsomething doifelsenothing doifnothingelse doifelsesomething doifsomethingelse contained
+syn keyword contextHelpers doifvaluenothing doifvaluesomething doifelsevaluenothing doifvaluenothingelse doifelsedimension contained
+syn keyword contextHelpers doifdimensionelse doifelsenumber doifnumberelse doifnumber doifnotnumber contained
+syn keyword contextHelpers doifelsecommon doifcommonelse doifcommon doifnotcommon doifinstring contained
+syn keyword contextHelpers doifnotinstring doifelseinstring doifinstringelse doifelseassignment doifassignmentelse contained
+syn keyword contextHelpers docheckassignment doifelseassignmentcs doifassignmentelsecs validassignment novalidassignment contained
+syn keyword contextHelpers doiftext doifelsetext doiftextelse doifnottext quitcondition contained
+syn keyword contextHelpers truecondition falsecondition tracingall tracingnone loggingall contained
+syn keyword contextHelpers tracingcatcodes showluatokens aliasmacro removetoks appendtoks contained
+syn keyword contextHelpers prependtoks appendtotoks prependtotoks to endgraf contained
+syn keyword contextHelpers endpar reseteverypar finishpar empty null contained
+syn keyword contextHelpers space quad enspace emspace charspace contained
+syn keyword contextHelpers nbsp crlf obeyspaces obeylines obeytabs contained
+syn keyword contextHelpers obeypages obeyedspace obeyedline obeyedtab obeyedpage contained
+syn keyword contextHelpers normalspace naturalspace controlspace normalspaces ignoretabs contained
+syn keyword contextHelpers ignorelines ignorepages ignoreeofs setcontrolspaces executeifdefined contained
+syn keyword contextHelpers singleexpandafter doubleexpandafter tripleexpandafter dontleavehmode removelastspace contained
+syn keyword contextHelpers removeunwantedspaces keepunwantedspaces removepunctuation ignoreparskip forcestrutdepth contained
+syn keyword contextHelpers onlynonbreakablespace wait writestatus define defineexpandable contained
+syn keyword contextHelpers redefine setmeasure setemeasure setgmeasure setxmeasure contained
+syn keyword contextHelpers definemeasure freezemeasure measure measured directmeasure contained
+syn keyword contextHelpers setquantity setequantity setgquantity setxquantity definequantity contained
+syn keyword contextHelpers freezequantity quantity quantitied directquantity installcorenamespace contained
+syn keyword contextHelpers getvalue getuvalue setvalue setevalue setgvalue contained
+syn keyword contextHelpers setxvalue letvalue letgvalue resetvalue undefinevalue contained
+syn keyword contextHelpers ignorevalue setuvalue setuevalue setugvalue setuxvalue contained
+syn keyword contextHelpers globallet udef ugdef uedef uxdef contained
+syn keyword contextHelpers checked unique getparameters geteparameters getgparameters contained
+syn keyword contextHelpers getxparameters forgetparameters copyparameters getdummyparameters dummyparameter contained
+syn keyword contextHelpers directdummyparameter setdummyparameter letdummyparameter setexpandeddummyparameter usedummystyleandcolor contained
+syn keyword contextHelpers usedummystyleparameter usedummycolorparameter processcommalist processcommacommand quitcommalist contained
+syn keyword contextHelpers quitprevcommalist processaction processallactions processfirstactioninset processallactionsinset contained
+syn keyword contextHelpers unexpanded expanded startexpanded stopexpanded protect contained
+syn keyword contextHelpers unprotect firstofoneargument firstoftwoarguments secondoftwoarguments firstofthreearguments contained
+syn keyword contextHelpers secondofthreearguments thirdofthreearguments firstoffourarguments secondoffourarguments thirdoffourarguments contained
+syn keyword contextHelpers fourthoffourarguments firstoffivearguments secondoffivearguments thirdoffivearguments fourthoffivearguments contained
+syn keyword contextHelpers fifthoffivearguments firstofsixarguments secondofsixarguments thirdofsixarguments fourthofsixarguments contained
+syn keyword contextHelpers fifthofsixarguments sixthofsixarguments firstofoneunexpanded firstoftwounexpanded secondoftwounexpanded contained
+syn keyword contextHelpers firstofthreeunexpanded secondofthreeunexpanded thirdofthreeunexpanded gobbleoneargument gobbletwoarguments contained
+syn keyword contextHelpers gobblethreearguments gobblefourarguments gobblefivearguments gobblesixarguments gobblesevenarguments contained
+syn keyword contextHelpers gobbleeightarguments gobbleninearguments gobbletenarguments gobbleoneoptional gobbletwooptionals contained
+syn keyword contextHelpers gobblethreeoptionals gobblefouroptionals gobblefiveoptionals dorecurse doloop contained
+syn keyword contextHelpers exitloop dostepwiserecurse recurselevel recursedepth dofastloopcs contained
+syn keyword contextHelpers fastloopindex fastloopfinal dowith doloopovermatch doloopovermatched contained
+syn keyword contextHelpers doloopoverlist newconstant setnewconstant setconstant setconstantvalue contained
+syn keyword contextHelpers newconditional settrue setfalse settruevalue setfalsevalue contained
+syn keyword contextHelpers setconditional newmacro setnewmacro newfraction newsignal contained
+syn keyword contextHelpers newboundary dosingleempty dodoubleempty dotripleempty doquadrupleempty contained
+syn keyword contextHelpers doquintupleempty dosixtupleempty doseventupleempty dosingleargument dodoubleargument contained
+syn keyword contextHelpers dotripleargument doquadrupleargument doquintupleargument dosixtupleargument doseventupleargument contained
+syn keyword contextHelpers dosinglegroupempty dodoublegroupempty dotriplegroupempty doquadruplegroupempty doquintuplegroupempty contained
+syn keyword contextHelpers permitspacesbetweengroups dontpermitspacesbetweengroups nopdfcompression maximumpdfcompression normalpdfcompression contained
+syn keyword contextHelpers onlypdfobjectcompression nopdfobjectcompression modulonumber dividenumber getfirstcharacter contained
+syn keyword contextHelpers doifelsefirstchar doiffirstcharelse mathclassvalue startnointerference stopnointerference contained
+syn keyword contextHelpers twodigits threedigits leftorright offinterlineskip oninterlineskip contained
+syn keyword contextHelpers nointerlineskip strut halfstrut quarterstrut depthstrut contained
+syn keyword contextHelpers halflinestrut noheightstrut setstrut strutbox strutht contained
+syn keyword contextHelpers strutdp strutwd struthtdp strutgap begstrut contained
+syn keyword contextHelpers endstrut lineheight leftboundary rightboundary signalcharacter contained
+syn keyword contextHelpers aligncontentleft aligncontentmiddle aligncontentright shiftbox vpackbox contained
+syn keyword contextHelpers hpackbox vpackedbox hpackedbox ordordspacing ordopspacing contained
+syn keyword contextHelpers ordbinspacing ordrelspacing ordopenspacing ordclosespacing ordpunctspacing contained
+syn keyword contextHelpers ordinnerspacing ordfracspacing ordradspacing ordmiddlespacing ordaccentspacing contained
+syn keyword contextHelpers opordspacing opopspacing opbinspacing oprelspacing opopenspacing contained
+syn keyword contextHelpers opclosespacing oppunctspacing opinnerspacing opfracspacing opradspacing contained
+syn keyword contextHelpers opmiddlespacing opaccentspacing binordspacing binopspacing binbinspacing contained
+syn keyword contextHelpers binrelspacing binopenspacing binclosespacing binpunctspacing bininnerspacing contained
+syn keyword contextHelpers binfracspacing binradspacing binmiddlespacing binaccentspacing relordspacing contained
+syn keyword contextHelpers relopspacing relbinspacing relrelspacing relopenspacing relclosespacing contained
+syn keyword contextHelpers relpunctspacing relinnerspacing relfracspacing relradspacing relmiddlespacing contained
+syn keyword contextHelpers relaccentspacing openordspacing openopspacing openbinspacing openrelspacing contained
+syn keyword contextHelpers openopenspacing openclosespacing openpunctspacing openinnerspacing openfracspacing contained
+syn keyword contextHelpers openradspacing openmiddlespacing openaccentspacing closeordspacing closeopspacing contained
+syn keyword contextHelpers closebinspacing closerelspacing closeopenspacing closeclosespacing closepunctspacing contained
+syn keyword contextHelpers closeinnerspacing closefracspacing closeradspacing closemiddlespacing closeaccentspacing contained
+syn keyword contextHelpers punctordspacing punctopspacing punctbinspacing punctrelspacing punctopenspacing contained
+syn keyword contextHelpers punctclosespacing punctpunctspacing punctinnerspacing punctfracspacing punctradspacing contained
+syn keyword contextHelpers punctmiddlespacing punctaccentspacing innerordspacing inneropspacing innerbinspacing contained
+syn keyword contextHelpers innerrelspacing inneropenspacing innerclosespacing innerpunctspacing innerinnerspacing contained
+syn keyword contextHelpers innerfracspacing innerradspacing innermiddlespacing inneraccentspacing fracordspacing contained
+syn keyword contextHelpers fracopspacing fracbinspacing fracrelspacing fracopenspacing fracclosespacing contained
+syn keyword contextHelpers fracpunctspacing fracinnerspacing fracfracspacing fracradspacing fracmiddlespacing contained
+syn keyword contextHelpers fracaccentspacing radordspacing radopspacing radbinspacing radrelspacing contained
+syn keyword contextHelpers radopenspacing radclosespacing radpunctspacing radinnerspacing radfracspacing contained
+syn keyword contextHelpers radradspacing radmiddlespacing radaccentspacing middleordspacing middleopspacing contained
+syn keyword contextHelpers middlebinspacing middlerelspacing middleopenspacing middleclosespacing middlepunctspacing contained
+syn keyword contextHelpers middleinnerspacing middlefracspacing middleradspacing middlemiddlespacing middleaccentspacing contained
+syn keyword contextHelpers accentordspacing accentopspacing accentbinspacing accentrelspacing accentopenspacing contained
+syn keyword contextHelpers accentclosespacing accentpunctspacing accentinnerspacing accentfracspacing accentradspacing contained
+syn keyword contextHelpers accentmiddlespacing accentaccentspacing normalreqno startimath stopimath contained
+syn keyword contextHelpers normalstartimath normalstopimath startdmath stopdmath normalstartdmath contained
+syn keyword contextHelpers normalstopdmath normalsuperscript normalsubscript normalnosuperscript normalnosubscript contained
+syn keyword contextHelpers normalprimescript superscript subscript nosuperscript nosubscript contained
+syn keyword contextHelpers primescript superprescript subprescript nosuperprescript nosubsprecript contained
+syn keyword contextHelpers uncramped cramped mathstyletrigger triggermathstyle triggeredmathstyle contained
+syn keyword contextHelpers mathstylefont mathsmallstylefont mathstyleface mathsmallstyleface mathstylecommand contained
+syn keyword contextHelpers mathpalette mathstylehbox mathstylevbox mathstylevcenter mathstylevcenteredhbox contained
+syn keyword contextHelpers mathstylevcenteredvbox mathtext setmathsmalltextbox setmathtextbox pushmathstyle contained
+syn keyword contextHelpers popmathstyle triggerdisplaystyle triggertextstyle triggerscriptstyle triggerscriptscriptstyle contained
+syn keyword contextHelpers triggeruncrampedstyle triggercrampedstyle triggersmallstyle triggeruncrampedsmallstyle triggercrampedsmallstyle contained
+syn keyword contextHelpers triggerbigstyle triggeruncrampedbigstyle triggercrampedbigstyle luaexpr expelsedoif contained
+syn keyword contextHelpers expdoif expdoifnot expdoifelsecommon expdoifcommonelse expdoifelseinset contained
+syn keyword contextHelpers expdoifinsetelse ctxdirectlua ctxlatelua ctxsprint ctxwrite contained
+syn keyword contextHelpers ctxcommand ctxdirectcommand ctxlatecommand ctxreport ctxlua contained
+syn keyword contextHelpers luacode lateluacode directluacode registerctxluafile ctxloadluafile contained
+syn keyword contextHelpers luaversion luamajorversion luaminorversion ctxluacode luaconditional contained
+syn keyword contextHelpers luaexpanded ctxluamatch startluaparameterset stopluaparameterset luaparameterset contained
+syn keyword contextHelpers definenamedlua obeylualines obeyluatokens startluacode stopluacode contained
+syn keyword contextHelpers startlua stoplua startctxfunction stopctxfunction ctxfunction contained
+syn keyword contextHelpers startctxfunctiondefinition stopctxfunctiondefinition installctxfunction installprotectedctxfunction installprotectedctxscanner contained
+syn keyword contextHelpers installctxscanner resetctxscanner cldprocessfile cldloadfile cldloadviafile contained
+syn keyword contextHelpers cldcontext cldcommand carryoverpar freezeparagraphproperties defrostparagraphproperties contained
+syn keyword contextHelpers setparagraphfreezing forgetparagraphfreezing updateparagraphproperties updateparagraphpenalties updateparagraphdemerits contained
+syn keyword contextHelpers updateparagraphshapes updateparagraphlines lastlinewidth assumelongusagecs Umathbotaccent contained
+syn keyword contextHelpers Umathtopaccent righttolefthbox lefttorighthbox righttoleftvbox lefttorightvbox contained
+syn keyword contextHelpers righttoleftvtop lefttorightvtop rtlhbox ltrhbox rtlvbox contained
+syn keyword contextHelpers ltrvbox rtlvtop ltrvtop autodirhbox autodirvbox contained
+syn keyword contextHelpers autodirvtop leftorrighthbox leftorrightvbox leftorrightvtop lefttoright contained
+syn keyword contextHelpers righttoleft checkedlefttoright checkedrighttoleft synchronizelayoutdirection synchronizedisplaydirection contained
+syn keyword contextHelpers synchronizeinlinedirection dirlre dirrle dirlro dirrlo contained
+syn keyword contextHelpers rtltext ltrtext lesshyphens morehyphens nohyphens contained
+syn keyword contextHelpers dohyphens dohyphencollapsing nohyphencollapsing compounddiscretionary Ucheckedstartdisplaymath contained
+syn keyword contextHelpers Ucheckedstopdisplaymath break nobreak allowbreak goodbreak contained
+syn keyword contextHelpers nospace nospacing dospacing naturalhbox naturalvbox contained
+syn keyword contextHelpers naturalvtop naturalhpack naturalvpack naturaltpack reversehbox contained
+syn keyword contextHelpers reversevbox reversevtop reversehpack reversevpack reversetpack contained
+syn keyword contextHelpers hcontainer vcontainer tcontainer frule compoundhyphenpenalty contained
+syn keyword contextHelpers start stop unsupportedcs openout closeout contained
+syn keyword contextHelpers write openin closein read readline contained
+syn keyword contextHelpers readfromterminal boxlines boxline setboxline copyboxline contained
+syn keyword contextHelpers boxlinewd boxlineht boxlinedp boxlinenw boxlinenh contained
+syn keyword contextHelpers boxlinend boxlinels boxliners boxlinelh boxlinerh contained
+syn keyword contextHelpers boxlinelp boxlinerp boxlinein boxrangewd boxrangeht contained
+syn keyword contextHelpers boxrangedp bitwiseset bitwiseand bitwiseor bitwisexor contained
+syn keyword contextHelpers bitwisenot bitwisenil ifbitwiseand bitwise bitwiseshift contained
+syn keyword contextHelpers bitwiseflip textdir linedir pardir boxdir contained
+syn keyword contextHelpers prelistbox postlistbox prelistcopy postlistcopy setprelistbox contained
+syn keyword contextHelpers setpostlistbox noligaturing nokerning noexpansion noprotrusion contained
+syn keyword contextHelpers noleftkerning noleftligaturing norightkerning norightligaturing noitaliccorrection contained
+syn keyword contextHelpers futureletnexttoken defbackslashbreak letbackslashbreak pushoverloadmode popoverloadmode contained
+syn keyword contextHelpers pushrunstate poprunstate suggestedalias showboxhere discoptioncodestring contained
+syn keyword contextHelpers flagcodestring frozenparcodestring glyphoptioncodestring groupcodestring hyphenationcodestring contained
+syn keyword contextHelpers mathcontrolcodestring mathflattencodestring normalizecodestring parcontextcodestring newlocalcount contained
+syn keyword contextHelpers newlocaldimen newlocalskip newlocalmuskip newlocaltoks newlocalbox contained
+syn keyword contextHelpers newlocalwrite newlocalread setnewlocalcount setnewlocaldimen setnewlocalskip contained
+syn keyword contextHelpers setnewlocalmuskip setnewlocaltoks setnewlocalbox ifexpression contained
diff --git a/runtime/syntax/shared/context-data-interfaces.vim b/runtime/syntax/shared/context-data-interfaces.vim
new file mode 100644
index 0000000..54af24e
--- /dev/null
+++ b/runtime/syntax/shared/context-data-interfaces.vim
@@ -0,0 +1,1183 @@
+vim9script
+
+# Vim syntax file
+# Language: ConTeXt
+# Automatically generated by mtx-interface (2022-08-12 10:49)
+
+syn keyword contextCommon AEacute AEligature AEmacron AMSTEX Aacute contained
+syn keyword contextCommon Abreve Abreveacute Abrevedotbelow Abrevegrave Abrevehook contained
+syn keyword contextCommon Abrevetilde Acaron Acircumflex Acircumflexacute Acircumflexdotbelow contained
+syn keyword contextCommon Acircumflexgrave Acircumflexhook Acircumflextilde Adiaeresis Adiaeresismacron contained
+syn keyword contextCommon Adotaccent Adotaccentmacron Adotbelow Adoublegrave AfterPar contained
+syn keyword contextCommon Agrave Ahook Ainvertedbreve Alpha Alphabeticnumerals contained
+syn keyword contextCommon AmSTeX Amacron And Angstrom Aogonek contained
+syn keyword contextCommon Aring Aringacute Arrowvert Astroke Atilde contained
+syn keyword contextCommon BeforePar Beta Bhook Big Bigg contained
+syn keyword contextCommon Biggl Biggm Biggr Bigl Bigm contained
+syn keyword contextCommon Bigr Box Bumpeq CONTEXT Cacute contained
+syn keyword contextCommon Cap Caps Ccaron Ccedilla Ccircumflex contained
+syn keyword contextCommon Cdotaccent Character Characters Chi Chook contained
+syn keyword contextCommon ConTeXt Context ConvertConstantAfter ConvertToConstant Cstroke contained
+syn keyword contextCommon Cup DAYLONG DAYSHORT DZcaronligature DZligature contained
+syn keyword contextCommon Dafrican Dcaron Dd Ddownarrow Delta contained
+syn keyword contextCommon Dhook Doteq Downarrow Dstroke Dzcaronligature contained
+syn keyword contextCommon Dzligature ETEX Eacute Ebreve Ecaron contained
+syn keyword contextCommon Ecedilla Ecircumflex Ecircumflexacute Ecircumflexdotbelow Ecircumflexgrave contained
+syn keyword contextCommon Ecircumflexhook Ecircumflextilde Ediaeresis Edotaccent Edotbelow contained
+syn keyword contextCommon Edoublegrave Egrave Ehook Einvertedbreve Emacron contained
+syn keyword contextCommon Eogonek Epsilon Eta Eth Etilde contained
+syn keyword contextCommon Eulerconst EveryLine EveryPar Fhook Finv contained
+syn keyword contextCommon Gacute Game Gamma Gbreve Gcaron contained
+syn keyword contextCommon Gcircumflex Gcommaaccent Gdotaccent GetPar Ghook contained
+syn keyword contextCommon GotoPar Greeknumerals Gstroke Hat Hcaron contained
+syn keyword contextCommon Hcircumflex Hstroke IJligature INRSTEX Iacute contained
+syn keyword contextCommon Ibreve Icaron Icircumflex Idiaeresis Idotaccent contained
+syn keyword contextCommon Idotbelow Idoublegrave Igrave Ihook Iinvertedbreve contained
+syn keyword contextCommon Im Imacron Iogonek Iota Istroke contained
+syn keyword contextCommon Itilde JScode JSpreamble Jcircumflex Join contained
+syn keyword contextCommon Kappa Kcaron Kcommaaccent Khook LAMSTEX contained
+syn keyword contextCommon LATEX LJligature LUA LUAJITTEX LUAMETATEX contained
+syn keyword contextCommon LUATEX LaTeX Lacute LamSTeX Lambda contained
+syn keyword contextCommon Lbar Lcaron Lcommaaccent Ldotmiddle Ldsh contained
+syn keyword contextCommon Leftarrow Leftrightarrow Ljligature Lleftarrow Longleftarrow contained
+syn keyword contextCommon Longleftrightarrow Longmapsfrom Longmapsto Longrightarrow Lsh contained
+syn keyword contextCommon Lstroke Lua LuaMetaTeX LuaTeX LuajitTeX contained
+syn keyword contextCommon METAFONT METAFUN METAPOST MKII MKIV contained
+syn keyword contextCommon MKIX MKLX MKVI MKXI MKXL contained
+syn keyword contextCommon MONTH MONTHLONG MONTHSHORT MP MPII contained
+syn keyword contextCommon MPIV MPLX MPVI MPXL MPanchor contained
+syn keyword contextCommon MPbetex MPc MPclip MPcode MPcolor contained
+syn keyword contextCommon MPcoloronly MPcolumn MPd MPdefinitions MPdrawing contained
+syn keyword contextCommon MPenvironment MPextensions MPfontsizehskip MPgetmultipars MPgetmultishape contained
+syn keyword contextCommon MPgetposboxes MPh MPinclusions MPinitializations MPleftskip contained
+syn keyword contextCommon MPll MPlr MPls MPmenubuttons MPn contained
+syn keyword contextCommon MPoptions MPoverlayanchor MPp MPpage MPpardata contained
+syn keyword contextCommon MPplus MPpos MPpositiongraphic MPpositionmethod MPposset contained
+syn keyword contextCommon MPr MPrawvar MPregion MPrest MPrightskip contained
+syn keyword contextCommon MPrs MPrun MPstring MPtext MPtransparency contained
+syn keyword contextCommon MPul MPur MPv MPvar MPvariable contained
+syn keyword contextCommon MPvv MPw MPwhd MPx MPxy contained
+syn keyword contextCommon MPxywhd MPy Mapsfrom Mapsto MetaFont contained
+syn keyword contextCommon MetaFun MetaPost Mu NJligature Nacute contained
+syn keyword contextCommon Ncaron Ncommaaccent Nearrow Neng Ngrave contained
+syn keyword contextCommon Njligature NormalizeFontHeight NormalizeFontWidth NormalizeTextHeight NormalizeTextWidth contained
+syn keyword contextCommon Ntilde Nu Numbers Nwarrow OEligature contained
+syn keyword contextCommon Oacute Obreve Ocaron Ocircumflex Ocircumflexacute contained
+syn keyword contextCommon Ocircumflexdotbelow Ocircumflexgrave Ocircumflexhook Ocircumflextilde Odiaeresis contained
+syn keyword contextCommon Odiaeresismacron Odotaccent Odotaccentmacron Odotbelow Odoublegrave contained
+syn keyword contextCommon Ograve Ohook Ohorn Ohornacute Ohorndotbelow contained
+syn keyword contextCommon Ohorngrave Ohornhook Ohorntilde Ohungarumlaut Oinvertedbreve contained
+syn keyword contextCommon Omacron Omega Omicron Oogonek Oogonekmacron contained
+syn keyword contextCommon Ostroke Ostrokeacute Otilde Otildemacron P contained
+syn keyword contextCommon PARSEDXML PDFETEX PDFTEX PDFcolor PICTEX contained
+syn keyword contextCommon PPCHTEX PPCHTeX PRAGMA Phi Phook contained
+syn keyword contextCommon Pi PiCTeX Plankconst PointsToBigPoints PointsToReal contained
+syn keyword contextCommon PointsToWholeBigPoints PropertyLine Psi PtToCm Racute contained
+syn keyword contextCommon Rcaron Rcommaaccent Rdoublegrave Rdsh Re contained
+syn keyword contextCommon ReadFile Relbar Rho Rightarrow Rinvertedbreve contained
+syn keyword contextCommon Romannumerals Rrightarrow Rsh S Sacute contained
+syn keyword contextCommon ScaledPointsToBigPoints ScaledPointsToWholeBigPoints Scaron Scedilla Schwa contained
+syn keyword contextCommon Scircumflex Scommaaccent Searrow Sigma Smallcapped contained
+syn keyword contextCommon Subset Supset Swarrow TABLE TABLEbody contained
+syn keyword contextCommon TABLEfoot TABLEhead TABLEnested TABLEnext TC contained
+syn keyword contextCommon TD TDs TEX TEXpage TH contained
+syn keyword contextCommon TN TR TRs TX TY contained
+syn keyword contextCommon TaBlE Tau Tcaron Tcedilla Tcommaaccent contained
+syn keyword contextCommon TeX TheNormalizedFontSize Theta Thook Thorn contained
+syn keyword contextCommon TransparencyHack Tstroke Uacute Ubreve Ucaron contained
+syn keyword contextCommon Ucircumflex Udiaeresis Udiaeresisacute Udiaeresiscaron Udiaeresisgrave contained
+syn keyword contextCommon Udiaeresismacron Udotbelow Udoublegrave Ugrave Uhook contained
+syn keyword contextCommon Uhorn Uhornacute Uhorndotbelow Uhorngrave Uhornhook contained
+syn keyword contextCommon Uhorntilde Uhungarumlaut Uinvertedbreve Umacron Uogonek contained
+syn keyword contextCommon Uparrow Updownarrow Upsilon Uring Utilde contained
+syn keyword contextCommon Uuparrow VDash Vdash VerboseNumber Vert contained
+syn keyword contextCommon Vhook Vvdash WEEKDAY WORD WORDS contained
+syn keyword contextCommon Wcircumflex WidthSpanningText Word Words XETEX contained
+syn keyword contextCommon XML XeTeX Xi Yacute Ycircumflex contained
+syn keyword contextCommon Ydiaeresis Ydotbelow Ygrave Yhook Ymacron contained
+syn keyword contextCommon Ytilde Zacute Zcaron Zdotaccent Zeta contained
+syn keyword contextCommon Zhook Zstroke aacute abbreviation abjadnaivenumerals contained
+syn keyword contextCommon abjadnodotnumerals abjadnumerals about abreve abreveacute contained
+syn keyword contextCommon abrevedotbelow abrevegrave abrevehook abrevetilde acaron contained
+syn keyword contextCommon acircumflex acircumflexacute acircumflexdotbelow acircumflexgrave acircumflexhook contained
+syn keyword contextCommon acircumflextilde activatespacehandler actualday actualmonth actualyear contained
+syn keyword contextCommon actuarial acute acwopencirclearrow adaptcollector adaptfontfeature contained
+syn keyword contextCommon adaptlayout adaptpapersize addfeature addtoJSpreamble addtocommalist contained
+syn keyword contextCommon addvalue adiaeresis adiaeresismacron adotaccent adotaccentmacron contained
+syn keyword contextCommon adotbelow adoublegrave aeacute aeligature aemacron contained
+syn keyword contextCommon afghanicurrency aftersplitstring aftertestandsplitstring agrave ahook contained
+syn keyword contextCommon ainvertedbreve aleph align alignbottom aligned contained
+syn keyword contextCommon alignedbox alignedline alignhere alignment alignmentcharacter contained
+syn keyword contextCommon allinputpaths allmodes alpha alphabeticnumerals alwayscitation contained
+syn keyword contextCommon alwayscite amacron amalg ampersand anchor contained
+syn keyword contextCommon angle aogonek appendetoks appendgvalue appendices contained
+syn keyword contextCommon appendtocommalist appendtoks appendtoksonce appendvalue apply contained
+syn keyword contextCommon applyalternativestyle applyfunction applyprocessor applytocharacters applytofirstcharacter contained
+syn keyword contextCommon applytosplitstringchar applytosplitstringcharspaced applytosplitstringline applytosplitstringlinespaced applytosplitstringword contained
+syn keyword contextCommon applytosplitstringwordspaced applytowords approx approxEq approxeq contained
+syn keyword contextCommon approxnEq arabicakbar arabicalayhe arabicallah arabicallallahou contained
+syn keyword contextCommon arabicasterisk arabicbasmalah arabiccomma arabiccuberoot arabicdateseparator contained
+syn keyword contextCommon arabicdecimals arabicdisputedendofayah arabicendofayah arabicexnumerals arabicfootnotemarker contained
+syn keyword contextCommon arabicfourthroot arabichighain arabichighalayheassallam arabichigheqala arabichighesala contained
+syn keyword contextCommon arabichighfootnotemarker arabichighjeem arabichighlamalef arabichighmadda arabichighmeemlong contained
+syn keyword contextCommon arabichighmeemshort arabichighnisf arabichighnoon arabichighnoonkasra arabichighqaf contained
+syn keyword contextCommon arabichighqif arabichighradiallahouanhu arabichighrahmatullahalayhe arabichighrubc arabichighsad contained
+syn keyword contextCommon arabichighsajda arabichighsakta arabichighsallallahou arabichighseen arabichighsmallsafha contained
+syn keyword contextCommon arabichightah arabichightakhallus arabichighthalatha arabichighwaqf arabichighyeh contained
+syn keyword contextCommon arabichighzain arabicjallajalalouhou arabiclettermark arabiclowmeemlong arabiclownoonkasra contained
+syn keyword contextCommon arabiclowseen arabicmisra arabicmuhammad arabicnumber arabicnumberabove contained
+syn keyword contextCommon arabicnumerals arabicparenleft arabicparenright arabicpercent arabicperiod contained
+syn keyword contextCommon arabicpermille arabicpertenthousand arabicpoeticverse arabicqala arabicquestion contained
+syn keyword contextCommon arabicrasoul arabicray arabicrialsign arabicsafha arabicsajdah contained
+syn keyword contextCommon arabicsalla arabicsamvat arabicsanah arabicsemicolon arabicshighthreedots contained
+syn keyword contextCommon arabicslcm arabicstartofrubc arabictripledot arabicvowelwaw arabicvowelyeh contained
+syn keyword contextCommon arabicwasallam arg aring aringacute arrangedpages contained
+syn keyword contextCommon arrowvert asciimode asciistr aside assignalfadimension contained
+syn keyword contextCommon assigndimen assigndimension assignifempty assigntranslation assignvalue contained
+syn keyword contextCommon assignwidth assumelongusagecs ast astype asymp contained
+syn keyword contextCommon at atilde atleftmargin atpage atrightmargin contained
+syn keyword contextCommon attachment autocap autodirhbox autodirvbox autodirvtop contained
+syn keyword contextCommon autoinsertnextspace autointegral automathematics autoorientation autopagestaterealpage contained
+syn keyword contextCommon autopagestaterealpageorder autorule autosetups availablehsize averagecharwidth contained
+syn keyword contextCommon backepsilon background backgroundimage backgroundimagefill backgroundline contained
+syn keyword contextCommon backmatter backprime backsim backslash bar contained
+syn keyword contextCommon barleftarrow barleftarrowrightarrowbar barovernorthwestarrow barwedge basegrid contained
+syn keyword contextCommon baselinebottom baselineleftbox baselinemiddlebox baselinerightbox bbordermatrix contained
+syn keyword contextCommon bbox because beforesplitstring beforetestandsplitstring beta contained
+syn keyword contextCommon beth between bhook big bigbodyfont contained
+syn keyword contextCommon bigcap bigcirc bigcircle bigcup bigdiamond contained
+syn keyword contextCommon bigg bigger biggl biggm biggr contained
+syn keyword contextCommon bigl bigm bigodot bigoplus bigotimes contained
+syn keyword contextCommon bigr bigskip bigsqcap bigsqcup bigsquare contained
+syn keyword contextCommon bigstar bigtimes bigtriangledown bigtriangleup bigudot contained
+syn keyword contextCommon biguplus bigvee bigwedge binom bitmapimage contained
+syn keyword contextCommon blacklozenge blackrule blackrules blacksquare blacktriangle contained
+syn keyword contextCommon blacktriangledown blacktriangleleft blacktriangleright blank blap contained
+syn keyword contextCommon bleed bleedheight bleedwidth blockligatures blockquote contained
+syn keyword contextCommon blocksynctexfile blockuservariable bodyfontenvironmentlist bodyfontsize bodymatter contained
+syn keyword contextCommon bold boldface bolditalic boldslanted bookmark contained
+syn keyword contextCommon booleanmodevalue bordermatrix bot bottombox bottomleftbox contained
+syn keyword contextCommon bottomrightbox bowtie boxcursor boxdot boxedcolumns contained
+syn keyword contextCommon boxmarker boxminus boxofsize boxplus boxreference contained
+syn keyword contextCommon boxtimes bpos breakablethinspace breakhere breve contained
+syn keyword contextCommon bstroke btxabbreviatedjournal btxaddjournal btxalwayscitation btxauthorfield contained
+syn keyword contextCommon btxdetail btxdirect btxdoif btxdoifcombiinlistelse btxdoifelse contained
+syn keyword contextCommon btxdoifelsecombiinlist btxdoifelsesameasprevious btxdoifelsesameaspreviouschecked btxdoifelseuservariable btxdoifnot contained
+syn keyword contextCommon btxdoifsameaspreviouscheckedelse btxdoifsameaspreviouselse btxdoifuservariableelse btxexpandedjournal btxfield contained
+syn keyword contextCommon btxfieldname btxfieldtype btxfirstofrange btxflush btxflushauthor contained
+syn keyword contextCommon btxflushauthorinverted btxflushauthorinvertedshort btxflushauthorname btxflushauthornormal btxflushauthornormalshort contained
+syn keyword contextCommon btxflushsuffix btxfoundname btxfoundtype btxhiddencitation btxhybridcite contained
+syn keyword contextCommon btxlabellanguage btxlabeltext btxlistcitation btxloadjournalist btxoneorrange contained
+syn keyword contextCommon btxremapauthor btxrenderingdefinitions btxsavejournalist btxsetup btxsingularorplural contained
+syn keyword contextCommon btxsingularplural btxtextcitation buffer buildmathaccent buildtextaccent contained
+syn keyword contextCommon buildtextbottomcomma buildtextbottomdot buildtextcedilla buildtextgrave buildtextmacron contained
+syn keyword contextCommon buildtextognek bullet button cacute calligraphic contained
+syn keyword contextCommon camel cap capital carriagereturn cases contained
+syn keyword contextCommon catcodetable catcodetablename cbox ccaron ccedilla contained
+syn keyword contextCommon ccircumflex ccurl cdot cdotaccent cdotp contained
+syn keyword contextCommon cdots centeraligned centerbox centerdot centeredbox contained
+syn keyword contextCommon centeredlastline centerednextbox centerline cfrac chapter contained
+syn keyword contextCommon character characteralign characters chardescription charwidthlanguage contained
+syn keyword contextCommon check checkcharacteralign checkedblank checkedchar checkedfences contained
+syn keyword contextCommon checkedfiller checkedstrippedcsname checkinjector checkmark checknextindentation contained
+syn keyword contextCommon checknextinjector checkpage checkparameters checkpreviousinjector checksoundtrack contained
+syn keyword contextCommon checktwopassdata checkvariables chem chemical chemicalbottext contained
+syn keyword contextCommon chemicalmidtext chemicalsymbol chemicaltext chemicaltoptext chi contained
+syn keyword contextCommon chineseallnumerals chinesecapnumerals chinesenumerals chook circ contained
+syn keyword contextCommon circeq circlearrowleft circlearrowright circledR circledS contained
+syn keyword contextCommon circledast circledcirc circleddash circledequals circleonrightarrow contained
+syn keyword contextCommon citation cite clap classfont cldcommand contained
+syn keyword contextCommon cldcontext cldloadfile cldprocessfile cleftarrow clip contained
+syn keyword contextCommon clippedoverlayimage clonefield clubsuit collect collectedtext contained
+syn keyword contextCommon collectexpanded collecting colon coloncolonequals colonequals contained
+syn keyword contextCommon color colorbar colorcomponents colored colorintent contained
+syn keyword contextCommon coloronly colorset colorvalue column columnbreak contained
+syn keyword contextCommon columns columnset columnsetspan columnsetspanwidth combination contained
+syn keyword contextCommon combinepages commalistelement commalistsentence commalistsize comment contained
+syn keyword contextCommon comparecolorgroup comparedimension comparedimensioneps comparepalet complement contained
+syn keyword contextCommon completebtxrendering completecontent completeindex completelist completelistofabbreviations contained
+syn keyword contextCommon completelistofchemicals completelistoffigures completelistofgraphics completelistofintermezzi completelistoflogos contained
+syn keyword contextCommon completelistofpublications completelistofsorts completelistofsynonyms completelistoftables completepagenumber contained
+syn keyword contextCommon completeregister complexes complexorsimple complexorsimpleempty component contained
+syn keyword contextCommon composedcollector composedlayer compounddiscretionary compresult cong contained
+syn keyword contextCommon constantdimen constantdimenargument constantemptyargument constantnumber constantnumberargument contained
+syn keyword contextCommon contentreference contextcode contextdefinitioncode continuednumber continueifinputfile contained
+syn keyword contextCommon convertargument convertcommand convertedcounter converteddimen convertedsubcounter contained
+syn keyword contextCommon convertmonth convertnumber convertvalue convertvboxtohbox coprod contained
+syn keyword contextCommon copyboxfromcache copybtxlabeltext copyfield copyheadtext copylabeltext contained
+syn keyword contextCommon copymathlabeltext copyoperatortext copypages copyparameters copyposition contained
+syn keyword contextCommon copyprefixtext copyright copysetups copysuffixtext copytaglabeltext contained
+syn keyword contextCommon copyunittext correctwhitespace countersubs counttoken counttokens contained
+syn keyword contextCommon cramped crampedclap crampedllap crampedrlap crightarrow contained
+syn keyword contextCommon crightoverleftarrow crlf crlfplaceholder cstroke ctop contained
+syn keyword contextCommon ctxcommand ctxdirectcommand ctxdirectlua ctxfunction ctxfunctiondefinition contained
+syn keyword contextCommon ctxlatecommand ctxlatelua ctxloadluafile ctxlua ctxluabuffer contained
+syn keyword contextCommon ctxluacode ctxreport ctxsprint cup curlyeqprec contained
+syn keyword contextCommon curlyeqsucc curlyvee curlywedge currentassignmentlistkey currentassignmentlistvalue contained
+syn keyword contextCommon currentbtxuservariable currentcolor currentcommalistitem currentcomponent currentdate contained
+syn keyword contextCommon currentenvironment currentfeaturetest currentheadnumber currentinterface currentlanguage contained
+syn keyword contextCommon currentlistentrydestinationattribute currentlistentrylimitedtext currentlistentrynumber currentlistentrypagenumber currentlistentryreferenceattribute contained
+syn keyword contextCommon currentlistentrytitle currentlistentrytitlerendered currentlistentrywrapper currentlistsymbol currentmainlanguage contained
+syn keyword contextCommon currentmessagetext currentmoduleparameter currentoutputstream currentproduct currentproject contained
+syn keyword contextCommon currentregime currentregisterpageuserdata currentresponses currenttime currentvalue contained
+syn keyword contextCommon currentxtablecolumn currentxtablerow curvearrowleft curvearrowright cwopencirclearrow contained
+syn keyword contextCommon cyrillicA cyrillicAE cyrillicAbreve cyrillicAdiaeresis cyrillicB contained
+syn keyword contextCommon cyrillicBIGYUS cyrillicBIGYUSiotified cyrillicC cyrillicCH cyrillicCHEDC contained
+syn keyword contextCommon cyrillicCHEDCabkhasian cyrillicCHEabkhasian cyrillicCHEdiaeresis cyrillicCHEkhakassian cyrillicCHEvertstroke contained
+syn keyword contextCommon cyrillicD cyrillicDASIAPNEUMATA cyrillicDJE cyrillicDZE cyrillicDZEabkhasian contained
+syn keyword contextCommon cyrillicDZHE cyrillicE cyrillicELtail cyrillicEMtail cyrillicENDC contained
+syn keyword contextCommon cyrillicENGHE cyrillicENhook cyrillicENtail cyrillicEREV cyrillicERY contained
+syn keyword contextCommon cyrillicERtick cyrillicEbreve cyrillicEdiaeresis cyrillicEgrave cyrillicEiotified contained
+syn keyword contextCommon cyrillicF cyrillicFITA cyrillicG cyrillicGHEmidhook cyrillicGHEstroke contained
+syn keyword contextCommon cyrillicGHEupturn cyrillicGJE cyrillicH cyrillicHA cyrillicHADC contained
+syn keyword contextCommon cyrillicHRDSN cyrillicI cyrillicIE cyrillicII cyrillicISHRT contained
+syn keyword contextCommon cyrillicISHRTtail cyrillicIZHITSA cyrillicIZHITSAdoublegrave cyrillicIdiaeresis cyrillicIgrave contained
+syn keyword contextCommon cyrillicImacron cyrillicJE cyrillicK cyrillicKADC cyrillicKAbashkir contained
+syn keyword contextCommon cyrillicKAhook cyrillicKAstroke cyrillicKAvertstroke cyrillicKJE cyrillicKOPPA contained
+syn keyword contextCommon cyrillicKSI cyrillicL cyrillicLITTLEYUS cyrillicLITTLEYUSiotified cyrillicLJE contained
+syn keyword contextCommon cyrillicM cyrillicN cyrillicNJE cyrillicO cyrillicOMEGA contained
+syn keyword contextCommon cyrillicOMEGAround cyrillicOMEGAtitlo cyrillicOT cyrillicObarred cyrillicObarreddiaeresis contained
+syn keyword contextCommon cyrillicOdiaeresis cyrillicP cyrillicPALATALIZATION cyrillicPALOCHKA cyrillicPEmidhook contained
+syn keyword contextCommon cyrillicPSI cyrillicPSILIPNEUMATA cyrillicR cyrillicS cyrillicSCHWA contained
+syn keyword contextCommon cyrillicSCHWAdiaeresis cyrillicSDSC cyrillicSEMISOFT cyrillicSFTSN cyrillicSH contained
+syn keyword contextCommon cyrillicSHCH cyrillicSHHA cyrillicT cyrillicTEDC cyrillicTETSE contained
+syn keyword contextCommon cyrillicTITLO cyrillicTSHE cyrillicU cyrillicUK cyrillicUSHRT contained
+syn keyword contextCommon cyrillicUdiaeresis cyrillicUdoubleacute cyrillicUmacron cyrillicV cyrillicYA contained
+syn keyword contextCommon cyrillicYAT cyrillicYERUdiaeresis cyrillicYI cyrillicYO cyrillicYU contained
+syn keyword contextCommon cyrillicYstr cyrillicYstrstroke cyrillicZ cyrillicZDSC cyrillicZEdiaeresis contained
+syn keyword contextCommon cyrillicZH cyrillicZHEbreve cyrillicZHEdescender cyrillicZHEdiaeresis cyrillica contained
+syn keyword contextCommon cyrillicabreve cyrillicadiaeresis cyrillicae cyrillicb cyrillicbigyus contained
+syn keyword contextCommon cyrillicbigyusiotified cyrillicc cyrillicch cyrilliccheabkhasian cyrillicchedc contained
+syn keyword contextCommon cyrillicchedcabkhasian cyrillicchediaeresis cyrillicchekhakassian cyrillicchevertstroke cyrillicd contained
+syn keyword contextCommon cyrillicdje cyrillicdze cyrillicdzeabkhasian cyrillicdzhe cyrillice contained
+syn keyword contextCommon cyrillicebreve cyrillicediaeresis cyrillicegrave cyrilliceiotified cyrilliceltail contained
+syn keyword contextCommon cyrillicemtail cyrillicendc cyrillicenghe cyrillicenhook cyrillicentail contained
+syn keyword contextCommon cyrillicerev cyrillicertick cyrillicery cyrillicf cyrillicfita contained
+syn keyword contextCommon cyrillicg cyrillicghemidhook cyrillicghestroke cyrillicgheupturn cyrillicgje contained
+syn keyword contextCommon cyrillich cyrillicha cyrillichadc cyrillichrdsn cyrillici contained
+syn keyword contextCommon cyrillicidiaeresis cyrillicie cyrillicigrave cyrillicii cyrillicimacron contained
+syn keyword contextCommon cyrillicishrt cyrillicishrttail cyrillicizhitsa cyrillicizhitsadoublegrave cyrillicje contained
+syn keyword contextCommon cyrillick cyrillickabashkir cyrillickadc cyrillickahook cyrillickastroke contained
+syn keyword contextCommon cyrillickavertstroke cyrillickje cyrillickoppa cyrillicksi cyrillicl contained
+syn keyword contextCommon cyrilliclittleyus cyrilliclittleyusiotified cyrilliclje cyrillicm cyrillicn contained
+syn keyword contextCommon cyrillicnje cyrillico cyrillicobarred cyrillicobarreddiaeresis cyrillicodiaeresis contained
+syn keyword contextCommon cyrillicomega cyrillicomegaround cyrillicomegatitlo cyrillicot cyrillicp contained
+syn keyword contextCommon cyrillicpemidhook cyrillicpsi cyrillicr cyrillics cyrillicschwa contained
+syn keyword contextCommon cyrillicschwadiaeresis cyrillicsdsc cyrillicsemisoft cyrillicsftsn cyrillicsh contained
+syn keyword contextCommon cyrillicshch cyrillicshha cyrillict cyrillictedc cyrillictetse contained
+syn keyword contextCommon cyrillictshe cyrillicu cyrillicudiaeresis cyrillicudoubleacute cyrillicuk contained
+syn keyword contextCommon cyrillicumacron cyrillicushrt cyrillicv cyrillicya cyrillicyat contained
+syn keyword contextCommon cyrillicyerudiaeresis cyrillicyi cyrillicyo cyrillicystr cyrillicystrstroke contained
+syn keyword contextCommon cyrillicyu cyrillicz cyrilliczdsc cyrilliczediaeresis cyrilliczh contained
+syn keyword contextCommon cyrilliczhebreve cyrilliczhedescender cyrilliczhediaeresis d dag contained
+syn keyword contextCommon dagger daleth dasharrow dashedleftarrow dashedrightarrow contained
+syn keyword contextCommon dashv datasetvariable date daylong dayoftheweek contained
+syn keyword contextCommon dayshort dayspermonth dbinom dcaron dcurl contained
+syn keyword contextCommon dd ddag ddagger dddot ddot contained
+syn keyword contextCommon ddots decrement decrementcounter decrementedcounter decrementpagenumber contained
+syn keyword contextCommon decrementsubpagenumber decrementvalue defaultinterface defaultobjectpage defaultobjectreference contained
+syn keyword contextCommon defcatcodecommand defconvertedargument defconvertedcommand defconvertedvalue define contained
+syn keyword contextCommon defineMPinstance defineTABLEsetup defineaccent defineactivecharacter definealternativestyle contained
+syn keyword contextCommon defineanchor defineattachment defineattribute definebackground definebar contained
+syn keyword contextCommon defineblock definebodyfont definebodyfontenvironment definebodyfontswitch definebreakpoint contained
+syn keyword contextCommon definebreakpoints definebtx definebtxdataset definebtxregister definebtxrendering contained
+syn keyword contextCommon definebuffer definebutton definecapitals definecharacter definecharacterkerning contained
+syn keyword contextCommon definecharacterspacing definechemical definechemicals definechemicalsymbol definecollector contained
+syn keyword contextCommon definecolor definecolorgroup definecolumnbreak definecolumnset definecolumnsetarea contained
+syn keyword contextCommon definecolumnsetspan definecombination definecombinedlist definecommand definecomment contained
+syn keyword contextCommon definecomplexorsimple definecomplexorsimpleempty defineconversion defineconversionset definecounter contained
+syn keyword contextCommon definedataset definedate definedelimitedtext definedeq definedescription contained
+syn keyword contextCommon definedfont definedocument defineeffect defineenumeration defineexpandable contained
+syn keyword contextCommon defineexpansion defineexternalfigure definefacingfloat definefallbackfamily definefield contained
+syn keyword contextCommon definefieldbody definefieldbodyset definefieldcategory definefieldstack definefiguresymbol contained
+syn keyword contextCommon definefileconstant definefilefallback definefilesynonym definefiller definefirstline contained
+syn keyword contextCommon definefittingpage definefloat definefont definefontalternative definefontfallback contained
+syn keyword contextCommon definefontfamily definefontfamilypreset definefontfeature definefontfile definefontsize contained
+syn keyword contextCommon definefontsolution definefontstyle definefontsynonym defineformula defineformulaalternative contained
+syn keyword contextCommon defineformulaframed defineframed defineframedcontent defineframedtable defineframedtext contained
+syn keyword contextCommon definefrozenfont defineglobalcolor definegraphictypesynonym definegridsnapping definehbox contained
+syn keyword contextCommon definehead defineheadalternative definehelp definehigh definehighlight contained
+syn keyword contextCommon definehspace definehyphenationfeatures defineindentedtext defineindenting defineinitial contained
+syn keyword contextCommon defineinsertion defineinteraction defineinteractionbar defineinteractionmenu defineinterfaceconstant contained
+syn keyword contextCommon defineinterfaceelement defineinterfacevariable defineinterlinespace defineintermediatecolor defineitemgroup contained
+syn keyword contextCommon defineitems definelabel definelabelclass definelayer definelayerpreset contained
+syn keyword contextCommon definelayout definelinefiller definelinenote definelinenumbering definelines contained
+syn keyword contextCommon definelist definelistalternative definelistextra definelow definelowhigh contained
+syn keyword contextCommon definelowmidhigh definemakeup definemarginblock definemargindata definemarker contained
+syn keyword contextCommon definemarking definemathaccent definemathalignment definemathcases definemathcommand contained
+syn keyword contextCommon definemathdouble definemathdoubleextensible definemathematics definemathextensible definemathfence contained
+syn keyword contextCommon definemathfraction definemathframed definemathmatrix definemathornament definemathover contained
+syn keyword contextCommon definemathoverextensible definemathovertextextensible definemathradical definemathstackers definemathstyle contained
+syn keyword contextCommon definemathtriplet definemathunder definemathunderextensible definemathundertextextensible definemathunstacked contained
+syn keyword contextCommon definemeasure definemessageconstant definemixedcolumns definemode definemulticolumns contained
+syn keyword contextCommon definemultitonecolor definenamedcolor definenamespace definenarrower definenote contained
+syn keyword contextCommon defineorientation defineornament defineoutputroutine defineoutputroutinecommand defineoverlay contained
+syn keyword contextCommon definepage definepagebreak definepagechecker definepagecolumns definepageinjection contained
+syn keyword contextCommon definepageinjectionalternative definepageshift definepagestate definepairedbox definepalet contained
+syn keyword contextCommon definepapersize defineparagraph defineparagraphs defineparallel defineparbuilder contained
+syn keyword contextCommon defineperiodkerning defineplaceholder defineplacement definepositioning defineprefixset contained
+syn keyword contextCommon defineprocesscolor defineprocessor defineprofile defineprogram definepushbutton contained
+syn keyword contextCommon definepushsymbol definereference definereferenceformat defineregister definerenderingwindow contained
+syn keyword contextCommon defineresetset defineruby definescale definescript definesection contained
+syn keyword contextCommon definesectionblock definesectionlevels defineselector defineseparatorset defineshift contained
+syn keyword contextCommon definesidebar definesort definesorting definespotcolor definestartstop contained
+syn keyword contextCommon definestyle definestyleinstance definesubfield definesubformula definesymbol contained
+syn keyword contextCommon definesynonym definesynonyms definesystemattribute definesystemconstant definesystemvariable contained
+syn keyword contextCommon definetabletemplate definetabulate definetext definetextbackground definetextflow contained
+syn keyword contextCommon definetextnote definetokenlist definetooltip definetransparency definetwopasslist contained
+syn keyword contextCommon definetype definetypeface definetypescriptprefix definetypescriptsynonym definetypesetting contained
+syn keyword contextCommon definetyping defineunit defineuserdata defineuserdataalternative defineviewerlayer contained
+syn keyword contextCommon definevspace definevspacing definevspacingamount definextable defrostparagraphproperties contained
+syn keyword contextCommon delimited delimitedtext delta depthofstring depthonlybox contained
+syn keyword contextCommon depthspanningtext depthstrut determineheadnumber determinelistcharacteristics determinenoflines contained
+syn keyword contextCommon determineregistercharacteristics devanagarinumerals dfrac dhook diameter contained
+syn keyword contextCommon diamond diamondsuit differentialD differentiald digamma contained
+syn keyword contextCommon digits dimensiontocount directboxfromcache directcolor directcolored contained
+syn keyword contextCommon directconvertedcounter directcopyboxfromcache directdummyparameter directgetboxllx directgetboxlly contained
+syn keyword contextCommon directhighlight directlocalframed directluacode directparwrapper directselect contained
+syn keyword contextCommon directsetbar directsetup directsymbol directvspacing dis contained
+syn keyword contextCommon disabledirectives disableexperiments disablemode disableoutputstream disableparpositions contained
+syn keyword contextCommon disableregime disabletrackers displaymath displaymathematics displaymessage contained
+syn keyword contextCommon disposeluatable distributedhsize div dividedsize divideontimes contained
+syn keyword contextCommon divides dmath doadaptleftskip doadaptrightskip doaddfeature contained
+syn keyword contextCommon doassign doassignempty doboundtext docheckassignment docheckedpair contained
+syn keyword contextCommon document documentvariable dodoubleargument dodoubleargumentwithset dodoubleempty contained
+syn keyword contextCommon dodoubleemptywithset dodoublegroupempty doeassign doexpandedrecurse dofastloopcs contained
+syn keyword contextCommon dogetattribute dogetattributeid dogetcommacommandelement dogobbledoubleempty dogobblesingleempty contained
+syn keyword contextCommon dohyphens doif doifMPgraphicelse doifallcommon doifallcommonelse contained
+syn keyword contextCommon doifalldefinedelse doifallmodes doifallmodeselse doifassignmentelse doifassignmentelsecs contained
+syn keyword contextCommon doifblackelse doifbothsides doifbothsidesoverruled doifboxelse doifbufferelse contained
+syn keyword contextCommon doifcheckedpagestate doifcolor doifcolorelse doifcommandhandler doifcommandhandlerelse contained
+syn keyword contextCommon doifcommon doifcommonelse doifcontent doifconversiondefinedelse doifconversionnumberelse contained
+syn keyword contextCommon doifcounter doifcounterelse doifcurrentfonthasfeatureelse doifdefined doifdefinedcounter contained
+syn keyword contextCommon doifdefinedcounterelse doifdefinedelse doifdimensionelse doifdimenstringelse doifdocumentargument contained
+syn keyword contextCommon doifdocumentargumentelse doifdocumentfilename doifdocumentfilenameelse doifdocumentvariable doifdocumentvariableelse contained
+syn keyword contextCommon doifdrawingblackelse doifelse doifelseMPgraphic doifelseallcommon doifelsealldefined contained
+syn keyword contextCommon doifelseallmodes doifelseassignment doifelseassignmentcs doifelseblack doifelsebox contained
+syn keyword contextCommon doifelseboxincache doifelsebuffer doifelsecolor doifelsecommandhandler doifelsecommon contained
+syn keyword contextCommon doifelseconversiondefined doifelseconversionnumber doifelsecounter doifelsecurrentfonthasfeature doifelsecurrentsortingused contained
+syn keyword contextCommon doifelsecurrentsynonymshown doifelsecurrentsynonymused doifelsedefined doifelsedefinedcounter doifelsedimension contained
+syn keyword contextCommon doifelsedimenstring doifelsedocumentargument doifelsedocumentfilename doifelsedocumentvariable doifelsedrawingblack contained
+syn keyword contextCommon doifelseempty doifelseemptyvalue doifelseemptyvariable doifelseenv doifelsefastoptionalcheck contained
+syn keyword contextCommon doifelsefastoptionalcheckcs doifelsefieldbody doifelsefieldcategory doifelsefigure doifelsefile contained
+syn keyword contextCommon doifelsefiledefined doifelsefileexists doifelsefirstchar doifelseflagged doifelsefontchar contained
+syn keyword contextCommon doifelsefontfeature doifelsefontpresent doifelsefontsynonym doifelseframed doifelsehasspace contained
+syn keyword contextCommon doifelsehelp doifelseincsname doifelseindented doifelseinelement doifelseinputfile contained
+syn keyword contextCommon doifelseinsertion doifelseinset doifelseinstring doifelseinsymbolset doifelseintoks contained
+syn keyword contextCommon doifelseintwopassdata doifelseitalic doifelselanguage doifelselayerdata doifelselayoutdefined contained
+syn keyword contextCommon doifelselayoutsomeline doifelselayouttextline doifelseleapyear doifelselist doifelselocation contained
+syn keyword contextCommon doifelselocfile doifelsemainfloatbody doifelsemarkedcontent doifelsemarkedpage doifelsemarking contained
+syn keyword contextCommon doifelsemeaning doifelsemessage doifelsemode doifelsenextbgroup doifelsenextbgroupcs contained
+syn keyword contextCommon doifelsenextchar doifelsenextoptional doifelsenextoptionalcs doifelsenextparenthesis doifelsenonzeropositive contained
+syn keyword contextCommon doifelsenoteonsamepage doifelsenothing doifelsenumber doifelseobjectfound doifelseobjectreferencefound contained
+syn keyword contextCommon doifelseoddpage doifelseoddpagefloat doifelseoldercontext doifelseolderversion doifelseorientation contained
+syn keyword contextCommon doifelseoverlapping doifelseoverlay doifelseparallel doifelseparentfile doifelseparwrapper contained
+syn keyword contextCommon doifelsepath doifelsepathexists doifelsepatterns doifelseposition doifelsepositionaction contained
+syn keyword contextCommon doifelsepositiononpage doifelsepositionsonsamepage doifelsepositionsonthispage doifelsepositionsused doifelsereferencefound contained
+syn keyword contextCommon doifelserightpage doifelserightpagefloat doifelserighttoleftinbox doifelsesamelinereference doifelsesamestring contained
+syn keyword contextCommon doifelsesetups doifelsesomebackground doifelsesomespace doifelsesomething doifelsesometoks contained
+syn keyword contextCommon doifelsestringinstring doifelsestructurelisthasnumber doifelsestructurelisthaspage doifelsesymboldefined doifelsesymbolset contained
+syn keyword contextCommon doifelsetext doifelsetextflow doifelsetextflowcollector doifelsetopofpage doifelsetypingfile contained
+syn keyword contextCommon doifelseundefined doifelseurldefined doifelsevalue doifelsevaluenothing doifelsevariable contained
+syn keyword contextCommon doifempty doifemptyelse doifemptytoks doifemptyvalue doifemptyvalueelse contained
+syn keyword contextCommon doifemptyvariable doifemptyvariableelse doifenv doifenvelse doiffastoptionalcheckcselse contained
+syn keyword contextCommon doiffastoptionalcheckelse doiffieldbodyelse doiffieldcategoryelse doiffigureelse doiffile contained
+syn keyword contextCommon doiffiledefinedelse doiffileelse doiffileexistselse doiffirstcharelse doifflaggedelse contained
+syn keyword contextCommon doiffontcharelse doiffontfeatureelse doiffontpresentelse doiffontsynonymelse doifhasspaceelse contained
+syn keyword contextCommon doifhelpelse doifincsnameelse doifinelementelse doifinputfileelse doifinsertionelse contained
+syn keyword contextCommon doifinset doifinsetelse doifinstring doifinstringelse doifinsymbolset contained
+syn keyword contextCommon doifinsymbolsetelse doifintokselse doifintwopassdataelse doifitalicelse doiflanguageelse contained
+syn keyword contextCommon doiflayerdataelse doiflayoutdefinedelse doiflayoutsomelineelse doiflayouttextlineelse doifleapyearelse contained
+syn keyword contextCommon doiflistelse doiflocationelse doiflocfileelse doifmainfloatbodyelse doifmarkingelse contained
+syn keyword contextCommon doifmeaningelse doifmessageelse doifmode doifmodeelse doifnextbgroupcselse contained
+syn keyword contextCommon doifnextbgroupelse doifnextcharelse doifnextoptionalcselse doifnextoptionalelse doifnextparenthesiselse contained
+syn keyword contextCommon doifnonzeropositiveelse doifnot doifnotallcommon doifnotallmodes doifnotcommandhandler contained
+syn keyword contextCommon doifnotcommon doifnotcounter doifnotdocumentargument doifnotdocumentfilename doifnotdocumentvariable contained
+syn keyword contextCommon doifnotempty doifnotemptyvalue doifnotemptyvariable doifnotenv doifnoteonsamepageelse contained
+syn keyword contextCommon doifnotescollected doifnotfile doifnotflagged doifnothing doifnothingelse contained
+syn keyword contextCommon doifnotinset doifnotinsidesplitfloat doifnotinstring doifnotmode doifnotnumber contained
+syn keyword contextCommon doifnotsamestring doifnotsetups doifnotvalue doifnotvariable doifnumber contained
+syn keyword contextCommon doifnumberelse doifobjectfoundelse doifobjectreferencefoundelse doifoddpageelse doifoddpagefloatelse contained
+syn keyword contextCommon doifoldercontextelse doifolderversionelse doifoutervmode doifoverlappingelse doifoverlayelse contained
+syn keyword contextCommon doifparallelelse doifparentfileelse doifpathelse doifpathexistselse doifpatternselse contained
+syn keyword contextCommon doifposition doifpositionaction doifpositionactionelse doifpositionelse doifpositiononpageelse contained
+syn keyword contextCommon doifpositionsonsamepageelse doifpositionsonthispageelse doifpositionsusedelse doifreferencefoundelse doifrightpageelse contained
+syn keyword contextCommon doifrightpagefloatelse doifrighttoleftinboxelse doifsamelinereferenceelse doifsamestring doifsamestringelse contained
+syn keyword contextCommon doifsetups doifsetupselse doifsomebackground doifsomebackgroundelse doifsomespaceelse contained
+syn keyword contextCommon doifsomething doifsomethingelse doifsometoks doifsometokselse doifstringinstringelse contained
+syn keyword contextCommon doifstructurelisthasnumberelse doifstructurelisthaspageelse doifsymboldefinedelse doifsymbolsetelse doiftext contained
+syn keyword contextCommon doiftextelse doiftextflowcollectorelse doiftextflowelse doiftopofpageelse doiftypingfileelse contained
+syn keyword contextCommon doifundefined doifundefinedcounter doifundefinedelse doifunknownfontfeature doifurldefinedelse contained
+syn keyword contextCommon doifvalue doifvalueelse doifvaluenothing doifvaluenothingelse doifvaluesomething contained
+syn keyword contextCommon doifvariable doifvariableelse doindentation dollar doloop contained
+syn keyword contextCommon doloopoverlist donothing dontconvertfont dontleavehmode dontpermitspacesbetweengroups contained
+syn keyword contextCommon dopositionaction doprocesslocalsetups doquadrupleargument doquadrupleempty doquadruplegroupempty contained
+syn keyword contextCommon doquintupleargument doquintupleempty doquintuplegroupempty dorechecknextindentation dorecurse contained
+syn keyword contextCommon dorepeatwithcommand doreplacefeature doresetandafffeature doresetattribute dorotatebox contained
+syn keyword contextCommon dosetattribute dosetleftskipadaption dosetrightskipadaption dosetupcheckedinterlinespace doseventupleargument contained
+syn keyword contextCommon doseventupleempty dosingleargument dosingleempty dosinglegroupempty dosixtupleargument contained
+syn keyword contextCommon dosixtupleempty dosomebreak dostepwiserecurse dosubtractfeature dot contained
+syn keyword contextCommon doteq doteqdot dotfill dotfskip dotlessI contained
+syn keyword contextCommon dotlessJ dotlessi dotlessj dotlessjstroke dotminus contained
+syn keyword contextCommon dotoks dotplus dotripleargument dotripleargumentwithset dotripleempty contained
+syn keyword contextCommon dotripleemptywithset dotriplegroupempty dots dottedcircle dottedrightarrow contained
+syn keyword contextCommon doublebar doublebond doublebrace doublebracket doublecap contained
+syn keyword contextCommon doublecup doubleparent doubleprime doubleverticalbar dowith contained
+syn keyword contextCommon dowithnextbox dowithnextboxcontent dowithnextboxcontentcs dowithnextboxcs dowithpargument contained
+syn keyword contextCommon dowithrange dowithwargument downarrow downdasharrow downdownarrows contained
+syn keyword contextCommon downharpoonleft downharpoonright downuparrows downwhitearrow downzigzagarrow contained
+syn keyword contextCommon dpofstring dstroke dtail dummydigit dummyparameter contained
+syn keyword contextCommon dzcaronligature dzligature eTeX eacute ebreve contained
+syn keyword contextCommon ecaron ecedilla ecircumflex ecircumflexacute ecircumflexdotbelow contained
+syn keyword contextCommon ecircumflexgrave ecircumflexhook ecircumflextilde edefconvertedargument ediaeresis contained
+syn keyword contextCommon edotaccent edotbelow edoublegrave ee efcmaxheight contained
+syn keyword contextCommon efcmaxwidth efcminheight efcminwidth efcparameter effect contained
+syn keyword contextCommon egrave ehook einvertedbreve elapsedseconds elapsedsteptime contained
+syn keyword contextCommon elapsedtime eleftarrowfill eleftharpoondownfill eleftharpoonupfill eleftrightarrowfill contained
+syn keyword contextCommon element ell em emacron embeddedxtable contained
+syn keyword contextCommon emdash emphasisboldface emphasistypeface emptylines emptyset contained
+syn keyword contextCommon emquad emspace enableasciimode enabledirectives enableexperiments contained
+syn keyword contextCommon enablemode enableoutputstream enableparpositions enableregime enabletrackers contained
+syn keyword contextCommon endash endnote endofline enquad enskip contained
+syn keyword contextCommon enspace env environment envvar eogonek contained
+syn keyword contextCommon eoverbarfill eoverbracefill eoverbracketfill eoverparentfill epos contained
+syn keyword contextCommon epsilon eq eqcirc eqeq eqeqeq contained
+syn keyword contextCommon eqgtr eqless eqsim eqslantgtr eqslantless contained
+syn keyword contextCommon equaldigits equalscolon equiv erightarrowfill erightharpoondownfill contained
+syn keyword contextCommon erightharpoonupfill eta eth ethiopic etilde contained
+syn keyword contextCommon etwoheadrightarrowfill eunderbarfill eunderbracefill eunderbracketfill eunderparentfill contained
+syn keyword contextCommon exceptions exclamdown executeifdefined exists exitloop contained
+syn keyword contextCommon exitloopnow expandcheckedcsname expanded expandedcollect expandeddoif contained
+syn keyword contextCommon expandeddoifelse expandeddoifnot expandfontsynonym expdoif expdoifcommonelse contained
+syn keyword contextCommon expdoifelse expdoifelsecommon expdoifelseinset expdoifinsetelse expdoifnot contained
+syn keyword contextCommon exponentiale extendedcatcodetable externalfigure externalfigurecollection externalfigurecollectionmaxheight contained
+syn keyword contextCommon externalfigurecollectionmaxwidth externalfigurecollectionminheight externalfigurecollectionminwidth externalfigurecollectionparameter facingfloat contained
+syn keyword contextCommon fact fakebox fallingdotseq fastdecrement fastincrement contained
+syn keyword contextCommon fastlocalframed fastloopfinal fastloopindex fastscale fastsetup contained
+syn keyword contextCommon fastsetupwithargument fastsetupwithargumentswapped fastswitchtobodyfont fastsxsy feature contained
+syn keyword contextCommon fence fenced fetchallmarkings fetchallmarks fetchmark contained
+syn keyword contextCommon fetchmarking fetchonemark fetchonemarking fetchruntinecommand fetchtwomarkings contained
+syn keyword contextCommon fetchtwomarks ffiligature ffligature fflligature fhook contained
+syn keyword contextCommon field fieldbody fieldstack fifthoffivearguments fifthofsixarguments contained
+syn keyword contextCommon figure figurefilename figurefilepath figurefiletype figurefullname contained
+syn keyword contextCommon figureheight figurenaturalheight figurenaturalwidth figurespace figuresymbol contained
+syn keyword contextCommon figuretext figurewidth filename filigature filledhboxb contained
+syn keyword contextCommon filledhboxc filledhboxg filledhboxk filledhboxm filledhboxr contained
+syn keyword contextCommon filledhboxy filler fillinline fillinrules fillintext contained
+syn keyword contextCommon fillupto filterfromnext filterfromvalue filterpages filterreference contained
+syn keyword contextCommon findtwopassdata finishregisterentry firstcharacter firstcounter firstcountervalue contained
+syn keyword contextCommon firstinlist firstoffivearguments firstoffourarguments firstofoneargument firstofoneunexpanded contained
+syn keyword contextCommon firstofsixarguments firstofthreearguments firstofthreeunexpanded firstoftwoarguments firstoftwounexpanded contained
+syn keyword contextCommon firstrealpage firstrealpagenumber firstsubcountervalue firstsubpage firstsubpagenumber contained
+syn keyword contextCommon firstuserpage firstuserpagenumber fitfield fitfieldframed fittingpage contained
+syn keyword contextCommon fittopbaselinegrid fiveeighths fivesixths fixed fixedspace contained
+syn keyword contextCommon fixedspaces flag flat flligature floatcombination contained
+syn keyword contextCommon floatuserdataparameter flushbox flushboxregister flushcollector flushedrightlastline contained
+syn keyword contextCommon flushlayer flushlocalfloats flushnextbox flushnotes flushoutputstream contained
+syn keyword contextCommon flushshapebox flushtextflow flushtokens flushtoks font contained
+syn keyword contextCommon fontalternative fontbody fontchar fontcharbyindex fontclass contained
+syn keyword contextCommon fontclassname fontface fontfeaturelist fontsize fontsolution contained
+syn keyword contextCommon fontstyle footnote footnotetext forall forcecharacterstripping contained
+syn keyword contextCommon forcelocalfloats forgeteverypar forgetparagraphfreezing forgetparameters forgetparskip contained
+syn keyword contextCommon forgetparwrapper forgetragged formula formulanumber formulas contained
+syn keyword contextCommon foundbox fourfifths fourperemspace fourthoffivearguments fourthoffourarguments contained
+syn keyword contextCommon fourthofsixarguments frac framed framedcell framedcontent contained
+syn keyword contextCommon frameddimension framedparameter framedrow framedtable framedtext contained
+syn keyword contextCommon freezedimenmacro freezemeasure freezeparagraphproperties frenchspacing from contained
+syn keyword contextCommon fromlinenote frontmatter frown frozenhbox frule contained
+syn keyword contextCommon gacute gamma gbreve gcaron gcircumflex contained
+syn keyword contextCommon gcommaaccent gdefconvertedargument gdefconvertedcommand gdotaccent ge contained
+syn keyword contextCommon geq geqq geqslant getMPdrawing getMPlayer contained
+syn keyword contextCommon getboxfromcache getboxllx getboxlly getbuffer getbufferdata contained
+syn keyword contextCommon getcommacommandsize getcommalistsize getdatavalue getdayoftheweek getdayspermonth contained
+syn keyword contextCommon getdefinedbuffer getdocumentargument getdocumentargumentdefault getdocumentfilename getdummyparameters contained
+syn keyword contextCommon getemptyparameters geteparameters getexpandedparameters getfiguredimensions getfirstcharacter contained
+syn keyword contextCommon getfirsttwopassdata getfromcommacommand getfromcommalist getfromluatable getfromtwopassdata contained
+syn keyword contextCommon getglyphdirect getglyphstyled getgparameters getinlineuserdata getlasttwopassdata contained
+syn keyword contextCommon getlocalfloat getlocalfloats getmarking getmessage getnamedglyphdirect contained
+syn keyword contextCommon getnamedglyphstyled getnamedtwopassdatalist getnaturaldimensions getnoflines getobject contained
+syn keyword contextCommon getobjectdimensions getpaletsize getparameters getparwrapper getprivatechar contained
+syn keyword contextCommon getprivateslot getrandomcount getrandomdimen getrandomfloat getrandomnumber contained
+syn keyword contextCommon getrandomseed getraweparameters getrawgparameters getrawnoflines getrawparameters contained
+syn keyword contextCommon getrawxparameters getreference getreferenceentry getroundednoflines gets contained
+syn keyword contextCommon getsubstring gettokenlist gettwopassdata gettwopassdatalist getuserdata contained
+syn keyword contextCommon getuvalue getvalue getvariable getvariabledefault getxparameters contained
+syn keyword contextCommon gg ggg gggtr gimel globaldisablemode contained
+syn keyword contextCommon globalenablemode globalletempty globalpopbox globalpopmacro globalpreventmode contained
+syn keyword contextCommon globalprocesscommalist globalpushbox globalpushmacro globalswapcounts globalswapdimens contained
+syn keyword contextCommon globalswapmacros globalundefine glyphfontfile gnapprox gneqq contained
+syn keyword contextCommon gnsim gobbledoubleempty gobbleeightarguments gobblefivearguments gobblefiveoptionals contained
+syn keyword contextCommon gobblefourarguments gobblefouroptionals gobbleninearguments gobbleoneargument gobbleoneoptional contained
+syn keyword contextCommon gobblesevenarguments gobblesingleempty gobblesixarguments gobblespacetokens gobbletenarguments contained
+syn keyword contextCommon gobblethreearguments gobblethreeoptionals gobbletwoarguments gobbletwooptionals gobbleuntil contained
+syn keyword contextCommon gobbleuntilrelax godown goto gotobox gotopage contained
+syn keyword contextCommon grabbufferdata grabbufferdatadirect grabuntil graphictext grave contained
+syn keyword contextCommon graycolor grayvalue greedysplitstring greekAlpha greekAlphadasia contained
+syn keyword contextCommon greekAlphadasiaperispomeni greekAlphadasiatonos greekAlphadasiavaria greekAlphaiotasub greekAlphaiotasubdasia contained
+syn keyword contextCommon greekAlphaiotasubdasiaperispomeni greekAlphaiotasubdasiatonos greekAlphaiotasubdasiavaria greekAlphaiotasubpsili greekAlphaiotasubpsiliperispomeni contained
+syn keyword contextCommon greekAlphaiotasubpsilitonos greekAlphaiotasubpsilivaria greekAlphamacron greekAlphapsili greekAlphapsiliperispomeni contained
+syn keyword contextCommon greekAlphapsilitonos greekAlphapsilivaria greekAlphatonos greekAlphavaria greekAlphavrachy contained
+syn keyword contextCommon greekBeta greekChi greekCoronis greekDelta greekEpsilon contained
+syn keyword contextCommon greekEpsilondasia greekEpsilondasiatonos greekEpsilondasiavaria greekEpsilonpsili greekEpsilonpsilitonos contained
+syn keyword contextCommon greekEpsilonpsilivaria greekEpsilontonos greekEpsilonvaria greekEta greekEtadasia contained
+syn keyword contextCommon greekEtadasiaperispomeni greekEtadasiatonos greekEtadasiavaria greekEtaiotasub greekEtaiotasubdasia contained
+syn keyword contextCommon greekEtaiotasubdasiaperispomeni greekEtaiotasubdasiatonos greekEtaiotasubdasiavaria greekEtaiotasubpsili greekEtaiotasubpsiliperispomeni contained
+syn keyword contextCommon greekEtaiotasubpsilitonos greekEtaiotasubpsilivaria greekEtapsili greekEtapsiliperispomeni greekEtapsilitonos contained
+syn keyword contextCommon greekEtapsilivaria greekEtatonos greekEtavaria greekGamma greekIota contained
+syn keyword contextCommon greekIotadasia greekIotadasiaperispomeni greekIotadasiatonos greekIotadasiavaria greekIotadialytika contained
+syn keyword contextCommon greekIotamacron greekIotapsili greekIotapsiliperispomeni greekIotapsilitonos greekIotapsilivaria contained
+syn keyword contextCommon greekIotatonos greekIotavaria greekIotavrachy greekKappa greekLambda contained
+syn keyword contextCommon greekMu greekNu greekOmega greekOmegadasia greekOmegadasiaperispomeni contained
+syn keyword contextCommon greekOmegadasiatonos greekOmegadasiavaria greekOmegaiotasub greekOmegaiotasubdasia greekOmegaiotasubdasiaperispomeni contained
+syn keyword contextCommon greekOmegaiotasubdasiatonos greekOmegaiotasubdasiavaria greekOmegaiotasubpsili greekOmegaiotasubpsiliperispomeni greekOmegaiotasubpsilitonos contained
+syn keyword contextCommon greekOmegaiotasubpsilivaria greekOmegapsili greekOmegapsiliperispomeni greekOmegapsilitonos greekOmegapsilivaria contained
+syn keyword contextCommon greekOmegatonos greekOmegavaria greekOmicron greekOmicrondasia greekOmicrondasiatonos contained
+syn keyword contextCommon greekOmicrondasiavaria greekOmicronpsili greekOmicronpsilitonos greekOmicronpsilivaria greekOmicrontonos contained
+syn keyword contextCommon greekOmicronvaria greekPhi greekPi greekPsi greekRho contained
+syn keyword contextCommon greekRhodasia greekSigma greekSigmalunate greekTau greekTheta contained
+syn keyword contextCommon greekUpsilon greekUpsilondasia greekUpsilondasiaperispomeni greekUpsilondasiatonos greekUpsilondasiavaria contained
+syn keyword contextCommon greekUpsilondialytika greekUpsilonmacron greekUpsilontonos greekUpsilonvaria greekUpsilonvrachy contained
+syn keyword contextCommon greekXi greekZeta greekalpha greekalphadasia greekalphadasiaperispomeni contained
+syn keyword contextCommon greekalphadasiatonos greekalphadasiavaria greekalphaiotasub greekalphaiotasubdasia greekalphaiotasubdasiaperispomeni contained
+syn keyword contextCommon greekalphaiotasubdasiatonos greekalphaiotasubdasiavaria greekalphaiotasubperispomeni greekalphaiotasubpsili greekalphaiotasubpsiliperispomeni contained
+syn keyword contextCommon greekalphaiotasubpsilitonos greekalphaiotasubpsilivaria greekalphaiotasubtonos greekalphaiotasubvaria greekalphamacron contained
+syn keyword contextCommon greekalphaoxia greekalphaperispomeni greekalphapsili greekalphapsiliperispomeni greekalphapsilitonos contained
+syn keyword contextCommon greekalphapsilivaria greekalphatonos greekalphavaria greekalphavrachy greekbeta contained
+syn keyword contextCommon greekbetaalt greekchi greekdasia greekdasiaperispomeni greekdasiavaria contained
+syn keyword contextCommon greekdelta greekdialytikaperispomeni greekdialytikatonos greekdialytikavaria greekdigamma contained
+syn keyword contextCommon greekepsilon greekepsilonalt greekepsilondasia greekepsilondasiatonos greekepsilondasiavaria contained
+syn keyword contextCommon greekepsilonoxia greekepsilonpsili greekepsilonpsilitonos greekepsilonpsilivaria greekepsilontonos contained
+syn keyword contextCommon greekepsilonvaria greeketa greeketadasia greeketadasiaperispomeni greeketadasiatonos contained
+syn keyword contextCommon greeketadasiavaria greeketaiotasub greeketaiotasubdasia greeketaiotasubdasiaperispomeni greeketaiotasubdasiatonos contained
+syn keyword contextCommon greeketaiotasubdasiavaria greeketaiotasubperispomeni greeketaiotasubpsili greeketaiotasubpsiliperispomeni greeketaiotasubpsilitonos contained
+syn keyword contextCommon greeketaiotasubpsilivaria greeketaiotasubtonos greeketaiotasubvaria greeketaoxia greeketaperispomeni contained
+syn keyword contextCommon greeketapsili greeketapsiliperispomeni greeketapsilitonos greeketapsilivaria greeketatonos contained
+syn keyword contextCommon greeketavaria greekfinalsigma greekgamma greekiota greekiotadasia contained
+syn keyword contextCommon greekiotadasiaperispomeni greekiotadasiatonos greekiotadasiavaria greekiotadialytika greekiotadialytikaperispomeni contained
+syn keyword contextCommon greekiotadialytikatonos greekiotadialytikavaria greekiotamacron greekiotaoxia greekiotaperispomeni contained
+syn keyword contextCommon greekiotapsili greekiotapsiliperispomeni greekiotapsilitonos greekiotapsilivaria greekiotatonos contained
+syn keyword contextCommon greekiotavaria greekiotavrachy greekkappa greekkoppa greeklambda contained
+syn keyword contextCommon greekmu greeknu greeknumerals greeknumkoppa greekomega contained
+syn keyword contextCommon greekomegadasia greekomegadasiaperispomeni greekomegadasiatonos greekomegadasiavaria greekomegaiotasub contained
+syn keyword contextCommon greekomegaiotasubdasia greekomegaiotasubdasiaperispomeni greekomegaiotasubdasiatonos greekomegaiotasubdasiavaria greekomegaiotasubperispomeni contained
+syn keyword contextCommon greekomegaiotasubpsili greekomegaiotasubpsiliperispomeni greekomegaiotasubpsilitonos greekomegaiotasubpsilivaria greekomegaiotasubtonos contained
+syn keyword contextCommon greekomegaiotasubvaria greekomegaoxia greekomegaperispomeni greekomegapsili greekomegapsiliperispomeni contained
+syn keyword contextCommon greekomegapsilitonos greekomegapsilivaria greekomegatonos greekomegavaria greekomicron contained
+syn keyword contextCommon greekomicrondasia greekomicrondasiatonos greekomicrondasiavaria greekomicronoxia greekomicronpsili contained
+syn keyword contextCommon greekomicronpsilitonos greekomicronpsilivaria greekomicrontonos greekomicronvaria greekoxia contained
+syn keyword contextCommon greekperispomeni greekphi greekphialt greekpi greekpialt contained
+syn keyword contextCommon greekprosgegrammeni greekpsi greekpsili greekpsiliperispomeni greekpsilivaria contained
+syn keyword contextCommon greekrho greekrhoalt greekrhodasia greekrhopsili greeksampi contained
+syn keyword contextCommon greeksigma greeksigmalunate greekstigma greektau greektheta contained
+syn keyword contextCommon greekthetaalt greektonos greekupsilon greekupsilondasia greekupsilondasiaperispomeni contained
+syn keyword contextCommon greekupsilondasiatonos greekupsilondasiavaria greekupsilondiaeresis greekupsilondialytikaperispomeni greekupsilondialytikatonos contained
+syn keyword contextCommon greekupsilondialytikavaria greekupsilonmacron greekupsilonoxia greekupsilonperispomeni greekupsilonpsili contained
+syn keyword contextCommon greekupsilonpsiliperispomeni greekupsilonpsilitonos greekupsilonpsilivaria greekupsilontonos greekupsilonvaria contained
+syn keyword contextCommon greekupsilonvrachy greekvaria greekxi greekzeta grid contained
+syn keyword contextCommon gridsnapping groupedcommand gsetboxllx gsetboxlly gstroke contained
+syn keyword contextCommon gt gtrapprox gtrdot gtreqless gtreqqless contained
+syn keyword contextCommon gtrless gtrsim guilsingleleft guilsingleright gujaratinumerals contained
+syn keyword contextCommon gurmurkhinumerals hairline hairspace halflinestrut halfstrut contained
+syn keyword contextCommon halfwaybox handletokens handwritten hanging hangul contained
+syn keyword contextCommon hanzi hash hat hbar hbox contained
+syn keyword contextCommon hboxestohbox hboxofvbox hboxreference hboxregister hcaron contained
+syn keyword contextCommon hcircumflex hdofstring head headhbox headlanguage contained
+syn keyword contextCommon headnumber headnumbercontent headnumberdistance headnumberwidth headreferenceattributes contained
+syn keyword contextCommon headsetupspacing headtext headtextcontent headtextdistance headtexts contained
+syn keyword contextCommon headtextwidth headvbox headwidth heartsuit hebrewAlef contained
+syn keyword contextCommon hebrewAyin hebrewBet hebrewDalet hebrewGimel hebrewHe contained
+syn keyword contextCommon hebrewHet hebrewKaf hebrewKaffinal hebrewLamed hebrewMem contained
+syn keyword contextCommon hebrewMemfinal hebrewNun hebrewNunfinal hebrewPe hebrewPefinal contained
+syn keyword contextCommon hebrewQof hebrewResh hebrewSamekh hebrewShin hebrewTav contained
+syn keyword contextCommon hebrewTet hebrewTsadi hebrewTsadifinal hebrewVav hebrewYod contained
+syn keyword contextCommon hebrewZayin hebrewnumerals heightanddepthofstring heightofstring heightspanningtext contained
+syn keyword contextCommon helptext hexnumber hexstringtonumber hglue hiddenbar contained
+syn keyword contextCommon hiddencitation hiddencite hideblocks hiding high contained
+syn keyword contextCommon highlight highordinalstr hilo himilo hl contained
+syn keyword contextCommon hookleftarrow hookrightarrow horizontalgrowingbar horizontalpositionbar hpackbox contained
+syn keyword contextCommon hpackedbox hphantom hpos hsizefraction hslash contained
+syn keyword contextCommon hsmash hsmashbox hsmashed hspace hstroke contained
+syn keyword contextCommon htdpofstring htofstring hyphen hyphenatedcoloredword hyphenatedfile contained
+syn keyword contextCommon hyphenatedfilename hyphenatedhbox hyphenatedpar hyphenatedurl hyphenatedword contained
+syn keyword contextCommon hyphenation iacute ibox ibreve icaron contained
+syn keyword contextCommon icircumflex ideographichalffillspace ideographicspace idiaeresis idotaccent contained
+syn keyword contextCommon idotbelow idoublegrave idxfromluatable ifassignment iff contained
+syn keyword contextCommon ifinobject ifinoutputstream ifparameters iftrialtypesetting ignoreimplicitspaces contained
+syn keyword contextCommon ignoretagsinexport ignorevalue igrave ihook ii contained
+syn keyword contextCommon iiiint iiiintop iiint iiintop iint contained
+syn keyword contextCommon iintop iinvertedbreve ijligature imacron imaginaryi contained
+syn keyword contextCommon imaginaryj imath immediatesavetwopassdata impliedby implies contained
+syn keyword contextCommon imply in includemenu includesvgbuffer includesvgfile contained
+syn keyword contextCommon includeversioninfo increment incrementcounter incrementedcounter incrementpagenumber contained
+syn keyword contextCommon incrementsubpagenumber incrementvalue indentation indentedtext index contained
+syn keyword contextCommon infofont infofontbold inframed infty infull contained
+syn keyword contextCommon inheritparameter inhibitblank ininner ininneredge ininnermargin contained
+syn keyword contextCommon initializeboxstack inleft inleftedge inleftmargin inline contained
+syn keyword contextCommon inlinebuffer inlinedbox inlinemath inlinemathematics inlinemessage contained
+syn keyword contextCommon inlineordisplaymath inlineprettyprintbuffer inlinerange inmargin inmframed contained
+syn keyword contextCommon innerflushshapebox inother inouter inouteredge inoutermargin contained
+syn keyword contextCommon input inputfilebarename inputfilename inputfilerealsuffix inputfilesuffix contained
+syn keyword contextCommon inputgivenfile inright inrightedge inrightmargin insertpages contained
+syn keyword contextCommon inspectluatable installactionhandler installactivecharacter installanddefineactivecharacter installattributestack contained
+syn keyword contextCommon installautocommandhandler installautosetuphandler installbasicautosetuphandler installbasicparameterhandler installbottomframerenderer contained
+syn keyword contextCommon installcommandhandler installcorenamespace installctxfunction installctxscanner installdefinehandler contained
+syn keyword contextCommon installdefinitionset installdefinitionsetmember installdirectcommandhandler installdirectparameterhandler installdirectparametersethandler contained
+syn keyword contextCommon installdirectsetuphandler installdirectstyleandcolorhandler installframedautocommandhandler installframedcommandhandler installglobalmacrostack contained
+syn keyword contextCommon installlanguage installleftframerenderer installmacrostack installnamespace installoutputroutine contained
+syn keyword contextCommon installpagearrangement installparameterhandler installparameterhashhandler installparametersethandler installparentinjector contained
+syn keyword contextCommon installprotectedctxfunction installprotectedctxscanner installrightframerenderer installrootparameterhandler installsetuphandler contained
+syn keyword contextCommon installsetuponlycommandhandler installshipoutmethod installsimplecommandhandler installsimpleframedcommandhandler installstyleandcolorhandler contained
+syn keyword contextCommon installswitchcommandhandler installswitchsetuphandler installtexdirective installtextracker installtopframerenderer contained
+syn keyword contextCommon installunitsseparator installunitsspace installversioninfo int intclockwise contained
+syn keyword contextCommon integerrounding integers interaction interactionbar interactionbuttons contained
+syn keyword contextCommon interactionmenu intercal interface intermezzotext intertext contained
+syn keyword contextCommon interwordspaceafter interwordspacebefore interwordspaces interwordspacesafter interwordspacesbefore contained
+syn keyword contextCommon intop invisiblecomma invisibleplus invisibletimes invokepagehandler contained
+syn keyword contextCommon iogonek iota italic italicbold italiccorrection contained
+syn keyword contextCommon italicface item itemgroup itemgroupcolumns itemize contained
+syn keyword contextCommon items itemtag itilde jcaron jcircumflex contained
+syn keyword contextCommon ji jmath jobfilename jobfilesuffix kap contained
+syn keyword contextCommon kappa kcaron kcommaaccent keepblocks keeplinestogether contained
+syn keyword contextCommon keepunwantedspaces kerncharacters khook kkra knockout contained
+syn keyword contextCommon koreancirclenumerals koreannumerals koreannumeralsc koreannumeralsp koreanparentnumerals contained
+syn keyword contextCommon lVert labellanguage labeltext labeltexts lacute contained
+syn keyword contextCommon lambda lambdabar land langle language contained
+syn keyword contextCommon languageCharacters languagecharacters languagecharwidth laplace lastcounter contained
+syn keyword contextCommon lastcountervalue lastdigit lastlinewidth lastnaturalboxdp lastnaturalboxht contained
+syn keyword contextCommon lastnaturalboxwd lastparwrapper lastpredefinedsymbol lastrealpage lastrealpagenumber contained
+syn keyword contextCommon lastsubcountervalue lastsubpage lastsubpagenumber lasttwodigits lastuserpage contained
+syn keyword contextCommon lastuserpagenumber lateluacode latin layeredtext layerheight contained
+syn keyword contextCommon layerwidth layout lazysavetaggedtwopassdata lazysavetwopassdata lbar contained
+syn keyword contextCommon lbox lbrace lbracket lcaron lceil contained
+syn keyword contextCommon lchexnumber lchexnumbers lcommaaccent lcurl ldotmiddle contained
+syn keyword contextCommon ldotp ldots le leadsto left contained
+syn keyword contextCommon leftaligned leftarrow leftarrowtail leftarrowtriangle leftbottombox contained
+syn keyword contextCommon leftbox leftdasharrow leftguillemot leftharpoondown leftharpoonup contained
+syn keyword contextCommon lefthbox leftheadtext leftlabeltext leftleftarrows leftline contained
+syn keyword contextCommon leftmathlabeltext leftorrighthbox leftorrightvbox leftorrightvtop leftrightarrow contained
+syn keyword contextCommon leftrightarrows leftrightarrowtriangle leftrightharpoons leftrightsquigarrow leftskipadaption contained
+syn keyword contextCommon leftsquigarrow leftsubguillemot leftthreetimes lefttopbox lefttoright contained
+syn keyword contextCommon lefttorighthbox lefttorightvbox lefttorightvtop leftwavearrow leftwhitearrow contained
+syn keyword contextCommon legend leq leqq leqslant lessapprox contained
+syn keyword contextCommon lessdot lesseqgtr lesseqqgtr lessgtr lesssim contained
+syn keyword contextCommon letbeundefined letcatcodecommand letcscsname letcsnamecs letcsnamecsname contained
+syn keyword contextCommon letdummyparameter letempty letgvalue letgvalueempty letgvalurelax contained
+syn keyword contextCommon letterampersand letterat letterbackslash letterbar letterbgroup contained
+syn keyword contextCommon letterclosebrace lettercolon letterdollar letterdoublequote letteregroup contained
+syn keyword contextCommon letterescape letterexclamationmark letterhash letterhat letterleftbrace contained
+syn keyword contextCommon letterleftbracket letterleftparenthesis letterless lettermore letteropenbrace contained
+syn keyword contextCommon letterpercent letterquestionmark letterrightbrace letterrightbracket letterrightparenthesis contained
+syn keyword contextCommon lettersinglequote letterslash letterspacing lettertilde letterunderscore contained
+syn keyword contextCommon letvalue letvalueempty letvaluerelax lfence lfloor contained
+syn keyword contextCommon lgroup lhbox lhooknwarrow lhooksearrow limitatefirstline contained
+syn keyword contextCommon limitatelines limitatetext line linealignment linebox contained
+syn keyword contextCommon linecorrection linefeed linefiller linefillerhbox linefillervbox contained
+syn keyword contextCommon linefillervtop linenote linenumbering lines linespanningtext contained
+syn keyword contextCommon linetable linetablebody linetablecell linetablehead linethickness contained
+syn keyword contextCommon linterval listcitation listcite listlength listnamespaces contained
+syn keyword contextCommon literalmode ljligature ll llangle llap contained
+syn keyword contextCommon llbracket llcorner lll llless llointerval contained
+syn keyword contextCommon lmoustache lnapprox lneq lneqq lnot contained
+syn keyword contextCommon lnsim loadanyfile loadanyfileonce loadbtxdefinitionfile loadbtxreplacementfile contained
+syn keyword contextCommon loadcldfile loadcldfileonce loadfontgoodies loadluafile loadluafileonce contained
+syn keyword contextCommon loadspellchecklist loadtexfile loadtexfileonce loadtypescriptfile localfootnotes contained
+syn keyword contextCommon localframed localframedwithsettings localheadsetup localhsize locallinecorrection contained
+syn keyword contextCommon localnotes localpopbox localpopmacro localpushbox localpushmacro contained
+syn keyword contextCommon localsetups localundefine locatedfilepath locatefilepath locfilename contained
+syn keyword contextCommon logo lohi lointerval lomihi longleftarrow contained
+syn keyword contextCommon longleftrightarrow longmapsfrom longmapsto longrightarrow longrightsquigarrow contained
+syn keyword contextCommon looparrowleft looparrowright lor low lowerbox contained
+syn keyword contextCommon lowercased lowercasestring lowercasing lowerleftdoubleninequote lowerleftsingleninequote contained
+syn keyword contextCommon lowerrightdoubleninequote lowerrightsingleninequote lozenge lparent lrcorner contained
+syn keyword contextCommon lrointerval lrtbbox lstroke lt ltimes contained
+syn keyword contextCommon ltop ltrhbox ltrvbox ltrvtop lua contained
+syn keyword contextCommon luaTeX luacode luaconditional luaenvironment luaexpanded contained
+syn keyword contextCommon luaexpr luafunction luajitTeX luamajorversion luametaTeX contained
+syn keyword contextCommon luaminorversion luaparameterset luasetup luasetups luaversion contained
+syn keyword contextCommon lvert m mLeftarrow mLeftrightarrow mRightarrow contained
+syn keyword contextCommon mainlanguage makecharacteractive makerawcommalist makestrutofbox makeup contained
+syn keyword contextCommon maltese mapfontsize mapsdown mapsfrom mapsto contained
+syn keyword contextCommon mapsup marginblock margindata marginrule margintext contained
+syn keyword contextCommon markcontent markedcontent markedpages marking markinjector contained
+syn keyword contextCommon markpage markpages markreferencepage mat math contained
+syn keyword contextCommon mathalignment mathampersand mathbf mathbi mathblackboard contained
+syn keyword contextCommon mathbs mathcases mathdefault mathdollar mathdouble contained
+syn keyword contextCommon mathematics mathfraktur mathfunction mathhash mathhyphen contained
+syn keyword contextCommon mathit mathitalic mathlabellanguage mathlabeltext mathlabeltexts contained
+syn keyword contextCommon mathmatrix mathmode mathop mathover mathpercent contained
+syn keyword contextCommon mathrm mathscript mathsl mathss mathstyle contained
+syn keyword contextCommon mathtext mathtextbf mathtextbi mathtextbs mathtextit contained
+syn keyword contextCommon mathtextsl mathtexttf mathtf mathtriplet mathtt contained
+syn keyword contextCommon mathunder mathupright mathword mathwordbf mathwordbi contained
+syn keyword contextCommon mathwordbs mathwordit mathwordsl mathwordtf matrices contained
+syn keyword contextCommon matrix maxaligned mbox mcframed mdformula contained
+syn keyword contextCommon measure measured measuredangle measuredeq medskip contained
+syn keyword contextCommon medspace menubutton mequal message mfence contained
+syn keyword contextCommon mframed mfunction mfunctionlabeltext mhbox mho contained
+syn keyword contextCommon mhookleftarrow mhookrightarrow mid midaligned middle contained
+syn keyword contextCommon middlealigned middlebox middlemakeup midhbox midsubsentence contained
+syn keyword contextCommon minimalhbox minus minuscolon mirror mixedcaps contained
+syn keyword contextCommon mixedcolumns mkvibuffer mleftarrow mleftharpoondown mleftharpoonup contained
+syn keyword contextCommon mleftrightarrow mleftrightharpoons mmapsto mode models contained
+syn keyword contextCommon modeset module moduleparameter moduletestsection molecule contained
+syn keyword contextCommon mono monobold mononormal month monthlong contained
+syn keyword contextCommon monthshort mp mpformula mprandomnumber mrel contained
+syn keyword contextCommon mrightarrow mrightharpoondown mrightharpoonup mrightleftharpoons mrightoverleftarrow contained
+syn keyword contextCommon mtext mtriplerel mtwoheadleftarrow mtwoheadrightarrow mu contained
+syn keyword contextCommon multicolumns multimap nHdownarrow nHuparrow nLeftarrow contained
+syn keyword contextCommon nLeftrightarrow nRightarrow nVDash nVdash nVleftarrow contained
+syn keyword contextCommon nVleftrightarrow nVrightarrow nabla nacute namedheadnumber contained
+syn keyword contextCommon namedsection namedstructureheadlocation namedstructureuservariable namedstructurevariable namedsubformulas contained
+syn keyword contextCommon namedtaggedlabeltexts napostrophe napprox napproxEq narrow contained
+syn keyword contextCommon narrower narrownobreakspace nasymp natural naturalhbox contained
+syn keyword contextCommon naturalhpack naturalnumbers naturaltpack naturalvbox naturalvcenter contained
+syn keyword contextCommon naturalvpack naturalvtop naturalwd ncaron ncommaaccent contained
+syn keyword contextCommon ncong ncurl ndivides ne nearrow contained
+syn keyword contextCommon neg negatecolorbox negated negative negativesign contained
+syn keyword contextCommon negemspace negenspace negthinspace neng neq contained
+syn keyword contextCommon nequiv neswarrow newattribute newcatcodetable newcounter contained
+syn keyword contextCommon newevery newfrenchspacing newluatable newmode newsignal contained
+syn keyword contextCommon newsystemmode nexists nextbox nextboxdp nextboxht contained
+syn keyword contextCommon nextboxhtdp nextboxwd nextcounter nextcountervalue nextdepth contained
+syn keyword contextCommon nextparagraphs nextrealpage nextrealpagenumber nextsubcountervalue nextsubpage contained
+syn keyword contextCommon nextsubpagenumber nextuserpage nextuserpagenumber ngeq ngrave contained
+syn keyword contextCommon ngtr ngtrless ngtrsim ni nicelyfilledbox contained
+syn keyword contextCommon nihongo nin njligature nleftarrow nleftrightarrow contained
+syn keyword contextCommon nleq nless nlessgtr nlesssim nmid contained
+syn keyword contextCommon nni nobar nobreakspace nocap nocharacteralign contained
+syn keyword contextCommon nocitation nocite nodetostring noffigurepages noflines contained
+syn keyword contextCommon noflinesinbox noflocalfloats noheaderandfooterlines noheightstrut nohyphens contained
+syn keyword contextCommon noindentation nointerference noitem nonfrenchspacing nonmathematics contained
+syn keyword contextCommon nonvalidassignment normal normalboldface normalframedwithsettings normalitalicface contained
+syn keyword contextCommon normalizebodyfontsize normalizedfontsize normalizefontdepth normalizefontheight normalizefontline contained
+syn keyword contextCommon normalizefontwidth normalizetextdepth normalizetextheight normalizetextline normalizetextwidth contained
+syn keyword contextCommon normalslantedface normaltypeface nospace not notallmodes contained
+syn keyword contextCommon note notesymbol notext notin notmode contained
+syn keyword contextCommon notopandbottomlines notragged nowns nparallel nprec contained
+syn keyword contextCommon npreccurlyeq nrightarrow nsim nsimeq nsqsubseteq contained
+syn keyword contextCommon nsqsupseteq nsubset nsubseteq nsucc nsucccurlyeq contained
+syn keyword contextCommon nsupset nsupseteq ntilde ntimes ntriangleleft contained
+syn keyword contextCommon ntrianglelefteq ntriangleright ntrianglerighteq nu numberofpoints contained
+syn keyword contextCommon numbers nvDash nvdash nvleftarrow nvleftrightarrow contained
+syn keyword contextCommon nvrightarrow nwarrow nwsearrow oacute obeydepth contained
+syn keyword contextCommon objectdepth objectheight objectmargin objectwidth obox contained
+syn keyword contextCommon obreve ocaron ocircumflex ocircumflexacute ocircumflexdotbelow contained
+syn keyword contextCommon ocircumflexgrave ocircumflexhook ocircumflextilde octnumber octstringtonumber contained
+syn keyword contextCommon odiaeresis odiaeresismacron odot odotaccent odotaccentmacron contained
+syn keyword contextCommon odotbelow odoublegrave oeligature offset offsetbox contained
+syn keyword contextCommon ograve ohm ohook ohorn ohornacute contained
+syn keyword contextCommon ohorndotbelow ohorngrave ohornhook ohorntilde ohungarumlaut contained
+syn keyword contextCommon oiiint oiint oint ointclockwise ointctrclockwise contained
+syn keyword contextCommon oinvertedbreve omacron omega omicron ominus contained
+syn keyword contextCommon onedigitrounding oneeighth onefifth onehalf onequarter contained
+syn keyword contextCommon onesixth onesuperior onethird oogonek oogonekmacron contained
+syn keyword contextCommon operatorlanguage operatortext oplus opposite ordfeminine contained
+syn keyword contextCommon ordinaldaynumber ordinalstr ordmasculine ornamenttext oslash contained
+syn keyword contextCommon ostroke ostrokeacute otilde otildemacron otimes contained
+syn keyword contextCommon outputfilename outputstream outputstreambox outputstreamcopy outputstreamunvbox contained
+syn keyword contextCommon outputstreamunvcopy over overbar overbars overbartext contained
+syn keyword contextCommon overbarunderbar overbrace overbracetext overbraceunderbrace overbracket contained
+syn keyword contextCommon overbrackettext overbracketunderbracket overlay overlaybutton overlaycolor contained
+syn keyword contextCommon overlaydepth overlayfigure overlayheight overlayimage overlaylinecolor contained
+syn keyword contextCommon overlaylinewidth overlayoffset overlayrollbutton overlaywidth overleftarrow contained
+syn keyword contextCommon overleftharpoondown overleftharpoonup overleftrightarrow overloaderror overparent contained
+syn keyword contextCommon overparenttext overparentunderparent overprint overrightarrow overrightharpoondown contained
+syn keyword contextCommon overrightharpoonup overset overstrike overstrikes overtwoheadleftarrow contained
+syn keyword contextCommon overtwoheadrightarrow owns packed page pagearea contained
+syn keyword contextCommon pagebreak pagecolumns pagecomment pagefigure pageinjection contained
+syn keyword contextCommon pagelayout pagemakeup pagenumber pagereference pagestaterealpage contained
+syn keyword contextCommon pagestaterealpageorder paletsize par paragraph paragraphmark contained
+syn keyword contextCommon paragraphs paragraphscell parallel parbuilder part contained
+syn keyword contextCommon partial path pdfTeX pdfactualtext pdfbackendactualtext contained
+syn keyword contextCommon pdfbackendcurrentresources pdfbackendsetcatalog pdfbackendsetcolorspace pdfbackendsetextgstate pdfbackendsetinfo contained
+syn keyword contextCommon pdfbackendsetname pdfbackendsetpageattribute pdfbackendsetpageresource pdfbackendsetpagesattribute pdfbackendsetpattern contained
+syn keyword contextCommon pdfbackendsetshade pdfcolor pdfeTeX percent percentdimen contained
+syn keyword contextCommon periodcentered periods permitcaretescape permitcircumflexescape permitspacesbetweengroups contained
+syn keyword contextCommon perp persiandecimals persiandecimalseparator persiannumerals persianthousandsseparator contained
+syn keyword contextCommon perthousand phantom phantombox phi phook contained
+syn keyword contextCommon pi pickupgroupedcommand pitchfork placeattachments placebookmarks contained
+syn keyword contextCommon placebtxrendering placechemical placecitation placecombinedlist placecomments contained
+syn keyword contextCommon placecontent placecurrentformulanumber placedbox placefigure placefloat contained
+syn keyword contextCommon placefloatcaption placefloatwithsetups placefootnotes placeformula placeframed contained
+syn keyword contextCommon placegraphic placeheadnumber placeheadtext placehelp placeholder contained
+syn keyword contextCommon placeindex placeinitial placeintermezzo placelayer placelayeredtext contained
+syn keyword contextCommon placelegend placelist placelistofabbreviations placelistofchemicals placelistoffigures contained
+syn keyword contextCommon placelistofgraphics placelistofintermezzi placelistoflogos placelistofpublications placelistofsorts contained
+syn keyword contextCommon placelistofsynonyms placelistoftables placelocalfootnotes placelocalnotes placement contained
+syn keyword contextCommon placenamedfloat placenamedformula placenotes placeongrid placeontopofeachother contained
+syn keyword contextCommon placepagenumber placepairedbox placeparallel placerawheaddata placerawheadnumber contained
+syn keyword contextCommon placerawheadtext placerawlist placeregister placerenderingwindow placesidebyside contained
+syn keyword contextCommon placesubformula placetable pm popattribute popmacro contained
+syn keyword contextCommon popmode popsystemmode position positioning positionoverlay contained
+syn keyword contextCommon positionregionoverlay positive positivesign postponenotes postponing contained
+syn keyword contextCommon postponingnotes prec precapprox preccurlyeq preceq contained
+syn keyword contextCommon preceqq precnapprox precneq precneqq precnsim contained
+syn keyword contextCommon precsim predefinedfont predefinefont predefinesymbol prefixedpagenumber contained
+syn keyword contextCommon prefixlanguage prefixtext prependetoks prependgvalue prependtocommalist contained
+syn keyword contextCommon prependtoks prependtoksonce prependvalue prerollblank presetbtxlabeltext contained
+syn keyword contextCommon presetdocument presetfieldsymbols presetheadtext presetlabeltext presetmathlabeltext contained
+syn keyword contextCommon presetoperatortext presetprefixtext presetsuffixtext presettaglabeltext presetunittext contained
+syn keyword contextCommon pretocommalist prettyprintbuffer prevcounter prevcountervalue preventmode contained
+syn keyword contextCommon prevrealpage prevrealpagenumber prevsubcountervalue prevsubpage prevsubpagenumber contained
+syn keyword contextCommon prevuserpage prevuserpagenumber prime primes procent contained
+syn keyword contextCommon processMPbuffer processMPfigurefile processaction processallactionsinset processassignlist contained
+syn keyword contextCommon processassignmentcommand processassignmentlist processbetween processblocks processbodyfontenvironmentlist contained
+syn keyword contextCommon processcolorcomponents processcommacommand processcommalist processcommalistwithparameters processcontent contained
+syn keyword contextCommon processfile processfilemany processfilenone processfileonce processfirstactioninset contained
+syn keyword contextCommon processisolatedchars processisolatedwords processlinetablebuffer processlinetablefile processlist contained
+syn keyword contextCommon processmonth processranges processseparatedlist processtexbuffer processtokens contained
+syn keyword contextCommon processuntil processxtablebuffer processyear prod product contained
+syn keyword contextCommon profiledbox profilegivenbox program project propto contained
+syn keyword contextCommon protect protectedcolors pseudoMixedCapped pseudoSmallCapped pseudoSmallcapped contained
+syn keyword contextCommon pseudosmallcapped psi publication punctuation punctuationspace contained
+syn keyword contextCommon purenumber pushattribute pushbutton pushmacro pushmode contained
+syn keyword contextCommon pushoutputstream pushsystemmode putboxincache putnextboxincache qquad contained
+syn keyword contextCommon quad quadrupleprime quads quarterstrut questiondown contained
+syn keyword contextCommon questionedeq quitcommalist quitprevcommalist quittypescriptscanning quotation contained
+syn keyword contextCommon quote quotedbl quotedblbase quotedblleft quotedblright contained
+syn keyword contextCommon quoteleft quoteright quotesingle quotesinglebase rVert contained
+syn keyword contextCommon racute raggedbottom raggedcenter raggedleft raggedright contained
+syn keyword contextCommon raggedwidecenter raisebox randomized randomizetext randomnumber contained
+syn keyword contextCommon randomseed rangle rationals rawcounter rawcountervalue contained
+syn keyword contextCommon rawdate rawdoifelseinset rawdoifinset rawdoifinsetelse rawgetparameters contained
+syn keyword contextCommon rawprocessaction rawprocesscommacommand rawprocesscommalist rawsetups rawstructurelistuservariable contained
+syn keyword contextCommon rawsubcountervalue rbox rbrace rbracket rcaron contained
+syn keyword contextCommon rceil rcommaaccent rdoublegrave readfile readfixfile contained
+syn keyword contextCommon readingfile readjobfile readlocfile readsetfile readsysfile contained
+syn keyword contextCommon readtexfile readxmlfile realSmallCapped realSmallcapped realpagenumber contained
+syn keyword contextCommon reals realsmallcapped recursedepth recurselevel recursestring contained
+syn keyword contextCommon redoconvertfont ref reference referencecolumnnumber referencepagedetail contained
+syn keyword contextCommon referencepagestate referenceprefix referencerealpage referencesymbol referring contained
+syn keyword contextCommon regime registerattachment registerctxluafile registered registerexternalfigure contained
+syn keyword contextCommon registerfontclass registerhyphenationexception registerhyphenationpattern registermenubuttons registerparwrapper contained
+syn keyword contextCommon registerparwrapperreverse registersort registersynonym registerunit regular contained
+syn keyword contextCommon relatemarking relateparameterhandlers relaxvalueifundefined relbar remainingcharacters contained
+syn keyword contextCommon remark removebottomthings removedepth removefromcommalist removelastskip contained
+syn keyword contextCommon removelastspace removemarkedcontent removepunctuation removesubstring removetoks contained
+syn keyword contextCommon removeunwantedspaces repeathead replacefeature replaceincommalist replaceword contained
+syn keyword contextCommon rescan rescanwithsetup resetMPdrawing resetMPenvironment resetMPinstance contained
+syn keyword contextCommon resetallattributes resetandaddfeature resetbar resetboxesincache resetbreakpoints contained
+syn keyword contextCommon resetbuffer resetcharacteralign resetcharacterkerning resetcharacterspacing resetcharacterstripping contained
+syn keyword contextCommon resetcollector resetcounter resetctxscanner resetdigitsmanipulation resetdirection contained
+syn keyword contextCommon resetfeature resetflag resetfontcolorsheme resetfontfallback resetfontsolution contained
+syn keyword contextCommon resethyphenationfeatures resetinjector resetinteractionmenu resetitaliccorrection resetlayer contained
+syn keyword contextCommon resetlocalfloats resetmarker resetmarking resetmode resetpagenumber contained
+syn keyword contextCommon resetparallel resetpath resetpenalties resetperiodkerning resetprofile contained
+syn keyword contextCommon resetrecurselevel resetreference resetreplacements resetscript resetsetups contained
+syn keyword contextCommon resetshownsynonyms resetsubpagenumber resetsymbolset resetsystemmode resettimer contained
+syn keyword contextCommon resettokenlist resettrackers resettrialtypesetting resetusedsortings resetusedsynonyms contained
+syn keyword contextCommon resetuserpagenumber resetvalue resetvisualizers reshapebox resolvedglyphdirect contained
+syn keyword contextCommon resolvedglyphstyled restartcounter restorebox restorecatcodes restorecounter contained
+syn keyword contextCommon restorecurrentattributes restoreendofline restoreglobalbodyfont restriction retestfeature contained
+syn keyword contextCommon reusableMPgraphic reuseMPgraphic reuserandomseed reverseddoubleprime reversedprime contained
+syn keyword contextCommon reversedtripleprime reversehbox reversehpack reversetpack reversevbox contained
+syn keyword contextCommon reversevboxcontent reversevpack reversevtop revivefeature rfence contained
+syn keyword contextCommon rfloor rgroup rhbox rho rhooknearrow contained
+syn keyword contextCommon rhookswarrow right rightaligned rightangle rightarrow contained
+syn keyword contextCommon rightarrowbar rightarrowtail rightarrowtriangle rightbottombox rightbox contained
+syn keyword contextCommon rightdasharrow rightguillemot rightharpoondown rightharpoonup righthbox contained
+syn keyword contextCommon rightheadtext rightlabeltext rightleftarrows rightleftharpoons rightline contained
+syn keyword contextCommon rightmathlabeltext rightorleftpageaction rightpageorder rightrightarrows rightskipadaption contained
+syn keyword contextCommon rightsquigarrow rightsubguillemot rightthreearrows rightthreetimes righttoleft contained
+syn keyword contextCommon righttolefthbox righttoleftvbox righttoleftvtop righttopbox rightwavearrow contained
+syn keyword contextCommon rightwhitearrow ring rinterval rinvertedbreve risingdotseq contained
+syn keyword contextCommon rlap rlointerval rmoustache rneq robustaddtocommalist contained
+syn keyword contextCommon robustdoifelseinset robustdoifinsetelse robustpretocommalist rointerval rollbutton contained
+syn keyword contextCommon roman romanC romanD romanI romanII contained
+syn keyword contextCommon romanIII romanIV romanIX romanL romanM contained
+syn keyword contextCommon romanV romanVI romanVII romanVIII romanX contained
+syn keyword contextCommon romanXI romanXII romanc romand romani contained
+syn keyword contextCommon romanii romaniii romaniv romanix romanl contained
+syn keyword contextCommon romanm romannumerals romanv romanvi romanvii contained
+syn keyword contextCommon romanviii romanx romanxi romanxii rootradical contained
+syn keyword contextCommon rotate rparent rrangle rrbracket rrointerval contained
+syn keyword contextCommon rtimes rtlhbox rtlvbox rtlvtop rtop contained
+syn keyword contextCommon ruby ruledhbox ruledhpack ruledmbox ruledtopv contained
+syn keyword contextCommon ruledtpack ruledvbox ruledvpack ruledvtop runMPbuffer contained
+syn keyword contextCommon runninghbox russianNumerals russiannumerals rvert sacute contained
+syn keyword contextCommon safechar samplefile sans sansbold sansnormal contained
+syn keyword contextCommon sansserif savebox savebtxdataset savebuffer savecounter contained
+syn keyword contextCommon savecurrentattributes savenormalmeaning savetaggedtwopassdata savetwopassdata sbox contained
+syn keyword contextCommon scale scaron scedilla schwa schwahook contained
+syn keyword contextCommon scircumflex scommaaccent screen script sdformula contained
+syn keyword contextCommon searrow secondoffivearguments secondoffourarguments secondofsixarguments secondofthreearguments contained
+syn keyword contextCommon secondofthreeunexpanded secondoftwoarguments secondoftwounexpanded section sectionblock contained
+syn keyword contextCommon sectionblockenvironment sectionlevel sectionmark seeindex select contained
+syn keyword contextCommon selectblocks serializecommalist serializedcommalist serif serifbold contained
+syn keyword contextCommon serifnormal setJSpreamble setMPlayer setMPpositiongraphic setMPpositiongraphicrange contained
+syn keyword contextCommon setMPtext setMPvariable setMPvariables setautopagestaterealpageno setbar contained
+syn keyword contextCommon setbigbodyfont setboxllx setboxlly setbreakpoints setcapstrut contained
+syn keyword contextCommon setcatcodetable setcharacteralign setcharacteraligndetail setcharactercasing setcharactercleaning contained
+syn keyword contextCommon setcharacterkerning setcharacterspacing setcharacterstripping setcharstrut setcollector contained
+syn keyword contextCommon setcolormodell setcounter setcounterown setctxluafunction setcurrentfontclass contained
+syn keyword contextCommon setdataset setdatavalue setdefaultpenalties setdigitsmanipulation setdirection contained
+syn keyword contextCommon setdocumentargument setdocumentargumentdefault setdocumentfilename setdummyparameter setelementexporttag contained
+syn keyword contextCommon setemeasure setevalue setevariable setevariables setexpansion contained
+syn keyword contextCommon setfirstline setfirstpasscharacteralign setflag setfont setfontcolorsheme contained
+syn keyword contextCommon setfontfeature setfontsolution setfontstrut setfractions setglobalscript contained
+syn keyword contextCommon setgmeasure setgvalue setgvariable setgvariables sethboxregister contained
+syn keyword contextCommon sethyphenatedurlafter sethyphenatedurlbefore sethyphenatedurlnormal sethyphenationfeatures setinitial contained
+syn keyword contextCommon setinjector setinteraction setinterfacecommand setinterfaceconstant setinterfaceelement contained
+syn keyword contextCommon setinterfacemessage setinterfacevariable setinternalrendering setitaliccorrection setlayer contained
+syn keyword contextCommon setlayerframed setlayertext setlinefiller setlocalhsize setlocalscript contained
+syn keyword contextCommon setluatable setmainbodyfont setmainparbuilder setmarker setmarking contained
+syn keyword contextCommon setmathstyle setmeasure setmessagetext setminus setmode contained
+syn keyword contextCommon setnostrut setnote setnotetext setobject setoldstyle contained
+syn keyword contextCommon setpagereference setpagestate setpagestaterealpageno setparagraphfreezing setpenalties contained
+syn keyword contextCommon setpercentdimen setperiodkerning setposition setpositionbox setpositiondata contained
+syn keyword contextCommon setpositiondataplus setpositiononly setpositionplus setpositionstrut setprofile contained
+syn keyword contextCommon setrandomseed setreference setreferencedobject setregisterentry setreplacements contained
+syn keyword contextCommon setrigidcolumnbalance setrigidcolumnhsize setscript setsecondpasscharacteralign setsectionblock contained
+syn keyword contextCommon setsimplecolumnshsize setsmallbodyfont setsmallcaps setstackbox setstructurepageregister contained
+syn keyword contextCommon setstrut setsuperiors setsystemmode settabular settaggedmetadata contained
+syn keyword contextCommon settestcrlf settextcontent settightobject settightreferencedobject settightstrut contained
+syn keyword contextCommon settightunreferencedobject settokenlist settrialtypesetting setuevalue setugvalue contained
+syn keyword contextCommon setunreferencedobject setup setupMPgraphics setupMPinstance setupMPpage contained
+syn keyword contextCommon setupMPvariables setupTABLE setupTEXpage setupalign setupalternativestyles contained
+syn keyword contextCommon setuparranging setupattachment setupattachments setupbackend setupbackground contained
+syn keyword contextCommon setupbackgrounds setupbar setupbars setupblackrules setupblank contained
+syn keyword contextCommon setupbleeding setupblock setupbodyfont setupbodyfontenvironment setupbookmark contained
+syn keyword contextCommon setupbottom setupbottomtexts setupbtx setupbtxdataset setupbtxlabeltext contained
+syn keyword contextCommon setupbtxlist setupbtxregister setupbtxrendering setupbuffer setupbutton contained
+syn keyword contextCommon setupcapitals setupcaption setupcaptions setupcharacteralign setupcharacterkerning contained
+syn keyword contextCommon setupcharacterspacing setupchemical setupchemicalframed setupclipping setupcollector contained
+syn keyword contextCommon setupcolor setupcolors setupcolumns setupcolumnset setupcolumnsetarea contained
+syn keyword contextCommon setupcolumnsetareatext setupcolumnsetlines setupcolumnsetspan setupcolumnsetstart setupcombination contained
+syn keyword contextCommon setupcombinedlist setupcomment setupcontent setupcounter setupdataset contained
+syn keyword contextCommon setupdelimitedtext setupdescription setupdescriptions setupdirections setupdocument contained
+syn keyword contextCommon setupeffect setupenumeration setupenumerations setupenv setupexpansion contained
+syn keyword contextCommon setupexport setupexternalfigure setupexternalfigures setupexternalsoundtracks setupfacingfloat contained
+syn keyword contextCommon setupfield setupfieldbody setupfieldcategory setupfieldcontentframed setupfieldlabelframed contained
+syn keyword contextCommon setupfields setupfieldtotalframed setupfiller setupfillinlines setupfillinrules contained
+syn keyword contextCommon setupfirstline setupfittingpage setupfloat setupfloatframed setupfloats contained
+syn keyword contextCommon setupfloatsplitting setupfontexpansion setupfontprotrusion setupfonts setupfontsolution contained
+syn keyword contextCommon setupfooter setupfootertexts setupfootnotes setupforms setupformula contained
+syn keyword contextCommon setupformulae setupformulaframed setupframed setupframedcontent setupframedtable contained
+syn keyword contextCommon setupframedtablecolumn setupframedtablerow setupframedtext setupframedtexts setupglobalreferenceprefix contained
+syn keyword contextCommon setuphead setupheadalternative setupheader setupheadertexts setupheadnumber contained
+syn keyword contextCommon setupheads setupheadtext setuphelp setuphigh setuphighlight contained
+syn keyword contextCommon setuphyphenation setuphyphenmark setupindentedtext setupindenting setupindex contained
+syn keyword contextCommon setupinitial setupinsertion setupinteraction setupinteractionbar setupinteractionmenu contained
+syn keyword contextCommon setupinteractionscreen setupinterlinespace setupitaliccorrection setupitemgroup setupitemizations contained
+syn keyword contextCommon setupitemize setupitems setuplabel setuplabeltext setuplanguage contained
+syn keyword contextCommon setuplayer setuplayeredtext setuplayout setuplayouttext setuplegend contained
+syn keyword contextCommon setuplinefiller setuplinefillers setuplinenote setuplinenumbering setuplines contained
+syn keyword contextCommon setuplinetable setuplinewidth setuplist setuplistalternative setuplistextra contained
+syn keyword contextCommon setuplocalfloats setuplocalinterlinespace setuplow setuplowhigh setuplowmidhigh contained
+syn keyword contextCommon setupmakeup setupmarginblock setupmargindata setupmarginframed setupmarginrule contained
+syn keyword contextCommon setupmarginrules setupmarking setupmathalignment setupmathcases setupmathematics contained
+syn keyword contextCommon setupmathfence setupmathfraction setupmathfractions setupmathframed setupmathlabeltext contained
+syn keyword contextCommon setupmathmatrix setupmathornament setupmathradical setupmathstackers setupmathstyle contained
+syn keyword contextCommon setupmixedcolumns setupmodule setupmulticolumns setupnarrower setupnotation contained
+syn keyword contextCommon setupnotations setupnote setupnotes setupoffset setupoffsetbox contained
+syn keyword contextCommon setupoperatortext setupoppositeplacing setuporientation setupoutput setupoutputroutine contained
+syn keyword contextCommon setuppagechecker setuppagecolumns setuppagecomment setuppageinjection setuppageinjectionalternative contained
+syn keyword contextCommon setuppagenumber setuppagenumbering setuppageshift setuppagestate setuppagetransitions contained
+syn keyword contextCommon setuppairedbox setuppalet setuppaper setuppapersize setupparagraph contained
+syn keyword contextCommon setupparagraphintro setupparagraphnumbering setupparagraphs setupparallel setupperiodkerning contained
+syn keyword contextCommon setupperiods setupplaceholder setupplacement setuppositionbar setuppositioning contained
+syn keyword contextCommon setupprefixtext setupprocessor setupprofile setupprograms setupquotation contained
+syn keyword contextCommon setupquote setuprealpagenumber setupreferenceformat setupreferenceprefix setupreferencestructureprefix contained
+syn keyword contextCommon setupreferencing setupregister setupregisters setuprenderingwindow setuprotate contained
+syn keyword contextCommon setupruby setups setupscale setupscript setupscripts contained
+syn keyword contextCommon setupsectionblock setupselector setupshift setupsidebar setupsorting contained
+syn keyword contextCommon setupspacing setupspellchecking setupstartstop setupstretched setupstrut contained
+syn keyword contextCommon setupstyle setupsubformula setupsubformulas setupsubpagenumber setupsuffixtext contained
+syn keyword contextCommon setupsymbols setupsymbolset setupsynctex setupsynonyms setupsystem contained
+syn keyword contextCommon setuptables setuptabulate setuptagging setuptaglabeltext setuptext contained
+syn keyword contextCommon setuptextbackground setuptextflow setuptextnote setuptextrules setuptexttexts contained
+syn keyword contextCommon setupthinrules setuptolerance setuptooltip setuptop setuptoptexts contained
+syn keyword contextCommon setuptype setuptyping setupunit setupunittext setupurl contained
+syn keyword contextCommon setupuserdata setupuserdataalternative setupuserpagenumber setupversion setupviewerlayer contained
+syn keyword contextCommon setupvspacing setupwhitespace setupwithargument setupwithargumentswapped setupxml contained
+syn keyword contextCommon setupxtable setuvalue setuxvalue setvalue setvariable contained
+syn keyword contextCommon setvariables setvboxregister setvisualizerfont setvtopregister setwidthof contained
+syn keyword contextCommon setxmeasure setxvalue setxvariable setxvariables seveneighths contained
+syn keyword contextCommon sfrac shapebox shapedhbox sharp shift contained
+syn keyword contextCommon shiftbox shiftdown shiftup showallmakeup showattributes contained
+syn keyword contextCommon showbodyfont showbodyfontenvironment showboxes showbtxdatasetauthors showbtxdatasetcompleteness contained
+syn keyword contextCommon showbtxdatasetfields showbtxfields showbtxhashedauthors showbtxtables showchardata contained
+syn keyword contextCommon showcharratio showcolor showcolorbar showcolorcomponents showcolorgroup contained
+syn keyword contextCommon showcolorset showcolorstruts showcounter showdirectives showdirsinmargin contained
+syn keyword contextCommon showedebuginfo showexperiments showfont showfontdata showfontexpansion contained
+syn keyword contextCommon showfontitalics showfontkerns showfontparameters showfontstrip showfontstyle contained
+syn keyword contextCommon showframe showglyphdata showglyphs showgrid showgridsnapping contained
+syn keyword contextCommon showhelp showhyphenationtrace showhyphens showinjector showjustification contained
+syn keyword contextCommon showkerning showlayout showlayoutcomponents showligature showligatures contained
+syn keyword contextCommon showlogcategories showluatables showmakeup showmargins showmessage contained
+syn keyword contextCommon showminimalbaseline shownextbox showotfcomposition showpalet showparentchain contained
+syn keyword contextCommon showparwrapperstate showprint showsetups showsetupsdefinition showstruts contained
+syn keyword contextCommon showsymbolset showtimer showtokens showtrackers showvalue contained
+syn keyword contextCommon showvariable showwarning sidebar sigma signalrightpage contained
+syn keyword contextCommon sim simeq simplealignedbox simplealignedboxplus simplealignedspreadbox contained
+syn keyword contextCommon simplecolumns simplegroupedcommand simplereversealignedbox simplereversealignedboxplus singalcharacteralign contained
+syn keyword contextCommon singlebond singleverticalbar sixperemspace sixthofsixarguments slanted contained
+syn keyword contextCommon slantedbold slantedface slash slicepages slong contained
+syn keyword contextCommon slovenianNumerals sloveniannumerals small smallbodyfont smallbold contained
+syn keyword contextCommon smallbolditalic smallboldslanted smallcappedcharacters smallcappedromannumerals smallcaps contained
+syn keyword contextCommon smaller smallitalicbold smallnormal smallskip smallslanted contained
+syn keyword contextCommon smallslantedbold smalltype smash smashbox smashboxed contained
+syn keyword contextCommon smashedhbox smashedvbox smile snaptogrid softhyphen contained
+syn keyword contextCommon solidus someheadnumber somekindoftab someline somelocalfloat contained
+syn keyword contextCommon somenamedheadnumber someplace somewhere space spaceddigits contained
+syn keyword contextCommon spaceddigitsmethod spaceddigitsseparator spaceddigitssymbol spadesuit spanishNumerals contained
+syn keyword contextCommon spanishnumerals specialitem speech spformula sphericalangle contained
+syn keyword contextCommon splitatasterisk splitatcolon splitatcolons splitatcomma splitatperiod contained
+syn keyword contextCommon splitdfrac splitfilename splitfloat splitformula splitfrac contained
+syn keyword contextCommon splitoffbase splitofffull splitoffkind splitoffname splitoffpath contained
+syn keyword contextCommon splitoffroot splitofftokens splitofftype splitstring splittext contained
+syn keyword contextCommon spread spreadhbox sqcap sqcup sqrt contained
+syn keyword contextCommon sqsubset sqsubseteq sqsubsetneq sqsupset sqsupseteq contained
+syn keyword contextCommon sqsupsetneq square squaredots ssharp stackrel contained
+syn keyword contextCommon stackscripts standardmakeup star stareq startline contained
+syn keyword contextCommon startlinenote startregister startstructurepageregister staticMPfigure staticMPgraphic contained
+syn keyword contextCommon stligature stopline stoplinenote stretched strictdoifelsenextoptional contained
+syn keyword contextCommon strictdoifnextoptionalelse strictinspectnextcharacter stripcharacter strippedcsname stripspaces contained
+syn keyword contextCommon structurelistuservariable structurenumber structuretitle structureuservariable structurevariable contained
+syn keyword contextCommon strut strutdp strutgap strutht struthtdp contained
+syn keyword contextCommon struttedbox strutwd style styleinstance subformulas contained
+syn keyword contextCommon subject subjectlevel subpagenumber subsection subsentence contained
+syn keyword contextCommon subset subseteq subseteqq subsetneq subsetneqq contained
+syn keyword contextCommon substack substituteincommalist subsubject subsubsection subsubsubject contained
+syn keyword contextCommon subsubsubsection subsubsubsubject subsubsubsubsection subsubsubsubsubject subtractfeature contained
+syn keyword contextCommon succ succapprox succcurlyeq succeq succeqq contained
+syn keyword contextCommon succnapprox succneq succneqq succnsim succsim contained
+syn keyword contextCommon suffixlanguage suffixtext sum supset supseteq contained
+syn keyword contextCommon supseteqq supsetneq supsetneqq surd surdradical contained
+syn keyword contextCommon swapcounts swapdimens swapface swapmacros swaptypeface contained
+syn keyword contextCommon swarrow switchstyleonly switchtobodyfont switchtocolor switchtointerlinespace contained
+syn keyword contextCommon symbol symbolreference symbolset synchronizeblank synchronizeindenting contained
+syn keyword contextCommon synchronizemarking synchronizeoutputstreams synchronizestrut synchronizewhitespace synctexblockfilename contained
+syn keyword contextCommon synctexresetfilename synctexsetfilename systemlog systemlogfirst systemloglast contained
+syn keyword contextCommon systemsetups tLeftarrow tLeftrightarrow tRightarrow table contained
+syn keyword contextCommon tablehead tables tabletail tabletext tabulate contained
+syn keyword contextCommon tabulateautoline tabulateautorule tabulatehead tabulateline tabulaterule contained
+syn keyword contextCommon tabulatetail tagged taggedctxcommand taggedlabeltexts taglabellanguage contained
+syn keyword contextCommon taglabeltext tau tbinom tbox tcaron contained
+syn keyword contextCommon tcedilla tcommaaccent tcurl tequal test contained
+syn keyword contextCommon testandsplitstring testcolumn testfeature testfeatureonce testpage contained
+syn keyword contextCommon testpageonly testpagesync testtokens tex texcode contained
+syn keyword contextCommon texdefinition texsetup text textAngstrom textacute contained
+syn keyword contextCommon textampersand textasciicircum textasciitilde textat textbackground contained
+syn keyword contextCommon textbackgroundmanual textbackslash textbar textbottomcomma textbottomdot contained
+syn keyword contextCommon textbraceleft textbraceright textbreve textbrokenbar textbullet contained
+syn keyword contextCommon textcaron textcedilla textcelsius textcent textcircledP contained
+syn keyword contextCommon textcircumflex textcitation textcite textcolor textcolorintent contained
+syn keyword contextCommon textcomma textcontrolspace textcurrency textdag textddag contained
+syn keyword contextCommon textdegree textdiaeresis textdiv textdollar textdong contained
+syn keyword contextCommon textdotaccent textellipsis texteuro textflow textflowcollector contained
+syn keyword contextCommon textfraction textgrave texthash texthorizontalbar texthungarumlaut contained
+syn keyword contextCommon texthyphen textkelvin textlognot textmacron textmakeup contained
+syn keyword contextCommon textmath textmho textminus textmp textmu contained
+syn keyword contextCommon textmultiply textnumero textogonek textohm textormathchar contained
+syn keyword contextCommon textormathchars textounce textpercent textperiod textplus contained
+syn keyword contextCommon textpm textreference textring textrule textslash contained
+syn keyword contextCommon textsterling texttilde textunderscore textvisiblespace textyen contained
+syn keyword contextCommon thai thainumerals thedatavalue thefirstcharacter thematrix contained
+syn keyword contextCommon thenormalizedbodyfontsize theorientation therefore theremainingcharacters theta contained
+syn keyword contextCommon thickspace thinrule thinrules thinspace thirdoffivearguments contained
+syn keyword contextCommon thirdoffourarguments thirdofsixarguments thirdofthreearguments thirdofthreeunexpanded thook contained
+syn keyword contextCommon thookleftarrow thookrightarrow thorn threedigitrounding threeeighths contained
+syn keyword contextCommon threefifths threeperemspace threequarter threesuperior tibetannumerals contained
+syn keyword contextCommon tightlayer tilde times tinyfont title contained
+syn keyword contextCommon tlap tleftarrow tleftharpoondown tleftharpoonup tleftrightarrow contained
+syn keyword contextCommon tleftrightharpoons tmapsto to tochar tokenlist contained
+syn keyword contextCommon tokens tolinenote tooltip top topbox contained
+syn keyword contextCommon topleftbox toplinebox toprightbox topskippedbox tracecatcodetables contained
+syn keyword contextCommon tracedfontname tracedpagestate traceoutputroutines tracepositions trademark contained
+syn keyword contextCommon translate transparencycomponents transparent[] trel triangle contained
+syn keyword contextCommon triangledown triangleleft triangleq triangleright trightarrow contained
+syn keyword contextCommon trightharpoondown trightharpoonup trightleftharpoons trightoverleftarrow triplebond contained
+syn keyword contextCommon tripleprime tripleverticalbar truefilename truefontname tstroke contained
+syn keyword contextCommon ttraggedright ttriplerel ttwoheadleftarrow ttwoheadrightarrow turnediota contained
+syn keyword contextCommon twodigitrounding twofifths twoheaddownarrow twoheadleftarrow twoheadrightarrow contained
+syn keyword contextCommon twoheadrightarrowtail twoheaduparrow twosuperior twothirds tx contained
+syn keyword contextCommon txx typ type typebuffer typedefinedbuffer contained
+syn keyword contextCommon typeface typefile typeinlinebuffer typescript typescriptcollection contained
+syn keyword contextCommon typescriptone typescriptprefix typescriptthree typescripttwo typesetbuffer contained
+syn keyword contextCommon typesetbufferonly typesetfile typing uacute ubreve contained
+syn keyword contextCommon ucaron uchexnumber uchexnumbers ucircumflex uconvertnumber contained
+syn keyword contextCommon udiaeresis udiaeresisacute udiaeresiscaron udiaeresisgrave udiaeresismacron contained
+syn keyword contextCommon udotbelow udots udoublegrave uedcatcodecommand ugrave contained
+syn keyword contextCommon uhook uhorn uhornacute uhorndotbelow uhorngrave contained
+syn keyword contextCommon uhornhook uhorntilde uhungarumlaut uinvertedbreve ulcorner contained
+syn keyword contextCommon umacron undefinevalue undepthed underbar underbars contained
+syn keyword contextCommon underbartext underbrace underbracetext underbracket underbrackettext contained
+syn keyword contextCommon underdash underdashes underdot underdots underleftarrow contained
+syn keyword contextCommon underleftharpoondown underleftharpoonup underleftrightarrow underparent underparenttext contained
+syn keyword contextCommon underrandom underrandoms underrightarrow underrightharpoondown underrightharpoonup contained
+syn keyword contextCommon underset understrike understrikes undertwoheadleftarrow undertwoheadrightarrow contained
+syn keyword contextCommon undoassign unexpandeddocumentvariable unframed unhhbox unihex contained
+syn keyword contextCommon uniqueMPgraphic uniqueMPpagegraphic unit unitlanguage unitshigh contained
+syn keyword contextCommon unitslow unittext unknown unpacked unprotected contained
+syn keyword contextCommon unregisterhyphenationpattern unregisterparwrapper unspaceafter unspaceargument unspaced contained
+syn keyword contextCommon unspacestring unstackscripts untexargument untexcommand uogonek contained
+syn keyword contextCommon upand uparrow updasharrow updateparagraphdemerits updateparagraphpenalties contained
+syn keyword contextCommon updateparagraphproperties updateparagraphshapes updownarrow updownarrowbar updownarrows contained
+syn keyword contextCommon upharpoonleft upharpoonright uplus uppercased uppercasestring contained
+syn keyword contextCommon uppercasing upperleftdoubleninequote upperleftdoublesixquote upperleftsingleninequote upperleftsinglesixquote contained
+syn keyword contextCommon upperrightdoubleninequote upperrightdoublesixquote upperrightsingleninequote upperrightsinglesixquote upsilon contained
+syn keyword contextCommon upuparrows upwhitearrow urcorner uring url contained
+syn keyword contextCommon usableMPgraphic useJSscripts useMPenvironmentbuffer useMPgraphic useMPlibrary contained
+syn keyword contextCommon useMPrun useMPvariables useURL usealignparameter useblankparameter contained
+syn keyword contextCommon useblocks usebodyfont usebodyfontparameter usebtxdataset usebtxdefinitions contained
+syn keyword contextCommon usecitation usecolors usecomponent usedirectory usedummycolorparameter contained
+syn keyword contextCommon usedummystyleandcolor usedummystyleparameter useenvironment useexternaldocument useexternalfigure contained
+syn keyword contextCommon useexternalrendering useexternalsoundtrack usefigurebase usefile usefontpath contained
+syn keyword contextCommon usegridparameter usehyphensparameter useindentingparameter useindentnextparameter useinterlinespaceparameter contained
+syn keyword contextCommon uselanguageparameter useluamodule useluatable usemathstyleparameter usemodule contained
+syn keyword contextCommon useproduct useprofileparameter useproject userdata usereferenceparameter contained
+syn keyword contextCommon userpagenumber usesetupsparameter usestaticMPfigure usesubpath usesymbols contained
+syn keyword contextCommon usetexmodule usetypescript usetypescriptfile useurl usezipfile contained
+syn keyword contextCommon usingbtxspecification utfchar utflower utfupper utilde contained
+syn keyword contextCommon utilityregisterlength vDash validassignment varTheta varepsilon contained
+syn keyword contextCommon varkappa varnothing varphi varpi varrho contained
+syn keyword contextCommon varsigma vartheta vbox vboxreference vboxregister contained
+syn keyword contextCommon vboxtohbox vboxtohboxseparator vdash vdots vec contained
+syn keyword contextCommon vee veebar veeeq verbatim verbatimstring contained
+syn keyword contextCommon verbosenumber version vert verticalgrowingbar verticalpositionbar contained
+syn keyword contextCommon veryraggedcenter veryraggedleft veryraggedright vglue viewerlayer contained
+syn keyword contextCommon vl vpackbox vpackedbox vphantom vpos contained
+syn keyword contextCommon vsmash vsmashbox vsmashed vspace vspacing contained
+syn keyword contextCommon vtop vtopregister wcircumflex wdofstring wedge contained
+syn keyword contextCommon wedgeeq weekday whitearrowupfrombar widegrave widehat contained
+syn keyword contextCommon widetilde widthofstring widthspanningtext withoutpt word contained
+syn keyword contextCommon wordright words wordtonumber wp wr contained
+syn keyword contextCommon writebetweenlist writedatatolist writestatus writetolist xLeftarrow contained
+syn keyword contextCommon xLeftrightarrow xRightarrow xcell xcellgroup xcolumn contained
+syn keyword contextCommon xdefconvertedargument xequal xfrac xgroup xhookleftarrow contained
+syn keyword contextCommon xhookrightarrow xi xleftarrow xleftharpoondown xleftharpoonup contained
+syn keyword contextCommon xleftrightarrow xleftrightharpoons xmapsto xmladdindex xmlafterdocumentsetup contained
+syn keyword contextCommon xmlaftersetup xmlall xmlappenddocumentsetup xmlappendsetup xmlapplyselectors contained
+syn keyword contextCommon xmlatt xmlattdef xmlattribute xmlattributedef xmlbadinclusions contained
+syn keyword contextCommon xmlbeforedocumentsetup xmlbeforesetup xmlchainatt xmlchainattdef xmlchecknamespace contained
+syn keyword contextCommon xmlcommand xmlconcat xmlconcatrange xmlcontext xmlcount contained
+syn keyword contextCommon xmldefaulttotext xmldepth xmldirectives xmldirectivesafter xmldirectivesbefore contained
+syn keyword contextCommon xmldisplayverbatim xmldoif xmldoifatt xmldoifelse xmldoifelseatt contained
+syn keyword contextCommon xmldoifelseempty xmldoifelseselfempty xmldoifelsetext xmldoifelsevalue xmldoifnot contained
+syn keyword contextCommon xmldoifnotatt xmldoifnotselfempty xmldoifnottext xmldoifselfempty xmldoiftext contained
+syn keyword contextCommon xmlelement xmlfilter xmlfirst xmlflush xmlflushcontext contained
+syn keyword contextCommon xmlflushdocumentsetups xmlflushlinewise xmlflushpure xmlflushspacewise xmlflushtext contained
+syn keyword contextCommon xmlinclude xmlinclusion xmlinclusions xmlinfo xmlinjector contained
+syn keyword contextCommon xmlinlineprettyprint xmlinlineprettyprinttext xmlinlineverbatim xmlinstalldirective xmllast contained
+syn keyword contextCommon xmllastatt xmllastmatch xmllastpar xmlloadbuffer xmlloaddata contained
+syn keyword contextCommon xmlloaddirectives xmlloadfile xmlloadonly xmlmain xmlmapvalue contained
+syn keyword contextCommon xmlname xmlnamespace xmlnonspace xmlpar xmlparam contained
+syn keyword contextCommon xmlpath xmlpos xmlposition xmlprependdocumentsetup xmlprependsetup contained
+syn keyword contextCommon xmlprettyprint xmlprettyprinttext xmlprocessbuffer xmlprocessdata xmlprocessfile contained
+syn keyword contextCommon xmlpure xmlraw xmlrefatt xmlregistereddocumentsetups xmlregisteredsetups contained
+syn keyword contextCommon xmlregisterns xmlremapname xmlremapnamespace xmlremovedocumentsetup xmlremovesetup contained
+syn keyword contextCommon xmlresetdocumentsetups xmlresetinjectors xmlresetsetups xmlsave xmlsetatt contained
+syn keyword contextCommon xmlsetattribute xmlsetentity xmlsetfunction xmlsetinjectors xmlsetpar contained
+syn keyword contextCommon xmlsetparam xmlsetsetup xmlsetup xmlsetups xmlshow contained
+syn keyword contextCommon xmlsnippet xmlstrip xmlstripnolines xmlstripped xmlstrippednolines contained
+syn keyword contextCommon xmltag xmltexentity xmltext xmltobuffer xmltobufferverbose contained
+syn keyword contextCommon xmltofile xmlvalue xmlverbatim xrel xrightarrow contained
+syn keyword contextCommon xrightharpoondown xrightharpoonup xrightleftharpoons xrightoverleftarrow xrow contained
+syn keyword contextCommon xrowgroup xsplitstring xtable xtablebody xtablefoot contained
+syn keyword contextCommon xtablehead xtablenext xtriplerel xtwoheadleftarrow xtwoheadrightarrow contained
+syn keyword contextCommon xxfrac xypos yacute ycircumflex ydiaeresis contained
+syn keyword contextCommon ydotbelow yen ygrave yhook yiddishnumerals contained
+syn keyword contextCommon ymacron ytilde zacute zcaron zdotaccent contained
+syn keyword contextCommon zeronumberconversion zerowidthnobreakspace zerowidthspace zeta zhook contained
+syn keyword contextCommon zstroke zwj zwnj contained
diff --git a/runtime/syntax/shared/context-data-metafun.vim b/runtime/syntax/shared/context-data-metafun.vim
new file mode 100644
index 0000000..de42e3a
--- /dev/null
+++ b/runtime/syntax/shared/context-data-metafun.vim
@@ -0,0 +1,117 @@
+vim9script
+
+# Vim syntax file
+# Language: ConTeXt
+# Automatically generated by mtx-interface (2022-08-12 10:49)
+
+syn keyword metafunCommands loadfile loadimage loadmodule dispose nothing
+syn keyword metafunCommands transparency tolist topath tocycle sqr
+syn keyword metafunCommands log ln exp inv pow
+syn keyword metafunCommands pi radian tand cotd sin
+syn keyword metafunCommands cos tan cot atan asin
+syn keyword metafunCommands acos invsin invcos invtan acosh
+syn keyword metafunCommands asinh sinh cosh tanh zmod
+syn keyword metafunCommands paired tripled unitcircle fulldiamond unitdiamond
+syn keyword metafunCommands fullsquare unittriangle fulltriangle unitoctagon fulloctagon
+syn keyword metafunCommands unithexagon fullhexagon llcircle lrcircle urcircle
+syn keyword metafunCommands ulcircle tcircle bcircle lcircle rcircle
+syn keyword metafunCommands lltriangle lrtriangle urtriangle ultriangle uptriangle
+syn keyword metafunCommands downtriangle lefttriangle righttriangle triangle smoothed
+syn keyword metafunCommands cornered superellipsed randomized randomizedcontrols squeezed
+syn keyword metafunCommands enlonged shortened punked curved unspiked
+syn keyword metafunCommands simplified blownup stretched enlarged leftenlarged
+syn keyword metafunCommands topenlarged rightenlarged bottomenlarged crossed laddered
+syn keyword metafunCommands randomshifted interpolated perpendicular paralleled cutends
+syn keyword metafunCommands peepholed llenlarged lrenlarged urenlarged ulenlarged
+syn keyword metafunCommands llmoved lrmoved urmoved ulmoved rightarrow
+syn keyword metafunCommands leftarrow centerarrow drawdoublearrows boundingbox innerboundingbox
+syn keyword metafunCommands outerboundingbox pushboundingbox popboundingbox boundingradius boundingcircle
+syn keyword metafunCommands boundingpoint crossingunder insideof outsideof bottomboundary
+syn keyword metafunCommands leftboundary topboundary rightboundary xsized ysized
+syn keyword metafunCommands xysized sized xyscaled intersection_point intersection_found
+syn keyword metafunCommands penpoint bbwidth bbheight withshade withcircularshade
+syn keyword metafunCommands withlinearshade defineshade shaded shadedinto withshadecolors
+syn keyword metafunCommands withshadedomain withshademethod withshadefactor withshadevector withshadecenter
+syn keyword metafunCommands withshadedirection withshaderadius withshadetransform withshadecenterone withshadecentertwo
+syn keyword metafunCommands withshadestep withshadefraction withshadeorigin shownshadevector shownshadeorigin
+syn keyword metafunCommands shownshadedirection shownshadecenter cmyk spotcolor multitonecolor
+syn keyword metafunCommands namedcolor drawfill undrawfill inverted uncolored
+syn keyword metafunCommands softened grayed greyed onlayer along
+syn keyword metafunCommands graphictext loadfigure externalfigure figure register
+syn keyword metafunCommands outlinetext filloutlinetext drawoutlinetext outlinetexttopath checkedbounds
+syn keyword metafunCommands checkbounds strut rule withmask bitmapimage
+syn keyword metafunCommands colordecimals ddecimal dddecimal ddddecimal colordecimalslist
+syn keyword metafunCommands textext thetextext rawtextext textextoffset texbox
+syn keyword metafunCommands thetexbox rawtexbox istextext infotext rawmadetext
+syn keyword metafunCommands validtexbox onetimetextext rawfmttext thefmttext fmttext
+syn keyword metafunCommands onetimefmttext notcached keepcached verbatim thelabel
+syn keyword metafunCommands label autoalign transparent[] withtransparency withopacity
+syn keyword metafunCommands property properties withproperties asgroup withpattern
+syn keyword metafunCommands withpatternscale withpatternfloat infont space crlf
+syn keyword metafunCommands dquote percent SPACE CRLF DQUOTE
+syn keyword metafunCommands PERCENT grayscale greyscale withgray withgrey
+syn keyword metafunCommands colorpart colorlike readfile clearxy unitvector
+syn keyword metafunCommands center epsed anchored originpath infinite
+syn keyword metafunCommands break xstretched ystretched snapped pathconnectors
+syn keyword metafunCommands function constructedfunction constructedpath constructedpairs straightfunction
+syn keyword metafunCommands straightpath straightpairs curvedfunction curvedpath curvedpairs
+syn keyword metafunCommands evenly oddly condition pushcurrentpicture popcurrentpicture
+syn keyword metafunCommands arrowpath resetarrows tensecircle roundedsquare colortype
+syn keyword metafunCommands whitecolor blackcolor basiccolors complementary complemented
+syn keyword metafunCommands resolvedcolor normalfill normaldraw visualizepaths detailpaths
+syn keyword metafunCommands naturalizepaths drawboundary drawwholepath drawpathonly visualizeddraw
+syn keyword metafunCommands visualizedfill detaileddraw draworigin drawboundingbox drawpath
+syn keyword metafunCommands drawpoint drawpoints drawcontrolpoints drawcontrollines drawpointlabels
+syn keyword metafunCommands drawlineoptions drawpointoptions drawcontroloptions drawlabeloptions draworiginoptions
+syn keyword metafunCommands drawboundoptions drawpathoptions resetdrawoptions undashed pencilled
+syn keyword metafunCommands decorated redecorated undecorated passvariable passarrayvariable
+syn keyword metafunCommands tostring topair format formatted quotation
+syn keyword metafunCommands quote startpassingvariable stoppassingvariable eofill eoclip
+syn keyword metafunCommands nofill dofill fillup eofillup nodraw
+syn keyword metafunCommands dodraw enfill area addbackground shadedup
+syn keyword metafunCommands shadeddown shadedleft shadedright sortlist copylist
+syn keyword metafunCommands shapedlist listtocurves listtolines listsize listlast
+syn keyword metafunCommands uniquelist circularpath squarepath linearpath theoffset
+syn keyword metafunCommands texmode systemmode texvar texstr isarray
+syn keyword metafunCommands prefix dimension getmacro getdimen getcount
+syn keyword metafunCommands gettoks setmacro setdimen setcount settoks
+syn keyword metafunCommands setglobalmacro setglobaldimen setglobalcount setglobaltoks positionpath
+syn keyword metafunCommands positioncurve positionxy positionparagraph positioncolumn positionwhd
+syn keyword metafunCommands positionpage positionregion positionbox positionx positiony
+syn keyword metafunCommands positionanchor positioninregion positionatanchor positioncolumnbox overlaycolumnbox
+syn keyword metafunCommands positioncolumnatx getposboxes getmultipars getpospage getposparagraph
+syn keyword metafunCommands getposcolumn getposregion getposx getposy getposwidth
+syn keyword metafunCommands getposheight getposdepth getposleftskip getposrightskip getposhsize
+syn keyword metafunCommands getposparindent getposhangindent getposhangafter getposxy getposupperleft
+syn keyword metafunCommands getposlowerleft getposupperright getposlowerright getposllx getposlly
+syn keyword metafunCommands getposurx getposury wdpart htpart dppart
+syn keyword metafunCommands texvar texstr inpath pointof leftof
+syn keyword metafunCommands rightof utfnum utflen utfsub newhash
+syn keyword metafunCommands disposehash inhash tohash fromhash isarray
+syn keyword metafunCommands prefix isobject comment report lua
+syn keyword metafunCommands lualist mp MP luacall mirrored
+syn keyword metafunCommands mirroredabout xslanted yslanted scriptindex newscriptindex
+syn keyword metafunCommands newcolor newrgbcolor newcmykcolor newnumeric newboolean
+syn keyword metafunCommands newtransform newpath newpicture newstring newpair
+syn keyword metafunCommands mpvard mpvarn mpvars mpvar withtolerance
+syn keyword metafunCommands hatched withdashes processpath pencilled sortedintersectiontimes
+syn keyword metafunCommands intersectionpath firstintersectionpath secondintersectionpath intersectionsfound cutbeforefirst
+syn keyword metafunCommands cutafterfirst cutbeforelast cutafterlast xnormalized ynormalized
+syn keyword metafunCommands xynormalized phantom scrutinized
+syn keyword metafunInternals nocolormodel greycolormodel graycolormodel rgbcolormodel cmykcolormodel
+syn keyword metafunInternals shadefactor shadeoffset textextoffset textextanchor normaltransparent
+syn keyword metafunInternals multiplytransparent screentransparent overlaytransparent softlighttransparent hardlighttransparent
+syn keyword metafunInternals colordodgetransparent colorburntransparent darkentransparent lightentransparent differencetransparent
+syn keyword metafunInternals exclusiontransparent huetransparent saturationtransparent colortransparent luminositytransparent
+syn keyword metafunInternals ahvariant ahdimple ahfactor ahscale metapostversion
+syn keyword metafunInternals maxdimensions drawoptionsfactor dq sq crossingscale
+syn keyword metafunInternals crossingoption crossingdebug contextlmtxmode metafunversion minifunversion
+syn keyword metafunInternals getparameters presetparameters hasparameter hasoption getparameter
+syn keyword metafunInternals getparameterdefault getparametercount getmaxparametercount getparameterpath getparameterpen
+syn keyword metafunInternals getparametertext applyparameters mergeparameters pushparameters popparameters
+syn keyword metafunInternals setluaparameter definecolor record newrecord setrecord
+syn keyword metafunInternals getrecord cntrecord anchorxy anchorx anchory
+syn keyword metafunInternals anchorht anchordp anchorul anchorll anchorlr
+syn keyword metafunInternals anchorur localanchorbox localanchorcell localanchorspan anchorbox
+syn keyword metafunInternals anchorcell anchorspan matrixbox matrixcell matrixspan
+syn keyword metafunInternals pensilcolor pensilstep
diff --git a/runtime/syntax/shared/context-data-tex.vim b/runtime/syntax/shared/context-data-tex.vim
new file mode 100644
index 0000000..bb54d3c
--- /dev/null
+++ b/runtime/syntax/shared/context-data-tex.vim
@@ -0,0 +1,225 @@
+vim9script
+
+# Vim syntax file
+# Language: ConTeXt
+# Automatically generated by mtx-interface (2022-08-12 10:49)
+
+syn keyword texAleph Alephminorversion Alephrevision Alephversion contained
+syn keyword texEtex botmarks clubpenalties currentgrouplevel currentgrouptype currentifbranch contained
+syn keyword texEtex currentiflevel currentiftype detokenize dimexpr displaywidowpenalties contained
+syn keyword texEtex everyeof firstmarks fontchardp fontcharht fontcharic contained
+syn keyword texEtex fontcharwd glueexpr glueshrink glueshrinkorder gluestretch contained
+syn keyword texEtex gluestretchorder gluetomu ifcsname ifdefined iffontchar contained
+syn keyword texEtex interactionmode interlinepenalties lastlinefit lastnodetype marks contained
+syn keyword texEtex muexpr mutoglue numexpr pagediscards parshapedimen contained
+syn keyword texEtex parshapeindent parshapelength predisplaydirection protected savinghyphcodes contained
+syn keyword texEtex savingvdiscards scantokens showgroups showifs showtokens contained
+syn keyword texEtex splitbotmarks splitdiscards splitfirstmarks topmarks tracingassigns contained
+syn keyword texEtex tracinggroups tracingifs tracingnesting unexpanded unless contained
+syn keyword texEtex widowpenalties contained
+syn keyword texLuatex Uabove Uabovewithdelims Uatop Uatopwithdelims Uchar contained
+syn keyword texLuatex Udelcode Udelcodenum Udelimiter Udelimiterover Udelimiterunder contained
+syn keyword texLuatex Uhextensible Uleft Umathaccent Umathaccentbasedepth Umathaccentbaseheight contained
+syn keyword texLuatex Umathaccentbottomovershoot Umathaccentbottomshiftdown Umathaccentsuperscriptdrop Umathaccentsuperscriptpercent Umathaccenttopovershoot contained
+syn keyword texLuatex Umathaccenttopshiftup Umathaccentvariant Umathadapttoleft Umathadapttoright Umathaxis contained
+syn keyword texLuatex Umathbotaccentvariant Umathchar Umathcharclass Umathchardef Umathcharfam contained
+syn keyword texLuatex Umathcharnum Umathcharnumdef Umathcharslot Umathclass Umathcode contained
+syn keyword texLuatex Umathcodenum Umathconnectoroverlapmin Umathdegreevariant Umathdelimiterovervariant Umathdelimiterpercent contained
+syn keyword texLuatex Umathdelimitershortfall Umathdelimiterundervariant Umathdenominatorvariant Umathdict Umathdictdef contained
+syn keyword texLuatex Umathextrasubpreshift Umathextrasubprespace Umathextrasubshift Umathextrasubspace Umathextrasuppreshift contained
+syn keyword texLuatex Umathextrasupprespace Umathextrasupshift Umathextrasupspace Umathflattenedaccentbasedepth Umathflattenedaccentbaseheight contained
+syn keyword texLuatex Umathflattenedaccentbottomshiftdown Umathflattenedaccenttopshiftup Umathfractiondelsize Umathfractiondenomdown Umathfractiondenomvgap contained
+syn keyword texLuatex Umathfractionnumup Umathfractionnumvgap Umathfractionrule Umathfractionvariant Umathhextensiblevariant contained
+syn keyword texLuatex Umathlimitabovebgap Umathlimitabovekern Umathlimitabovevgap Umathlimitbelowbgap Umathlimitbelowkern contained
+syn keyword texLuatex Umathlimitbelowvgap Umathlimits Umathnoaxis Umathnolimits Umathnolimitsubfactor contained
+syn keyword texLuatex Umathnolimitsupfactor Umathnumeratorvariant Umathopenupdepth Umathopenupheight Umathoperatorsize contained
+syn keyword texLuatex Umathoverbarkern Umathoverbarrule Umathoverbarvgap Umathoverdelimiterbgap Umathoverdelimitervariant contained
+syn keyword texLuatex Umathoverdelimitervgap Umathoverlayaccentvariant Umathoverlinevariant Umathphantom Umathpresubshiftdistance contained
+syn keyword texLuatex Umathpresupshiftdistance Umathprimeraise Umathprimeraisecomposed Umathprimeshiftdrop Umathprimeshiftup contained
+syn keyword texLuatex Umathprimespaceafter Umathprimevariant Umathprimewidth Umathquad Umathradicaldegreeafter contained
+syn keyword texLuatex Umathradicaldegreebefore Umathradicaldegreeraise Umathradicalkern Umathradicalrule Umathradicalvariant contained
+syn keyword texLuatex Umathradicalvgap Umathruledepth Umathruleheight Umathskeweddelimitertolerance Umathskewedfractionhgap contained
+syn keyword texLuatex Umathskewedfractionvgap Umathsource Umathspaceafterscript Umathspacebeforescript Umathstackdenomdown contained
+syn keyword texLuatex Umathstacknumup Umathstackvariant Umathstackvgap Umathsubscriptvariant Umathsubshiftdistance contained
+syn keyword texLuatex Umathsubshiftdown Umathsubshiftdrop Umathsubsupshiftdown Umathsubsupvgap Umathsubtopmax contained
+syn keyword texLuatex Umathsupbottommin Umathsuperscriptvariant Umathsupshiftdistance Umathsupshiftdrop Umathsupshiftup contained
+syn keyword texLuatex Umathsupsubbottommax Umathtopaccentvariant Umathunderbarkern Umathunderbarrule Umathunderbarvgap contained
+syn keyword texLuatex Umathunderdelimiterbgap Umathunderdelimitervariant Umathunderdelimitervgap Umathunderlinevariant Umathuseaxis contained
+syn keyword texLuatex Umathvextensiblevariant Umathvoid Umathxscale Umathyscale Umiddle contained
+syn keyword texLuatex Unosubprescript Unosubscript Unosuperprescript Unosuperscript Uoperator contained
+syn keyword texLuatex Uover Uoverdelimiter Uoverwithdelims Uprimescript Uradical contained
+syn keyword texLuatex Uright Uroot Ushiftedsubprescript Ushiftedsubscript Ushiftedsuperprescript contained
+syn keyword texLuatex Ushiftedsuperscript Uskewed Uskewedwithdelims Ustack Ustartdisplaymath contained
+syn keyword texLuatex Ustartmath Ustartmathmode Ustopdisplaymath Ustopmath Ustopmathmode contained
+syn keyword texLuatex Ustyle Usubprescript Usubscript Usuperprescript Usuperscript contained
+syn keyword texLuatex Uunderdelimiter Uvextensible adjustspacing adjustspacingshrink adjustspacingstep contained
+syn keyword texLuatex adjustspacingstretch afterassigned aftergrouped aliased alignmark contained
+syn keyword texLuatex alignmentcellsource alignmentwrapsource aligntab allcrampedstyles alldisplaystyles contained
+syn keyword texLuatex allmathstyles allscriptscriptstyles allscriptstyles allsplitstyles alltextstyles contained
+syn keyword texLuatex alluncrampedstyles atendofgroup atendofgrouped attribute attributedef contained
+syn keyword texLuatex automaticdiscretionary automatichyphenpenalty automigrationmode autoparagraphmode begincsname contained
+syn keyword texLuatex beginlocalcontrol beginmathgroup beginsimplegroup boundary boxadapt contained
+syn keyword texLuatex boxanchor boxanchors boxattribute boxdirection boxfreeze contained
+syn keyword texLuatex boxgeometry boxorientation boxrepack boxshift boxsource contained
+syn keyword texLuatex boxtarget boxtotal boxxmove boxxoffset boxymove contained
+syn keyword texLuatex boxyoffset catcodetable clearmarks copymathatomrule copymathparent contained
+syn keyword texLuatex copymathspacing crampeddisplaystyle crampedscriptscriptstyle crampedscriptstyle crampedtextstyle contained
+syn keyword texLuatex csstring currentloopiterator currentloopnesting currentmarks defcsname contained
+syn keyword texLuatex detokenized dimensiondef dimexpression directlua edefcsname contained
+syn keyword texLuatex efcode endlocalcontrol endmathgroup endsimplegroup enforced contained
+syn keyword texLuatex etoks etoksapp etokspre everybeforepar everymathatom contained
+syn keyword texLuatex everytab exceptionpenalty expand expandafterpars expandafterspaces contained
+syn keyword texLuatex expandcstoken expanded expandedafter expandedloop expandtoken contained
+syn keyword texLuatex explicitdiscretionary explicithyphenpenalty firstvalidlanguage flushmarks fontcharta contained
+syn keyword texLuatex fontid fontmathcontrol fontspecdef fontspecid fontspecifiedsize contained
+syn keyword texLuatex fontspecscale fontspecxscale fontspecyscale fonttextcontrol formatname contained
+syn keyword texLuatex frozen futurecsname futuredef futureexpand futureexpandis contained
+syn keyword texLuatex futureexpandisap gdefcsname gleaders glet gletcsname contained
+syn keyword texLuatex glettonothing gluespecdef glyphdatafield glyphoptions glyphscale contained
+syn keyword texLuatex glyphscriptfield glyphscriptscale glyphscriptscriptscale glyphstatefield glyphtextscale contained
+syn keyword texLuatex glyphxoffset glyphxscale glyphxscaled glyphyoffset glyphyscale contained
+syn keyword texLuatex glyphyscaled gtoksapp gtokspre hccode hjcode contained
+syn keyword texLuatex hpack hyphenationmin hyphenationmode ifabsdim ifabsnum contained
+syn keyword texLuatex ifarguments ifboolean ifchkdim ifchknum ifcmpdim contained
+syn keyword texLuatex ifcmpnum ifcondition ifcstok ifdimexpression ifdimval contained
+syn keyword texLuatex ifempty ifflags ifhaschar ifhastok ifhastoks contained
+syn keyword texLuatex ifhasxtoks ifincsname ifinsert ifmathparameter ifmathstyle contained
+syn keyword texLuatex ifnumexpression ifnumval ifparameter ifparameters ifrelax contained
+syn keyword texLuatex iftok ignorearguments ignorepars immediate immutable contained
+syn keyword texLuatex indexofcharacter indexofregister inherited initcatcodetable insertbox contained
+syn keyword texLuatex insertcopy insertdepth insertdistance insertheight insertheights contained
+syn keyword texLuatex insertlimit insertmaxdepth insertmode insertmultiplier insertpenalty contained
+syn keyword texLuatex insertprogress insertstorage insertstoring insertunbox insertuncopy contained
+syn keyword texLuatex insertwidth instance integerdef lastarguments lastatomclass contained
+syn keyword texLuatex lastboundary lastchkdim lastchknum lastleftclass lastloopiterator contained
+syn keyword texLuatex lastnamedcs lastnodesubtype lastpageextra lastparcontext lastrightclass contained
+syn keyword texLuatex leftmarginkern letcharcode letcsname letfrozen letmathatomrule contained
+syn keyword texLuatex letmathparent letmathspacing letprotected lettonothing linebreakcriterium contained
+syn keyword texLuatex linedirection localbrokenpenalty localcontrol localcontrolled localcontrolledloop contained
+syn keyword texLuatex localinterlinepenalty localleftbox localleftboxbox localmiddlebox localmiddleboxbox contained
+syn keyword texLuatex localrightbox localrightboxbox lpcode luabytecode luabytecodecall contained
+syn keyword texLuatex luacopyinputnodes luadef luaescapestring luafunction luafunctioncall contained
+syn keyword texLuatex luatexbanner luatexrevision luatexversion mathaccent mathatom contained
+syn keyword texLuatex mathatomglue mathatomskip mathbackwardpenalties mathbeginclass mathcheckfencesmode contained
+syn keyword texLuatex mathdictgroup mathdictproperties mathdirection mathdisplaymode mathdisplayskipmode contained
+syn keyword texLuatex mathdoublescriptmode mathendclass matheqnogapstep mathfenced mathfontcontrol contained
+syn keyword texLuatex mathforwardpenalties mathfrac mathghost mathgluemode mathgroupingmode contained
+syn keyword texLuatex mathinlinemainstyle mathleftclass mathlimitsmode mathmiddle mathnolimitsmode contained
+syn keyword texLuatex mathpenaltiesmode mathrad mathrightclass mathrulesfam mathrulesmode contained
+syn keyword texLuatex mathscale mathscriptsmode mathslackmode mathspacingmode mathstackstyle contained
+syn keyword texLuatex mathstyle mathstylefontid mathsurroundmode mathsurroundskip maththreshold contained
+syn keyword texLuatex mugluespecdef mutable noaligned noatomruling noboundary contained
+syn keyword texLuatex nohrule norelax normalizelinemode normalizeparmode nospaces contained
+syn keyword texLuatex novrule numericscale numexpression orelse orphanpenalties contained
+syn keyword texLuatex orphanpenalty orunless outputbox overloaded overloadmode contained
+syn keyword texLuatex pageboundary pageextragoal pagevsize parametercount parametermark contained
+syn keyword texLuatex parattribute pardirection permanent pettymuskip postexhyphenchar contained
+syn keyword texLuatex posthyphenchar postinlinepenalty prebinoppenalty predisplaygapfactor preexhyphenchar contained
+syn keyword texLuatex prehyphenchar preinlinepenalty prerelpenalty protrudechars protrusionboundary contained
+syn keyword texLuatex pxdimen quitloop quitvmode resetmathspacing retokenized contained
+syn keyword texLuatex rightmarginkern rpcode savecatcodetable scaledemwidth scaledexheight contained
+syn keyword texLuatex scaledextraspace scaledinterwordshrink scaledinterwordspace scaledinterwordstretch scaledmathstyle contained
+syn keyword texLuatex scaledslantperpoint scantextokens semiexpand semiexpanded semiprotected contained
+syn keyword texLuatex setdefaultmathcodes setfontid setmathatomrule setmathdisplaypostpenalty setmathdisplayprepenalty contained
+syn keyword texLuatex setmathignore setmathoptions setmathpostpenalty setmathprepenalty setmathspacing contained
+syn keyword texLuatex shapingpenaltiesmode shapingpenalty skewed skewedwithdelims snapshotpar contained
+syn keyword texLuatex supmarkmode swapcsvalues tabsize textdirection thewithoutunit contained
+syn keyword texLuatex tinymuskip todimension tohexadecimal tointeger tokenized contained
+syn keyword texLuatex toksapp tokspre tolerant tomathstyle toscaled contained
+syn keyword texLuatex tosparsedimension tosparsescaled tpack tracingadjusts tracingalignments contained
+syn keyword texLuatex tracingexpressions tracingfonts tracingfullboxes tracinghyphenation tracinginserts contained
+syn keyword texLuatex tracinglevels tracingmarks tracingmath tracingnodes tracingpenalties contained
+syn keyword texLuatex uleaders undent unexpandedloop unletfrozen unletprotected contained
+syn keyword texLuatex untraced vpack wordboundary wrapuppar xdefcsname contained
+syn keyword texLuatex xtoks xtoksapp xtokspre contained
+syn keyword texOmega Omegaminorversion Omegarevision Omegaversion contained
+syn keyword texPdftex ifpdfabsdim ifpdfabsnum ifpdfprimitive pdfadjustspacing pdfannot contained
+syn keyword texPdftex pdfcatalog pdfcolorstack pdfcolorstackinit pdfcompresslevel pdfcopyfont contained
+syn keyword texPdftex pdfcreationdate pdfdecimaldigits pdfdest pdfdestmargin pdfdraftmode contained
+syn keyword texPdftex pdfeachlinedepth pdfeachlineheight pdfendlink pdfendthread pdffirstlineheight contained
+syn keyword texPdftex pdffontattr pdffontexpand pdffontname pdffontobjnum pdffontsize contained
+syn keyword texPdftex pdfgamma pdfgentounicode pdfglyphtounicode pdfhorigin pdfignoreddimen contained
+syn keyword texPdftex pdfignoreunknownimages pdfimageaddfilename pdfimageapplygamma pdfimagegamma pdfimagehicolor contained
+syn keyword texPdftex pdfimageresolution pdfincludechars pdfinclusioncopyfonts pdfinclusionerrorlevel pdfinfo contained
+syn keyword texPdftex pdfinfoomitdate pdfinsertht pdflastannot pdflastlinedepth pdflastlink contained
+syn keyword texPdftex pdflastobj pdflastxform pdflastximage pdflastximagepages pdflastxpos contained
+syn keyword texPdftex pdflastypos pdflinkmargin pdfliteral pdfmajorversion pdfmapfile contained
+syn keyword texPdftex pdfmapline pdfminorversion pdfnames pdfnoligatures pdfnormaldeviate contained
+syn keyword texPdftex pdfobj pdfobjcompresslevel pdfomitcharset pdfomitcidset pdfoutline contained
+syn keyword texPdftex pdfoutput pdfpageattr pdfpagebox pdfpageheight pdfpageref contained
+syn keyword texPdftex pdfpageresources pdfpagesattr pdfpagewidth pdfpkfixeddpi pdfpkmode contained
+syn keyword texPdftex pdfpkresolution pdfprimitive pdfprotrudechars pdfpxdimen pdfrandomseed contained
+syn keyword texPdftex pdfrecompress pdfrefobj pdfrefxform pdfrefximage pdfreplacefont contained
+syn keyword texPdftex pdfrestore pdfretval pdfsave pdfsavepos pdfsetmatrix contained
+syn keyword texPdftex pdfsetrandomseed pdfstartlink pdfstartthread pdfsuppressoptionalinfo pdfsuppressptexinfo contained
+syn keyword texPdftex pdftexbanner pdftexrevision pdftexversion pdfthread pdfthreadmargin contained
+syn keyword texPdftex pdftracingfonts pdftrailer pdftrailerid pdfuniformdeviate pdfuniqueresname contained
+syn keyword texPdftex pdfvorigin pdfxform pdfxformattr pdfxformmargin pdfxformname contained
+syn keyword texPdftex pdfxformresources pdfximage contained
+syn keyword texTex - / above abovedisplayshortskip contained
+syn keyword texTex abovedisplayskip abovewithdelims accent adjdemerits advance contained
+syn keyword texTex afterassignment aftergroup aligncontent atop atopwithdelims contained
+syn keyword texTex badness baselineskip batchmode begingroup belowdisplayshortskip contained
+syn keyword texTex belowdisplayskip binoppenalty botmark box boxmaxdepth contained
+syn keyword texTex brokenpenalty catcode char chardef cleaders contained
+syn keyword texTex clubpenalty copy count countdef cr contained
+syn keyword texTex crcr csname day deadcycles def contained
+syn keyword texTex defaulthyphenchar defaultskewchar delcode delimiter delimiterfactor contained
+syn keyword texTex delimitershortfall dimen dimendef discretionary displayindent contained
+syn keyword texTex displaylimits displaystyle displaywidowpenalty displaywidth divide contained
+syn keyword texTex doublehyphendemerits dp dump edef else contained
+syn keyword texTex emergencystretch end endcsname endgroup endinput contained
+syn keyword texTex endlinechar eqno errhelp errmessage errorcontextlines contained
+syn keyword texTex errorstopmode escapechar everycr everydisplay everyhbox contained
+syn keyword texTex everyjob everymath everypar everyvbox exhyphenchar contained
+syn keyword texTex exhyphenpenalty expandafter fam fi finalhyphendemerits contained
+syn keyword texTex firstmark floatingpenalty font fontdimen fontname contained
+syn keyword texTex fontspecifiedname futurelet gdef global globaldefs contained
+syn keyword texTex glyph halign hangafter hangindent hbadness contained
+syn keyword texTex hbox hfil hfill hfilneg hfuzz contained
+syn keyword texTex holdinginserts holdingmigrations hrule hsize hskip contained
+syn keyword texTex hss ht hyphenation hyphenchar hyphenpenalty contained
+syn keyword texTex if ifcase ifcat ifdim iffalse contained
+syn keyword texTex ifhbox ifhmode ifinner ifmmode ifnum contained
+syn keyword texTex ifodd iftrue ifvbox ifvmode ifvoid contained
+syn keyword texTex ifx ignorespaces indent input inputlineno contained
+syn keyword texTex insert insertpenalties interlinepenalty jobname kern contained
+syn keyword texTex language lastbox lastkern lastpenalty lastskip contained
+syn keyword texTex lccode leaders left lefthyphenmin leftskip contained
+syn keyword texTex leqno let limits linepenalty lineskip contained
+syn keyword texTex lineskiplimit long looseness lower lowercase contained
+syn keyword texTex mark mathbin mathchar mathchardef mathchoice contained
+syn keyword texTex mathclose mathcode mathinner mathop mathopen contained
+syn keyword texTex mathord mathpunct mathrel mathsurround maxdeadcycles contained
+syn keyword texTex maxdepth meaning meaningasis meaningfull meaningless contained
+syn keyword texTex medmuskip message middle mkern month contained
+syn keyword texTex moveleft moveright mskip multiply muskip contained
+syn keyword texTex muskipdef newlinechar noalign noexpand noindent contained
+syn keyword texTex nolimits nonscript nonstopmode nulldelimiterspace nullfont contained
+syn keyword texTex number omit or outer output contained
+syn keyword texTex outputpenalty over overfullrule overline overshoot contained
+syn keyword texTex overwithdelims pagedepth pagefilllstretch pagefillstretch pagefilstretch contained
+syn keyword texTex pagegoal pageshrink pagestretch pagetotal par contained
+syn keyword texTex parfillleftskip parfillskip parindent parinitleftskip parinitrightskip contained
+syn keyword texTex parshape parskip patterns pausing penalty contained
+syn keyword texTex postdisplaypenalty predisplaypenalty predisplaysize pretolerance prevdepth contained
+syn keyword texTex prevgraf radical raise relax relpenalty contained
+syn keyword texTex right righthyphenmin rightskip romannumeral scaledfontdimen contained
+syn keyword texTex scriptfont scriptscriptfont scriptscriptstyle scriptspace scriptstyle contained
+syn keyword texTex scrollmode setbox setlanguage sfcode shipout contained
+syn keyword texTex show showbox showboxbreadth showboxdepth showlists contained
+syn keyword texTex shownodedetails showthe skewchar skip skipdef contained
+syn keyword texTex spacefactor spaceskip span splitbotmark splitfirstmark contained
+syn keyword texTex splitmaxdepth splittopskip srule string tabskip contained
+syn keyword texTex textfont textstyle the thickmuskip thinmuskip contained
+syn keyword texTex time toks toksdef tolerance topmark contained
+syn keyword texTex topskip tracingcommands tracinglostchars tracingmacros tracingonline contained
+syn keyword texTex tracingoutput tracingpages tracingparagraphs tracingrestores tracingstats contained
+syn keyword texTex uccode uchyph unboundary underline unhbox contained
+syn keyword texTex unhcopy unhpack unkern unpenalty unskip contained
+syn keyword texTex unvbox unvcopy unvpack uppercase vadjust contained
+syn keyword texTex valign vbadness vbox vcenter vfil contained
+syn keyword texTex vfill vfilneg vfuzz vrule vsize contained
+syn keyword texTex vskip vsplit vss vtop wd contained
+syn keyword texTex widowpenalty xdef xleaders xspaceskip year contained
+syn keyword texXetex XeTeXversion contained
diff --git a/runtime/syntax/shared/hgcommitDiff.vim b/runtime/syntax/shared/hgcommitDiff.vim
new file mode 100644
index 0000000..949cdf0
--- /dev/null
+++ b/runtime/syntax/shared/hgcommitDiff.vim
@@ -0,0 +1,390 @@
+" Vim syntax file
+" Language: Sapling / Mecurial Diff (context or unified)
+" Maintainer: Max Coplan <mchcopl@gmail.com>
+" Translations by Jakson Alves de Aquino.
+" Last Change: 2022-12-08
+" Copied from: runtime/syntax/diff.vim
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+scriptencoding utf-8
+
+syn match hgDiffOnly "^\%(SL\|HG\): Only in .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Files .* and .* are identical$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Files .* and .* differ$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Binary files .* and .* differ$"
+syn match hgDiffIsA "^\%(SL\|HG\): File .* is a .* while file .* is a .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ No newline at end of file .*"
+syn match hgDiffCommon "^\%(SL\|HG\): Common subdirectories: .*"
+
+" Disable the translations by setting diff_translations to zero.
+if !exists("diff_translations") || diff_translations
+
+" ca
+syn match hgDiffOnly "^\%(SL\|HG\): Només a .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Els fitxers .* i .* són idèntics$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Els fitxers .* i .* difereixen$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Els fitxers .* i .* difereixen$"
+syn match hgDiffIsA "^\%(SL\|HG\): El fitxer .* és un .* mentre que el fitxer .* és un .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ No hi ha cap caràcter de salt de línia al final del fitxer"
+syn match hgDiffCommon "^\%(SL\|HG\): Subdirectoris comuns: .* i .*"
+
+" cs
+syn match hgDiffOnly "^\%(SL\|HG\): Pouze v .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Soubory .* a .* jsou identické$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Soubory .* a .* jsou různé$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Binární soubory .* a .* jsou rozdílné$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Soubory .* a .* jsou různé$"
+syn match hgDiffIsA "^\%(SL\|HG\): Soubor .* je .* pokud soubor .* je .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Chybí znak konce řádku na konci souboru"
+syn match hgDiffCommon "^\%(SL\|HG\): SpoleÄné podadresáře: .* a .*"
+
+" da
+syn match hgDiffOnly "^\%(SL\|HG\): Kun i .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Filerne .* og .* er identiske$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Filerne .* og .* er forskellige$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Binære filer .* og .* er forskellige$"
+syn match hgDiffIsA "^\%(SL\|HG\): Filen .* er en .* mens filen .* er en .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Intet linjeskift ved filafslutning"
+syn match hgDiffCommon "^\%(SL\|HG\): Identiske underkataloger: .* og .*"
+
+" de
+syn match hgDiffOnly "^\%(SL\|HG\): Nur in .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Dateien .* und .* sind identisch.$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Dateien .* und .* sind verschieden.$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Binärdateien .* and .* sind verschieden.$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Binärdateien .* und .* sind verschieden.$"
+syn match hgDiffIsA "^\%(SL\|HG\): Datei .* ist ein .* während Datei .* ein .* ist.$"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Kein Zeilenumbruch am Dateiende."
+syn match hgDiffCommon "^\%(SL\|HG\): Gemeinsame Unterverzeichnisse: .* und .*.$"
+
+" el
+syn match hgDiffOnly "^\%(SL\|HG\): Μόνο στο .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Τα αÏχεία .* καί .* είναι πανομοιότυπα$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Τα αÏχεία .* και .* διαφέÏουν$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Τα αÏχεία .* και .* διαφέÏουν$"
+syn match hgDiffIsA "^\%(SL\|HG\): Το αÏχείο .* είναι .* ενώ το αÏχείο .* είναι .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Δεν υπάÏχει χαÏακτήÏας νέας γÏαμμής στο τέλος του αÏχείου"
+syn match hgDiffCommon "^\%(SL\|HG\): Οι υποκατάλογοι .* και .* είναι ταυτόσημοι$"
+
+" eo
+syn match hgDiffOnly "^\%(SL\|HG\): Nur en .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Dosieroj .* kaj .* estas samaj$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Dosieroj .* kaj .* estas malsamaj$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Dosieroj .* kaj .* estas malsamaj$"
+syn match hgDiffIsA "^\%(SL\|HG\): Dosiero .* estas .*, dum dosiero .* estas .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Mankas linifino ĉe fino de dosiero"
+syn match hgDiffCommon "^\%(SL\|HG\): Komunaj subdosierujoj: .* kaj .*"
+
+" es
+syn match hgDiffOnly "^\%(SL\|HG\): Sólo en .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Los ficheros .* y .* son idénticos$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Los ficheros .* y .* son distintos$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Los ficheros binarios .* y .* son distintos$"
+syn match hgDiffIsA "^\%(SL\|HG\): El fichero .* es un .* mientras que el .* es un .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ No hay ningún carácter de nueva línea al final del fichero"
+syn match hgDiffCommon "^\%(SL\|HG\): Subdirectorios comunes: .* y .*"
+
+" fi
+syn match hgDiffOnly "^\%(SL\|HG\): Vain hakemistossa .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Tiedostot .* ja .* ovat identtiset$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Tiedostot .* ja .* eroavat$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Binääritiedostot .* ja .* eroavat$"
+syn match hgDiffIsA "^\%(SL\|HG\): Tiedosto .* on .*, kun taas tiedosto .* on .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Ei rivinvaihtoa tiedoston lopussa"
+syn match hgDiffCommon "^\%(SL\|HG\): Yhteiset alihakemistot: .* ja .*"
+
+" fr
+syn match hgDiffOnly "^\%(SL\|HG\): Seulement dans .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Les fichiers .* et .* sont identiques.*"
+syn match hgDiffDiffer "^\%(SL\|HG\): Les fichiers .* et .* sont différents.*"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Les fichiers binaires .* et .* sont différents.*"
+syn match hgDiffIsA "^\%(SL\|HG\): Le fichier .* est un .* alors que le fichier .* est un .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Pas de fin de ligne à la fin du fichier.*"
+syn match hgDiffCommon "^\%(SL\|HG\): Les sous-répertoires .* et .* sont identiques.*"
+
+" ga
+syn match hgDiffOnly "^\%(SL\|HG\): I .* amháin: .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Is comhionann iad na comhaid .* agus .*"
+syn match hgDiffDiffer "^\%(SL\|HG\): Tá difríocht idir na comhaid .* agus .*"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Tá difríocht idir na comhaid .* agus .*"
+syn match hgDiffIsA "^\%(SL\|HG\): Tá comhad .* ina .* ach tá comhad .* ina .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Gan líne nua ag an chomhadchríoch"
+syn match hgDiffCommon "^\%(SL\|HG\): Fochomhadlanna i gcoitianta: .* agus .*"
+
+" gl
+syn match hgDiffOnly "^\%(SL\|HG\): Só en .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Os ficheiros .* e .* son idénticos$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Os ficheiros .* e .* son diferentes$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Os ficheiros binarios .* e .* son diferentes$"
+syn match hgDiffIsA "^\%(SL\|HG\): O ficheiro .* é un .* mentres que o ficheiro .* é un .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Non hai un salto de liña na fin da liña"
+syn match hgDiffCommon "^\%(SL\|HG\): Subdirectorios comúns: .* e .*"
+
+" he
+" ^\%(SL\|HG\): .* are expansive patterns for long lines, so disabled unless we can match
+" some specific hebrew chars
+if search('\%u05d5\|\%u05d1', 'nw', '', 100)
+ syn match hgDiffOnly "^\%(SL\|HG\): .*-ב קר ×צמנ .*"
+ syn match hgDiffIdentical "^\%(SL\|HG\): ××™×”×– ×× ×™×” .*-ו .* ×יצבקה$"
+ syn match hgDiffDiffer "^\%(SL\|HG\): הזמ ×”×– ×ינוש `.*'-ו `.*' ×יצבקה$"
+ syn match hgDiffBDiffer "^\%(SL\|HG\): הזמ ×”×– ×ינוש `.*'-ו `.*' ×יירניב ×יצבק$"
+ syn match hgDiffIsA "^\%(SL\|HG\): .* .*-ל .* .* תוושהל ןתינ ×ל$"
+ syn match hgDiffNoEOL "^\%(SL\|HG\): \\ ץבוקה ףוסב השד.-הרוש ות רס."
+ syn match hgDiffCommon "^\%(SL\|HG\): .*-ו .* :תוהז תויקית-תת$"
+endif
+
+" hr
+syn match hgDiffOnly "^\%(SL\|HG\): Samo u .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Datoteke .* i .* su identiÄne$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Datoteke .* i .* se razlikuju$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Binarne datoteke .* i .* se razlikuju$"
+syn match hgDiffIsA "^\%(SL\|HG\): Datoteka .* je .*, a datoteka .* je .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Nema novog retka na kraju datoteke"
+syn match hgDiffCommon "^\%(SL\|HG\): UobiÄajeni poddirektoriji: .* i .*"
+
+" hu
+syn match hgDiffOnly "^\%(SL\|HG\): Csak .* -ben: .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): .* és .* fájlok azonosak$"
+syn match hgDiffDiffer "^\%(SL\|HG\): A(z) .* és a(z) .* fájlok különböznek$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): A(z) .* és a(z) .* fájlok különböznek$"
+syn match hgDiffIsA "^\%(SL\|HG\): A(z) .* fájl egy .*, viszont a(z) .* fájl egy .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Nincs újsor a fájl végén"
+syn match hgDiffCommon "^\%(SL\|HG\): Közös alkönyvtárak: .* és .*"
+
+" id
+syn match hgDiffOnly "^\%(SL\|HG\): Hanya dalam .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): File .* dan .* identik$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Berkas .* dan .* berbeda$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): File biner .* dan .* berbeda$"
+syn match hgDiffIsA "^\%(SL\|HG\): File .* adalah .* sementara file .* adalah .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Tidak ada baris-baru di akhir dari berkas"
+syn match hgDiffCommon "^\%(SL\|HG\): Subdirektori sama: .* dan .*"
+
+" it
+syn match hgDiffOnly "^\%(SL\|HG\): Solo in .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): I file .* e .* sono identici$"
+syn match hgDiffDiffer "^\%(SL\|HG\): I file .* e .* sono diversi$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): I file .* e .* sono diversi$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): I file binari .* e .* sono diversi$"
+syn match hgDiffIsA "^\%(SL\|HG\): File .* è un .* mentre file .* è un .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Manca newline alla fine del file"
+syn match hgDiffCommon "^\%(SL\|HG\): Sottodirectory in comune: .* e .*"
+
+" ja
+syn match hgDiffOnly "^\%(SL\|HG\): .*ã ã‘ã«ç™ºè¦‹: .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): ファイル.*ã¨.*ã¯åŒä¸€$"
+syn match hgDiffDiffer "^\%(SL\|HG\): ファイル.*ã¨.*ã¯é•ã„ã¾ã™$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): ãƒã‚¤ãƒŠãƒªãƒ¼ãƒ»ãƒ•ã‚¡ã‚¤ãƒ«.*ã¨.*ã¯é•ã„ã¾ã™$"
+syn match hgDiffIsA "^\%(SL\|HG\): ファイル.*ã¯.*ã€ãƒ•ã‚¡ã‚¤ãƒ«.*ã¯.*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ ファイル末尾ã«æ”¹è¡ŒãŒã‚ã‚Šã¾ã›ã‚“"
+syn match hgDiffCommon "^\%(SL\|HG\): 共通ã®ä¸‹ä½ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ¼: .*ã¨.*"
+
+" ja DiffUtils 3.3
+syn match hgDiffOnly "^\%(SL\|HG\): .* ã®ã¿ã«å­˜åœ¨: .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): ファイル .* 㨠.* ã¯åŒä¸€ã§ã™$"
+syn match hgDiffDiffer "^\%(SL\|HG\): ファイル .* 㨠.* ã¯ç•°ãªã‚Šã¾ã™$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): ãƒã‚¤ãƒŠãƒªãƒ¼ãƒ•ã‚¡ã‚¤ãƒ« .* ã¨.* ã¯ç•°ãªã‚Šã¾ã™$"
+syn match hgDiffIsA "^\%(SL\|HG\): ファイル .* 㯠.* ã§ã™ã€‚一方ã€ãƒ•ã‚¡ã‚¤ãƒ« .* 㯠.* ã§ã™$"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ ファイル末尾ã«æ”¹è¡ŒãŒã‚ã‚Šã¾ã›ã‚“"
+syn match hgDiffCommon "^\%(SL\|HG\): 共通ã®ã‚µãƒ–ディレクトリー: .* 㨠.*"
+
+" lv
+syn match hgDiffOnly "^\%(SL\|HG\): Tikai iekš .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Fails .* un .* ir identiski$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Faili .* un .* atšķiras$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Faili .* un .* atšķiras$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): BinÄrie faili .* un .* atÅ¡Ä·iras$"
+syn match hgDiffIsA "^\%(SL\|HG\): Fails .* ir .* kamēr fails .* ir .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Nav jaunu rindu faila beigÄs"
+syn match hgDiffCommon "^\%(SL\|HG\): KopÄ“jÄs apakÅ¡direktorijas: .* un .*"
+
+" ms
+syn match hgDiffOnly "^\%(SL\|HG\): Hanya dalam .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Fail .* dan .* adalah serupa$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Fail .* dan .* berbeza$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Fail .* dan .* berbeza$"
+syn match hgDiffIsA "^\%(SL\|HG\): Fail .* adalah .* manakala fail .* adalah .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Tiada baris baru pada penghujung fail"
+syn match hgDiffCommon "^\%(SL\|HG\): Subdirektori umum: .* dan .*"
+
+" nl
+syn match hgDiffOnly "^\%(SL\|HG\): Alleen in .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Bestanden .* en .* zijn identiek$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Bestanden .* en .* zijn verschillend$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Bestanden .* en .* zijn verschillend$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Binaire bestanden .* en .* zijn verschillend$"
+syn match hgDiffIsA "^\%(SL\|HG\): Bestand .* is een .* terwijl bestand .* een .* is$"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Geen regeleindeteken (LF) aan einde van bestand"
+syn match hgDiffCommon "^\%(SL\|HG\): Gemeenschappelijke submappen: .* en .*"
+
+" pl
+syn match hgDiffOnly "^\%(SL\|HG\): Tylko w .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Pliki .* i .* sÄ… identyczne$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Pliki .* i .* różnią się$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Pliki .* i .* różnią się$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Binarne pliki .* i .* różnią się$"
+syn match hgDiffIsA "^\%(SL\|HG\): Plik .* jest .*, podczas gdy plik .* jest .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Brak znaku nowej linii na końcu pliku"
+syn match hgDiffCommon "^\%(SL\|HG\): Wspólne podkatalogi: .* i .*"
+
+" pt_BR
+syn match hgDiffOnly "^\%(SL\|HG\): Somente em .*"
+syn match hgDiffOnly "^\%(SL\|HG\): Apenas em .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Os aquivos .* e .* são idênticos$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Os arquivos .* e .* são diferentes$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Os arquivos binários .* e .* são diferentes$"
+syn match hgDiffIsA "^\%(SL\|HG\): O arquivo .* é .* enquanto o arquivo .* é .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Falta o caracter nova linha no final do arquivo"
+syn match hgDiffCommon "^\%(SL\|HG\): Subdiretórios idênticos: .* e .*"
+
+" ro
+syn match hgDiffOnly "^\%(SL\|HG\): Doar în .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): FiÅŸierele .* ÅŸi .* sunt identice$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Fişierele .* şi .* diferă$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Fişierele binare .* şi .* diferă$"
+syn match hgDiffIsA "^\%(SL\|HG\): Fişierul .* este un .* pe când fişierul .* este un .*.$"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Nici un element de linie nouă la sfârşitul fişierului"
+syn match hgDiffCommon "^\%(SL\|HG\): Subdirectoare comune: .* ÅŸi .*.$"
+
+" ru
+syn match hgDiffOnly "^\%(SL\|HG\): Только в .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Файлы .* и .* идентичны$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Файлы .* и .* различаютÑÑ$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Файлы .* и .* различаютÑÑ$"
+syn match hgDiffIsA "^\%(SL\|HG\): Файл .* Ñто .*, тогда как файл .* -- .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Ð’ конце файла нет новой Ñтроки"
+syn match hgDiffCommon "^\%(SL\|HG\): Общие подкаталоги: .* и .*"
+
+" sr
+syn match hgDiffOnly "^\%(SL\|HG\): Само у .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Датотеке „.*“ и „.*“ Ñе подударају$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Датотеке .* и .* различите$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Бинарне датотеке .* и .* различите$"
+syn match hgDiffIsA "^\%(SL\|HG\): Датотека „.*“ је „.*“ док је датотека „.*“ „.*“$"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Без новог реда на крају датотеке"
+syn match hgDiffCommon "^\%(SL\|HG\): Заједнички поддиректоријуми: .* и .*"
+
+" sv
+syn match hgDiffOnly "^\%(SL\|HG\): Endast i .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Filerna .* och .* är lika$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Filerna .* och .* skiljer$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Filerna .* och .* skiljer$"
+syn match hgDiffIsA "^\%(SL\|HG\): Fil .* är en .* medan fil .* är en .*"
+syn match hgDiffBDiffer "^\%(SL\|HG\): De binära filerna .* och .* skiljer$"
+syn match hgDiffIsA "^\%(SL\|HG\): Filen .* är .* medan filen .* är .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Ingen nyrad vid filslut"
+syn match hgDiffCommon "^\%(SL\|HG\): Lika underkataloger: .* och .*"
+
+" tr
+syn match hgDiffOnly "^\%(SL\|HG\): Yalnızca .*'da: .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): .* ve .* dosyaları birbirinin aynı$"
+syn match hgDiffDiffer "^\%(SL\|HG\): .* ve .* dosyaları birbirinden farklı$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): .* ve .* dosyaları birbirinden farklı$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): İkili .* ve .* birbirinden farklı$"
+syn match hgDiffIsA "^\%(SL\|HG\): .* dosyası, bir .*, halbuki .* dosyası bir .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Dosya sonunda yenisatır yok."
+syn match hgDiffCommon "^\%(SL\|HG\): Ortak alt dizinler: .* ve .*"
+
+" uk
+syn match hgDiffOnly "^\%(SL\|HG\): Лише у .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Файли .* та .* ідентичні$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Файли .* та .* відрізнÑÑŽÑ‚ÑŒÑÑ$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Файли .* та .* відрізнÑÑŽÑ‚ÑŒÑÑ$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Двійкові файли .* та .* відрізнÑÑŽÑ‚ÑŒÑÑ$"
+syn match hgDiffIsA "^\%(SL\|HG\): Файл .* це .*, тоді Ñк файл .* -- .*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Ðаприкінці файлу немає нового Ñ€Ñдка"
+syn match hgDiffCommon "^\%(SL\|HG\): Спільні підкаталоги: .* та .*"
+
+" vi
+syn match hgDiffOnly "^\%(SL\|HG\): Chỉ trong .*"
+syn match hgDiffIdentical "^\%(SL\|HG\): Hai tập tin .* và .* là bằng nhau.$"
+syn match hgDiffIdentical "^\%(SL\|HG\): Cả .* và .* là cùng một tập tin$"
+syn match hgDiffDiffer "^\%(SL\|HG\): Hai tập tin .* và .* là khác nhau.$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Hai tập tin nhị phân .* và .* khác nhau$"
+syn match hgDiffIsA "^\%(SL\|HG\): Tập tin .* là một .* trong khi tập tin .* là một .*.$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): Hai tập tin .* và .* là khác nhau.$"
+syn match hgDiffIsA "^\%(SL\|HG\): Tập tin .* là một .* còn tập tin .* là một .*.$"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ Không có ký tự dòng mới tại kêt thức tập tin."
+syn match hgDiffCommon "^\%(SL\|HG\): Thư mục con chung: .* và .*"
+
+" zh_CN
+syn match hgDiffOnly "^\%(SL\|HG\): åªåœ¨ .* 存在:.*"
+syn match hgDiffIdentical "^\%(SL\|HG\): 檔案 .* å’Œ .* 相åŒ$"
+syn match hgDiffDiffer "^\%(SL\|HG\): 文件 .* å’Œ .* ä¸åŒ$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): 文件 .* å’Œ .* ä¸åŒ$"
+syn match hgDiffIsA "^\%(SL\|HG\): 文件 .* 是.*而文件 .* 是.*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ 文件尾没有 newline 字符"
+syn match hgDiffCommon "^\%(SL\|HG\): .* å’Œ .* 有共åŒçš„å­ç›®å½•$"
+
+" zh_TW
+syn match hgDiffOnly "^\%(SL\|HG\): åªåœ¨ .* 存在:.*"
+syn match hgDiffIdentical "^\%(SL\|HG\): 檔案 .* å’Œ .* 相åŒ$"
+syn match hgDiffDiffer "^\%(SL\|HG\): 檔案 .* 與 .* ä¸åŒ$"
+syn match hgDiffBDiffer "^\%(SL\|HG\): 二元碼檔 .* 與 .* ä¸åŒ$"
+syn match hgDiffIsA "^\%(SL\|HG\): 檔案 .* 是.*而檔案 .* 是.*"
+syn match hgDiffNoEOL "^\%(SL\|HG\): \\ 檔案末沒有 newline 字元"
+syn match hgDiffCommon "^\%(SL\|HG\): .* å’Œ .* 有共åŒçš„副目錄$"
+
+endif
+
+
+syn match hgDiffRemoved "^\%(SL\|HG\): -.*"
+syn match hgDiffRemoved "^\%(SL\|HG\): <.*"
+syn match hgDiffAdded "^\%(SL\|HG\): +.*"
+syn match hgDiffAdded "^\%(SL\|HG\): >.*"
+syn match hgDiffChanged "^\%(SL\|HG\): ! .*"
+
+syn match hgDiffSubname " @@..*"ms=s+3 contained
+syn match hgDiffLine "^\%(SL\|HG\): @.*" contains=hgDiffSubname
+syn match hgDiffLine "^\%(SL\|HG\): \<\d\+\>.*"
+syn match hgDiffLine "^\%(SL\|HG\): \*\*\*\*.*"
+syn match hgDiffLine "^\%(SL\|HG\): ---$"
+
+" Some versions of diff have lines like "#c#" and "#d#" (where # is a number)
+syn match hgDiffLine "^\%(SL\|HG\): \d\+\(,\d\+\)\=[cda]\d\+\>.*"
+
+syn match hgDiffFile "^\%(SL\|HG\): diff\>.*"
+syn match hgDiffFile "^\%(SL\|HG\): Index: .*"
+syn match hgDiffFile "^\%(SL\|HG\): ==== .*"
+
+if search('^\%(SL\|HG\): @@ -\S\+ +\S\+ @@', 'nw', '', 100)
+ " unified
+ syn match hgDiffOldFile "^\%(SL\|HG\): --- .*"
+ syn match hgDiffNewFile "^\%(SL\|HG\): +++ .*"
+else
+ " context / old style
+ syn match hgDiffOldFile "^\%(SL\|HG\): \*\*\* .*"
+ syn match hgDiffNewFile "^\%(SL\|HG\): --- .*"
+endif
+
+" Used by git
+syn match hgDiffIndexLine "^\%(SL\|HG\): index \x\x\x\x.*"
+
+syn match hgDiffComment "^\%(SL\|HG\): #.*"
+
+" Define the default highlighting.
+" Only used when an item doesn't have highlighting yet
+hi def link hgDiffOldFile hgDiffFile
+hi def link hgDiffNewFile hgDiffFile
+hi def link hgDiffIndexLine PreProc
+hi def link hgDiffFile Type
+hi def link hgDiffOnly Constant
+hi def link hgDiffIdentical Constant
+hi def link hgDiffDiffer Constant
+hi def link hgDiffBDiffer Constant
+hi def link hgDiffIsA Constant
+hi def link hgDiffNoEOL Constant
+hi def link hgDiffCommon Constant
+hi def link hgDiffRemoved Special
+hi def link hgDiffChanged PreProc
+hi def link hgDiffAdded Identifier
+hi def link hgDiffLine Statement
+hi def link hgDiffSubname PreProc
+hi def link hgDiffComment Comment
+
+let b:current_syntax = "hgcommitDiff"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/shared/typescriptcommon.vim b/runtime/syntax/shared/typescriptcommon.vim
new file mode 100644
index 0000000..ef362fc
--- /dev/null
+++ b/runtime/syntax/shared/typescriptcommon.vim
@@ -0,0 +1,2099 @@
+" Vim syntax file
+" Language: TypeScript and TypeScriptReact
+" Maintainer: Bram Moolenaar, Herrington Darkholme
+" Last Change: 2021 Sep 22
+" Based On: Herrington Darkholme's yats.vim
+" Changes: See https:github.com/HerringtonDarkholme/yats.vim
+" Credits: See yats.vim on github
+
+if &cpo =~ 'C'
+ let s:cpo_save = &cpo
+ set cpo&vim
+endif
+
+
+" NOTE: this results in accurate highlighting, but can be slow.
+syntax sync fromstart
+
+"Dollar sign is permitted anywhere in an identifier
+setlocal iskeyword-=$
+if main_syntax == 'typescript' || main_syntax == 'typescriptreact'
+ setlocal iskeyword+=$
+ " syntax cluster htmlJavaScript contains=TOP
+endif
+" For private field added from TypeScript 3.8
+setlocal iskeyword+=#
+
+" lowest priority on least used feature
+syntax match typescriptLabel /[a-zA-Z_$]\k*:/he=e-1 contains=typescriptReserved nextgroup=@typescriptStatement skipwhite skipempty
+
+" other keywords like return,case,yield uses containedin
+syntax region typescriptBlock matchgroup=typescriptBraces start=/{/ end=/}/ contains=@typescriptStatement,@typescriptComments fold
+syntax cluster afterIdentifier contains=
+ \ typescriptDotNotation,
+ \ typescriptFuncCallArg,
+ \ typescriptTemplate,
+ \ typescriptIndexExpr,
+ \ @typescriptSymbols,
+ \ typescriptTypeArguments
+
+syntax match typescriptIdentifierName /\<\K\k*/
+ \ nextgroup=@afterIdentifier
+ \ transparent
+ \ contains=@_semantic
+ \ skipnl skipwhite
+
+syntax match typescriptProp contained /\K\k*!\?/
+ \ transparent
+ \ contains=@props
+ \ nextgroup=@afterIdentifier
+ \ skipwhite skipempty
+
+syntax region typescriptIndexExpr contained matchgroup=typescriptProperty start=/\[/rs=s+1 end=/]/he=e-1 contains=@typescriptValue nextgroup=@typescriptSymbols,typescriptDotNotation,typescriptFuncCallArg skipwhite skipempty
+
+syntax match typescriptDotNotation /\.\|?\.\|!\./ nextgroup=typescriptProp skipnl
+syntax match typescriptDotStyleNotation /\.style\./ nextgroup=typescriptDOMStyle transparent
+" syntax match typescriptFuncCall contained /[a-zA-Z]\k*\ze(/ nextgroup=typescriptFuncCallArg
+syntax region typescriptParenExp matchgroup=typescriptParens start=/(/ end=/)/ contains=@typescriptComments,@typescriptValue,typescriptCastKeyword nextgroup=@typescriptSymbols skipwhite skipempty
+syntax region typescriptFuncCallArg contained matchgroup=typescriptParens start=/(/ end=/)/ contains=@typescriptValue,@typescriptComments nextgroup=@typescriptSymbols,typescriptDotNotation skipwhite skipempty skipnl
+syntax region typescriptEventFuncCallArg contained matchgroup=typescriptParens start=/(/ end=/)/ contains=@typescriptEventExpression
+syntax region typescriptEventString contained start=/\z(["']\)/ skip=/\\\\\|\\\z1\|\\\n/ end=/\z1\|$/ contains=typescriptASCII,@events
+
+syntax region typescriptDestructureString
+ \ start=/\z(["']\)/ skip=/\\\\\|\\\z1\|\\\n/ end=/\z1\|$/
+ \ contains=typescriptASCII
+ \ nextgroup=typescriptDestructureAs
+ \ contained skipwhite skipempty
+
+syntax cluster typescriptVariableDeclarations
+ \ contains=typescriptVariableDeclaration,@typescriptDestructures
+
+syntax match typescriptVariableDeclaration /[A-Za-z_$]\k*/
+ \ nextgroup=typescriptTypeAnnotation,typescriptAssign
+ \ contained skipwhite skipempty
+
+syntax cluster typescriptDestructureVariables contains=
+ \ typescriptRestOrSpread,
+ \ typescriptDestructureComma,
+ \ typescriptDestructureLabel,
+ \ typescriptDestructureVariable,
+ \ @typescriptDestructures
+
+syntax match typescriptDestructureVariable /[A-Za-z_$]\k*/ contained
+ \ nextgroup=typescriptDefaultParam
+ \ contained skipwhite skipempty
+
+syntax match typescriptDestructureLabel /[A-Za-z_$]\k*\ze\_s*:/
+ \ nextgroup=typescriptDestructureAs
+ \ contained skipwhite skipempty
+
+syntax match typescriptDestructureAs /:/
+ \ nextgroup=typescriptDestructureVariable,@typescriptDestructures
+ \ contained skipwhite skipempty
+
+syntax match typescriptDestructureComma /,/ contained
+
+syntax cluster typescriptDestructures contains=
+ \ typescriptArrayDestructure,
+ \ typescriptObjectDestructure
+
+syntax region typescriptArrayDestructure matchgroup=typescriptBraces
+ \ start=/\[/ end=/]/
+ \ contains=@typescriptDestructureVariables,@typescriptComments
+ \ nextgroup=typescriptTypeAnnotation,typescriptAssign
+ \ transparent contained skipwhite skipempty fold
+
+syntax region typescriptObjectDestructure matchgroup=typescriptBraces
+ \ start=/{/ end=/}/
+ \ contains=typescriptDestructureString,@typescriptDestructureVariables,@typescriptComments
+ \ nextgroup=typescriptTypeAnnotation,typescriptAssign
+ \ transparent contained skipwhite skipempty fold
+
+"Syntax in the JavaScript code
+
+" String
+syntax match typescriptASCII contained /\\\d\d\d/
+
+syntax region typescriptTemplateSubstitution matchgroup=typescriptTemplateSB
+ \ start=/\${/ end=/}/
+ \ contains=@typescriptValue
+ \ contained
+
+
+syntax region typescriptString
+ \ start=+\z(["']\)+ skip=+\\\%(\z1\|$\)+ end=+\z1+ end=+$+
+ \ contains=typescriptSpecial,@Spell
+ \ extend
+
+syntax match typescriptSpecial contained "\v\\%(x\x\x|u%(\x{4}|\{\x{1,6}})|c\u|.)"
+
+" From vim runtime
+" <https://github.com/vim/vim/blob/master/runtime/syntax/javascript.vim#L48>
+syntax region typescriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gimuy]\{0,5\}\s*$+ end=+/[gimuy]\{0,5\}\s*[;.,)\]}:]+me=e-1 nextgroup=typescriptDotNotation oneline
+
+syntax region typescriptTemplate
+ \ start=/`/ skip=/\\\\\|\\`\|\n/ end=/`\|$/
+ \ contains=typescriptTemplateSubstitution,typescriptSpecial,@Spell
+ \ nextgroup=@typescriptSymbols
+ \ skipwhite skipempty
+
+"Array
+syntax region typescriptArray matchgroup=typescriptBraces
+ \ start=/\[/ end=/]/
+ \ contains=@typescriptValue,@typescriptComments
+ \ nextgroup=@typescriptSymbols,typescriptDotNotation
+ \ skipwhite skipempty fold
+
+" Number
+syntax match typescriptNumber /\<0[bB][01][01_]*\>/ nextgroup=@typescriptSymbols skipwhite skipempty
+syntax match typescriptNumber /\<0[oO][0-7][0-7_]*\>/ nextgroup=@typescriptSymbols skipwhite skipempty
+syntax match typescriptNumber /\<0[xX][0-9a-fA-F][0-9a-fA-F_]*\>/ nextgroup=@typescriptSymbols skipwhite skipempty
+syntax match typescriptNumber /\<\%(\d[0-9_]*\%(\.\d[0-9_]*\)\=\|\.\d[0-9_]*\)\%([eE][+-]\=\d[0-9_]*\)\=\>/
+ \ nextgroup=typescriptSymbols skipwhite skipempty
+
+syntax region typescriptObjectLiteral matchgroup=typescriptBraces
+ \ start=/{/ end=/}/
+ \ contains=@typescriptComments,typescriptObjectLabel,typescriptStringProperty,typescriptComputedPropertyName,typescriptObjectAsyncKeyword
+ \ fold contained
+
+syntax keyword typescriptObjectAsyncKeyword async contained
+
+syntax match typescriptObjectLabel contained /\k\+\_s*/
+ \ nextgroup=typescriptObjectColon,@typescriptCallImpl
+ \ skipwhite skipempty
+
+syntax region typescriptStringProperty contained
+ \ start=/\z(["']\)/ skip=/\\\\\|\\\z1\|\\\n/ end=/\z1/
+ \ nextgroup=typescriptObjectColon,@typescriptCallImpl
+ \ skipwhite skipempty
+
+" syntax region typescriptPropertyName contained start=/\z(["']\)/ skip=/\\\\\|\\\z1\|\\\n/ end=/\z1(/me=e-1 nextgroup=@typescriptCallSignature skipwhite skipempty oneline
+syntax region typescriptComputedPropertyName contained matchgroup=typescriptBraces
+ \ start=/\[/rs=s+1 end=/]/
+ \ contains=@typescriptValue
+ \ nextgroup=typescriptObjectColon,@typescriptCallImpl
+ \ skipwhite skipempty
+
+" syntax region typescriptComputedPropertyName contained matchgroup=typescriptPropertyName start=/\[/rs=s+1 end=/]\_s*:/he=e-1 contains=@typescriptValue nextgroup=@typescriptValue skipwhite skipempty
+" syntax region typescriptComputedPropertyName contained matchgroup=typescriptPropertyName start=/\[/rs=s+1 end=/]\_s*(/me=e-1 contains=@typescriptValue nextgroup=@typescriptCallSignature skipwhite skipempty
+" Value for object, statement for label statement
+syntax match typescriptRestOrSpread /\.\.\./ contained
+syntax match typescriptObjectSpread /\.\.\./ contained containedin=typescriptObjectLiteral,typescriptArray nextgroup=@typescriptValue
+
+syntax match typescriptObjectColon contained /:/ nextgroup=@typescriptValue skipwhite skipempty
+
+" + - ^ ~
+syntax match typescriptUnaryOp /[+\-~!]/
+ \ nextgroup=@typescriptValue
+ \ skipwhite
+
+syntax region typescriptTernary matchgroup=typescriptTernaryOp start=/?[.?]\@!/ end=/:/ contained contains=@typescriptValue,@typescriptComments nextgroup=@typescriptValue skipwhite skipempty
+
+syntax match typescriptAssign /=/ nextgroup=@typescriptValue
+ \ skipwhite skipempty
+
+" 2: ==, ===
+syntax match typescriptBinaryOp contained /===\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 6: >>>=, >>>, >>=, >>, >=, >
+syntax match typescriptBinaryOp contained />\(>>=\|>>\|>=\|>\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 4: <<=, <<, <=, <
+syntax match typescriptBinaryOp contained /<\(<=\|<\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 3: ||, |=, |, ||=
+syntax match typescriptBinaryOp contained /||\?=\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 4: &&, &=, &, &&=
+syntax match typescriptBinaryOp contained /&&\?=\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 2: ??, ??=
+syntax match typescriptBinaryOp contained /??=\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 2: *=, *
+syntax match typescriptBinaryOp contained /\*=\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 2: %=, %
+syntax match typescriptBinaryOp contained /%=\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 2: /=, /
+syntax match typescriptBinaryOp contained +/\(=\|[^\*/]\@=\)+ nextgroup=@typescriptValue skipwhite skipempty
+syntax match typescriptBinaryOp contained /!==\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 2: !=, !==
+syntax match typescriptBinaryOp contained /+\(+\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 3: +, ++, +=
+syntax match typescriptBinaryOp contained /-\(-\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
+" 3: -, --, -=
+
+" exponentiation operator
+" 2: **, **=
+syntax match typescriptBinaryOp contained /\*\*=\?/ nextgroup=@typescriptValue
+
+syntax cluster typescriptSymbols contains=typescriptBinaryOp,typescriptKeywordOp,typescriptTernary,typescriptAssign,typescriptCastKeyword
+
+" runtime syntax/basic/reserved.vim
+"Import
+syntax keyword typescriptImport from as
+syntax keyword typescriptImport import
+ \ nextgroup=typescriptImportType
+ \ skipwhite
+syntax keyword typescriptImportType type
+ \ contained
+syntax keyword typescriptExport export
+ \ nextgroup=typescriptExportType
+ \ skipwhite
+syntax match typescriptExportType /\<type\s*{\@=/
+ \ contained skipwhite skipempty skipnl
+syntax keyword typescriptModule namespace module
+
+"this
+
+"JavaScript Prototype
+syntax keyword typescriptPrototype prototype
+ \ nextgroup=@afterIdentifier
+
+syntax keyword typescriptCastKeyword as
+ \ nextgroup=@typescriptType
+ \ skipwhite
+
+"Program Keywords
+syntax keyword typescriptIdentifier arguments this super
+ \ nextgroup=@afterIdentifier
+
+syntax keyword typescriptVariable let var
+ \ nextgroup=@typescriptVariableDeclarations
+ \ skipwhite skipempty
+
+syntax keyword typescriptVariable const
+ \ nextgroup=typescriptEnum,@typescriptVariableDeclarations
+ \ skipwhite skipempty
+
+syntax region typescriptEnum matchgroup=typescriptEnumKeyword start=/enum / end=/\ze{/
+ \ nextgroup=typescriptBlock
+ \ skipwhite
+
+syntax keyword typescriptKeywordOp
+ \ contained in instanceof nextgroup=@typescriptValue
+syntax keyword typescriptOperator delete new typeof void
+ \ nextgroup=@typescriptValue
+ \ skipwhite skipempty
+
+syntax keyword typescriptForOperator contained in of
+syntax keyword typescriptBoolean true false nextgroup=@typescriptSymbols skipwhite skipempty
+syntax keyword typescriptNull null undefined nextgroup=@typescriptSymbols skipwhite skipempty
+syntax keyword typescriptMessage alert confirm prompt status
+ \ nextgroup=typescriptDotNotation,typescriptFuncCallArg
+syntax keyword typescriptGlobal self top parent
+ \ nextgroup=@afterIdentifier
+
+"Statement Keywords
+syntax keyword typescriptConditional if else switch
+ \ nextgroup=typescriptConditionalParen
+ \ skipwhite skipempty skipnl
+syntax keyword typescriptConditionalElse else
+syntax keyword typescriptRepeat do while for nextgroup=typescriptLoopParen skipwhite skipempty
+syntax keyword typescriptRepeat for nextgroup=typescriptLoopParen,typescriptAsyncFor skipwhite skipempty
+syntax keyword typescriptBranch break continue containedin=typescriptBlock
+syntax keyword typescriptCase case nextgroup=@typescriptPrimitive skipwhite containedin=typescriptBlock
+syntax keyword typescriptDefault default containedin=typescriptBlock nextgroup=@typescriptValue,typescriptClassKeyword,typescriptInterfaceKeyword skipwhite oneline
+syntax keyword typescriptStatementKeyword with
+syntax keyword typescriptStatementKeyword yield skipwhite nextgroup=@typescriptValue containedin=typescriptBlock
+syntax keyword typescriptStatementKeyword return skipwhite contained nextgroup=@typescriptValue containedin=typescriptBlock
+
+syntax keyword typescriptTry try
+syntax keyword typescriptExceptions catch throw finally
+syntax keyword typescriptDebugger debugger
+
+syntax keyword typescriptAsyncFor await nextgroup=typescriptLoopParen skipwhite skipempty contained
+
+syntax region typescriptLoopParen contained matchgroup=typescriptParens
+ \ start=/(/ end=/)/
+ \ contains=typescriptVariable,typescriptForOperator,typescriptEndColons,@typescriptValue,@typescriptComments
+ \ nextgroup=typescriptBlock
+ \ skipwhite skipempty
+syntax region typescriptConditionalParen contained matchgroup=typescriptParens
+ \ start=/(/ end=/)/
+ \ contains=@typescriptValue,@typescriptComments
+ \ nextgroup=typescriptBlock
+ \ skipwhite skipempty
+syntax match typescriptEndColons /[;,]/ contained
+
+syntax keyword typescriptAmbientDeclaration declare nextgroup=@typescriptAmbients
+ \ skipwhite skipempty
+
+syntax cluster typescriptAmbients contains=
+ \ typescriptVariable,
+ \ typescriptFuncKeyword,
+ \ typescriptClassKeyword,
+ \ typescriptAbstract,
+ \ typescriptEnumKeyword,typescriptEnum,
+ \ typescriptModule
+
+"Syntax coloring for Node.js shebang line
+syntax match shellbang "^#!.*node\>"
+syntax match shellbang "^#!.*iojs\>"
+
+
+"JavaScript comments
+syntax keyword typescriptCommentTodo TODO FIXME XXX TBD
+syntax match typescriptMagicComment "@ts-\%(ignore\|expect-error\)\>"
+syntax match typescriptLineComment "//.*"
+ \ contains=@Spell,typescriptCommentTodo,typescriptRef,typescriptMagicComment
+syntax region typescriptComment
+ \ start="/\*" end="\*/"
+ \ contains=@Spell,typescriptCommentTodo extend
+syntax cluster typescriptComments
+ \ contains=typescriptDocComment,typescriptComment,typescriptLineComment
+
+syntax match typescriptRef +///\s*<reference\s\+.*\/>$+
+ \ contains=typescriptString
+syntax match typescriptRef +///\s*<amd-dependency\s\+.*\/>$+
+ \ contains=typescriptString
+syntax match typescriptRef +///\s*<amd-module\s\+.*\/>$+
+ \ contains=typescriptString
+
+"JSDoc
+syntax case ignore
+
+syntax region typescriptDocComment matchgroup=typescriptComment
+ \ start="/\*\*" end="\*/"
+ \ contains=typescriptDocNotation,typescriptCommentTodo,@Spell
+ \ fold keepend
+syntax match typescriptDocNotation contained /@/ nextgroup=typescriptDocTags
+
+syntax keyword typescriptDocTags contained constant constructor constructs function ignore inner private public readonly static
+syntax keyword typescriptDocTags contained const dict expose inheritDoc interface nosideeffects override protected struct internal
+syntax keyword typescriptDocTags contained example global
+syntax keyword typescriptDocTags contained alpha beta defaultValue eventProperty experimental label
+syntax keyword typescriptDocTags contained packageDocumentation privateRemarks remarks sealed typeParam
+
+" syntax keyword typescriptDocTags contained ngdoc nextgroup=typescriptDocNGDirective
+syntax keyword typescriptDocTags contained ngdoc scope priority animations
+syntax keyword typescriptDocTags contained ngdoc restrict methodOf propertyOf eventOf eventType nextgroup=typescriptDocParam skipwhite
+syntax keyword typescriptDocNGDirective contained overview service object function method property event directive filter inputType error
+
+syntax keyword typescriptDocTags contained abstract virtual access augments
+
+syntax keyword typescriptDocTags contained arguments callback lends memberOf name type kind link mixes mixin tutorial nextgroup=typescriptDocParam skipwhite
+syntax keyword typescriptDocTags contained variation nextgroup=typescriptDocNumParam skipwhite
+
+syntax keyword typescriptDocTags contained author class classdesc copyright default defaultvalue nextgroup=typescriptDocDesc skipwhite
+syntax keyword typescriptDocTags contained deprecated description external host nextgroup=typescriptDocDesc skipwhite
+syntax keyword typescriptDocTags contained file fileOverview overview namespace requires since version nextgroup=typescriptDocDesc skipwhite
+syntax keyword typescriptDocTags contained summary todo license preserve nextgroup=typescriptDocDesc skipwhite
+
+syntax keyword typescriptDocTags contained borrows exports nextgroup=typescriptDocA skipwhite
+syntax keyword typescriptDocTags contained param arg argument property prop module nextgroup=typescriptDocNamedParamType,typescriptDocParamName skipwhite
+syntax keyword typescriptDocTags contained define enum extends implements this typedef nextgroup=typescriptDocParamType skipwhite
+syntax keyword typescriptDocTags contained return returns throws exception nextgroup=typescriptDocParamType,typescriptDocParamName skipwhite
+syntax keyword typescriptDocTags contained see nextgroup=typescriptDocRef skipwhite
+
+syntax keyword typescriptDocTags contained function func method nextgroup=typescriptDocName skipwhite
+syntax match typescriptDocName contained /\h\w*/
+
+syntax keyword typescriptDocTags contained fires event nextgroup=typescriptDocEventRef skipwhite
+syntax match typescriptDocEventRef contained /\h\w*#\(\h\w*\:\)\?\h\w*/
+
+syntax match typescriptDocNamedParamType contained /{.\+}/ nextgroup=typescriptDocParamName skipwhite
+syntax match typescriptDocParamName contained /\[\?0-9a-zA-Z_\.]\+\]\?/ nextgroup=typescriptDocDesc skipwhite
+syntax match typescriptDocParamType contained /{.\+}/ nextgroup=typescriptDocDesc skipwhite
+syntax match typescriptDocA contained /\%(#\|\w\|\.\|:\|\/\)\+/ nextgroup=typescriptDocAs skipwhite
+syntax match typescriptDocAs contained /\s*as\s*/ nextgroup=typescriptDocB skipwhite
+syntax match typescriptDocB contained /\%(#\|\w\|\.\|:\|\/\)\+/
+syntax match typescriptDocParam contained /\%(#\|\w\|\.\|:\|\/\|-\)\+/
+syntax match typescriptDocNumParam contained /\d\+/
+syntax match typescriptDocRef contained /\%(#\|\w\|\.\|:\|\/\)\+/
+syntax region typescriptDocLinkTag contained matchgroup=typescriptDocLinkTag start=/{/ end=/}/ contains=typescriptDocTags
+
+syntax cluster typescriptDocs contains=typescriptDocParamType,typescriptDocNamedParamType,typescriptDocParam
+
+if exists("main_syntax") && main_syntax == "typescript"
+ syntax sync clear
+ syntax sync ccomment typescriptComment minlines=200
+endif
+
+syntax case match
+
+" Types
+syntax match typescriptOptionalMark /?/ contained
+
+syntax cluster typescriptTypeParameterCluster contains=
+ \ typescriptTypeParameter,
+ \ typescriptGenericDefault
+
+syntax region typescriptTypeParameters matchgroup=typescriptTypeBrackets
+ \ start=/</ end=/>/
+ \ contains=@typescriptTypeParameterCluster
+ \ contained
+
+syntax match typescriptTypeParameter /\K\k*/
+ \ nextgroup=typescriptConstraint
+ \ contained skipwhite skipnl
+
+syntax keyword typescriptConstraint extends
+ \ nextgroup=@typescriptType
+ \ contained skipwhite skipnl
+
+syntax match typescriptGenericDefault /=/
+ \ nextgroup=@typescriptType
+ \ contained skipwhite
+
+"><
+" class A extend B<T> {} // ClassBlock
+" func<T>() // FuncCallArg
+syntax region typescriptTypeArguments matchgroup=typescriptTypeBrackets
+ \ start=/\></ end=/>/
+ \ contains=@typescriptType
+ \ nextgroup=typescriptFuncCallArg,@typescriptTypeOperator
+ \ contained skipwhite
+
+
+syntax cluster typescriptType contains=
+ \ @typescriptPrimaryType,
+ \ typescriptUnion,
+ \ @typescriptFunctionType,
+ \ typescriptConstructorType
+
+" array type: A[]
+" type indexing A['key']
+syntax region typescriptTypeBracket contained
+ \ start=/\[/ end=/\]/
+ \ contains=typescriptString,typescriptNumber
+ \ nextgroup=@typescriptTypeOperator
+ \ skipwhite skipempty
+
+syntax cluster typescriptPrimaryType contains=
+ \ typescriptParenthesizedType,
+ \ typescriptPredefinedType,
+ \ typescriptTypeReference,
+ \ typescriptObjectType,
+ \ typescriptTupleType,
+ \ typescriptTypeQuery,
+ \ typescriptStringLiteralType,
+ \ typescriptTemplateLiteralType,
+ \ typescriptReadonlyArrayKeyword,
+ \ typescriptAssertType
+
+syntax region typescriptStringLiteralType contained
+ \ start=/\z(["']\)/ skip=/\\\\\|\\\z1\|\\\n/ end=/\z1\|$/
+ \ nextgroup=typescriptUnion
+ \ skipwhite skipempty
+
+syntax region typescriptTemplateLiteralType contained
+ \ start=/`/ skip=/\\\\\|\\`\|\n/ end=/`\|$/
+ \ contains=typescriptTemplateSubstitutionType
+ \ nextgroup=typescriptTypeOperator
+ \ skipwhite skipempty
+
+syntax region typescriptTemplateSubstitutionType matchgroup=typescriptTemplateSB
+ \ start=/\${/ end=/}/
+ \ contains=@typescriptType
+ \ contained
+
+syntax region typescriptParenthesizedType matchgroup=typescriptParens
+ \ start=/(/ end=/)/
+ \ contains=@typescriptType
+ \ nextgroup=@typescriptTypeOperator
+ \ contained skipwhite skipempty fold
+
+syntax match typescriptTypeReference /\K\k*\(\.\K\k*\)*/
+ \ nextgroup=typescriptTypeArguments,@typescriptTypeOperator,typescriptUserDefinedType
+ \ skipwhite contained skipempty
+
+syntax keyword typescriptPredefinedType any number boolean string void never undefined null object unknown
+ \ nextgroup=@typescriptTypeOperator
+ \ contained skipwhite skipempty
+
+syntax match typescriptPredefinedType /unique symbol/
+ \ nextgroup=@typescriptTypeOperator
+ \ contained skipwhite skipempty
+
+syntax region typescriptObjectType matchgroup=typescriptBraces
+ \ start=/{/ end=/}/
+ \ contains=@typescriptTypeMember,typescriptEndColons,@typescriptComments,typescriptAccessibilityModifier,typescriptReadonlyModifier
+ \ nextgroup=@typescriptTypeOperator
+ \ contained skipwhite skipnl fold
+
+syntax cluster typescriptTypeMember contains=
+ \ @typescriptCallSignature,
+ \ typescriptConstructSignature,
+ \ typescriptIndexSignature,
+ \ @typescriptMembers
+
+syntax match typescriptTupleLable /\K\k*?\?:/
+ \ contained
+
+syntax region typescriptTupleType matchgroup=typescriptBraces
+ \ start=/\[/ end=/\]/
+ \ contains=@typescriptType,@typescriptComments,typescriptRestOrSpread,typescriptTupleLable
+ \ contained skipwhite
+
+syntax cluster typescriptTypeOperator
+ \ contains=typescriptUnion,typescriptTypeBracket,typescriptConstraint,typescriptConditionalType
+
+syntax match typescriptUnion /|\|&/ contained nextgroup=@typescriptPrimaryType skipwhite skipempty
+
+syntax match typescriptConditionalType /?\|:/ contained nextgroup=@typescriptPrimaryType skipwhite skipempty
+
+syntax cluster typescriptFunctionType contains=typescriptGenericFunc,typescriptFuncType
+syntax region typescriptGenericFunc matchgroup=typescriptTypeBrackets
+ \ start=/</ end=/>/
+ \ contains=typescriptTypeParameter
+ \ nextgroup=typescriptFuncType
+ \ containedin=typescriptFunctionType
+ \ contained skipwhite skipnl
+
+syntax region typescriptFuncType matchgroup=typescriptParens
+ \ start=/(/ end=/)\s*=>/me=e-2
+ \ contains=@typescriptParameterList
+ \ nextgroup=typescriptFuncTypeArrow
+ \ contained skipwhite skipnl oneline
+
+syntax match typescriptFuncTypeArrow /=>/
+ \ nextgroup=@typescriptType
+ \ containedin=typescriptFuncType
+ \ contained skipwhite skipnl
+
+
+syntax keyword typescriptConstructorType new
+ \ nextgroup=@typescriptFunctionType
+ \ contained skipwhite skipnl
+
+syntax keyword typescriptUserDefinedType is
+ \ contained nextgroup=@typescriptType skipwhite skipempty
+
+syntax keyword typescriptTypeQuery typeof keyof
+ \ nextgroup=typescriptTypeReference
+ \ contained skipwhite skipnl
+
+syntax keyword typescriptAssertType asserts
+ \ nextgroup=typescriptTypeReference
+ \ contained skipwhite skipnl
+
+syntax cluster typescriptCallSignature contains=typescriptGenericCall,typescriptCall
+syntax region typescriptGenericCall matchgroup=typescriptTypeBrackets
+ \ start=/</ end=/>/
+ \ contains=typescriptTypeParameter
+ \ nextgroup=typescriptCall
+ \ contained skipwhite skipnl
+syntax region typescriptCall matchgroup=typescriptParens
+ \ start=/(/ end=/)/
+ \ contains=typescriptDecorator,@typescriptParameterList,@typescriptComments
+ \ nextgroup=typescriptTypeAnnotation,typescriptBlock
+ \ contained skipwhite skipnl
+
+syntax match typescriptTypeAnnotation /:/
+ \ nextgroup=@typescriptType
+ \ contained skipwhite skipnl
+
+syntax cluster typescriptParameterList contains=
+ \ typescriptTypeAnnotation,
+ \ typescriptAccessibilityModifier,
+ \ typescriptReadonlyModifier,
+ \ typescriptOptionalMark,
+ \ typescriptRestOrSpread,
+ \ typescriptFuncComma,
+ \ typescriptDefaultParam
+
+syntax match typescriptFuncComma /,/ contained
+
+syntax match typescriptDefaultParam /=/
+ \ nextgroup=@typescriptValue
+ \ contained skipwhite
+
+syntax keyword typescriptConstructSignature new
+ \ nextgroup=@typescriptCallSignature
+ \ contained skipwhite
+
+syntax region typescriptIndexSignature matchgroup=typescriptBraces
+ \ start=/\[/ end=/\]/
+ \ contains=typescriptPredefinedType,typescriptMappedIn,typescriptString
+ \ nextgroup=typescriptTypeAnnotation
+ \ contained skipwhite oneline
+
+syntax keyword typescriptMappedIn in
+ \ nextgroup=@typescriptType
+ \ contained skipwhite skipnl skipempty
+
+syntax keyword typescriptAliasKeyword type
+ \ nextgroup=typescriptAliasDeclaration
+ \ skipwhite skipnl skipempty
+
+syntax region typescriptAliasDeclaration matchgroup=typescriptUnion
+ \ start=/ / end=/=/
+ \ nextgroup=@typescriptType
+ \ contains=typescriptConstraint,typescriptTypeParameters
+ \ contained skipwhite skipempty
+
+syntax keyword typescriptReadonlyArrayKeyword readonly
+ \ nextgroup=@typescriptPrimaryType
+ \ skipwhite
+
+
+" extension
+if get(g:, 'yats_host_keyword', 1)
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Function Boolean
+ " use of nextgroup Suggested by Doug Kearns
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Error EvalError nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName InternalError
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName RangeError ReferenceError
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName StopIteration
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName SyntaxError TypeError
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName URIError Date
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Float32Array
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Float64Array
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Int16Array Int32Array
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Int8Array Uint16Array
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Uint32Array Uint8Array
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Uint8ClampedArray
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName ParallelArray
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName ArrayBuffer DataView
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Iterator Generator
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Reflect Proxy
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName arguments
+ hi def link typescriptGlobal Structure
+ syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName eval uneval nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName isFinite nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName isNaN parseFloat nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName parseInt nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName decodeURI nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName decodeURIComponent nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName encodeURI nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName encodeURIComponent nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptGlobalMethod
+ hi def link typescriptGlobalMethod Structure
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Number nextgroup=typescriptGlobalNumberDot,typescriptFuncCallArg
+ syntax match typescriptGlobalNumberDot /\./ contained nextgroup=typescriptNumberStaticProp,typescriptNumberStaticMethod,typescriptProp
+ syntax keyword typescriptNumberStaticProp contained EPSILON MAX_SAFE_INTEGER MAX_VALUE
+ syntax keyword typescriptNumberStaticProp contained MIN_SAFE_INTEGER MIN_VALUE NEGATIVE_INFINITY
+ syntax keyword typescriptNumberStaticProp contained NaN POSITIVE_INFINITY
+ hi def link typescriptNumberStaticProp Keyword
+ syntax keyword typescriptNumberStaticMethod contained isFinite isInteger isNaN isSafeInteger nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptNumberStaticMethod contained parseFloat parseInt nextgroup=typescriptFuncCallArg
+ hi def link typescriptNumberStaticMethod Keyword
+ syntax keyword typescriptNumberMethod contained toExponential toFixed toLocaleString nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptNumberMethod contained toPrecision toSource toString valueOf nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptNumberMethod
+ hi def link typescriptNumberMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName String nextgroup=typescriptGlobalStringDot,typescriptFuncCallArg
+ syntax match typescriptGlobalStringDot /\./ contained nextgroup=typescriptStringStaticMethod,typescriptProp
+ syntax keyword typescriptStringStaticMethod contained fromCharCode fromCodePoint raw nextgroup=typescriptFuncCallArg
+ hi def link typescriptStringStaticMethod Keyword
+ syntax keyword typescriptStringMethod contained anchor charAt charCodeAt codePointAt nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptStringMethod contained concat endsWith includes indexOf lastIndexOf nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptStringMethod contained link localeCompare match normalize nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptStringMethod contained padStart padEnd repeat replace search nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptStringMethod contained slice split startsWith substr substring nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptStringMethod contained toLocaleLowerCase toLocaleUpperCase nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptStringMethod contained toLowerCase toString toUpperCase trim nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptStringMethod contained valueOf nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptStringMethod
+ hi def link typescriptStringMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Array nextgroup=typescriptGlobalArrayDot,typescriptFuncCallArg
+ syntax match typescriptGlobalArrayDot /\./ contained nextgroup=typescriptArrayStaticMethod,typescriptProp
+ syntax keyword typescriptArrayStaticMethod contained from isArray of nextgroup=typescriptFuncCallArg
+ hi def link typescriptArrayStaticMethod Keyword
+ syntax keyword typescriptArrayMethod contained concat copyWithin entries every fill nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptArrayMethod contained filter find findIndex forEach indexOf nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptArrayMethod contained includes join keys lastIndexOf map nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptArrayMethod contained pop push reduce reduceRight reverse nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptArrayMethod contained shift slice some sort splice toLocaleString nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptArrayMethod contained toSource toString unshift nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptArrayMethod
+ hi def link typescriptArrayMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Object nextgroup=typescriptGlobalObjectDot,typescriptFuncCallArg
+ syntax match typescriptGlobalObjectDot /\./ contained nextgroup=typescriptObjectStaticMethod,typescriptProp
+ syntax keyword typescriptObjectStaticMethod contained create defineProperties defineProperty nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptObjectStaticMethod contained entries freeze getOwnPropertyDescriptors nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptObjectStaticMethod contained getOwnPropertyDescriptor getOwnPropertyNames nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptObjectStaticMethod contained getOwnPropertySymbols getPrototypeOf nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptObjectStaticMethod contained is isExtensible isFrozen isSealed nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptObjectStaticMethod contained keys preventExtensions values nextgroup=typescriptFuncCallArg
+ hi def link typescriptObjectStaticMethod Keyword
+ syntax keyword typescriptObjectMethod contained getOwnPropertyDescriptors hasOwnProperty nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptObjectMethod contained isPrototypeOf propertyIsEnumerable nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptObjectMethod contained toLocaleString toString valueOf seal nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptObjectMethod contained setPrototypeOf nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptObjectMethod
+ hi def link typescriptObjectMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Symbol nextgroup=typescriptGlobalSymbolDot,typescriptFuncCallArg
+ syntax match typescriptGlobalSymbolDot /\./ contained nextgroup=typescriptSymbolStaticProp,typescriptSymbolStaticMethod,typescriptProp
+ syntax keyword typescriptSymbolStaticProp contained length iterator match replace
+ syntax keyword typescriptSymbolStaticProp contained search split hasInstance isConcatSpreadable
+ syntax keyword typescriptSymbolStaticProp contained unscopables species toPrimitive
+ syntax keyword typescriptSymbolStaticProp contained toStringTag
+ hi def link typescriptSymbolStaticProp Keyword
+ syntax keyword typescriptSymbolStaticMethod contained for keyFor nextgroup=typescriptFuncCallArg
+ hi def link typescriptSymbolStaticMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Function
+ syntax keyword typescriptFunctionMethod contained apply bind call nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptFunctionMethod
+ hi def link typescriptFunctionMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Math nextgroup=typescriptGlobalMathDot,typescriptFuncCallArg
+ syntax match typescriptGlobalMathDot /\./ contained nextgroup=typescriptMathStaticProp,typescriptMathStaticMethod,typescriptProp
+ syntax keyword typescriptMathStaticProp contained E LN10 LN2 LOG10E LOG2E PI SQRT1_2
+ syntax keyword typescriptMathStaticProp contained SQRT2
+ hi def link typescriptMathStaticProp Keyword
+ syntax keyword typescriptMathStaticMethod contained abs acos acosh asin asinh atan nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptMathStaticMethod contained atan2 atanh cbrt ceil clz32 cos nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptMathStaticMethod contained cosh exp expm1 floor fround hypot nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptMathStaticMethod contained imul log log10 log1p log2 max nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptMathStaticMethod contained min pow random round sign sin nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptMathStaticMethod contained sinh sqrt tan tanh trunc nextgroup=typescriptFuncCallArg
+ hi def link typescriptMathStaticMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Date nextgroup=typescriptGlobalDateDot,typescriptFuncCallArg
+ syntax match typescriptGlobalDateDot /\./ contained nextgroup=typescriptDateStaticMethod,typescriptProp
+ syntax keyword typescriptDateStaticMethod contained UTC now parse nextgroup=typescriptFuncCallArg
+ hi def link typescriptDateStaticMethod Keyword
+ syntax keyword typescriptDateMethod contained getDate getDay getFullYear getHours nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDateMethod contained getMilliseconds getMinutes getMonth nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDateMethod contained getSeconds getTime getTimezoneOffset nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDateMethod contained getUTCDate getUTCDay getUTCFullYear nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDateMethod contained getUTCHours getUTCMilliseconds getUTCMinutes nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDateMethod contained getUTCMonth getUTCSeconds setDate setFullYear nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDateMethod contained setHours setMilliseconds setMinutes nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDateMethod contained setMonth setSeconds setTime setUTCDate nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDateMethod contained setUTCFullYear setUTCHours setUTCMilliseconds nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDateMethod contained setUTCMinutes setUTCMonth setUTCSeconds nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDateMethod contained toDateString toISOString toJSON toLocaleDateString nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDateMethod contained toLocaleFormat toLocaleString toLocaleTimeString nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDateMethod contained toSource toString toTimeString toUTCString nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDateMethod contained valueOf nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptDateMethod
+ hi def link typescriptDateMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName JSON nextgroup=typescriptGlobalJSONDot,typescriptFuncCallArg
+ syntax match typescriptGlobalJSONDot /\./ contained nextgroup=typescriptJSONStaticMethod,typescriptProp
+ syntax keyword typescriptJSONStaticMethod contained parse stringify nextgroup=typescriptFuncCallArg
+ hi def link typescriptJSONStaticMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName RegExp nextgroup=typescriptGlobalRegExpDot,typescriptFuncCallArg
+ syntax match typescriptGlobalRegExpDot /\./ contained nextgroup=typescriptRegExpStaticProp,typescriptProp
+ syntax keyword typescriptRegExpStaticProp contained lastIndex
+ hi def link typescriptRegExpStaticProp Keyword
+ syntax keyword typescriptRegExpProp contained global ignoreCase multiline source sticky
+ syntax cluster props add=typescriptRegExpProp
+ hi def link typescriptRegExpProp Keyword
+ syntax keyword typescriptRegExpMethod contained exec test nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptRegExpMethod
+ hi def link typescriptRegExpMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Map WeakMap
+ syntax keyword typescriptES6MapProp contained size
+ syntax cluster props add=typescriptES6MapProp
+ hi def link typescriptES6MapProp Keyword
+ syntax keyword typescriptES6MapMethod contained clear delete entries forEach get has nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptES6MapMethod contained keys set values nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptES6MapMethod
+ hi def link typescriptES6MapMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Set WeakSet
+ syntax keyword typescriptES6SetProp contained size
+ syntax cluster props add=typescriptES6SetProp
+ hi def link typescriptES6SetProp Keyword
+ syntax keyword typescriptES6SetMethod contained add clear delete entries forEach has nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptES6SetMethod contained values nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptES6SetMethod
+ hi def link typescriptES6SetMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Proxy
+ syntax keyword typescriptProxyAPI contained getOwnPropertyDescriptor getOwnPropertyNames
+ syntax keyword typescriptProxyAPI contained defineProperty deleteProperty freeze seal
+ syntax keyword typescriptProxyAPI contained preventExtensions has hasOwn get set enumerate
+ syntax keyword typescriptProxyAPI contained iterate ownKeys apply construct
+ hi def link typescriptProxyAPI Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Promise nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg
+ syntax match typescriptGlobalPromiseDot /\./ contained nextgroup=typescriptPromiseStaticMethod,typescriptProp
+ syntax keyword typescriptPromiseStaticMethod contained resolve reject all race nextgroup=typescriptFuncCallArg
+ hi def link typescriptPromiseStaticMethod Keyword
+ syntax keyword typescriptPromiseMethod contained then catch finally nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptPromiseMethod
+ hi def link typescriptPromiseMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Reflect
+ syntax keyword typescriptReflectMethod contained apply construct defineProperty deleteProperty nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptReflectMethod contained enumerate get getOwnPropertyDescriptor nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptReflectMethod contained getPrototypeOf has isExtensible ownKeys nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptReflectMethod contained preventExtensions set setPrototypeOf nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptReflectMethod
+ hi def link typescriptReflectMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Intl
+ syntax keyword typescriptIntlMethod contained Collator DateTimeFormat NumberFormat nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptIntlMethod contained PluralRules nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptIntlMethod
+ hi def link typescriptIntlMethod Keyword
+
+ syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName global process
+ syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName console Buffer
+ syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName module exports
+ syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName setTimeout
+ syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName clearTimeout
+ syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName setInterval
+ syntax keyword typescriptNodeGlobal containedin=typescriptIdentifierName clearInterval
+ hi def link typescriptNodeGlobal Structure
+
+ syntax keyword typescriptTestGlobal containedin=typescriptIdentifierName describe
+ syntax keyword typescriptTestGlobal containedin=typescriptIdentifierName it test before
+ syntax keyword typescriptTestGlobal containedin=typescriptIdentifierName after beforeEach
+ syntax keyword typescriptTestGlobal containedin=typescriptIdentifierName afterEach
+ syntax keyword typescriptTestGlobal containedin=typescriptIdentifierName beforeAll
+ syntax keyword typescriptTestGlobal containedin=typescriptIdentifierName afterAll
+ syntax keyword typescriptTestGlobal containedin=typescriptIdentifierName expect assert
+
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName AbortController
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName AbstractWorker AnalyserNode
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName App Apps ArrayBuffer
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName ArrayBufferView
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Attr AudioBuffer
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName AudioBufferSourceNode
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName AudioContext AudioDestinationNode
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName AudioListener AudioNode
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName AudioParam BatteryManager
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName BiquadFilterNode
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName BlobEvent BluetoothAdapter
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName BluetoothDevice
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName BluetoothManager
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName CameraCapabilities
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName CameraControl CameraManager
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName CanvasGradient CanvasImageSource
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName CanvasPattern CanvasRenderingContext2D
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName CaretPosition CDATASection
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName ChannelMergerNode
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName ChannelSplitterNode
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName CharacterData ChildNode
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName ChromeWorker Comment
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Connection Console
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName ContactManager Contacts
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName ConvolverNode Coordinates
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName CSS CSSConditionRule
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSGroupingRule
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSKeyframeRule
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSKeyframesRule
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSMediaRule CSSNamespaceRule
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSPageRule CSSRule
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSRuleList CSSStyleDeclaration
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSStyleRule CSSStyleSheet
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName CSSSupportsRule
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DataTransfer DataView
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DedicatedWorkerGlobalScope
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DelayNode DeviceAcceleration
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DeviceRotationRate
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DeviceStorage DirectoryEntry
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DirectoryEntrySync
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DirectoryReader
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DirectoryReaderSync
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Document DocumentFragment
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DocumentTouch DocumentType
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMCursor DOMError
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMException DOMHighResTimeStamp
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMImplementation
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMImplementationRegistry
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMParser DOMRequest
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMString DOMStringList
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMStringMap DOMTimeStamp
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName DOMTokenList DynamicsCompressorNode
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Element Entry EntrySync
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Extensions FileException
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Float32Array Float64Array
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName FMRadio FormData
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName GainNode Gamepad
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName GamepadButton Geolocation
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName History HTMLAnchorElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLAreaElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLAudioElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLBaseElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLBodyElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLBRElement HTMLButtonElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLCanvasElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLCollection HTMLDataElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLDataListElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLDivElement HTMLDListElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLDocument HTMLElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLEmbedElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLFieldSetElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLFormControlsCollection
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLFormElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLHeadElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLHeadingElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLHRElement HTMLHtmlElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLIFrameElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLImageElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLInputElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLKeygenElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLLabelElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLLegendElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLLIElement HTMLLinkElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLMapElement HTMLMediaElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLMetaElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLMeterElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLModElement HTMLObjectElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLOListElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLOptGroupElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLOptionElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLOptionsCollection
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLOutputElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLParagraphElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLParamElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLPreElement HTMLProgressElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLQuoteElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLScriptElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLSelectElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLSourceElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLSpanElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLStyleElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableCaptionElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableCellElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableColElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableDataCellElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableHeaderCellElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableRowElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTableSectionElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTextAreaElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTimeElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTitleElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLTrackElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLUListElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLUnknownElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName HTMLVideoElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBCursor IDBCursorSync
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBCursorWithValue
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBDatabase IDBDatabaseSync
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBEnvironment IDBEnvironmentSync
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBFactory IDBFactorySync
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBIndex IDBIndexSync
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBKeyRange IDBObjectStore
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBObjectStoreSync
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBOpenDBRequest
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBRequest IDBTransaction
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBTransactionSync
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName IDBVersionChangeEvent
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName ImageData IndexedDB
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Int16Array Int32Array
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Int8Array L10n LinkStyle
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName LocalFileSystem
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName LocalFileSystemSync
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Location LockedFile
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName MediaQueryList MediaQueryListListener
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName MediaRecorder MediaSource
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName MediaStream MediaStreamTrack
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName MutationObserver
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Navigator NavigatorGeolocation
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName NavigatorID NavigatorLanguage
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName NavigatorOnLine
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName NavigatorPlugins
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Node NodeFilter
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName NodeIterator NodeList
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Notification OfflineAudioContext
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName OscillatorNode PannerNode
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName ParentNode Performance
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName PerformanceNavigation
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName PerformanceTiming
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Permissions PermissionSettings
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Plugin PluginArray
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Position PositionError
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName PositionOptions
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName PowerManager ProcessingInstruction
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName PromiseResolver
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName PushManager Range
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName RTCConfiguration
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName RTCPeerConnection
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName RTCPeerConnectionErrorCallback
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName RTCSessionDescription
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName RTCSessionDescriptionCallback
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName ScriptProcessorNode
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Selection SettingsLock
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SettingsManager
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SharedWorker StyleSheet
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName StyleSheetList SVGAElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAngle SVGAnimateColorElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedAngle
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedBoolean
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedEnumeration
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedInteger
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedLength
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedLengthList
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedNumber
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedNumberList
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedPoints
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedPreserveAspectRatio
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedRect
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedString
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimatedTransformList
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimateElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimateMotionElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimateTransformElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGAnimationElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGCircleElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGClipPathElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGCursorElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGDefsElement SVGDescElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGElement SVGEllipseElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFilterElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFontElement SVGFontFaceElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFontFaceFormatElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFontFaceNameElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFontFaceSrcElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGFontFaceUriElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGForeignObjectElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGGElement SVGGlyphElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGGradientElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGHKernElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGImageElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGLength SVGLengthList
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGLinearGradientElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGLineElement SVGMaskElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGMatrix SVGMissingGlyphElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGMPathElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGNumber SVGNumberList
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGPathElement SVGPatternElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGPoint SVGPolygonElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGPolylineElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGPreserveAspectRatio
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGRadialGradientElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGRect SVGRectElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGScriptElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGSetElement SVGStopElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGStringList SVGStylable
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGStyleElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGSVGElement SVGSwitchElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGSymbolElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTests SVGTextElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTextPositioningElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTitleElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTransform SVGTransformable
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTransformList
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGTRefElement SVGTSpanElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGUseElement SVGViewElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName SVGVKernElement
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName TCPServerSocket
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName TCPSocket Telephony
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName TelephonyCall Text
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName TextDecoder TextEncoder
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName TextMetrics TimeRanges
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Touch TouchList
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Transferable TreeWalker
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Uint16Array Uint32Array
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Uint8Array Uint8ClampedArray
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName URLSearchParams
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName URLUtilsReadOnly
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName UserProximityEvent
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName ValidityState VideoPlaybackQuality
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName WaveShaperNode WebBluetooth
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName WebGLRenderingContext
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName WebSMS WebSocket
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName WebVTT WifiManager
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName Window Worker WorkerConsole
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName WorkerLocation WorkerNavigator
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName XDomainRequest XMLDocument
+ syntax keyword typescriptBOM containedin=typescriptIdentifierName XMLHttpRequestEventTarget
+ hi def link typescriptBOM Structure
+
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName applicationCache
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName closed
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName Components
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName controllers
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName dialogArguments
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName document
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName frameElement
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName frames
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName fullScreen
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName history
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName innerHeight
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName innerWidth
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName length
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName location
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName locationbar
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName menubar
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName messageManager
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName name navigator
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName opener
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName outerHeight
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName outerWidth
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName pageXOffset
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName pageYOffset
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName parent
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName performance
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName personalbar
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName returnValue
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName screen
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName screenX
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName screenY
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName scrollbars
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName scrollMaxX
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName scrollMaxY
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName scrollX
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName scrollY
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName self sidebar
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName status
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName statusbar
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName toolbar
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName top visualViewport
+ syntax keyword typescriptBOMWindowProp containedin=typescriptIdentifierName window
+ syntax cluster props add=typescriptBOMWindowProp
+ hi def link typescriptBOMWindowProp Structure
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName alert nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName atob nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName blur nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName btoa nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName clearImmediate nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName clearInterval nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName clearTimeout nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName close nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName confirm nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName dispatchEvent nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName find nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName focus nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName getAttention nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName getAttentionWithCycleCount nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName getComputedStyle nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName getDefaulComputedStyle nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName getSelection nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName matchMedia nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName maximize nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName moveBy nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName moveTo nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName open nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName openDialog nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName postMessage nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName print nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName prompt nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName removeEventListener nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName resizeBy nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName resizeTo nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName restore nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName scroll nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName scrollBy nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName scrollByLines nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName scrollByPages nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName scrollTo nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName setCursor nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName setImmediate nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName setInterval nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName setResizable nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName setTimeout nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName showModalDialog nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName sizeToContent nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName stop nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMWindowMethod containedin=typescriptIdentifierName updateCommands nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptBOMWindowMethod
+ hi def link typescriptBOMWindowMethod Structure
+ syntax keyword typescriptBOMWindowEvent contained onabort onbeforeunload onblur onchange
+ syntax keyword typescriptBOMWindowEvent contained onclick onclose oncontextmenu ondevicelight
+ syntax keyword typescriptBOMWindowEvent contained ondevicemotion ondeviceorientation
+ syntax keyword typescriptBOMWindowEvent contained ondeviceproximity ondragdrop onerror
+ syntax keyword typescriptBOMWindowEvent contained onfocus onhashchange onkeydown onkeypress
+ syntax keyword typescriptBOMWindowEvent contained onkeyup onload onmousedown onmousemove
+ syntax keyword typescriptBOMWindowEvent contained onmouseout onmouseover onmouseup
+ syntax keyword typescriptBOMWindowEvent contained onmozbeforepaint onpaint onpopstate
+ syntax keyword typescriptBOMWindowEvent contained onreset onresize onscroll onselect
+ syntax keyword typescriptBOMWindowEvent contained onsubmit onunload onuserproximity
+ syntax keyword typescriptBOMWindowEvent contained onpageshow onpagehide
+ hi def link typescriptBOMWindowEvent Keyword
+ syntax keyword typescriptBOMWindowCons containedin=typescriptIdentifierName DOMParser
+ syntax keyword typescriptBOMWindowCons containedin=typescriptIdentifierName QueryInterface
+ syntax keyword typescriptBOMWindowCons containedin=typescriptIdentifierName XMLSerializer
+ hi def link typescriptBOMWindowCons Structure
+
+ syntax keyword typescriptBOMNavigatorProp contained battery buildID connection cookieEnabled
+ syntax keyword typescriptBOMNavigatorProp contained doNotTrack maxTouchPoints oscpu
+ syntax keyword typescriptBOMNavigatorProp contained productSub push serviceWorker
+ syntax keyword typescriptBOMNavigatorProp contained vendor vendorSub
+ syntax cluster props add=typescriptBOMNavigatorProp
+ hi def link typescriptBOMNavigatorProp Keyword
+ syntax keyword typescriptBOMNavigatorMethod contained addIdleObserver geolocation nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMNavigatorMethod contained getDeviceStorage getDeviceStorages nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMNavigatorMethod contained getGamepads getUserMedia registerContentHandler nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMNavigatorMethod contained removeIdleObserver requestWakeLock nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMNavigatorMethod contained share vibrate watch registerProtocolHandler nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptBOMNavigatorMethod contained sendBeacon nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptBOMNavigatorMethod
+ hi def link typescriptBOMNavigatorMethod Keyword
+ syntax keyword typescriptServiceWorkerMethod contained register nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptServiceWorkerMethod
+ hi def link typescriptServiceWorkerMethod Keyword
+
+ syntax keyword typescriptBOMLocationProp contained href protocol host hostname port
+ syntax keyword typescriptBOMLocationProp contained pathname search hash username password
+ syntax keyword typescriptBOMLocationProp contained origin
+ syntax cluster props add=typescriptBOMLocationProp
+ hi def link typescriptBOMLocationProp Keyword
+ syntax keyword typescriptBOMLocationMethod contained assign reload replace toString nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptBOMLocationMethod
+ hi def link typescriptBOMLocationMethod Keyword
+
+ syntax keyword typescriptBOMHistoryProp contained length current next previous state
+ syntax keyword typescriptBOMHistoryProp contained scrollRestoration
+ syntax cluster props add=typescriptBOMHistoryProp
+ hi def link typescriptBOMHistoryProp Keyword
+ syntax keyword typescriptBOMHistoryMethod contained back forward go pushState replaceState nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptBOMHistoryMethod
+ hi def link typescriptBOMHistoryMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName console
+ syntax keyword typescriptConsoleMethod contained count dir error group groupCollapsed nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptConsoleMethod contained groupEnd info log time timeEnd trace nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptConsoleMethod contained warn nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptConsoleMethod
+ hi def link typescriptConsoleMethod Keyword
+
+ syntax keyword typescriptXHRGlobal containedin=typescriptIdentifierName XMLHttpRequest
+ hi def link typescriptXHRGlobal Structure
+ syntax keyword typescriptXHRProp contained onreadystatechange readyState response
+ syntax keyword typescriptXHRProp contained responseText responseType responseXML status
+ syntax keyword typescriptXHRProp contained statusText timeout ontimeout upload withCredentials
+ syntax cluster props add=typescriptXHRProp
+ hi def link typescriptXHRProp Keyword
+ syntax keyword typescriptXHRMethod contained abort getAllResponseHeaders getResponseHeader nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptXHRMethod contained open overrideMimeType send setRequestHeader nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptXHRMethod
+ hi def link typescriptXHRMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Blob BlobBuilder
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName File FileReader
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName FileReaderSync
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName URL nextgroup=typescriptGlobalURLDot,typescriptFuncCallArg
+ syntax match typescriptGlobalURLDot /\./ contained nextgroup=typescriptURLStaticMethod,typescriptProp
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName URLUtils
+ syntax keyword typescriptFileMethod contained readAsArrayBuffer readAsBinaryString nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptFileMethod contained readAsDataURL readAsText nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptFileMethod
+ hi def link typescriptFileMethod Keyword
+ syntax keyword typescriptFileReaderProp contained error readyState result
+ syntax cluster props add=typescriptFileReaderProp
+ hi def link typescriptFileReaderProp Keyword
+ syntax keyword typescriptFileReaderMethod contained abort readAsArrayBuffer readAsBinaryString nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptFileReaderMethod contained readAsDataURL readAsText nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptFileReaderMethod
+ hi def link typescriptFileReaderMethod Keyword
+ syntax keyword typescriptFileListMethod contained item nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptFileListMethod
+ hi def link typescriptFileListMethod Keyword
+ syntax keyword typescriptBlobMethod contained append getBlob getFile nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptBlobMethod
+ hi def link typescriptBlobMethod Keyword
+ syntax keyword typescriptURLUtilsProp contained hash host hostname href origin password
+ syntax keyword typescriptURLUtilsProp contained pathname port protocol search searchParams
+ syntax keyword typescriptURLUtilsProp contained username
+ syntax cluster props add=typescriptURLUtilsProp
+ hi def link typescriptURLUtilsProp Keyword
+ syntax keyword typescriptURLStaticMethod contained createObjectURL revokeObjectURL nextgroup=typescriptFuncCallArg
+ hi def link typescriptURLStaticMethod Keyword
+
+ syntax keyword typescriptCryptoGlobal containedin=typescriptIdentifierName crypto
+ hi def link typescriptCryptoGlobal Structure
+ syntax keyword typescriptSubtleCryptoMethod contained encrypt decrypt sign verify nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptSubtleCryptoMethod contained digest nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptSubtleCryptoMethod
+ hi def link typescriptSubtleCryptoMethod Keyword
+ syntax keyword typescriptCryptoProp contained subtle
+ syntax cluster props add=typescriptCryptoProp
+ hi def link typescriptCryptoProp Keyword
+ syntax keyword typescriptCryptoMethod contained getRandomValues nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptCryptoMethod
+ hi def link typescriptCryptoMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Headers Request
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Response
+ syntax keyword typescriptGlobalMethod containedin=typescriptIdentifierName fetch nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptGlobalMethod
+ hi def link typescriptGlobalMethod Structure
+ syntax keyword typescriptHeadersMethod contained append delete get getAll has set nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptHeadersMethod
+ hi def link typescriptHeadersMethod Keyword
+ syntax keyword typescriptRequestProp contained method url headers context referrer
+ syntax keyword typescriptRequestProp contained mode credentials cache
+ syntax cluster props add=typescriptRequestProp
+ hi def link typescriptRequestProp Keyword
+ syntax keyword typescriptRequestMethod contained clone nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptRequestMethod
+ hi def link typescriptRequestMethod Keyword
+ syntax keyword typescriptResponseProp contained type url status statusText headers
+ syntax keyword typescriptResponseProp contained redirected
+ syntax cluster props add=typescriptResponseProp
+ hi def link typescriptResponseProp Keyword
+ syntax keyword typescriptResponseMethod contained clone nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptResponseMethod
+ hi def link typescriptResponseMethod Keyword
+
+ syntax keyword typescriptServiceWorkerProp contained controller ready
+ syntax cluster props add=typescriptServiceWorkerProp
+ hi def link typescriptServiceWorkerProp Keyword
+ syntax keyword typescriptServiceWorkerMethod contained register getRegistration nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptServiceWorkerMethod
+ hi def link typescriptServiceWorkerMethod Keyword
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Cache
+ syntax keyword typescriptCacheMethod contained match matchAll add addAll put delete nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptCacheMethod contained keys nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptCacheMethod
+ hi def link typescriptCacheMethod Keyword
+
+ syntax keyword typescriptEncodingGlobal containedin=typescriptIdentifierName TextEncoder
+ syntax keyword typescriptEncodingGlobal containedin=typescriptIdentifierName TextDecoder
+ hi def link typescriptEncodingGlobal Structure
+ syntax keyword typescriptEncodingProp contained encoding fatal ignoreBOM
+ syntax cluster props add=typescriptEncodingProp
+ hi def link typescriptEncodingProp Keyword
+ syntax keyword typescriptEncodingMethod contained encode decode nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptEncodingMethod
+ hi def link typescriptEncodingMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName Geolocation
+ syntax keyword typescriptGeolocationMethod contained getCurrentPosition watchPosition nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptGeolocationMethod contained clearWatch nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptGeolocationMethod
+ hi def link typescriptGeolocationMethod Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName NetworkInformation
+ syntax keyword typescriptBOMNetworkProp contained downlink downlinkMax effectiveType
+ syntax keyword typescriptBOMNetworkProp contained rtt type
+ syntax cluster props add=typescriptBOMNetworkProp
+ hi def link typescriptBOMNetworkProp Keyword
+
+ syntax keyword typescriptGlobal containedin=typescriptIdentifierName PaymentRequest
+ syntax keyword typescriptPaymentMethod contained show abort canMakePayment nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptPaymentMethod
+ hi def link typescriptPaymentMethod Keyword
+ syntax keyword typescriptPaymentProp contained shippingAddress shippingOption result
+ syntax cluster props add=typescriptPaymentProp
+ hi def link typescriptPaymentProp Keyword
+ syntax keyword typescriptPaymentEvent contained onshippingaddresschange onshippingoptionchange
+ hi def link typescriptPaymentEvent Keyword
+ syntax keyword typescriptPaymentResponseMethod contained complete nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptPaymentResponseMethod
+ hi def link typescriptPaymentResponseMethod Keyword
+ syntax keyword typescriptPaymentResponseProp contained details methodName payerEmail
+ syntax keyword typescriptPaymentResponseProp contained payerPhone shippingAddress
+ syntax keyword typescriptPaymentResponseProp contained shippingOption
+ syntax cluster props add=typescriptPaymentResponseProp
+ hi def link typescriptPaymentResponseProp Keyword
+ syntax keyword typescriptPaymentAddressProp contained addressLine careOf city country
+ syntax keyword typescriptPaymentAddressProp contained country dependentLocality languageCode
+ syntax keyword typescriptPaymentAddressProp contained organization phone postalCode
+ syntax keyword typescriptPaymentAddressProp contained recipient region sortingCode
+ syntax cluster props add=typescriptPaymentAddressProp
+ hi def link typescriptPaymentAddressProp Keyword
+ syntax keyword typescriptPaymentShippingOptionProp contained id label amount selected
+ syntax cluster props add=typescriptPaymentShippingOptionProp
+ hi def link typescriptPaymentShippingOptionProp Keyword
+
+ syntax keyword typescriptDOMNodeProp contained attributes baseURI baseURIObject childNodes
+ syntax keyword typescriptDOMNodeProp contained firstChild lastChild localName namespaceURI
+ syntax keyword typescriptDOMNodeProp contained nextSibling nodeName nodePrincipal
+ syntax keyword typescriptDOMNodeProp contained nodeType nodeValue ownerDocument parentElement
+ syntax keyword typescriptDOMNodeProp contained parentNode prefix previousSibling textContent
+ syntax cluster props add=typescriptDOMNodeProp
+ hi def link typescriptDOMNodeProp Keyword
+ syntax keyword typescriptDOMNodeMethod contained appendChild cloneNode compareDocumentPosition nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMNodeMethod contained getUserData hasAttributes hasChildNodes nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMNodeMethod contained insertBefore isDefaultNamespace isEqualNode nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMNodeMethod contained isSameNode isSupported lookupNamespaceURI nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMNodeMethod contained lookupPrefix normalize removeChild nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMNodeMethod contained replaceChild setUserData nextgroup=typescriptFuncCallArg
+ syntax match typescriptDOMNodeMethod contained /contains/
+ syntax cluster props add=typescriptDOMNodeMethod
+ hi def link typescriptDOMNodeMethod Keyword
+ syntax keyword typescriptDOMNodeType contained ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE
+ syntax keyword typescriptDOMNodeType contained CDATA_SECTION_NODEN_NODE ENTITY_REFERENCE_NODE
+ syntax keyword typescriptDOMNodeType contained ENTITY_NODE PROCESSING_INSTRUCTION_NODEN_NODE
+ syntax keyword typescriptDOMNodeType contained COMMENT_NODE DOCUMENT_NODE DOCUMENT_TYPE_NODE
+ syntax keyword typescriptDOMNodeType contained DOCUMENT_FRAGMENT_NODE NOTATION_NODE
+ hi def link typescriptDOMNodeType Keyword
+
+ syntax keyword typescriptDOMElemAttrs contained accessKey clientHeight clientLeft
+ syntax keyword typescriptDOMElemAttrs contained clientTop clientWidth id innerHTML
+ syntax keyword typescriptDOMElemAttrs contained length onafterscriptexecute onbeforescriptexecute
+ syntax keyword typescriptDOMElemAttrs contained oncopy oncut onpaste onwheel scrollHeight
+ syntax keyword typescriptDOMElemAttrs contained scrollLeft scrollTop scrollWidth tagName
+ syntax keyword typescriptDOMElemAttrs contained classList className name outerHTML
+ syntax keyword typescriptDOMElemAttrs contained style
+ hi def link typescriptDOMElemAttrs Keyword
+ syntax keyword typescriptDOMElemFuncs contained getAttributeNS getAttributeNode getAttributeNodeNS
+ syntax keyword typescriptDOMElemFuncs contained getBoundingClientRect getClientRects
+ syntax keyword typescriptDOMElemFuncs contained getElementsByClassName getElementsByTagName
+ syntax keyword typescriptDOMElemFuncs contained getElementsByTagNameNS hasAttribute
+ syntax keyword typescriptDOMElemFuncs contained hasAttributeNS insertAdjacentHTML
+ syntax keyword typescriptDOMElemFuncs contained matches querySelector querySelectorAll
+ syntax keyword typescriptDOMElemFuncs contained removeAttribute removeAttributeNS
+ syntax keyword typescriptDOMElemFuncs contained removeAttributeNode requestFullscreen
+ syntax keyword typescriptDOMElemFuncs contained requestPointerLock scrollIntoView
+ syntax keyword typescriptDOMElemFuncs contained setAttribute setAttributeNS setAttributeNode
+ syntax keyword typescriptDOMElemFuncs contained setAttributeNodeNS setCapture supports
+ syntax keyword typescriptDOMElemFuncs contained getAttribute
+ hi def link typescriptDOMElemFuncs Keyword
+
+ syntax keyword typescriptDOMDocProp contained activeElement body cookie defaultView
+ syntax keyword typescriptDOMDocProp contained designMode dir domain embeds forms head
+ syntax keyword typescriptDOMDocProp contained images lastModified links location plugins
+ syntax keyword typescriptDOMDocProp contained postMessage readyState referrer registerElement
+ syntax keyword typescriptDOMDocProp contained scripts styleSheets title vlinkColor
+ syntax keyword typescriptDOMDocProp contained xmlEncoding characterSet compatMode
+ syntax keyword typescriptDOMDocProp contained contentType currentScript doctype documentElement
+ syntax keyword typescriptDOMDocProp contained documentURI documentURIObject firstChild
+ syntax keyword typescriptDOMDocProp contained implementation lastStyleSheetSet namespaceURI
+ syntax keyword typescriptDOMDocProp contained nodePrincipal ononline pointerLockElement
+ syntax keyword typescriptDOMDocProp contained popupNode preferredStyleSheetSet selectedStyleSheetSet
+ syntax keyword typescriptDOMDocProp contained styleSheetSets textContent tooltipNode
+ syntax cluster props add=typescriptDOMDocProp
+ hi def link typescriptDOMDocProp Keyword
+ syntax keyword typescriptDOMDocMethod contained caretPositionFromPoint close createNodeIterator nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMDocMethod contained createRange createTreeWalker elementFromPoint nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMDocMethod contained getElementsByName adoptNode createAttribute nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMDocMethod contained createCDATASection createComment createDocumentFragment nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMDocMethod contained createElement createElementNS createEvent nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMDocMethod contained createExpression createNSResolver nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMDocMethod contained createProcessingInstruction createTextNode nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMDocMethod contained enableStyleSheetsForSet evaluate execCommand nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMDocMethod contained exitPointerLock getBoxObjectFor getElementById nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMDocMethod contained getElementsByClassName getElementsByTagName nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMDocMethod contained getElementsByTagNameNS getSelection nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMDocMethod contained hasFocus importNode loadOverlay open nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMDocMethod contained queryCommandSupported querySelector nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMDocMethod contained querySelectorAll write writeln nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptDOMDocMethod
+ hi def link typescriptDOMDocMethod Keyword
+
+ syntax keyword typescriptDOMEventTargetMethod contained addEventListener removeEventListener nextgroup=typescriptEventFuncCallArg
+ syntax keyword typescriptDOMEventTargetMethod contained dispatchEvent waitUntil nextgroup=typescriptEventFuncCallArg
+ syntax cluster props add=typescriptDOMEventTargetMethod
+ hi def link typescriptDOMEventTargetMethod Keyword
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName AnimationEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName AudioProcessingEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName BeforeInputEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName BeforeUnloadEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName BlobEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName ClipboardEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName CloseEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName CompositionEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName CSSFontFaceLoadEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName CustomEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DeviceLightEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DeviceMotionEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DeviceOrientationEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DeviceProximityEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DOMTransactionEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName DragEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName EditingBeforeInputEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName ErrorEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName FocusEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName GamepadEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName HashChangeEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName IDBVersionChangeEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName KeyboardEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName MediaStreamEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName MessageEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName MouseEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName MutationEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName OfflineAudioCompletionEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName PageTransitionEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName PointerEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName PopStateEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName ProgressEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName RelatedEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName RTCPeerConnectionIceEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName SensorEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName StorageEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName SVGEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName SVGZoomEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName TimeEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName TouchEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName TrackEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName TransitionEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName UIEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName UserProximityEvent
+ syntax keyword typescriptDOMEventCons containedin=typescriptIdentifierName WheelEvent
+ hi def link typescriptDOMEventCons Structure
+ syntax keyword typescriptDOMEventProp contained bubbles cancelable currentTarget defaultPrevented
+ syntax keyword typescriptDOMEventProp contained eventPhase target timeStamp type isTrusted
+ syntax keyword typescriptDOMEventProp contained isReload
+ syntax cluster props add=typescriptDOMEventProp
+ hi def link typescriptDOMEventProp Keyword
+ syntax keyword typescriptDOMEventMethod contained initEvent preventDefault stopImmediatePropagation nextgroup=typescriptEventFuncCallArg
+ syntax keyword typescriptDOMEventMethod contained stopPropagation respondWith default nextgroup=typescriptEventFuncCallArg
+ syntax cluster props add=typescriptDOMEventMethod
+ hi def link typescriptDOMEventMethod Keyword
+
+ syntax keyword typescriptDOMStorage contained sessionStorage localStorage
+ hi def link typescriptDOMStorage Keyword
+ syntax keyword typescriptDOMStorageProp contained length
+ syntax cluster props add=typescriptDOMStorageProp
+ hi def link typescriptDOMStorageProp Keyword
+ syntax keyword typescriptDOMStorageMethod contained getItem key setItem removeItem nextgroup=typescriptFuncCallArg
+ syntax keyword typescriptDOMStorageMethod contained clear nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptDOMStorageMethod
+ hi def link typescriptDOMStorageMethod Keyword
+
+ syntax keyword typescriptDOMFormProp contained acceptCharset action elements encoding
+ syntax keyword typescriptDOMFormProp contained enctype length method name target
+ syntax cluster props add=typescriptDOMFormProp
+ hi def link typescriptDOMFormProp Keyword
+ syntax keyword typescriptDOMFormMethod contained reportValidity reset submit nextgroup=typescriptFuncCallArg
+ syntax cluster props add=typescriptDOMFormMethod
+ hi def link typescriptDOMFormMethod Keyword
+
+ syntax keyword typescriptDOMStyle contained alignContent alignItems alignSelf animation
+ syntax keyword typescriptDOMStyle contained animationDelay animationDirection animationDuration
+ syntax keyword typescriptDOMStyle contained animationFillMode animationIterationCount
+ syntax keyword typescriptDOMStyle contained animationName animationPlayState animationTimingFunction
+ syntax keyword typescriptDOMStyle contained appearance backfaceVisibility background
+ syntax keyword typescriptDOMStyle contained backgroundAttachment backgroundBlendMode
+ syntax keyword typescriptDOMStyle contained backgroundClip backgroundColor backgroundImage
+ syntax keyword typescriptDOMStyle contained backgroundOrigin backgroundPosition backgroundRepeat
+ syntax keyword typescriptDOMStyle contained backgroundSize border borderBottom borderBottomColor
+ syntax keyword typescriptDOMStyle contained borderBottomLeftRadius borderBottomRightRadius
+ syntax keyword typescriptDOMStyle contained borderBottomStyle borderBottomWidth borderCollapse
+ syntax keyword typescriptDOMStyle contained borderColor borderImage borderImageOutset
+ syntax keyword typescriptDOMStyle contained borderImageRepeat borderImageSlice borderImageSource
+ syntax keyword typescriptDOMStyle contained borderImageWidth borderLeft borderLeftColor
+ syntax keyword typescriptDOMStyle contained borderLeftStyle borderLeftWidth borderRadius
+ syntax keyword typescriptDOMStyle contained borderRight borderRightColor borderRightStyle
+ syntax keyword typescriptDOMStyle contained borderRightWidth borderSpacing borderStyle
+ syntax keyword typescriptDOMStyle contained borderTop borderTopColor borderTopLeftRadius
+ syntax keyword typescriptDOMStyle contained borderTopRightRadius borderTopStyle borderTopWidth
+ syntax keyword typescriptDOMStyle contained borderWidth bottom boxDecorationBreak
+ syntax keyword typescriptDOMStyle contained boxShadow boxSizing breakAfter breakBefore
+ syntax keyword typescriptDOMStyle contained breakInside captionSide caretColor caretShape
+ syntax keyword typescriptDOMStyle contained caret clear clip clipPath color columns
+ syntax keyword typescriptDOMStyle contained columnCount columnFill columnGap columnRule
+ syntax keyword typescriptDOMStyle contained columnRuleColor columnRuleStyle columnRuleWidth
+ syntax keyword typescriptDOMStyle contained columnSpan columnWidth content counterIncrement
+ syntax keyword typescriptDOMStyle contained counterReset cursor direction display
+ syntax keyword typescriptDOMStyle contained emptyCells flex flexBasis flexDirection
+ syntax keyword typescriptDOMStyle contained flexFlow flexGrow flexShrink flexWrap
+ syntax keyword typescriptDOMStyle contained float font fontFamily fontFeatureSettings
+ syntax keyword typescriptDOMStyle contained fontKerning fontLanguageOverride fontSize
+ syntax keyword typescriptDOMStyle contained fontSizeAdjust fontStretch fontStyle fontSynthesis
+ syntax keyword typescriptDOMStyle contained fontVariant fontVariantAlternates fontVariantCaps
+ syntax keyword typescriptDOMStyle contained fontVariantEastAsian fontVariantLigatures
+ syntax keyword typescriptDOMStyle contained fontVariantNumeric fontVariantPosition
+ syntax keyword typescriptDOMStyle contained fontWeight grad grid gridArea gridAutoColumns
+ syntax keyword typescriptDOMStyle contained gridAutoFlow gridAutoPosition gridAutoRows
+ syntax keyword typescriptDOMStyle contained gridColumn gridColumnStart gridColumnEnd
+ syntax keyword typescriptDOMStyle contained gridRow gridRowStart gridRowEnd gridTemplate
+ syntax keyword typescriptDOMStyle contained gridTemplateAreas gridTemplateRows gridTemplateColumns
+ syntax keyword typescriptDOMStyle contained height hyphens imageRendering imageResolution
+ syntax keyword typescriptDOMStyle contained imageOrientation imeMode inherit justifyContent
+ syntax keyword typescriptDOMStyle contained left letterSpacing lineBreak lineHeight
+ syntax keyword typescriptDOMStyle contained listStyle listStyleImage listStylePosition
+ syntax keyword typescriptDOMStyle contained listStyleType margin marginBottom marginLeft
+ syntax keyword typescriptDOMStyle contained marginRight marginTop marks mask maskType
+ syntax keyword typescriptDOMStyle contained maxHeight maxWidth minHeight minWidth
+ syntax keyword typescriptDOMStyle contained mixBlendMode objectFit objectPosition
+ syntax keyword typescriptDOMStyle contained opacity order orphans outline outlineColor
+ syntax keyword typescriptDOMStyle contained outlineOffset outlineStyle outlineWidth
+ syntax keyword typescriptDOMStyle contained overflow overflowWrap overflowX overflowY
+ syntax keyword typescriptDOMStyle contained overflowClipBox padding paddingBottom
+ syntax keyword typescriptDOMStyle contained paddingLeft paddingRight paddingTop pageBreakAfter
+ syntax keyword typescriptDOMStyle contained pageBreakBefore pageBreakInside perspective
+ syntax keyword typescriptDOMStyle contained perspectiveOrigin pointerEvents position
+ syntax keyword typescriptDOMStyle contained quotes resize right shapeImageThreshold
+ syntax keyword typescriptDOMStyle contained shapeMargin shapeOutside tableLayout tabSize
+ syntax keyword typescriptDOMStyle contained textAlign textAlignLast textCombineHorizontal
+ syntax keyword typescriptDOMStyle contained textDecoration textDecorationColor textDecorationLine
+ syntax keyword typescriptDOMStyle contained textDecorationStyle textIndent textOrientation
+ syntax keyword typescriptDOMStyle contained textOverflow textRendering textShadow
+ syntax keyword typescriptDOMStyle contained textTransform textUnderlinePosition top
+ syntax keyword typescriptDOMStyle contained touchAction transform transformOrigin
+ syntax keyword typescriptDOMStyle contained transformStyle transition transitionDelay
+ syntax keyword typescriptDOMStyle contained transitionDuration transitionProperty
+ syntax keyword typescriptDOMStyle contained transitionTimingFunction unicodeBidi unicodeRange
+ syntax keyword typescriptDOMStyle contained userSelect userZoom verticalAlign visibility
+ syntax keyword typescriptDOMStyle contained whiteSpace width willChange wordBreak
+ syntax keyword typescriptDOMStyle contained wordSpacing wordWrap writingMode zIndex
+ hi def link typescriptDOMStyle Keyword
+
+
+
+ let typescript_props = 1
+ syntax keyword typescriptAnimationEvent contained animationend animationiteration
+ syntax keyword typescriptAnimationEvent contained animationstart beginEvent endEvent
+ syntax keyword typescriptAnimationEvent contained repeatEvent
+ syntax cluster events add=typescriptAnimationEvent
+ hi def link typescriptAnimationEvent Title
+ syntax keyword typescriptCSSEvent contained CssRuleViewRefreshed CssRuleViewChanged
+ syntax keyword typescriptCSSEvent contained CssRuleViewCSSLinkClicked transitionend
+ syntax cluster events add=typescriptCSSEvent
+ hi def link typescriptCSSEvent Title
+ syntax keyword typescriptDatabaseEvent contained blocked complete error success upgradeneeded
+ syntax keyword typescriptDatabaseEvent contained versionchange
+ syntax cluster events add=typescriptDatabaseEvent
+ hi def link typescriptDatabaseEvent Title
+ syntax keyword typescriptDocumentEvent contained DOMLinkAdded DOMLinkRemoved DOMMetaAdded
+ syntax keyword typescriptDocumentEvent contained DOMMetaRemoved DOMWillOpenModalDialog
+ syntax keyword typescriptDocumentEvent contained DOMModalDialogClosed unload
+ syntax cluster events add=typescriptDocumentEvent
+ hi def link typescriptDocumentEvent Title
+ syntax keyword typescriptDOMMutationEvent contained DOMAttributeNameChanged DOMAttrModified
+ syntax keyword typescriptDOMMutationEvent contained DOMCharacterDataModified DOMContentLoaded
+ syntax keyword typescriptDOMMutationEvent contained DOMElementNameChanged DOMNodeInserted
+ syntax keyword typescriptDOMMutationEvent contained DOMNodeInsertedIntoDocument DOMNodeRemoved
+ syntax keyword typescriptDOMMutationEvent contained DOMNodeRemovedFromDocument DOMSubtreeModified
+ syntax cluster events add=typescriptDOMMutationEvent
+ hi def link typescriptDOMMutationEvent Title
+ syntax keyword typescriptDragEvent contained drag dragdrop dragend dragenter dragexit
+ syntax keyword typescriptDragEvent contained draggesture dragleave dragover dragstart
+ syntax keyword typescriptDragEvent contained drop
+ syntax cluster events add=typescriptDragEvent
+ hi def link typescriptDragEvent Title
+ syntax keyword typescriptElementEvent contained invalid overflow underflow DOMAutoComplete
+ syntax keyword typescriptElementEvent contained command commandupdate
+ syntax cluster events add=typescriptElementEvent
+ hi def link typescriptElementEvent Title
+ syntax keyword typescriptFocusEvent contained blur change DOMFocusIn DOMFocusOut focus
+ syntax keyword typescriptFocusEvent contained focusin focusout
+ syntax cluster events add=typescriptFocusEvent
+ hi def link typescriptFocusEvent Title
+ syntax keyword typescriptFormEvent contained reset submit
+ syntax cluster events add=typescriptFormEvent
+ hi def link typescriptFormEvent Title
+ syntax keyword typescriptFrameEvent contained DOMFrameContentLoaded
+ syntax cluster events add=typescriptFrameEvent
+ hi def link typescriptFrameEvent Title
+ syntax keyword typescriptInputDeviceEvent contained click contextmenu DOMMouseScroll
+ syntax keyword typescriptInputDeviceEvent contained dblclick gamepadconnected gamepaddisconnected
+ syntax keyword typescriptInputDeviceEvent contained keydown keypress keyup MozGamepadButtonDown
+ syntax keyword typescriptInputDeviceEvent contained MozGamepadButtonUp mousedown mouseenter
+ syntax keyword typescriptInputDeviceEvent contained mouseleave mousemove mouseout
+ syntax keyword typescriptInputDeviceEvent contained mouseover mouseup mousewheel MozMousePixelScroll
+ syntax keyword typescriptInputDeviceEvent contained pointerlockchange pointerlockerror
+ syntax keyword typescriptInputDeviceEvent contained wheel
+ syntax cluster events add=typescriptInputDeviceEvent
+ hi def link typescriptInputDeviceEvent Title
+ syntax keyword typescriptMediaEvent contained audioprocess canplay canplaythrough
+ syntax keyword typescriptMediaEvent contained durationchange emptied ended ended loadeddata
+ syntax keyword typescriptMediaEvent contained loadedmetadata MozAudioAvailable pause
+ syntax keyword typescriptMediaEvent contained play playing ratechange seeked seeking
+ syntax keyword typescriptMediaEvent contained stalled suspend timeupdate volumechange
+ syntax keyword typescriptMediaEvent contained waiting complete
+ syntax cluster events add=typescriptMediaEvent
+ hi def link typescriptMediaEvent Title
+ syntax keyword typescriptMenuEvent contained DOMMenuItemActive DOMMenuItemInactive
+ syntax cluster events add=typescriptMenuEvent
+ hi def link typescriptMenuEvent Title
+ syntax keyword typescriptNetworkEvent contained datachange dataerror disabled enabled
+ syntax keyword typescriptNetworkEvent contained offline online statuschange connectionInfoUpdate
+ syntax cluster events add=typescriptNetworkEvent
+ hi def link typescriptNetworkEvent Title
+ syntax keyword typescriptProgressEvent contained abort error load loadend loadstart
+ syntax keyword typescriptProgressEvent contained progress timeout uploadprogress
+ syntax cluster events add=typescriptProgressEvent
+ hi def link typescriptProgressEvent Title
+ syntax keyword typescriptResourceEvent contained cached error load
+ syntax cluster events add=typescriptResourceEvent
+ hi def link typescriptResourceEvent Title
+ syntax keyword typescriptScriptEvent contained afterscriptexecute beforescriptexecute
+ syntax cluster events add=typescriptScriptEvent
+ hi def link typescriptScriptEvent Title
+ syntax keyword typescriptSensorEvent contained compassneedscalibration devicelight
+ syntax keyword typescriptSensorEvent contained devicemotion deviceorientation deviceproximity
+ syntax keyword typescriptSensorEvent contained orientationchange userproximity
+ syntax cluster events add=typescriptSensorEvent
+ hi def link typescriptSensorEvent Title
+ syntax keyword typescriptSessionHistoryEvent contained pagehide pageshow popstate
+ syntax cluster events add=typescriptSessionHistoryEvent
+ hi def link typescriptSessionHistoryEvent Title
+ syntax keyword typescriptStorageEvent contained change storage
+ syntax cluster events add=typescriptStorageEvent
+ hi def link typescriptStorageEvent Title
+ syntax keyword typescriptSVGEvent contained SVGAbort SVGError SVGLoad SVGResize SVGScroll
+ syntax keyword typescriptSVGEvent contained SVGUnload SVGZoom
+ syntax cluster events add=typescriptSVGEvent
+ hi def link typescriptSVGEvent Title
+ syntax keyword typescriptTabEvent contained visibilitychange
+ syntax cluster events add=typescriptTabEvent
+ hi def link typescriptTabEvent Title
+ syntax keyword typescriptTextEvent contained compositionend compositionstart compositionupdate
+ syntax keyword typescriptTextEvent contained copy cut paste select text
+ syntax cluster events add=typescriptTextEvent
+ hi def link typescriptTextEvent Title
+ syntax keyword typescriptTouchEvent contained touchcancel touchend touchenter touchleave
+ syntax keyword typescriptTouchEvent contained touchmove touchstart
+ syntax cluster events add=typescriptTouchEvent
+ hi def link typescriptTouchEvent Title
+ syntax keyword typescriptUpdateEvent contained checking downloading error noupdate
+ syntax keyword typescriptUpdateEvent contained obsolete updateready
+ syntax cluster events add=typescriptUpdateEvent
+ hi def link typescriptUpdateEvent Title
+ syntax keyword typescriptValueChangeEvent contained hashchange input readystatechange
+ syntax cluster events add=typescriptValueChangeEvent
+ hi def link typescriptValueChangeEvent Title
+ syntax keyword typescriptViewEvent contained fullscreen fullscreenchange fullscreenerror
+ syntax keyword typescriptViewEvent contained resize scroll
+ syntax cluster events add=typescriptViewEvent
+ hi def link typescriptViewEvent Title
+ syntax keyword typescriptWebsocketEvent contained close error message open
+ syntax cluster events add=typescriptWebsocketEvent
+ hi def link typescriptWebsocketEvent Title
+ syntax keyword typescriptWindowEvent contained DOMWindowCreated DOMWindowClose DOMTitleChanged
+ syntax cluster events add=typescriptWindowEvent
+ hi def link typescriptWindowEvent Title
+ syntax keyword typescriptUncategorizedEvent contained beforeunload message open show
+ syntax cluster events add=typescriptUncategorizedEvent
+ hi def link typescriptUncategorizedEvent Title
+ syntax keyword typescriptServiceWorkerEvent contained install activate fetch
+ syntax cluster events add=typescriptServiceWorkerEvent
+ hi def link typescriptServiceWorkerEvent Title
+
+
+endif
+
+" patch
+" patch for generated code
+syntax keyword typescriptGlobal Promise
+ \ nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg,typescriptTypeArguments oneline
+syntax keyword typescriptGlobal Map WeakMap
+ \ nextgroup=typescriptGlobalPromiseDot,typescriptFuncCallArg,typescriptTypeArguments oneline
+
+syntax keyword typescriptConstructor contained constructor
+ \ nextgroup=@typescriptCallSignature
+ \ skipwhite skipempty
+
+
+syntax cluster memberNextGroup contains=typescriptMemberOptionality,typescriptTypeAnnotation,@typescriptCallSignature
+
+syntax match typescriptMember /#\?\K\k*/
+ \ nextgroup=@memberNextGroup
+ \ contained skipwhite
+
+syntax match typescriptMethodAccessor contained /\v(get|set)\s\K/me=e-1
+ \ nextgroup=@typescriptMembers
+
+syntax cluster typescriptPropertyMemberDeclaration contains=
+ \ typescriptClassStatic,
+ \ typescriptAccessibilityModifier,
+ \ typescriptReadonlyModifier,
+ \ typescriptMethodAccessor,
+ \ @typescriptMembers
+ " \ typescriptMemberVariableDeclaration
+
+syntax match typescriptMemberOptionality /?\|!/ contained
+ \ nextgroup=typescriptTypeAnnotation,@typescriptCallSignature
+ \ skipwhite skipempty
+
+syntax cluster typescriptMembers contains=typescriptMember,typescriptStringMember,typescriptComputedMember
+
+syntax keyword typescriptClassStatic static
+ \ nextgroup=@typescriptMembers,typescriptAsyncFuncKeyword,typescriptReadonlyModifier
+ \ skipwhite contained
+
+syntax keyword typescriptAccessibilityModifier public private protected contained
+
+syntax keyword typescriptReadonlyModifier readonly contained
+
+syntax region typescriptStringMember contained
+ \ start=/\z(["']\)/ skip=/\\\\\|\\\z1\|\\\n/ end=/\z1/
+ \ nextgroup=@memberNextGroup
+ \ skipwhite skipempty
+
+syntax region typescriptComputedMember contained matchgroup=typescriptProperty
+ \ start=/\[/rs=s+1 end=/]/
+ \ contains=@typescriptValue,typescriptMember,typescriptMappedIn
+ \ nextgroup=@memberNextGroup
+ \ skipwhite skipempty
+
+"don't add typescriptMembers to nextgroup, let outer scope match it
+" so we won't match abstract method outside abstract class
+syntax keyword typescriptAbstract abstract
+ \ nextgroup=typescriptClassKeyword
+ \ skipwhite skipnl
+syntax keyword typescriptClassKeyword class
+ \ nextgroup=typescriptClassName,typescriptClassExtends,typescriptClassBlock
+ \ skipwhite
+
+syntax match typescriptClassName contained /\K\k*/
+ \ nextgroup=typescriptClassBlock,typescriptClassExtends,typescriptClassTypeParameter
+ \ skipwhite skipnl
+
+syntax region typescriptClassTypeParameter
+ \ start=/</ end=/>/
+ \ contains=@typescriptTypeParameterCluster
+ \ nextgroup=typescriptClassBlock,typescriptClassExtends
+ \ contained skipwhite skipnl
+
+syntax keyword typescriptClassExtends contained extends implements nextgroup=typescriptClassHeritage skipwhite skipnl
+
+syntax match typescriptClassHeritage contained /\v(\k|\.|\(|\))+/
+ \ nextgroup=typescriptClassBlock,typescriptClassExtends,typescriptMixinComma,typescriptClassTypeArguments
+ \ contains=@typescriptValue
+ \ skipwhite skipnl
+ \ contained
+
+syntax region typescriptClassTypeArguments matchgroup=typescriptTypeBrackets
+ \ start=/</ end=/>/
+ \ contains=@typescriptType
+ \ nextgroup=typescriptClassExtends,typescriptClassBlock,typescriptMixinComma
+ \ contained skipwhite skipnl
+
+syntax match typescriptMixinComma /,/ contained nextgroup=typescriptClassHeritage skipwhite skipnl
+
+" we need add arrowFunc to class block for high order arrow func
+" see test case
+syntax region typescriptClassBlock matchgroup=typescriptBraces start=/{/ end=/}/
+ \ contains=@typescriptPropertyMemberDeclaration,typescriptAbstract,@typescriptComments,typescriptBlock,typescriptAssign,typescriptDecorator,typescriptAsyncFuncKeyword,typescriptArrowFunc
+ \ contained fold
+
+syntax keyword typescriptInterfaceKeyword interface nextgroup=typescriptInterfaceName skipwhite
+syntax match typescriptInterfaceName contained /\k\+/
+ \ nextgroup=typescriptObjectType,typescriptInterfaceExtends,typescriptInterfaceTypeParameter
+ \ skipwhite skipnl
+syntax region typescriptInterfaceTypeParameter
+ \ start=/</ end=/>/
+ \ contains=@typescriptTypeParameterCluster
+ \ nextgroup=typescriptObjectType,typescriptInterfaceExtends
+ \ contained
+ \ skipwhite skipnl
+
+syntax keyword typescriptInterfaceExtends contained extends nextgroup=typescriptInterfaceHeritage skipwhite skipnl
+
+syntax match typescriptInterfaceHeritage contained /\v(\k|\.)+/
+ \ nextgroup=typescriptObjectType,typescriptInterfaceComma,typescriptInterfaceTypeArguments
+ \ skipwhite
+
+syntax region typescriptInterfaceTypeArguments matchgroup=typescriptTypeBrackets
+ \ start=/</ end=/>/ skip=/\s*,\s*/
+ \ contains=@typescriptType
+ \ nextgroup=typescriptObjectType,typescriptInterfaceComma
+ \ contained skipwhite
+
+syntax match typescriptInterfaceComma /,/ contained nextgroup=typescriptInterfaceHeritage skipwhite skipnl
+
+"Block VariableStatement EmptyStatement ExpressionStatement IfStatement IterationStatement ContinueStatement BreakStatement ReturnStatement WithStatement LabelledStatement SwitchStatement ThrowStatement TryStatement DebuggerStatement
+syntax cluster typescriptStatement
+ \ contains=typescriptBlock,typescriptVariable,
+ \ @typescriptTopExpression,typescriptAssign,
+ \ typescriptConditional,typescriptRepeat,typescriptBranch,
+ \ typescriptLabel,typescriptStatementKeyword,
+ \ typescriptFuncKeyword,
+ \ typescriptTry,typescriptExceptions,typescriptDebugger,
+ \ typescriptExport,typescriptInterfaceKeyword,typescriptEnum,
+ \ typescriptModule,typescriptAliasKeyword,typescriptImport
+
+syntax cluster typescriptPrimitive contains=typescriptString,typescriptTemplate,typescriptRegexpString,typescriptNumber,typescriptBoolean,typescriptNull,typescriptArray
+
+syntax cluster typescriptEventTypes contains=typescriptEventString,typescriptTemplate,typescriptNumber,typescriptBoolean,typescriptNull
+
+" top level expression: no arrow func
+" also no func keyword. funcKeyword is contained in statement
+" funcKeyword allows overloading (func without body)
+" funcImpl requires body
+syntax cluster typescriptTopExpression
+ \ contains=@typescriptPrimitive,
+ \ typescriptIdentifier,typescriptIdentifierName,
+ \ typescriptOperator,typescriptUnaryOp,
+ \ typescriptParenExp,typescriptRegexpString,
+ \ typescriptGlobal,typescriptAsyncFuncKeyword,
+ \ typescriptClassKeyword,typescriptTypeCast
+
+" no object literal, used in type cast and arrow func
+" TODO: change func keyword to funcImpl
+syntax cluster typescriptExpression
+ \ contains=@typescriptTopExpression,
+ \ typescriptArrowFuncDef,
+ \ typescriptFuncImpl
+
+syntax cluster typescriptValue
+ \ contains=@typescriptExpression,typescriptObjectLiteral
+
+syntax cluster typescriptEventExpression contains=typescriptArrowFuncDef,typescriptParenExp,@typescriptValue,typescriptRegexpString,@typescriptEventTypes,typescriptOperator,typescriptGlobal,jsxRegion
+
+syntax keyword typescriptAsyncFuncKeyword async
+ \ nextgroup=typescriptFuncKeyword,typescriptArrowFuncDef
+ \ skipwhite
+
+syntax keyword typescriptAsyncFuncKeyword await
+ \ nextgroup=@typescriptValue
+ \ skipwhite
+
+syntax keyword typescriptFuncKeyword function
+ \ nextgroup=typescriptAsyncFunc,typescriptFuncName,@typescriptCallSignature
+ \ skipwhite skipempty
+
+syntax match typescriptAsyncFunc contained /*/
+ \ nextgroup=typescriptFuncName,@typescriptCallSignature
+ \ skipwhite skipempty
+
+syntax match typescriptFuncName contained /\K\k*/
+ \ nextgroup=@typescriptCallSignature
+ \ skipwhite
+
+" destructuring ({ a: ee }) =>
+syntax match typescriptArrowFuncDef contained /(\(\s*\({\_[^}]*}\|\k\+\)\(:\_[^)]\)\?,\?\)\+)\s*=>/
+ \ contains=typescriptArrowFuncArg,typescriptArrowFunc
+ \ nextgroup=@typescriptExpression,typescriptBlock
+ \ skipwhite skipempty
+
+" matches `(a) =>` or `([a]) =>` or
+" `(
+" a) =>`
+syntax match typescriptArrowFuncDef contained /(\(\_s*[a-zA-Z\$_\[.]\_[^)]*\)*)\s*=>/
+ \ contains=typescriptArrowFuncArg,typescriptArrowFunc
+ \ nextgroup=@typescriptExpression,typescriptBlock
+ \ skipwhite skipempty
+
+syntax match typescriptArrowFuncDef contained /\K\k*\s*=>/
+ \ contains=typescriptArrowFuncArg,typescriptArrowFunc
+ \ nextgroup=@typescriptExpression,typescriptBlock
+ \ skipwhite skipempty
+
+" TODO: optimize this pattern
+syntax region typescriptArrowFuncDef contained start=/(\_[^(^)]*):/ end=/=>/
+ \ contains=typescriptArrowFuncArg,typescriptArrowFunc,typescriptTypeAnnotation
+ \ nextgroup=@typescriptExpression,typescriptBlock
+ \ skipwhite skipempty keepend
+
+syntax match typescriptArrowFunc /=>/
+syntax match typescriptArrowFuncArg contained /\K\k*/
+syntax region typescriptArrowFuncArg contained start=/<\|(/ end=/\ze=>/ contains=@typescriptCallSignature
+
+syntax region typescriptReturnAnnotation contained start=/:/ end=/{/me=e-1 contains=@typescriptType nextgroup=typescriptBlock
+
+
+syntax region typescriptFuncImpl contained start=/function\>/ end=/{/me=e-1
+ \ contains=typescriptFuncKeyword
+ \ nextgroup=typescriptBlock
+
+syntax cluster typescriptCallImpl contains=typescriptGenericImpl,typescriptParamImpl
+syntax region typescriptGenericImpl matchgroup=typescriptTypeBrackets
+ \ start=/</ end=/>/ skip=/\s*,\s*/
+ \ contains=typescriptTypeParameter
+ \ nextgroup=typescriptParamImpl
+ \ contained skipwhite
+syntax region typescriptParamImpl matchgroup=typescriptParens
+ \ start=/(/ end=/)/
+ \ contains=typescriptDecorator,@typescriptParameterList,@typescriptComments
+ \ nextgroup=typescriptReturnAnnotation,typescriptBlock
+ \ contained skipwhite skipnl
+
+syntax match typescriptDecorator /@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>/
+ \ nextgroup=typescriptFuncCallArg,typescriptTypeArguments
+ \ contains=@_semantic,typescriptDotNotation
+
+" Define the default highlighting.
+hi def link typescriptReserved Error
+
+hi def link typescriptEndColons Exception
+hi def link typescriptSymbols Normal
+hi def link typescriptBraces Function
+hi def link typescriptParens Normal
+hi def link typescriptComment Comment
+hi def link typescriptLineComment Comment
+hi def link typescriptDocComment Comment
+hi def link typescriptCommentTodo Todo
+hi def link typescriptMagicComment SpecialComment
+hi def link typescriptRef Include
+hi def link typescriptDocNotation SpecialComment
+hi def link typescriptDocTags SpecialComment
+hi def link typescriptDocNGParam typescriptDocParam
+hi def link typescriptDocParam Function
+hi def link typescriptDocNumParam Function
+hi def link typescriptDocEventRef Function
+hi def link typescriptDocNamedParamType Type
+hi def link typescriptDocParamName Type
+hi def link typescriptDocParamType Type
+hi def link typescriptString String
+hi def link typescriptSpecial Special
+hi def link typescriptStringLiteralType String
+hi def link typescriptTemplateLiteralType String
+hi def link typescriptStringMember String
+hi def link typescriptTemplate String
+hi def link typescriptEventString String
+hi def link typescriptDestructureString String
+hi def link typescriptASCII Special
+hi def link typescriptTemplateSB Label
+hi def link typescriptRegexpString String
+hi def link typescriptGlobal Constant
+hi def link typescriptTestGlobal Function
+hi def link typescriptPrototype Type
+hi def link typescriptConditional Conditional
+hi def link typescriptConditionalElse Conditional
+hi def link typescriptCase Conditional
+hi def link typescriptDefault typescriptCase
+hi def link typescriptBranch Conditional
+hi def link typescriptIdentifier Structure
+hi def link typescriptVariable Identifier
+hi def link typescriptDestructureVariable PreProc
+hi def link typescriptEnumKeyword Identifier
+hi def link typescriptRepeat Repeat
+hi def link typescriptForOperator Repeat
+hi def link typescriptStatementKeyword Statement
+hi def link typescriptMessage Keyword
+hi def link typescriptOperator Identifier
+hi def link typescriptKeywordOp Identifier
+hi def link typescriptCastKeyword Special
+hi def link typescriptType Type
+hi def link typescriptNull Boolean
+hi def link typescriptNumber Number
+hi def link typescriptBoolean Boolean
+hi def link typescriptObjectLabel typescriptLabel
+hi def link typescriptDestructureLabel Function
+hi def link typescriptLabel Label
+hi def link typescriptTupleLable Label
+hi def link typescriptStringProperty String
+hi def link typescriptImport Special
+hi def link typescriptImportType Special
+hi def link typescriptAmbientDeclaration Special
+hi def link typescriptExport Special
+hi def link typescriptExportType Special
+hi def link typescriptModule Special
+hi def link typescriptTry Special
+hi def link typescriptExceptions Special
+
+hi def link typescriptMember Function
+hi def link typescriptMethodAccessor Operator
+
+hi def link typescriptAsyncFuncKeyword Keyword
+hi def link typescriptObjectAsyncKeyword Keyword
+hi def link typescriptAsyncFor Keyword
+hi def link typescriptFuncKeyword Keyword
+hi def link typescriptAsyncFunc Keyword
+hi def link typescriptArrowFunc Type
+hi def link typescriptFuncName Function
+hi def link typescriptFuncArg PreProc
+hi def link typescriptArrowFuncArg PreProc
+hi def link typescriptFuncComma Operator
+
+hi def link typescriptClassKeyword Keyword
+hi def link typescriptClassExtends Keyword
+" hi def link typescriptClassName Function
+hi def link typescriptAbstract Special
+" hi def link typescriptClassHeritage Function
+" hi def link typescriptInterfaceHeritage Function
+hi def link typescriptClassStatic StorageClass
+hi def link typescriptReadonlyModifier Keyword
+hi def link typescriptInterfaceKeyword Keyword
+hi def link typescriptInterfaceExtends Keyword
+hi def link typescriptInterfaceName Function
+
+hi def link shellbang Comment
+
+hi def link typescriptTypeParameter Identifier
+hi def link typescriptConstraint Keyword
+hi def link typescriptPredefinedType Type
+hi def link typescriptReadonlyArrayKeyword Keyword
+hi def link typescriptUnion Operator
+hi def link typescriptFuncTypeArrow Function
+hi def link typescriptConstructorType Function
+hi def link typescriptTypeQuery Keyword
+hi def link typescriptAccessibilityModifier Keyword
+hi def link typescriptOptionalMark PreProc
+hi def link typescriptFuncType Special
+hi def link typescriptMappedIn Special
+hi def link typescriptCall PreProc
+hi def link typescriptParamImpl PreProc
+hi def link typescriptConstructSignature Identifier
+hi def link typescriptAliasDeclaration Identifier
+hi def link typescriptAliasKeyword Keyword
+hi def link typescriptUserDefinedType Keyword
+hi def link typescriptTypeReference Identifier
+hi def link typescriptConstructor Keyword
+hi def link typescriptDecorator Special
+hi def link typescriptAssertType Keyword
+
+hi link typeScript NONE
+
+if exists('s:cpo_save')
+ let &cpo = s:cpo_save
+ unlet s:cpo_save
+endif
diff --git a/runtime/syntax/sicad.vim b/runtime/syntax/sicad.vim
new file mode 100644
index 0000000..20eb14c
--- /dev/null
+++ b/runtime/syntax/sicad.vim
@@ -0,0 +1,390 @@
+" Vim syntax file
+" Language: SiCAD (procedure language)
+" Maintainer: Zsolt Branyiczky <zbranyiczky@lmark.mgx.hu>
+" Last Change: 2003 May 11
+" URL: http://lmark.mgx.hu:81/download/vim/sicad.vim
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" use SQL highlighting after 'sql' command
+syn include @SQL syntax/sql.vim
+unlet b:current_syntax
+
+" spaces are used in (auto)indents since sicad hates tabulator characters
+setlocal expandtab
+
+" ignore case
+syn case ignore
+
+" most important commands - not listed by ausku
+syn keyword sicadStatement define
+syn keyword sicadStatement dialog
+syn keyword sicadStatement do
+syn keyword sicadStatement dop contained
+syn keyword sicadStatement end
+syn keyword sicadStatement enddo
+syn keyword sicadStatement endp
+syn keyword sicadStatement erroff
+syn keyword sicadStatement erron
+syn keyword sicadStatement exitp
+syn keyword sicadGoto goto contained
+syn keyword sicadStatement hh
+syn keyword sicadStatement if
+syn keyword sicadStatement in
+syn keyword sicadStatement msgsup
+syn keyword sicadStatement out
+syn keyword sicadStatement padd
+syn keyword sicadStatement parbeg
+syn keyword sicadStatement parend
+syn keyword sicadStatement pdoc
+syn keyword sicadStatement pprot
+syn keyword sicadStatement procd
+syn keyword sicadStatement procn
+syn keyword sicadStatement psav
+syn keyword sicadStatement psel
+syn keyword sicadStatement psymb
+syn keyword sicadStatement ptrace
+syn keyword sicadStatement ptstat
+syn keyword sicadStatement set
+syn keyword sicadStatement sql contained
+syn keyword sicadStatement step
+syn keyword sicadStatement sys
+syn keyword sicadStatement ww
+
+" functions
+syn match sicadStatement "\<atan("me=e-1
+syn match sicadStatement "\<atan2("me=e-1
+syn match sicadStatement "\<cos("me=e-1
+syn match sicadStatement "\<dist("me=e-1
+syn match sicadStatement "\<exp("me=e-1
+syn match sicadStatement "\<log("me=e-1
+syn match sicadStatement "\<log10("me=e-1
+syn match sicadStatement "\<sin("me=e-1
+syn match sicadStatement "\<sqrt("me=e-1
+syn match sicadStatement "\<tanh("me=e-1
+syn match sicadStatement "\<x("me=e-1
+syn match sicadStatement "\<y("me=e-1
+syn match sicadStatement "\<v("me=e-1
+syn match sicadStatement "\<x%g\=p[0-9]\{1,2}\>"me=s+1
+syn match sicadStatement "\<y%g\=p[0-9]\{1,2}\>"me=s+1
+
+" logical operators
+syn match sicadOperator "\.and\."
+syn match sicadOperator "\.ne\."
+syn match sicadOperator "\.not\."
+syn match sicadOperator "\.eq\."
+syn match sicadOperator "\.ge\."
+syn match sicadOperator "\.gt\."
+syn match sicadOperator "\.le\."
+syn match sicadOperator "\.lt\."
+syn match sicadOperator "\.or\."
+syn match sicadOperator "\.eqv\."
+syn match sicadOperator "\.neqv\."
+
+" variable name
+syn match sicadIdentifier "%g\=[irpt][0-9]\{1,2}\>"
+syn match sicadIdentifier "%g\=l[0-9]\>"
+syn match sicadIdentifier "%g\=[irptl]("me=e-1
+syn match sicadIdentifier "%error\>"
+syn match sicadIdentifier "%nsel\>"
+syn match sicadIdentifier "%nvar\>"
+syn match sicadIdentifier "%scl\>"
+syn match sicadIdentifier "%wd\>"
+syn match sicadIdentifier "\$[irt][0-9]\{1,2}\>" contained
+
+" label
+syn match sicadLabel1 "^ *\.[a-z][a-z0-9]\{0,7} \+[^ ]"me=e-1
+syn match sicadLabel1 "^ *\.[a-z][a-z0-9]\{0,7}\*"me=e-1
+syn match sicadLabel2 "\<goto \.\=[a-z][a-z0-9]\{0,7}\>" contains=sicadGoto
+syn match sicadLabel2 "\<goto\.[a-z][a-z0-9]\{0,7}\>" contains=sicadGoto
+
+" boolean
+syn match sicadBoolean "\.[ft]\."
+" integer without sign
+syn match sicadNumber "\<[0-9]\+\>"
+" floating point number, with dot, optional exponent
+syn match sicadFloat "\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=\>"
+" floating point number, starting with a dot, optional exponent
+syn match sicadFloat "\.[0-9]\+\(e[-+]\=[0-9]\+\)\=\>"
+" floating point number, without dot, with exponent
+syn match sicadFloat "\<[0-9]\+e[-+]\=[0-9]\+\>"
+
+" without this extraString definition a ' ; ' could stop the comment
+syn region sicadString_ transparent start=+'+ end=+'+ oneline contained
+" string
+syn region sicadString start=+'+ end=+'+ oneline
+
+" comments - nasty ones in sicad
+
+" - ' * blabla' or ' * blabla;'
+syn region sicadComment start="^ *\*" skip='\\ *$' end=";"me=e-1 end="$" contains=sicadString_
+" - ' .LABEL03 * blabla' or ' .LABEL03 * blabla;'
+syn region sicadComment start="^ *\.[a-z][a-z0-9]\{0,7} *\*" skip='\\ *$' end=";"me=e-1 end="$" contains=sicadLabel1,sicadString_
+" - '; * blabla' or '; * blabla;'
+syn region sicadComment start="; *\*"ms=s+1 skip='\\ *$' end=";"me=e-1 end="$" contains=sicadString_
+" - comments between docbeg and docend
+syn region sicadComment matchgroup=sicadStatement start="\<docbeg\>" end="\<docend\>"
+
+" catch \ at the end of line
+syn match sicadLineCont "\\ *$"
+
+" parameters in dop block - for the time being it is not used
+"syn match sicadParameter " [a-z][a-z0-9]*[=:]"me=e-1 contained
+" dop block - for the time being it is not used
+syn region sicadDopBlock transparent matchgroup=sicadStatement start='\<dop\>' skip='\\ *$' end=';'me=e-1 end='$' contains=ALL
+
+" sql block - new highlighting mode is used (see syn include)
+syn region sicadSqlBlock transparent matchgroup=sicadStatement start='\<sql\>' skip='\\ *$' end=';'me=e-1 end='$' contains=@SQL,sicadIdentifier,sicadLineCont
+
+" synchronizing
+syn sync clear " clear sync used in sql.vim
+syn sync match sicadSyncComment groupthere NONE "\<docend\>"
+syn sync match sicadSyncComment grouphere sicadComment "\<docbeg\>"
+" next line must be examined too
+syn sync linecont "\\ *$"
+
+" catch error caused by tabulator key
+syn match sicadError "\t"
+" catch errors caused by wrong parenthesis
+"syn region sicadParen transparent start='(' end=')' contains=ALLBUT,sicadParenError
+syn region sicadParen transparent start='(' skip='\\ *$' end=')' end='$' contains=ALLBUT,sicadParenError
+syn match sicadParenError ')'
+"syn region sicadApostrophe transparent start=+'+ end=+'+ contains=ALLBUT,sicadApostropheError
+"syn match sicadApostropheError +'+
+" not closed apostrophe
+"syn region sicadError start=+'+ end=+$+ contains=ALLBUT,sicadApostropheError
+"syn match sicadApostropheError +'[^']*$+me=s+1 contained
+
+" SICAD keywords
+syn keyword sicadStatement abst add addsim adrin aib
+syn keyword sicadStatement aibzsn aidump aifgeo aisbrk alknam
+syn keyword sicadStatement alknr alksav alksel alktrc alopen
+syn keyword sicadStatement ansbo aractiv ararea arareao ararsfs
+syn keyword sicadStatement arbuffer archeck arcomv arcont arconv
+syn keyword sicadStatement arcopy arcopyo arcorr arcreate arerror
+syn keyword sicadStatement areval arflfm arflop arfrast argbkey
+syn keyword sicadStatement argenf argraph argrapho arinters arkompfl
+syn keyword sicadStatement arlasso arlcopy arlgraph arline arlining
+syn keyword sicadStatement arlisly armakea armemo arnext aroverl
+syn keyword sicadStatement arovers arparkmd arpars arrefp arselect
+syn keyword sicadStatement arset arstruct arunify arupdate arvector
+syn keyword sicadStatement arveinfl arvflfl arvoroni ausku basis
+syn keyword sicadStatement basisaus basisdar basisnr bebos befl
+syn keyword sicadStatement befla befli befls beo beorta
+syn keyword sicadStatement beortn bep bepan bepap bepola
+syn keyword sicadStatement bepoln bepsn bepsp ber berili
+syn keyword sicadStatement berk bewz bkl bli bma
+syn keyword sicadStatement bmakt bmakts bmbm bmerk bmerw
+syn keyword sicadStatement bmerws bminit bmk bmorth bmos
+syn keyword sicadStatement bmoss bmpar bmsl bmsum bmsums
+syn keyword sicadStatement bmver bmvero bmw bo bta
+syn keyword sicadStatement buffer bvl bw bza bzap
+syn keyword sicadStatement bzd bzgera bzorth cat catel
+syn keyword sicadStatement cdbdiff ce cgmparam close closesim
+syn keyword sicadStatement comgener comp comp conclose conclose coninfo
+syn keyword sicadStatement conopen conread contour conwrite cop
+syn keyword sicadStatement copar coparp coparp2 copel cr
+syn keyword sicadStatement cs cstat cursor d da
+syn keyword sicadStatement dal dasp dasps dataout dcol
+syn keyword sicadStatement dd defsr del delel deskrdef
+syn keyword sicadStatement df dfn dfns dfpos dfr
+syn keyword sicadStatement dgd dgm dgp dgr dh
+syn keyword sicadStatement diag diaus dir disbsd dkl
+syn keyword sicadStatement dktx dkur dlgfix dlgfre dma
+syn keyword sicadStatement dprio dr druse dsel dskinfo
+syn keyword sicadStatement dsr dv dve eba ebd
+syn keyword sicadStatement ebdmod ebs edbsdbin edbssnin edbsvtin
+syn keyword sicadStatement edt egaus egdef egdefs eglist
+syn keyword sicadStatement egloe egloenp egloes egxx eib
+syn keyword sicadStatement ekur ekuradd elel elpos epg
+syn keyword sicadStatement esau esauadd esek eta etap
+syn keyword sicadStatement etav feparam ficonv filse fl
+syn keyword sicadStatement fli flin flini flinit flins
+syn keyword sicadStatement flkor fln flnli flop flout
+syn keyword sicadStatement flowert flparam flraster flsy flsyd
+syn keyword sicadStatement flsym flsyms flsymt fmtatt fmtdia
+syn keyword sicadStatement fmtlib fpg gbadddb gbaim gbanrs
+syn keyword sicadStatement gbatw gbau gbaudit gbclosp gbcredic
+syn keyword sicadStatement gbcreem gbcreld gbcresdb gbcretd gbde
+syn keyword sicadStatement gbdeldb gbdeldic gbdelem gbdelld gbdelref
+syn keyword sicadStatement gbdeltd gbdisdb gbdisem gbdisld gbdistd
+syn keyword sicadStatement gbebn gbemau gbepsv gbgetdet gbgetes
+syn keyword sicadStatement gbgetmas gbgqel gbgqelr gbgqsa gbgrant
+syn keyword sicadStatement gbimpdic gbler gblerb gblerf gbles
+syn keyword sicadStatement gblocdic gbmgmg gbmntdb gbmoddb gbnam
+syn keyword sicadStatement gbneu gbopenp gbpoly gbpos gbpruef
+syn keyword sicadStatement gbpruefg gbps gbqgel gbqgsa gbrefdic
+syn keyword sicadStatement gbreftab gbreldic gbresem gbrevoke gbsav
+syn keyword sicadStatement gbsbef gbsddk gbsicu gbsrt gbss
+syn keyword sicadStatement gbstat gbsysp gbszau gbubp gbueb
+syn keyword sicadStatement gbunmdb gbuseem gbw gbweg gbwieh
+syn keyword sicadStatement gbzt gelp gera getvar hgw
+syn keyword sicadStatement hpg hr0 hra hrar icclchan
+syn keyword sicadStatement iccrecon icdescon icfree icgetcon icgtresp
+syn keyword sicadStatement icopchan icputcon icreacon icreqd icreqnw
+syn keyword sicadStatement icreqw icrespd icresrve icwricon imsget
+syn keyword sicadStatement imsgqel imsmget imsplot imsprint inchk
+syn keyword sicadStatement inf infd inst kbml kbmls
+syn keyword sicadStatement kbmm kbmms kbmt kbmtdps kbmts
+syn keyword sicadStatement khboe khbol khdob khe khetap
+syn keyword sicadStatement khfrw khktk khlang khld khmfrp
+syn keyword sicadStatement khmks khms khpd khpfeil khpl
+syn keyword sicadStatement khprofil khrand khsa khsabs khsaph
+syn keyword sicadStatement khsd khsdl khse khskbz khsna
+syn keyword sicadStatement khsnum khsob khspos khsvph khtrn
+syn keyword sicadStatement khver khzpe khzpl kib kldat
+syn keyword sicadStatement klleg klsch klsym klvert kmpg
+syn keyword sicadStatement kmtlage kmtp kmtps kodef kodefp
+syn keyword sicadStatement kodefs kok kokp kolae kom
+syn keyword sicadStatement kontly kopar koparp kopg kosy
+syn keyword sicadStatement kp kr krsek krtclose krtopen
+syn keyword sicadStatement ktk lad lae laesel language
+syn keyword sicadStatement lasso lbdes lcs ldesk ldesks
+syn keyword sicadStatement le leak leattdes leba lebas
+syn keyword sicadStatement lebaznp lebd lebm lebv lebvaus
+syn keyword sicadStatement lebvlist lede ledel ledepo ledepol
+syn keyword sicadStatement ledepos leder ledist ledm lee
+syn keyword sicadStatement leeins lees lege lekr lekrend
+syn keyword sicadStatement lekwa lekwas lel lelh lell
+syn keyword sicadStatement lelp lem lena lend lenm
+syn keyword sicadStatement lep lepe lepee lepko lepl
+syn keyword sicadStatement lepmko lepmkop lepos leposm leqs
+syn keyword sicadStatement leqsl leqssp leqsv leqsvov les
+syn keyword sicadStatement lesch lesr less lestd let
+syn keyword sicadStatement letaum letl lev levm levtm
+syn keyword sicadStatement levtp levtr lew lewm lexx
+syn keyword sicadStatement lfs li lining lldes lmode
+syn keyword sicadStatement loedk loepkt lop lose loses
+syn keyword sicadStatement lp lppg lppruef lr ls
+syn keyword sicadStatement lsop lsta lstat ly lyaus
+syn keyword sicadStatement lz lza lzae lzbz lze
+syn keyword sicadStatement lznr lzo lzpos ma ma0
+syn keyword sicadStatement ma1 mad map mapoly mcarp
+syn keyword sicadStatement mccfr mccgr mcclr mccrf mcdf
+syn keyword sicadStatement mcdma mcdr mcdrp mcdve mcebd
+syn keyword sicadStatement mcgse mcinfo mcldrp md me
+syn keyword sicadStatement mefd mefds minmax mipg ml
+syn keyword sicadStatement mmcmdme mmdbf mmdellb mmdir mmdome
+syn keyword sicadStatement mmfsb mminfolb mmlapp mmlbf mmlistlb
+syn keyword sicadStatement mmloadcm mmmsg mmreadlb mmsetlb mmshowcm
+syn keyword sicadStatement mmstatme mnp mpo mr mra
+syn keyword sicadStatement ms msav msgout msgsnd msp
+syn keyword sicadStatement mspf mtd nasel ncomp new
+syn keyword sicadStatement nlist nlistlt nlistly nlistnp nlistpo
+syn keyword sicadStatement np npa npdes npe npem
+syn keyword sicadStatement npinfa npruef npsat npss npssa
+syn keyword sicadStatement ntz oa oan odel odf
+syn keyword sicadStatement odfx oj oja ojaddsk ojaed
+syn keyword sicadStatement ojaeds ojaef ojaefs ojaen ojak
+syn keyword sicadStatement ojaks ojakt ojakz ojalm ojatkis
+syn keyword sicadStatement ojatt ojatw ojbsel ojcasel ojckon
+syn keyword sicadStatement ojde ojdtl ojeb ojebd ojel
+syn keyword sicadStatement ojelpas ojesb ojesbd ojex ojezge
+syn keyword sicadStatement ojko ojlb ojloe ojlsb ojmerk
+syn keyword sicadStatement ojmos ojnam ojpda ojpoly ojprae
+syn keyword sicadStatement ojs ojsak ojsort ojstrukt ojsub
+syn keyword sicadStatement ojtdef ojvek ojx old oldd
+syn keyword sicadStatement op opa opa1 open opensim
+syn keyword sicadStatement opnbsd orth osanz ot otp
+syn keyword sicadStatement otrefp param paranf pas passw
+syn keyword sicadStatement pcatchf pda pdadd pg pg0
+syn keyword sicadStatement pgauf pgaufsel pgb pgko pgm
+syn keyword sicadStatement pgr pgvs pily pkpg plot
+syn keyword sicadStatement plotf plotfr pmap pmdata pmdi
+syn keyword sicadStatement pmdp pmeb pmep pminfo pmlb
+syn keyword sicadStatement pmli pmlp pmmod pnrver poa
+syn keyword sicadStatement pos posa posaus post printfr
+syn keyword sicadStatement protect prs prssy prsym ps
+syn keyword sicadStatement psadd psclose psopen psparam psprw
+syn keyword sicadStatement psres psstat psw pswr qualif
+syn keyword sicadStatement rahmen raster rasterd rbbackup rbchang2
+syn keyword sicadStatement rbchange rbcmd rbcoldst rbcolor rbcopy
+syn keyword sicadStatement rbcut rbcut2 rbdbcl rbdbload rbdbop
+syn keyword sicadStatement rbdbwin rbdefs rbedit rbfdel rbfill
+syn keyword sicadStatement rbfill2 rbfload rbfload2 rbfnew rbfnew2
+syn keyword sicadStatement rbfpar rbfree rbg rbgetcol rbgetdst
+syn keyword sicadStatement rbinfo rbpaste rbpixel rbrstore rbsnap
+syn keyword sicadStatement rbsta rbtile rbtrpix rbvtor rcol
+syn keyword sicadStatement rd rdchange re reb rebmod
+syn keyword sicadStatement refunc ren renel rk rkpos
+syn keyword sicadStatement rohr rohrpos rpr rr rr0
+syn keyword sicadStatement rra rrar rs samtosdb sav
+syn keyword sicadStatement savd savesim savx scol scopy
+syn keyword sicadStatement scopye sdbtosam sddk sdwr se
+syn keyword sicadStatement selaus selpos seman semi sesch
+syn keyword sicadStatement setscl setvar sfclntpf sfconn sffetchf
+syn keyword sicadStatement sffpropi sfftypi sfqugeoc sfquwhcl sfself
+syn keyword sicadStatement sfstat sftest sge sid sie
+syn keyword sicadStatement sig sigp skk skks sn
+syn keyword sicadStatement sn21 snpa snpar snparp snparps
+syn keyword sicadStatement snpars snpas snpd snpi snpkor
+syn keyword sicadStatement snpl snpm sob sob0 sobloe
+syn keyword sicadStatement sobs sof sop split spr
+syn keyword sicadStatement sqdadd sqdlad sqdold sqdsav
+syn keyword sicadStatement sr sres srt sset stat
+syn keyword sicadStatement stdtxt string strukt strupru suinfl
+syn keyword sicadStatement suinflk suinfls supo supo1 sva
+syn keyword sicadStatement svr sy sya syly sysout
+syn keyword sicadStatement syu syux taa tabeg tabl
+syn keyword sicadStatement tabm tam tanr tapg tapos
+syn keyword sicadStatement tarkd tas tase tb tbadd
+syn keyword sicadStatement tbd tbext tbget tbint tbout
+syn keyword sicadStatement tbput tbsat tbsel tbstr tcaux
+syn keyword sicadStatement tccable tcchkrep tccomm tccond tcdbg
+syn keyword sicadStatement tcgbnr tcgrpos tcinit tclconv tcmodel
+syn keyword sicadStatement tcnwe tcpairs tcpath tcrect tcrmdli
+syn keyword sicadStatement tcscheme tcschmap tcse tcselc tcstar
+syn keyword sicadStatement tcstrman tcsubnet tcsymbol tctable tcthrcab
+syn keyword sicadStatement tctrans tctst tdb tdbdel tdbget
+syn keyword sicadStatement tdblist tdbput tgmod titel tmoff
+syn keyword sicadStatement tmon tp tpa tps tpta
+syn keyword sicadStatement tra trans transkdo transopt transpro
+syn keyword sicadStatement triangle trm trpg trrkd trs
+syn keyword sicadStatement ts tsa tx txa txchk
+syn keyword sicadStatement txcng txju txl txp txpv
+syn keyword sicadStatement txtcmp txv txz uckon uiinfo
+syn keyword sicadStatement uistatus umdk umdk1 umdka umge
+syn keyword sicadStatement umges umr verbo verflli verif
+syn keyword sicadStatement verly versinfo vfg vpactive vpcenter
+syn keyword sicadStatement vpcreate vpdelete vpinfo vpmodify vpscroll
+syn keyword sicadStatement vpsta wabsym wzmerk zdrhf zdrhfn
+syn keyword sicadStatement zdrhfw zdrhfwn zefp zfl zflaus
+syn keyword sicadStatement zka zlel zlels zortf zortfn
+syn keyword sicadStatement zortfw zortfwn zortp zortpn zparb
+syn keyword sicadStatement zparbn zparf zparfn zparfw zparfwn
+syn keyword sicadStatement zparp zparpn zwinkp zwinkpn
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link sicadLabel PreProc
+hi def link sicadLabel1 sicadLabel
+hi def link sicadLabel2 sicadLabel
+hi def link sicadConditional Conditional
+hi def link sicadBoolean Boolean
+hi def link sicadNumber Number
+hi def link sicadFloat Float
+hi def link sicadOperator Operator
+hi def link sicadStatement Statement
+hi def link sicadParameter sicadStatement
+hi def link sicadGoto sicadStatement
+hi def link sicadLineCont sicadStatement
+hi def link sicadString String
+hi def link sicadComment Comment
+hi def link sicadSpecial Special
+hi def link sicadIdentifier Type
+" hi def link sicadIdentifier Identifier
+hi def link sicadError Error
+hi def link sicadParenError sicadError
+hi def link sicadApostropheError sicadError
+hi def link sicadStringError sicadError
+hi def link sicadCommentError sicadError
+" hi def link sqlStatement Special " modified highlight group in sql.vim
+
+
+let b:current_syntax = "sicad"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/sieve.vim b/runtime/syntax/sieve.vim
new file mode 100644
index 0000000..35b4dfb
--- /dev/null
+++ b/runtime/syntax/sieve.vim
@@ -0,0 +1,55 @@
+" Vim syntax file
+" Language: Sieve filtering language input file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-10-25
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword sieveTodo contained TODO FIXME XXX NOTE
+
+syn region sieveComment start='/\*' end='\*/' contains=sieveTodo,@Spell
+syn region sieveComment display oneline start='#' end='$'
+ \ contains=sieveTodo,@Spell
+
+syn case ignore
+
+syn match sieveTag display ':\h\w*'
+
+syn match sieveNumber display '\<\d\+[KMG]\=\>'
+
+syn match sieveSpecial display '\\["\\]'
+
+syn region sieveString start=+"+ skip=+\\\\\|\\"+ end=+"+
+ \ contains=sieveSpecial
+syn region sieveString start='text:' end='\n.\n'
+
+syn keyword sieveConditional if elsif else
+syn keyword sieveTest address allof anyof envelope exists false header
+ \ not size true
+syn keyword sievePreProc require stop
+syn keyword sieveAction reject fileinto redirect keep discard
+syn keyword sieveKeyword vacation
+
+syn case match
+
+hi def link sieveTodo Todo
+hi def link sieveComment Comment
+hi def link sieveTag Type
+hi def link sieveNumber Number
+hi def link sieveSpecial Special
+hi def link sieveString String
+hi def link sieveConditional Conditional
+hi def link sieveTest Keyword
+hi def link sievePreProc PreProc
+hi def link sieveAction Function
+hi def link sieveKeyword Keyword
+
+let b:current_syntax = "sieve"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/sil.vim b/runtime/syntax/sil.vim
new file mode 100644
index 0000000..43158da
--- /dev/null
+++ b/runtime/syntax/sil.vim
@@ -0,0 +1,179 @@
+" This source file is part of the Swift.org open source project
+"
+" Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
+" Licensed under Apache License v2.0 with Runtime Library Exception
+"
+" See https://swift.org/LICENSE.txt for license information
+" See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+"
+" Vim syntax file
+" Language: sil
+"
+" Vim maintainer: Emir SARI <bitigchi@me.com>
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:keepcpo = &cpo
+set cpo&vim
+
+syn keyword silStage skipwhite nextgroup=silStages
+ \ sil_stage
+syn keyword silStages
+ \ canonical
+ \ raw
+
+syn match silIdentifier skipwhite
+ \ /@\<[A-Za-z_0-9]\+\>/
+
+syn match silConvention skipwhite
+ \ /$\?@convention/
+syn region silConvention contained contains=silConventions
+ \ start="@convention(" end=")"
+syn keyword silConventions
+ \ block
+ \ c
+ \ method
+ \ objc_method
+ \ sil_differentiability_witness
+ \ thick
+ \ thin
+ \ witness_method
+
+syn match silFunctionType skipwhite
+ \ /@\(\<autoreleased\>\|\<callee_guaranteed\>\|\<callee_owned\>\|\<error\>\|\<guaranteed\>\|\<in\>\|\<in_constant\>\|\<in_guaranteed\>\|\<inout\>\|\<inout_aliasable\>\|\<noescape\>\|\<out\>\|\<owned\>\)/
+syn match silMetatypeType skipwhite
+ \ /@\(\<thick\>\|\<thin\>\|\<objc\>\)/
+
+" TODO: handle [tail_elems sil-type * sil-operand]
+syn region silAttribute contains=silAttributes
+ \ start="\[" end="\]"
+syn keyword silAttributes contained containedin=silAttribute
+ \ abort
+ \ deinit
+ \ delegatingself
+ \ derivedself
+ \ derivedselfonly
+ \ dynamic
+ \ exact
+ \ init
+ \ modify
+ \ mutating
+ \ objc
+ \ open
+ \ read
+ \ rootself
+ \ stack
+ \ static
+ \ strict
+ \ unknown
+ \ unsafe
+ \ var
+
+syn keyword swiftImport import skipwhite nextgroup=swiftImportModule
+syn match swiftImportModule /\<[A-Za-z_][A-Za-z_0-9]*\>/ contained nextgroup=swiftImportComponent
+syn match swiftImportComponent /\.\<[A-Za-z_][A-Za-z_0-9]*\>/ contained nextgroup=swiftImportComponent
+
+syn region swiftComment start="/\*" end="\*/" contains=swiftComment,swiftTodo
+syn region swiftLineComment start="//" end="$" contains=swiftTodo
+
+syn match swiftLineComment /^#!.*/
+syn match swiftTypeName /\<[A-Z][a-zA-Z_0-9]*\>/
+syn match swiftDecimal /\<[-]\?[0-9]\+\>/
+syn match swiftDecimal /\<[-+]\?[0-9]\+\>/
+
+syn match swiftTypeName /\$\*\<\?[A-Z][a-zA-Z0-9_]*\>/
+syn match swiftVarName /%\<[A-z[a-z_0-9]\+\(#[0-9]\+\)\?\>/
+
+syn keyword swiftKeyword break case continue default do else for if in static switch repeat return where while skipwhite
+
+syn keyword swiftKeyword sil internal thunk skipwhite
+syn keyword swiftKeyword public hidden private shared public_external hidden_external skipwhite
+syn keyword swiftKeyword getter setter allocator initializer enumelt destroyer globalaccessor objc skipwhite
+syn keyword swiftKeyword alloc_global alloc_stack alloc_ref alloc_ref_dynamic alloc_box alloc_existential_box alloc_value_buffer dealloc_stack dealloc_box dealloc_existential_box dealloc_ref dealloc_partial_ref dealloc_value_buffer skipwhite
+syn keyword swiftKeyword debug_value debug_value_addr skipwhite
+syn keyword swiftKeyword load load_unowned store assign mark_uninitialized mark_function_escape copy_addr destroy_addr index_addr index_raw_pointer bind_memory to skipwhite
+syn keyword swiftKeyword strong_retain strong_release strong_retain_unowned ref_to_unowned unowned_to_ref unowned_retain unowned_release load_weak store_unowned store_weak fix_lifetime autorelease_value set_deallocating is_unique is_escaping_closure skipwhite
+syn keyword swiftKeyword function_ref integer_literal float_literal string_literal global_addr skipwhite
+syn keyword swiftKeyword class_method super_method witness_method objc_method objc_super_method skipwhite
+syn keyword swiftKeyword partial_apply builtin skipwhite
+syn keyword swiftApplyKeyword apply try_apply skipwhite
+syn keyword swiftKeyword metatype value_metatype existential_metatype skipwhite
+syn keyword swiftKeyword retain_value release_value retain_value_addr release_value_addr tuple tuple_extract tuple_element_addr struct struct_extract struct_element_addr ref_element_addr skipwhite
+syn keyword swiftKeyword init_enum_data_addr unchecked_enum_data unchecked_take_enum_data_addr inject_enum_addr skipwhite
+syn keyword swiftKeyword init_existential_addr init_existential_value init_existential_metatype deinit_existential_addr deinit_existential_value open_existential_addr open_existential_box open_existential_box_value open_existential_metatype init_existential_ref open_existential_ref open_existential_value skipwhite
+syn keyword swiftKeyword upcast address_to_pointer pointer_to_address pointer_to_thin_function unchecked_addr_cast unchecked_ref_cast unchecked_ref_cast_addr ref_to_raw_pointer ref_to_bridge_object ref_to_unmanaged unmanaged_to_ref raw_pointer_to_ref skipwhite
+syn keyword swiftKeyword convert_function thick_to_objc_metatype thin_function_to_pointer objc_to_thick_metatype thin_to_thick_function unchecked_ref_bit_cast unchecked_trivial_bit_cast bridge_object_to_ref bridge_object_to_word unchecked_bitwise_cast skipwhite
+syn keyword swiftKeyword objc_existential_metatype_to_object objc_metatype_to_object objc_protocol skipwhite
+syn keyword swiftKeyword unconditional_checked_cast unconditional_checked_cast_addr unconditional_checked_cast_value skipwhite
+syn keyword swiftKeyword cond_fail skipwhite
+syn keyword swiftKeyword unreachable return throw br cond_br switch_value select_enum select_enum_addr select_value switch_enum switch_enum_addr dynamic_method_br checked_cast_br checked_cast_value_br checked_cast_addr_br skipwhite
+syn keyword swiftKeyword project_box project_existential_box project_value_buffer project_block_storage init_block_storage_header copy_block mark_dependence skipwhite
+
+syn keyword swiftTypeDefinition class extension protocol struct typealias enum skipwhite nextgroup=swiftTypeName
+syn region swiftTypeAttributes start="\[" end="\]" skipwhite contained nextgroup=swiftTypeName
+syn match swiftTypeName /\<[A-Za-z_][A-Za-z_0-9\.]*\>/ contained nextgroup=swiftTypeParameters
+
+syn region swiftTypeParameters start="<" end=">" skipwhite contained
+
+syn keyword swiftFuncDefinition func skipwhite nextgroup=swiftFuncAttributes,swiftFuncName,swiftOperator
+syn region swiftFuncAttributes start="\[" end="\]" skipwhite contained nextgroup=swiftFuncName,swiftOperator
+syn match swiftFuncName /\<[A-Za-z_][A-Za-z_0-9]*\>/ skipwhite contained nextgroup=swiftTypeParameters
+syn keyword swiftFuncKeyword subscript init destructor nextgroup=swiftTypeParameters
+
+syn keyword swiftVarDefinition var skipwhite nextgroup=swiftVarName
+syn keyword swiftVarDefinition let skipwhite nextgroup=swiftVarName
+syn match swiftVarName /\<[A-Za-z_][A-Za-z_0-9]*\>/ skipwhite contained
+
+syn keyword swiftDefinitionModifier static
+
+syn match swiftImplicitVarName /\$\<[A-Za-z_0-9]\+\>/
+
+hi def link swiftImport Include
+hi def link swiftImportModule Title
+hi def link swiftImportComponent Identifier
+hi def link swiftApplyKeyword Statement
+hi def link swiftKeyword Statement
+hi def link swiftTypeDefinition Define
+hi def link swiftTypeName Type
+hi def link swiftTypeParameters Special
+hi def link swiftTypeAttributes PreProc
+hi def link swiftFuncDefinition Define
+hi def link swiftDefinitionModifier Define
+hi def link swiftFuncName Function
+hi def link swiftFuncAttributes PreProc
+hi def link swiftFuncKeyword Function
+hi def link swiftVarDefinition Define
+hi def link swiftVarName Identifier
+hi def link swiftImplicitVarName Identifier
+hi def link swiftIdentifierKeyword Identifier
+hi def link swiftTypeDeclaration Delimiter
+hi def link swiftBoolean Boolean
+hi def link swiftString String
+hi def link swiftInterpolation Special
+hi def link swiftComment Comment
+hi def link swiftLineComment Comment
+hi def link swiftDecimal Number
+hi def link swiftHex Number
+hi def link swiftOct Number
+hi def link swiftBin Number
+hi def link swiftOperator Function
+hi def link swiftChar Character
+hi def link swiftLabel Label
+hi def link swiftNew Operator
+
+hi def link silStage Special
+hi def link silStages Type
+hi def link silConvention Special
+hi def link silConventionParameter Special
+hi def link silConventions Type
+hi def link silIdentifier Identifier
+hi def link silFunctionType Special
+hi def link silMetatypeType Special
+hi def link silAttribute PreProc
+
+let b:current_syntax = "sil"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/runtime/syntax/simula.vim b/runtime/syntax/simula.vim
new file mode 100644
index 0000000..82f66d0
--- /dev/null
+++ b/runtime/syntax/simula.vim
@@ -0,0 +1,87 @@
+" Vim syntax file
+" Language: Simula
+" Maintainer: Haakon Riiser <hakonrk@fys.uio.no>
+" URL: http://folk.uio.no/hakonrk/vim/syntax/simula.vim
+" Last Change: 2001 May 15
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" No case sensitivity in Simula
+syn case ignore
+
+syn match simulaComment "^%.*$" contains=simulaTodo
+syn region simulaComment start="!\|\<comment\>" end=";" contains=simulaTodo
+
+" Text between the keyword 'end' and either a semicolon or one of the
+" keywords 'end', 'else', 'when' or 'otherwise' is also a comment
+syn region simulaComment start="\<end\>"lc=3 matchgroup=Statement end=";\|\<\(end\|else\|when\|otherwise\)\>"
+
+syn match simulaCharError "'.\{-2,}'"
+syn match simulaCharacter "'.'"
+syn match simulaCharacter "'!\d\{-}!'" contains=simulaSpecialChar
+syn match simulaString '".\{-}"' contains=simulaSpecialChar,simulaTodo
+
+syn keyword simulaBoolean true false
+syn keyword simulaCompound begin end
+syn keyword simulaConditional else if otherwise then until when
+syn keyword simulaConstant none notext
+syn keyword simulaFunction procedure
+syn keyword simulaOperator eq eqv ge gt imp in is le lt ne new not qua
+syn keyword simulaRepeat while for
+syn keyword simulaReserved activate after at before delay go goto label prior reactivate switch to
+syn keyword simulaStatement do inner inspect step this
+syn keyword simulaStorageClass external hidden name protected value
+syn keyword simulaStructure class
+syn keyword simulaType array boolean character integer long real short text virtual
+syn match simulaAssigned "\<\h\w*\s*\((.*)\)\=\s*:\(=\|-\)"me=e-2
+syn match simulaOperator "[&:=<>+\-*/]"
+syn match simulaOperator "\<and\(\s\+then\)\=\>"
+syn match simulaOperator "\<or\(\s\+else\)\=\>"
+syn match simulaReferenceType "\<ref\s*(.\{-})"
+syn match simulaSemicolon ";"
+syn match simulaSpecial "[(),.]"
+syn match simulaSpecialCharErr "!\d\{-4,}!" contained
+syn match simulaSpecialCharErr "!!" contained
+syn match simulaSpecialChar "!\d\{-}!" contains=simulaSpecialCharErr contained
+syn match simulaTodo "xxx\+" contained
+
+" Integer number (or float without `.')
+syn match simulaNumber "-\=\<\d\+\>"
+" Real with optional exponent
+syn match simulaReal "-\=\<\d\+\(\.\d\+\)\=\(&&\=[+-]\=\d\+\)\=\>"
+" Real starting with a `.', optional exponent
+syn match simulaReal "-\=\.\d\+\(&&\=[+-]\=\d\+\)\=\>"
+
+
+hi def link simulaAssigned Identifier
+hi def link simulaBoolean Boolean
+hi def link simulaCharacter Character
+hi def link simulaCharError Error
+hi def link simulaComment Comment
+hi def link simulaCompound Statement
+hi def link simulaConditional Conditional
+hi def link simulaConstant Constant
+hi def link simulaFunction Function
+hi def link simulaNumber Number
+hi def link simulaOperator Operator
+hi def link simulaReal Float
+hi def link simulaReferenceType Type
+hi def link simulaRepeat Repeat
+hi def link simulaReserved Error
+hi def link simulaSemicolon Statement
+hi def link simulaSpecial Special
+hi def link simulaSpecialChar SpecialChar
+hi def link simulaSpecialCharErr Error
+hi def link simulaStatement Statement
+hi def link simulaStorageClass StorageClass
+hi def link simulaString String
+hi def link simulaStructure Structure
+hi def link simulaTodo Todo
+hi def link simulaType Type
+
+
+let b:current_syntax = "simula"
+" vim: sts=4 sw=4 ts=8
diff --git a/runtime/syntax/sinda.vim b/runtime/syntax/sinda.vim
new file mode 100644
index 0000000..a6e5b45
--- /dev/null
+++ b/runtime/syntax/sinda.vim
@@ -0,0 +1,129 @@
+" Vim syntax file
+" Language: sinda85, sinda/fluint input file
+" Maintainer: Adrian Nagle, anagle@ball.com
+" Last Change: 2003 May 11
+" Filenames: *.sin
+" URL: http://www.naglenet.org/vim/syntax/sinda.vim
+" MAIN URL: http://www.naglenet.org/vim/
+
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+
+" Ignore case
+syn case ignore
+
+
+
+"
+"
+" Begin syntax definitions for sinda input and output files.
+"
+
+" Force free-form fortran format
+let fortran_free_source=1
+
+" Load FORTRAN syntax file
+runtime! syntax/fortran.vim
+unlet b:current_syntax
+
+
+
+" Define keywords for SINDA
+syn keyword sindaMacro BUILD BUILDF DEBON DEBOFF DEFMOD FSTART FSTOP
+
+syn keyword sindaOptions TITLE PPSAVE RSI RSO OUTPUT SAVE QMAP USER1 USER2
+syn keyword sindaOptions MODEL PPOUT NOLIST MLINE NODEBUG DIRECTORIES
+syn keyword sindaOptions DOUBLEPR
+
+syn keyword sindaRoutine FORWRD FWDBCK STDSTL FASTIC
+
+syn keyword sindaControl ABSZRO ACCELX ACCELY ACCELZ ARLXCA ATMPCA
+syn keyword sindaControl BACKUP CSGFAC DRLXCA DTIMEH DTIMEI DTIMEL
+syn keyword sindaControl DTIMES DTMPCA EBALNA EBALSA EXTLIM ITEROT
+syn keyword sindaControl ITERXT ITHOLD NLOOPS NLOOPT OUTPUT OPEITR
+syn keyword sindaControl PATMOS SIGMA TIMEO TIMEND UID
+
+syn keyword sindaSubRoutine ASKERS ADARIN ADDARY ADDMOD ARINDV
+syn keyword sindaSubRoutine RYINV ARYMPY ARYSUB ARYTRN BAROC
+syn keyword sindaSubRoutine BELACC BNDDRV BNDGET CHENNB CHGFLD
+syn keyword sindaSubRoutine CHGLMP CHGSUC CHGVOL CHKCHL CHKCHP
+syn keyword sindaSubRoutine CNSTAB COMBAL COMPLQ COMPRS CONTRN
+syn keyword sindaSubRoutine CPRINT CRASH CRVINT CRYTRN CSIFLX
+syn keyword sindaSubRoutine CVTEMP D11CYL C11DAI D11DIM D11MCY
+syn keyword sindaSubRoutine D11MDA D11MDI D11MDT D12CYL D12MCY
+syn keyword sindaSubRoutine D12MDA D1D1DA D1D1IM D1D1WM D1D2DA
+syn keyword sindaSubRoutine D1D2WM D1DEG1 D1DEG2 D1DG1I D1IMD1
+syn keyword sindaSubRoutine D1IMIM D1IMWM D1M1DA D1M2MD D1M2WM
+syn keyword sindaSubRoutine D1MDG1 D1MDG2 D2D1WM D1DEG1 D2DEG2
+syn keyword sindaSubRoutine D2D2
+
+syn keyword sindaIdentifier BIV CAL DIM DIV DPM DPV DTV GEN PER PIV PIM
+syn keyword sindaIdentifier SIM SIV SPM SPV TVS TVD
+
+
+
+" Define matches for SINDA
+syn match sindaFortran "^F[0-9 ]"me=e-1
+syn match sindaMotran "^M[0-9 ]"me=e-1
+
+syn match sindaComment "^C.*$"
+syn match sindaComment "^R.*$"
+syn match sindaComment "\$.*$"
+
+syn match sindaHeader "^header[^,]*"
+
+syn match sindaIncludeFile "include \+[^ ]\+"hs=s+8 contains=fortranInclude
+
+syn match sindaMacro "^PSTART"
+syn match sindaMacro "^PSTOP"
+syn match sindaMacro "^FAC"
+
+syn match sindaInteger "-\=\<[0-9]*\>"
+syn match sindaFloat "-\=\<[0-9]*\.[0-9]*"
+syn match sindaScientific "-\=\<[0-9]*\.[0-9]*E[-+]\=[0-9]\+\>"
+
+syn match sindaEndData "^END OF DATA"
+
+if exists("thermal_todo")
+ execute 'syn match sindaTodo ' . '"^'.thermal_todo.'.*$"'
+else
+ syn match sindaTodo "^?.*$"
+endif
+
+
+
+" Define the default highlighting
+" Only when an item doesn't have highlighting yet
+
+hi def link sindaMacro Macro
+hi def link sindaOptions Special
+hi def link sindaRoutine Type
+hi def link sindaControl Special
+hi def link sindaSubRoutine Function
+hi def link sindaIdentifier Identifier
+
+hi def link sindaFortran PreProc
+hi def link sindaMotran PreProc
+
+hi def link sindaComment Comment
+hi def link sindaHeader Typedef
+hi def link sindaIncludeFile Type
+hi def link sindaInteger Number
+hi def link sindaFloat Float
+hi def link sindaScientific Float
+
+hi def link sindaEndData Macro
+
+hi def link sindaTodo Todo
+
+
+
+let b:current_syntax = "sinda"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/sindacmp.vim b/runtime/syntax/sindacmp.vim
new file mode 100644
index 0000000..88373eb
--- /dev/null
+++ b/runtime/syntax/sindacmp.vim
@@ -0,0 +1,61 @@
+" Vim syntax file
+" Language: sinda85, sinda/fluint compare file
+" Maintainer: Adrian Nagle, anagle@ball.com
+" Last Change: 2003 May 11
+" Filenames: *.cmp
+" URL: http://www.naglenet.org/vim/syntax/sindacmp.vim
+" MAIN URL: http://www.naglenet.org/vim/
+
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+
+" Ignore case
+syn case ignore
+
+
+
+"
+" Begin syntax definitions for compare files.
+"
+
+" Define keywords for sinda compare (sincomp)
+syn keyword sindacmpUnit celsius fahrenheit
+
+
+
+" Define matches for sinda compare (sincomp)
+syn match sindacmpTitle "Steady State Temperature Comparison"
+
+syn match sindacmpLabel "File [1-6] is"
+
+syn match sindacmpHeader "^ *Node\( *File \d\)* *Node Description"
+
+syn match sindacmpInteger "^ *-\=\<[0-9]*\>"
+syn match sindacmpFloat "-\=\<[0-9]*\.[0-9]*"
+
+
+
+" Define the default highlighting
+" Only when an item doesn't have highlighting yet
+
+hi def link sindacmpTitle Type
+hi def link sindacmpUnit PreProc
+
+hi def link sindacmpLabel Statement
+
+hi def link sindacmpHeader sindaHeader
+
+hi def link sindacmpInteger Number
+hi def link sindacmpFloat Special
+
+
+
+let b:current_syntax = "sindacmp"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/sindaout.vim b/runtime/syntax/sindaout.vim
new file mode 100644
index 0000000..c362f19
--- /dev/null
+++ b/runtime/syntax/sindaout.vim
@@ -0,0 +1,83 @@
+" Vim syntax file
+" Language: sinda85, sinda/fluint output file
+" Maintainer: Adrian Nagle, anagle@ball.com
+" Last Change: 2003 May 11
+" Filenames: *.out
+" URL: http://www.naglenet.org/vim/syntax/sindaout.vim
+" MAIN URL: http://www.naglenet.org/vim/
+
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+
+" Ignore case
+syn case match
+
+
+
+" Load SINDA syntax file
+runtime! syntax/sinda.vim
+unlet b:current_syntax
+
+
+
+"
+"
+" Begin syntax definitions for sinda output files.
+"
+
+" Define keywords for sinda output
+syn case match
+
+syn keyword sindaoutPos ON SI
+syn keyword sindaoutNeg OFF ENG
+
+
+
+" Define matches for sinda output
+syn match sindaoutFile ": \w*\.TAK"hs=s+2
+
+syn match sindaoutInteger "T\=[0-9]*\>"ms=s+1
+
+syn match sindaoutSectionDelim "[-<>]\{4,}" contains=sindaoutSectionTitle
+syn match sindaoutSectionDelim ":\=\.\{4,}:\=" contains=sindaoutSectionTitle
+syn match sindaoutSectionTitle "[-<:] \w[0-9A-Za-z_() ]\+ [->:]"hs=s+1,me=e-1
+
+syn match sindaoutHeaderDelim "=\{5,}"
+syn match sindaoutHeaderDelim "|\{5,}"
+syn match sindaoutHeaderDelim "+\{5,}"
+
+syn match sindaoutLabel "Input File:" contains=sindaoutFile
+syn match sindaoutLabel "Begin Solution: Routine"
+
+syn match sindaoutError "<<< Error >>>"
+
+
+" Define the default highlighting
+" Only when an item doesn't have highlighting yet
+
+hi sindaHeaderDelim ctermfg=Black ctermbg=Green guifg=Black guibg=Green
+
+hi def link sindaoutPos Statement
+hi def link sindaoutNeg PreProc
+hi def link sindaoutTitle Type
+hi def link sindaoutFile sindaIncludeFile
+hi def link sindaoutInteger sindaInteger
+
+hi def link sindaoutSectionDelim Delimiter
+hi def link sindaoutSectionTitle Exception
+hi def link sindaoutHeaderDelim SpecialComment
+hi def link sindaoutLabel Identifier
+
+hi def link sindaoutError Error
+
+
+
+let b:current_syntax = "sindaout"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/sisu.vim b/runtime/syntax/sisu.vim
new file mode 100644
index 0000000..264aae0
--- /dev/null
+++ b/runtime/syntax/sisu.vim
@@ -0,0 +1,275 @@
+" SiSU Vim syntax file
+" SiSU Maintainer: Ralph Amissah <ralph.amissah@gmail.com>
+" SiSU Markup: SiSU (sisu-5.6.7)
+" Last Change: 2017 Jun 22
+" URL: <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=data/sisu/conf/editor-syntax-etc/vim/syntax/sisu.vim;hb=HEAD>
+" <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob_plain;f=data/sisu/conf/editor-syntax-etc/vim/syntax/sisu.vim;hb=HEAD>
+"(originally looked at Ruby Vim by Mirko Nasato)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+let s:cpo_save = &cpo
+set cpo&vim
+
+"% "Errors:
+syn match sisu_error contains=sisu_link,sisu_error_wspace "<![^ei]\S\+!>"
+
+"% "Markers Identifiers:
+if !exists("sisu_no_identifiers")
+ syn match sisu_mark_endnote "\~^"
+ syn match sisu_break contains=@NoSpell " \\\\\( \|$\)\|<br>\|<br />"
+ syn match sisu_control contains=@NoSpell "^\(-\\\\-\|=\\\\=\|-\.\.-\|<:p[bn]>\)\s*$"
+ syn match sisu_control contains=@NoSpell "^<:\(bo\|---\)>\s*$"
+ syn match sisu_marktail contains=@NoSpell "^--[+~-]#\s*$"
+ syn match sisu_marktail "[~-]#"
+ syn match sisu_control "\""
+ syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)"
+ syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}"
+ syn match sisu_link contains=@NoSpell "\(_\?https\?://\|\.\.\/\)\S\+"
+ syn match sisu_link " \*\~\S\+"
+ syn match sisu_require contains=@NoSpell "^<<\s*[a-zA-Z0-9^./_-]\+\.ss[it]$"
+ syn match sisu_structure "^:A\~$"
+
+"% "Document Sub Headers:
+ syn match sisu_sub_header_title "^\s\+:\(subtitle\|short\|edition\|language\|lang_char\|note\):\s" "group=sisu_header_content
+ syn match sisu_sub_header_creator "^\s\+:\(author\|editor\|contributor\|illustrator\|photographer\|translator\|digitized_by\|prepared_by\|audio\|video\):\s" " &hon &institution
+ syn match sisu_sub_header_rights "^\s\+:\(copyright\|text\|translation\|illustrations\|photographs\|preparation\|digitization\|audio\|video\|license\|all\):\s" " access_rights license
+ syn match sisu_sub_header_classify "^\s\+:\(topic_register\|keywords\|subject\|dewey\|loc\):\s"
+ syn match sisu_sub_header_identifier "^\s\+:\(oclc\|isbn\):\s"
+ syn match sisu_sub_header_date "^\s\+:\(added_to_site\|available\|created\|issued\|modified\|published\|valid\|translated\|original_publication\):\s"
+ syn match sisu_sub_header_original "^\s\+:\(publisher\|date\|language\|lang_char\|institution\|nationality\|source\):\s"
+ syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|language\|italics\|bold\|emphasis\|substitute\|omit\|plaintext_wrap\|texpdf_font_mono\|texpdf_font\|stamp\|promo\|ad\|manpage\|home_button_text\|home_button_image\|cover_image\|footer\):\s"
+ syn match sisu_sub_header_notes "^\s\+:\(description\|abstract\|comment\|coverage\|relation\|source\|history\|type\|format\|prefix\|prefix_[ab]\|suffix\):\s"
+ syn match sisu_within_index_ignore "\S\+[:;]\(\s\+\|$\)"
+ syn match sisu_within_index "[:|;]\|+\d\+"
+
+"% "semantic markers: (ignore)
+ syn match sisu_sem_marker ";{\|};[a-z._]*[a-z]"
+ syn match sisu_sem_marker_block "\([a-z][a-z._]*\|\):{\|}:[a-z._]*[a-z]"
+ syn match sisu_sem_ex_marker ";\[\|\];[a-z._]*[a-z]"
+ syn match sisu_sem_ex_marker_block "\([a-z][a-z._]*\|\):\[\|\]:[a-z._]*[a-z]"
+ syn match sisu_sem_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):{[^}].\{-}}:\1"
+ syn match sisu_sem_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";{[^}].\{-}};[a-z]\+"
+ syn match sisu_sem_ex_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):\[[^}].\{-}\]:\1"
+ syn match sisu_sem_ex_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";\[[^}].\{-}\];[a-z]\+"
+endif
+
+"% "URLs Numbers And ASCII Codes:
+syn match sisu_number "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>"
+syn match sisu_number "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)"
+
+"% "Tuned Error: (is error if not already matched)
+syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]"
+syn match sisu_error contains=sisu_error "<a href\|</a>]"
+
+"% "Simple Paired Enclosed Markup:
+"url/link
+syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$"
+
+"% "Document Header:
+" title
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_title matchgroup=sisu_header start="^[@]title:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+" creator
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_creator matchgroup=sisu_header start="^[@]creator:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+" dates
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_date matchgroup=sisu_header start="^[@]date:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+" publisher
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_publisher matchgroup=sisu_header start="^[@]publisher:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+" rights
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_rights matchgroup=sisu_header start="^[@]rights:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+" classify document
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_classify matchgroup=sisu_header start="^[@]classify:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+" identifier document
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_identifier matchgroup=sisu_header start="^[@]identifier:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+" original language (depreciated)
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_original matchgroup=sisu_header start="^[@]original:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+" notes
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_notes matchgroup=sisu_header start="^[@]notes:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+" links of interest
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_linked,sisu_sub_header_links matchgroup=sisu_header start="^[@]links:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+" make, processing instructions
+syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_make matchgroup=sisu_header start="^[@]make:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+
+"% "Headings:
+syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-4]\|:\?[A-D]\)\~\(\S\+\|[^-]\)" end="$"
+
+"% "Block Group Text:
+" table
+syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table"
+" table
+syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+table" end="^```\(\s\|$\)"
+syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n$"
+" block, group, poem, alt
+syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\z(block\|group\|poem\|alt\){" end="^}\z1"
+syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+\(block\|group\|poem\|alt\)" end="^```\(\s\|$\)"
+" box
+syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^box\(\.[a-z]\+\)\?{" end="^}box"
+syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+\box\(\.[a-z]\+\)\?" end="^```\(\s\|$\)"
+" code
+syn region sisu_content_alt contains=sisu_error,@NoSpell matchgroup=sisu_contain start="^code\(\.[a-z][0-9a-z_]\+\)\?{" end="^}code"
+syn region sisu_content_alt contains=sisu_error,@NoSpell matchgroup=sisu_contain start="^```\s\+code\(\.[a-z][0-9a-z_]\+\)\?" end="^```\(\s\|$\)"
+" quote
+syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_contain start="^```\s\+quote" end="^```\(\s\|$\)"
+
+"% "Endnotes:
+" regular endnote or asterisk or plus sign endnote
+syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n"
+" numbered asterisk or plus sign endnote
+syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n"
+" endnote content marker (for binary content marking)
+syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n$"
+
+"% "Links And Images:
+" image with url link (and possibly footnote of url)
+syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|:\|\.\.\/\|#\)\S\+" oneline
+" sisu outputs, short notation
+syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline
+" image
+syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}image" oneline
+
+"% "Some Line Operations:
+" bold line
+syn region sisu_bold contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^!_ " end=" \\\\\|$"
+" indent and bullet paragraph
+syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$"
+" indent and bullet (bold start) paragraph
+syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\)!_\? " end=" \\\\\|$"
+" hanging indent paragraph [proposed]
+syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9] " end="$"
+" hanging indent (bold start/ definition) paragraph [proposed]
+syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9]!_\? " end=" \\\\\|$"
+" list numbering
+syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$"
+
+"% "Font Face Curly Brackets:
+"syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline
+" book index:
+syn region sisu_index contains=sisu_within_index_ignore,sisu_within_index matchgroup=sisu_index_block start="^={" end="}"
+" emphasis:
+syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*"
+" bold:
+syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!"
+" underscore:
+syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_"
+" italics:
+syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="/{" end="}/"
+" added:
+syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+"
+" superscript:
+syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^"
+" subscript:
+syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="},"
+" monospace:
+syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="#{" end="}#"
+" strikethrough:
+syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-"
+
+"% "Single Words Bold Italicise Etc: (depreciated)
+syn region sisu_bold contains=sisu_error matchgroup=sisu_bold start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline
+syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline
+"misc
+syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline
+
+"% "Expensive Mode:
+if !exists("sisu_no_expensive")
+else " not Expensive
+ syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline
+endif " Expensive?
+
+"% "Headers And Headings: (Document Instructions)
+syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+"
+syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$"
+
+"% "Errors:
+syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+[^:]"
+syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+"
+syn match sisu_error_wspace contains=sisu_error_wspace "\s\+$"
+syn match sisu_error contains=sisu_error_wspace "\t\+"
+syn match sisu_error contains=sisu_error,sisu_error_wspace "\([^ (][_\\]\||[^ (}]\)https\?:\S\+"
+syn match sisu_error contains=sisu_error "_\?https\?:\S\+[}><]"
+syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n$"
+syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n$"
+syn match sisu_error contains=sisu_error "\s\+.{{"
+syn match sisu_error contains=sisu_error "^\~\s*$"
+syn match sisu_error contains=sisu_error "^0\~.*"
+syn match sisu_error contains=sisu_error "^[1-9]\~\s*$"
+syn match sisu_error contains=sisu_error "^[1-9]\~\S\+\s*$"
+syn match sisu_error contains=sisu_error "[^{]\~\^[^ \)]"
+syn match sisu_error contains=sisu_error "\~\^\s\+\.\s*"
+syn match sisu_error contains=sisu_error "{\~^\S\+"
+syn match sisu_error contains=sisu_error "[_/\*!^]{[ .,:;?><]*}[_/\*!^]"
+syn match sisu_error contains=sisu_error "[^ (\"'(\[][_/\*!]{\|}[_/\*!][a-zA-Z0-9)\]\"']"
+syn match sisu_error contains=sisu_error "<dir>"
+"errors for filetype sisu, though not error in 'metaverse':
+syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>"
+syn match sisu_error "/\?<\([biu]\)>[^(</\1>)]\{-}\n$"
+
+"% "Error Exceptions:
+syn match sisu_control "\n$" "contains=ALL
+"syn match sisu_control " //"
+syn match sisu_error "%{"
+syn match sisu_error "<br>_\?https\?:\S\+\|_\?https\?:\S\+<br>"
+syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]"
+syn match sisu_comment "^%\{1,2\}.\+"
+
+"% "Definitions Default Highlighting:
+hi def link sisu_normal Normal
+hi def link sisu_bold Statement
+hi def link sisu_header PreProc
+hi def link sisu_header_content Normal
+hi def link sisu_sub_header_title Statement
+hi def link sisu_sub_header_creator Statement
+hi def link sisu_sub_header_date Statement
+hi def link sisu_sub_header_publisher Statement
+hi def link sisu_sub_header_rights Statement
+hi def link sisu_sub_header_classify Statement
+hi def link sisu_sub_header_identifier Statement
+hi def link sisu_sub_header_original Statement
+hi def link sisu_sub_header_links Statement
+hi def link sisu_sub_header_notes Statement
+hi def link sisu_sub_header_make Statement
+hi def link sisu_heading Title
+hi def link sisu_structure Operator
+hi def link sisu_contain Include
+hi def link sisu_mark_endnote Delimiter
+hi def link sisu_require NonText
+hi def link sisu_link NonText
+hi def link sisu_linked String
+hi def link sisu_fontface Delimiter
+hi def link sisu_strikeout DiffDelete
+hi def link sisu_content_alt Special
+hi def link sisu_sem_content SpecialKey
+hi def link sisu_sem_block Special
+hi def link sisu_sem_marker Visual
+"hi def link sisu_sem_marker Structure
+hi def link sisu_sem_marker_block MatchParen
+hi def link sisu_sem_ex_marker FoldColumn
+hi def link sisu_sem_ex_marker_block Folded
+hi def link sisu_sem_ex_content Comment
+"hi def link sisu_sem_ex_content SpecialKey
+hi def link sisu_sem_ex_block Comment
+hi def link sisu_index SpecialKey
+hi def link sisu_index_block Visual
+hi def link sisu_content_endnote Special
+hi def link sisu_control Delimiter
+hi def link sisu_within_index Delimiter
+hi def link sisu_within_index_ignore SpecialKey
+hi def link sisu_ocn Include
+hi def link sisu_number Number
+hi def link sisu_identifier Function
+hi def link sisu_underline Underlined
+hi def link sisu_markpara Include
+hi def link sisu_marktail Include
+hi def link sisu_mark Identifier
+hi def link sisu_break Structure
+hi def link sisu_html Type
+hi def link sisu_action Identifier
+hi def link sisu_comment Comment
+hi def link sisu_error_sem_marker Error
+hi def link sisu_error_wspace Error
+hi def link sisu_error Error
+let b:current_syntax = "sisu"
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/skill.vim b/runtime/syntax/skill.vim
new file mode 100644
index 0000000..47afffc
--- /dev/null
+++ b/runtime/syntax/skill.vim
@@ -0,0 +1,549 @@
+" Vim syntax file
+" Language: SKILL
+" Maintainer: Toby Schaffer <jtschaff@eos.ncsu.edu>
+" Last Change: 2003 May 11
+" Comments: SKILL is a Lisp-like programming language for use in EDA
+" tools from Cadence Design Systems. It allows you to have
+" a programming environment within the Cadence environment
+" that gives you access to the complete tool set and design
+" database. This file also defines syntax highlighting for
+" certain Design Framework II interface functions.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn keyword skillConstants t nil unbound
+
+" enumerate all the SKILL reserved words/functions
+syn match skillFunction "(abs\>"hs=s+1
+syn match skillFunction "\<abs("he=e-1
+syn match skillFunction "(a\=cos\>"hs=s+1
+syn match skillFunction "\<a\=cos("he=e-1
+syn match skillFunction "(add1\>"hs=s+1
+syn match skillFunction "\<add1("he=e-1
+syn match skillFunction "(addDefstructClass\>"hs=s+1
+syn match skillFunction "\<addDefstructClass("he=e-1
+syn match skillFunction "(alias\>"hs=s+1
+syn match skillFunction "\<alias("he=e-1
+syn match skillFunction "(alphalessp\>"hs=s+1
+syn match skillFunction "\<alphalessp("he=e-1
+syn match skillFunction "(alphaNumCmp\>"hs=s+1
+syn match skillFunction "\<alphaNumCmp("he=e-1
+syn match skillFunction "(append1\=\>"hs=s+1
+syn match skillFunction "\<append1\=("he=e-1
+syn match skillFunction "(apply\>"hs=s+1
+syn match skillFunction "\<apply("he=e-1
+syn match skillFunction "(arrayp\>"hs=s+1
+syn match skillFunction "\<arrayp("he=e-1
+syn match skillFunction "(arrayref\>"hs=s+1
+syn match skillFunction "\<arrayref("he=e-1
+syn match skillFunction "(a\=sin\>"hs=s+1
+syn match skillFunction "\<a\=sin("he=e-1
+syn match skillFunction "(assoc\>"hs=s+1
+syn match skillFunction "\<assoc("he=e-1
+syn match skillFunction "(ass[qv]\>"hs=s+1
+syn match skillFunction "\<ass[qv]("he=e-1
+syn match skillFunction "(a\=tan\>"hs=s+1
+syn match skillFunction "\<a\=tan("he=e-1
+syn match skillFunction "(ato[fim]\>"hs=s+1
+syn match skillFunction "\<ato[fim]("he=e-1
+syn match skillFunction "(bcdp\>"hs=s+1
+syn match skillFunction "\<bcdp("he=e-1
+syn match skillKeywords "(begin\>"hs=s+1
+syn match skillKeywords "\<begin("he=e-1
+syn match skillFunction "(booleanp\>"hs=s+1
+syn match skillFunction "\<booleanp("he=e-1
+syn match skillFunction "(boundp\>"hs=s+1
+syn match skillFunction "\<boundp("he=e-1
+syn match skillFunction "(buildString\>"hs=s+1
+syn match skillFunction "\<buildString("he=e-1
+syn match skillFunction "(c[ad]{1,3}r\>"hs=s+1
+syn match skillFunction "\<c[ad]{1,3}r("he=e-1
+syn match skillConditional "(caseq\=\>"hs=s+1
+syn match skillConditional "\<caseq\=("he=e-1
+syn match skillFunction "(ceiling\>"hs=s+1
+syn match skillFunction "\<ceiling("he=e-1
+syn match skillFunction "(changeWorkingDir\>"hs=s+1
+syn match skillFunction "\<changeWorkingDir("he=e-1
+syn match skillFunction "(charToInt\>"hs=s+1
+syn match skillFunction "\<charToInt("he=e-1
+syn match skillFunction "(clearExitProcs\>"hs=s+1
+syn match skillFunction "\<clearExitProcs("he=e-1
+syn match skillFunction "(close\>"hs=s+1
+syn match skillFunction "\<close("he=e-1
+syn match skillFunction "(compareTime\>"hs=s+1
+syn match skillFunction "\<compareTime("he=e-1
+syn match skillFunction "(compress\>"hs=s+1
+syn match skillFunction "\<compress("he=e-1
+syn match skillFunction "(concat\>"hs=s+1
+syn match skillFunction "\<concat("he=e-1
+syn match skillConditional "(cond\>"hs=s+1
+syn match skillConditional "\<cond("he=e-1
+syn match skillFunction "(cons\>"hs=s+1
+syn match skillFunction "\<cons("he=e-1
+syn match skillFunction "(copy\>"hs=s+1
+syn match skillFunction "\<copy("he=e-1
+syn match skillFunction "(copyDefstructDeep\>"hs=s+1
+syn match skillFunction "\<copyDefstructDeep("he=e-1
+syn match skillFunction "(createDir\>"hs=s+1
+syn match skillFunction "\<createDir("he=e-1
+syn match skillFunction "(csh\>"hs=s+1
+syn match skillFunction "\<csh("he=e-1
+syn match skillKeywords "(declare\>"hs=s+1
+syn match skillKeywords "\<declare("he=e-1
+syn match skillKeywords "(declare\(N\|SQN\)\=Lambda\>"hs=s+1
+syn match skillKeywords "\<declare\(N\|SQN\)\=Lambda("he=e-1
+syn match skillKeywords "(defmacro\>"hs=s+1
+syn match skillKeywords "\<defmacro("he=e-1
+syn match skillKeywords "(defprop\>"hs=s+1
+syn match skillKeywords "\<defprop("he=e-1
+syn match skillKeywords "(defstruct\>"hs=s+1
+syn match skillKeywords "\<defstruct("he=e-1
+syn match skillFunction "(defstructp\>"hs=s+1
+syn match skillFunction "\<defstructp("he=e-1
+syn match skillKeywords "(defun\>"hs=s+1
+syn match skillKeywords "\<defun("he=e-1
+syn match skillKeywords "(defUserInitProc\>"hs=s+1
+syn match skillKeywords "\<defUserInitProc("he=e-1
+syn match skillKeywords "(defvar\>"hs=s+1
+syn match skillKeywords "\<defvar("he=e-1
+syn match skillFunction "(delete\(Dir\|File\)\>"hs=s+1
+syn match skillKeywords "\<delete\(Dir\|File\)("he=e-1
+syn match skillFunction "(display\>"hs=s+1
+syn match skillFunction "\<display("he=e-1
+syn match skillFunction "(drain\>"hs=s+1
+syn match skillFunction "\<drain("he=e-1
+syn match skillFunction "(dtpr\>"hs=s+1
+syn match skillFunction "\<dtpr("he=e-1
+syn match skillFunction "(ed\(i\|l\|it\)\=\>"hs=s+1
+syn match skillFunction "\<ed\(i\|l\|it\)\=("he=e-1
+syn match skillFunction "(envobj\>"hs=s+1
+syn match skillFunction "\<envobj("he=e-1
+syn match skillFunction "(equal\>"hs=s+1
+syn match skillFunction "\<equal("he=e-1
+syn match skillFunction "(eqv\=\>"hs=s+1
+syn match skillFunction "\<eqv\=("he=e-1
+syn match skillFunction "(err\>"hs=s+1
+syn match skillFunction "\<err("he=e-1
+syn match skillFunction "(error\>"hs=s+1
+syn match skillFunction "\<error("he=e-1
+syn match skillFunction "(errset\>"hs=s+1
+syn match skillFunction "\<errset("he=e-1
+syn match skillFunction "(errsetstring\>"hs=s+1
+syn match skillFunction "\<errsetstring("he=e-1
+syn match skillFunction "(eval\>"hs=s+1
+syn match skillFunction "\<eval("he=e-1
+syn match skillFunction "(evalstring\>"hs=s+1
+syn match skillFunction "\<evalstring("he=e-1
+syn match skillFunction "(evenp\>"hs=s+1
+syn match skillFunction "\<evenp("he=e-1
+syn match skillFunction "(exists\>"hs=s+1
+syn match skillFunction "\<exists("he=e-1
+syn match skillFunction "(exit\>"hs=s+1
+syn match skillFunction "\<exit("he=e-1
+syn match skillFunction "(exp\>"hs=s+1
+syn match skillFunction "\<exp("he=e-1
+syn match skillFunction "(expandMacro\>"hs=s+1
+syn match skillFunction "\<expandMacro("he=e-1
+syn match skillFunction "(file\(Length\|Seek\|Tell\|TimeModified\)\>"hs=s+1
+syn match skillFunction "\<file\(Length\|Seek\|Tell\|TimeModified\)("he=e-1
+syn match skillFunction "(fixp\=\>"hs=s+1
+syn match skillFunction "\<fixp\=("he=e-1
+syn match skillFunction "(floatp\=\>"hs=s+1
+syn match skillFunction "\<floatp\=("he=e-1
+syn match skillFunction "(floor\>"hs=s+1
+syn match skillFunction "\<floor("he=e-1
+syn match skillRepeat "(for\(all\|each\)\=\>"hs=s+1
+syn match skillRepeat "\<for\(all\|each\)\=("he=e-1
+syn match skillFunction "([fs]\=printf\>"hs=s+1
+syn match skillFunction "\<[fs]\=printf("he=e-1
+syn match skillFunction "(f\=scanf\>"hs=s+1
+syn match skillFunction "\<f\=scanf("he=e-1
+syn match skillFunction "(funobj\>"hs=s+1
+syn match skillFunction "\<funobj("he=e-1
+syn match skillFunction "(gc\>"hs=s+1
+syn match skillFunction "\<gc("he=e-1
+syn match skillFunction "(gensym\>"hs=s+1
+syn match skillFunction "\<gensym("he=e-1
+syn match skillFunction "(get\(_pname\|_string\)\=\>"hs=s+1
+syn match skillFunction "\<get\(_pname\|_string\)\=("he=e-1
+syn match skillFunction "(getc\(har\)\=\>"hs=s+1
+syn match skillFunction "\<getc\(har\)\=("he=e-1
+syn match skillFunction "(getCurrentTime\>"hs=s+1
+syn match skillFunction "\<getCurrentTime("he=e-1
+syn match skillFunction "(getd\>"hs=s+1
+syn match skillFunction "\<getd("he=e-1
+syn match skillFunction "(getDirFiles\>"hs=s+1
+syn match skillFunction "\<getDirFiles("he=e-1
+syn match skillFunction "(getFnWriteProtect\>"hs=s+1
+syn match skillFunction "\<getFnWriteProtect("he=e-1
+syn match skillFunction "(getRunType\>"hs=s+1
+syn match skillFunction "\<getRunType("he=e-1
+syn match skillFunction "(getInstallPath\>"hs=s+1
+syn match skillFunction "\<getInstallPath("he=e-1
+syn match skillFunction "(getqq\=\>"hs=s+1
+syn match skillFunction "\<getqq\=("he=e-1
+syn match skillFunction "(gets\>"hs=s+1
+syn match skillFunction "\<gets("he=e-1
+syn match skillFunction "(getShellEnvVar\>"hs=s+1
+syn match skillFunction "\<getShellEnvVar("he=e-1
+syn match skillFunction "(getSkill\(Path\|Version\)\>"hs=s+1
+syn match skillFunction "\<getSkill\(Path\|Version\)("he=e-1
+syn match skillFunction "(getVarWriteProtect\>"hs=s+1
+syn match skillFunction "\<getVarWriteProtect("he=e-1
+syn match skillFunction "(getVersion\>"hs=s+1
+syn match skillFunction "\<getVersion("he=e-1
+syn match skillFunction "(getWarn\>"hs=s+1
+syn match skillFunction "\<getWarn("he=e-1
+syn match skillFunction "(getWorkingDir\>"hs=s+1
+syn match skillFunction "\<getWorkingDir("he=e-1
+syn match skillRepeat "(go\>"hs=s+1
+syn match skillRepeat "\<go("he=e-1
+syn match skillConditional "(if\>"hs=s+1
+syn match skillConditional "\<if("he=e-1
+syn keyword skillConditional then else
+syn match skillFunction "(index\>"hs=s+1
+syn match skillFunction "\<index("he=e-1
+syn match skillFunction "(infile\>"hs=s+1
+syn match skillFunction "\<infile("he=e-1
+syn match skillFunction "(inportp\>"hs=s+1
+syn match skillFunction "\<inportp("he=e-1
+syn match skillFunction "(in\(Scheme\|Skill\)\>"hs=s+1
+syn match skillFunction "\<in\(Scheme\|Skill\)("he=e-1
+syn match skillFunction "(instring\>"hs=s+1
+syn match skillFunction "\<instring("he=e-1
+syn match skillFunction "(integerp\>"hs=s+1
+syn match skillFunction "\<integerp("he=e-1
+syn match skillFunction "(intToChar\>"hs=s+1
+syn match skillFunction "\<intToChar("he=e-1
+syn match skillFunction "(is\(Callable\|Dir\|Executable\|File\|FileEncrypted\|FileName\|Link\|Macro\|Writable\)\>"hs=s+1
+syn match skillFunction "\<is\(Callable\|Dir\|Executable\|File\|FileEncrypted\|FileName\|Link\|Macro\|Writable\)("he=e-1
+syn match skillKeywords "(n\=lambda\>"hs=s+1
+syn match skillKeywords "\<n\=lambda("he=e-1
+syn match skillKeywords "(last\>"hs=s+1
+syn match skillKeywords "\<last("he=e-1
+syn match skillFunction "(lconc\>"hs=s+1
+syn match skillFunction "\<lconc("he=e-1
+syn match skillFunction "(length\>"hs=s+1
+syn match skillFunction "\<length("he=e-1
+syn match skillKeywords "(let\>"hs=s+1
+syn match skillKeywords "\<let("he=e-1
+syn match skillFunction "(lineread\(string\)\=\>"hs=s+1
+syn match skillFunction "\<lineread\(string\)\=("he=e-1
+syn match skillKeywords "(list\>"hs=s+1
+syn match skillKeywords "\<list("he=e-1
+syn match skillFunction "(listp\>"hs=s+1
+syn match skillFunction "\<listp("he=e-1
+syn match skillFunction "(listToVector\>"hs=s+1
+syn match skillFunction "\<listToVector("he=e-1
+syn match skillFunction "(loadi\=\>"hs=s+1
+syn match skillFunction "\<loadi\=("he=e-1
+syn match skillFunction "(loadstring\>"hs=s+1
+syn match skillFunction "\<loadstring("he=e-1
+syn match skillFunction "(log\>"hs=s+1
+syn match skillFunction "\<log("he=e-1
+syn match skillFunction "(lowerCase\>"hs=s+1
+syn match skillFunction "\<lowerCase("he=e-1
+syn match skillFunction "(makeTable\>"hs=s+1
+syn match skillFunction "\<makeTable("he=e-1
+syn match skillFunction "(makeTempFileName\>"hs=s+1
+syn match skillFunction "\<makeTempFileName("he=e-1
+syn match skillFunction "(makeVector\>"hs=s+1
+syn match skillFunction "\<makeVector("he=e-1
+syn match skillFunction "(map\(c\|can\|car\|list\)\>"hs=s+1
+syn match skillFunction "\<map\(c\|can\|car\|list\)("he=e-1
+syn match skillFunction "(max\>"hs=s+1
+syn match skillFunction "\<max("he=e-1
+syn match skillFunction "(measureTime\>"hs=s+1
+syn match skillFunction "\<measureTime("he=e-1
+syn match skillFunction "(member\>"hs=s+1
+syn match skillFunction "\<member("he=e-1
+syn match skillFunction "(mem[qv]\>"hs=s+1
+syn match skillFunction "\<mem[qv]("he=e-1
+syn match skillFunction "(min\>"hs=s+1
+syn match skillFunction "\<min("he=e-1
+syn match skillFunction "(minusp\>"hs=s+1
+syn match skillFunction "\<minusp("he=e-1
+syn match skillFunction "(mod\(ulo\)\=\>"hs=s+1
+syn match skillFunction "\<mod\(ulo\)\=("he=e-1
+syn match skillKeywords "([mn]\=procedure\>"hs=s+1
+syn match skillKeywords "\<[mn]\=procedure("he=e-1
+syn match skillFunction "(ncon[cs]\>"hs=s+1
+syn match skillFunction "\<ncon[cs]("he=e-1
+syn match skillFunction "(needNCells\>"hs=s+1
+syn match skillFunction "\<needNCells("he=e-1
+syn match skillFunction "(negativep\>"hs=s+1
+syn match skillFunction "\<negativep("he=e-1
+syn match skillFunction "(neq\(ual\)\=\>"hs=s+1
+syn match skillFunction "\<neq\(ual\)\=("he=e-1
+syn match skillFunction "(newline\>"hs=s+1
+syn match skillFunction "\<newline("he=e-1
+syn match skillFunction "(nindex\>"hs=s+1
+syn match skillFunction "\<nindex("he=e-1
+syn match skillFunction "(not\>"hs=s+1
+syn match skillFunction "\<not("he=e-1
+syn match skillFunction "(nth\(cdr\|elem\)\=\>"hs=s+1
+syn match skillFunction "\<nth\(cdr\|elem\)\=("he=e-1
+syn match skillFunction "(null\>"hs=s+1
+syn match skillFunction "\<null("he=e-1
+syn match skillFunction "(numberp\>"hs=s+1
+syn match skillFunction "\<numberp("he=e-1
+syn match skillFunction "(numOpenFiles\>"hs=s+1
+syn match skillFunction "\<numOpenFiles("he=e-1
+syn match skillFunction "(oddp\>"hs=s+1
+syn match skillFunction "\<oddp("he=e-1
+syn match skillFunction "(onep\>"hs=s+1
+syn match skillFunction "\<onep("he=e-1
+syn match skillFunction "(otherp\>"hs=s+1
+syn match skillFunction "\<otherp("he=e-1
+syn match skillFunction "(outfile\>"hs=s+1
+syn match skillFunction "\<outfile("he=e-1
+syn match skillFunction "(outportp\>"hs=s+1
+syn match skillFunction "\<outportp("he=e-1
+syn match skillFunction "(pairp\>"hs=s+1
+syn match skillFunction "\<pairp("he=e-1
+syn match skillFunction "(parseString\>"hs=s+1
+syn match skillFunction "\<parseString("he=e-1
+syn match skillFunction "(plist\>"hs=s+1
+syn match skillFunction "\<plist("he=e-1
+syn match skillFunction "(plusp\>"hs=s+1
+syn match skillFunction "\<plusp("he=e-1
+syn match skillFunction "(portp\>"hs=s+1
+syn match skillFunction "\<portp("he=e-1
+syn match skillFunction "(p\=print\>"hs=s+1
+syn match skillFunction "\<p\=print("he=e-1
+syn match skillFunction "(prependInstallPath\>"hs=s+1
+syn match skillFunction "\<prependInstallPath("he=e-1
+syn match skillFunction "(printl\(ev\|n\)\>"hs=s+1
+syn match skillFunction "\<printl\(ev\|n\)("he=e-1
+syn match skillFunction "(procedurep\>"hs=s+1
+syn match skillFunction "\<procedurep("he=e-1
+syn match skillKeywords "(prog[12n]\=\>"hs=s+1
+syn match skillKeywords "\<prog[12n]\=("he=e-1
+syn match skillFunction "(putd\>"hs=s+1
+syn match skillFunction "\<putd("he=e-1
+syn match skillFunction "(putpropq\{,2}\>"hs=s+1
+syn match skillFunction "\<putpropq\{,2}("he=e-1
+syn match skillFunction "(random\>"hs=s+1
+syn match skillFunction "\<random("he=e-1
+syn match skillFunction "(read\>"hs=s+1
+syn match skillFunction "\<read("he=e-1
+syn match skillFunction "(readString\>"hs=s+1
+syn match skillFunction "\<readString("he=e-1
+syn match skillFunction "(readTable\>"hs=s+1
+syn match skillFunction "\<readTable("he=e-1
+syn match skillFunction "(realp\>"hs=s+1
+syn match skillFunction "\<realp("he=e-1
+syn match skillFunction "(regExit\(After\|Before\)\>"hs=s+1
+syn match skillFunction "\<regExit\(After\|Before\)("he=e-1
+syn match skillFunction "(remainder\>"hs=s+1
+syn match skillFunction "\<remainder("he=e-1
+syn match skillFunction "(remdq\=\>"hs=s+1
+syn match skillFunction "\<remdq\=("he=e-1
+syn match skillFunction "(remExitProc\>"hs=s+1
+syn match skillFunction "\<remExitProc("he=e-1
+syn match skillFunction "(remove\>"hs=s+1
+syn match skillFunction "\<remove("he=e-1
+syn match skillFunction "(remprop\>"hs=s+1
+syn match skillFunction "\<remprop("he=e-1
+syn match skillFunction "(remq\>"hs=s+1
+syn match skillFunction "\<remq("he=e-1
+syn match skillKeywords "(return\>"hs=s+1
+syn match skillKeywords "\<return("he=e-1
+syn match skillFunction "(reverse\>"hs=s+1
+syn match skillFunction "\<reverse("he=e-1
+syn match skillFunction "(rexCompile\>"hs=s+1
+syn match skillFunction "\<rexCompile("he=e-1
+syn match skillFunction "(rexExecute\>"hs=s+1
+syn match skillFunction "\<rexExecute("he=e-1
+syn match skillFunction "(rexMagic\>"hs=s+1
+syn match skillFunction "\<rexMagic("he=e-1
+syn match skillFunction "(rexMatchAssocList\>"hs=s+1
+syn match skillFunction "\<rexMatchAssocList("he=e-1
+syn match skillFunction "(rexMatchList\>"hs=s+1
+syn match skillFunction "\<rexMatchList("he=e-1
+syn match skillFunction "(rexMatchp\>"hs=s+1
+syn match skillFunction "\<rexMatchp("he=e-1
+syn match skillFunction "(rexReplace\>"hs=s+1
+syn match skillFunction "\<rexReplace("he=e-1
+syn match skillFunction "(rexSubstitute\>"hs=s+1
+syn match skillFunction "\<rexSubstitute("he=e-1
+syn match skillFunction "(rindex\>"hs=s+1
+syn match skillFunction "\<rindex("he=e-1
+syn match skillFunction "(round\>"hs=s+1
+syn match skillFunction "\<round("he=e-1
+syn match skillFunction "(rplac[ad]\>"hs=s+1
+syn match skillFunction "\<rplac[ad]("he=e-1
+syn match skillFunction "(schemeTopLevelEnv\>"hs=s+1
+syn match skillFunction "\<schemeTopLevelEnv("he=e-1
+syn match skillFunction "(set\>"hs=s+1
+syn match skillFunction "\<set("he=e-1
+syn match skillFunction "(setarray\>"hs=s+1
+syn match skillFunction "\<setarray("he=e-1
+syn match skillFunction "(setc[ad]r\>"hs=s+1
+syn match skillFunction "\<setc[ad]r("he=e-1
+syn match skillFunction "(setFnWriteProtect\>"hs=s+1
+syn match skillFunction "\<setFnWriteProtect("he=e-1
+syn match skillFunction "(setof\>"hs=s+1
+syn match skillFunction "\<setof("he=e-1
+syn match skillFunction "(setplist\>"hs=s+1
+syn match skillFunction "\<setplist("he=e-1
+syn match skillFunction "(setq\>"hs=s+1
+syn match skillFunction "\<setq("he=e-1
+syn match skillFunction "(setShellEnvVar\>"hs=s+1
+syn match skillFunction "\<setShellEnvVar("he=e-1
+syn match skillFunction "(setSkillPath\>"hs=s+1
+syn match skillFunction "\<setSkillPath("he=e-1
+syn match skillFunction "(setVarWriteProtect\>"hs=s+1
+syn match skillFunction "\<setVarWriteProtect("he=e-1
+syn match skillFunction "(sh\(ell\)\=\>"hs=s+1
+syn match skillFunction "\<sh\(ell\)\=("he=e-1
+syn match skillFunction "(simplifyFilename\>"hs=s+1
+syn match skillFunction "\<simplifyFilename("he=e-1
+syn match skillFunction "(sort\(car\)\=\>"hs=s+1
+syn match skillFunction "\<sort\(car\)\=("he=e-1
+syn match skillFunction "(sqrt\>"hs=s+1
+syn match skillFunction "\<sqrt("he=e-1
+syn match skillFunction "(srandom\>"hs=s+1
+syn match skillFunction "\<srandom("he=e-1
+syn match skillFunction "(sstatus\>"hs=s+1
+syn match skillFunction "\<sstatus("he=e-1
+syn match skillFunction "(strn\=cat\>"hs=s+1
+syn match skillFunction "\<strn\=cat("he=e-1
+syn match skillFunction "(strn\=cmp\>"hs=s+1
+syn match skillFunction "\<strn\=cmp("he=e-1
+syn match skillFunction "(stringp\>"hs=s+1
+syn match skillFunction "\<stringp("he=e-1
+syn match skillFunction "(stringTo\(Function\|Symbol\|Time\)\>"hs=s+1
+syn match skillFunction "\<stringTo\(Function\|Symbol\|Time\)("he=e-1
+syn match skillFunction "(strlen\>"hs=s+1
+syn match skillFunction "\<strlen("he=e-1
+syn match skillFunction "(sub1\>"hs=s+1
+syn match skillFunction "\<sub1("he=e-1
+syn match skillFunction "(subst\>"hs=s+1
+syn match skillFunction "\<subst("he=e-1
+syn match skillFunction "(substring\>"hs=s+1
+syn match skillFunction "\<substring("he=e-1
+syn match skillFunction "(sxtd\>"hs=s+1
+syn match skillFunction "\<sxtd("he=e-1
+syn match skillFunction "(symbolp\>"hs=s+1
+syn match skillFunction "\<symbolp("he=e-1
+syn match skillFunction "(symbolToString\>"hs=s+1
+syn match skillFunction "\<symbolToString("he=e-1
+syn match skillFunction "(symeval\>"hs=s+1
+syn match skillFunction "\<symeval("he=e-1
+syn match skillFunction "(symstrp\>"hs=s+1
+syn match skillFunction "\<symstrp("he=e-1
+syn match skillFunction "(system\>"hs=s+1
+syn match skillFunction "\<system("he=e-1
+syn match skillFunction "(tablep\>"hs=s+1
+syn match skillFunction "\<tablep("he=e-1
+syn match skillFunction "(tableToList\>"hs=s+1
+syn match skillFunction "\<tableToList("he=e-1
+syn match skillFunction "(tailp\>"hs=s+1
+syn match skillFunction "\<tailp("he=e-1
+syn match skillFunction "(tconc\>"hs=s+1
+syn match skillFunction "\<tconc("he=e-1
+syn match skillFunction "(timeToString\>"hs=s+1
+syn match skillFunction "\<timeToString("he=e-1
+syn match skillFunction "(timeToTm\>"hs=s+1
+syn match skillFunction "\<timeToTm("he=e-1
+syn match skillFunction "(tmToTime\>"hs=s+1
+syn match skillFunction "\<tmToTime("he=e-1
+syn match skillFunction "(truncate\>"hs=s+1
+syn match skillFunction "\<truncate("he=e-1
+syn match skillFunction "(typep\=\>"hs=s+1
+syn match skillFunction "\<typep\=("he=e-1
+syn match skillFunction "(unalias\>"hs=s+1
+syn match skillFunction "\<unalias("he=e-1
+syn match skillConditional "(unless\>"hs=s+1
+syn match skillConditional "\<unless("he=e-1
+syn match skillFunction "(upperCase\>"hs=s+1
+syn match skillFunction "\<upperCase("he=e-1
+syn match skillFunction "(vector\(ToList\)\=\>"hs=s+1
+syn match skillFunction "\<vector\(ToList\)\=("he=e-1
+syn match skillFunction "(warn\>"hs=s+1
+syn match skillFunction "\<warn("he=e-1
+syn match skillConditional "(when\>"hs=s+1
+syn match skillConditional "\<when("he=e-1
+syn match skillRepeat "(while\>"hs=s+1
+syn match skillRepeat "\<while("he=e-1
+syn match skillFunction "(write\>"hs=s+1
+syn match skillFunction "\<write("he=e-1
+syn match skillFunction "(writeTable\>"hs=s+1
+syn match skillFunction "\<writeTable("he=e-1
+syn match skillFunction "(xcons\>"hs=s+1
+syn match skillFunction "\<xcons("he=e-1
+syn match skillFunction "(zerop\>"hs=s+1
+syn match skillFunction "\<zerop("he=e-1
+syn match skillFunction "(zxtd\>"hs=s+1
+syn match skillFunction "\<zxtd("he=e-1
+
+" DFII procedural interface routines
+
+" CDF functions
+syn match skillcdfFunctions "(cdf\u\a\+\>"hs=s+1
+syn match skillcdfFunctions "\<cdf\u\a\+("he=e-1
+" graphic editor functions
+syn match skillgeFunctions "(ge\u\a\+\>"hs=s+1
+syn match skillgeFunctions "\<ge\u\a\+("he=e-1
+" human interface functions
+syn match skillhiFunctions "(hi\u\a\+\>"hs=s+1
+syn match skillhiFunctions "\<hi\u\a\+("he=e-1
+" layout editor functions
+syn match skillleFunctions "(le\u\a\+\>"hs=s+1
+syn match skillleFunctions "\<le\u\a\+("he=e-1
+" database|design editor|design flow functions
+syn match skilldbefFunctions "(d[bef]\u\a\+\>"hs=s+1
+syn match skilldbefFunctions "\<d[bef]\u\a\+("he=e-1
+" design management & design data services functions
+syn match skillddFunctions "(dd[s]\=\u\a\+\>"hs=s+1
+syn match skillddFunctions "\<dd[s]\=\u\a\+("he=e-1
+" parameterized cell functions
+syn match skillpcFunctions "(pc\u\a\+\>"hs=s+1
+syn match skillpcFunctions "\<pc\u\a\+("he=e-1
+" tech file functions
+syn match skilltechFunctions "(\(tech\|tc\)\u\a\+\>"hs=s+1
+syn match skilltechFunctions "\<\(tech\|tc\)\u\a\+("he=e-1
+
+" strings
+syn region skillString start=+"+ skip=+\\"+ end=+"+
+
+syn keyword skillTodo contained TODO FIXME XXX
+syn keyword skillNote contained NOTE IMPORTANT
+
+" comments are either C-style or begin with a semicolon
+syn region skillComment start="/\*" end="\*/" contains=skillTodo,skillNote
+syn match skillComment ";.*" contains=skillTodo,skillNote
+syn match skillCommentError "\*/"
+
+syn sync ccomment skillComment minlines=10
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link skillcdfFunctions Function
+hi def link skillgeFunctions Function
+hi def link skillhiFunctions Function
+hi def link skillleFunctions Function
+hi def link skilldbefFunctions Function
+hi def link skillddFunctions Function
+hi def link skillpcFunctions Function
+hi def link skilltechFunctions Function
+hi def link skillConstants Constant
+hi def link skillFunction Function
+hi def link skillKeywords Statement
+hi def link skillConditional Conditional
+hi def link skillRepeat Repeat
+hi def link skillString String
+hi def link skillTodo Todo
+hi def link skillNote Todo
+hi def link skillComment Comment
+hi def link skillCommentError Error
+
+
+let b:current_syntax = "skill"
+
+" vim: ts=4
diff --git a/runtime/syntax/sl.vim b/runtime/syntax/sl.vim
new file mode 100644
index 0000000..1f6c847
--- /dev/null
+++ b/runtime/syntax/sl.vim
@@ -0,0 +1,107 @@
+" Vim syntax file
+" Language: Renderman shader language
+" Maintainer: Dan Piponi <dan@tanelorn.demon.co.uk>
+" Last Change: 2001 May 09
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" A bunch of useful Renderman keywords including special
+" RenderMan control structures
+syn keyword slStatement break return continue
+syn keyword slConditional if else
+syn keyword slRepeat while for
+syn keyword slRepeat illuminance illuminate solar
+
+syn keyword slTodo contained TODO FIXME XXX
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match slSpecial contained "\\[0-9][0-9][0-9]\|\\."
+syn region slString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=slSpecial
+syn match slCharacter "'[^\\]'"
+syn match slSpecialCharacter "'\\.'"
+syn match slSpecialCharacter "'\\[0-9][0-9]'"
+syn match slSpecialCharacter "'\\[0-9][0-9][0-9]'"
+
+"catch errors caused by wrong parenthesis
+syn region slParen transparent start='(' end=')' contains=ALLBUT,slParenError,slIncluded,slSpecial,slTodo,slUserLabel
+syn match slParenError ")"
+syn match slInParen contained "[{}]"
+
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match slNumber "\<[0-9]\+\(u\=l\=\|lu\|f\)\>"
+"floating point number, with dot, optional exponent
+syn match slFloat "\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=[fl]\=\>"
+"floating point number, starting with a dot, optional exponent
+syn match slFloat "\.[0-9]\+\(e[-+]\=[0-9]\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match slFloat "\<[0-9]\+e[-+]\=[0-9]\+[fl]\=\>"
+"hex number
+syn match slNumber "\<0x[0-9a-f]\+\(u\=l\=\|lu\)\>"
+"syn match slIdentifier "\<[a-z_][a-z0-9_]*\>"
+syn case match
+
+if exists("sl_comment_strings")
+ " A comment can contain slString, slCharacter and slNumber.
+ " But a "*/" inside a slString in a slComment DOES end the comment! So we
+ " need to use a special type of slString: slCommentString, which also ends on
+ " "*/", and sees a "*" at the start of the line as comment again.
+ " Unfortunately this doesn't very well work for // type of comments :-(
+ syntax match slCommentSkip contained "^\s*\*\($\|\s\+\)"
+ syntax region slCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=slSpecial,slCommentSkip
+ syntax region slComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=slSpecial
+ syntax region slComment start="/\*" end="\*/" contains=slTodo,slCommentString,slCharacter,slNumber
+else
+ syn region slComment start="/\*" end="\*/" contains=slTodo
+endif
+syntax match slCommentError "\*/"
+
+syn keyword slOperator sizeof
+syn keyword slType float point color string vector normal matrix void
+syn keyword slStorageClass varying uniform extern
+syn keyword slStorageClass light surface volume displacement transformation imager
+syn keyword slVariable Cs Os P dPdu dPdv N Ng u v du dv s t
+syn keyword slVariable L Cl Ol E I ncomps time Ci Oi
+syn keyword slVariable Ps alpha
+syn keyword slVariable dtime dPdtime
+
+syn sync ccomment slComment minlines=10
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link slLabel Label
+hi def link slUserLabel Label
+hi def link slConditional Conditional
+hi def link slRepeat Repeat
+hi def link slCharacter Character
+hi def link slSpecialCharacter slSpecial
+hi def link slNumber Number
+hi def link slFloat Float
+hi def link slParenError slError
+hi def link slInParen slError
+hi def link slCommentError slError
+hi def link slOperator Operator
+hi def link slStorageClass StorageClass
+hi def link slError Error
+hi def link slStatement Statement
+hi def link slType Type
+hi def link slCommentError slError
+hi def link slCommentString slString
+hi def link slComment2String slString
+hi def link slCommentSkip slComment
+hi def link slString String
+hi def link slComment Comment
+hi def link slSpecial SpecialChar
+hi def link slTodo Todo
+hi def link slVariable Identifier
+"hi def link slIdentifier Identifier
+
+
+let b:current_syntax = "sl"
+
+" vim: ts=8
diff --git a/runtime/syntax/slang.vim b/runtime/syntax/slang.vim
new file mode 100644
index 0000000..53ede4d
--- /dev/null
+++ b/runtime/syntax/slang.vim
@@ -0,0 +1,89 @@
+" Vim syntax file
+" Language: S-Lang
+" Maintainer: Jan Hlavacek <lahvak@math.ohio-state.edu>
+" Last Change: 980216
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn keyword slangStatement break return continue EXECUTE_ERROR_BLOCK
+syn match slangStatement "\<X_USER_BLOCK[0-4]\>"
+syn keyword slangLabel case
+syn keyword slangConditional !if if else switch
+syn keyword slangRepeat while for _for loop do forever
+syn keyword slangDefinition define typedef variable struct
+syn keyword slangOperator or and andelse orelse shr shl xor not
+syn keyword slangBlock EXIT_BLOCK ERROR_BLOCK
+syn match slangBlock "\<USER_BLOCK[0-4]\>"
+syn keyword slangConstant NULL
+syn keyword slangType Integer_Type Double_Type Complex_Type String_Type Struct_Type Ref_Type Null_Type Array_Type DataType_Type
+
+syn match slangOctal "\<0\d\+\>" contains=slangOctalError
+syn match slangOctalError "[89]\+" contained
+syn match slangHex "\<0[xX][0-9A-Fa-f]*\>"
+syn match slangDecimal "\<[1-9]\d*\>"
+syn match slangFloat "\<\d\+\."
+syn match slangFloat "\<\d\+\.\d\+\([Ee][-+]\=\d\+\)\=\>"
+syn match slangFloat "\<\d\+\.[Ee][-+]\=\d\+\>"
+syn match slangFloat "\<\d\+[Ee][-+]\=\d\+\>"
+syn match slangFloat "\.\d\+\([Ee][-+]\=\d\+\)\=\>"
+syn match slangImaginary "\.\d\+\([Ee][-+]\=\d*\)\=[ij]\>"
+syn match slangImaginary "\<\d\+\(\.\d*\)\=\([Ee][-+]\=\d\+\)\=[ij]\>"
+
+syn region slangString oneline start='"' end='"' skip='\\"'
+syn match slangCharacter "'[^\\]'"
+syn match slangCharacter "'\\.'"
+syn match slangCharacter "'\\[0-7]\{1,3}'"
+syn match slangCharacter "'\\d\d\{1,3}'"
+syn match slangCharacter "'\\x[0-7a-fA-F]\{1,2}'"
+
+syn match slangDelim "[][{};:,]"
+syn match slangOperator "[-%+/&*=<>|!~^@]"
+
+"catch errors caused by wrong parenthesis
+syn region slangParen matchgroup=slangDelim transparent start='(' end=')' contains=ALLBUT,slangParenError
+syn match slangParenError ")"
+
+syn match slangComment "%.*$"
+syn keyword slangOperator sizeof
+
+syn region slangPreCondit start="^\s*#\s*\(ifdef\>\|ifndef\>\|iftrue\>\|ifnfalse\>\|iffalse\>\|ifntrue\>\|if\$\|ifn\$\|\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=cComment,slangString,slangCharacter,slangNumber
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link slangDefinition Type
+hi def link slangBlock slangDefinition
+hi def link slangLabel Label
+hi def link slangConditional Conditional
+hi def link slangRepeat Repeat
+hi def link slangCharacter Character
+hi def link slangFloat Float
+hi def link slangImaginary Float
+hi def link slangDecimal slangNumber
+hi def link slangOctal slangNumber
+hi def link slangHex slangNumber
+hi def link slangNumber Number
+hi def link slangParenError Error
+hi def link slangOctalError Error
+hi def link slangOperator Operator
+hi def link slangStructure Structure
+hi def link slangInclude Include
+hi def link slangPreCondit PreCondit
+hi def link slangError Error
+hi def link slangStatement Statement
+hi def link slangType Type
+hi def link slangString String
+hi def link slangConstant Constant
+hi def link slangRangeArray slangConstant
+hi def link slangComment Comment
+hi def link slangSpecial SpecialChar
+hi def link slangTodo Todo
+hi def link slangDelim Delimiter
+
+
+let b:current_syntax = "slang"
+
+" vim: ts=8
diff --git a/runtime/syntax/slice.vim b/runtime/syntax/slice.vim
new file mode 100644
index 0000000..3a57ece
--- /dev/null
+++ b/runtime/syntax/slice.vim
@@ -0,0 +1,78 @@
+" Vim syntax file
+" Language: Slice (ZeroC's Specification Language for Ice)
+" Maintainer: Morel Bodin <slice06@nym.hush.com>
+" Last Change: 2005 Dec 03
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" The Slice keywords
+
+syn keyword sliceType bool byte double float int long short string void
+syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws
+syn keyword sliceConstruct class enum exception dictionary interface module LocalObject Object sequence struct
+syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws
+syn keyword sliceBoolean false true
+
+" Include directives
+syn region sliceIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match sliceIncluded display contained "<[^>]*>"
+syn match sliceInclude display "^\s*#\s*include\>\s*["<]" contains=sliceIncluded
+
+" Double-include guards
+syn region sliceGuard start="^#\(define\|ifndef\|endif\)" end="$"
+
+" Strings and characters
+syn region sliceString start=+"+ end=+"+
+
+" Numbers (shamelessly ripped from c.vim, only slightly modified)
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match sliceNumbers display transparent "\<\d\|\.\d" contains=sliceNumber,sliceFloat,sliceOctal
+syn match sliceNumber display contained "\d\+"
+"hex number
+syn match sliceNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+" Flag the first zero of an octal number as something special
+syn match sliceOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=sliceOctalZero
+syn match sliceOctalZero display contained "\<0"
+syn match sliceFloat display contained "\d\+f"
+"floating point number, with dot, optional exponent
+syn match sliceFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+"floating point number, starting with a dot, optional exponent
+syn match sliceFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match sliceFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>"
+" flag an octal number with wrong digits
+syn case match
+
+
+" Comments
+syn region sliceComment start="/\*" end="\*/"
+syn match sliceComment "//.*"
+
+syn sync ccomment sliceComment
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link sliceComment Comment
+hi def link sliceConstruct Keyword
+hi def link sliceType Type
+hi def link sliceString String
+hi def link sliceIncluded String
+hi def link sliceQualifier Keyword
+hi def link sliceInclude Include
+hi def link sliceGuard PreProc
+hi def link sliceBoolean Boolean
+hi def link sliceFloat Number
+hi def link sliceNumber Number
+hi def link sliceOctal Number
+hi def link sliceOctalZero Special
+hi def link sliceNumberError Special
+
+
+let b:current_syntax = "slice"
+
+" vim: ts=8
diff --git a/runtime/syntax/slpconf.vim b/runtime/syntax/slpconf.vim
new file mode 100644
index 0000000..712ba90
--- /dev/null
+++ b/runtime/syntax/slpconf.vim
@@ -0,0 +1,273 @@
+" Vim syntax file
+" Language: RFC 2614 - An API for Service Location configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword slpconfTodo contained TODO FIXME XXX NOTE
+
+syn region slpconfComment display oneline start='^[#;]' end='$'
+ \ contains=slpconfTodo,@Spell
+
+syn match slpconfBegin display '^'
+ \ nextgroup=slpconfTag,
+ \ slpconfComment skipwhite
+
+syn keyword slpconfTag contained net
+ \ nextgroup=slpconfNetTagDot
+
+syn match slpconfNetTagDot contained display '.'
+ \ nextgroup=slpconfNetTag
+
+syn keyword slpconfNetTag contained slp
+ \ nextgroup=slpconfNetSlpTagdot
+
+syn match slpconfNetSlpTagDot contained display '.'
+ \ nextgroup=slpconfNetSlpTag
+
+syn keyword slpconfNetSlpTag contained isDA traceDATraffic traceMsg
+ \ traceDrop traceReg isBroadcastOnly
+ \ passiveDADetection securityEnabled
+ \ nextgroup=slpconfBooleanEq,slpconfBooleanHome
+ \ skipwhite
+
+syn match slpconfBooleanHome contained display
+ \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+ \ nextgroup=slpconfBooleanEq skipwhite
+
+syn match slpconfBooleanEq contained display '='
+ \ nextgroup=slpconfBoolean skipwhite
+
+syn keyword slpconfBoolean contained true false TRUE FALSE
+
+syn keyword slpconfNetSlpTag contained DAHeartBeat multicastTTL
+ \ DAActiveDiscoveryInterval
+ \ multicastMaximumWait multicastTimeouts
+ \ randomWaitBound MTU maxResults
+ \ nextgroup=slpconfIntegerEq,slpconfIntegerHome
+ \ skipwhite
+
+syn match slpconfIntegerHome contained display
+ \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+ \ nextgroup=slpconfIntegerEq skipwhite
+
+syn match slpconfIntegerEq contained display '='
+ \ nextgroup=slpconfInteger skipwhite
+
+syn match slpconfInteger contained display '\<\d\+\>'
+
+syn keyword slpconfNetSlpTag contained DAAttributes SAAttributes
+ \ nextgroup=slpconfAttrEq,slpconfAttrHome
+ \ skipwhite
+
+syn match slpconfAttrHome contained display
+ \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+ \ nextgroup=slpconfAttrEq skipwhite
+
+syn match slpconfAttrEq contained display '='
+ \ nextgroup=slpconfAttrBegin skipwhite
+
+syn match slpconfAttrBegin contained display '('
+ \ nextgroup=slpconfAttrTag skipwhite
+
+syn match slpconfAttrTag contained display
+ \ '[^* \t_(),\\!<=>~[:cntrl:]]\+'
+ \ nextgroup=slpconfAttrTagEq skipwhite
+
+syn match slpconfAttrTagEq contained display '='
+ \ nextgroup=@slpconfAttrValue skipwhite
+
+syn cluster slpconfAttrValueCon contains=slpconfAttrValueSep,slpconfAttrEnd
+
+syn cluster slpconfAttrValue contains=slpconfAttrIValue,slpconfAttrSValue,
+ \ slpconfAttrBValue,slpconfAttrSSValue
+
+syn match slpconfAttrSValue contained display '[^ (),\\!<=>~[:cntrl:]]\+'
+ \ nextgroup=@slpconfAttrValueCon skipwhite
+
+syn match slpconfAttrSSValue contained display '\\FF\%(\\\x\x\)\+'
+ \ nextgroup=@slpconfAttrValueCon skipwhite
+
+syn match slpconfAttrIValue contained display '[-]\=\d\+\>'
+ \ nextgroup=@slpconfAttrValueCon skipwhite
+
+syn keyword slpconfAttrBValue contained true false
+ \ nextgroup=@slpconfAttrValueCon skipwhite
+
+syn match slpconfAttrValueSep contained display ','
+ \ nextgroup=@slpconfAttrValue skipwhite
+
+syn match slpconfAttrEnd contained display ')'
+ \ nextgroup=slpconfAttrSep skipwhite
+
+syn match slpconfAttrSep contained display ','
+ \ nextgroup=slpconfAttrBegin skipwhite
+
+syn keyword slpconfNetSlpTag contained useScopes typeHint
+ \ nextgroup=slpconfStringsEq,slpconfStringsHome
+ \ skipwhite
+
+syn match slpconfStringsHome contained display
+ \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+ \ nextgroup=slpconfStringsEq skipwhite
+
+syn match slpconfStringsEq contained display '='
+ \ nextgroup=slpconfStrings skipwhite
+
+syn match slpconfStrings contained display
+ \ '\%([[:digit:][:alpha:]]\|[!-+./:-@[-`{-~-]\|\\\x\x\)\+'
+ \ nextgroup=slpconfStringsSep skipwhite
+
+syn match slpconfStringsSep contained display ','
+ \ nextgroup=slpconfStrings skipwhite
+
+syn keyword slpconfNetSlpTag contained DAAddresses
+ \ nextgroup=slpconfAddressesEq,slpconfAddrsHome
+ \ skipwhite
+
+syn match slpconfAddrsHome contained display
+ \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+ \ nextgroup=slpconfAddressesEq skipwhite
+
+syn match slpconfAddressesEq contained display '='
+ \ nextgroup=@slpconfAddresses skipwhite
+
+syn cluster slpconfAddresses contains=slpconfFQDNs,slpconfHostnumbers
+
+syn match slpconfFQDNs contained display
+ \ '\a[[:alnum:]-]*[[:alnum:]]\|\a'
+ \ nextgroup=slpconfAddressesSep skipwhite
+
+syn match slpconfHostnumbers contained display
+ \ '\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+ \ nextgroup=slpconfAddressesSep skipwhite
+
+syn match slpconfAddressesSep contained display ','
+ \ nextgroup=@slpconfAddresses skipwhite
+
+syn keyword slpconfNetSlpTag contained serializedRegURL
+ \ nextgroup=slpconfStringEq,slpconfStringHome
+ \ skipwhite
+
+syn match slpconfStringHome contained display
+ \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+ \ nextgroup=slpconfStringEq skipwhite
+
+syn match slpconfStringEq contained display '='
+ \ nextgroup=slpconfString skipwhite
+
+syn match slpconfString contained display
+ \ '\%([!-+./:-@[-`{-~-]\|\\\x\x\)\+\|[[:digit:][:alpha:]]'
+
+syn keyword slpconfNetSlpTag contained multicastTimeouts DADiscoveryTimeouts
+ \ datagramTimeouts
+ \ nextgroup=slpconfIntegersEq,
+ \ slpconfIntegersHome skipwhite
+
+syn match slpconfIntegersHome contained display
+ \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+ \ nextgroup=slpconfIntegersEq skipwhite
+
+syn match slpconfIntegersEq contained display '='
+ \ nextgroup=slpconfIntegers skipwhite
+
+syn match slpconfIntegers contained display '\<\d\+\>'
+ \ nextgroup=slpconfIntegersSep skipwhite
+
+syn match slpconfIntegersSep contained display ','
+ \ nextgroup=slpconfIntegers skipwhite
+
+syn keyword slpconfNetSlpTag contained interfaces
+ \ nextgroup=slpconfHostnumsEq,
+ \ slpconfHostnumsHome skipwhite
+
+syn match slpconfHostnumsHome contained display
+ \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+ \ nextgroup=slpconfHostnumsEq skipwhite
+
+syn match slpconfHostnumsEq contained display '='
+ \ nextgroup=slpconfOHostnumbers skipwhite
+
+syn match slpconfOHostnumbers contained display
+ \ '\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+ \ nextgroup=slpconfHostnumsSep skipwhite
+
+syn match slpconfHostnumsSep contained display ','
+ \ nextgroup=slpconfOHostnumbers skipwhite
+
+syn keyword slpconfNetSlpTag contained locale
+ \ nextgroup=slpconfLocaleEq,slpconfLocaleHome
+ \ skipwhite
+
+syn match slpconfLocaleHome contained display
+ \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+ \ nextgroup=slpconfLocaleEq skipwhite
+
+syn match slpconfLocaleEq contained display '='
+ \ nextgroup=slpconfLocale skipwhite
+
+syn match slpconfLocale contained display '\a\{1,8}\%(-\a\{1,8}\)\='
+
+hi def link slpconfTodo Todo
+hi def link slpconfComment Comment
+hi def link slpconfTag Identifier
+hi def link slpconfDelimiter Delimiter
+hi def link slpconfNetTagDot slpconfDelimiter
+hi def link slpconfNetTag slpconfTag
+hi def link slpconfNetSlpTagDot slpconfNetTagDot
+hi def link slpconfNetSlpTag slpconfTag
+hi def link slpconfHome Special
+hi def link slpconfBooleanHome slpconfHome
+hi def link slpconfEq Operator
+hi def link slpconfBooleanEq slpconfEq
+hi def link slpconfBoolean Boolean
+hi def link slpconfIntegerHome slpconfHome
+hi def link slpconfIntegerEq slpconfEq
+hi def link slpconfInteger Number
+hi def link slpconfAttrHome slpconfHome
+hi def link slpconfAttrEq slpconfEq
+hi def link slpconfAttrBegin slpconfDelimiter
+hi def link slpconfAttrTag slpconfTag
+hi def link slpconfAttrTagEq slpconfEq
+hi def link slpconfAttrIValue slpconfInteger
+hi def link slpconfAttrSValue slpconfString
+hi def link slpconfAttrBValue slpconfBoolean
+hi def link slpconfAttrSSValue slpconfString
+hi def link slpconfSeparator slpconfDelimiter
+hi def link slpconfAttrValueSep slpconfSeparator
+hi def link slpconfAttrEnd slpconfAttrBegin
+hi def link slpconfAttrSep slpconfSeparator
+hi def link slpconfStringsHome slpconfHome
+hi def link slpconfStringsEq slpconfEq
+hi def link slpconfStrings slpconfString
+hi def link slpconfStringsSep slpconfSeparator
+hi def link slpconfAddrsHome slpconfHome
+hi def link slpconfAddressesEq slpconfEq
+hi def link slpconfFQDNs String
+hi def link slpconfHostnumbers Number
+hi def link slpconfAddressesSep slpconfSeparator
+hi def link slpconfStringHome slpconfHome
+hi def link slpconfStringEq slpconfEq
+hi def link slpconfString String
+hi def link slpconfIntegersHome slpconfHome
+hi def link slpconfIntegersEq slpconfEq
+hi def link slpconfIntegers slpconfInteger
+hi def link slpconfIntegersSep slpconfSeparator
+hi def link slpconfHostnumsHome slpconfHome
+hi def link slpconfHostnumsEq slpconfEq
+hi def link slpconfOHostnumbers slpconfHostnumbers
+hi def link slpconfHostnumsSep slpconfSeparator
+hi def link slpconfLocaleHome slpconfHome
+hi def link slpconfLocaleEq slpconfEq
+hi def link slpconfLocale slpconfString
+
+let b:current_syntax = "slpconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/slpreg.vim b/runtime/syntax/slpreg.vim
new file mode 100644
index 0000000..a177b06
--- /dev/null
+++ b/runtime/syntax/slpreg.vim
@@ -0,0 +1,122 @@
+" Vim syntax file
+" Language: RFC 2614 - An API for Service Location registration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword slpregTodo contained TODO FIXME XXX NOTE
+
+syn region slpregComment display oneline start='^[#;]' end='$'
+ \ contains=slpregTodo,@Spell
+
+syn match slpregBegin display '^'
+ \ nextgroup=slpregServiceURL,
+ \ slpregComment
+
+syn match slpregServiceURL contained display 'service:'
+ \ nextgroup=slpregServiceType
+
+syn match slpregServiceType contained display '\a[[:alpha:][:digit:]+-]*\%(\.\a[[:alpha:][:digit:]+-]*\)\=\%(:\a[[:alpha:][:digit:]+-]*\)\='
+ \ nextgroup=slpregServiceSAPCol
+
+syn match slpregServiceSAPCol contained display ':'
+ \ nextgroup=slpregSAP
+
+syn match slpregSAP contained '[^,]\+'
+ \ nextgroup=slpregLangSep
+"syn match slpregSAP contained display '\%(//\%(\%([[:alpha:][:digit:]$-_.~!*\'(),+;&=]*@\)\=\%([[:alnum:]][[:alnum:]-]*[[:alnum:]]\|[[:alnum:]]\.\)*\%(\a[[:alnum:]-]*[[:alnum:]]\|\a\)\%(:\d\+\)\=\)\=\|/at/\%([[:alpha:][:digit:]$-_.~]\|\\\x\x\)\{1,31}:\%([[:alpha:][:digit:]$-_.~]\|\\\x\x\)\{1,31}\%([[:alpha:][:digit:]$-_.~]\|\\\x\x\)\{1,31}\|/ipx/\x\{8}:\x\{12}:\x\{4}\)\%(/\%([[:alpha:][:digit:]$-_.~!*\'()+;?:@&=+]\|\\\x\x\)*\)*\%(;[^()\\!<=>~[:cntrl:]* \t_]\+\%(=[^()\\!<=>~[:cntrl:] ]\+\)\=\)*'
+
+syn match slpregLangSep contained display ','
+ \ nextgroup=slpregLang
+
+syn match slpregLang contained display '\a\{1,8}\%(-\a\{1,8\}\)\='
+ \ nextgroup=slpregLTimeSep
+
+syn match slpregLTimeSep contained display ','
+ \ nextgroup=slpregLTime
+
+syn match slpregLTime contained display '\d\{1,5}'
+ \ nextgroup=slpregType,slpregUNewline
+
+syn match slpregType contained display '\a[[:alpha:][:digit:]+-]*'
+ \ nextgroup=slpregUNewLine
+
+syn match slpregUNewLine contained '\s*\n'
+ \ nextgroup=slpregScopes,slpregAttrList skipnl
+
+syn keyword slpregScopes contained scopes
+ \ nextgroup=slpregScopesEq
+
+syn match slpregScopesEq contained '=' nextgroup=slpregScopeName
+
+syn match slpregScopeName contained '[^(),\\!<=>[:cntrl:];*+ ]\+'
+ \ nextgroup=slpregScopeNameSep,
+ \ slpregScopeNewline
+
+syn match slpregScopeNameSep contained ','
+ \ nextgroup=slpregScopeName
+
+syn match slpregScopeNewline contained '\s*\n'
+ \ nextgroup=slpregAttribute skipnl
+
+syn match slpregAttribute contained '[^(),\\!<=>[:cntrl:]* \t_]\+'
+ \ nextgroup=slpregAttributeEq,
+ \ slpregScopeNewline
+
+syn match slpregAttributeEq contained '='
+ \ nextgroup=@slpregAttrValue
+
+syn cluster slpregAttrValueCon contains=slpregAttribute,slpregAttrValueSep
+
+syn cluster slpregAttrValue contains=slpregAttrIValue,slpregAttrSValue,
+ \ slpregAttrBValue,slpregAttrSSValue
+
+syn match slpregAttrSValue contained display '[^(),\\!<=>~[:cntrl:]]\+'
+ \ nextgroup=@slpregAttrValueCon skipwhite skipnl
+
+syn match slpregAttrSSValue contained display '\\FF\%(\\\x\x\)\+'
+ \ nextgroup=@slpregAttrValueCon skipwhite skipnl
+
+syn match slpregAttrIValue contained display '[-]\=\d\+\>'
+ \ nextgroup=@slpregAttrValueCon skipwhite skipnl
+
+syn keyword slpregAttrBValue contained true false
+ \ nextgroup=@slpregAttrValueCon skipwhite skipnl
+
+syn match slpregAttrValueSep contained display ','
+ \ nextgroup=@slpregAttrValue skipwhite skipnl
+
+hi def link slpregTodo Todo
+hi def link slpregComment Comment
+hi def link slpregServiceURL Type
+hi def link slpregServiceType slpregServiceURL
+hi def link slpregServiceSAPCol slpregServiceURL
+hi def link slpregSAP slpregServiceURL
+hi def link slpregDelimiter Delimiter
+hi def link slpregLangSep slpregDelimiter
+hi def link slpregLang String
+hi def link slpregLTimeSep slpregDelimiter
+hi def link slpregLTime Number
+hi def link slpregType Type
+hi def link slpregScopes Identifier
+hi def link slpregScopesEq Operator
+hi def link slpregScopeName String
+hi def link slpregScopeNameSep slpregDelimiter
+hi def link slpregAttribute Identifier
+hi def link slpregAttributeEq Operator
+hi def link slpregAttrSValue String
+hi def link slpregAttrSSValue slpregAttrSValue
+hi def link slpregAttrIValue Number
+hi def link slpregAttrBValue Boolean
+hi def link slpregAttrValueSep slpregDelimiter
+
+let b:current_syntax = "slpreg"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/slpspi.vim b/runtime/syntax/slpspi.vim
new file mode 100644
index 0000000..eaeb02a
--- /dev/null
+++ b/runtime/syntax/slpspi.vim
@@ -0,0 +1,39 @@
+" Vim syntax file
+" Language: RFC 2614 - An API for Service Location SPI file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword slpspiTodo contained TODO FIXME XXX NOTE
+
+syn region slpspiComment display oneline start='^[#;]' end='$'
+ \ contains=slpspiTodo,@Spell
+
+syn match slpspiBegin display '^'
+ \ nextgroup=slpspiKeyType,
+ \ slpspiComment skipwhite
+
+syn keyword slpspiKeyType contained PRIVATE PUBLIC
+ \ nextgroup=slpspiString skipwhite
+
+syn match slpspiString contained '\S\+'
+ \ nextgroup=slpspiKeyFile skipwhite
+
+syn match slpspiKeyFile contained '\S\+'
+
+hi def link slpspiTodo Todo
+hi def link slpspiComment Comment
+hi def link slpspiKeyType Type
+hi def link slpspiString Identifier
+hi def link slpspiKeyFile String
+
+let b:current_syntax = "slpspi"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/slrnrc.vim b/runtime/syntax/slrnrc.vim
new file mode 100644
index 0000000..cf0734a
--- /dev/null
+++ b/runtime/syntax/slrnrc.vim
@@ -0,0 +1,181 @@
+" Vim syntax file
+" Language: Slrn setup file (based on slrn 0.9.8.1)
+" Maintainer: Preben 'Peppe' Guldberg <peppe-vim@wielders.org>
+" Last Change: 23 April 2006
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn keyword slrnrcTodo contained Todo
+
+" In some places whitespace is illegal
+syn match slrnrcSpaceError contained "\s"
+
+syn match slrnrcNumber contained "-\=\<\d\+\>"
+syn match slrnrcNumber contained +'[^']\+'+
+
+syn match slrnrcSpecKey contained +\(\\[er"']\|\^[^'"]\|\\\o\o\o\)+
+
+syn match slrnrcKey contained "\S\+" contains=slrnrcSpecKey
+syn region slrnrcKey contained start=+"+ skip=+\\"+ end=+"+ oneline contains=slrnrcSpecKey
+syn region slrnrcKey contained start=+'+ skip=+\\'+ end=+'+ oneline contains=slrnrcSpecKey
+
+syn match slrnrcSpecChar contained +'+
+syn match slrnrcSpecChar contained +\\[n"]+
+syn match slrnrcSpecChar contained "%[dfmnrs%]"
+
+syn match slrnrcString contained /[^ \t%"']\+/ contains=slrnrcSpecChar
+syn region slrnrcString contained start=+"+ skip=+\\"+ end=+"+ oneline contains=slrnrcSpecChar
+
+syn match slrnSlangPreCondit "^#\s*ifn\=\(def\>\|false\>\|true\>\|\$\)"
+syn match slrnSlangPreCondit "^#\s*e\(lif\|lse\|ndif\)\>"
+
+syn match slrnrcComment "%.*$" contains=slrnrcTodo
+
+syn keyword slrnrcVarInt contained abort_unmodified_edits article_window_page_overlap auto_mark_article_as_read beep broken_xref broken_xref cc_followup check_new_groups
+syn keyword slrnrcVarInt contained color_by_score confirm_actions custom_sort_by_threads display_cursor_bar drop_bogus_groups editor_uses_mime_charset emphasized_text_mask
+syn keyword slrnrcVarInt contained emphasized_text_mode fold_headers fold_headers followup_strip_signature force_authentication force_authentication generate_date_header
+syn keyword slrnrcVarInt contained generate_email_from generate_email_from generate_message_id grouplens_port hide_pgpsignature hide_quotes hide_signature
+syn keyword slrnrcVarInt contained hide_verbatim_marks hide_verbatim_text highlight_unread_subjects highlight_urls ignore_signature kill_score lines_per_update
+syn keyword slrnrcVarInt contained mail_editor_is_mua max_low_score max_queued_groups min_high_score mouse netiquette_warnings new_subject_breaks_threads no_autosave
+syn keyword slrnrcVarInt contained no_backups prefer_head process_verbatim_marks query_next_article query_next_group query_read_group_cutoff read_active reject_long_lines
+syn keyword slrnrcVarInt contained scroll_by_page show_article show_thread_subject simulate_graphic_chars smart_quote sorting_method spoiler_char spoiler_char
+syn keyword slrnrcVarInt contained spoiler_display_mode spoiler_display_mode spool_check_up_on_nov spool_check_up_on_nov uncollapse_threads unsubscribe_new_groups use_blink
+syn keyword slrnrcVarInt contained use_color use_flow_control use_grouplens use_grouplens use_header_numbers use_inews use_inews use_localtime use_metamail use_mime use_mime
+syn keyword slrnrcVarInt contained use_recommended_msg_id use_slrnpull use_slrnpull use_tilde use_tmpdir use_uudeview use_uudeview warn_followup_to wrap_flags wrap_method
+syn keyword slrnrcVarInt contained write_newsrc_flags
+
+" Listed for removal
+syn keyword slrnrcVarInt contained author_display display_author_realname display_score group_dsc_start_column process_verbatum_marks prompt_next_group query_reconnect
+syn keyword slrnrcVarInt contained show_descriptions use_xgtitle
+
+" Match as a "string" too
+syn region slrnrcVarIntStr contained matchgroup=slrnrcVarInt start=+"+ end=+"+ oneline contains=slrnrcVarInt,slrnrcSpaceError
+
+syn keyword slrnrcVarStr contained Xbrowser art_help_line art_status_line cansecret_file cc_post_string charset custom_headers custom_sort_order decode_directory
+syn keyword slrnrcVarStr contained editor_command failed_posts_file followup_custom_headers followup_date_format followup_string followupto_string group_help_line
+syn keyword slrnrcVarStr contained group_status_line grouplens_host grouplens_pseudoname header_help_line header_status_line hostname inews_program macro_directory
+syn keyword slrnrcVarStr contained mail_editor_command metamail_command mime_charset non_Xbrowser organization overview_date_format post_editor_command post_object
+syn keyword slrnrcVarStr contained postpone_directory printer_name quote_string realname reply_custom_headers reply_string replyto save_directory save_posts save_replies
+syn keyword slrnrcVarStr contained score_editor_command scorefile sendmail_command server_object signature signoff_string spool_active_file spool_activetimes_file
+syn keyword slrnrcVarStr contained spool_inn_root spool_newsgroups_file spool_nov_file spool_nov_root spool_overviewfmt_file spool_root supersedes_custom_headers
+syn keyword slrnrcVarStr contained top_status_line username
+
+" Listed for removal
+syn keyword slrnrcVarStr contained followup cc_followup_string
+
+" Match as a "string" too
+syn region slrnrcVarStrStr contained matchgroup=slrnrcVarStr start=+"+ end=+"+ oneline contains=slrnrcVarStr,slrnrcSpaceError
+
+" Various commands
+syn region slrnrcCmdLine matchgroup=slrnrcCmd start="\<\(autobaud\|color\|compatible_charsets\|group_display_format\|grouplens_add\|header_display_format\|ignore_quotes\|include\|interpret\|mono\|nnrpaccess\|posting_host\|server\|set\|setkey\|strip_re_regexp\|strip_sig_regexp\|strip_was_regexp\|unsetkey\|visible_headers\)\>" end="$" oneline contains=slrnrc\(String\|Comment\)
+
+" Listed for removal
+syn region slrnrcCmdLine matchgroup=slrnrcCmd start="\<\(cc_followup_string\|decode_directory\|editor_command\|followup\|hostname\|organization\|quote_string\|realname\|replyto\|scorefile\|signature\|username\)\>" end="$" oneline contains=slrnrc\(String\|Comment\)
+
+" Setting variables
+syn keyword slrnrcSet contained set
+syn match slrnrcSetStr "^\s*set\s\+\S\+" skipwhite nextgroup=slrnrcString contains=slrnrcSet,slrnrcVarStr\(Str\)\=
+syn match slrnrcSetInt contained "^\s*set\s\+\S\+" contains=slrnrcSet,slrnrcVarInt\(Str\)\=
+syn match slrnrcSetIntLine "^\s*set\s\+\S\+\s\+\(-\=\d\+\>\|'[^']\+'\)" contains=slrnrcSetInt,slrnrcNumber,slrnrcVarInt
+
+" Color definitions
+syn match slrnrcColorObj contained "\<quotes\d\+\>"
+syn keyword slrnrcColorObj contained article author boldtext box cursor date description error frame from_myself group grouplens_display header_name header_number headers
+syn keyword slrnrcColorObj contained high_score italicstext menu menu_press message neg_score normal pgpsignature pos_score quotes response_char selection signature status
+syn keyword slrnrcColorObj contained subject thread_number tilde tree underlinetext unread_subject url verbatim
+
+" Listed for removal
+syn keyword slrnrcColorObj contained verbatum
+
+syn region slrnrcColorObjStr contained matchgroup=slrnrcColorObj start=+"+ end=+"+ oneline contains=slrnrcColorObj,slrnrcSpaceError
+syn keyword slrnrcColorVal contained default
+syn keyword slrnrcColorVal contained black blue brightblue brightcyan brightgreen brightmagenta brightred brown cyan gray green lightgray magenta red white yellow
+syn region slrnrcColorValStr contained matchgroup=slrnrcColorVal start=+"+ end=+"+ oneline contains=slrnrcColorVal,slrnrcSpaceError
+" Mathcing a function with three arguments
+syn keyword slrnrcColor contained color
+syn match slrnrcColorInit contained "^\s*color\s\+\S\+" skipwhite nextgroup=slrnrcColorVal\(Str\)\= contains=slrnrcColor\(Obj\|ObjStr\)\=
+syn match slrnrcColorLine "^\s*color\s\+\S\+\s\+\S\+" skipwhite nextgroup=slrnrcColorVal\(Str\)\= contains=slrnrcColor\(Init\|Val\|ValStr\)
+
+" Mono settings
+syn keyword slrnrcMonoVal contained blink bold none reverse underline
+syn region slrnrcMonoValStr contained matchgroup=slrnrcMonoVal start=+"+ end=+"+ oneline contains=slrnrcMonoVal,slrnrcSpaceError
+" Color object is inherited
+" Mono needs at least one argument
+syn keyword slrnrcMono contained mono
+syn match slrnrcMonoInit contained "^\s*mono\s\+\S\+" contains=slrnrcMono,slrnrcColorObj\(Str\)\=
+syn match slrnrcMonoLine "^\s*mono\s\+\S\+\s\+\S.*" contains=slrnrcMono\(Init\|Val\|ValStr\),slrnrcComment
+
+" Functions in article mode
+syn keyword slrnrcFunArt contained article_bob article_eob article_left article_line_down article_line_up article_page_down article_page_up article_right article_search
+syn keyword slrnrcFunArt contained author_search_backward author_search_forward browse_url cancel catchup catchup_all create_score decode delete delete_thread digit_arg
+syn keyword slrnrcFunArt contained enlarge_article_window evaluate_cmd exchange_mark expunge fast_quit followup forward forward_digest get_children_headers get_parent_header
+syn keyword slrnrcFunArt contained goto_article goto_last_read grouplens_rate_article header_bob header_eob header_line_down header_line_up header_page_down header_page_up
+syn keyword slrnrcFunArt contained help hide_article locate_article mark_spot next next_high_score next_same_subject pipe post post_postponed previous print quit redraw
+syn keyword slrnrcFunArt contained repeat_last_key reply request save show_spoilers shrink_article_window skip_quotes skip_to_next_group skip_to_previous_group
+syn keyword slrnrcFunArt contained subject_search_backward subject_search_forward supersede suspend tag_header toggle_collapse_threads toggle_header_formats
+syn keyword slrnrcFunArt contained toggle_header_tag toggle_headers toggle_pgpsignature toggle_quotes toggle_rot13 toggle_signature toggle_sort toggle_verbatim_marks
+syn keyword slrnrcFunArt contained toggle_verbatim_text uncatchup uncatchup_all undelete untag_headers view_scores wrap_article zoom_article_window
+
+" Listed for removal
+syn keyword slrnrcFunArt contained art_bob art_eob art_xpunge article_linedn article_lineup article_pagedn article_pageup down enlarge_window goto_beginning goto_end left
+syn keyword slrnrcFunArt contained locate_header_by_msgid pagedn pageup pipe_article prev print_article right scroll_dn scroll_up shrink_window skip_to_prev_group
+syn keyword slrnrcFunArt contained toggle_show_author up
+
+" Functions in group mode
+syn keyword slrnrcFunGroup contained add_group bob catchup digit_arg eob evaluate_cmd group_search group_search_backward group_search_forward help line_down line_up move_group
+syn keyword slrnrcFunGroup contained page_down page_up post post_postponed quit redraw refresh_groups repeat_last_key save_newsrc select_group subscribe suspend
+syn keyword slrnrcFunGroup contained toggle_group_formats toggle_hidden toggle_list_all toggle_scoring transpose_groups uncatchup unsubscribe
+
+" Listed for removal
+syn keyword slrnrcFunGroup contained down group_bob group_eob pagedown pageup toggle_group_display uncatch_up up
+
+" Functions in readline mode (actually from slang's slrline.c)
+syn keyword slrnrcFunRead contained bdel bol complete cycle del delbol delbow deleol down enter eol left quoted_insert right self_insert trim up
+
+" Binding keys
+syn keyword slrnrcSetkeyObj contained article group readline
+syn region slrnrcSetkeyObjStr contained matchgroup=slrnrcSetkeyObj start=+"+ end=+"+ oneline contains=slrnrcSetkeyObj
+syn match slrnrcSetkeyArt contained '\("\=\)\<article\>\1\s\+\S\+' skipwhite nextgroup=slrnrcKey contains=slrnrcSetKeyObj\(Str\)\=,slrnrcFunArt
+syn match slrnrcSetkeyGroup contained '\("\=\)\<group\>\1\s\+\S\+' skipwhite nextgroup=slrnrcKey contains=slrnrcSetKeyObj\(Str\)\=,slrnrcFunGroup
+syn match slrnrcSetkeyRead contained '\("\=\)\<readline\>\1\s\+\S\+' skipwhite nextgroup=slrnrcKey contains=slrnrcSetKeyObj\(Str\)\=,slrnrcFunRead
+syn match slrnrcSetkey "^\s*setkey\>" skipwhite nextgroup=slrnrcSetkeyArt,slrnrcSetkeyGroup,slrnrcSetkeyRead
+
+" Unbinding keys
+syn match slrnrcUnsetkey '^\s*unsetkey\s\+\("\)\=\(article\|group\|readline\)\>\1' skipwhite nextgroup=slrnrcKey contains=slrnrcSetkeyObj\(Str\)\=
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link slrnrcTodo Todo
+hi def link slrnrcSpaceError Error
+hi def link slrnrcNumber Number
+hi def link slrnrcSpecKey SpecialChar
+hi def link slrnrcKey String
+hi def link slrnrcSpecChar SpecialChar
+hi def link slrnrcString String
+hi def link slrnSlangPreCondit Special
+hi def link slrnrcComment Comment
+hi def link slrnrcVarInt Identifier
+hi def link slrnrcVarStr Identifier
+hi def link slrnrcCmd slrnrcSet
+hi def link slrnrcSet Operator
+hi def link slrnrcColor Keyword
+hi def link slrnrcColorObj Identifier
+hi def link slrnrcColorVal String
+hi def link slrnrcMono Keyword
+hi def link slrnrcMonoObj Identifier
+hi def link slrnrcMonoVal String
+hi def link slrnrcFunArt Macro
+hi def link slrnrcFunGroup Macro
+hi def link slrnrcFunRead Macro
+hi def link slrnrcSetkeyObj Identifier
+hi def link slrnrcSetkey Keyword
+hi def link slrnrcUnsetkey slrnrcSetkey
+
+
+let b:current_syntax = "slrnrc"
+
+"EOF vim: ts=8 noet tw=120 sw=8 sts=0
diff --git a/runtime/syntax/slrnsc.vim b/runtime/syntax/slrnsc.vim
new file mode 100644
index 0000000..9f51cad
--- /dev/null
+++ b/runtime/syntax/slrnsc.vim
@@ -0,0 +1,68 @@
+" Vim syntax file
+" Language: Slrn score file (based on slrn 0.9.8.0)
+" Maintainer: Preben 'Peppe' Guldberg <peppe@wielders.org>
+" Last Change: 8 Oct 2004
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" characters in newsgroup names
+setlocal isk=@,48-57,.,-,_,+
+
+syn match slrnscComment "%.*$"
+syn match slrnscSectionCom ".].*"lc=2
+
+syn match slrnscGroup contained "\(\k\|\*\)\+"
+syn match slrnscNumber contained "\d\+"
+syn match slrnscDate contained "\(\d\{1,2}[-/]\)\{2}\d\{4}"
+syn match slrnscDelim contained ":"
+syn match slrnscComma contained ","
+syn match slrnscOper contained "\~"
+syn match slrnscEsc contained "\\[ecC<>.]"
+syn match slrnscEsc contained "[?^]"
+syn match slrnscEsc contained "[^\\]$\s*$"lc=1
+
+syn keyword slrnscInclude contained include
+syn match slrnscIncludeLine "^\s*Include\s\+\S.*$"
+
+syn region slrnscSection matchgroup=slrnscSectionStd start="^\s*\[" end='\]' contains=slrnscGroup,slrnscComma,slrnscSectionCom
+syn region slrnscSection matchgroup=slrnscSectionNot start="^\s*\[\~" end='\]' contains=slrnscGroup,slrnscCommas,slrnscSectionCom
+
+syn keyword slrnscItem contained Age Bytes Date Expires From Has-Body Lines Message-Id Newsgroup References Subject Xref
+
+syn match slrnscScoreItem contained "%.*$" skipempty nextgroup=slrnscScoreItem contains=slrnscComment
+syn match slrnscScoreItem contained "^\s*Expires:\s*\(\d\{1,2}[-/]\)\{2}\d\{4}\s*$" skipempty nextgroup=slrnscScoreItem contains=slrnscItem,slrnscDelim,slrnscDate
+syn match slrnscScoreItem contained "^\s*\~\=\(Age\|Bytes\|Has-Body\|Lines\):\s*\d\+\s*$" skipempty nextgroup=slrnscScoreItem contains=slrnscOper,slrnscItem,slrnscDelim,slrnscNumber
+syn match slrnscScoreItemFill contained ".*$" skipempty nextgroup=slrnscScoreItem contains=slrnscEsc
+syn match slrnscScoreItem contained "^\s*\~\=\(Date\|From\|Message-Id\|Newsgroup\|References\|Subject\|Xref\):" nextgroup=slrnscScoreItemFill contains=slrnscOper,slrnscItem,slrnscDelim
+syn region slrnscScoreItem contained matchgroup=Special start="^\s*\~\={::\=" end="^\s*}" skipempty nextgroup=slrnscScoreItem contains=slrnscScoreItem
+
+syn keyword slrnscScore contained Score
+syn match slrnscScoreIdent contained "%.*"
+syn match slrnScoreLine "^\s*Score::\=\s\+=\=[-+]\=\d\+\s*\(%.*\)\=$" skipempty nextgroup=slrnscScoreItem contains=slrnscScore,slrnscDelim,slrnscOper,slrnscNumber,slrnscScoreIdent
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link slrnscComment Comment
+hi def link slrnscSectionCom slrnscComment
+hi def link slrnscGroup String
+hi def link slrnscNumber Number
+hi def link slrnscDate Special
+hi def link slrnscDelim Delimiter
+hi def link slrnscComma SpecialChar
+hi def link slrnscOper SpecialChar
+hi def link slrnscEsc String
+hi def link slrnscSectionStd Type
+hi def link slrnscSectionNot Delimiter
+hi def link slrnscItem Statement
+hi def link slrnscScore Keyword
+hi def link slrnscScoreIdent Identifier
+hi def link slrnscInclude Keyword
+
+
+let b:current_syntax = "slrnsc"
+
+"EOF vim: ts=8 noet tw=200 sw=8 sts=0
diff --git a/runtime/syntax/sm.vim b/runtime/syntax/sm.vim
new file mode 100644
index 0000000..a16575c
--- /dev/null
+++ b/runtime/syntax/sm.vim
@@ -0,0 +1,80 @@
+" Vim syntax file
+" Language: sendmail
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Last Change: Oct 25, 2016
+" Version: 9
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SM
+if exists("b:current_syntax")
+ finish
+endif
+
+" Comments
+syn match smComment "^#.*$" contains=@Spell
+
+" Definitions, Classes, Files, Options, Precedence, Trusted Users, Mailers
+syn match smDefine "^[CDF]."
+syn match smDefine "^O[AaBcdDeFfgHiLmNoQqrSsTtuvxXyYzZ]"
+syn match smDefine "^O\s"he=e-1
+syn match smDefine "^M[a-zA-Z0-9]\+,"he=e-1
+syn match smDefine "^T" nextgroup=smTrusted
+syn match smDefine "^P" nextgroup=smMesg
+syn match smTrusted "\S\+$" contained
+syn match smMesg "\S*="he=e-1 contained nextgroup=smPrecedence
+syn match smPrecedence "-\=[0-9]\+" contained
+
+" Header Format H?list-of-mailer-flags?name: format
+syn match smHeaderSep contained "[?:]"
+syn match smHeader "^H\(?[a-zA-Z]\+?\)\=[-a-zA-Z_]\+:" contains=smHeaderSep
+
+" Variables
+syn match smVar "\$[a-z\.\|]"
+
+" Rulesets
+syn match smRuleset "^S\d*"
+
+" Rewriting Rules
+syn match smRewrite "^R" skipwhite nextgroup=smRewriteLhsToken,smRewriteLhsUser
+
+syn match smRewriteLhsUser contained "[^\t$]\+" skipwhite nextgroup=smRewriteLhsToken,smRewriteLhsSep
+syn match smRewriteLhsToken contained "\(\$[-*+]\|\$[-=][A-Za-z]\|\$Y\)\+" skipwhite nextgroup=smRewriteLhsUser,smRewriteLhsSep
+
+syn match smRewriteLhsSep contained "\t\+" skipwhite nextgroup=smRewriteRhsToken,smRewriteRhsUser
+
+syn match smRewriteRhsUser contained "[^\t$]\+" skipwhite nextgroup=smRewriteRhsToken,smRewriteRhsSep
+syn match smRewriteRhsToken contained "\(\$\d\|\$>\d\|\$#\|\$@\|\$:[-_a-zA-Z]\+\|\$[[\]]\|\$@\|\$:\|\$[A-Za-z]\)\+" skipwhite nextgroup=smRewriteRhsUser,smRewriteRhsSep
+
+syn match smRewriteRhsSep contained "\t\+" skipwhite nextgroup=smRewriteComment,smRewriteRhsSep
+syn match smRewriteRhsSep contained "$"
+
+syn match smRewriteComment contained "[^\t$]*$"
+
+" Clauses
+syn match smClauseError "\$\."
+syn match smElse contained "\$|"
+syn match smClauseCont contained "^\t"
+syn region smClause matchgroup=Delimiter start="\$?." matchgroup=Delimiter end="\$\." contains=smElse,smClause,smVar,smClauseCont
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link smClause Special
+hi def link smClauseError Error
+hi def link smComment Comment
+hi def link smDefine Statement
+hi def link smElse Delimiter
+hi def link smHeader Statement
+hi def link smHeaderSep String
+hi def link smMesg Special
+hi def link smPrecedence Number
+hi def link smRewrite Statement
+hi def link smRewriteComment Comment
+hi def link smRewriteLhsToken String
+hi def link smRewriteLhsUser Statement
+hi def link smRewriteRhsToken String
+hi def link smRuleset Preproc
+hi def link smTrusted Special
+hi def link smVar String
+
+let b:current_syntax = "sm"
+
+" vim: ts=18
diff --git a/runtime/syntax/smarty.vim b/runtime/syntax/smarty.vim
new file mode 100644
index 0000000..a39c290
--- /dev/null
+++ b/runtime/syntax/smarty.vim
@@ -0,0 +1,76 @@
+" Vim syntax file
+" Language: Smarty Templates
+" Maintainer: Manfred Stienstra manfred.stienstra@dwerg.net
+" Last Change: Mon Nov 4 11:42:23 CET 2002
+" Filenames: *.tpl
+" URL: http://www.dwerg.net/projects/vim/smarty.vim
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if !exists("main_syntax")
+ " quit when a syntax file was already loaded
+ if exists("b:current_syntax")
+ finish
+ endif
+ let main_syntax = 'smarty'
+endif
+
+syn case ignore
+
+runtime! syntax/html.vim
+"syn cluster htmlPreproc add=smartyUnZone
+
+syn match smartyBlock contained "[\[\]]"
+
+syn keyword smartyTagName capture config_load include include_php
+syn keyword smartyTagName insert if elseif else ldelim rdelim literal
+syn keyword smartyTagName php section sectionelse foreach foreachelse
+syn keyword smartyTagName strip assign counter cycle debug eval fetch
+syn keyword smartyTagName html_options html_select_date html_select_time
+syn keyword smartyTagName math popup_init popup html_checkboxes html_image
+syn keyword smartyTagName html_radios html_table mailto textformat
+
+syn keyword smartyModifier cat capitalize count_characters count_paragraphs
+syn keyword smartyModifier count_sentences count_words date_format default
+syn keyword smartyModifier escape indent lower nl2br regex_replace replace
+syn keyword smartyModifier spacify string_format strip strip_tags truncate
+syn keyword smartyModifier upper wordwrap
+
+syn keyword smartyInFunc neq eq
+
+syn keyword smartyProperty contained "file="
+syn keyword smartyProperty contained "loop="
+syn keyword smartyProperty contained "name="
+syn keyword smartyProperty contained "include="
+syn keyword smartyProperty contained "skip="
+syn keyword smartyProperty contained "section="
+
+syn keyword smartyConstant "\$smarty"
+
+syn keyword smartyDot .
+
+syn region smartyZone matchgroup=Delimiter start="{" end="}" contains=smartyProperty, smartyString, smartyBlock, smartyTagName, smartyConstant, smartyInFunc, smartyModifier
+
+syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,smartyZone
+syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,smartyZone
+ syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a>"me=e-4 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc,smartyZone
+
+
+
+hi def link smartyTagName Identifier
+hi def link smartyProperty Constant
+" if you want the text inside the braces to be colored, then
+" remove the comment in from of the next statement
+"hi def link smartyZone Include
+hi def link smartyInFunc Function
+hi def link smartyBlock Constant
+hi def link smartyDot SpecialChar
+hi def link smartyModifier Function
+
+let b:current_syntax = "smarty"
+
+if main_syntax == 'smarty'
+ unlet main_syntax
+endif
+
+" vim: ts=8
diff --git a/runtime/syntax/smcl.vim b/runtime/syntax/smcl.vim
new file mode 100644
index 0000000..a5baa47
--- /dev/null
+++ b/runtime/syntax/smcl.vim
@@ -0,0 +1,307 @@
+" smcl.vim -- Vim syntax file for smcl files.
+" Language: SMCL -- Stata Markup and Control Language
+" Maintainer: Jeff Pitblado <jpitblado@stata.com>
+" Last Change: 26apr2006
+" Version: 1.1.2
+
+" Log:
+" 20mar2003 updated the match definition for cmdab
+" 14apr2006 'syntax clear' only under version control
+" check for 'b:current_syntax', removed 'did_smcl_syntax_inits'
+" 26apr2006 changed 'stata_smcl' to 'smcl'
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syntax case match
+
+syn keyword smclCCLword current_date contained
+syn keyword smclCCLword current_time contained
+syn keyword smclCCLword rmsg_time contained
+syn keyword smclCCLword stata_version contained
+syn keyword smclCCLword version contained
+syn keyword smclCCLword born_date contained
+syn keyword smclCCLword flavor contained
+syn keyword smclCCLword SE contained
+syn keyword smclCCLword mode contained
+syn keyword smclCCLword console contained
+syn keyword smclCCLword os contained
+syn keyword smclCCLword osdtl contained
+syn keyword smclCCLword machine_type contained
+syn keyword smclCCLword byteorder contained
+syn keyword smclCCLword sysdir_stata contained
+syn keyword smclCCLword sysdir_updates contained
+syn keyword smclCCLword sysdir_base contained
+syn keyword smclCCLword sysdir_site contained
+syn keyword smclCCLword sysdir_plus contained
+syn keyword smclCCLword sysdir_personal contained
+syn keyword smclCCLword sysdir_oldplace contained
+syn keyword smclCCLword adopath contained
+syn keyword smclCCLword pwd contained
+syn keyword smclCCLword dirsep contained
+syn keyword smclCCLword max_N_theory contained
+syn keyword smclCCLword max_N_current contained
+syn keyword smclCCLword max_k_theory contained
+syn keyword smclCCLword max_k_current contained
+syn keyword smclCCLword max_width_theory contained
+syn keyword smclCCLword max_width_current contained
+syn keyword smclCCLword max_matsize contained
+syn keyword smclCCLword min_matsize contained
+syn keyword smclCCLword max_macrolen contained
+syn keyword smclCCLword macrolen contained
+syn keyword smclCCLword max_cmdlen contained
+syn keyword smclCCLword cmdlen contained
+syn keyword smclCCLword namelen contained
+syn keyword smclCCLword mindouble contained
+syn keyword smclCCLword maxdouble contained
+syn keyword smclCCLword epsdouble contained
+syn keyword smclCCLword minfloat contained
+syn keyword smclCCLword maxfloat contained
+syn keyword smclCCLword epsfloat contained
+syn keyword smclCCLword minlong contained
+syn keyword smclCCLword maxlong contained
+syn keyword smclCCLword minint contained
+syn keyword smclCCLword maxint contained
+syn keyword smclCCLword minbyte contained
+syn keyword smclCCLword maxbyte contained
+syn keyword smclCCLword maxstrvarlen contained
+syn keyword smclCCLword memory contained
+syn keyword smclCCLword maxvar contained
+syn keyword smclCCLword matsize contained
+syn keyword smclCCLword N contained
+syn keyword smclCCLword k contained
+syn keyword smclCCLword width contained
+syn keyword smclCCLword changed contained
+syn keyword smclCCLword filename contained
+syn keyword smclCCLword filedate contained
+syn keyword smclCCLword more contained
+syn keyword smclCCLword rmsg contained
+syn keyword smclCCLword dp contained
+syn keyword smclCCLword linesize contained
+syn keyword smclCCLword pagesize contained
+syn keyword smclCCLword logtype contained
+syn keyword smclCCLword linegap contained
+syn keyword smclCCLword scrollbufsize contained
+syn keyword smclCCLword varlabelpos contained
+syn keyword smclCCLword reventries contained
+syn keyword smclCCLword graphics contained
+syn keyword smclCCLword scheme contained
+syn keyword smclCCLword printcolor contained
+syn keyword smclCCLword adosize contained
+syn keyword smclCCLword maxdb contained
+syn keyword smclCCLword virtual contained
+syn keyword smclCCLword checksum contained
+syn keyword smclCCLword timeout1 contained
+syn keyword smclCCLword timeout2 contained
+syn keyword smclCCLword httpproxy contained
+syn keyword smclCCLword h_current contained
+syn keyword smclCCLword max_matsize contained
+syn keyword smclCCLword min_matsize contained
+syn keyword smclCCLword max_macrolen contained
+syn keyword smclCCLword macrolen contained
+syn keyword smclCCLword max_cmdlen contained
+syn keyword smclCCLword cmdlen contained
+syn keyword smclCCLword namelen contained
+syn keyword smclCCLword mindouble contained
+syn keyword smclCCLword maxdouble contained
+syn keyword smclCCLword epsdouble contained
+syn keyword smclCCLword minfloat contained
+syn keyword smclCCLword maxfloat contained
+syn keyword smclCCLword epsfloat contained
+syn keyword smclCCLword minlong contained
+syn keyword smclCCLword maxlong contained
+syn keyword smclCCLword minint contained
+syn keyword smclCCLword maxint contained
+syn keyword smclCCLword minbyte contained
+syn keyword smclCCLword maxbyte contained
+syn keyword smclCCLword maxstrvarlen contained
+syn keyword smclCCLword memory contained
+syn keyword smclCCLword maxvar contained
+syn keyword smclCCLword matsize contained
+syn keyword smclCCLword N contained
+syn keyword smclCCLword k contained
+syn keyword smclCCLword width contained
+syn keyword smclCCLword changed contained
+syn keyword smclCCLword filename contained
+syn keyword smclCCLword filedate contained
+syn keyword smclCCLword more contained
+syn keyword smclCCLword rmsg contained
+syn keyword smclCCLword dp contained
+syn keyword smclCCLword linesize contained
+syn keyword smclCCLword pagesize contained
+syn keyword smclCCLword logtype contained
+syn keyword smclCCLword linegap contained
+syn keyword smclCCLword scrollbufsize contained
+syn keyword smclCCLword varlabelpos contained
+syn keyword smclCCLword reventries contained
+syn keyword smclCCLword graphics contained
+syn keyword smclCCLword scheme contained
+syn keyword smclCCLword printcolor contained
+syn keyword smclCCLword adosize contained
+syn keyword smclCCLword maxdb contained
+syn keyword smclCCLword virtual contained
+syn keyword smclCCLword checksum contained
+syn keyword smclCCLword timeout1 contained
+syn keyword smclCCLword timeout2 contained
+syn keyword smclCCLword httpproxy contained
+syn keyword smclCCLword httpproxyhost contained
+syn keyword smclCCLword httpproxyport contained
+syn keyword smclCCLword httpproxyauth contained
+syn keyword smclCCLword httpproxyuser contained
+syn keyword smclCCLword httpproxypw contained
+syn keyword smclCCLword trace contained
+syn keyword smclCCLword tracedepth contained
+syn keyword smclCCLword tracesep contained
+syn keyword smclCCLword traceindent contained
+syn keyword smclCCLword traceexapnd contained
+syn keyword smclCCLword tracenumber contained
+syn keyword smclCCLword type contained
+syn keyword smclCCLword level contained
+syn keyword smclCCLword seed contained
+syn keyword smclCCLword searchdefault contained
+syn keyword smclCCLword pi contained
+syn keyword smclCCLword rc contained
+
+" Directive for the contant and current-value class
+syn region smclCCL start=/{ccl / end=/}/ oneline contains=smclCCLword
+
+" The order of the following syntax definitions is roughly that of the on-line
+" documentation for smcl in Stata, from within Stata see help smcl.
+
+" Format directives for line and paragraph modes
+syn match smclFormat /{smcl}/
+syn match smclFormat /{sf\(\|:[^}]\+\)}/
+syn match smclFormat /{it\(\|:[^}]\+\)}/
+syn match smclFormat /{bf\(\|:[^}]\+\)}/
+syn match smclFormat /{inp\(\|:[^}]\+\)}/
+syn match smclFormat /{input\(\|:[^}]\+\)}/
+syn match smclFormat /{err\(\|:[^}]\+\)}/
+syn match smclFormat /{error\(\|:[^}]\+\)}/
+syn match smclFormat /{res\(\|:[^}]\+\)}/
+syn match smclFormat /{result\(\|:[^}]\+\)}/
+syn match smclFormat /{txt\(\|:[^}]\+\)}/
+syn match smclFormat /{text\(\|:[^}]\+\)}/
+syn match smclFormat /{com\(\|:[^}]\+\)}/
+syn match smclFormat /{cmd\(\|:[^}]\+\)}/
+syn match smclFormat /{cmdab:[^:}]\+:[^:}()]*\(\|:\|:(\|:()\)}/
+syn match smclFormat /{hi\(\|:[^}]\+\)}/
+syn match smclFormat /{hilite\(\|:[^}]\+\)}/
+syn match smclFormat /{ul \(on\|off\)}/
+syn match smclFormat /{ul:[^}]\+}/
+syn match smclFormat /{hline\(\| \d\+\| -\d\+\|:[^}]\+\)}/
+syn match smclFormat /{dup \d\+:[^}]\+}/
+syn match smclFormat /{c [^}]\+}/
+syn match smclFormat /{char [^}]\+}/
+syn match smclFormat /{reset}/
+
+" Formatting directives for line mode
+syn match smclFormat /{title:[^}]\+}/
+syn match smclFormat /{center:[^}]\+}/
+syn match smclFormat /{centre:[^}]\+}/
+syn match smclFormat /{center \d\+:[^}]\+}/
+syn match smclFormat /{centre \d\+:[^}]\+}/
+syn match smclFormat /{right:[^}]\+}/
+syn match smclFormat /{lalign \d\+:[^}]\+}/
+syn match smclFormat /{ralign \d\+:[^}]\+}/
+syn match smclFormat /{\.\.\.}/
+syn match smclFormat /{col \d\+}/
+syn match smclFormat /{space \d\+}/
+syn match smclFormat /{tab}/
+
+" Formatting directives for paragraph mode
+syn match smclFormat /{bind:[^}]\+}/
+syn match smclFormat /{break}/
+
+syn match smclFormat /{p}/
+syn match smclFormat /{p \d\+}/
+syn match smclFormat /{p \d\+ \d\+}/
+syn match smclFormat /{p \d\+ \d\+ \d\+}/
+syn match smclFormat /{pstd}/
+syn match smclFormat /{psee}/
+syn match smclFormat /{phang\(\|2\|3\)}/
+syn match smclFormat /{pmore\(\|2\|3\)}/
+syn match smclFormat /{pin\(\|2\|3\)}/
+syn match smclFormat /{p_end}/
+
+syn match smclFormat /{opt \w\+\(\|:\w\+\)\(\|([^)}]*)\)}/
+
+syn match smclFormat /{opth \w*\(\|:\w\+\)(\w*)}/
+syn match smclFormat /{opth "\w\+\((\w\+:[^)}]\+)\)"}/
+syn match smclFormat /{opth \w\+:\w\+(\w\+:[^)}]\+)}/
+
+syn match smclFormat /{dlgtab\s*\(\|\d\+\|\d\+\s\+\d\+\):[^}]\+}/
+
+syn match smclFormat /{p2colset\s\+\d\+\s\+\d\+\s\+\d\+\s\+\d\+}/
+syn match smclFormat /{p2col\s\+:[^{}]*}.*{p_end}/
+syn match smclFormat /{p2col\s\+:{[^{}]*}}.*{p_end}/
+syn match smclFormat /{p2coldent\s*:[^{}]*}.*{p_end}/
+syn match smclFormat /{p2coldent\s*:{[^{}]*}}.*{p_end}/
+syn match smclFormat /{p2line\s*\(\|\d\+\s\+\d\+\)}/
+syn match smclFormat /{p2colreset}/
+
+syn match smclFormat /{synoptset\s\+\d\+\s\+\w\+}/
+syn match smclFormat /{synopt\s*:[^{}]*}.*{p_end}/
+syn match smclFormat /{synopt\s*:{[^{}]*}}.*{p_end}/
+syn match smclFormat /{syntab\s*:[^{}]*}/
+syn match smclFormat /{synopthdr}/
+syn match smclFormat /{synoptline}/
+
+" Link directive for line and paragraph modes
+syn match smclLink /{help [^}]\+}/
+syn match smclLink /{helpb [^}]\+}/
+syn match smclLink /{help_d:[^}]\+}/
+syn match smclLink /{search [^}]\+}/
+syn match smclLink /{search_d:[^}]\+}/
+syn match smclLink /{browse [^}]\+}/
+syn match smclLink /{view [^}]\+}/
+syn match smclLink /{view_d:[^}]\+}/
+syn match smclLink /{news:[^}]\+}/
+syn match smclLink /{net [^}]\+}/
+syn match smclLink /{net_d:[^}]\+}/
+syn match smclLink /{netfrom_d:[^}]\+}/
+syn match smclLink /{ado [^}]\+}/
+syn match smclLink /{ado_d:[^}]\+}/
+syn match smclLink /{update [^}]\+}/
+syn match smclLink /{update_d:[^}]\+}/
+syn match smclLink /{dialog [^}]\+}/
+syn match smclLink /{back:[^}]\+}/
+syn match smclLink /{clearmore:[^}]\+}/
+syn match smclLink /{stata [^}]\+}/
+
+syn match smclLink /{newvar\(\|:[^}]\+\)}/
+syn match smclLink /{var\(\|:[^}]\+\)}/
+syn match smclLink /{varname\(\|:[^}]\+\)}/
+syn match smclLink /{vars\(\|:[^}]\+\)}/
+syn match smclLink /{varlist\(\|:[^}]\+\)}/
+syn match smclLink /{depvar\(\|:[^}]\+\)}/
+syn match smclLink /{depvars\(\|:[^}]\+\)}/
+syn match smclLink /{depvarlist\(\|:[^}]\+\)}/
+syn match smclLink /{indepvars\(\|:[^}]\+\)}/
+
+syn match smclLink /{dtype}/
+syn match smclLink /{ifin}/
+syn match smclLink /{weight}/
+
+" Comment
+syn region smclComment start=/{\*/ end=/}/ oneline
+
+" Strings
+syn region smclString matchgroup=Nothing start=/"/ end=/"/ oneline
+syn region smclEString matchgroup=Nothing start=/`"/ end=/"'/ oneline contains=smclEString
+
+" assign highlight groups
+
+hi def link smclEString smclString
+
+hi def link smclCCLword Statement
+hi def link smclCCL Type
+hi def link smclFormat Statement
+hi def link smclLink Underlined
+hi def link smclComment Comment
+hi def link smclString String
+
+let b:current_syntax = "smcl"
+
+" vim: ts=8
diff --git a/runtime/syntax/smil.vim b/runtime/syntax/smil.vim
new file mode 100644
index 0000000..4cf6e84
--- /dev/null
+++ b/runtime/syntax/smil.vim
@@ -0,0 +1,146 @@
+" Vim syntax file
+" Language: SMIL (Synchronized Multimedia Integration Language)
+" Maintainer: Herve Foucher <Herve.Foucher@helio.org>
+" URL: http://www.helio.org/vim/syntax/smil.vim
+" Last Change: 2012 Feb 03 by Thilo Six
+
+" To learn more about SMIL, please refer to http://www.w3.org/AudioVideo/
+" and to http://www.helio.org/products/smil/tutorial/
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" SMIL is case sensitive
+syn case match
+
+" illegal characters
+syn match smilError "[<>&]"
+syn match smilError "[()&]"
+
+if !exists("main_syntax")
+ let main_syntax = 'smil'
+endif
+
+" tags
+syn match smilSpecial contained "\\\d\d\d\|\\."
+syn match smilSpecial contained "("
+syn match smilSpecial contained "id("
+syn match smilSpecial contained ")"
+syn keyword smilSpecial contained remove freeze true false on off overdub caption new pause replace
+syn keyword smilSpecial contained first last
+syn keyword smilSpecial contained fill meet slice scroll hidden
+syn region smilString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=smilSpecial
+syn region smilString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=smilSpecial
+syn match smilValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1
+syn region smilEndTag start=+</+ end=+>+ contains=smilTagN,smilTagError
+syn region smilTag start=+<[^/]+ end=+>+ contains=smilTagN,smilString,smilArg,smilValue,smilTagError,smilEvent,smilCssDefinition
+syn match smilTagN contained +<\s*[-a-zA-Z0-9]\++ms=s+1 contains=smilTagName,smilSpecialTagName
+syn match smilTagN contained +</\s*[-a-zA-Z0-9]\++ms=s+2 contains=smilTagName,smilSpecialTagName
+syn match smilTagError contained "[^>]<"ms=s+1
+
+" tag names
+syn keyword smilTagName contained smil head body anchor a switch region layout meta
+syn match smilTagName contained "root-layout"
+syn keyword smilTagName contained par seq
+syn keyword smilTagName contained animation video img audio ref text textstream
+syn match smilTagName contained "\<\(head\|body\)\>"
+
+
+" legal arg names
+syn keyword smilArg contained dur begin end href target id coords show title abstract author copyright alt
+syn keyword smilArg contained left top width height fit src name content fill longdesc repeat type
+syn match smilArg contained "z-index"
+syn match smilArg contained " end-sync"
+syn match smilArg contained " region"
+syn match smilArg contained "background-color"
+syn match smilArg contained "system-bitrate"
+syn match smilArg contained "system-captions"
+syn match smilArg contained "system-overdub-or-caption"
+syn match smilArg contained "system-language"
+syn match smilArg contained "system-required"
+syn match smilArg contained "system-screen-depth"
+syn match smilArg contained "system-screen-size"
+syn match smilArg contained "clip-begin"
+syn match smilArg contained "clip-end"
+syn match smilArg contained "skip-content"
+
+
+" SMIL Boston ext.
+" This are new SMIL functionnalities seen on www.w3.org on August 3rd 1999
+
+" Animation
+syn keyword smilTagName contained animate set move
+syn keyword smilArg contained calcMode from to by additive values origin path
+syn keyword smilArg contained accumulate hold attribute
+syn match smilArg contained "xml:link"
+syn keyword smilSpecial contained discrete linear spline parent layout
+syn keyword smilSpecial contained top left simple
+
+" Linking
+syn keyword smilTagName contained area
+syn keyword smilArg contained actuate behavior inline sourceVolume
+syn keyword smilArg contained destinationVolume destinationPlaystate tabindex
+syn keyword smilArg contained class style lang dir onclick ondblclick onmousedown onmouseup onmouseover onmousemove onmouseout onkeypress onkeydown onkeyup shape nohref accesskey onfocus onblur
+syn keyword smilSpecial contained play pause stop rect circ poly child par seq
+
+" Media Object
+syn keyword smilTagName contained rtpmap
+syn keyword smilArg contained port transport encoding payload clipBegin clipEnd
+syn match smilArg contained "fmt-list"
+
+" Timing and Synchronization
+syn keyword smilTagName contained excl
+syn keyword smilArg contained beginEvent endEvent eventRestart endSync repeatCount repeatDur
+syn keyword smilArg contained syncBehavior syncTolerance
+syn keyword smilSpecial contained canSlip locked
+
+" special characters
+syn match smilSpecialChar "&[^;]*;"
+
+if exists("smil_wrong_comments")
+ syn region smilComment start=+<!--+ end=+-->+
+else
+ syn region smilComment start=+<!+ end=+>+ contains=smilCommentPart,smilCommentError
+ syn match smilCommentError contained "[^><!]"
+ syn region smilCommentPart contained start=+--+ end=+--+
+endif
+syn region smilComment start=+<!DOCTYPE+ keepend end=+>+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link smilTag Function
+hi def link smilEndTag Identifier
+hi def link smilArg Type
+hi def link smilTagName smilStatement
+hi def link smilSpecialTagName Exception
+hi def link smilValue Value
+hi def link smilSpecialChar Special
+
+hi def link smilSpecial Special
+hi def link smilSpecialChar Special
+hi def link smilString String
+hi def link smilStatement Statement
+hi def link smilComment Comment
+hi def link smilCommentPart Comment
+hi def link smilPreProc PreProc
+hi def link smilValue String
+hi def link smilCommentError smilError
+hi def link smilTagError smilError
+hi def link smilError Error
+
+
+let b:current_syntax = "smil"
+
+if main_syntax == 'smil'
+ unlet main_syntax
+endif
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/smith.vim b/runtime/syntax/smith.vim
new file mode 100644
index 0000000..b045d3b
--- /dev/null
+++ b/runtime/syntax/smith.vim
@@ -0,0 +1,39 @@
+" Vim syntax file
+" Language: SMITH
+" Maintainer: Rafal M. Sulejman <rms@poczta.onet.pl>
+" Last Change: 21.07.2000
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+
+syn match smithComment ";.*$"
+
+syn match smithNumber "\<[+-]*[0-9]\d*\>"
+
+syn match smithRegister "R[\[]*[0-9]*[\]]*"
+
+syn match smithKeyword "COR\|MOV\|MUL\|NOT\|STOP\|SUB\|NOP\|BLA\|REP"
+
+syn region smithString start=+"+ skip=+\\\\\|\\"+ end=+"+
+
+
+syn case match
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link smithRegister Identifier
+hi def link smithKeyword Keyword
+hi def link smithComment Comment
+hi def link smithString String
+hi def link smithNumber Number
+
+
+let b:current_syntax = "smith"
+
+" vim: ts=2
diff --git a/runtime/syntax/sml.vim b/runtime/syntax/sml.vim
new file mode 100644
index 0000000..8f1af3f
--- /dev/null
+++ b/runtime/syntax/sml.vim
@@ -0,0 +1,220 @@
+" Vim syntax file
+" Language: SML
+" Filenames: *.sml *.sig
+" Maintainer: Markus Mottl <markus.mottl@gmail.com>
+" Previous Maintainer: Fabrizio Zeno Cornelli
+" <zeno@filibusta.crema.unimi.it> (invalid)
+" Last Change: 2022 Apr 01
+" 2015 Aug 31 - Fixed opening of modules (Ramana Kumar)
+" 2006 Oct 23 - Fixed character highlighting bug (MM)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Disable spell checking of syntax.
+syn spell notoplevel
+
+" SML is case sensitive.
+syn case match
+
+" lowercase identifier - the standard way to match
+syn match smlLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/
+
+syn match smlKeyChar "|"
+
+" Errors
+syn match smlBraceErr "}"
+syn match smlBrackErr "\]"
+syn match smlParenErr ")"
+syn match smlCommentErr "\*)"
+syn match smlThenErr "\<then\>"
+
+" Error-highlighting of "end" without synchronization:
+" as keyword or as error (default)
+if exists("sml_noend_error")
+ syn match smlKeyword "\<end\>"
+else
+ syn match smlEndErr "\<end\>"
+endif
+
+" Some convenient clusters
+syn cluster smlAllErrs contains=smlBraceErr,smlBrackErr,smlParenErr,smlCommentErr,smlEndErr,smlThenErr
+
+syn cluster smlAENoParen contains=smlBraceErr,smlBrackErr,smlCommentErr,smlEndErr,smlThenErr
+
+syn cluster smlContained contains=smlTodo,smlPreDef,smlModParam,smlModParam1,smlPreMPRestr,smlMPRestr,smlMPRestr1,smlMPRestr2,smlMPRestr3,smlModRHS,smlFuncWith,smlFuncStruct,smlModTypeRestr,smlModTRWith,smlWith,smlWithRest,smlModType,smlFullMod
+
+
+" Enclosing delimiters
+syn region smlEncl transparent matchgroup=smlKeyword start="(" matchgroup=smlKeyword end=")" contains=ALLBUT,@smlContained,smlParenErr
+syn region smlEncl transparent matchgroup=smlKeyword start="{" matchgroup=smlKeyword end="}" contains=ALLBUT,@smlContained,smlBraceErr
+syn region smlEncl transparent matchgroup=smlKeyword start="\[" matchgroup=smlKeyword end="\]" contains=ALLBUT,@smlContained,smlBrackErr
+syn region smlEncl transparent matchgroup=smlKeyword start="#\[" matchgroup=smlKeyword end="\]" contains=ALLBUT,@smlContained,smlBrackErr
+
+
+" Comments
+syn region smlComment start="(\*" end="\*)" contains=smlComment,smlTodo,@Spell
+syn keyword smlTodo contained TODO FIXME XXX
+
+
+" let
+syn region smlEnd matchgroup=smlKeyword start="\<let\>" matchgroup=smlKeyword end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr
+
+" local
+syn region smlEnd matchgroup=smlKeyword start="\<local\>" matchgroup=smlKeyword end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr
+
+" abstype
+syn region smlNone matchgroup=smlKeyword start="\<abstype\>" matchgroup=smlKeyword end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr
+
+" begin
+syn region smlEnd matchgroup=smlKeyword start="\<begin\>" matchgroup=smlKeyword end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr
+
+" if
+syn region smlNone matchgroup=smlKeyword start="\<if\>" matchgroup=smlKeyword end="\<then\>" contains=ALLBUT,@smlContained,smlThenErr
+
+
+"" Modules
+
+" "struct"
+syn region smlStruct matchgroup=smlModule start="\<struct\>" matchgroup=smlModule end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr
+
+" "sig"
+syn region smlSig matchgroup=smlModule start="\<sig\>" matchgroup=smlModule end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr,smlModule
+syn region smlModSpec matchgroup=smlKeyword start="\<structure\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contained contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlModTRWith,smlMPRestr
+
+" "open"
+syn region smlNone matchgroup=smlKeyword start="\<open\>" matchgroup=smlModule end="\<\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*\>" contains=@smlAllErrs,smlComment
+
+" "structure" - somewhat complicated stuff ;-)
+syn region smlModule matchgroup=smlKeyword start="\<\(structure\|functor\)\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlPreDef
+syn region smlPreDef start="."me=e-1 matchgroup=smlKeyword end="\l\|="me=e-1 contained contains=@smlAllErrs,smlComment,smlModParam,smlModTypeRestr,smlModTRWith nextgroup=smlModPreRHS
+syn region smlModParam start="([^*]" end=")" contained contains=@smlAENoParen,smlModParam1
+syn match smlModParam1 "\<\u\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=smlPreMPRestr
+
+syn region smlPreMPRestr start="."me=e-1 end=")"me=e-1 contained contains=@smlAllErrs,smlComment,smlMPRestr,smlModTypeRestr
+
+syn region smlMPRestr start=":" end="."me=e-1 contained contains=@smlComment skipwhite skipempty nextgroup=smlMPRestr1,smlMPRestr2,smlMPRestr3
+syn region smlMPRestr1 matchgroup=smlModule start="\ssig\s\=" matchgroup=smlModule end="\<end\>" contained contains=ALLBUT,@smlContained,smlEndErr,smlModule
+syn region smlMPRestr2 start="\sfunctor\(\s\|(\)\="me=e-1 matchgroup=smlKeyword end="->" contained contains=@smlAllErrs,smlComment,smlModParam skipwhite skipempty nextgroup=smlFuncWith
+syn match smlMPRestr3 "\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*" contained
+syn match smlModPreRHS "=" contained skipwhite skipempty nextgroup=smlModParam,smlFullMod
+syn region smlModRHS start="." end=".\w\|([^*]"me=e-2 contained contains=smlComment skipwhite skipempty nextgroup=smlModParam,smlFullMod
+syn match smlFullMod "\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*" contained skipwhite skipempty nextgroup=smlFuncWith
+
+syn region smlFuncWith start="([^*]"me=e-1 end=")" contained contains=smlComment,smlWith,smlFuncStruct
+syn region smlFuncStruct matchgroup=smlModule start="[^a-zA-Z]struct\>"hs=s+1 matchgroup=smlModule end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr
+
+syn match smlModTypeRestr "\<\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*\>" contained
+syn region smlModTRWith start=":\s*("hs=s+1 end=")" contained contains=@smlAENoParen,smlWith
+syn match smlWith "\<\(\u\(\w\|'\)*\.\)*\w\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=smlWithRest
+syn region smlWithRest start="[^)]" end=")"me=e-1 contained contains=ALLBUT,@smlContained
+
+" "signature"
+syn region smlKeyword start="\<signature\>" matchgroup=smlModule end="\<\w\(\w\|'\)*\>" contains=smlComment skipwhite skipempty nextgroup=smlMTDef
+syn match smlMTDef "=\s*\w\(\w\|'\)*\>"hs=s+1,me=s
+
+syn keyword smlKeyword and andalso case
+syn keyword smlKeyword datatype else eqtype
+syn keyword smlKeyword exception fn fun handle
+syn keyword smlKeyword in infix infixl infixr
+syn keyword smlKeyword match nonfix of orelse
+syn keyword smlKeyword raise handle type
+syn keyword smlKeyword val where while with withtype
+
+syn keyword smlType bool char exn int list option
+syn keyword smlType real string unit
+
+syn keyword smlOperator div mod not or quot rem
+
+syn keyword smlBoolean true false
+syn match smlConstructor "(\s*)"
+syn match smlConstructor "\[\s*\]"
+syn match smlConstructor "#\[\s*\]"
+syn match smlConstructor "\u\(\w\|'\)*\>"
+
+" Module prefix
+syn match smlModPath "\u\(\w\|'\)*\."he=e-1
+
+syn match smlCharacter +#"\\""\|#"."\|#"\\\d\d\d"+
+syn match smlCharErr +#"\\\d\d"\|#"\\\d"+
+syn region smlString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
+
+syn match smlFunDef "=>"
+syn match smlRefAssign ":="
+syn match smlTopStop ";;"
+syn match smlOperator "\^"
+syn match smlOperator "::"
+syn match smlAnyVar "\<_\>"
+syn match smlKeyChar "!"
+syn match smlKeyChar ";"
+syn match smlKeyChar "\*"
+syn match smlKeyChar "="
+
+syn match smlNumber "\<-\=\d\+\>"
+syn match smlNumber "\<-\=0[x|X]\x\+\>"
+syn match smlReal "\<-\=\d\+\.\d*\([eE][-+]\=\d\+\)\=[fl]\=\>"
+
+" Synchronization
+syn sync minlines=20
+syn sync maxlines=500
+
+syn sync match smlEndSync grouphere smlEnd "\<begin\>"
+syn sync match smlEndSync groupthere smlEnd "\<end\>"
+syn sync match smlStructSync grouphere smlStruct "\<struct\>"
+syn sync match smlStructSync groupthere smlStruct "\<end\>"
+syn sync match smlSigSync grouphere smlSig "\<sig\>"
+syn sync match smlSigSync groupthere smlSig "\<end\>"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link smlBraceErr Error
+hi def link smlBrackErr Error
+hi def link smlParenErr Error
+
+hi def link smlCommentErr Error
+
+hi def link smlEndErr Error
+hi def link smlThenErr Error
+
+hi def link smlCharErr Error
+
+hi def link smlComment Comment
+
+hi def link smlModPath Include
+hi def link smlModule Include
+hi def link smlModParam1 Include
+hi def link smlModType Include
+hi def link smlMPRestr3 Include
+hi def link smlFullMod Include
+hi def link smlModTypeRestr Include
+hi def link smlWith Include
+hi def link smlMTDef Include
+
+hi def link smlConstructor Constant
+
+hi def link smlModPreRHS Keyword
+hi def link smlMPRestr2 Keyword
+hi def link smlKeyword Keyword
+hi def link smlFunDef Keyword
+hi def link smlRefAssign Keyword
+hi def link smlKeyChar Keyword
+hi def link smlAnyVar Keyword
+hi def link smlTopStop Keyword
+hi def link smlOperator Keyword
+
+hi def link smlBoolean Boolean
+hi def link smlCharacter Character
+hi def link smlNumber Number
+hi def link smlReal Float
+hi def link smlString String
+hi def link smlType Type
+hi def link smlTodo Todo
+hi def link smlEncl Keyword
+
+
+let b:current_syntax = "sml"
+
+" vim: ts=8
diff --git a/runtime/syntax/snnsnet.vim b/runtime/syntax/snnsnet.vim
new file mode 100644
index 0000000..9dc9e06
--- /dev/null
+++ b/runtime/syntax/snnsnet.vim
@@ -0,0 +1,67 @@
+" Vim syntax file
+" Language: SNNS network file
+" Maintainer: Davide Alberani <alberanid@bigfoot.com>
+" Last Change: 28 Apr 2001
+" Version: 0.2
+" URL: http://digilander.iol.it/alberanid/vim/syntax/snnsnet.vim
+"
+" SNNS http://www-ra.informatik.uni-tuebingen.de/SNNS/
+" is a simulator for neural networks.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match snnsnetTitle "no\."
+syn match snnsnetTitle "type name"
+syn match snnsnetTitle "unit name"
+syn match snnsnetTitle "act\( func\)\="
+syn match snnsnetTitle "out func"
+syn match snnsnetTitle "site\( name\)\="
+syn match snnsnetTitle "site function"
+syn match snnsnetTitle "source:weight"
+syn match snnsnetTitle "unitNo\."
+syn match snnsnetTitle "delta x"
+syn match snnsnetTitle "delta y"
+syn keyword snnsnetTitle typeName unitName bias st position subnet layer sites name target z LLN LUN Toff Soff Ctype
+
+syn match snnsnetType "SNNS network definition file [Vv]\d.\d.*" contains=snnsnetNumbers
+syn match snnsnetType "generated at.*" contains=snnsnetNumbers
+syn match snnsnetType "network name\s*:"
+syn match snnsnetType "source files\s*:"
+syn match snnsnetType "no\. of units\s*:.*" contains=snnsnetNumbers
+syn match snnsnetType "no\. of connections\s*:.*" contains=snnsnetNumbers
+syn match snnsnetType "no\. of unit types\s*:.*" contains=snnsnetNumbers
+syn match snnsnetType "no\. of site types\s*:.*" contains=snnsnetNumbers
+syn match snnsnetType "learning function\s*:"
+syn match snnsnetType "pruning function\s*:"
+syn match snnsnetType "subordinate learning function\s*:"
+syn match snnsnetType "update function\s*:"
+
+syn match snnsnetSection "unit definition section"
+syn match snnsnetSection "unit default section"
+syn match snnsnetSection "site definition section"
+syn match snnsnetSection "type definition section"
+syn match snnsnetSection "connection definition section"
+syn match snnsnetSection "layer definition section"
+syn match snnsnetSection "subnet definition section"
+syn match snnsnetSection "3D translation section"
+syn match snnsnetSection "time delay section"
+
+syn match snnsnetNumbers "\d" contained
+syn match snnsnetComment "#.*$" contains=snnsnetTodo
+syn keyword snnsnetTodo TODO XXX FIXME contained
+
+
+hi def link snnsnetType Type
+hi def link snnsnetComment Comment
+hi def link snnsnetNumbers Number
+hi def link snnsnetSection Statement
+hi def link snnsnetTitle Label
+hi def link snnsnetTodo Todo
+
+
+let b:current_syntax = "snnsnet"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/snnspat.vim b/runtime/syntax/snnspat.vim
new file mode 100644
index 0000000..cb6e9c5
--- /dev/null
+++ b/runtime/syntax/snnspat.vim
@@ -0,0 +1,62 @@
+" Vim syntax file
+" Language: SNNS pattern file
+" Maintainer: Davide Alberani <alberanid@bigfoot.com>
+" Last Change: 2012 Feb 03 by Thilo Six
+" Version: 0.2
+" URL: http://digilander.iol.it/alberanid/vim/syntax/snnspat.vim
+"
+" SNNS http://www-ra.informatik.uni-tuebingen.de/SNNS/
+" is a simulator for neural networks.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" anything that isn't part of the header, a comment or a number
+" is wrong
+syn match snnspatError ".*"
+" hoping that matches any kind of notation...
+syn match snnspatAccepted "\([-+]\=\(\d\+\.\|\.\)\=\d\+\([Ee][-+]\=\d\+\)\=\)"
+syn match snnspatAccepted "\s"
+syn match snnspatBrac "\[\s*\d\+\(\s\|\d\)*\]" contains=snnspatNumbers
+
+" the accepted fields in the header
+syn match snnspatNoHeader "No\. of patterns\s*:\s*" contained
+syn match snnspatNoHeader "No\. of input units\s*:\s*" contained
+syn match snnspatNoHeader "No\. of output units\s*:\s*" contained
+syn match snnspatNoHeader "No\. of variable input dimensions\s*:\s*" contained
+syn match snnspatNoHeader "No\. of variable output dimensions\s*:\s*" contained
+syn match snnspatNoHeader "Maximum input dimensions\s*:\s*" contained
+syn match snnspatNoHeader "Maximum output dimensions\s*:\s*" contained
+syn match snnspatGen "generated at.*" contained contains=snnspatNumbers
+syn match snnspatGen "SNNS pattern definition file [Vv]\d\.\d" contained contains=snnspatNumbers
+
+" the header, what is not an accepted field, is an error
+syn region snnspatHeader start="^SNNS" end="^\s*[-+\.]\=[0-9#]"me=e-2 contains=snnspatNoHeader,snnspatNumbers,snnspatGen,snnspatBrac
+
+" numbers inside the header
+syn match snnspatNumbers "\d" contained
+syn match snnspatComment "#.*$" contains=snnspatTodo
+syn keyword snnspatTodo TODO XXX FIXME contained
+
+
+hi def link snnspatGen Statement
+hi def link snnspatHeader Error
+hi def link snnspatNoHeader Define
+hi def link snnspatNumbers Number
+hi def link snnspatComment Comment
+hi def link snnspatError Error
+hi def link snnspatTodo Todo
+hi def link snnspatAccepted NONE
+hi def link snnspatBrac NONE
+
+
+let b:current_syntax = "snnspat"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/snnsres.vim b/runtime/syntax/snnsres.vim
new file mode 100644
index 0000000..2f19b67
--- /dev/null
+++ b/runtime/syntax/snnsres.vim
@@ -0,0 +1,50 @@
+" Vim syntax file
+" Language: SNNS result file
+" Maintainer: Davide Alberani <alberanid@bigfoot.com>
+" Last Change: 28 Apr 2001
+" Version: 0.2
+" URL: http://digilander.iol.it/alberanid/vim/syntax/snnsres.vim
+"
+" SNNS http://www-ra.informatik.uni-tuebingen.de/SNNS/
+" is a simulator for neural networks.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" the accepted fields in the header
+syn match snnsresNoHeader "No\. of patterns\s*:\s*" contained
+syn match snnsresNoHeader "No\. of input units\s*:\s*" contained
+syn match snnsresNoHeader "No\. of output units\s*:\s*" contained
+syn match snnsresNoHeader "No\. of variable input dimensions\s*:\s*" contained
+syn match snnsresNoHeader "No\. of variable output dimensions\s*:\s*" contained
+syn match snnsresNoHeader "Maximum input dimensions\s*:\s*" contained
+syn match snnsresNoHeader "Maximum output dimensions\s*:\s*" contained
+syn match snnsresNoHeader "startpattern\s*:\s*" contained
+syn match snnsresNoHeader "endpattern\s*:\s*" contained
+syn match snnsresNoHeader "input patterns included" contained
+syn match snnsresNoHeader "teaching output included" contained
+syn match snnsresGen "generated at.*" contained contains=snnsresNumbers
+syn match snnsresGen "SNNS result file [Vv]\d\.\d" contained contains=snnsresNumbers
+
+" the header, what is not an accepted field, is an error
+syn region snnsresHeader start="^SNNS" end="^\s*[-+\.]\=[0-9#]"me=e-2 contains=snnsresNoHeader,snnsresNumbers,snnsresGen
+
+" numbers inside the header
+syn match snnsresNumbers "\d" contained
+syn match snnsresComment "#.*$" contains=snnsresTodo
+syn keyword snnsresTodo TODO XXX FIXME contained
+
+
+hi def link snnsresGen Statement
+hi def link snnsresHeader Statement
+hi def link snnsresNoHeader Define
+hi def link snnsresNumbers Number
+hi def link snnsresComment Comment
+hi def link snnsresTodo Todo
+
+
+let b:current_syntax = "snnsres"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/snobol4.vim b/runtime/syntax/snobol4.vim
new file mode 100644
index 0000000..11ce2e0
--- /dev/null
+++ b/runtime/syntax/snobol4.vim
@@ -0,0 +1,113 @@
+" Vim syntax file
+" Language: SNOBOL4
+" Maintainer: Rafal Sulejman <rms@poczta.onet.pl>
+" Site: http://rms.republika.pl/vim/syntax/snobol4.vim
+" Last change: : Thu, 25 Jan 2018 14:21:24 +0100
+" Changes:
+" - system variables updated for SNOBOL4 2.0+
+" - strict snobol4 mode (set snobol4_strict_mode to activate)
+" - incorrect HL of dots in strings corrected
+" - incorrect HL of dot-variables in parens corrected
+" - one character labels weren't displayed correctly.
+" - nonexistent Snobol4 keywords displayed as errors.
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syntax case ignore
+
+" Snobol4 keywords
+syn keyword snobol4Keyword any apply arb arbno arg array
+syn keyword snobol4Keyword break
+syn keyword snobol4Keyword char clear code collect convert copy
+syn keyword snobol4Keyword data datatype date define detach differ dump dupl
+syn keyword snobol4Keyword endfile eq eval
+syn keyword snobol4Keyword field
+syn keyword snobol4Keyword ge gt ident
+syn keyword snobol4Keyword input integer item
+syn keyword snobol4Keyword le len lgt local lpad lt
+syn keyword snobol4Keyword ne notany
+syn keyword snobol4Keyword opsyn output
+syn keyword snobol4Keyword pos prototype
+syn keyword snobol4Keyword remdr replace rpad rpos rtab rewind
+syn keyword snobol4Keyword size span stoptr
+syn keyword snobol4Keyword tab table time trace trim terminal
+syn keyword snobol4Keyword unload
+syn keyword snobol4Keyword value
+
+" CSNOBOL keywords
+syn keyword snobol4ExtKeyword breakx
+syn keyword snobol4ExtKeyword char chop
+syn keyword snobol4ExtKeyword date delete
+syn keyword snobol4ExtKeyword exp
+syn keyword snobol4ExtKeyword freeze function
+syn keyword snobol4ExtKeyword host
+syn keyword snobol4ExtKeyword io_findunit
+syn keyword snobol4ExtKeyword label lpad leq lge lle llt lne log
+syn keyword snobol4ExtKeyword ord
+syn keyword snobol4ExtKeyword reverse rpad rsort rename
+syn keyword snobol4ExtKeyword serv_listen sset set sort sqrt substr
+syn keyword snobol4ExtKeyword thaw
+syn keyword snobol4ExtKeyword vdiffer
+
+syn region snobol4String matchgroup=Quote start=+"+ end=+"+
+syn region snobol4String matchgroup=Quote start=+'+ end=+'+
+syn match snobol4BogusStatement "^-[^ ][^ ]*"
+syn match snobol4Statement "^-\(include\|copy\|module\|line\|plusopts\|case\|error\|noerrors\|list\|unlist\|execute\|noexecute\|copy\)"
+syn match snobol4Constant /"[^a-z"']\.[a-z][a-z0-9\-]*"/hs=s+1
+syn region snobol4Goto start=":[sf]\{0,1}(" end=")\|$\|;" contains=ALLBUT,snobol4ParenError
+syn match snobol4Number "\<\d*\(\.\d\d*\)*\>"
+syn match snobol4BogusSysVar "&\w\{1,}"
+syn match snobol4SysVar "&\<\(abort\|alphabet\|anchor\|arb\|bal\|case\|code\|digits\|dump\|errlimit\|errtext\|errtype\|fail\|fence\|fnclevel\|ftrace\|fullscan\|input\|lastno\|lcase\|maxlngth\|output\|parm\|rem\|rtntype\|stcount\|stfcount\|stlimit\|stno\|succeed\|trace\|trim\|ucase\)\>"
+syn match snobol4ExtSysVar "&\(gtrace\|line\|file\|lastline\|lastfile\)"
+syn match snobol4Label "\(^\|;\)[^-\.\+ \t\*\.]\{1,}[^ \t\*\;]*"
+syn match snobol4Comment "\(^\|;\)\([\*\|!;#].*$\)"
+
+" Parens matching
+syn cluster snobol4ParenGroup contains=snobol4ParenError
+syn region snobol4Paren transparent start='(' end=')' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInBracket
+syn match snobol4ParenError display "[\])]"
+syn match snobol4ErrInParen display contained "[\]{}]\|<%\|%>"
+syn region snobol4Bracket transparent start='\[\|<:' end=']\|:>' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInParen
+syn match snobol4ErrInBracket display contained "[){}]\|<%\|%>"
+
+" optional shell shebang line
+" syn match snobol4Comment "^\#\!.*$"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link snobol4Constant Constant
+hi def link snobol4Label Label
+hi def link snobol4Goto Repeat
+hi def link snobol4Conditional Conditional
+hi def link snobol4Repeat Repeat
+hi def link snobol4Number Number
+hi def link snobol4Error Error
+hi def link snobol4Statement PreProc
+hi def link snobol4BogusStatement snobol4Error
+hi def link snobol4String String
+hi def link snobol4Comment Comment
+hi def link snobol4Special Special
+hi def link snobol4Todo Todo
+hi def link snobol4Keyword Keyword
+hi def link snobol4Function Function
+hi def link snobol4MathsOperator Operator
+hi def link snobol4ParenError snobol4Error
+hi def link snobol4ErrInParen snobol4Error
+hi def link snobol4ErrInBracket snobol4Error
+hi def link snobol4SysVar Keyword
+hi def link snobol4BogusSysVar snobol4Error
+if exists("snobol4_strict_mode")
+ hi def link snobol4ExtSysVar WarningMsg
+ hi def link snobol4ExtKeyword WarningMsg
+else
+ hi def link snobol4ExtSysVar snobol4SysVar
+ hi def link snobol4ExtKeyword snobol4Keyword
+endif
+
+
+let b:current_syntax = "snobol4"
+" vim: ts=8
diff --git a/runtime/syntax/solidity.vim b/runtime/syntax/solidity.vim
new file mode 100644
index 0000000..e552446
--- /dev/null
+++ b/runtime/syntax/solidity.vim
@@ -0,0 +1,173 @@
+" Vim syntax file
+" Language: Solidity
+" Maintainer: Cothi (jiungdev@gmail.com)
+" Original Author: tomlion (https://github.com/tomlion/vim-solidity/blob/master/syntax/solidity.vim)
+" Last Changed: 2022 Sep 27
+"
+" Additional contributors:
+" Modified by thesis (https://github.com/thesis/vim-solidity/blob/main/indent/solidity.vim)
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" keyword
+syn keyword solKeyword abstract anonymous as break calldata case catch constant constructor continue default switch revert require
+syn keyword solKeyword ecrecover addmod mulmod keccak256
+syn keyword solKeyword delete do else emit enum external final for function if immutable import in indexed inline
+syn keyword solKeyword interface internal is let match memory modifier new of payable pragma private public pure override virtual
+syn keyword solKeyword relocatable return returns static storage struct throw try type typeof using
+syn keyword solKeyword var view while
+
+syn keyword solConstant true false wei szabo finney ether seconds minutes hours days weeks years now
+syn keyword solConstant abi block blockhash msg tx this super selfdestruct
+
+syn keyword solBuiltinType mapping address bool
+syn keyword solBuiltinType int int8 int16 int24 int32 int40 int48 int56 int64 int72 int80 int88 int96 int104 int112 int120 int128 int136 int144 int152 int160 int168 int178 int184 int192 int200 int208 int216 int224 int232 int240 int248 int256
+syn keyword solBuiltinType uint uint8 uint16 uint24 uint32 uint40 uint48 uint56 uint64 uint72 uint80 uint88 uint96 uint104 uint112 uint120 uint128 uint136 uint144 uint152 uint160 uint168 uint178 uint184 uint192 uint200 uint208 uint216 uint224 uint232 uint240 uint248 uint256
+syn keyword solBuiltinType fixed
+syn keyword solBuiltinType fixed0x8 fixed0x16 fixed0x24 fixed0x32 fixed0x40 fixed0x48 fixed0x56 fixed0x64 fixed0x72 fixed0x80 fixed0x88 fixed0x96 fixed0x104 fixed0x112 fixed0x120 fixed0x128 fixed0x136 fixed0x144 fixed0x152 fixed0x160 fixed0x168 fixed0x178 fixed0x184 fixed0x192 fixed0x200 fixed0x208 fixed0x216 fixed0x224 fixed0x232 fixed0x240 fixed0x248 fixed0x256
+syn keyword solBuiltinType fixed8x8 fixed8x16 fixed8x24 fixed8x32 fixed8x40 fixed8x48 fixed8x56 fixed8x64 fixed8x72 fixed8x80 fixed8x88 fixed8x96 fixed8x104 fixed8x112 fixed8x120 fixed8x128 fixed8x136 fixed8x144 fixed8x152 fixed8x160 fixed8x168 fixed8x178 fixed8x184 fixed8x192 fixed8x200 fixed8x208 fixed8x216 fixed8x224 fixed8x232 fixed8x240 fixed8x248
+syn keyword solBuiltinType fixed16x8 fixed16x16 fixed16x24 fixed16x32 fixed16x40 fixed16x48 fixed16x56 fixed16x64 fixed16x72 fixed16x80 fixed16x88 fixed16x96 fixed16x104 fixed16x112 fixed16x120 fixed16x128 fixed16x136 fixed16x144 fixed16x152 fixed16x160 fixed16x168 fixed16x178 fixed16x184 fixed16x192 fixed16x200 fixed16x208 fixed16x216 fixed16x224 fixed16x232 fixed16x240
+syn keyword solBuiltinType fixed24x8 fixed24x16 fixed24x24 fixed24x32 fixed24x40 fixed24x48 fixed24x56 fixed24x64 fixed24x72 fixed24x80 fixed24x88 fixed24x96 fixed24x104 fixed24x112 fixed24x120 fixed24x128 fixed24x136 fixed24x144 fixed24x152 fixed24x160 fixed24x168 fixed24x178 fixed24x184 fixed24x192 fixed24x200 fixed24x208 fixed24x216 fixed24x224 fixed24x232
+syn keyword solBuiltinType fixed32x8 fixed32x16 fixed32x24 fixed32x32 fixed32x40 fixed32x48 fixed32x56 fixed32x64 fixed32x72 fixed32x80 fixed32x88 fixed32x96 fixed32x104 fixed32x112 fixed32x120 fixed32x128 fixed32x136 fixed32x144 fixed32x152 fixed32x160 fixed32x168 fixed32x178 fixed32x184 fixed32x192 fixed32x200 fixed32x208 fixed32x216 fixed32x224
+syn keyword solBuiltinType fixed40x8 fixed40x16 fixed40x24 fixed40x32 fixed40x40 fixed40x48 fixed40x56 fixed40x64 fixed40x72 fixed40x80 fixed40x88 fixed40x96 fixed40x104 fixed40x112 fixed40x120 fixed40x128 fixed40x136 fixed40x144 fixed40x152 fixed40x160 fixed40x168 fixed40x178 fixed40x184 fixed40x192 fixed40x200 fixed40x208 fixed40x216
+syn keyword solBuiltinType fixed48x8 fixed48x16 fixed48x24 fixed48x32 fixed48x40 fixed48x48 fixed48x56 fixed48x64 fixed48x72 fixed48x80 fixed48x88 fixed48x96 fixed48x104 fixed48x112 fixed48x120 fixed48x128 fixed48x136 fixed48x144 fixed48x152 fixed48x160 fixed48x168 fixed48x178 fixed48x184 fixed48x192 fixed48x200 fixed48x208
+syn keyword solBuiltinType fixed56x8 fixed56x16 fixed56x24 fixed56x32 fixed56x40 fixed56x48 fixed56x56 fixed56x64 fixed56x72 fixed56x80 fixed56x88 fixed56x96 fixed56x104 fixed56x112 fixed56x120 fixed56x128 fixed56x136 fixed56x144 fixed56x152 fixed56x160 fixed56x168 fixed56x178 fixed56x184 fixed56x192 fixed56x200
+syn keyword solBuiltinType fixed64x8 fixed64x16 fixed64x24 fixed64x32 fixed64x40 fixed64x48 fixed64x56 fixed64x64 fixed64x72 fixed64x80 fixed64x88 fixed64x96 fixed64x104 fixed64x112 fixed64x120 fixed64x128 fixed64x136 fixed64x144 fixed64x152 fixed64x160 fixed64x168 fixed64x178 fixed64x184 fixed64x192
+syn keyword solBuiltinType fixed72x8 fixed72x16 fixed72x24 fixed72x32 fixed72x40 fixed72x48 fixed72x56 fixed72x64 fixed72x72 fixed72x80 fixed72x88 fixed72x96 fixed72x104 fixed72x112 fixed72x120 fixed72x128 fixed72x136 fixed72x144 fixed72x152 fixed72x160 fixed72x168 fixed72x178 fixed72x184
+syn keyword solBuiltinType fixed80x8 fixed80x16 fixed80x24 fixed80x32 fixed80x40 fixed80x48 fixed80x56 fixed80x64 fixed80x72 fixed80x80 fixed80x88 fixed80x96 fixed80x104 fixed80x112 fixed80x120 fixed80x128 fixed80x136 fixed80x144 fixed80x152 fixed80x160 fixed80x168 fixed80x178
+syn keyword solBuiltinType fixed88x8 fixed88x16 fixed88x24 fixed88x32 fixed88x40 fixed88x48 fixed88x56 fixed88x64 fixed88x72 fixed88x80 fixed88x88 fixed88x96 fixed88x104 fixed88x112 fixed88x120 fixed88x128 fixed88x136 fixed88x144 fixed88x152 fixed88x160 fixed88x168
+syn keyword solBuiltinType fixed96x8 fixed96x16 fixed96x24 fixed96x32 fixed96x40 fixed96x48 fixed96x56 fixed96x64 fixed96x72 fixed96x80 fixed96x88 fixed96x96 fixed96x104 fixed96x112 fixed96x120 fixed96x128 fixed96x136 fixed96x144 fixed96x152 fixed96x160
+syn keyword solBuiltinType fixed104x8 fixed104x16 fixed104x24 fixed104x32 fixed104x40 fixed104x48 fixed104x56 fixed104x64 fixed104x72 fixed104x80 fixed104x88 fixed104x96 fixed104x104 fixed104x112 fixed104x120 fixed104x128 fixed104x136 fixed104x144 fixed104x152
+syn keyword solBuiltinType fixed112x8 fixed112x16 fixed112x24 fixed112x32 fixed112x40 fixed112x48 fixed112x56 fixed112x64 fixed112x72 fixed112x80 fixed112x88 fixed112x96 fixed112x104 fixed112x112 fixed112x120 fixed112x128 fixed112x136 fixed112x144
+syn keyword solBuiltinType fixed120x8 fixed120x16 fixed120x24 fixed120x32 fixed120x40 fixed120x48 fixed120x56 fixed120x64 fixed120x72 fixed120x80 fixed120x88 fixed120x96 fixed120x104 fixed120x112 fixed120x120 fixed120x128 fixed120x136
+syn keyword solBuiltinType fixed128x8 fixed128x16 fixed128x24 fixed128x32 fixed128x40 fixed128x48 fixed128x56 fixed128x64 fixed128x72 fixed128x80 fixed128x88 fixed128x96 fixed128x104 fixed128x112 fixed128x120 fixed128x128
+syn keyword solBuiltinType fixed136x8 fixed136x16 fixed136x24 fixed136x32 fixed136x40 fixed136x48 fixed136x56 fixed136x64 fixed136x72 fixed136x80 fixed136x88 fixed136x96 fixed136x104 fixed136x112 fixed136x120
+syn keyword solBuiltinType fixed144x8 fixed144x16 fixed144x24 fixed144x32 fixed144x40 fixed144x48 fixed144x56 fixed144x64 fixed144x72 fixed144x80 fixed144x88 fixed144x96 fixed144x104 fixed144x112
+syn keyword solBuiltinType fixed152x8 fixed152x16 fixed152x24 fixed152x32 fixed152x40 fixed152x48 fixed152x56 fixed152x64 fixed152x72 fixed152x80 fixed152x88 fixed152x96 fixed152x104
+syn keyword solBuiltinType fixed160x8 fixed160x16 fixed160x24 fixed160x32 fixed160x40 fixed160x48 fixed160x56 fixed160x64 fixed160x72 fixed160x80 fixed160x88 fixed160x96
+syn keyword solBuiltinType fixed168x8 fixed168x16 fixed168x24 fixed168x32 fixed168x40 fixed168x48 fixed168x56 fixed168x64 fixed168x72 fixed168x80 fixed168x88
+syn keyword solBuiltinType fixed176x8 fixed176x16 fixed176x24 fixed176x32 fixed176x40 fixed176x48 fixed176x56 fixed176x64 fixed176x72 fixed176x80
+syn keyword solBuiltinType fixed184x8 fixed184x16 fixed184x24 fixed184x32 fixed184x40 fixed184x48 fixed184x56 fixed184x64 fixed184x72
+syn keyword solBuiltinType fixed192x8 fixed192x16 fixed192x24 fixed192x32 fixed192x40 fixed192x48 fixed192x56 fixed192x64
+syn keyword solBuiltinType fixed200x8 fixed200x16 fixed200x24 fixed200x32 fixed200x40 fixed200x48 fixed200x56
+syn keyword solBuiltinType fixed208x8 fixed208x16 fixed208x24 fixed208x32 fixed208x40 fixed208x48
+syn keyword solBuiltinType fixed216x8 fixed216x16 fixed216x24 fixed216x32 fixed216x40
+syn keyword solBuiltinType fixed224x8 fixed224x16 fixed224x24 fixed224x32
+syn keyword solBuiltinType fixed232x8 fixed232x16 fixed232x24
+syn keyword solBuiltinType fixed240x8 fixed240x16
+syn keyword solBuiltinType fixed248x8
+syn keyword solBuiltinType ufixed
+syn keyword solBuiltinType ufixed0x8 ufixed0x16 ufixed0x24 ufixed0x32 ufixed0x40 ufixed0x48 ufixed0x56 ufixed0x64 ufixed0x72 ufixed0x80 ufixed0x88 ufixed0x96 ufixed0x104 ufixed0x112 ufixed0x120 ufixed0x128 ufixed0x136 ufixed0x144 ufixed0x152 ufixed0x160 ufixed0x168 ufixed0x178 ufixed0x184 ufixed0x192 ufixed0x200 ufixed0x208 ufixed0x216 ufixed0x224 ufixed0x232 ufixed0x240 ufixed0x248 ufixed0x256
+syn keyword solBuiltinType ufixed8x8 ufixed8x16 ufixed8x24 ufixed8x32 ufixed8x40 ufixed8x48 ufixed8x56 ufixed8x64 ufixed8x72 ufixed8x80 ufixed8x88 ufixed8x96 ufixed8x104 ufixed8x112 ufixed8x120 ufixed8x128 ufixed8x136 ufixed8x144 ufixed8x152 ufixed8x160 ufixed8x168 ufixed8x178 ufixed8x184 ufixed8x192 ufixed8x200 ufixed8x208 ufixed8x216 ufixed8x224 ufixed8x232 ufixed8x240 ufixed8x248
+syn keyword solBuiltinType ufixed16x8 ufixed16x16 ufixed16x24 ufixed16x32 ufixed16x40 ufixed16x48 ufixed16x56 ufixed16x64 ufixed16x72 ufixed16x80 ufixed16x88 ufixed16x96 ufixed16x104 ufixed16x112 ufixed16x120 ufixed16x128 ufixed16x136 ufixed16x144 ufixed16x152 ufixed16x160 ufixed16x168 ufixed16x178 ufixed16x184 ufixed16x192 ufixed16x200 ufixed16x208 ufixed16x216 ufixed16x224 ufixed16x232 ufixed16x240
+syn keyword solBuiltinType ufixed24x8 ufixed24x16 ufixed24x24 ufixed24x32 ufixed24x40 ufixed24x48 ufixed24x56 ufixed24x64 ufixed24x72 ufixed24x80 ufixed24x88 ufixed24x96 ufixed24x104 ufixed24x112 ufixed24x120 ufixed24x128 ufixed24x136 ufixed24x144 ufixed24x152 ufixed24x160 ufixed24x168 ufixed24x178 ufixed24x184 ufixed24x192 ufixed24x200 ufixed24x208 ufixed24x216 ufixed24x224 ufixed24x232
+syn keyword solBuiltinType ufixed32x8 ufixed32x16 ufixed32x24 ufixed32x32 ufixed32x40 ufixed32x48 ufixed32x56 ufixed32x64 ufixed32x72 ufixed32x80 ufixed32x88 ufixed32x96 ufixed32x104 ufixed32x112 ufixed32x120 ufixed32x128 ufixed32x136 ufixed32x144 ufixed32x152 ufixed32x160 ufixed32x168 ufixed32x178 ufixed32x184 ufixed32x192 ufixed32x200 ufixed32x208 ufixed32x216 ufixed32x224
+syn keyword solBuiltinType ufixed40x8 ufixed40x16 ufixed40x24 ufixed40x32 ufixed40x40 ufixed40x48 ufixed40x56 ufixed40x64 ufixed40x72 ufixed40x80 ufixed40x88 ufixed40x96 ufixed40x104 ufixed40x112 ufixed40x120 ufixed40x128 ufixed40x136 ufixed40x144 ufixed40x152 ufixed40x160 ufixed40x168 ufixed40x178 ufixed40x184 ufixed40x192 ufixed40x200 ufixed40x208 ufixed40x216
+syn keyword solBuiltinType ufixed48x8 ufixed48x16 ufixed48x24 ufixed48x32 ufixed48x40 ufixed48x48 ufixed48x56 ufixed48x64 ufixed48x72 ufixed48x80 ufixed48x88 ufixed48x96 ufixed48x104 ufixed48x112 ufixed48x120 ufixed48x128 ufixed48x136 ufixed48x144 ufixed48x152 ufixed48x160 ufixed48x168 ufixed48x178 ufixed48x184 ufixed48x192 ufixed48x200 ufixed48x208
+syn keyword solBuiltinType ufixed56x8 ufixed56x16 ufixed56x24 ufixed56x32 ufixed56x40 ufixed56x48 ufixed56x56 ufixed56x64 ufixed56x72 ufixed56x80 ufixed56x88 ufixed56x96 ufixed56x104 ufixed56x112 ufixed56x120 ufixed56x128 ufixed56x136 ufixed56x144 ufixed56x152 ufixed56x160 ufixed56x168 ufixed56x178 ufixed56x184 ufixed56x192 ufixed56x200
+syn keyword solBuiltinType ufixed64x8 ufixed64x16 ufixed64x24 ufixed64x32 ufixed64x40 ufixed64x48 ufixed64x56 ufixed64x64 ufixed64x72 ufixed64x80 ufixed64x88 ufixed64x96 ufixed64x104 ufixed64x112 ufixed64x120 ufixed64x128 ufixed64x136 ufixed64x144 ufixed64x152 ufixed64x160 ufixed64x168 ufixed64x178 ufixed64x184 ufixed64x192
+syn keyword solBuiltinType ufixed72x8 ufixed72x16 ufixed72x24 ufixed72x32 ufixed72x40 ufixed72x48 ufixed72x56 ufixed72x64 ufixed72x72 ufixed72x80 ufixed72x88 ufixed72x96 ufixed72x104 ufixed72x112 ufixed72x120 ufixed72x128 ufixed72x136 ufixed72x144 ufixed72x152 ufixed72x160 ufixed72x168 ufixed72x178 ufixed72x184
+syn keyword solBuiltinType ufixed80x8 ufixed80x16 ufixed80x24 ufixed80x32 ufixed80x40 ufixed80x48 ufixed80x56 ufixed80x64 ufixed80x72 ufixed80x80 ufixed80x88 ufixed80x96 ufixed80x104 ufixed80x112 ufixed80x120 ufixed80x128 ufixed80x136 ufixed80x144 ufixed80x152 ufixed80x160 ufixed80x168 ufixed80x178
+syn keyword solBuiltinType ufixed88x8 ufixed88x16 ufixed88x24 ufixed88x32 ufixed88x40 ufixed88x48 ufixed88x56 ufixed88x64 ufixed88x72 ufixed88x80 ufixed88x88 ufixed88x96 ufixed88x104 ufixed88x112 ufixed88x120 ufixed88x128 ufixed88x136 ufixed88x144 ufixed88x152 ufixed88x160 ufixed88x168
+syn keyword solBuiltinType ufixed96x8 ufixed96x16 ufixed96x24 ufixed96x32 ufixed96x40 ufixed96x48 ufixed96x56 ufixed96x64 ufixed96x72 ufixed96x80 ufixed96x88 ufixed96x96 ufixed96x104 ufixed96x112 ufixed96x120 ufixed96x128 ufixed96x136 ufixed96x144 ufixed96x152 ufixed96x160
+syn keyword solBuiltinType ufixed104x8 ufixed104x16 ufixed104x24 ufixed104x32 ufixed104x40 ufixed104x48 ufixed104x56 ufixed104x64 ufixed104x72 ufixed104x80 ufixed104x88 ufixed104x96 ufixed104x104 ufixed104x112 ufixed104x120 ufixed104x128 ufixed104x136 ufixed104x144 ufixed104x152
+syn keyword solBuiltinType ufixed112x8 ufixed112x16 ufixed112x24 ufixed112x32 ufixed112x40 ufixed112x48 ufixed112x56 ufixed112x64 ufixed112x72 ufixed112x80 ufixed112x88 ufixed112x96 ufixed112x104 ufixed112x112 ufixed112x120 ufixed112x128 ufixed112x136 ufixed112x144
+syn keyword solBuiltinType ufixed120x8 ufixed120x16 ufixed120x24 ufixed120x32 ufixed120x40 ufixed120x48 ufixed120x56 ufixed120x64 ufixed120x72 ufixed120x80 ufixed120x88 ufixed120x96 ufixed120x104 ufixed120x112 ufixed120x120 ufixed120x128 ufixed120x136
+syn keyword solBuiltinType ufixed128x8 ufixed128x16 ufixed128x24 ufixed128x32 ufixed128x40 ufixed128x48 ufixed128x56 ufixed128x64 ufixed128x72 ufixed128x80 ufixed128x88 ufixed128x96 ufixed128x104 ufixed128x112 ufixed128x120 ufixed128x128
+syn keyword solBuiltinType ufixed136x8 ufixed136x16 ufixed136x24 ufixed136x32 ufixed136x40 ufixed136x48 ufixed136x56 ufixed136x64 ufixed136x72 ufixed136x80 ufixed136x88 ufixed136x96 ufixed136x104 ufixed136x112 ufixed136x120
+syn keyword solBuiltinType ufixed144x8 ufixed144x16 ufixed144x24 ufixed144x32 ufixed144x40 ufixed144x48 ufixed144x56 ufixed144x64 ufixed144x72 ufixed144x80 ufixed144x88 ufixed144x96 ufixed144x104 ufixed144x112
+syn keyword solBuiltinType ufixed152x8 ufixed152x16 ufixed152x24 ufixed152x32 ufixed152x40 ufixed152x48 ufixed152x56 ufixed152x64 ufixed152x72 ufixed152x80 ufixed152x88 ufixed152x96 ufixed152x104
+syn keyword solBuiltinType ufixed160x8 ufixed160x16 ufixed160x24 ufixed160x32 ufixed160x40 ufixed160x48 ufixed160x56 ufixed160x64 ufixed160x72 ufixed160x80 ufixed160x88 ufixed160x96
+syn keyword solBuiltinType ufixed168x8 ufixed168x16 ufixed168x24 ufixed168x32 ufixed168x40 ufixed168x48 ufixed168x56 ufixed168x64 ufixed168x72 ufixed168x80 ufixed168x88
+syn keyword solBuiltinType ufixed176x8 ufixed176x16 ufixed176x24 ufixed176x32 ufixed176x40 ufixed176x48 ufixed176x56 ufixed176x64 ufixed176x72 ufixed176x80
+syn keyword solBuiltinType ufixed184x8 ufixed184x16 ufixed184x24 ufixed184x32 ufixed184x40 ufixed184x48 ufixed184x56 ufixed184x64 ufixed184x72
+syn keyword solBuiltinType ufixed192x8 ufixed192x16 ufixed192x24 ufixed192x32 ufixed192x40 ufixed192x48 ufixed192x56 ufixed192x64
+syn keyword solBuiltinType ufixed200x8 ufixed200x16 ufixed200x24 ufixed200x32 ufixed200x40 ufixed200x48 ufixed200x56
+syn keyword solBuiltinType ufixed208x8 ufixed208x16 ufixed208x24 ufixed208x32 ufixed208x40 ufixed208x48
+syn keyword solBuiltinType ufixed216x8 ufixed216x16 ufixed216x24 ufixed216x32 ufixed216x40
+syn keyword solBuiltinType ufixed224x8 ufixed224x16 ufixed224x24 ufixed224x32
+syn keyword solBuiltinType ufixed232x8 ufixed232x16 ufixed232x24
+syn keyword solBuiltinType ufixed240x8 ufixed240x16
+syn keyword solBuiltinType ufixed248x8
+syn keyword solBuiltinType string string1 string2 string3 string4 string5 string6 string7 string8 string9 string10 string11 string12 string13 string14 string15 string16 string17 string18 string19 string20 string21 string22 string23 string24 string25 string26 string27 string28 string29 string30 string31 string32
+syn keyword solBuiltinType byte bytes bytes1 bytes2 bytes3 bytes4 bytes5 bytes6 bytes7 bytes8 bytes9 bytes10 bytes11 bytes12 bytes13 bytes14 bytes15 bytes16 bytes17 bytes18 bytes19 bytes20 bytes21 bytes22 bytes23 bytes24 bytes25 bytes26 bytes27 bytes28 bytes29 bytes30 bytes31 bytes32
+
+hi def link solKeyword Keyword
+hi def link solConstant Constant
+hi def link solBuiltinType Type
+hi def link solBuiltinFunction Keyword
+
+syn match solOperator /\(!\||\|&\|+\|-\|<\|>\|=\|%\|\/\|*\|\~\|\^\)/
+syn match solNumber /\<-\=\d\+L\=\>\|\<0[xX]\x\+\>/
+syn match solFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/
+
+syn region solString start=+"+ skip=+\\\\\|\\$"\|\\"+ end=+"+
+syn region solString start=+'+ skip=+\\\\\|\\$'\|\\'+ end=+'+
+
+hi def link solOperator Operator
+hi def link solNumber Number
+hi def link solFloat Float
+hi def link solString String
+
+" Function
+syn match solFunction /\<function\>/ nextgroup=solFuncName,solFuncArgs skipwhite
+syn match solFuncName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup=solFuncArgs skipwhite
+
+syn region solFuncArgs contained matchgroup=solFuncParens start='(' end=')' contains=solFuncArgCommas,solBuiltinType nextgroup=solModifierName,solFuncReturns,solFuncBody keepend skipwhite skipempty
+syn match solModifierName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup=solModifierArgs,solModifierName skipwhite
+syn region solModifierArgs contained matchgroup=solFuncParens start='(' end=')' contains=solFuncArgCommas nextgroup=solModifierName,solFuncReturns,solFuncBody skipwhite
+syn region solFuncReturns contained matchgroup=solFuncParens nextgroup=solFuncBody start='(' end=')' contains=solFuncArgCommas,solBuiltinType skipwhite
+
+syn match solFuncArgCommas contained ','
+syn region solFuncBody start="{" end="}" fold transparent
+
+hi def link solFunction Type
+hi def link solFuncName Function
+hi def link solModifierName Function
+
+" Yul blocks
+syn match yul /\<assembly\>/ skipwhite skipempty nextgroup=yulBody
+syn region yulBody contained start='{' end='}' fold contains=yulAssemblyOp,solNumber,yulVarDeclaration,solLineComment,solComment skipwhite skipempty
+syn keyword yulAssemblyOp contained stop add sub mul div sdiv mod smod exp not lt gt slt sgt eq iszero and or xor byte shl shr sar addmod mulmod signextend keccak256 pc pop mload mstore mstore8 sload sstore msize gas address balance selfbalance caller callvalue calldataload calldatasize calldatacopy codesize codecopy extcodesize extcodecopy returndatasize returndatacopy extcodehash create create2 call callcode delegatecall staticcall return revert selfdestruct invalid log0 log1 log2 log3 log4 chainid basefee origin gasprice blockhash coinbase timestamp number difficulty gaslimit
+syn keyword yulVarDeclaration contained let
+
+hi def link yul Keyword
+hi def link yulVarDeclaration Keyword
+hi def link yulAssemblyOp Keyword
+
+" Contract
+syn match solContract /\<\%(contract\|library\|interface\)\>/ nextgroup=solContractName skipwhite
+syn match solContractName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup=solContractParent skipwhite
+syn region solContractParent contained start='is' end='{' contains=solContractName,solContractNoise,solContractCommas skipwhite skipempty
+syn match solContractNoise contained 'is' containedin=solContractParent
+syn match solContractCommas contained ','
+
+hi def link solContract Type
+hi def link solContractName Function
+
+" Event
+syn match solEvent /\<event\>/ nextgroup=solEventName,solEventArgs skipwhite
+syn match solEventName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup=solEventArgs skipwhite
+syn region solEventArgs contained matchgroup=solFuncParens start='(' end=')' contains=solEventArgCommas,solBuiltinType,solEventArgSpecial skipwhite skipempty
+syn match solEventArgCommas contained ','
+syn match solEventArgSpecial contained 'indexed'
+
+hi def link solEvent Type
+hi def link solEventName Function
+hi def link solEventArgSpecial Label
+
+" Comment
+syn keyword solCommentTodo TODO FIXME XXX TBD contained
+syn match solNatSpec contained /@title\|@author\|@notice\|@dev\|@param\|@inheritdoc\|@return/
+syn region solLineComment start=+\/\/+ end=+$+ contains=solCommentTodo,solNatSpec,@Spell
+syn region solLineComment start=+^\s*\/\/+ skip=+\n\s*\/\/+ end=+$+ contains=solCommentTodo,solNatSpec,@Spell fold
+syn region solComment start="/\*" end="\*/" contains=solCommentTodo,solNatSpec,@Spell fold
+
+hi def link solCommentTodo Todo
+hi def link solNatSpec Label
+hi def link solLineComment Comment
+hi def link solComment Comment
+
+let b:current_syntax = "solidity"
diff --git a/runtime/syntax/spec.vim b/runtime/syntax/spec.vim
new file mode 100644
index 0000000..d7d5877
--- /dev/null
+++ b/runtime/syntax/spec.vim
@@ -0,0 +1,226 @@
+" Filename: spec.vim
+" Purpose: Vim syntax file
+" Language: SPEC: Build/install scripts for Linux RPM packages
+" Maintainer: Igor Gnatenko i.gnatenko.brain@gmail.com
+" Former Maintainer: Donovan Rebbechi elflord@panix.com (until March 2014)
+" Last Change: 2020 May 25
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn sync minlines=1000
+
+syn match specSpecialChar contained '[][!$()\\|>^;:{}]'
+syn match specColon contained ':'
+syn match specPercent contained '%'
+
+syn match specVariables contained '\$\h\w*' contains=specSpecialVariablesNames,specSpecialChar
+syn match specVariables contained '\${\w*}' contains=specSpecialVariablesNames,specSpecialChar
+
+syn match specMacroIdentifier contained '%\h\w*' contains=specMacroNameLocal,specMacroNameOther,specPercent
+syn match specMacroIdentifier contained '%{\w*}' contains=specMacroNameLocal,specMacroNameOther,specPercent,specSpecialChar
+
+syn match specSpecialVariables contained '\$[0-9]\|\${[0-9]}'
+syn match specCommandOpts contained '\s\(-\w\+\|--\w[a-zA-Z_-]\+\)'ms=s+1
+syn match specComment '^\s*#.*$'
+
+
+syn case match
+
+
+"matches with no highlight
+syn match specNoNumberHilite 'X11\|X11R6\|[a-zA-Z]*\.\d\|[a-zA-Z][-/]\d'
+syn match specManpageFile '[a-zA-Z]\.1'
+
+"Day, Month and most used license acronyms
+syn keyword specLicense contained GPL LGPL BSD MIT GNU
+syn keyword specWeekday contained Mon Tue Wed Thu Fri Sat Sun
+syn keyword specMonth contained Jan Feb Mar Apr Jun Jul Aug Sep Oct Nov Dec
+syn keyword specMonth contained January February March April May June July August September October November December
+
+"#, @, www
+syn match specNumber '\(^-\=\|[ \t]-\=\|-\)[0-9.-]*[0-9]'
+syn match specEmail contained "<\=\<[A-Za-z0-9_.-]\+@\([A-Za-z0-9_-]\+\.\)\+[A-Za-z]\+\>>\="
+syn match specURL contained '\<\(\(https\{0,1}\|ftp\)://\|\(www[23]\{0,1}\.\|ftp\.\)\)[A-Za-z0-9._/~:,#-]\+\>'
+syn match specURLMacro contained '\<\(\(https\{0,1}\|ftp\)://\|\(www[23]\{0,1}\.\|ftp\.\)\)[A-Za-z0-9._/~:,#%{}-]\+\>' contains=specMacroIdentifier
+
+"TODO take specSpecialVariables out of the cluster for the sh* contains (ALLBUT)
+"Special system directories
+syn match specListedFilesPrefix contained '/\(usr\|local\|opt\|X11R6\|X11\)/'me=e-1
+syn match specListedFilesBin contained '/s\=bin/'me=e-1
+syn match specListedFilesLib contained '/\(lib\|include\)/'me=e-1
+syn match specListedFilesDoc contained '/\(man\d*\|doc\|info\)\>'
+syn match specListedFilesEtc contained '/etc/'me=e-1
+syn match specListedFilesShare contained '/share/'me=e-1
+syn cluster specListedFiles contains=specListedFilesBin,specListedFilesLib,specListedFilesDoc,specListedFilesEtc,specListedFilesShare,specListedFilesPrefix,specVariables,specSpecialChar
+
+"specComands
+syn match specConfigure contained '\./configure'
+syn match specTarCommand contained '\<tar\s\+[cxvpzIf]\{,5}\s*'
+syn keyword specCommandSpecial contained root
+syn keyword specCommand contained make xmkmf mkdir chmod ln find sed rm strip moc echo grep ls rm mv mkdir install cp pwd cat tail then else elif cd gzip rmdir ln eval export touch
+syn cluster specCommands contains=specCommand,specTarCommand,specConfigure,specCommandSpecial
+
+"frequently used rpm env vars
+syn keyword specSpecialVariablesNames contained RPM_BUILD_ROOT RPM_BUILD_DIR RPM_SOURCE_DIR RPM_OPT_FLAGS LDFLAGS CC CC_FLAGS CPPNAME CFLAGS CXX CXXFLAGS CPPFLAGS
+
+"valid macro names from /usr/lib/rpm/macros
+syn keyword specMacroNameOther contained buildroot buildsubdir distribution disturl ix86 name nil optflags perl_sitearch release requires_eq vendor version
+syn match specMacroNameOther contained '\<\(PATCH\|SOURCE\)\d*\>'
+
+"valid _macro names from /usr/lib/rpm/macros
+syn keyword specMacroNameLocal contained _arch _binary_payload _bindir _build _build_alias _build_cpu _builddir _build_os _buildshell _buildsubdir _build_vendor _bzip2bin _datadir _dbpath _dbpath_rebuild _defaultdocdir _docdir _excludedocs _exec_prefix _fixgroup _fixowner _fixperms _ftpport _ftpproxy _gpg_path _gzipbin _host _host_alias _host_cpu _host_os _host_vendor _httpport _httpproxy _includedir _infodir _install_langs _install_script_path _instchangelog _langpatt _lib _libdir _libexecdir _localstatedir _mandir _netsharedpath _oldincludedir _os _pgpbin _pgp_path _prefix _preScriptEnvironment _provides _rpmdir _rpmfilename _sbindir _sharedstatedir _signature _sourcedir _source_payload _specdir _srcrpmdir _sysconfdir _target _target_alias _target_cpu _target_os _target_platform _target_vendor _timecheck _tmppath _topdir _usr _unitdir _usrsrc _var _vendor
+
+
+"------------------------------------------------------------------------------
+" here's is all the spec sections definitions: PreAmble, Description, Package,
+" Scripts, Files and Changelog
+
+"One line macros - valid in all ScriptAreas
+"tip: remember do include new items on specScriptArea's skip section
+syn region specSectionMacroArea oneline matchgroup=specSectionMacro start='^%\(define\|global\|patch\d*\|setup\|autosetup\|autopatch\|configure\|GNUconfigure\|find_lang\|make_build\|makeinstall\|make_install\|include\)\>' end='$' contains=specCommandOpts,specMacroIdentifier
+syn region specSectionMacroBracketArea oneline matchgroup=specSectionMacro start='^%{\(configure\|GNUconfigure\|find_lang\|make_build\|makeinstall\|make_install\)}' end='$' contains=specCommandOpts,specMacroIdentifier
+
+"%% Files Section %%
+"TODO %config valid parameters: missingok\|noreplace
+"TODO %verify valid parameters: \(not\)\= \(md5\|atime\|...\)
+syn region specFilesArea matchgroup=specSection start='^%[Ff][Ii][Ll][Ee][Ss]\>' skip='%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|license\|verify\|ghost\|exclude\)\>' end='^%[a-zA-Z]'me=e-2 contains=specFilesOpts,specFilesDirective,@specListedFiles,specComment,specCommandSpecial,specMacroIdentifier
+"tip: remember to include new itens in specFilesArea above
+syn match specFilesDirective contained '%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|license\|verify\|ghost\|exclude\)\>'
+
+"valid options for certain section headers
+syn match specDescriptionOpts contained '\s-[ln]\s*\a'ms=s+1,me=e-1
+syn match specPackageOpts contained '\s-n\s*\w'ms=s+1,me=e-1
+syn match specFilesOpts contained '\s-f\s*\w'ms=s+1,me=e-1
+
+
+syn case ignore
+
+
+"%% PreAmble Section %%
+"Copyright and Serial were deprecated by License and Epoch
+syn region specPreAmbleDeprecated oneline matchgroup=specError start='^\(Copyright\|Serial\)' end='$' contains=specEmail,specURL,specURLMacro,specLicense,specColon,specVariables,specSpecialChar,specMacroIdentifier
+syn region specPreAmble oneline matchgroup=specCommand start='^\(Prereq\|Summary\|Name\|Version\|Packager\|Requires\|Recommends\|Suggests\|Supplements\|Enhances\|Icon\|URL\|Source\d*\|Patch\d*\|Prefix\|Packager\|Group\|License\|Release\|BuildRoot\|Distribution\|Vendor\|Provides\|ExclusiveArch\|ExcludeArch\|ExclusiveOS\|Obsoletes\|BuildArch\|BuildArchitectures\|BuildRequires\|BuildConflicts\|BuildPreReq\|Conflicts\|AutoRequires\|AutoReq\|AutoReqProv\|AutoProv\|Epoch\)' end='$' contains=specEmail,specURL,specURLMacro,specLicense,specColon,specVariables,specSpecialChar,specMacroIdentifier
+
+"%% Description Section %%
+syn region specDescriptionArea matchgroup=specSection start='^%description' end='^%'me=e-1 contains=specDescriptionOpts,specEmail,specURL,specNumber,specMacroIdentifier,specComment
+
+"%% Package Section %%
+syn region specPackageArea matchgroup=specSection start='^%package' end='^%'me=e-1 contains=specPackageOpts,specPreAmble,specComment
+
+"%% Scripts Section %%
+syn region specScriptArea matchgroup=specSection start='^%\(prep\|build\|install\|clean\|check\|pre\|postun\|preun\|post\|posttrans\)\>' skip='^%{\|^%\(define\|patch\d*\|configure\|GNUconfigure\|setup\|autosetup\|autopatch\|find_lang\|make_build\|makeinstall\|make_install\)\>' end='^%'me=e-1 contains=specSpecialVariables,specVariables,@specCommands,specVariables,shDo,shFor,shCaseEsac,specNoNumberHilite,specCommandOpts,shComment,shIf,specSpecialChar,specMacroIdentifier,specSectionMacroArea,specSectionMacroBracketArea,shOperator,shQuote1,shQuote2
+
+"%% Changelog Section %%
+syn region specChangelogArea matchgroup=specSection start='^%changelog' end='^%'me=e-1 contains=specEmail,specURL,specWeekday,specMonth,specNumber,specComment,specLicense
+
+
+
+"------------------------------------------------------------------------------
+"here's the shell syntax for all the Script Sections
+
+
+syn case match
+
+
+"sh-like comment stile, only valid in script part
+syn match shComment contained '#.*$'
+
+syn region dnlComment matchgroup=specComment start=+%dnl+ end=+$+
+
+syn region shQuote1 contained matchgroup=shQuoteDelim start=+'+ skip=+\\'+ end=+'+ contains=specMacroIdentifier
+syn region shQuote2 contained matchgroup=shQuoteDelim start=+"+ skip=+\\"+ end=+"+ contains=specVariables,specMacroIdentifier
+
+syn match shOperator contained '[><|!&;]\|[!=]='
+syn region shDo transparent matchgroup=specBlock start="\<do\>" end="\<done\>" contains=ALLBUT,shFunction,shDoError,shCase,specPreAmble,@specListedFiles
+
+syn region specIf matchgroup=specBlock start="%ifosf\|%ifos\|%ifnos\|%ifarch\|%ifnarch\|%else" end='%endif' contains=ALLBUT, specIfError, shCase
+
+syn region shIf transparent matchgroup=specBlock start="\<if\>" end="\<fi\>" contains=ALLBUT,shFunction,shIfError,shCase,@specListedFiles
+
+syn region shFor matchgroup=specBlock start="\<for\>" end="\<in\>" contains=ALLBUT,shFunction,shInError,shCase,@specListedFiles
+
+syn region shCaseEsac transparent matchgroup=specBlock start="\<case\>" matchgroup=NONE end="\<in\>"me=s-1 contains=ALLBUT,shFunction,shCaseError,@specListedFiles nextgroup=shCaseEsac
+syn region shCaseEsac matchgroup=specBlock start="\<in\>" end="\<esac\>" contains=ALLBUT,shFunction,shCaseError,@specListedFilesBin
+syn region shCase matchgroup=specBlock contained start=")" end=";;" contains=ALLBUT,shFunction,shCaseError,shCase,@specListedFiles
+
+syn sync match shDoSync grouphere shDo "\<do\>"
+syn sync match shDoSync groupthere shDo "\<done\>"
+syn sync match shIfSync grouphere shIf "\<if\>"
+syn sync match shIfSync groupthere shIf "\<fi\>"
+syn sync match specIfSync grouphere specIf "%ifarch\|%ifos\|%ifnos"
+syn sync match specIfSync groupthere specIf "%endIf"
+syn sync match shForSync grouphere shFor "\<for\>"
+syn sync match shForSync groupthere shFor "\<in\>"
+syn sync match shCaseEsacSync grouphere shCaseEsac "\<case\>"
+syn sync match shCaseEsacSync groupthere shCaseEsac "\<esac\>"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+"main types color definitions
+hi def link specSection Structure
+hi def link specSectionMacro Macro
+hi def link specWWWlink PreProc
+hi def link specOpts Operator
+
+"yes, it's ugly, but white is sooo cool
+if &background == "dark"
+hi def specGlobalMacro ctermfg=white
+else
+hi def link specGlobalMacro Identifier
+endif
+
+"sh colors
+hi def link shComment Comment
+hi def link dnlComment Comment
+hi def link shIf Statement
+hi def link shOperator Special
+hi def link shQuote1 String
+hi def link shQuote2 String
+hi def link shQuoteDelim Statement
+
+"spec colors
+hi def link specBlock Function
+hi def link specColon Special
+hi def link specCommand Statement
+hi def link specCommandOpts specOpts
+hi def link specCommandSpecial Special
+hi def link specComment Comment
+hi def link specConfigure specCommand
+hi def link specDate String
+hi def link specDescriptionOpts specOpts
+hi def link specEmail specWWWlink
+hi def link specError Error
+hi def link specFilesDirective specSectionMacro
+hi def link specFilesOpts specOpts
+hi def link specLicense String
+hi def link specMacroNameLocal specGlobalMacro
+hi def link specMacroNameOther specGlobalMacro
+hi def link specManpageFile NONE
+hi def link specMonth specDate
+hi def link specNoNumberHilite NONE
+hi def link specNumber Number
+hi def link specPackageOpts specOpts
+hi def link specPercent Special
+hi def link specSpecialChar Special
+hi def link specSpecialVariables specGlobalMacro
+hi def link specSpecialVariablesNames specGlobalMacro
+hi def link specTarCommand specCommand
+hi def link specURL specWWWlink
+hi def link specURLMacro specWWWlink
+hi def link specVariables Identifier
+hi def link specWeekday specDate
+hi def link specListedFilesBin Statement
+hi def link specListedFilesDoc Statement
+hi def link specListedFilesEtc Statement
+hi def link specListedFilesLib Statement
+hi def link specListedFilesPrefix Statement
+hi def link specListedFilesShare Statement
+
+
+let b:current_syntax = "spec"
+
+" vim: ts=8
diff --git a/runtime/syntax/specman.vim b/runtime/syntax/specman.vim
new file mode 100644
index 0000000..79c94b7
--- /dev/null
+++ b/runtime/syntax/specman.vim
@@ -0,0 +1,169 @@
+" Vim syntax file
+" Language: SPECMAN E-LANGUAGE
+" Maintainer: Or Freund <or@mobilian.com ;omf@gmx.co.uk; OrMeir@yahoo.com>
+" Last Update: Wed Oct 24 2001
+
+"---------------------------------------------------------
+"| If anyone found an error or fix the parenthesis part |
+"| I will be happy to hear about it |
+"| Thanks Or. |
+"---------------------------------------------------------
+
+" Remove any old syntax stuff hanging around
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn keyword specmanTodo contained TODO todo ToDo FIXME XXX
+
+syn keyword specmanStatement var instance on compute start event expect check that routine
+syn keyword specmanStatement specman is also first only with like
+syn keyword specmanStatement list of all radix hex dec bin ignore illegal
+syn keyword specmanStatement traceable untraceable
+syn keyword specmanStatement cover using count_only trace_only at_least transition item ranges
+syn keyword specmanStatement cross text call task within
+
+syn keyword specmanMethod initialize non_terminal testgroup delayed exit finish
+syn keyword specmanMethod out append print outf appendf
+syn keyword specmanMethod post_generate pre_generate setup_test finalize_test extract_test
+syn keyword specmanMethod init run copy as_a set_config dut_error add clear lock quit
+syn keyword specmanMethod lock unlock release swap quit to_string value stop_run
+syn keyword specmanMethod crc_8 crc_32 crc_32_flip get_config add0 all_indices and_all
+syn keyword specmanMethod apply average count delete exists first_index get_indices
+syn keyword specmanMethod has insert is_a_permutation is_empty key key_exists key_index
+syn keyword specmanMethod last last_index max max_index max_value min min_index
+syn keyword specmanMethod min_value or_all pop pop0 push push0 product resize reverse
+syn keyword specmanMethod sort split sum top top0 unique clear is_all_iterations
+syn keyword specmanMethod get_enclosing_unit hdl_path exec deep_compare deep_compare_physical
+syn keyword specmanMethod pack unpack warning error fatal
+syn match specmanMethod "size()"
+syn keyword specmanPacking packing low high
+syn keyword specmanType locker address
+syn keyword specmanType body code vec chars
+syn keyword specmanType integer real bool int long uint byte bits bit time string
+syn keyword specmanType byte_array external_pointer
+syn keyword specmanBoolean TRUE FALSE
+syn keyword specmanPreCondit #ifdef #ifndef #else
+
+syn keyword specmanConditional choose matches
+syn keyword specmanConditional if then else when try
+
+
+
+syn keyword specmanLabel case casex casez default
+
+syn keyword specmanLogical and or not xor
+
+syn keyword specmanRepeat until repeat while for from to step each do break continue
+syn keyword specmanRepeat before next sequence always -kind network
+syn keyword specmanRepeat index it me in new return result select
+
+syn keyword specmanTemporal cycle sample events forever
+syn keyword specmanTemporal wait change negedge rise fall delay sync sim true detach eventually emit
+
+syn keyword specmanConstant MAX_INT MIN_INT NULL UNDEF
+
+syn keyword specmanDefine define as computed type extend
+syn keyword specmanDefine verilog vhdl variable global sys
+syn keyword specmanStructure struct unit
+syn keyword specmanInclude import
+syn keyword specmanConstraint gen keep keeping soft before
+
+syn keyword specmanSpecial untyped symtab ECHO DOECHO
+syn keyword specmanFile files load module ntv source_ref script read write
+syn keyword specmanFSM initial idle others posedge clock cycles
+
+
+syn match specmanOperator "[&|~><!)(*%@+/=?:;}{,.\^\-\[\]]"
+syn match specmanOperator "+="
+syn match specmanOperator "-="
+syn match specmanOperator "*="
+
+syn match specmanComment "//.*" contains=specmanTodo
+syn match specmanComment "--.*"
+syn region specmanComment start="^'>"hs=s+2 end="^<'"he=e-2
+
+syn match specmanHDL "'[`.a-zA-Z0-9_@\[\]]\+\>'"
+
+
+syn match specmanCompare "=="
+syn match specmanCompare "!==="
+syn match specmanCompare "==="
+syn match specmanCompare "!="
+syn match specmanCompare ">="
+syn match specmanCompare "<="
+syn match specmanNumber "[0-9]:[0-9]"
+syn match specmanNumber "\(\<\d\+\|\)'[bB]\s*[0-1_xXzZ?]\+\>"
+syn match specmanNumber "0[bB]\s*[0-1_xXzZ?]\+\>"
+syn match specmanNumber "\(\<\d\+\|\)'[oO]\s*[0-7_xXzZ?]\+\>"
+syn match specmanNumber "0[oO]\s*[0-9a-fA-F_xXzZ?]\+\>"
+syn match specmanNumber "\(\<\d\+\|\)'[dD]\s*[0-9_xXzZ?]\+\>"
+syn match specmanNumber "\(\<\d\+\|\)'[hH]\s*[0-9a-fA-F_xXzZ?]\+\>"
+syn match specmanNumber "0[xX]\s*[0-9a-fA-F_xXzZ?]\+\>"
+syn match specmanNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)\>"
+
+syn region specmanString start=+"+ end=+"+
+
+
+
+"**********************************************************************
+" I took this section from c.vim but I didnt succeded to make it work
+" ANY one who dare jumping to this deep watter is more than welocome!
+"**********************************************************************
+""catch errors caused by wrong parenthesis and brackets
+
+"syn cluster specmanParenGroup contains=specmanParenError
+"" ,specmanNumbera,specmanComment
+"if exists("specman_no_bracket_error")
+"syn region specmanParen transparent start='(' end=')' contains=ALLBUT,@specmanParenGroup
+"syn match specmanParenError ")"
+"syn match specmanErrInParen contained "[{}]"
+"else
+"syn region specmanParen transparent start='(' end=')' contains=ALLBUT,@specmanParenGroup,specmanErrInBracket
+"syn match specmanParenError "[\])]"
+"syn match specmanErrInParen contained "[\]{}]"
+"syn region specmanBracket transparent start='\[' end=']' contains=ALLBUT,@specmanParenGroup,specmanErrInParen
+"syn match specmanErrInBracket contained "[);{}]"
+"endif
+"
+
+"Modify the following as needed. The trade-off is performance versus
+"functionality.
+
+syn sync lines=50
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+" The default methods for highlighting. Can be overridden later
+hi def link specmanConditional Conditional
+hi def link specmanConstraint Conditional
+hi def link specmanRepeat Repeat
+hi def link specmanString String
+hi def link specmanComment Comment
+hi def link specmanConstant Macro
+hi def link specmanNumber Number
+hi def link specmanCompare Operator
+hi def link specmanOperator Operator
+hi def link specmanLogical Operator
+hi def link specmanStatement Statement
+hi def link specmanHDL SpecialChar
+hi def link specmanMethod Function
+hi def link specmanInclude Include
+hi def link specmanStructure Structure
+hi def link specmanBoolean Boolean
+hi def link specmanFSM Label
+hi def link specmanSpecial Special
+hi def link specmanType Type
+hi def link specmanTemporal Type
+hi def link specmanFile Include
+hi def link specmanPreCondit Include
+hi def link specmanDefine Typedef
+hi def link specmanLabel Label
+hi def link specmanPacking keyword
+hi def link specmanTodo Todo
+hi def link specmanParenError Error
+hi def link specmanErrInParen Error
+hi def link specmanErrInBracket Error
+
+let b:current_syntax = "specman"
diff --git a/runtime/syntax/spice.vim b/runtime/syntax/spice.vim
new file mode 100644
index 0000000..306039b
--- /dev/null
+++ b/runtime/syntax/spice.vim
@@ -0,0 +1,75 @@
+" Vim syntax file
+" Language: Spice circuit simulator input netlist
+" Maintainer: Noam Halevy <Noam.Halevy.motorola.com>
+" Last Change: 2012 Jun 01
+" (Dominique Pelle added @Spell)
+"
+" This is based on sh.vim by Lennart Schultz
+" but greatly simplified
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" spice syntax is case INsensitive
+syn case ignore
+
+syn keyword spiceTodo contained TODO
+
+syn match spiceComment "^ \=\*.*$" contains=@Spell
+syn match spiceComment "\$.*$" contains=@Spell
+
+" Numbers, all with engineering suffixes and optional units
+"==========================================================
+"floating point number, with dot, optional exponent
+syn match spiceNumber "\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\="
+"floating point number, starting with a dot, optional exponent
+syn match spiceNumber "\.[0-9]\+\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\="
+"integer number with optional exponent
+syn match spiceNumber "\<[0-9]\+\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\="
+
+" Misc
+"=====
+syn match spiceWrapLineOperator "\\$"
+syn match spiceWrapLineOperator "^+"
+
+syn match spiceStatement "^ \=\.\I\+"
+
+" Matching pairs of parentheses
+"==========================================
+syn region spiceParen transparent matchgroup=spiceOperator start="(" end=")" contains=ALLBUT,spiceParenError
+syn region spiceSinglequote matchgroup=spiceOperator start=+'+ end=+'+
+
+" Errors
+"=======
+syn match spiceParenError ")"
+
+" Syncs
+" =====
+syn sync minlines=50
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link spiceTodo Todo
+hi def link spiceWrapLineOperator spiceOperator
+hi def link spiceSinglequote spiceExpr
+hi def link spiceExpr Function
+hi def link spiceParenError Error
+hi def link spiceStatement Statement
+hi def link spiceNumber Number
+hi def link spiceComment Comment
+hi def link spiceOperator Operator
+
+
+let b:current_syntax = "spice"
+
+" insert the following to $VIM/syntax/scripts.vim
+" to autodetect HSpice netlists and text listing output:
+"
+" " Spice netlists and text listings
+" elseif getline(1) =~ 'spice\>' || getline("$") =~ '^\.end'
+" so <sfile>:p:h/spice.vim
+
+" vim: ts=8
diff --git a/runtime/syntax/splint.vim b/runtime/syntax/splint.vim
new file mode 100644
index 0000000..8eba57d
--- /dev/null
+++ b/runtime/syntax/splint.vim
@@ -0,0 +1,243 @@
+" Vim syntax file
+" Language: splint (C with lclint/splint Annotations)
+" Maintainer: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+" Splint Home: http://www.splint.org/
+" Last Change: $Date: 2004/06/13 20:08:47 $
+" $Revision: 1.1 $
+
+" Note: Splint annotated files are not detected by default.
+" If you want to use this file for highlighting C code,
+" please make sure splint.vim is sourced instead of c.vim,
+" for example by putting
+" /* vim: set filetype=splint : */
+" at the end of your code or something like
+" au! BufRead,BufNewFile *.c setfiletype splint
+" in your vimrc file or filetype.vim
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the C syntax to start with
+runtime! syntax/c.vim
+
+
+" FIXME: uses and changes several clusters defined in c.vim
+" so watch for changes there
+
+" TODO: make a little more grammar explicit
+" match flags with hyphen and underscore notation
+" match flag expanded forms
+" accept other comment char than @
+
+syn case match
+" splint annotations (taken from 'splint -help annotations')
+syn match splintStateAnnot contained "\(pre\|post\):\(only\|shared\|owned\|dependent\|observer\|exposed\|isnull\|notnull\)"
+syn keyword splintSpecialAnnot contained special
+syn keyword splintSpecTag contained uses sets defines allocated releases
+syn keyword splintModifies contained modifies
+syn keyword splintRequires contained requires ensures
+syn keyword splintGlobals contained globals
+syn keyword splintGlobitem contained internalState fileSystem
+syn keyword splintGlobannot contained undef killed
+syn keyword splintWarning contained warn
+
+syn keyword splintModitem contained internalState fileSystem nothing
+syn keyword splintReqitem contained MaxSet MaxRead result
+syn keyword splintIter contained iter yield
+syn keyword splintConst contained constant
+syn keyword splintAlt contained alt
+
+syn keyword splintType contained abstract concrete mutable immutable refcounted numabstract
+syn keyword splintGlobalType contained unchecked checkmod checked checkedstrict
+syn keyword splintMemMgm contained dependent keep killref only owned shared temp
+syn keyword splintAlias contained unique returned
+syn keyword splintExposure contained observer exposed
+syn keyword splintDefState contained out in partial reldef
+syn keyword splintGlobState contained undef killed
+syn keyword splintNullState contained null notnull relnull
+syn keyword splintNullPred contained truenull falsenull nullwhentrue falsewhennull
+syn keyword splintExit contained exits mayexit trueexit falseexit neverexit
+syn keyword splintExec contained noreturn maynotreturn noreturnwhentrue noreturnwhenfalse alwaysreturns
+syn keyword splintSef contained sef
+syn keyword splintDecl contained unused external
+syn keyword splintCase contained fallthrough
+syn keyword splintBreak contained innerbreak loopbreak switchbreak innercontinue
+syn keyword splintUnreach contained notreached
+syn keyword splintSpecFunc contained printflike scanflike messagelike
+
+" TODO: make these region or match
+syn keyword splintErrSupp contained i ignore end t
+syn match splintErrSupp contained "[it]\d\+\>"
+syn keyword splintTypeAcc contained access noaccess
+
+syn keyword splintMacro contained notfunction
+syn match splintSpecType contained "\(\|unsigned\|signed\)integraltype"
+
+" Flags taken from 'splint -help flags full' divided in local and global flags
+" Local Flags:
+syn keyword splintFlag contained abstract abstractcompare accessall accessczech accessczechoslovak
+syn keyword splintFlag contained accessfile accessmodule accessslovak aliasunique allblock
+syn keyword splintFlag contained allempty allglobs allimponly allmacros alwaysexits
+syn keyword splintFlag contained annotationerror ansi89limits assignexpose badflag bitwisesigned
+syn keyword splintFlag contained boolcompare boolfalse boolint boolops booltrue
+syn keyword splintFlag contained booltype bounds boundscompacterrormessages boundsread boundswrite
+syn keyword splintFlag contained branchstate bufferoverflow bufferoverflowhigh bugslimit casebreak
+syn keyword splintFlag contained caseinsensitivefilenames castexpose castfcnptr charindex charint
+syn keyword splintFlag contained charintliteral charunsignedchar checkedglobalias checkmodglobalias checkpost
+syn keyword splintFlag contained checkstrictglobalias checkstrictglobs codeimponly commentchar commenterror
+syn keyword splintFlag contained compdef compdestroy compmempass constmacros constprefix
+syn keyword splintFlag contained constprefixexclude constuse continuecomment controlnestdepth cppnames
+syn keyword splintFlag contained csvoverwrite czech czechconsts czechfcns czechmacros
+syn keyword splintFlag contained czechoslovak czechoslovakconsts czechoslovakfcns czechoslovakmacros czechoslovaktypes
+syn keyword splintFlag contained czechoslovakvars czechtypes czechvars debugfcnconstraint declundef
+syn keyword splintFlag contained deepbreak deparrays dependenttrans distinctexternalnames distinctinternalnames
+syn keyword splintFlag contained duplicatecases duplicatequals elseifcomplete emptyret enumindex
+syn keyword splintFlag contained enumint enummembers enummemuse enumprefix enumprefixexclude
+syn keyword splintFlag contained evalorder evalorderuncon exitarg exportany exportconst
+syn keyword splintFlag contained exportfcn exportheader exportheadervar exportiter exportlocal
+syn keyword splintFlag contained exportmacro exporttype exportvar exposetrans externalnamecaseinsensitive
+syn keyword splintFlag contained externalnamelen externalprefix externalprefixexclude fcnderef fcnmacros
+syn keyword splintFlag contained fcnpost fcnuse fielduse fileextensions filestaticprefix
+syn keyword splintFlag contained filestaticprefixexclude firstcase fixedformalarray floatdouble forblock
+syn keyword splintFlag contained forcehints forempty forloopexec formalarray formatcode
+syn keyword splintFlag contained formatconst formattype forwarddecl freshtrans fullinitblock
+syn keyword splintFlag contained globalias globalprefix globalprefixexclude globimponly globnoglobs
+syn keyword splintFlag contained globs globsimpmodsnothing globstate globuse gnuextensions
+syn keyword splintFlag contained grammar hasyield hints htmlfileformat ifblock
+syn keyword splintFlag contained ifempty ignorequals ignoresigns immediatetrans impabstract
+syn keyword splintFlag contained impcheckedglobs impcheckedspecglobs impcheckedstatics impcheckedstrictglobs impcheckedstrictspecglobs
+syn keyword splintFlag contained impcheckedstrictstatics impcheckmodglobs impcheckmodinternals impcheckmodspecglobs impcheckmodstatics
+syn keyword splintFlag contained impconj implementationoptional implictconstraint impouts imptype
+syn keyword splintFlag contained includenest incompletetype incondefs incondefslib indentspaces
+syn keyword splintFlag contained infloops infloopsuncon initallelements initsize internalglobs
+syn keyword splintFlag contained internalglobsnoglobs internalnamecaseinsensitive internalnamelen internalnamelookalike iso99limits
+syn keyword splintFlag contained isoreserved isoreservedinternal iterbalance iterloopexec iterprefix
+syn keyword splintFlag contained iterprefixexclude iteryield its4low its4moderate its4mostrisky
+syn keyword splintFlag contained its4risky its4veryrisky keep keeptrans kepttrans
+syn keyword splintFlag contained legacy libmacros likelyboundsread likelyboundswrite likelybool
+syn keyword splintFlag contained likelybounds limit linelen lintcomments localprefix
+syn keyword splintFlag contained localprefixexclude locindentspaces longint longintegral longsignedintegral
+syn keyword splintFlag contained longunsignedintegral longunsignedunsignedintegral loopexec looploopbreak looploopcontinue
+syn keyword splintFlag contained loopswitchbreak macroassign macroconstdecl macrodecl macroempty
+syn keyword splintFlag contained macrofcndecl macromatchname macroparams macroparens macroredef
+syn keyword splintFlag contained macroreturn macrostmt macrounrecog macrovarprefix macrovarprefixexclude
+syn keyword splintFlag contained maintype matchanyintegral matchfields mayaliasunique memchecks
+syn keyword splintFlag contained memimp memtrans misplacedsharequal misscase modfilesys
+syn keyword splintFlag contained modglobs modglobsnomods modglobsunchecked modinternalstrict modnomods
+syn keyword splintFlag contained modobserver modobserveruncon mods modsimpnoglobs modstrictglobsnomods
+syn keyword splintFlag contained moduncon modunconnomods modunspec multithreaded mustdefine
+syn keyword splintFlag contained mustfree mustfreefresh mustfreeonly mustmod mustnotalias
+syn keyword splintFlag contained mutrep namechecks needspec nestcomment nestedextern
+syn keyword splintFlag contained newdecl newreftrans nextlinemacros noaccess nocomments
+syn keyword splintFlag contained noeffect noeffectuncon noparams nopp noret
+syn keyword splintFlag contained null nullassign nullderef nullinit nullpass
+syn keyword splintFlag contained nullptrarith nullret nullstate nullterminated
+syn keyword splintFlag contained numabstract numabstractcast numabstractindex numabstractlit numabstractprint
+syn keyword splintFlag contained numenummembers numliteral numstructfields observertrans obviousloopexec
+syn keyword splintFlag contained oldstyle onlytrans onlyunqglobaltrans orconstraint overload
+syn keyword splintFlag contained ownedtrans paramimptemp paramuse parenfileformat partial
+syn keyword splintFlag contained passunknown portability predassign predbool predboolint
+syn keyword splintFlag contained predboolothers predboolptr preproc protoparammatch protoparamname
+syn keyword splintFlag contained protoparamprefix protoparamprefixexclude ptrarith ptrcompare ptrnegate
+syn keyword splintFlag contained quiet readonlystrings readonlytrans realcompare redecl
+syn keyword splintFlag contained redef redundantconstraints redundantsharequal refcounttrans relaxquals
+syn keyword splintFlag contained relaxtypes repeatunrecog repexpose retalias retexpose
+syn keyword splintFlag contained retimponly retval retvalbool retvalint retvalother
+syn keyword splintFlag contained sefparams sefuncon shadow sharedtrans shiftimplementation
+syn keyword splintFlag contained shiftnegative shortint showallconjs showcolumn showconstraintlocation
+syn keyword splintFlag contained showconstraintparens showdeephistory showfunc showloadloc showscan
+syn keyword splintFlag contained showsourceloc showsummary sizeofformalarray sizeoftype skipisoheaders
+syn keyword splintFlag contained skipposixheaders slashslashcomment slovak slovakconsts slovakfcns
+syn keyword splintFlag contained slovakmacros slovaktypes slovakvars specglobimponly specimponly
+syn keyword splintFlag contained specmacros specretimponly specstructimponly specundecl specundef
+syn keyword splintFlag contained stackref statemerge statetransfer staticinittrans statictrans
+syn keyword splintFlag contained strictbranchstate strictdestroy strictops strictusereleased stringliterallen
+syn keyword splintFlag contained stringliteralnoroom stringliteralnoroomfinalnull stringliteralsmaller stringliteraltoolong structimponly
+syn keyword splintFlag contained superuser switchloopbreak switchswitchbreak syntax sysdirerrors
+syn keyword splintFlag contained sysdirexpandmacros sysunrecog tagprefix tagprefixexclude temptrans
+syn keyword splintFlag contained tmpcomments toctou topuse trytorecover type
+syn keyword splintFlag contained typeprefix typeprefixexclude typeuse uncheckedglobalias uncheckedmacroprefix
+syn keyword splintFlag contained uncheckedmacroprefixexclude uniondef unixstandard unqualifiedinittrans unqualifiedtrans
+syn keyword splintFlag contained unreachable unrecog unrecogcomments unrecogdirective unrecogflagcomments
+syn keyword splintFlag contained unsignedcompare unusedspecial usedef usereleased usevarargs
+syn keyword splintFlag contained varuse voidabstract warnflags warnlintcomments warnmissingglobs
+syn keyword splintFlag contained warnmissingglobsnoglobs warnposixheaders warnrc warnsysfiles warnunixlib
+syn keyword splintFlag contained warnuse whileblock whileempty whileloopexec zerobool
+syn keyword splintFlag contained zeroptr
+" Global Flags:
+syn keyword splintGlobalFlag contained csv dump errorstream errorstreamstderr errorstreamstdout
+syn keyword splintGlobalFlag contained expect f help i isolib
+syn keyword splintGlobalFlag contained larchpath lclexpect lclimportdir lcs lh
+syn keyword splintGlobalFlag contained load messagestream messagestreamstderr messagestreamstdout mts
+syn keyword splintGlobalFlag contained neverinclude nof nolib posixlib posixstrictlib
+syn keyword splintGlobalFlag contained showalluses singleinclude skipsysheaders stats streamoverwrite
+syn keyword splintGlobalFlag contained strictlib supcounts sysdirs timedist tmpdir
+syn keyword splintGlobalFlag contained unixlib unixstrictlib warningstream warningstreamstderr warningstreamstdout
+syn keyword splintGlobalFlag contained whichlib
+syn match splintFlagExpr contained "[\+\-\=]" nextgroup=splintFlag,splintGlobalFlag
+
+" detect missing /*@ and wrong */
+syn match splintAnnError "@\*/"
+syn cluster cCommentGroup add=splintAnnError
+syn match splintAnnError2 "[^@]\*/"hs=s+1 contained
+syn region splintAnnotation start="/\*@" end="@\*/" contains=@splintAnnotElem,cType keepend
+syn match splintShortAnn "/\*@\*/"
+syn cluster splintAnnotElem contains=splintStateAnnot,splintSpecialAnnot,splintSpecTag,splintModifies,splintRequires,splintGlobals,splintGlobitem,splintGlobannot,splintWarning,splintModitem,splintIter,splintConst,splintAlt,splintType,splintGlobalType,splintMemMgm,splintAlias,splintExposure,splintDefState,splintGlobState,splintNullState,splintNullPred,splintExit,splintExec,splintSef,splintDecl,splintCase,splintBreak,splintUnreach,splintSpecFunc,splintErrSupp,splintTypeAcc,splintMacro,splintSpecType,splintAnnError2,splintFlagExpr
+syn cluster splintAllStuff contains=@splintAnnotElem,splintFlag,splintGlobalFlag
+syn cluster cParenGroup add=@splintAllStuff
+syn cluster cPreProcGroup add=@splintAllStuff
+syn cluster cMultiGroup add=@splintAllStuff
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link splintShortAnn splintAnnotation
+hi def link splintAnnotation Comment
+hi def link splintAnnError splintError
+hi def link splintAnnError2 splintError
+hi def link splintFlag SpecialComment
+hi def link splintGlobalFlag splintError
+hi def link splintSpecialAnnot splintAnnKey
+hi def link splintStateAnnot splintAnnKey
+hi def link splintSpecTag splintAnnKey
+hi def link splintModifies splintAnnKey
+hi def link splintRequires splintAnnKey
+hi def link splintGlobals splintAnnKey
+hi def link splintGlobitem Constant
+hi def link splintGlobannot splintAnnKey
+hi def link splintWarning splintAnnKey
+hi def link splintModitem Constant
+hi def link splintIter splintAnnKey
+hi def link splintConst splintAnnKey
+hi def link splintAlt splintAnnKey
+hi def link splintType splintAnnKey
+hi def link splintGlobalType splintAnnKey
+hi def link splintMemMgm splintAnnKey
+hi def link splintAlias splintAnnKey
+hi def link splintExposure splintAnnKey
+hi def link splintDefState splintAnnKey
+hi def link splintGlobState splintAnnKey
+hi def link splintNullState splintAnnKey
+hi def link splintNullPred splintAnnKey
+hi def link splintExit splintAnnKey
+hi def link splintExec splintAnnKey
+hi def link splintSef splintAnnKey
+hi def link splintDecl splintAnnKey
+hi def link splintCase splintAnnKey
+hi def link splintBreak splintAnnKey
+hi def link splintUnreach splintAnnKey
+hi def link splintSpecFunc splintAnnKey
+hi def link splintErrSupp splintAnnKey
+hi def link splintTypeAcc splintAnnKey
+hi def link splintMacro splintAnnKey
+hi def link splintSpecType splintAnnKey
+hi def link splintAnnKey Type
+hi def link splintError Error
+
+
+let b:current_syntax = "splint"
+
+" vim: ts=8
diff --git a/runtime/syntax/spup.vim b/runtime/syntax/spup.vim
new file mode 100644
index 0000000..9284abf
--- /dev/null
+++ b/runtime/syntax/spup.vim
@@ -0,0 +1,269 @@
+" Vim syntax file
+" Language: Speedup, plant simulator from AspenTech
+" Maintainer: Stefan.Schwarzer <s.schwarzer@ndh.net>
+" URL: http://www.ndh.net/home/sschwarzer/download/spup.vim
+" Last Change: 2012 Feb 03 by Thilo Six
+" Filename: spup.vim
+
+" Bugs
+" - in the appropriate sections keywords are always highlighted
+" even if they are not used with the appropriate meaning;
+" example: in
+" MODEL demonstration
+" TYPE
+" *area AS area
+" both "area" are highlighted as spupType.
+"
+" If you encounter problems or have questions or suggestions, mail me
+
+" Remove old syntax stuff
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" don't highlight several keywords like subsections
+"let strict_subsections = 1
+
+" highlight types usually found in DECLARE section
+if !exists("hightlight_types")
+ let highlight_types = 1
+endif
+
+" one line comment syntax (# comments)
+" 1. allow appended code after comment, do not complain
+" 2. show code beginning with the second # as an error
+" 3. show whole lines with more than one # as an error
+if !exists("oneline_comments")
+ let oneline_comments = 2
+endif
+
+" Speedup SECTION regions
+syn case ignore
+syn region spupCdi matchgroup=spupSection start="^CDI" end="^\*\*\*\*" contains=spupCdiSubs,@spupOrdinary
+syn region spupConditions matchgroup=spupSection start="^CONDITIONS" end="^\*\*\*\*" contains=spupConditionsSubs,@spupOrdinary,spupConditional,spupOperator,spupCode
+syn region spupDeclare matchgroup=spupSection start="^DECLARE" end="^\*\*\*\*" contains=spupDeclareSubs,@spupOrdinary,spupTypes,spupCode
+syn region spupEstimation matchgroup=spupSection start="^ESTIMATION" end="^\*\*\*\*" contains=spupEstimationSubs,@spupOrdinary
+syn region spupExternal matchgroup=spupSection start="^EXTERNAL" end="^\*\*\*\*" contains=spupExternalSubs,@spupOrdinary
+syn region spupFlowsheet matchgroup=spupSection start="^FLOWSHEET" end="^\*\*\*\*" contains=spupFlowsheetSubs,@spupOrdinary,spupStreams,@spupTextproc
+syn region spupFunction matchgroup=spupSection start="^FUNCTION" end="^\*\*\*\*" contains=spupFunctionSubs,@spupOrdinary,spupHelp,spupCode,spupTypes
+syn region spupGlobal matchgroup=spupSection start="^GLOBAL" end="^\*\*\*\*" contains=spupGlobalSubs,@spupOrdinary
+syn region spupHomotopy matchgroup=spupSection start="^HOMOTOPY" end="^\*\*\*\*" contains=spupHomotopySubs,@spupOrdinary
+syn region spupMacro matchgroup=spupSection start="^MACRO" end="^\*\*\*\*" contains=spupMacroSubs,@spupOrdinary,@spupTextproc,spupTypes,spupStreams,spupOperator
+syn region spupModel matchgroup=spupSection start="^MODEL" end="^\*\*\*\*" contains=spupModelSubs,@spupOrdinary,spupConditional,spupOperator,spupTypes,spupStreams,@spupTextproc,spupHelp
+syn region spupOperation matchgroup=spupSection start="^OPERATION" end="^\*\*\*\*" contains=spupOperationSubs,@spupOrdinary,@spupTextproc
+syn region spupOptions matchgroup=spupSection start="^OPTIONS" end="^\*\*\*\*" contains=spupOptionsSubs,@spupOrdinary
+syn region spupProcedure matchgroup=spupSection start="^PROCEDURE" end="^\*\*\*\*" contains=spupProcedureSubs,@spupOrdinary,spupHelp,spupCode,spupTypes
+syn region spupProfiles matchgroup=spupSection start="^PROFILES" end="^\*\*\*\*" contains=@spupOrdinary,@spupTextproc
+syn region spupReport matchgroup=spupSection start="^REPORT" end="^\*\*\*\*" contains=spupReportSubs,@spupOrdinary,spupHelp,@spupTextproc
+syn region spupTitle matchgroup=spupSection start="^TITLE" end="^\*\*\*\*" contains=spupTitleSubs,spupComment,spupConstant,spupError
+syn region spupUnit matchgroup=spupSection start="^UNIT" end="^\*\*\*\*" contains=spupUnitSubs,@spupOrdinary
+
+" Subsections
+syn keyword spupCdiSubs INPUT FREE OUTPUT LINEARTIME MINNONZERO CALCULATE FILES SCALING contained
+syn keyword spupDeclareSubs TYPE STREAM contained
+syn keyword spupEstimationSubs ESTIMATE SSEXP DYNEXP RESULT contained
+syn keyword spupExternalSubs TRANSMIT RECEIVE contained
+syn keyword spupFlowsheetSubs STREAM contained
+syn keyword spupFunctionSubs INPUT OUTPUT contained
+syn keyword spupGlobalSubs VARIABLES MAXIMIZE MINIMIZE CONSTRAINT contained
+syn keyword spupHomotopySubs VARY OPTIONS contained
+syn keyword spupMacroSubs MODEL FLOWSHEET contained
+syn keyword spupModelSubs CATEGORY SET TYPE STREAM EQUATION PROCEDURE contained
+syn keyword spupOperationSubs SET PRESET INITIAL SSTATE FREE contained
+syn keyword spupOptionsSubs ROUTINES TRANSLATE EXECUTION contained
+syn keyword spupProcedureSubs INPUT OUTPUT SPACE PRECALL POSTCALL DERIVATIVE STREAM contained
+" no subsections for Profiles
+syn keyword spupReportSubs SET INITIAL FIELDS FIELDMARK DISPLAY WITHIN contained
+syn keyword spupUnitSubs ROUTINES SET contained
+
+" additional keywords for subsections
+if !exists( "strict_subsections" )
+ syn keyword spupConditionsSubs STOP PRINT contained
+ syn keyword spupDeclareSubs UNIT SET COMPONENTS THERMO OPTIONS contained
+ syn keyword spupEstimationSubs VARY MEASURE INITIAL contained
+ syn keyword spupFlowsheetSubs TYPE FEED PRODUCT INPUT OUTPUT CONNECTION OF IS contained
+ syn keyword spupMacroSubs CONNECTION STREAM SET INPUT OUTPUT OF IS FEED PRODUCT TYPE contained
+ syn keyword spupModelSubs AS ARRAY OF INPUT OUTPUT CONNECTION contained
+ syn keyword spupOperationSubs WITHIN contained
+ syn keyword spupReportSubs LEFT RIGHT CENTER CENTRE UOM TIME DATE VERSION RELDATE contained
+ syn keyword spupUnitSubs IS A contained
+endif
+
+" Speedup data types
+if exists( "highlight_types" )
+ syn keyword spupTypes act_coeff_liq area coefficient concentration contained
+ syn keyword spupTypes control_signal cond_liq cond_vap cp_mass_liq contained
+ syn keyword spupTypes cp_mol_liq cp_mol_vap cv_mol_liq cv_mol_vap contained
+ syn keyword spupTypes diffus_liq diffus_vap delta_p dens_mass contained
+ syn keyword spupTypes dens_mass_sol dens_mass_liq dens_mass_vap dens_mol contained
+ syn keyword spupTypes dens_mol_sol dens_mol_liq dens_mol_vap enthflow contained
+ syn keyword spupTypes enth_mass enth_mass_liq enth_mass_vap enth_mol contained
+ syn keyword spupTypes enth_mol_sol enth_mol_liq enth_mol_vap entr_mol contained
+ syn keyword spupTypes entr_mol_sol entr_mol_liq entr_mol_vap fraction contained
+ syn keyword spupTypes flow_mass flow_mass_liq flow_mass_vap flow_mol contained
+ syn keyword spupTypes flow_mol_vap flow_mol_liq flow_vol flow_vol_vap contained
+ syn keyword spupTypes flow_vol_liq fuga_vap fuga_liq fuga_sol contained
+ syn keyword spupTypes gibb_mol_sol heat_react heat_trans_coeff contained
+ syn keyword spupTypes holdup_heat holdup_heat_liq holdup_heat_vap contained
+ syn keyword spupTypes holdup_mass holdup_mass_liq holdup_mass_vap contained
+ syn keyword spupTypes holdup_mol holdup_mol_liq holdup_mol_vap k_value contained
+ syn keyword spupTypes length length_delta length_short liqfraction contained
+ syn keyword spupTypes liqmassfraction mass massfraction molefraction contained
+ syn keyword spupTypes molweight moment_inertia negative notype percent contained
+ syn keyword spupTypes positive pressure press_diff press_drop press_rise contained
+ syn keyword spupTypes ratio reaction reaction_mass rotation surf_tens contained
+ syn keyword spupTypes temperature temperature_abs temp_diff temp_drop contained
+ syn keyword spupTypes temp_rise time vapfraction vapmassfraction contained
+ syn keyword spupTypes velocity visc_liq visc_vap volume zmom_rate contained
+ syn keyword spupTypes seg_rate smom_rate tmom_rate zmom_mass seg_mass contained
+ syn keyword spupTypes smom_mass tmom_mass zmom_holdup seg_holdup contained
+ syn keyword spupTypes smom_holdup tmom_holdup contained
+endif
+
+" stream types
+syn keyword spupStreams mainstream vapour liquid contained
+
+" "conditional" keywords
+syn keyword spupConditional IF THEN ELSE ENDIF contained
+" Operators, symbols etc.
+syn keyword spupOperator AND OR NOT contained
+syn match spupSymbol "[,\-+=:;*/\"<>@%()]" contained
+syn match spupSpecial "[&\$?]" contained
+" Surprisingly, Speedup allows no unary + instead of the -
+syn match spupError "[(=+\-*/]\s*+\d\+\([ed][+-]\=\d\+\)\=\>"lc=1 contained
+syn match spupError "[(=+\-*/]\s*+\d\+\.\([ed][+-]\=\d\+\)\=\>"lc=1 contained
+syn match spupError "[(=+\-*/]\s*+\d*\.\d\+\([ed][+-]\=\d\+\)\=\>"lc=1 contained
+" String
+syn region spupString start=+"+ end=+"+ oneline contained
+syn region spupString start=+'+ end=+'+ oneline contained
+" Identifier
+syn match spupIdentifier "\<[a-z][a-z0-9_]*\>" contained
+" Textprocessor directives
+syn match spupTextprocGeneric "?[a-z][a-z0-9_]*\>" contained
+syn region spupTextprocError matchgroup=spupTextprocGeneric start="?ERROR" end="?END"he=s-1 contained
+" Number, without decimal point
+syn match spupNumber "-\=\d\+\([ed][+-]\=\d\+\)\=" contained
+" Number, allows 1. before exponent
+syn match spupNumber "-\=\d\+\.\([ed][+-]\=\d\+\)\=" contained
+" Number allows .1 before exponent
+syn match spupNumber "-\=\d*\.\d\+\([ed][+-]\=\d\+\)\=" contained
+" Help subsections
+syn region spupHelp start="^HELP"hs=e+1 end="^\$ENDHELP"he=s-1 contained
+" Fortran code
+syn region spupCode start="^CODE"hs=e+1 end="^\$ENDCODE"he=s-1 contained
+" oneline comments
+if oneline_comments > 3
+ oneline_comments = 2 " default
+endif
+if oneline_comments == 1
+ syn match spupComment "#[^#]*#\="
+elseif oneline_comments == 2
+ syn match spupError "#.*$"
+ syn match spupComment "#[^#]*" nextgroup=spupError
+elseif oneline_comments == 3
+ syn match spupComment "#[^#]*"
+ syn match spupError "#[^#]*#.*"
+endif
+" multiline comments
+syn match spupOpenBrace "{" contained
+syn match spupError "}"
+syn region spupComment matchgroup=spupComment2 start="{" end="}" keepend contains=spupOpenBrace
+
+syn cluster spupOrdinary contains=spupNumber,spupIdentifier,spupSymbol
+syn cluster spupOrdinary add=spupError,spupString,spupComment
+syn cluster spupTextproc contains=spupTextprocGeneric,spupTextprocError
+
+" define synchronizing; especially OPERATION sections can become very large
+syn sync clear
+syn sync minlines=100
+syn sync maxlines=500
+
+syn sync match spupSyncOperation grouphere spupOperation "^OPERATION"
+syn sync match spupSyncCdi grouphere spupCdi "^CDI"
+syn sync match spupSyncConditions grouphere spupConditions "^CONDITIONS"
+syn sync match spupSyncDeclare grouphere spupDeclare "^DECLARE"
+syn sync match spupSyncEstimation grouphere spupEstimation "^ESTIMATION"
+syn sync match spupSyncExternal grouphere spupExternal "^EXTERNAL"
+syn sync match spupSyncFlowsheet grouphere spupFlowsheet "^FLOWSHEET"
+syn sync match spupSyncFunction grouphere spupFunction "^FUNCTION"
+syn sync match spupSyncGlobal grouphere spupGlobal "^GLOBAL"
+syn sync match spupSyncHomotopy grouphere spupHomotopy "^HOMOTOPY"
+syn sync match spupSyncMacro grouphere spupMacro "^MACRO"
+syn sync match spupSyncModel grouphere spupModel "^MODEL"
+syn sync match spupSyncOperation grouphere spupOperation "^OPERATION"
+syn sync match spupSyncOptions grouphere spupOptions "^OPTIONS"
+syn sync match spupSyncProcedure grouphere spupProcedure "^PROCEDURE"
+syn sync match spupSyncProfiles grouphere spupProfiles "^PROFILES"
+syn sync match spupSyncReport grouphere spupReport "^REPORT"
+syn sync match spupSyncTitle grouphere spupTitle "^TITLE"
+syn sync match spupSyncUnit grouphere spupUnit "^UNIT"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link spupCdi spupSection
+hi def link spupConditions spupSection
+hi def link spupDeclare spupSection
+hi def link spupEstimation spupSection
+hi def link spupExternal spupSection
+hi def link spupFlowsheet spupSection
+hi def link spupFunction spupSection
+hi def link spupGlobal spupSection
+hi def link spupHomotopy spupSection
+hi def link spupMacro spupSection
+hi def link spupModel spupSection
+hi def link spupOperation spupSection
+hi def link spupOptions spupSection
+hi def link spupProcedure spupSection
+hi def link spupProfiles spupSection
+hi def link spupReport spupSection
+hi def link spupTitle spupConstant " this is correct, truly ;)
+hi def link spupUnit spupSection
+
+hi def link spupCdiSubs spupSubs
+hi def link spupConditionsSubs spupSubs
+hi def link spupDeclareSubs spupSubs
+hi def link spupEstimationSubs spupSubs
+hi def link spupExternalSubs spupSubs
+hi def link spupFlowsheetSubs spupSubs
+hi def link spupFunctionSubs spupSubs
+hi def link spupHomotopySubs spupSubs
+hi def link spupMacroSubs spupSubs
+hi def link spupModelSubs spupSubs
+hi def link spupOperationSubs spupSubs
+hi def link spupOptionsSubs spupSubs
+hi def link spupProcedureSubs spupSubs
+hi def link spupReportSubs spupSubs
+hi def link spupUnitSubs spupSubs
+
+hi def link spupCode Normal
+hi def link spupComment Comment
+hi def link spupComment2 spupComment
+hi def link spupConditional Statement
+hi def link spupConstant Constant
+hi def link spupError Error
+hi def link spupHelp Normal
+hi def link spupIdentifier Identifier
+hi def link spupNumber Constant
+hi def link spupOperator Special
+hi def link spupOpenBrace spupError
+hi def link spupSection Statement
+hi def link spupSpecial spupTextprocGeneric
+hi def link spupStreams Type
+hi def link spupString Constant
+hi def link spupSubs Statement
+hi def link spupSymbol Special
+hi def link spupTextprocError Normal
+hi def link spupTextprocGeneric PreProc
+hi def link spupTypes Type
+
+
+let b:current_syntax = "spup"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim:ts=8
diff --git a/runtime/syntax/spyce.vim b/runtime/syntax/spyce.vim
new file mode 100644
index 0000000..169de19
--- /dev/null
+++ b/runtime/syntax/spyce.vim
@@ -0,0 +1,104 @@
+" Vim syntax file
+" Language: SPYCE
+" Maintainer: Rimon Barr <rimon AT acm DOT org>
+" URL: http://spyce.sourceforge.net
+" Last Change: 2009 Nov 11
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" we define it here so that included files can test for it
+if !exists("main_syntax")
+ let main_syntax='spyce'
+endif
+
+" Read the HTML syntax to start with
+let b:did_indent = 1 " don't perform HTML indentation!
+let html_no_rendering = 1 " do not render <b>,<i>, etc...
+runtime! syntax/html.vim
+unlet b:current_syntax
+syntax spell default " added by Bram
+
+" include python
+syn include @Python <sfile>:p:h/python.vim
+syn include @Html <sfile>:p:h/html.vim
+
+" spyce definitions
+syn keyword spyceDirectiveKeyword include compact module import contained
+syn keyword spyceDirectiveArg name names file contained
+syn region spyceDirectiveString start=+"+ end=+"+ contained
+syn match spyceDirectiveValue "=[\t ]*[^'", \t>][^, \t>]*"hs=s+1 contained
+
+syn match spyceBeginErrorS ,\[\[,
+syn match spyceBeginErrorA ,<%,
+syn cluster spyceBeginError contains=spyceBeginErrorS,spyceBeginErrorA
+syn match spyceEndErrorS ,\]\],
+syn match spyceEndErrorA ,%>,
+syn cluster spyceEndError contains=spyceEndErrorS,spyceEndErrorA
+
+syn match spyceEscBeginS ,\\\[\[,
+syn match spyceEscBeginA ,\\<%,
+syn cluster spyceEscBegin contains=spyceEscBeginS,spyceEscBeginA
+syn match spyceEscEndS ,\\\]\],
+syn match spyceEscEndA ,\\%>,
+syn cluster spyceEscEnd contains=spyceEscEndS,spyceEscEndA
+syn match spyceEscEndCommentS ,--\\\]\],
+syn match spyceEscEndCommentA ,--\\%>,
+syn cluster spyceEscEndComment contains=spyceEscEndCommentS,spyceEscEndCommentA
+
+syn region spyceStmtS matchgroup=spyceStmtDelim start=,\[\[, end=,\]\], contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
+syn region spyceStmtA matchgroup=spyceStmtDelim start=,<%, end=,%>, contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
+syn region spyceChunkS matchgroup=spyceChunkDelim start=,\[\[\\, end=,\]\], contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
+syn region spyceChunkA matchgroup=spyceChunkDelim start=,<%\\, end=,%>, contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
+syn region spyceEvalS matchgroup=spyceEvalDelim start=,\[\[=, end=,\]\], contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
+syn region spyceEvalA matchgroup=spyceEvalDelim start=,<%=, end=,%>, contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
+syn region spyceDirectiveS matchgroup=spyceDelim start=,\[\[\., end=,\]\], contains=spyceBeginError,spyceDirectiveKeyword,spyceDirectiveArg,spyceDirectiveValue,spyceDirectiveString keepend
+syn region spyceDirectiveA matchgroup=spyceDelim start=,<%@, end=,%>, contains=spyceBeginError,spyceDirectiveKeyword,spyceDirectiveArg,spyceDirectiveValue,spyceDirectiveString keepend
+syn region spyceCommentS matchgroup=spyceCommentDelim start=,\[\[--, end=,--\]\],
+syn region spyceCommentA matchgroup=spyceCommentDelim start=,<%--, end=,--%>,
+syn region spyceLambdaS matchgroup=spyceLambdaDelim start=,\[\[spy!\?, end=,\]\], contains=@Html,@spyce extend
+syn region spyceLambdaA matchgroup=spyceLambdaDelim start=,<%spy!\?, end=,%>, contains=@Html,@spyce extend
+
+syn cluster spyce contains=spyceStmtS,spyceStmtA,spyceChunkS,spyceChunkA,spyceEvalS,spyceEvalA,spyceCommentS,spyceCommentA,spyceDirectiveS,spyceDirectiveA
+
+syn cluster htmlPreproc contains=@spyce
+
+hi link spyceDirectiveKeyword Special
+hi link spyceDirectiveArg Type
+hi link spyceDirectiveString String
+hi link spyceDirectiveValue String
+
+hi link spyceDelim Special
+hi link spyceStmtDelim spyceDelim
+hi link spyceChunkDelim spyceDelim
+hi link spyceEvalDelim spyceDelim
+hi link spyceLambdaDelim spyceDelim
+hi link spyceCommentDelim Comment
+
+hi link spyceBeginErrorS Error
+hi link spyceBeginErrorA Error
+hi link spyceEndErrorS Error
+hi link spyceEndErrorA Error
+
+hi link spyceStmtS spyce
+hi link spyceStmtA spyce
+hi link spyceChunkS spyce
+hi link spyceChunkA spyce
+hi link spyceEvalS spyce
+hi link spyceEvalA spyce
+hi link spyceDirectiveS spyce
+hi link spyceDirectiveA spyce
+hi link spyceCommentS Comment
+hi link spyceCommentA Comment
+hi link spyceLambdaS Normal
+hi link spyceLambdaA Normal
+
+hi link spyce Statement
+
+let b:current_syntax = "spyce"
+if main_syntax == 'spyce'
+ unlet main_syntax
+endif
+
diff --git a/runtime/syntax/sql.vim b/runtime/syntax/sql.vim
new file mode 100644
index 0000000..6de3f4a
--- /dev/null
+++ b/runtime/syntax/sql.vim
@@ -0,0 +1,36 @@
+" Vim syntax file loader
+" Language: SQL
+" Maintainer: David Fishburn <fishburn at ianywhere dot com>
+" Last Change: Thu Sep 15 2005 10:30:02 AM
+" Version: 1.0
+
+" Description: Checks for a:
+" buffer local variable,
+" global variable,
+" If the above exist, it will source the type specified.
+" If none exist, it will source the default sql.vim file.
+"
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Default to the standard Vim distribution file
+let filename = 'sqloracle'
+
+" Check for overrides. Buffer variables have the highest priority.
+if exists("b:sql_type_override")
+ " Check the runtimepath to see if the file exists
+ if globpath(&runtimepath, 'syntax/'.b:sql_type_override.'.vim') != ''
+ let filename = b:sql_type_override
+ endif
+elseif exists("g:sql_type_default")
+ if globpath(&runtimepath, 'syntax/'.g:sql_type_default.'.vim') != ''
+ let filename = g:sql_type_default
+ endif
+endif
+
+" Source the appropriate file
+exec 'runtime syntax/'.filename.'.vim'
+
+" vim:sw=4:
diff --git a/runtime/syntax/sqlanywhere.vim b/runtime/syntax/sqlanywhere.vim
new file mode 100644
index 0000000..e91a99d
--- /dev/null
+++ b/runtime/syntax/sqlanywhere.vim
@@ -0,0 +1,905 @@
+" Vim syntax file
+" Language: SQL, Adaptive Server Anywhere
+" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
+" Last Change: 2013 May 13
+" Version: 16.0.0
+
+" Description: Updated to Adaptive Server Anywhere 16.0.0
+" Updated to Adaptive Server Anywhere 12.0.1 (including spatial data)
+" Updated to Adaptive Server Anywhere 11.0.1
+" Updated to Adaptive Server Anywhere 10.0.1
+" Updated to Adaptive Server Anywhere 9.0.2
+" Updated to Adaptive Server Anywhere 9.0.1
+" Updated to Adaptive Server Anywhere 9.0.0
+"
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" The SQL reserved words, defined as keywords.
+
+syn keyword sqlSpecial false null true
+
+" common functions
+syn keyword sqlFunction abs argn avg bintohex bintostr
+syn keyword sqlFunction byte_length byte_substr char_length
+syn keyword sqlFunction compare count count_big datalength date
+syn keyword sqlFunction date_format dateadd datediff datename
+syn keyword sqlFunction datepart day dayname days debug_eng
+syn keyword sqlFunction dense_rank density dialect difference
+syn keyword sqlFunction dow estimate estimate_source evaluate
+syn keyword sqlFunction experience_estimate explanation
+syn keyword sqlFunction get_identity graphical_plan
+syn keyword sqlFunction graphical_ulplan greater grouping
+syn keyword sqlFunction hextobin hextoint hour hours identity
+syn keyword sqlFunction ifnull index_estimate inttohex isdate
+syn keyword sqlFunction isencrypted isnull isnumeric
+syn keyword sqlFunction lang_message length lesser like_end
+syn keyword sqlFunction like_start list long_ulplan lookup max
+syn keyword sqlFunction min minute minutes month monthname
+syn keyword sqlFunction months newid now nullif number
+syn keyword sqlFunction percent_rank plan quarter rand rank
+syn keyword sqlFunction regexp_compile regexp_compile_patindex
+syn keyword sqlFunction remainder rewrite rowid second seconds
+syn keyword sqlFunction short_ulplan similar sortkey soundex
+syn keyword sqlFunction stddev stack_trace str string strtobin strtouuid stuff
+syn keyword sqlFunction subpartition substr substring sum switchoffset sysdatetimeoffset
+syn keyword sqlFunction textptr todate todatetimeoffset today totimestamp traceback transactsql
+syn keyword sqlFunction ts_index_statistics ts_table_statistics
+syn keyword sqlFunction tsequal ulplan user_id user_name utc_now
+syn keyword sqlFunction uuidtostr varexists variance watcomsql
+syn keyword sqlFunction weeks wsql_state year years ymd
+
+" 9.0.1 functions
+syn keyword sqlFunction acos asin atan atn2 cast ceiling convert cos cot
+syn keyword sqlFunction char_length coalesce dateformat datetime degrees exp
+syn keyword sqlFunction floor getdate insertstr
+syn keyword sqlFunction log log10 lower mod pi power
+syn keyword sqlFunction property radians replicate round sign sin
+syn keyword sqlFunction sqldialect tan truncate truncnum
+syn keyword sqlFunction base64_encode base64_decode
+syn keyword sqlFunction hash compress decompress encrypt decrypt
+
+" 11.0.1 functions
+syn keyword sqlFunction connection_extended_property text_handle_vector_match
+syn keyword sqlFunction read_client_file write_client_file
+
+" 12.0.1 functions
+syn keyword sqlFunction http_response_header
+
+" string functions
+syn keyword sqlFunction ascii char left ltrim repeat
+syn keyword sqlFunction space right rtrim trim lcase ucase
+syn keyword sqlFunction locate charindex patindex replace
+syn keyword sqlFunction errormsg csconvert
+
+" property functions
+syn keyword sqlFunction db_id db_name property_name
+syn keyword sqlFunction property_description property_number
+syn keyword sqlFunction next_connection next_database property
+syn keyword sqlFunction connection_property db_property db_extended_property
+syn keyword sqlFunction event_parmeter event_condition event_condition_name
+
+" sa_ procedures
+syn keyword sqlFunction sa_add_index_consultant_analysis
+syn keyword sqlFunction sa_add_workload_query
+syn keyword sqlFunction sa_app_deregister
+syn keyword sqlFunction sa_app_get_infoStr
+syn keyword sqlFunction sa_app_get_status
+syn keyword sqlFunction sa_app_register
+syn keyword sqlFunction sa_app_registration_unlock
+syn keyword sqlFunction sa_app_set_infoStr
+syn keyword sqlFunction sa_audit_string
+syn keyword sqlFunction sa_check_commit
+syn keyword sqlFunction sa_checkpoint_execute
+syn keyword sqlFunction sa_conn_activity
+syn keyword sqlFunction sa_conn_compression_info
+syn keyword sqlFunction sa_conn_deregister
+syn keyword sqlFunction sa_conn_info
+syn keyword sqlFunction sa_conn_properties
+syn keyword sqlFunction sa_conn_properties_by_conn
+syn keyword sqlFunction sa_conn_properties_by_name
+syn keyword sqlFunction sa_conn_register
+syn keyword sqlFunction sa_conn_set_status
+syn keyword sqlFunction sa_create_analysis_from_query
+syn keyword sqlFunction sa_db_info
+syn keyword sqlFunction sa_db_properties
+syn keyword sqlFunction sa_disable_auditing_type
+syn keyword sqlFunction sa_disable_index
+syn keyword sqlFunction sa_disk_free_space
+syn keyword sqlFunction sa_enable_auditing_type
+syn keyword sqlFunction sa_enable_index
+syn keyword sqlFunction sa_end_forward_to
+syn keyword sqlFunction sa_eng_properties
+syn keyword sqlFunction sa_event_schedules
+syn keyword sqlFunction sa_exec_script
+syn keyword sqlFunction sa_flush_cache
+syn keyword sqlFunction sa_flush_statistics
+syn keyword sqlFunction sa_forward_to
+syn keyword sqlFunction sa_get_dtt
+syn keyword sqlFunction sa_get_histogram
+syn keyword sqlFunction sa_get_request_profile
+syn keyword sqlFunction sa_get_request_profile_sub
+syn keyword sqlFunction sa_get_request_times
+syn keyword sqlFunction sa_get_server_messages
+syn keyword sqlFunction sa_get_simulated_scale_factors
+syn keyword sqlFunction sa_get_workload_capture_status
+syn keyword sqlFunction sa_index_density
+syn keyword sqlFunction sa_index_levels
+syn keyword sqlFunction sa_index_statistics
+syn keyword sqlFunction sa_internal_alter_index_ability
+syn keyword sqlFunction sa_internal_create_analysis_from_query
+syn keyword sqlFunction sa_internal_disk_free_space
+syn keyword sqlFunction sa_internal_get_dtt
+syn keyword sqlFunction sa_internal_get_histogram
+syn keyword sqlFunction sa_internal_get_request_times
+syn keyword sqlFunction sa_internal_get_simulated_scale_factors
+syn keyword sqlFunction sa_internal_get_workload_capture_status
+syn keyword sqlFunction sa_internal_index_density
+syn keyword sqlFunction sa_internal_index_levels
+syn keyword sqlFunction sa_internal_index_statistics
+syn keyword sqlFunction sa_internal_java_loaded_classes
+syn keyword sqlFunction sa_internal_locks
+syn keyword sqlFunction sa_internal_pause_workload_capture
+syn keyword sqlFunction sa_internal_procedure_profile
+syn keyword sqlFunction sa_internal_procedure_profile_summary
+syn keyword sqlFunction sa_internal_read_backup_history
+syn keyword sqlFunction sa_internal_recommend_indexes
+syn keyword sqlFunction sa_internal_reset_identity
+syn keyword sqlFunction sa_internal_resume_workload_capture
+syn keyword sqlFunction sa_internal_start_workload_capture
+syn keyword sqlFunction sa_internal_stop_index_consultant
+syn keyword sqlFunction sa_internal_stop_workload_capture
+syn keyword sqlFunction sa_internal_table_fragmentation
+syn keyword sqlFunction sa_internal_table_page_usage
+syn keyword sqlFunction sa_internal_table_stats
+syn keyword sqlFunction sa_internal_virtual_sysindex
+syn keyword sqlFunction sa_internal_virtual_sysixcol
+syn keyword sqlFunction sa_java_loaded_classes
+syn keyword sqlFunction sa_jdk_version
+syn keyword sqlFunction sa_locks
+syn keyword sqlFunction sa_make_object
+syn keyword sqlFunction sa_pause_workload_capture
+syn keyword sqlFunction sa_proc_debug_attach_to_connection
+syn keyword sqlFunction sa_proc_debug_connect
+syn keyword sqlFunction sa_proc_debug_detach_from_connection
+syn keyword sqlFunction sa_proc_debug_disconnect
+syn keyword sqlFunction sa_proc_debug_get_connection_name
+syn keyword sqlFunction sa_proc_debug_release_connection
+syn keyword sqlFunction sa_proc_debug_request
+syn keyword sqlFunction sa_proc_debug_version
+syn keyword sqlFunction sa_proc_debug_wait_for_connection
+syn keyword sqlFunction sa_procedure_profile
+syn keyword sqlFunction sa_procedure_profile_summary
+syn keyword sqlFunction sa_read_backup_history
+syn keyword sqlFunction sa_recommend_indexes
+syn keyword sqlFunction sa_recompile_views
+syn keyword sqlFunction sa_remove_index_consultant_analysis
+syn keyword sqlFunction sa_remove_index_consultant_workload
+syn keyword sqlFunction sa_reset_identity
+syn keyword sqlFunction sa_resume_workload_capture
+syn keyword sqlFunction sa_server_option
+syn keyword sqlFunction sa_set_simulated_scale_factor
+syn keyword sqlFunction sa_setremoteuser
+syn keyword sqlFunction sa_setsubscription
+syn keyword sqlFunction sa_start_recording_commits
+syn keyword sqlFunction sa_start_workload_capture
+syn keyword sqlFunction sa_statement_text
+syn keyword sqlFunction sa_stop_index_consultant
+syn keyword sqlFunction sa_stop_recording_commits
+syn keyword sqlFunction sa_stop_workload_capture
+syn keyword sqlFunction sa_sync
+syn keyword sqlFunction sa_sync_sub
+syn keyword sqlFunction sa_table_fragmentation
+syn keyword sqlFunction sa_table_page_usage
+syn keyword sqlFunction sa_table_stats
+syn keyword sqlFunction sa_update_index_consultant_workload
+syn keyword sqlFunction sa_validate
+syn keyword sqlFunction sa_virtual_sysindex
+syn keyword sqlFunction sa_virtual_sysixcol
+
+" sp_ procedures
+syn keyword sqlFunction sp_addalias
+syn keyword sqlFunction sp_addauditrecord
+syn keyword sqlFunction sp_adddumpdevice
+syn keyword sqlFunction sp_addgroup
+syn keyword sqlFunction sp_addlanguage
+syn keyword sqlFunction sp_addlogin
+syn keyword sqlFunction sp_addmessage
+syn keyword sqlFunction sp_addremotelogin
+syn keyword sqlFunction sp_addsegment
+syn keyword sqlFunction sp_addserver
+syn keyword sqlFunction sp_addthreshold
+syn keyword sqlFunction sp_addtype
+syn keyword sqlFunction sp_adduser
+syn keyword sqlFunction sp_auditdatabase
+syn keyword sqlFunction sp_auditlogin
+syn keyword sqlFunction sp_auditobject
+syn keyword sqlFunction sp_auditoption
+syn keyword sqlFunction sp_auditsproc
+syn keyword sqlFunction sp_bindefault
+syn keyword sqlFunction sp_bindmsg
+syn keyword sqlFunction sp_bindrule
+syn keyword sqlFunction sp_changedbowner
+syn keyword sqlFunction sp_changegroup
+syn keyword sqlFunction sp_checknames
+syn keyword sqlFunction sp_checkperms
+syn keyword sqlFunction sp_checkreswords
+syn keyword sqlFunction sp_clearstats
+syn keyword sqlFunction sp_column_privileges
+syn keyword sqlFunction sp_columns
+syn keyword sqlFunction sp_commonkey
+syn keyword sqlFunction sp_configure
+syn keyword sqlFunction sp_cursorinfo
+syn keyword sqlFunction sp_databases
+syn keyword sqlFunction sp_datatype_info
+syn keyword sqlFunction sp_dboption
+syn keyword sqlFunction sp_dbremap
+syn keyword sqlFunction sp_depends
+syn keyword sqlFunction sp_diskdefault
+syn keyword sqlFunction sp_displaylogin
+syn keyword sqlFunction sp_dropalias
+syn keyword sqlFunction sp_dropdevice
+syn keyword sqlFunction sp_dropgroup
+syn keyword sqlFunction sp_dropkey
+syn keyword sqlFunction sp_droplanguage
+syn keyword sqlFunction sp_droplogin
+syn keyword sqlFunction sp_dropmessage
+syn keyword sqlFunction sp_dropremotelogin
+syn keyword sqlFunction sp_dropsegment
+syn keyword sqlFunction sp_dropserver
+syn keyword sqlFunction sp_dropthreshold
+syn keyword sqlFunction sp_droptype
+syn keyword sqlFunction sp_dropuser
+syn keyword sqlFunction sp_estspace
+syn keyword sqlFunction sp_extendsegment
+syn keyword sqlFunction sp_fkeys
+syn keyword sqlFunction sp_foreignkey
+syn keyword sqlFunction sp_getmessage
+syn keyword sqlFunction sp_help
+syn keyword sqlFunction sp_helpconstraint
+syn keyword sqlFunction sp_helpdb
+syn keyword sqlFunction sp_helpdevice
+syn keyword sqlFunction sp_helpgroup
+syn keyword sqlFunction sp_helpindex
+syn keyword sqlFunction sp_helpjoins
+syn keyword sqlFunction sp_helpkey
+syn keyword sqlFunction sp_helplanguage
+syn keyword sqlFunction sp_helplog
+syn keyword sqlFunction sp_helpprotect
+syn keyword sqlFunction sp_helpremotelogin
+syn keyword sqlFunction sp_helpsegment
+syn keyword sqlFunction sp_helpserver
+syn keyword sqlFunction sp_helpsort
+syn keyword sqlFunction sp_helptext
+syn keyword sqlFunction sp_helpthreshold
+syn keyword sqlFunction sp_helpuser
+syn keyword sqlFunction sp_indsuspect
+syn keyword sqlFunction sp_lock
+syn keyword sqlFunction sp_locklogin
+syn keyword sqlFunction sp_logdevice
+syn keyword sqlFunction sp_login_environment
+syn keyword sqlFunction sp_modifylogin
+syn keyword sqlFunction sp_modifythreshold
+syn keyword sqlFunction sp_monitor
+syn keyword sqlFunction sp_password
+syn keyword sqlFunction sp_pkeys
+syn keyword sqlFunction sp_placeobject
+syn keyword sqlFunction sp_primarykey
+syn keyword sqlFunction sp_procxmode
+syn keyword sqlFunction sp_recompile
+syn keyword sqlFunction sp_remap
+syn keyword sqlFunction sp_remote_columns
+syn keyword sqlFunction sp_remote_exported_keys
+syn keyword sqlFunction sp_remote_imported_keys
+syn keyword sqlFunction sp_remote_pcols
+syn keyword sqlFunction sp_remote_primary_keys
+syn keyword sqlFunction sp_remote_procedures
+syn keyword sqlFunction sp_remote_tables
+syn keyword sqlFunction sp_remoteoption
+syn keyword sqlFunction sp_rename
+syn keyword sqlFunction sp_renamedb
+syn keyword sqlFunction sp_reportstats
+syn keyword sqlFunction sp_reset_tsql_environment
+syn keyword sqlFunction sp_role
+syn keyword sqlFunction sp_server_info
+syn keyword sqlFunction sp_servercaps
+syn keyword sqlFunction sp_serverinfo
+syn keyword sqlFunction sp_serveroption
+syn keyword sqlFunction sp_setlangalias
+syn keyword sqlFunction sp_setreplicate
+syn keyword sqlFunction sp_setrepproc
+syn keyword sqlFunction sp_setreptable
+syn keyword sqlFunction sp_spaceused
+syn keyword sqlFunction sp_special_columns
+syn keyword sqlFunction sp_sproc_columns
+syn keyword sqlFunction sp_statistics
+syn keyword sqlFunction sp_stored_procedures
+syn keyword sqlFunction sp_syntax
+syn keyword sqlFunction sp_table_privileges
+syn keyword sqlFunction sp_tables
+syn keyword sqlFunction sp_tsql_environment
+syn keyword sqlFunction sp_tsql_feature_not_supported
+syn keyword sqlFunction sp_unbindefault
+syn keyword sqlFunction sp_unbindmsg
+syn keyword sqlFunction sp_unbindrule
+syn keyword sqlFunction sp_volchanged
+syn keyword sqlFunction sp_who
+syn keyword sqlFunction xp_scanf
+syn keyword sqlFunction xp_sprintf
+
+" server functions
+syn keyword sqlFunction col_length
+syn keyword sqlFunction col_name
+syn keyword sqlFunction index_col
+syn keyword sqlFunction object_id
+syn keyword sqlFunction object_name
+syn keyword sqlFunction proc_role
+syn keyword sqlFunction show_role
+syn keyword sqlFunction xp_cmdshell
+syn keyword sqlFunction xp_msver
+syn keyword sqlFunction xp_read_file
+syn keyword sqlFunction xp_real_cmdshell
+syn keyword sqlFunction xp_real_read_file
+syn keyword sqlFunction xp_real_sendmail
+syn keyword sqlFunction xp_real_startmail
+syn keyword sqlFunction xp_real_startsmtp
+syn keyword sqlFunction xp_real_stopmail
+syn keyword sqlFunction xp_real_stopsmtp
+syn keyword sqlFunction xp_real_write_file
+syn keyword sqlFunction xp_scanf
+syn keyword sqlFunction xp_sendmail
+syn keyword sqlFunction xp_sprintf
+syn keyword sqlFunction xp_startmail
+syn keyword sqlFunction xp_startsmtp
+syn keyword sqlFunction xp_stopmail
+syn keyword sqlFunction xp_stopsmtp
+syn keyword sqlFunction xp_write_file
+
+" http functions
+syn keyword sqlFunction http_header http_variable
+syn keyword sqlFunction next_http_header next_http_response_header next_http_variable
+syn keyword sqlFunction sa_set_http_header sa_set_http_option
+syn keyword sqlFunction sa_http_variable_info sa_http_header_info
+
+" http functions 9.0.1
+syn keyword sqlFunction http_encode http_decode
+syn keyword sqlFunction html_encode html_decode
+
+" XML function support
+syn keyword sqlFunction openxml xmlelement xmlforest xmlgen xmlconcat xmlagg
+syn keyword sqlFunction xmlattributes
+
+" Spatial Compatibility Functions
+syn keyword sqlFunction ST_BdMPolyFromText
+syn keyword sqlFunction ST_BdMPolyFromWKB
+syn keyword sqlFunction ST_BdPolyFromText
+syn keyword sqlFunction ST_BdPolyFromWKB
+syn keyword sqlFunction ST_CPolyFromText
+syn keyword sqlFunction ST_CPolyFromWKB
+syn keyword sqlFunction ST_CircularFromTxt
+syn keyword sqlFunction ST_CircularFromWKB
+syn keyword sqlFunction ST_CompoundFromTxt
+syn keyword sqlFunction ST_CompoundFromWKB
+syn keyword sqlFunction ST_GeomCollFromTxt
+syn keyword sqlFunction ST_GeomCollFromWKB
+syn keyword sqlFunction ST_GeomFromText
+syn keyword sqlFunction ST_GeomFromWKB
+syn keyword sqlFunction ST_LineFromText
+syn keyword sqlFunction ST_LineFromWKB
+syn keyword sqlFunction ST_MCurveFromText
+syn keyword sqlFunction ST_MCurveFromWKB
+syn keyword sqlFunction ST_MLineFromText
+syn keyword sqlFunction ST_MLineFromWKB
+syn keyword sqlFunction ST_MPointFromText
+syn keyword sqlFunction ST_MPointFromWKB
+syn keyword sqlFunction ST_MPolyFromText
+syn keyword sqlFunction ST_MPolyFromWKB
+syn keyword sqlFunction ST_MSurfaceFromTxt
+syn keyword sqlFunction ST_MSurfaceFromWKB
+syn keyword sqlFunction ST_OrderingEquals
+syn keyword sqlFunction ST_PointFromText
+syn keyword sqlFunction ST_PointFromWKB
+syn keyword sqlFunction ST_PolyFromText
+syn keyword sqlFunction ST_PolyFromWKB
+" Spatial Structural Methods
+syn keyword sqlFunction ST_CoordDim
+syn keyword sqlFunction ST_CurveN
+syn keyword sqlFunction ST_Dimension
+syn keyword sqlFunction ST_EndPoint
+syn keyword sqlFunction ST_ExteriorRing
+syn keyword sqlFunction ST_GeometryN
+syn keyword sqlFunction ST_GeometryType
+syn keyword sqlFunction ST_InteriorRingN
+syn keyword sqlFunction ST_Is3D
+syn keyword sqlFunction ST_IsClosed
+syn keyword sqlFunction ST_IsEmpty
+syn keyword sqlFunction ST_IsMeasured
+syn keyword sqlFunction ST_IsRing
+syn keyword sqlFunction ST_IsSimple
+syn keyword sqlFunction ST_IsValid
+syn keyword sqlFunction ST_NumCurves
+syn keyword sqlFunction ST_NumGeometries
+syn keyword sqlFunction ST_NumInteriorRing
+syn keyword sqlFunction ST_NumPoints
+syn keyword sqlFunction ST_PointN
+syn keyword sqlFunction ST_StartPoint
+"Spatial Computation
+syn keyword sqlFunction ST_Length
+syn keyword sqlFunction ST_Area
+syn keyword sqlFunction ST_Centroid
+syn keyword sqlFunction ST_Area
+syn keyword sqlFunction ST_Centroid
+syn keyword sqlFunction ST_IsWorld
+syn keyword sqlFunction ST_Perimeter
+syn keyword sqlFunction ST_PointOnSurface
+syn keyword sqlFunction ST_Distance
+" Spatial Input/Output
+syn keyword sqlFunction ST_AsBinary
+syn keyword sqlFunction ST_AsGML
+syn keyword sqlFunction ST_AsGeoJSON
+syn keyword sqlFunction ST_AsSVG
+syn keyword sqlFunction ST_AsSVGAggr
+syn keyword sqlFunction ST_AsText
+syn keyword sqlFunction ST_AsWKB
+syn keyword sqlFunction ST_AsWKT
+syn keyword sqlFunction ST_AsXML
+syn keyword sqlFunction ST_GeomFromBinary
+syn keyword sqlFunction ST_GeomFromShape
+syn keyword sqlFunction ST_GeomFromText
+syn keyword sqlFunction ST_GeomFromWKB
+syn keyword sqlFunction ST_GeomFromWKT
+syn keyword sqlFunction ST_GeomFromXML
+" Spatial Cast Methods
+syn keyword sqlFunction ST_CurvePolyToPoly
+syn keyword sqlFunction ST_CurveToLine
+syn keyword sqlFunction ST_ToCircular
+syn keyword sqlFunction ST_ToCompound
+syn keyword sqlFunction ST_ToCurve
+syn keyword sqlFunction ST_ToCurvePoly
+syn keyword sqlFunction ST_ToGeomColl
+syn keyword sqlFunction ST_ToLineString
+syn keyword sqlFunction ST_ToMultiCurve
+syn keyword sqlFunction ST_ToMultiLine
+syn keyword sqlFunction ST_ToMultiPoint
+syn keyword sqlFunction ST_ToMultiPolygon
+syn keyword sqlFunction ST_ToMultiSurface
+syn keyword sqlFunction ST_ToPoint
+syn keyword sqlFunction ST_ToPolygon
+syn keyword sqlFunction ST_ToSurface
+
+" Array functions 16.x
+syn keyword sqlFunction array array_agg array_max_cardinality trim_array
+syn keyword sqlFunction error_line error_message error_procedure
+syn keyword sqlFunction error_sqlcode error_sqlstate error_stack_trace
+
+
+" keywords
+syn keyword sqlKeyword absolute accent access account action active activate add address admin
+syn keyword sqlKeyword aes_decrypt after aggregate algorithm allow_dup_row allow allowed alter
+syn keyword sqlKeyword always and angular ansi_substring any as append apply
+syn keyword sqlKeyword arbiter array asc ascii ase
+syn keyword sqlKeyword assign at atan2 atomic attended
+syn keyword sqlKeyword audit auditing authentication authorization axis
+syn keyword sqlKeyword autoincrement autostop batch bcp before
+syn keyword sqlKeyword between bit_and bit_length bit_or bit_substr bit_xor
+syn keyword sqlKeyword blank blanks block
+syn keyword sqlKeyword both bottom unbounded breaker bufferpool
+syn keyword sqlKeyword build bulk by byte bytes cache calibrate calibration
+syn keyword sqlKeyword cancel capability cardinality cascade cast
+syn keyword sqlKeyword catalog catch ceil change changes char char_convert
+syn keyword sqlKeyword check checkpointlog checksum class classes client cmp
+syn keyword sqlKeyword cluster clustered collation
+syn keyword sqlKeyword column columns
+syn keyword sqlKeyword command comments committed commitid comparisons
+syn keyword sqlKeyword compatible component compressed compute computes
+syn keyword sqlKeyword concat configuration confirm conflict connection
+syn keyword sqlKeyword console consolidate consolidated
+syn keyword sqlKeyword constraint constraints content
+syn keyword sqlKeyword convert coordinate coordinator copy count count_set_bits
+syn keyword sqlKeyword crc createtime critical cross cube cume_dist
+syn keyword sqlKeyword current cursor data data database
+syn keyword sqlKeyword current_timestamp current_user cycle
+syn keyword sqlKeyword databases datatype dba dbfile
+syn keyword sqlKeyword dbspace dbspaces dbspacename debug decoupled
+syn keyword sqlKeyword decrypted default defaults default_dbspace deferred
+syn keyword sqlKeyword definer definition
+syn keyword sqlKeyword delay deleting delimited dependencies desc
+syn keyword sqlKeyword description deterministic directory
+syn keyword sqlKeyword disable disabled disallow distinct disksandbox disk_sandbox
+syn keyword sqlKeyword dn do domain download duplicate
+syn keyword sqlKeyword dsetpass dttm dynamic each earth editproc effective ejb
+syn keyword sqlKeyword elimination ellipsoid else elseif
+syn keyword sqlKeyword email empty enable encapsulated encrypted encryption end
+syn keyword sqlKeyword encoding endif engine environment erase error errors escape escapes event
+syn keyword sqlKeyword event_parameter every exception exclude excluded exclusive exec
+syn keyword sqlKeyword existing exists expanded expiry express exprtype extended_property
+syn keyword sqlKeyword external externlogin factor failover false
+syn keyword sqlKeyword fastfirstrow feature fieldproc file files filler
+syn keyword sqlKeyword fillfactor final finish first first_keyword first_value
+syn keyword sqlKeyword flattening
+syn keyword sqlKeyword following force foreign format forjson forxml forxml_sep fp frame
+syn keyword sqlKeyword free freepage french fresh full function
+syn keyword sqlKeyword gb generic get_bit go global grid
+syn keyword sqlKeyword group handler hash having header hexadecimal
+syn keyword sqlKeyword hidden high history hg hng hold holdlock host
+syn keyword sqlKeyword hours http_body http_session_timeout id identified identity ignore
+syn keyword sqlKeyword ignore_dup_key ignore_dup_row immediate
+syn keyword sqlKeyword in inactiv inactive inactivity included increment incremental
+syn keyword sqlKeyword index index_enabled index_lparen indexonly info information
+syn keyword sqlKeyword inheritance inline inner inout insensitive inserting
+syn keyword sqlKeyword instead
+syn keyword sqlKeyword internal intersection into introduced inverse invoker
+syn keyword sqlKeyword iq is isolation
+syn keyword sqlKeyword jar java java_location java_main_userid java_vm_options
+syn keyword sqlKeyword jconnect jdk join json kb key keys keep language last
+syn keyword sqlKeyword last_keyword last_value lateral latitude
+syn keyword sqlKeyword ld ldap left len linear lf ln level like
+syn keyword sqlKeyword limit local location log
+syn keyword sqlKeyword logging logical login logscan long longitude low lru ls
+syn keyword sqlKeyword main major manage manual mark master
+syn keyword sqlKeyword match matched materialized max maxvalue maximum mb measure median membership
+syn keyword sqlKeyword merge metadata methods migrate minimum minor minutes minvalue mirror
+syn keyword sqlKeyword mode modify monitor move mru multiplex
+syn keyword sqlKeyword name named namespaces national native natural new next nextval
+syn keyword sqlKeyword ngram no noholdlock nolock nonclustered none normal not
+syn keyword sqlKeyword notify null nullable_constant nulls
+syn keyword sqlKeyword object objects oem_string of off offline offset olap
+syn keyword sqlKeyword old on online only openstring operator
+syn keyword sqlKeyword optimization optimizer option
+syn keyword sqlKeyword or order ordinality organization others out outer over owner
+syn keyword sqlKeyword package packetsize padding page pages
+syn keyword sqlKeyword paglock parallel parameter parent part partial
+syn keyword sqlKeyword partition partitions partner password path pctfree
+syn keyword sqlKeyword permissions perms plan planar policy polygon populate port postfilter preceding
+syn keyword sqlKeyword precisionprefetch prefilter prefix preserve preview previous
+syn keyword sqlKeyword primary prior priority priqty private privilege privileges procedure profile profiling
+syn keyword sqlKeyword property_is_cumulative property_is_numeric public publication publish publisher
+syn keyword sqlKeyword quiesce quote quotes range readclientfile readcommitted reader readfile readonly
+syn keyword sqlKeyword readpast readuncommitted readwrite rebuild
+syn keyword sqlKeyword received recompile recover recursive references
+syn keyword sqlKeyword referencing regex regexp regexp_substr relative relocate
+syn keyword sqlKeyword rename repeatable repeatableread replicate replication
+syn keyword sqlKeyword requests request_timeout required rereceive resend reserve reset
+syn keyword sqlKeyword resizing resolve resource respect restart
+syn keyword sqlKeyword restrict result retain retries
+syn keyword sqlKeyword returns reverse right role roles
+syn keyword sqlKeyword rollup root row row_number rowlock rows rowtype
+syn keyword sqlKeyword sa_index_hash sa_internal_fk_verify sa_internal_termbreak
+syn keyword sqlKeyword sa_order_preserving_hash sa_order_preserving_hash_big sa_order_preserving_hash_prefix
+syn keyword sqlKeyword sa_file_free_pages sa_internal_type_from_catalog sa_internal_valid_hash
+syn keyword sqlKeyword sa_internal_validate_value sa_json_element
+syn keyword sqlKeyword scale schedule schema scope script scripted scroll search seconds secqty security
+syn keyword sqlKeyword semi send sensitive sent sequence serializable
+syn keyword sqlKeyword server severity session set_bit set_bits sets
+syn keyword sqlKeyword shapefile share side simple since site size skip
+syn keyword sqlKeyword snap snapshot soapheader soap_header
+syn keyword sqlKeyword spatial split some sorted_data
+syn keyword sqlKeyword sql sqlcode sqlid sqlflagger sqlstate sqrt square
+syn keyword sqlKeyword stacker stale state statement statistics status stddev_pop stddev_samp
+syn keyword sqlKeyword stemmer stogroup stoplist storage store
+syn keyword sqlKeyword strip stripesizekb striping subpages subscribe subscription
+syn keyword sqlKeyword subtransaction suser_id suser_name suspend synchronization
+syn keyword sqlKeyword syntax_error table tables tablock
+syn keyword sqlKeyword tablockx target tb temp template temporary term then ties
+syn keyword sqlKeyword timezone timeout tls to to_char to_nchar tolerance top
+syn keyword sqlKeyword trace traced_plan tracing
+syn keyword sqlKeyword transfer transform transaction transactional treat tries
+syn keyword sqlKeyword true try tsequal type tune uncommitted unconditionally
+syn keyword sqlKeyword unenforced unicode unique unistr unit unknown unlimited unload
+syn keyword sqlKeyword unpartition unquiesce updatetime updating updlock upgrade upload
+syn keyword sqlKeyword upper usage use user
+syn keyword sqlKeyword using utc utilities validproc
+syn keyword sqlKeyword value values varchar variable
+syn keyword sqlKeyword varying var_pop var_samp vcat verbosity
+syn keyword sqlKeyword verify versions view virtual wait
+syn keyword sqlKeyword warning wd web when where with with_auto
+syn keyword sqlKeyword with_auto with_cube with_rollup without
+syn keyword sqlKeyword with_lparen within word work workload write writefile
+syn keyword sqlKeyword writeclientfile writer writers writeserver xlock
+syn keyword sqlKeyword war xml zeros zone
+" XML
+syn keyword sqlKeyword raw auto elements explicit
+" HTTP support
+syn keyword sqlKeyword authorization secure url service next_soap_header
+" HTTP 9.0.2 new procedure keywords
+syn keyword sqlKeyword namespace certificate certificates clientport proxy trusted_certificates_file
+" OLAP support 9.0.0
+syn keyword sqlKeyword covar_pop covar_samp corr regr_slope regr_intercept
+syn keyword sqlKeyword regr_count regr_r2 regr_avgx regr_avgy
+syn keyword sqlKeyword regr_sxx regr_syy regr_sxy
+
+" Alternate keywords
+syn keyword sqlKeyword character dec options proc reference
+syn keyword sqlKeyword subtrans tran syn keyword
+
+" Login Mode Options
+syn keyword sqlKeywordLogin standard integrated kerberos LDAPUA
+syn keyword sqlKeywordLogin cloudadmin mixed
+
+" Spatial Predicates
+syn keyword sqlKeyword ST_Contains
+syn keyword sqlKeyword ST_ContainsFilter
+syn keyword sqlKeyword ST_CoveredBy
+syn keyword sqlKeyword ST_CoveredByFilter
+syn keyword sqlKeyword ST_Covers
+syn keyword sqlKeyword ST_CoversFilter
+syn keyword sqlKeyword ST_Crosses
+syn keyword sqlKeyword ST_Disjoint
+syn keyword sqlKeyword ST_Equals
+syn keyword sqlKeyword ST_EqualsFilter
+syn keyword sqlKeyword ST_Intersects
+syn keyword sqlKeyword ST_IntersectsFilter
+syn keyword sqlKeyword ST_IntersectsRect
+syn keyword sqlKeyword ST_OrderingEquals
+syn keyword sqlKeyword ST_Overlaps
+syn keyword sqlKeyword ST_Relate
+syn keyword sqlKeyword ST_Touches
+syn keyword sqlKeyword ST_Within
+syn keyword sqlKeyword ST_WithinFilter
+" Spatial Set operations
+syn keyword sqlKeyword ST_Affine
+syn keyword sqlKeyword ST_Boundary
+syn keyword sqlKeyword ST_Buffer
+syn keyword sqlKeyword ST_ConvexHull
+syn keyword sqlKeyword ST_ConvexHullAggr
+syn keyword sqlKeyword ST_Difference
+syn keyword sqlKeyword ST_Intersection
+syn keyword sqlKeyword ST_IntersectionAggr
+syn keyword sqlKeyword ST_SymDifference
+syn keyword sqlKeyword ST_Union
+syn keyword sqlKeyword ST_UnionAggr
+" Spatial Bounds
+syn keyword sqlKeyword ST_Envelope
+syn keyword sqlKeyword ST_EnvelopeAggr
+syn keyword sqlKeyword ST_Lat
+syn keyword sqlKeyword ST_LatMax
+syn keyword sqlKeyword ST_LatMin
+syn keyword sqlKeyword ST_Long
+syn keyword sqlKeyword ST_LongMax
+syn keyword sqlKeyword ST_LongMin
+syn keyword sqlKeyword ST_M
+syn keyword sqlKeyword ST_MMax
+syn keyword sqlKeyword ST_MMin
+syn keyword sqlKeyword ST_Point
+syn keyword sqlKeyword ST_X
+syn keyword sqlKeyword ST_XMax
+syn keyword sqlKeyword ST_XMin
+syn keyword sqlKeyword ST_Y
+syn keyword sqlKeyword ST_YMax
+syn keyword sqlKeyword ST_YMin
+syn keyword sqlKeyword ST_Z
+syn keyword sqlKeyword ST_ZMax
+syn keyword sqlKeyword ST_ZMin
+" Spatial Collection Aggregates
+syn keyword sqlKeyword ST_GeomCollectionAggr
+syn keyword sqlKeyword ST_LineStringAggr
+syn keyword sqlKeyword ST_MultiCurveAggr
+syn keyword sqlKeyword ST_MultiLineStringAggr
+syn keyword sqlKeyword ST_MultiPointAggr
+syn keyword sqlKeyword ST_MultiPolygonAggr
+syn keyword sqlKeyword ST_MultiSurfaceAggr
+syn keyword sqlKeyword ST_Perimeter
+syn keyword sqlKeyword ST_PointOnSurface
+" Spatial SRS
+syn keyword sqlKeyword ST_CompareWKT
+syn keyword sqlKeyword ST_FormatWKT
+syn keyword sqlKeyword ST_ParseWKT
+syn keyword sqlKeyword ST_TransformGeom
+syn keyword sqlKeyword ST_GeometryTypeFromBaseType
+syn keyword sqlKeyword ST_SnapToGrid
+syn keyword sqlKeyword ST_Transform
+syn keyword sqlKeyword ST_SRID
+syn keyword sqlKeyword ST_SRIDFromBaseType
+syn keyword sqlKeyword ST_LoadConfigurationData
+" Spatial Indexes
+syn keyword sqlKeyword ST_LinearHash
+syn keyword sqlKeyword ST_LinearUnHash
+
+syn keyword sqlOperator in any some all between exists
+syn keyword sqlOperator like escape not is and or
+syn keyword sqlOperator minus
+syn keyword sqlOperator prior distinct unnest
+
+syn keyword sqlStatement allocate alter attach backup begin break call case catch
+syn keyword sqlStatement checkpoint clear close comment commit configure connect
+syn keyword sqlStatement continue create deallocate declare delete describe
+syn keyword sqlStatement detach disconnect drop except execute exit explain fetch
+syn keyword sqlStatement for forward from get goto grant help if include
+syn keyword sqlStatement input insert install intersect leave load lock loop
+syn keyword sqlStatement message open output parameters passthrough
+syn keyword sqlStatement prepare print put raiserror read readtext refresh release
+syn keyword sqlStatement remote remove reorganize resignal restore resume
+syn keyword sqlStatement return revoke rollback save savepoint select
+syn keyword sqlStatement set setuser signal start stop synchronize
+syn keyword sqlStatement system trigger truncate try union unload update
+syn keyword sqlStatement validate waitfor whenever while window writetext
+
+
+syn keyword sqlType char nchar long varchar nvarchar text ntext uniqueidentifierstr xml
+syn keyword sqlType bigint bit decimal double varbit
+syn keyword sqlType float int integer numeric
+syn keyword sqlType smallint tinyint real
+syn keyword sqlType money smallmoney
+syn keyword sqlType date datetime datetimeoffset smalldatetime time timestamp
+syn keyword sqlType binary image varray varbinary uniqueidentifier
+syn keyword sqlType unsigned
+" Spatial types
+syn keyword sqlType st_geometry st_point st_curve st_surface st_geomcollection
+syn keyword sqlType st_linestring st_circularstring st_compoundcurve
+syn keyword sqlType st_curvepolygon st_polygon
+syn keyword sqlType st_multipoint st_multicurve st_multisurface
+syn keyword sqlType st_multilinestring st_multipolygon
+
+syn keyword sqlOption Allow_nulls_by_default
+syn keyword sqlOption Allow_read_client_file
+syn keyword sqlOption Allow_snapshot_isolation
+syn keyword sqlOption Allow_write_client_file
+syn keyword sqlOption Ansi_blanks
+syn keyword sqlOption Ansi_close_cursors_on_rollback
+syn keyword sqlOption Ansi_permissions
+syn keyword sqlOption Ansi_substring
+syn keyword sqlOption Ansi_update_constraints
+syn keyword sqlOption Ansinull
+syn keyword sqlOption Auditing
+syn keyword sqlOption Auditing_options
+syn keyword sqlOption Auto_commit_on_create_local_temp_index
+syn keyword sqlOption Background_priority
+syn keyword sqlOption Blocking
+syn keyword sqlOption Blocking_others_timeout
+syn keyword sqlOption Blocking_timeout
+syn keyword sqlOption Chained
+syn keyword sqlOption Checkpoint_time
+syn keyword sqlOption Cis_option
+syn keyword sqlOption Cis_rowset_size
+syn keyword sqlOption Close_on_endtrans
+syn keyword sqlOption Collect_statistics_on_dml_updates
+syn keyword sqlOption Conn_auditing
+syn keyword sqlOption Connection_authentication
+syn keyword sqlOption Continue_after_raiserror
+syn keyword sqlOption Conversion_error
+syn keyword sqlOption Cooperative_commit_timeout
+syn keyword sqlOption Cooperative_commits
+syn keyword sqlOption Database_authentication
+syn keyword sqlOption Date_format
+syn keyword sqlOption Date_order
+syn keyword sqlOption db_publisher
+syn keyword sqlOption Debug_messages
+syn keyword sqlOption Dedicated_task
+syn keyword sqlOption Default_dbspace
+syn keyword sqlOption Default_timestamp_increment
+syn keyword sqlOption Delayed_commit_timeout
+syn keyword sqlOption Delayed_commits
+syn keyword sqlOption Divide_by_zero_error
+syn keyword sqlOption Escape_character
+syn keyword sqlOption Exclude_operators
+syn keyword sqlOption Extended_join_syntax
+syn keyword sqlOption Extern_login_credentials
+syn keyword sqlOption Fire_triggers
+syn keyword sqlOption First_day_of_week
+syn keyword sqlOption For_xml_null_treatment
+syn keyword sqlOption Force_view_creation
+syn keyword sqlOption Global_database_id
+syn keyword sqlOption Http_session_timeout
+syn keyword sqlOption Http_connection_pool_basesize
+syn keyword sqlOption Http_connection_pool_timeout
+syn keyword sqlOption Integrated_server_name
+syn keyword sqlOption Isolation_level
+syn keyword sqlOption Java_class_path
+syn keyword sqlOption Java_location
+syn keyword sqlOption Java_main_userid
+syn keyword sqlOption Java_vm_options
+syn keyword sqlOption Lock_rejected_rows
+syn keyword sqlOption Log_deadlocks
+syn keyword sqlOption Login_mode
+syn keyword sqlOption Login_procedure
+syn keyword sqlOption Materialized_view_optimization
+syn keyword sqlOption Max_client_statements_cached
+syn keyword sqlOption Max_cursor_count
+syn keyword sqlOption Max_hash_size
+syn keyword sqlOption Max_plans_cached
+syn keyword sqlOption Max_priority
+syn keyword sqlOption Max_query_tasks
+syn keyword sqlOption Max_recursive_iterations
+syn keyword sqlOption Max_statement_count
+syn keyword sqlOption Max_temp_space
+syn keyword sqlOption Min_password_length
+syn keyword sqlOption Min_role_admins
+syn keyword sqlOption Nearest_century
+syn keyword sqlOption Non_keywords
+syn keyword sqlOption Odbc_describe_binary_as_varbinary
+syn keyword sqlOption Odbc_distinguish_char_and_varchar
+syn keyword sqlOption Oem_string
+syn keyword sqlOption On_charset_conversion_failure
+syn keyword sqlOption On_tsql_error
+syn keyword sqlOption Optimization_goal
+syn keyword sqlOption Optimization_level
+syn keyword sqlOption Optimization_workload
+syn keyword sqlOption Pinned_cursor_percent_of_cache
+syn keyword sqlOption Post_login_procedure
+syn keyword sqlOption Precision
+syn keyword sqlOption Prefetch
+syn keyword sqlOption Preserve_source_format
+syn keyword sqlOption Prevent_article_pkey_update
+syn keyword sqlOption Priority
+syn keyword sqlOption Progress_messages
+syn keyword sqlOption Query_mem_timeout
+syn keyword sqlOption Quoted_identifier
+syn keyword sqlOption Read_past_deleted
+syn keyword sqlOption Recovery_time
+syn keyword sqlOption Remote_idle_timeout
+syn keyword sqlOption Replicate_all
+syn keyword sqlOption Request_timeout
+syn keyword sqlOption Reserved_keywords
+syn keyword sqlOption Return_date_time_as_string
+syn keyword sqlOption Rollback_on_deadlock
+syn keyword sqlOption Row_counts
+syn keyword sqlOption Scale
+syn keyword sqlOption Secure_feature_key
+syn keyword sqlOption Sort_collation
+syn keyword sqlOption Sql_flagger_error_level
+syn keyword sqlOption Sql_flagger_warning_level
+syn keyword sqlOption String_rtruncation
+syn keyword sqlOption st_geometry_asbinary_format
+syn keyword sqlOption st_geometry_astext_format
+syn keyword sqlOption st_geometry_asxml_format
+syn keyword sqlOption st_geometry_describe_type
+syn keyword sqlOption st_geometry_interpolation
+syn keyword sqlOption st_geometry_on_invalid
+syn keyword sqlOption Subsume_row_locks
+syn keyword sqlOption Suppress_tds_debugging
+syn keyword sqlOption Synchronize_mirror_on_commit
+syn keyword sqlOption Tds_empty_string_is_null
+syn keyword sqlOption Temp_space_limit_check
+syn keyword sqlOption Time_format
+syn keyword sqlOption Time_zone_adjustment
+syn keyword sqlOption Timestamp_format
+syn keyword sqlOption Timestamp_with_time_zone_format
+syn keyword sqlOption Truncate_timestamp_values
+syn keyword sqlOption Tsql_outer_joins
+syn keyword sqlOption Tsql_variables
+syn keyword sqlOption Updatable_statement_isolation
+syn keyword sqlOption Update_statistics
+syn keyword sqlOption Upgrade_database_capability
+syn keyword sqlOption User_estimates
+syn keyword sqlOption Uuid_has_hyphens
+syn keyword sqlOption Verify_password_function
+syn keyword sqlOption Wait_for_commit
+syn keyword sqlOption Webservice_namespace_host
+syn keyword sqlOption Webservice_sessionid_name
+
+" Strings and characters:
+syn region sqlString start=+"+ end=+"+ contains=@Spell
+syn region sqlString start=+'+ end=+'+ contains=@Spell
+
+" Numbers:
+syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>"
+
+" Comments:
+syn region sqlDashComment start=/--/ end=/$/ contains=@Spell
+syn region sqlSlashComment start=/\/\// end=/$/ contains=@Spell
+syn region sqlMultiComment start="/\*" end="\*/" contains=sqlMultiComment,@Spell
+syn cluster sqlComment contains=sqlDashComment,sqlSlashComment,sqlMultiComment,@Spell
+syn sync ccomment sqlComment
+syn sync ccomment sqlDashComment
+syn sync ccomment sqlSlashComment
+
+hi def link sqlDashComment Comment
+hi def link sqlSlashComment Comment
+hi def link sqlMultiComment Comment
+hi def link sqlNumber Number
+hi def link sqlOperator Operator
+hi def link sqlSpecial Special
+hi def link sqlKeyword Keyword
+hi def link sqlStatement Statement
+hi def link sqlString String
+hi def link sqlType Type
+hi def link sqlFunction Function
+hi def link sqlOption PreProc
+
+let b:current_syntax = "sqlanywhere"
+
+" vim:sw=4:
diff --git a/runtime/syntax/sqlforms.vim b/runtime/syntax/sqlforms.vim
new file mode 100644
index 0000000..6077dd1
--- /dev/null
+++ b/runtime/syntax/sqlforms.vim
@@ -0,0 +1,152 @@
+" Vim syntax file
+" Language: SQL*Forms (Oracle 7), based on sql.vim (vim5.0)
+" Maintainer: Austin Ziegler (austin@halostatue.ca)
+" Last Change: 2003 May 11
+" Prev Change: 19980710
+" URL: http://www.halostatue.ca/vim/syntax/proc.vim
+"
+" TODO Find a new maintainer who knows SQL*Forms.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syntax case ignore
+
+setlocal iskeyword=a-z,A-Z,48-57,_,.,-,>
+
+
+ " The SQL reserved words, defined as keywords.
+syntax match sqlTriggers /on-.*$/
+syntax match sqlTriggers /key-.*$/
+syntax match sqlTriggers /post-.*$/
+syntax match sqlTriggers /pre-.*$/
+syntax match sqlTriggers /user-.*$/
+
+syntax keyword sqlSpecial null false true
+
+syntax keyword sqlProcedure abort_query anchor_view bell block_menu break call
+syntax keyword sqlProcedure call_input call_query clear_block clear_eol
+syntax keyword sqlProcedure clear_field clear_form clear_record commit_form
+syntax keyword sqlProcedure copy count_query create_record default_value
+syntax keyword sqlProcedure delete_record display_error display_field down
+syntax keyword sqlProcedure duplicate_field duplicate_record edit_field
+syntax keyword sqlProcedure enter enter_query erase execute_query
+syntax keyword sqlProcedure execute_trigger exit_form first_Record go_block
+syntax keyword sqlProcedure go_field go_record help hide_menu hide_page host
+syntax keyword sqlProcedure last_record list_values lock_record message
+syntax keyword sqlProcedure move_view new_form next_block next_field next_key
+syntax keyword sqlProcedure next_record next_set pause post previous_block
+syntax keyword sqlProcedure previous_field previous_record print redisplay
+syntax keyword sqlProcedure replace_menu resize_view scroll_down scroll_up
+syntax keyword sqlProcedure set_field show_keys show_menu show_page
+syntax keyword sqlProcedure synchronize up user_exit
+
+syntax keyword sqlFunction block_characteristic error_code error_text
+syntax keyword sqlFunction error_type field_characteristic form_failure
+syntax keyword sqlFunction form_fatal form_success name_in
+
+syntax keyword sqlParameters hide no_hide replace no_replace ask_commit
+syntax keyword sqlParameters do_commit no_commit no_validate all_records
+syntax keyword sqlParameters for_update no_restrict restrict no_screen
+syntax keyword sqlParameters bar full_screen pull_down auto_help auto_skip
+syntax keyword sqlParameters fixed_length enterable required echo queryable
+syntax keyword sqlParameters updateable update_null upper_case attr_on
+syntax keyword sqlParameters attr_off base_table first_field last_field
+syntax keyword sqlParameters datatype displayed display_length field_length
+syntax keyword sqlParameters list page primary_key query_length x_pos y_pos
+
+syntax match sqlSystem /system\.block_status/
+syntax match sqlSystem /system\.current_block/
+syntax match sqlSystem /system\.current_field/
+syntax match sqlSystem /system\.current_form/
+syntax match sqlSystem /system\.current_value/
+syntax match sqlSystem /system\.cursor_block/
+syntax match sqlSystem /system\.cursor_field/
+syntax match sqlSystem /system\.cursor_record/
+syntax match sqlSystem /system\.cursor_value/
+syntax match sqlSystem /system\.form_status/
+syntax match sqlSystem /system\.last_query/
+syntax match sqlSystem /system\.last_record/
+syntax match sqlSystem /system\.message_level/
+syntax match sqlSystem /system\.record_status/
+syntax match sqlSystem /system\.trigger_block/
+syntax match sqlSystem /system\.trigger_field/
+syntax match sqlSystem /system\.trigger_record/
+syntax match sqlSystem /\$\$date\$\$/
+syntax match sqlSystem /\$\$time\$\$/
+
+syntax keyword sqlKeyword accept access add as asc by check cluster column
+syntax keyword sqlKeyword compress connect current decimal default
+syntax keyword sqlKeyword desc exclusive file for from group
+syntax keyword sqlKeyword having identified immediate increment index
+syntax keyword sqlKeyword initial into is level maxextents mode modify
+syntax keyword sqlKeyword nocompress nowait of offline on online start
+syntax keyword sqlKeyword successful synonym table to trigger uid
+syntax keyword sqlKeyword unique user validate values view whenever
+syntax keyword sqlKeyword where with option order pctfree privileges
+syntax keyword sqlKeyword public resource row rowlabel rownum rows
+syntax keyword sqlKeyword session share size smallint sql\*forms_version
+syntax keyword sqlKeyword terse define form name title procedure begin
+syntax keyword sqlKeyword default_menu_application trigger block field
+syntax keyword sqlKeyword enddefine declare exception raise when cursor
+syntax keyword sqlKeyword definition base_table pragma
+syntax keyword sqlKeyword column_name global trigger_type text description
+syntax match sqlKeyword "<<<"
+syntax match sqlKeyword ">>>"
+
+syntax keyword sqlOperator not and or out to_number to_date message erase
+syntax keyword sqlOperator in any some all between exists substr nvl
+syntax keyword sqlOperator exception_init
+syntax keyword sqlOperator like escape trunc lpad rpad sum
+syntax keyword sqlOperator union intersect minus to_char greatest
+syntax keyword sqlOperator prior distinct decode least avg
+syntax keyword sqlOperator sysdate true false field_characteristic
+syntax keyword sqlOperator display_field call host
+
+syntax keyword sqlStatement alter analyze audit comment commit create
+syntax keyword sqlStatement delete drop explain grant insert lock noaudit
+syntax keyword sqlStatement rename revoke rollback savepoint select set
+syntax keyword sqlStatement truncate update if elsif loop then
+syntax keyword sqlStatement open fetch close else end
+
+syntax keyword sqlType char character date long raw mlslabel number rowid
+syntax keyword sqlType varchar varchar2 float integer boolean global
+
+syntax keyword sqlCodes sqlcode no_data_found too_many_rows others
+syntax keyword sqlCodes form_trigger_failure notfound found
+syntax keyword sqlCodes validate no_commit
+
+ " Comments:
+syntax region sqlComment start="/\*" end="\*/"
+syntax match sqlComment "--.*"
+
+ " Strings and characters:
+syntax region sqlString start=+"+ skip=+\\\\\|\\"+ end=+"+
+syntax region sqlString start=+'+ skip=+\\\\\|\\"+ end=+'+
+
+ " Numbers:
+syntax match sqlNumber "-\=\<[0-9]*\.\=[0-9_]\>"
+
+syntax sync ccomment sqlComment
+
+
+hi def link sqlComment Comment
+hi def link sqlKeyword Statement
+hi def link sqlNumber Number
+hi def link sqlOperator Statement
+hi def link sqlProcedure Statement
+hi def link sqlFunction Statement
+hi def link sqlSystem Identifier
+hi def link sqlSpecial Special
+hi def link sqlStatement Statement
+hi def link sqlString String
+hi def link sqlType Type
+hi def link sqlCodes Identifier
+hi def link sqlTriggers PreProc
+
+
+let b:current_syntax = "sqlforms"
+
+" vim: ts=8 sw=4
diff --git a/runtime/syntax/sqlhana.vim b/runtime/syntax/sqlhana.vim
new file mode 100644
index 0000000..2e334bb
--- /dev/null
+++ b/runtime/syntax/sqlhana.vim
@@ -0,0 +1,290 @@
+" Vim syntax file
+" Language: SQL, SAP HANA In Memory Database
+" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
+" Last Change: 2012 Oct 23
+" Version: SP4 b (Q2 2012)
+" Homepage: http://www.vim.org/scripts/script.php?script_id=4275
+
+" Description: Updated to SAP HANA SP4
+"
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" The SQL reserved words, defined as keywords.
+" These were pulled from the following SQL reference:
+" http://help.sap.com/hana/hana_sql_en.pdf
+" An easy approach is to copy all text from the PDF
+" into a Vim buffer. The keywords are in UPPER case,
+" so you can run the following commands to be left with
+" mainly the UPPER case words:
+" 1. Delete all words that do not begin with a Capital
+" %s/\(\<[^A-Z]\w*\>\)//g
+" 2. Remove all words where the 2nd letter is not a Capital
+" %s/\(\<[A-Z][^A-Z]\w*\>\)//g
+" 3. Remove all non-word (or space) characters
+" %s/[^0-9A-Za-z_ ]*//g
+" 4. Remove some known words
+" %s/\<\(SAP\|HANA\|OK\|AG\|IBM\|DB2\|AIX\|POWER\d\+\|UNIX\)\>//g
+" 5. Remove blank lines and trailing spaces
+" %s/\s\+$//g
+" %s/^\s\+//g
+" %s/^$\n//g
+" 6. Convert spaces to newlines remove single character
+" %s/[ ]\+/\r/g
+" %g/^\w$/d
+" 7. Sort and remove duplicates
+" :sort
+" :Uniq
+" 8. Use the WhatsMissing plugin against the sqlhana.vim file.
+" 9. Generated a file of all UPPER cased words which should not
+" be in the syntax file. These items should be removed
+" from the list in step 7. You can use WhatsNotMissing
+" between step 7 and this new file to weed out the words
+" we know are not syntax related.
+" 10. Use the WhatsMissingRemoveMatches to remove the words
+" from step 9.
+
+syn keyword sqlSpecial false null true
+
+" Supported Functions for Date/Time types
+syn keyword sqlFunction ADD_DAYS ADD_MONTHS ADD_SECONDS ADD_YEARS COALESCE
+syn keyword sqlFunction CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_UTCDATE
+syn keyword sqlFunction CURRENT_UTCTIME CURRENT_UTCTIMESTAMP
+syn keyword sqlFunction DAYNAME DAYOFMONTH DAYOFYEAR DAYS_BETWEEN EXTRACT
+syn keyword sqlFunction GREATEST HOUR IFNULL ISOWEEK LAST_DAY LEAST LOCALTOUTC
+syn keyword sqlFunction MINUTE MONTH MONTHNAME NEXT_DAY NOW QUARTER SECOND
+syn keyword sqlFunction SECONDS_BETWEEN UTCTOLOCAL WEEK WEEKDAY YEAR
+
+syn keyword sqlFunction TO_CHAR TO_DATE TO_DATS TO_NCHAR TO_TIME TO_TIMESTAMP UTCTOLOCAL
+
+" Aggregate
+syn keyword sqlFunction COUNT MIN MAX SUM AVG STDDEV VAR
+
+" Datatype conversion
+syn keyword sqlFunction CAST TO_ALPHANUM TO_BIGINT TO_BINARY TO_BLOB TO_CHAR TO_CLOB
+syn keyword sqlFunction TO_DATE TO_DATS TO_DECIMAL TO_DOUBLE TO_INT TO_INTEGER TO_NCHAR
+syn keyword sqlFunction TO_NCLOB TO_NVARCHAR TO_REAL TO_SECONDDATE TO_SMALLDECIMAL
+syn keyword sqlFunction TO_SMALLINT TO_TIME TO_TIMESTAMP TO_TINYINT TO_VARCHAR TO_VARBINARY
+
+" Number functions
+syn keyword sqlFunction ABS ACOS ASIN ATAN ATAN2 BINTOHEX BITAND CEIL COS COSH COT
+syn keyword sqlFunction EXP FLOOR GREATEST HEXTOBIN LEAST LN LOG MOD POWER ROUND
+syn keyword sqlFunction SIGN SIN SINH SQRT TAN TANH UMINUS
+
+" String functions
+syn keyword sqlFunction ASCII CHAR CONCAT LCASE LENGTH LOCATE LOWER LPAD LTRIM
+syn keyword sqlFunction NCHAR REPLACE RPAD RTRIM SUBSTR_AFTER SUBSTR_BEFORE
+syn keyword sqlFunction SUBSTRING TRIM UCASE UNICODE UPPER
+
+" Miscellaneous functions
+syn keyword sqlFunction COALESCE CURRENT_CONNECTION CURRENT_SCHEMA CURRENT_USER
+syn keyword sqlFunction GROUPING_ID IFNULL MAP NULLIF SESSION_CONTEXT SESSION_USER SYSUUIDSQL
+syn keyword sqlFunction GET_NUM_SERVERS
+
+
+" sp_ procedures
+" syn keyword sqlFunction sp_addalias
+
+
+" Reserved keywords
+syn keyword sqlkeyword ALL AS AT BEFORE
+syn keyword sqlkeyword BEGIN BOTH BY
+syn keyword sqlkeyword CONDITION
+syn keyword sqlkeyword CURRVAL CURSOR DECLARE
+syn keyword sqlkeyword DISTINCT DO ELSE ELSEIF ELSIF
+syn keyword sqlkeyword END EXCEPTION EXEC
+syn keyword sqlkeyword FOR FROM GROUP
+syn keyword sqlkeyword HAVING IN
+syn keyword sqlkeyword INOUT INTO IS
+syn keyword sqlkeyword LEADING
+syn keyword sqlkeyword LOOP MINUS NATURAL NEXTVAL
+syn keyword sqlkeyword OF ON ORDER OUT
+syn keyword sqlkeyword PRIOR RETURN RETURNS REVERSE
+syn keyword sqlkeyword ROWID SELECT
+syn keyword sqlkeyword SQL START STOP SYSDATE
+syn keyword sqlkeyword SYSTIME SYSTIMESTAMP SYSUUID
+syn keyword sqlkeyword TRAILING USING UTCDATE
+syn keyword sqlkeyword UTCTIME UTCTIMESTAMP VALUES
+syn keyword sqlkeyword WHILE
+syn keyword sqlkeyword ANY SOME EXISTS ESCAPE
+
+" IF keywords
+syn keyword sqlkeyword IF
+
+" CASE keywords
+syn keyword sqlKeyword WHEN THEN
+
+" Syntax rules common to TEXT and SHORTTEXT keywords
+syn keyword sqlKeyword LANGUAGE DETECTION LINGUISTIC
+syn keyword sqlkeyword MIME TYPE
+syn keyword sqlkeyword EXACT WEIGHT FUZZY FUZZINESSTHRESHOLD SEARCH
+syn keyword sqlkeyword PHRASE INDEX RATIO REBUILD
+syn keyword sqlkeyword CONFIGURATION
+syn keyword sqlkeyword SEARCH ONLY
+syn keyword sqlkeyword FAST PREPROCESS
+syn keyword sqlkeyword SYNC SYNCHRONOUS ASYNC ASYNCHRONOUS FLUSH QUEUE
+syn keyword sqlkeyword EVERY AFTER MINUTES DOCUMENTS SUSPEND
+
+" Statement keywords (i.e. after ALTER or CREATE)
+syn keyword sqlkeyword AUDIT POLICY
+syn keyword sqlkeyword FULLTEXT
+syn keyword sqlkeyword SEQUENCE RESTART
+syn keyword sqlkeyword TABLE
+syn keyword sqlkeyword PROCEDURE STATISTICS
+syn keyword sqlkeyword SCHEMA
+syn keyword sqlkeyword SYNONYM
+syn keyword sqlkeyword VIEW
+syn keyword sqlkeyword COLUMN
+syn keyword sqlkeyword SYSTEM LICENSE
+syn keyword sqlkeyword SESSION
+syn keyword sqlkeyword CANCEL WORK
+syn keyword sqlkeyword PLAN CACHE
+syn keyword sqlkeyword LOGGING NOLOGGING RETENTION
+syn keyword sqlkeyword RECONFIGURE SERVICE
+syn keyword sqlkeyword RESET MONITORING
+syn keyword sqlkeyword SAVE DURATION PERFTRACE FUNCTION_PROFILER
+syn keyword sqlkeyword SAVEPOINT
+syn keyword sqlkeyword USER
+syn keyword sqlkeyword ROLE
+syn keyword sqlkeyword ASC DESC
+syn keyword sqlkeyword OWNED
+syn keyword sqlkeyword DEPENDENCIES SCRAMBLE
+
+" Create sequence
+syn keyword sqlkeyword INCREMENT MAXVALUE MINVALUE CYCLE
+
+" Create table
+syn keyword sqlkeyword HISTORY GLOBAL LOCAL TEMPORARY
+
+" Create trigger
+syn keyword sqlkeyword TRIGGER REFERENCING EACH DEFAULT
+syn keyword sqlkeyword SIGNAL RESIGNAL MESSAGE_TEXT OLD NEW
+syn keyword sqlkeyword EXIT HANDLER SQL_ERROR_CODE
+syn keyword sqlkeyword TARGET CONDITION SIGNAL
+
+" Alter table
+syn keyword sqlkeyword ADD DROP MODIFY GENERATED ALWAYS
+syn keyword sqlkeyword UNIQUE BTREE CPBTREE PRIMARY KEY
+syn keyword sqlkeyword CONSTRAINT PRELOAD NONE
+syn keyword sqlkeyword ROW THREADS BATCH
+syn keyword sqlkeyword MOVE PARTITION TO LOCATION PHYSICAL OTHERS
+syn keyword sqlkeyword ROUNDROBIN PARTITIONS HASH RANGE VALUE
+syn keyword sqlkeyword PERSISTENT DELTA AUTO AUTOMERGE
+
+" Create audit policy
+syn keyword sqlkeyword AUDITING SUCCESSFUL UNSUCCESSFUL
+syn keyword sqlkeyword PRIVILEGE STRUCTURED CHANGE LEVEL
+syn keyword sqlkeyword EMERGENCY ALERT CRITICAL WARNING INFO
+
+" Privileges
+syn keyword sqlkeyword DEBUG EXECUTE
+
+" Schema
+syn keyword sqlkeyword CASCADE RESTRICT PARAMETERS SCAN
+
+" Traces
+syn keyword sqlkeyword CLIENT CRASHDUMP EMERGENCYDUMP
+syn keyword sqlkeyword INDEXSERVER NAMESERVER DAEMON
+syn keyword sqlkeyword CLEAR REMOVE TRACES
+
+" Reclaim
+syn keyword sqlkeyword RECLAIM DATA VOLUME VERSION SPACE DEFRAGMENT SPARSIFY
+
+" Join
+syn keyword sqlkeyword INNER OUTER LEFT RIGHT FULL CROSS JOIN
+syn keyword sqlkeyword GROUPING SETS ROLLUP CUBE
+syn keyword sqlkeyword BEST LIMIT OFFSET
+syn keyword sqlkeyword WITH SUBTOTAL BALANCE TOTAL
+syn keyword sqlkeyword TEXT_FILTER FILL UP SORT MATCHES TOP
+syn keyword sqlkeyword RESULT OVERVIEW PREFIX MULTIPLE RESULTSETS
+
+" Lock
+syn keyword sqlkeyword EXCLUSIVE MODE NOWAIT
+
+" Transaction
+syn keyword sqlkeyword TRANSACTION ISOLATION READ COMMITTED
+syn keyword sqlkeyword REPEATABLE SERIALIZABLE WRITE
+
+" Saml
+syn keyword sqlkeyword SAML ASSERTION PROVIDER SUBJECT ISSUER
+
+" User
+syn keyword sqlkeyword PASSWORD IDENTIFIED EXTERNALLY ATTEMPTS ATTEMPTS
+syn keyword sqlkeyword ENABLE DISABLE OFF LIFETIME FORCE DEACTIVATE
+syn keyword sqlkeyword ACTIVATE IDENTITY KERBEROS
+
+" Grant
+syn keyword sqlkeyword ADMIN BACKUP CATALOG SCENARIO INIFILE MONITOR
+syn keyword sqlkeyword OPTIMIZER OPTION
+syn keyword sqlkeyword RESOURCE STRUCTUREDPRIVILEGE TRACE
+
+" Import
+syn keyword sqlkeyword CSV FILE CONTROL NO CHECK SKIP FIRST LIST
+syn keyword sqlkeyword RECORD DELIMITED FIELD OPTIONALLY ENCLOSED FORMAT
+
+" Roles
+syn keyword sqlkeyword PUBLIC CONTENT_ADMIN MODELING MONITORING
+
+" Miscellaneous
+syn keyword sqlkeyword APPLICATION BINARY IMMEDIATE COREFILE SECURITY DEFINER
+syn keyword sqlkeyword DUMMY INVOKER MATERIALIZED MESSEGE_TEXT PARAMETER PARAMETERS
+syn keyword sqlkeyword PART
+syn keyword sqlkeyword CONSTANT SQLEXCEPTION SQLWARNING
+
+syn keyword sqlOperator WHERE BETWEEN LIKE NULL CONTAINS
+syn keyword sqlOperator AND OR NOT CASE
+syn keyword sqlOperator UNION INTERSECT EXCEPT
+
+syn keyword sqlStatement ALTER CALL CALLS CREATE DROP RENAME TRUNCATE
+syn keyword sqlStatement DELETE INSERT UPDATE EXPLAIN
+syn keyword sqlStatement MERGE REPLACE UPSERT SELECT
+syn keyword sqlStatement SET UNSET LOAD UNLOAD
+syn keyword sqlStatement CONNECT DISCONNECT COMMIT LOCK ROLLBACK
+syn keyword sqlStatement GRANT REVOKE
+syn keyword sqlStatement EXPORT IMPORT
+
+
+syn keyword sqlType DATE TIME SECONDDATE TIMESTAMP TINYINT SMALLINT
+syn keyword sqlType INT INTEGER BIGINT SMALLDECIMAL DECIMAL
+syn keyword sqlType REAL DOUBLE FLOAT
+syn keyword sqlType VARCHAR NVARCHAR ALPHANUM SHORTTEXT VARBINARY
+syn keyword sqlType BLOB CLOB NCLOB TEXT DAYDATE
+
+syn keyword sqlOption Webservice_namespace_host
+
+" Strings and characters:
+syn region sqlString start=+"+ end=+"+ contains=@Spell
+syn region sqlString start=+'+ end=+'+ contains=@Spell
+
+" Numbers:
+syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>"
+
+" Comments:
+syn region sqlDashComment start=/--/ end=/$/ contains=@Spell
+syn region sqlSlashComment start=/\/\// end=/$/ contains=@Spell
+syn region sqlMultiComment start="/\*" end="\*/" contains=sqlMultiComment,@Spell
+syn cluster sqlComment contains=sqlDashComment,sqlSlashComment,sqlMultiComment,@Spell
+syn sync ccomment sqlComment
+syn sync ccomment sqlDashComment
+syn sync ccomment sqlSlashComment
+
+hi def link sqlDashComment Comment
+hi def link sqlSlashComment Comment
+hi def link sqlMultiComment Comment
+hi def link sqlNumber Number
+hi def link sqlOperator Operator
+hi def link sqlSpecial Special
+hi def link sqlKeyword Keyword
+hi def link sqlStatement Statement
+hi def link sqlString String
+hi def link sqlType Type
+hi def link sqlFunction Function
+hi def link sqlOption PreProc
+
+let b:current_syntax = "sqlhana"
+
+" vim:sw=4:
diff --git a/runtime/syntax/sqlinformix.vim b/runtime/syntax/sqlinformix.vim
new file mode 100644
index 0000000..e01912b
--- /dev/null
+++ b/runtime/syntax/sqlinformix.vim
@@ -0,0 +1,183 @@
+" Vim syntax file
+" Informix Structured Query Language (SQL) and Stored Procedure Language (SPL)
+" Language: SQL, SPL (Informix Dynamic Server 2000 v9.2)
+" Maintainer: Dean Hill <dhill@hotmail.com>
+" Last Change: 2004 Aug 30
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+
+
+" === Comment syntax group ===
+syn region sqlComment start="{" end="}" contains=sqlTodo
+syn match sqlComment "--.*$" contains=sqlTodo
+syn sync ccomment sqlComment
+
+
+
+" === Constant syntax group ===
+" = Boolean subgroup =
+syn keyword sqlBoolean true false
+syn keyword sqlBoolean null
+syn keyword sqlBoolean public user
+syn keyword sqlBoolean current today
+syn keyword sqlBoolean year month day hour minute second fraction
+
+" = String subgroup =
+syn region sqlString start=+"+ end=+"+
+syn region sqlString start=+'+ end=+'+
+
+" = Numbers subgroup =
+syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>"
+
+
+
+" === Statement syntax group ===
+" SQL
+syn keyword sqlStatement allocate alter
+syn keyword sqlStatement begin
+syn keyword sqlStatement close commit connect create
+syn keyword sqlStatement database deallocate declare delete describe disconnect drop
+syn keyword sqlStatement execute fetch flush free get grant info insert
+syn keyword sqlStatement load lock open output
+syn keyword sqlStatement prepare put
+syn keyword sqlStatement rename revoke rollback select set start stop
+syn keyword sqlStatement truncate unload unlock update
+syn keyword sqlStatement whenever
+" SPL
+syn keyword sqlStatement call continue define
+syn keyword sqlStatement exit
+syn keyword sqlStatement let
+syn keyword sqlStatement return system trace
+
+" = Conditional subgroup =
+" SPL
+syn keyword sqlConditional elif else if then
+syn keyword sqlConditional case
+" Highlight "end if" with one or more separating spaces
+syn match sqlConditional "end \+if"
+
+" = Repeat subgroup =
+" SQL/SPL
+" Handle SQL triggers' "for each row" clause and SPL "for" loop
+syn match sqlRepeat "for\( \+each \+row\)\="
+" SPL
+syn keyword sqlRepeat foreach while
+" Highlight "end for", etc. with one or more separating spaces
+syn match sqlRepeat "end \+for"
+syn match sqlRepeat "end \+foreach"
+syn match sqlRepeat "end \+while"
+
+" = Exception subgroup =
+" SPL
+syn match sqlException "on \+exception"
+syn match sqlException "end \+exception"
+syn match sqlException "end \+exception \+with \+resume"
+syn match sqlException "raise \+exception"
+
+" = Keyword subgroup =
+" SQL
+syn keyword sqlKeyword aggregate add as authorization autofree by
+syn keyword sqlKeyword cache cascade check cluster collation
+syn keyword sqlKeyword column connection constraint cross
+syn keyword sqlKeyword dataskip debug default deferred_prepare
+syn keyword sqlKeyword descriptor diagnostics
+syn keyword sqlKeyword each escape explain external
+syn keyword sqlKeyword file foreign fragment from function
+syn keyword sqlKeyword group having
+syn keyword sqlKeyword immediate index inner into isolation
+syn keyword sqlKeyword join key
+syn keyword sqlKeyword left level log
+syn keyword sqlKeyword mode modify mounting new no
+syn keyword sqlKeyword object of old optical option
+syn keyword sqlKeyword optimization order outer
+syn keyword sqlKeyword pdqpriority pload primary procedure
+syn keyword sqlKeyword references referencing release reserve
+syn keyword sqlKeyword residency right role routine row
+syn keyword sqlKeyword schedule schema scratch session set
+syn keyword sqlKeyword statement statistics synonym
+syn keyword sqlKeyword table temp temporary timeout to transaction trigger
+syn keyword sqlKeyword using values view violations
+syn keyword sqlKeyword where with work
+" Highlight "on" (if it's not followed by some words we've already handled)
+syn match sqlKeyword "on \+\(exception\)\@!"
+" SPL
+" Highlight "end" (if it's not followed by some words we've already handled)
+syn match sqlKeyword "end \+\(if\|for\|foreach\|while\|exception\)\@!"
+syn keyword sqlKeyword resume returning
+
+" = Operator subgroup =
+" SQL
+syn keyword sqlOperator not and or
+syn keyword sqlOperator in is any some all between exists
+syn keyword sqlOperator like matches
+syn keyword sqlOperator union intersect
+syn keyword sqlOperator distinct unique
+
+
+
+" === Identifier syntax group ===
+" = Function subgroup =
+" SQL
+syn keyword sqlFunction abs acos asin atan atan2 avg
+syn keyword sqlFunction cardinality cast char_length character_length cos count
+syn keyword sqlFunction exp filetoblob filetoclob hex
+syn keyword sqlFunction initcap length logn log10 lower lpad
+syn keyword sqlFunction min max mod octet_length pow range replace root round rpad
+syn keyword sqlFunction sin sqrt stdev substr substring sum
+syn keyword sqlFunction to_char tan to_date trim trunc upper variance
+
+
+
+" === Type syntax group ===
+" SQL
+syn keyword sqlType blob boolean byte char character clob
+syn keyword sqlType date datetime dec decimal double
+syn keyword sqlType float int int8 integer interval list lvarchar
+syn keyword sqlType money multiset nchar numeric nvarchar
+syn keyword sqlType real serial serial8 smallfloat smallint
+syn keyword sqlType text varchar varying
+
+
+
+" === Todo syntax group ===
+syn keyword sqlTodo TODO FIXME XXX DEBUG NOTE
+
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+
+" === Comment syntax group ===
+hi def link sqlComment Comment
+
+" === Constant syntax group ===
+hi def link sqlNumber Number
+hi def link sqlBoolean Boolean
+hi def link sqlString String
+
+" === Statment syntax group ===
+hi def link sqlStatement Statement
+hi def link sqlConditional Conditional
+hi def link sqlRepeat Repeat
+hi def link sqlKeyword Keyword
+hi def link sqlOperator Operator
+hi def link sqlException Exception
+
+" === Identifier syntax group ===
+hi def link sqlFunction Function
+
+" === Type syntax group ===
+hi def link sqlType Type
+
+" === Todo syntax group ===
+hi def link sqlTodo Todo
+
+
+let b:current_syntax = "sqlinformix"
diff --git a/runtime/syntax/sqlj.vim b/runtime/syntax/sqlj.vim
new file mode 100644
index 0000000..c901145
--- /dev/null
+++ b/runtime/syntax/sqlj.vim
@@ -0,0 +1,91 @@
+" Vim syntax file
+" Language: sqlj
+" Maintainer: Andreas Fischbach <afisch@altavista.com>
+" This file is based on sql.vim && java.vim (thanx)
+" with a handful of additional sql words and still
+" a subset of whatever standard
+" Last change: 31th Dec 2001
+
+" au BufNewFile,BufRead *.sqlj so $VIM/syntax/sqlj.vim
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the Java syntax to start with
+source <sfile>:p:h/java.vim
+
+" SQLJ extentions
+" The SQL reserved words, defined as keywords.
+
+syn case ignore
+syn keyword sqljSpecial null
+
+syn keyword sqljKeyword access add as asc by check cluster column
+syn keyword sqljKeyword compress connect current decimal default
+syn keyword sqljKeyword desc else exclusive file for from group
+syn keyword sqljKeyword having identified immediate increment index
+syn keyword sqljKeyword initial into is level maxextents mode modify
+syn keyword sqljKeyword nocompress nowait of offline on online start
+syn keyword sqljKeyword successful synonym table then to trigger uid
+syn keyword sqljKeyword unique user validate values view whenever
+syn keyword sqljKeyword where with option order pctfree privileges
+syn keyword sqljKeyword public resource row rowlabel rownum rows
+syn keyword sqljKeyword session share size smallint
+
+syn keyword sqljKeyword fetch database context iterator field join
+syn keyword sqljKeyword foreign outer inner isolation left right
+syn keyword sqljKeyword match primary key
+
+syn keyword sqljOperator not and or
+syn keyword sqljOperator in any some all between exists
+syn keyword sqljOperator like escape
+syn keyword sqljOperator union intersect minus
+syn keyword sqljOperator prior distinct
+syn keyword sqljOperator sysdate
+
+syn keyword sqljOperator max min avg sum count hex
+
+syn keyword sqljStatement alter analyze audit comment commit create
+syn keyword sqljStatement delete drop explain grant insert lock noaudit
+syn keyword sqljStatement rename revoke rollback savepoint select set
+syn keyword sqljStatement truncate update begin work
+
+syn keyword sqljType char character date long raw mlslabel number
+syn keyword sqljType rowid varchar varchar2 float integer
+
+syn keyword sqljType byte text serial
+
+
+" Strings and characters:
+syn region sqljString start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn region sqljString start=+'+ skip=+\\\\\|\\"+ end=+'+
+
+" Numbers:
+syn match sqljNumber "-\=\<\d*\.\=[0-9_]\>"
+
+" PreProc
+syn match sqljPre "#sql"
+
+" Comments:
+syn region sqljComment start="/\*" end="\*/"
+syn match sqlComment "--.*"
+
+syn sync ccomment sqljComment
+
+
+" The default methods for highlighting. Can be overridden later.
+hi def link sqljComment Comment
+hi def link sqljKeyword sqljSpecial
+hi def link sqljNumber Number
+hi def link sqljOperator sqljStatement
+hi def link sqljSpecial Special
+hi def link sqljStatement Statement
+hi def link sqljString String
+hi def link sqljType Type
+hi def link sqljPre PreProc
+
+
+let b:current_syntax = "sqlj"
+
diff --git a/runtime/syntax/sqloracle.vim b/runtime/syntax/sqloracle.vim
new file mode 100644
index 0000000..0907b48
--- /dev/null
+++ b/runtime/syntax/sqloracle.vim
@@ -0,0 +1,150 @@
+" Vim syntax file
+" Language: SQL, PL/SQL (Oracle 11g)
+" Maintainer: Christian Brabandt
+" Repository: https://github.com/chrisbra/vim-sqloracle-syntax
+" License: Vim
+" Previous Maintainer: Paul Moore
+" Last Change: 2018 June 24
+
+" Changes:
+" 02.04.2016: Support for when keyword
+" 03.04.2016: Support for join related keywords
+" 22.07.2016: Support Oracle Q-Quote-Syntax
+" 25.07.2016: Support for Oracle N'-Quote syntax
+" 22.06.2018: Remove skip part for sqlString (do not escape strings)
+" (https://web.archive.org/web/20150922065035/https://mariadb.com/kb/en/sql-99/character-string-literals/)
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" The SQL reserved words, defined as keywords.
+
+syn keyword sqlSpecial false null true
+
+syn keyword sqlKeyword access add as asc begin by case check cluster column
+syn keyword sqlKeyword cache compress connect current cursor decimal default desc
+syn keyword sqlKeyword else elsif end exception exclusive file for from
+syn keyword sqlKeyword function group having identified if immediate increment
+syn keyword sqlKeyword index initial initrans into is level link logging loop
+syn keyword sqlKeyword maxextents maxtrans mode modify monitoring
+syn keyword sqlKeyword nocache nocompress nologging noparallel nowait of offline on online start
+syn keyword sqlKeyword parallel successful synonym table tablespace then to trigger uid
+syn keyword sqlKeyword unique user validate values view when whenever
+syn keyword sqlKeyword where with option order pctfree pctused privileges procedure
+syn keyword sqlKeyword public resource return row rowlabel rownum rows
+syn keyword sqlKeyword session share size smallint type using
+syn keyword sqlKeyword join cross inner outer left right
+
+syn keyword sqlOperator not and or
+syn keyword sqlOperator in any some all between exists
+syn keyword sqlOperator like escape
+syn keyword sqlOperator union intersect minus
+syn keyword sqlOperator prior distinct
+syn keyword sqlOperator sysdate out
+
+syn keyword sqlStatement analyze audit comment commit
+syn keyword sqlStatement delete drop execute explain grant lock noaudit
+syn keyword sqlStatement rename revoke rollback savepoint set
+syn keyword sqlStatement truncate
+" next ones are contained, so folding works.
+syn keyword sqlStatement create update alter select insert contained
+
+syn keyword sqlType bfile blob boolean char character clob date datetime
+syn keyword sqlType dec decimal float int integer long mlslabel nchar
+syn keyword sqlType nclob number numeric nvarchar2 precision raw rowid
+syn keyword sqlType smallint real timestamp urowid varchar varchar2 varray
+
+" Strings:
+syn region sqlString matchgroup=Quote start=+n\?"+ end=+"+
+syn region sqlString matchgroup=Quote start=+n\?'+ end=+'+
+syn region sqlString matchgroup=Quote start=+n\?q'\z([^[(<{]\)+ end=+\z1'+
+syn region sqlString matchgroup=Quote start=+n\?q'<+ end=+>'+
+syn region sqlString matchgroup=Quote start=+n\?q'{+ end=+}'+
+syn region sqlString matchgroup=Quote start=+n\?q'(+ end=+)'+
+syn region sqlString matchgroup=Quote start=+n\?q'\[+ end=+]'+
+
+" Numbers:
+syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>"
+
+" Comments:
+syn region sqlComment start="/\*" end="\*/" contains=sqlTodo,@Spell fold
+syn match sqlComment "--.*$" contains=sqlTodo,@Spell
+syn match sqlComment "^rem.*$" contains=sqlTodo,@Spell
+
+" Setup Folding:
+" this is a hack, to get certain statements folded.
+" the keywords create/update/alter/select/insert need to
+" have contained option.
+syn region sqlFold start='^\s*\zs\c\(Create\|Update\|Alter\|Select\|Insert\)' end=';$\|^$' transparent fold contains=ALL
+
+syn sync ccomment sqlComment
+
+" Functions:
+" (Oracle 11g)
+" Aggregate Functions
+syn keyword sqlFunction avg collect corr corr_s corr_k count covar_pop covar_samp cume_dist dense_rank first
+syn keyword sqlFunction group_id grouping grouping_id last max median min percentile_cont percentile_disc percent_rank rank
+syn keyword sqlFunction regr_slope regr_intercept regr_count regr_r2 regr_avgx regr_avgy regr_sxx regr_syy regr_sxy
+syn keyword sqlFunction stats_binomial_test stats_crosstab stats_f_test stats_ks_test stats_mode stats_mw_test
+syn keyword sqlFunction stats_one_way_anova stats_t_test_one stats_t_test_paired stats_t_test_indep stats_t_test_indepu
+syn keyword sqlFunction stats_wsr_test stddev stddev_pop stddev_samp sum
+syn keyword sqlFunction sys_xmlagg var_pop var_samp variance xmlagg
+" Char Functions
+syn keyword sqlFunction ascii chr concat initcap instr length lower lpad ltrim
+syn keyword sqlFunction nls_initcap nls_lower nlssort nls_upper regexp_instr regexp_replace
+syn keyword sqlFunction regexp_substr replace rpad rtrim soundex substr translate treat trim upper
+" Comparison Functions
+syn keyword sqlFunction greatest least
+" Conversion Functions
+syn keyword sqlFunction asciistr bin_to_num cast chartorowid compose convert
+syn keyword sqlFunction decompose hextoraw numtodsinterval numtoyminterval rawtohex rawtonhex rowidtochar
+syn keyword sqlFunction rowidtonchar scn_to_timestamp timestamp_to_scn to_binary_double to_binary_float
+syn keyword sqlFunction to_char to_char to_char to_clob to_date to_dsinterval to_lob to_multi_byte
+syn keyword sqlFunction to_nchar to_nchar to_nchar to_nclob to_number to_dsinterval to_single_byte
+syn keyword sqlFunction to_timestamp to_timestamp_tz to_yminterval to_yminterval translate unistr
+" DataMining Functions
+syn keyword sqlFunction cluster_id cluster_probability cluster_set feature_id feature_set
+syn keyword sqlFunction feature_value prediction prediction_bounds prediction_cost
+syn keyword sqlFunction prediction_details prediction_probability prediction_set
+" Datetime Functions
+syn keyword sqlFunction add_months current_date current_timestamp dbtimezone extract
+syn keyword sqlFunction from_tz last_day localtimestamp months_between new_time
+syn keyword sqlFunction next_day numtodsinterval numtoyminterval round sessiontimezone
+syn keyword sqlFunction sys_extract_utc sysdate systimestamp to_char to_timestamp
+syn keyword sqlFunction to_timestamp_tz to_dsinterval to_yminterval trunc tz_offset
+" Numeric Functions
+syn keyword sqlFunction abs acos asin atan atan2 bitand ceil cos cosh exp
+syn keyword sqlFunction floor ln log mod nanvl power remainder round sign
+syn keyword sqlFunction sin sinh sqrt tan tanh trunc width_bucket
+" NLS Functions
+syn keyword sqlFunction ls_charset_decl_len nls_charset_id nls_charset_name
+" Various Functions
+syn keyword sqlFunction bfilename cardin coalesce collect decode dump empty_blob empty_clob
+syn keyword sqlFunction lnnvl nullif nvl nvl2 ora_hash powermultiset powermultiset_by_cardinality
+syn keyword sqlFunction sys_connect_by_path sys_context sys_guid sys_typeid uid user userenv vsizeality
+" XML Functions
+syn keyword sqlFunction appendchildxml deletexml depth extract existsnode extractvalue insertchildxml
+syn keyword sqlFunction insertxmlbefore path sys_dburigen sys_xmlagg sys_xmlgen updatexml xmlagg xmlcast
+syn keyword sqlFunction xmlcdata xmlcolattval xmlcomment xmlconcat xmldiff xmlelement xmlexists xmlforest
+syn keyword sqlFunction xmlparse xmlpatch xmlpi xmlquery xmlroot xmlsequence xmlserialize xmltable xmltransform
+" Todo:
+syn keyword sqlTodo TODO FIXME XXX DEBUG NOTE contained
+
+" Define the default highlighting.
+hi def link Quote Special
+hi def link sqlComment Comment
+hi def link sqlFunction Function
+hi def link sqlKeyword sqlSpecial
+hi def link sqlNumber Number
+hi def link sqlOperator sqlStatement
+hi def link sqlSpecial Special
+hi def link sqlStatement Statement
+hi def link sqlString String
+hi def link sqlType Type
+hi def link sqlTodo Todo
+
+let b:current_syntax = "sql"
+" vim: ts=8
diff --git a/runtime/syntax/sqr.vim b/runtime/syntax/sqr.vim
new file mode 100644
index 0000000..40b4835
--- /dev/null
+++ b/runtime/syntax/sqr.vim
@@ -0,0 +1,262 @@
+" Vim syntax file
+" Language: Structured Query Report Writer (SQR)
+" Maintainer: Nathan Stratton Treadway (nathanst at ontko dot com)
+" URL: http://www.ontko.com/sqr/#editor_config_files
+"
+" Modification History:
+" 2002-Apr-12: Updated for SQR v6.x
+" 2002-Jul-30: Added { and } to iskeyword definition
+" 2003-Oct-15: Allow "." in variable names
+" highlight entire open '... literal when it contains
+" "''" inside it (e.g. "'I can''t say" is treated
+" as one open string, not one terminated and one open)
+" {} variables can occur inside of '...' literals
+"
+" Thanks to the previous maintainer of this file, Jeff Lanzarotta:
+" http://lanzarotta.tripod.com/vim.html
+" jefflanzarotta at yahoo dot com
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=@,48-57,_,-,#,$,{,}
+
+syn case ignore
+
+" BEGIN GENERATED SECTION ============================================
+
+" Generated by generate_vim_syntax.sqr at 2002/04/11 13:04
+" (based on the UltraEdit syntax file for SQR 6.1.4
+" found at http://www.ontko.com/sqr/#editor_config_files )
+
+syn keyword sqrSection begin-footing begin-heading begin-procedure
+syn keyword sqrSection begin-program begin-report begin-setup
+syn keyword sqrSection end-footing end-heading end-procedure
+syn keyword sqrSection end-program end-report end-setup
+
+syn keyword sqrParagraph alter-color-map alter-connection
+syn keyword sqrParagraph alter-locale alter-printer alter-report
+syn keyword sqrParagraph begin-document begin-execute begin-select
+syn keyword sqrParagraph begin-sql declare-chart declare-image
+syn keyword sqrParagraph declare-color-map declare-connection
+syn keyword sqrParagraph declare-layout declare-printer
+syn keyword sqrParagraph declare-report declare-procedure
+syn keyword sqrParagraph declare-toc declare-variable end-declare
+syn keyword sqrParagraph end-document end-select exit-select end-sql
+syn keyword sqrParagraph load-lookup
+
+syn keyword sqrReserved #current-column #current-date #current-line
+syn keyword sqrReserved #end-file #page-count #return-status
+syn keyword sqrReserved #sql-count #sql-status #sqr-max-columns
+syn keyword sqrReserved #sqr-max-lines #sqr-pid #sqr-toc-level
+syn keyword sqrReserved #sqr-toc-page $sqr-database {sqr-database}
+syn keyword sqrReserved $sqr-dbcs {sqr-dbcs} $sqr-encoding
+syn keyword sqrReserved {sqr-encoding} $sqr-encoding-console
+syn keyword sqrReserved {sqr-encoding-console}
+syn keyword sqrReserved $sqr-encoding-database
+syn keyword sqrReserved {sqr-encoding-database}
+syn keyword sqrReserved $sqr-encoding-file-input
+syn keyword sqrReserved {sqr-encoding-file-input}
+syn keyword sqrReserved $sqr-encoding-file-output
+syn keyword sqrReserved {sqr-encoding-file-output}
+syn keyword sqrReserved $sqr-encoding-report-input
+syn keyword sqrReserved {sqr-encoding-report-input}
+syn keyword sqrReserved $sqr-encoding-report-output
+syn keyword sqrReserved {sqr-encoding-report-output}
+syn keyword sqrReserved $sqr-encoding-source {sqr-encoding-source}
+syn keyword sqrReserved $sql-error $sqr-hostname {sqr-hostname}
+syn keyword sqrReserved $sqr-locale $sqr-platform {sqr-platform}
+syn keyword sqrReserved $sqr-program $sqr-report $sqr-toc-text
+syn keyword sqrReserved $sqr-ver $username
+
+syn keyword sqrPreProc #define #else #end-if #endif #if #ifdef
+syn keyword sqrPreProc #ifndef #include
+
+syn keyword sqrCommand add array-add array-divide array-multiply
+syn keyword sqrCommand array-subtract ask break call clear-array
+syn keyword sqrCommand close columns commit concat connect
+syn keyword sqrCommand create-array create-color-palette date-time
+syn keyword sqrCommand display divide do dollar-symbol else encode
+syn keyword sqrCommand end-evaluate end-if end-while evaluate
+syn keyword sqrCommand execute extract find get get-color goto
+syn keyword sqrCommand graphic if input last-page let lookup
+syn keyword sqrCommand lowercase mbtosbs money-symbol move
+syn keyword sqrCommand multiply new-page new-report next-column
+syn keyword sqrCommand next-listing no-formfeed open page-number
+syn keyword sqrCommand page-size position print print-bar-code
+syn keyword sqrCommand print-chart print-direct print-image
+syn keyword sqrCommand printer-deinit printer-init put read
+syn keyword sqrCommand rollback security set-color set-delay-print
+syn keyword sqrCommand set-generations set-levels set-members
+syn keyword sqrCommand sbtombs show stop string subtract toc-entry
+syn keyword sqrCommand unstring uppercase use use-column
+syn keyword sqrCommand use-printer-type use-procedure use-report
+syn keyword sqrCommand while write
+
+syn keyword sqrParam 3d-effects after after-bold after-page
+syn keyword sqrParam after-report after-toc and as at-end before
+syn keyword sqrParam background batch-mode beep before-bold
+syn keyword sqrParam before-page before-report before-toc blink
+syn keyword sqrParam bold border bottom-margin box break by
+syn keyword sqrParam caption center char char-size char-width
+syn keyword sqrParam chars-inch chart-size checksum cl
+syn keyword sqrParam clear-line clear-screen color color-palette
+syn keyword sqrParam cs color_ data-array
+syn keyword sqrParam data-array-column-count
+syn keyword sqrParam data-array-column-labels
+syn keyword sqrParam data-array-row-count data-labels date
+syn keyword sqrParam date-edit-mask date-seperator
+syn keyword sqrParam day-of-week-case day-of-week-full
+syn keyword sqrParam day-of-week-short decimal decimal-seperator
+syn keyword sqrParam default-numeric delay distinct dot-leader
+syn keyword sqrParam edit-option-ad edit-option-am
+syn keyword sqrParam edit-option-bc edit-option-na
+syn keyword sqrParam edit-option-pm encoding entry erase-page
+syn keyword sqrParam extent field fill fixed fixed_nolf float
+syn keyword sqrParam font font-style font-type footing
+syn keyword sqrParam footing-size foreground for-append
+syn keyword sqrParam for-reading for-reports for-tocs
+syn keyword sqrParam for-writing format formfeed from goto-top
+syn keyword sqrParam group having heading heading-size height
+syn keyword sqrParam horz-line image-size in indentation
+syn keyword sqrParam init-string input-date-edit-mask insert
+syn keyword sqrParam integer into item-color item-size key
+syn keyword sqrParam layout left-margin legend legend-placement
+syn keyword sqrParam legend-presentation legend-title level
+syn keyword sqrParam line-height line-size line-width lines-inch
+syn keyword sqrParam local locale loops max-columns max-lines
+syn keyword sqrParam maxlen money money-edit-mask money-sign
+syn keyword sqrParam money-sign-location months-case months-full
+syn keyword sqrParam months-short name need newline newpage
+syn keyword sqrParam no-advance nolf noline noprompt normal not
+syn keyword sqrParam nowait number number-edit-mask on-break
+syn keyword sqrParam on-error or order orientation page-depth
+syn keyword sqrParam paper-size pie-segment-explode
+syn keyword sqrParam pie-segment-percent-display
+syn keyword sqrParam pie-segment-quantity-display pitch
+syn keyword sqrParam point-markers point-size printer
+syn keyword sqrParam printer-type quiet record reset-string
+syn keyword sqrParam return_value reverse right-margin rows save
+syn keyword sqrParam select size skip skiplines sort source
+syn keyword sqrParam sqr-database sqr-platform startup-file
+syn keyword sqrParam status stop sub-title symbol-set system
+syn keyword sqrParam table text thousand-seperator
+syn keyword sqrParam time-seperator times title to toc
+syn keyword sqrParam top-margin type underline update using
+syn keyword sqrParam value vary vert-line wait warn when
+syn keyword sqrParam when-other where with x-axis-grid
+syn keyword sqrParam x-axis-label x-axis-major-increment
+syn keyword sqrParam x-axis-major-tick-marks x-axis-max-value
+syn keyword sqrParam x-axis-min-value x-axis-minor-increment
+syn keyword sqrParam x-axis-minor-tick-marks x-axis-rotate
+syn keyword sqrParam x-axis-scale x-axis-tick-mark-placement xor
+syn keyword sqrParam y-axis-grid y-axis-label
+syn keyword sqrParam y-axis-major-increment
+syn keyword sqrParam y-axis-major-tick-marks y-axis-max-value
+syn keyword sqrParam y-axis-min-value y-axis-minor-increment
+syn keyword sqrParam y-axis-minor-tick-marks y-axis-scale
+syn keyword sqrParam y-axis-tick-mark-placement y2-type
+syn keyword sqrParam y2-data-array y2-data-array-row-count
+syn keyword sqrParam y2-data-array-column-count
+syn keyword sqrParam y2-data-array-column-labels
+syn keyword sqrParam y2-axis-color-palette y2-axis-label
+syn keyword sqrParam y2-axis-major-increment
+syn keyword sqrParam y2-axis-major-tick-marks y2-axis-max-value
+syn keyword sqrParam y2-axis-min-value y2-axis-minor-increment
+syn keyword sqrParam y2-axis-minor-tick-marks y2-axis-scale
+
+syn keyword sqrFunction abs acos asin atan array ascii asciic ceil
+syn keyword sqrFunction cos cosh chr cond deg delete dateadd
+syn keyword sqrFunction datediff datenow datetostr e10 exp edit
+syn keyword sqrFunction exists floor getenv instr instrb isblank
+syn keyword sqrFunction isnull log log10 length lengthb lengthp
+syn keyword sqrFunction lengtht lower lpad ltrim mod nvl power rad
+syn keyword sqrFunction round range replace roman rpad rtrim rename
+syn keyword sqrFunction sign sin sinh sqrt substr substrb substrp
+syn keyword sqrFunction substrt strtodate tan tanh trunc to_char
+syn keyword sqrFunction to_multi_byte to_number to_single_byte
+syn keyword sqrFunction transform translate unicode upper wrapdepth
+
+" END GENERATED SECTION ==============================================
+
+" Variables
+syn match sqrVariable /\(\$\|#\|&\)\(\k\|\.\)*/
+
+
+" Debug compiler directives
+syn match sqrPreProc /\s*#debug\a\=\(\s\|$\)/
+syn match sqrSubstVar /{\k*}/
+
+
+" Strings
+" Note: if an undoubled ! is found, this is not a valid string
+" (SQR will treat the end of the line as a comment)
+syn match sqrString /'\(!!\|[^!']\)*'/ contains=sqrSubstVar
+syn match sqrStrOpen /'\(!!\|''\|[^!']\)*$/
+" If we find a ' followed by an unmatched ! before a matching ',
+" flag the error.
+syn match sqrError /'\(!!\|[^'!]\)*![^!]/me=e-1
+syn match sqrError /'\(!!\|[^'!]\)*!$/
+
+" Numbers:
+syn match sqrNumber /-\=\<\d*\.\=[0-9_]\>/
+
+
+
+" Comments:
+" Handle comments that start with "!=" specially; they are only valid
+" in the first column of the source line. Also, "!!" is only treated
+" as a start-comment if there is only whitespace ahead of it on the line.
+
+syn keyword sqrTodo TODO FIXME XXX DEBUG NOTE ###
+syn match sqrTodo /???/
+
+" See also the sqrString section above for handling of ! characters
+" inside of strings. (Those patterns override the ones below.)
+syn match sqrComment /!\@<!!\([^!=].*\|$\)/ contains=sqrTodo
+" the ! can't be preceded by another !,
+" and must be followed by at least one
+" character other than ! or =, or immediately
+" by the end-of-line
+syn match sqrComment /^!=.*/ contains=sqrTodo
+syn match sqrComment /^!!.*/ contains=sqrTodo
+syn match sqrError /^\s\+\zs!=.*/
+" it's an error to have "!=" preceded by
+" just whitespace on the line ("!="
+" preceded by non-whitespace is treated
+" as neither a comment nor an error, since
+" it is often correct, i.e.
+" if #count != 7
+syn match sqrError /.\+\zs!!.*/
+" a "!!" anywhere but at the beginning of
+" the line is always an error
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet.
+
+hi def link sqrSection Statement
+hi def link sqrParagraph Statement
+hi def link sqrReserved Statement
+hi def link sqrParameter Statement
+hi def link sqrPreProc PreProc
+hi def link sqrSubstVar PreProc
+hi def link sqrCommand Statement
+hi def link sqrParam Type
+hi def link sqrFunction Special
+
+hi def link sqrString String
+hi def link sqrStrOpen Todo
+hi def link sqrNumber Number
+hi def link sqrVariable Identifier
+
+hi def link sqrComment Comment
+hi def link sqrTodo Todo
+hi def link sqrError Error
+
+
+let b:current_syntax = "sqr"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/squid.vim b/runtime/syntax/squid.vim
new file mode 100644
index 0000000..a8abd18
--- /dev/null
+++ b/runtime/syntax/squid.vim
@@ -0,0 +1,140 @@
+" Vim syntax file
+" Language: Squid config file
+" Maintainer: Klaus Muth <klaus@hampft.de>
+" Last Change: 2005 Jun 12
+" URL: http://www.hampft.de/vim/syntax/squid.vim
+" ThanksTo: Ilya Sher <iso8601@mail.ru>,
+" Michael Dotzler <Michael.Dotzler@leoni.com>
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" squid.conf syntax seems to be case insensitive
+syn case ignore
+
+syn keyword squidTodo contained TODO
+syn match squidComment "#.*$" contains=squidTodo,squidTag
+syn match squidTag contained "TAG: .*$"
+
+" Lots & lots of Keywords!
+syn keyword squidConf acl always_direct announce_host announce_period
+syn keyword squidConf announce_port announce_to anonymize_headers
+syn keyword squidConf append_domain as_whois_server auth_param_basic
+syn keyword squidConf authenticate_children authenticate_program
+syn keyword squidConf authenticate_ttl broken_posts buffered_logs
+syn keyword squidConf cache_access_log cache_announce cache_dir
+syn keyword squidConf cache_dns_program cache_effective_group
+syn keyword squidConf cache_effective_user cache_host cache_host_acl
+syn keyword squidConf cache_host_domain cache_log cache_mem
+syn keyword squidConf cache_mem_high cache_mem_low cache_mgr
+syn keyword squidConf cachemgr_passwd cache_peer cache_peer_access
+syn keyword squidConf cahce_replacement_policy cache_stoplist
+syn keyword squidConf cache_stoplist_pattern cache_store_log cache_swap
+syn keyword squidConf cache_swap_high cache_swap_log cache_swap_low
+syn keyword squidConf client_db client_lifetime client_netmask
+syn keyword squidConf connect_timeout coredump_dir dead_peer_timeout
+syn keyword squidConf debug_options delay_access delay_class
+syn keyword squidConf delay_initial_bucket_level delay_parameters
+syn keyword squidConf delay_pools deny_info dns_children dns_defnames
+syn keyword squidConf dns_nameservers dns_testnames emulate_httpd_log
+syn keyword squidConf err_html_text fake_user_agent firewall_ip
+syn keyword squidConf forwarded_for forward_snmpd_port fqdncache_size
+syn keyword squidConf ftpget_options ftpget_program ftp_list_width
+syn keyword squidConf ftp_passive ftp_user half_closed_clients
+syn keyword squidConf header_access header_replace hierarchy_stoplist
+syn keyword squidConf high_response_time_warning high_page_fault_warning
+syn keyword squidConf htcp_port http_access http_anonymizer httpd_accel
+syn keyword squidConf httpd_accel_host httpd_accel_port
+syn keyword squidConf httpd_accel_uses_host_header
+syn keyword squidConf httpd_accel_with_proxy http_port http_reply_access
+syn keyword squidConf icp_access icp_hit_stale icp_port
+syn keyword squidConf icp_query_timeout ident_lookup ident_lookup_access
+syn keyword squidConf ident_timeout incoming_http_average
+syn keyword squidConf incoming_icp_average inside_firewall ipcache_high
+syn keyword squidConf ipcache_low ipcache_size local_domain local_ip
+syn keyword squidConf logfile_rotate log_fqdn log_icp_queries
+syn keyword squidConf log_mime_hdrs maximum_object_size
+syn keyword squidConf maximum_single_addr_tries mcast_groups
+syn keyword squidConf mcast_icp_query_timeout mcast_miss_addr
+syn keyword squidConf mcast_miss_encode_key mcast_miss_port memory_pools
+syn keyword squidConf memory_pools_limit memory_replacement_policy
+syn keyword squidConf mime_table min_http_poll_cnt min_icp_poll_cnt
+syn keyword squidConf minimum_direct_hops minimum_object_size
+syn keyword squidConf minimum_retry_timeout miss_access negative_dns_ttl
+syn keyword squidConf negative_ttl neighbor_timeout neighbor_type_domain
+syn keyword squidConf netdb_high netdb_low netdb_ping_period
+syn keyword squidConf netdb_ping_rate never_direct no_cache
+syn keyword squidConf passthrough_proxy pconn_timeout pid_filename
+syn keyword squidConf pinger_program positive_dns_ttl prefer_direct
+syn keyword squidConf proxy_auth proxy_auth_realm query_icmp quick_abort
+syn keyword squidConf quick_abort quick_abort_max quick_abort_min
+syn keyword squidConf quick_abort_pct range_offset_limit read_timeout
+syn keyword squidConf redirect_children redirect_program
+syn keyword squidConf redirect_rewrites_host_header reference_age
+syn keyword squidConf reference_age refresh_pattern reload_into_ims
+syn keyword squidConf request_body_max_size request_size request_timeout
+syn keyword squidConf shutdown_lifetime single_parent_bypass
+syn keyword squidConf siteselect_timeout snmp_access
+syn keyword squidConf snmp_incoming_address snmp_port source_ping
+syn keyword squidConf ssl_proxy store_avg_object_size
+syn keyword squidConf store_objects_per_bucket strip_query_terms
+syn keyword squidConf swap_level1_dirs swap_level2_dirs
+syn keyword squidConf tcp_incoming_address tcp_outgoing_address
+syn keyword squidConf tcp_recv_bufsize test_reachability udp_hit_obj
+syn keyword squidConf udp_hit_obj_size udp_incoming_address
+syn keyword squidConf udp_outgoing_address unique_hostname
+syn keyword squidConf unlinkd_program uri_whitespace useragent_log
+syn keyword squidConf visible_hostname wais_relay wais_relay_host
+syn keyword squidConf wais_relay_port
+
+syn keyword squidOpt proxy-only weight ttl no-query default
+syn keyword squidOpt round-robin multicast-responder
+syn keyword squidOpt on off all deny allow
+syn keyword squidopt via parent no-digest heap lru realm
+syn keyword squidopt children credentialsttl none disable
+syn keyword squidopt offline_toggle diskd q1 q2
+
+" Security Actions for cachemgr_passwd
+syn keyword squidAction shutdown info parameter server_list
+syn keyword squidAction client_list
+syn match squidAction "stats/\(objects\|vm_objects\|utilization\|ipcache\|fqdncache\|dns\|redirector\|io\|reply_headers\|filedescriptors\|netdb\)"
+syn match squidAction "log\(/\(status\|enable\|disable\|clear\)\)\="
+syn match squidAction "squid\.conf"
+
+" Keywords for the acl-config
+syn keyword squidAcl url_regex urlpath_regex referer_regex port proto
+syn keyword squidAcl req_mime_type rep_mime_type
+syn keyword squidAcl method browser user src dst
+syn keyword squidAcl time dstdomain ident snmp_community
+
+syn match squidNumber "\<\d\+\>"
+syn match squidIP "\<\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\>"
+syn match squidStr "\(^\s*acl\s\+\S\+\s\+\(\S*_regex\|re[pq]_mime_type\|browser\|_domain\|user\)\+\s\+\)\@<=.*" contains=squidRegexOpt
+syn match squidRegexOpt contained "\(^\s*acl\s\+\S\+\s\+\S\+\(_regex\|_mime_type\)\s\+\)\@<=[-+]i\s\+"
+
+" All config is in one line, so this has to be sufficient
+" Make it fast like hell :)
+syn sync minlines=3
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link squidTodo Todo
+hi def link squidComment Comment
+hi def link squidTag Special
+hi def link squidConf Keyword
+hi def link squidOpt Constant
+hi def link squidAction String
+hi def link squidNumber Number
+hi def link squidIP Number
+hi def link squidAcl Keyword
+hi def link squidStr String
+hi def link squidRegexOpt Special
+
+
+let b:current_syntax = "squid"
+
+" vim: ts=8
diff --git a/runtime/syntax/squirrel.vim b/runtime/syntax/squirrel.vim
new file mode 100644
index 0000000..81d59cc
--- /dev/null
+++ b/runtime/syntax/squirrel.vim
@@ -0,0 +1,50 @@
+" Vim syntax file
+" Language: squirrel
+" Current Maintainer: Matt Dunford (zenmatic@gmail.com)
+" URL: https://github.com/zenmatic/vim-syntax-squirrel
+" Last Change: 2021 Nov 28
+
+" http://squirrel-lang.org/
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" inform C syntax that the file was included from cpp.vim
+let b:filetype_in_cpp_family = 1
+
+" Read the C syntax to start with
+runtime! syntax/c.vim
+unlet b:current_syntax
+
+" squirrel extensions
+syn keyword squirrelStatement delete this in yield resume base clone
+syn keyword squirrelAccess local
+syn keyword cConstant null
+syn keyword squirrelModifier static
+syn keyword squirrelType bool instanceof typeof
+syn keyword squirrelExceptions throw try catch
+syn keyword squirrelStructure class function extends constructor
+syn keyword squirrelBoolean true false
+syn keyword squirrelRepeat foreach
+
+syn region squirrelMultiString start='@"' end='"$' end='";$'me=e-1
+
+syn match squirrelShComment "^\s*#.*$"
+
+" Default highlighting
+hi def link squirrelAccess squirrelStatement
+hi def link squirrelExceptions Exception
+hi def link squirrelStatement Statement
+hi def link squirrelModifier Type
+hi def link squirrelType Type
+hi def link squirrelStructure Structure
+hi def link squirrelBoolean Boolean
+hi def link squirrelMultiString String
+hi def link squirrelRepeat cRepeat
+hi def link squirrelShComment Comment
+
+let b:current_syntax = "squirrel"
+
+" vim: ts=8
diff --git a/runtime/syntax/srec.vim b/runtime/syntax/srec.vim
new file mode 100644
index 0000000..6ac22d9
--- /dev/null
+++ b/runtime/syntax/srec.vim
@@ -0,0 +1,83 @@
+" Vim syntax file
+" Language: Motorola S-Record
+" Maintainer: Markus Heidelberg <markus.heidelberg@web.de>
+" Last Change: 2015 Feb 24
+
+" Each record (line) is built as follows:
+"
+" field digits states
+"
+" +----------+
+" | start | 1 ('S') srecRecStart
+" +----------+
+" | type | 1 srecRecType, (srecRecTypeUnknown)
+" +----------+
+" | count | 2 srecByteCount
+" +----------+
+" | address | 4/6/8 srecNoAddress, srecDataAddress, srecRecCount, srecStartAddress, (srecAddressFieldUnknown)
+" +----------+
+" | data | 0..504/502/500 srecDataOdd, srecDataEven, (srecDataUnexpected)
+" +----------+
+" | checksum | 2 srecChecksum
+" +----------+
+"
+" States in parentheses in the upper format description indicate that they
+" should not appear in a valid file.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match srecRecStart "^S"
+
+syn match srecRecTypeUnknown "^S." contains=srecRecStart
+syn match srecRecType "^S[0-35-9]" contains=srecRecStart
+
+syn match srecByteCount "^S.[0-9a-fA-F]\{2}" contains=srecRecTypeUnknown nextgroup=srecAddressFieldUnknown,srecChecksum
+syn match srecByteCount "^S[0-35-9][0-9a-fA-F]\{2}" contains=srecRecType
+
+syn match srecAddressFieldUnknown "[0-9a-fA-F]\{2}" contained nextgroup=srecAddressFieldUnknown,srecChecksum
+
+syn match srecNoAddress "^S0[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum
+syn match srecDataAddress "^S1[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum
+syn match srecDataAddress "^S2[0-9a-fA-F]\{8}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum
+syn match srecDataAddress "^S3[0-9a-fA-F]\{10}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum
+syn match srecRecCount "^S5[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum
+syn match srecRecCount "^S6[0-9a-fA-F]\{8}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum
+syn match srecStartAddress "^S7[0-9a-fA-F]\{10}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum
+syn match srecStartAddress "^S8[0-9a-fA-F]\{8}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum
+syn match srecStartAddress "^S9[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum
+
+" alternating highlight per byte for easier reading
+syn match srecDataOdd "[0-9a-fA-F]\{2}" contained nextgroup=srecDataEven,srecChecksum
+syn match srecDataEven "[0-9a-fA-F]\{2}" contained nextgroup=srecDataOdd,srecChecksum
+" data bytes which should not exist
+syn match srecDataUnexpected "[0-9a-fA-F]\{2}" contained nextgroup=srecDataUnexpected,srecChecksum
+" Data digit pair regex usage also results in only highlighting the checksum
+" if the number of data characters is even.
+
+syn match srecChecksum "[0-9a-fA-F]\{2}$" contained
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later
+hi def link srecRecStart srecRecType
+hi def link srecRecTypeUnknown srecRecType
+hi def link srecRecType WarningMsg
+hi def link srecByteCount Constant
+hi def srecAddressFieldUnknown term=italic cterm=italic gui=italic
+hi def link srecNoAddress DiffAdd
+hi def link srecDataAddress Comment
+hi def link srecRecCount srecNoAddress
+hi def link srecStartAddress srecDataAddress
+hi def srecDataOdd term=bold cterm=bold gui=bold
+hi def srecDataEven term=NONE cterm=NONE gui=NONE
+hi def link srecDataUnexpected Error
+hi def link srecChecksum DiffChange
+
+
+let b:current_syntax = "srec"
+
+" vim: ts=8
diff --git a/runtime/syntax/srt.vim b/runtime/syntax/srt.vim
new file mode 100644
index 0000000..12fb264
--- /dev/null
+++ b/runtime/syntax/srt.vim
@@ -0,0 +1,62 @@
+" Vim syntax file
+" Language: SubRip
+" Maintainer: ObserverOfTime <chronobserver@disroot.org>
+" Filenames: *.srt
+" Last Change: 2022 Sep 12
+
+if exists('b:current_syntax')
+ finish
+endif
+
+syn spell toplevel
+
+syn cluster srtSpecial contains=srtBold,srtItalics,srtStrikethrough,srtUnderline,srtFont,srtTag,srtEscape
+
+" Number
+syn match srtNumber /^\d\+$/ contains=@NoSpell
+
+" Range
+syn match srtRange /\d\d:\d\d:\d\d[,.]\d\d\d --> \d\d:\d\d:\d\d[,.]\d\d\d/ skipwhite contains=srtArrow,srtTime nextgroup=srtCoordinates
+syn match srtArrow /-->/ contained contains=@NoSpell
+syn match srtTime /\d\d:\d\d:\d\d[,.]\d\d\d/ contained contains=@NoSpell
+syn match srtCoordinates /X1:\d\+ X2:\d\+ Y1:\d\+ Y2:\d\+/ contained contains=@NoSpell
+
+" Bold
+syn region srtBold matchgroup=srtFormat start=+<b>+ end=+</b>+ contains=@srtSpecial
+syn region srtBold matchgroup=srtFormat start=+{b}+ end=+{/b}+ contains=@srtSpecial
+
+" Italics
+syn region srtItalics matchgroup=srtFormat start=+<i>+ end=+</i>+ contains=@srtSpecial
+syn region srtItalics matchgroup=srtFormat start=+{i}+ end=+{/i}+ contains=@srtSpecial
+
+" Strikethrough
+syn region srtStrikethrough matchgroup=srtFormat start=+<s>+ end=+</s>+ contains=@srtSpecial
+syn region srtStrikethrough matchgroup=srtFormat start=+{s}+ end=+{/s}+ contains=@srtSpecial
+
+" Underline
+syn region srtUnderline matchgroup=srtFormat start=+<u>+ end=+</u>+ contains=@srtSpecial
+syn region srtUnderline matchgroup=srtFormat start=+{u}+ end=+{/u}+ contains=@srtSpecial
+
+" Font
+syn region srtFont matchgroup=srtFormat start=+<font[^>]\{-}>+ end=+</font>+ contains=@srtSpecial
+
+" ASS tags
+syn match srtTag /{\\[^}]\{1,}}/ contains=@NoSpell
+
+" Special characters
+syn match srtEscape /\\[nNh]/ contains=@NoSpell
+
+hi def link srtArrow Delimiter
+hi def link srtCoordinates Label
+hi def link srtEscape SpecialChar
+hi def link srtFormat Special
+hi def link srtNumber Number
+hi def link srtTag PreProc
+hi def link srtTime String
+
+hi srtBold cterm=bold gui=bold
+hi srtItalics cterm=italic gui=italic
+hi srtStrikethrough cterm=strikethrough gui=strikethrough
+hi srtUnderline cterm=underline gui=underline
+
+let b:current_syntax = 'srt'
diff --git a/runtime/syntax/ssa.vim b/runtime/syntax/ssa.vim
new file mode 100644
index 0000000..a5dbf37
--- /dev/null
+++ b/runtime/syntax/ssa.vim
@@ -0,0 +1,63 @@
+" Vim syntax file
+" Language: SubStation Alpha
+" Maintainer: ObserverOfTime <chronobserver@disroot.org>
+" Filenames: *.ass,*.ssa
+" Last Change: 2022 Oct 10
+
+if exists('b:current_syntax')
+ finish
+endif
+
+" Comments
+syn keyword ssaTodo TODO FIXME NOTE XXX contained
+syn match ssaComment /^\(;\|!:\).*$/ contains=ssaTodo,@Spell
+syn match ssaTextComment /{[^}]*}/ contained contains=@Spell
+
+" Sections
+syn match ssaSection /^\[[a-zA-Z0-9+ ]\+\]$/
+
+" Headers
+syn match ssaHeader /^[^;!:]\+:/ skipwhite nextgroup=ssaField
+
+" Fields
+syn match ssaField /[^,]*/ contained skipwhite nextgroup=ssaDelimiter
+
+" Time
+syn match ssaTime /\d:\d\d:\d\d\.\d\d/ contained skipwhite nextgroup=ssaDelimiter
+
+" Delimiter
+syn match ssaDelimiter /,/ contained skipwhite nextgroup=ssaField,ssaTime,ssaText
+
+" Text
+syn match ssaText /\(^Dialogue:\(.*,\)\{9}\)\@<=.*$/ contained contains=@ssaTags,@Spell
+syn cluster ssaTags contains=ssaOverrideTag,ssaEscapeChar,ssaTextComment,ssaItalics,ssaBold,ssaUnderline,ssaStrikeout
+
+" Override tags
+syn match ssaOverrideTag /{\\[^}]\+}/ contained contains=@NoSpell
+
+" Special characters
+syn match ssaEscapeChar /\\[nNh{}]/ contained contains=@NoSpell
+
+" Markup
+syn region ssaItalics start=/{\\i1}/ end=/{\\i0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
+syn region ssaBold start=/{\\b1}/ end=/{\\b0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
+syn region ssaUnderline start=/{\\u1}/ end=/{\\u0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
+syn region ssaStrikeout start=/{\\s1}/ end=/{\\s0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
+
+hi def link ssaDelimiter Delimiter
+hi def link ssaComment Comment
+hi def link ssaEscapeChar SpecialChar
+hi def link ssaField String
+hi def link ssaHeader Label
+hi def link ssaSection StorageClass
+hi def link ssaOverrideTag Special
+hi def link ssaTextComment Comment
+hi def link ssaTime Number
+hi def link ssaTodo Todo
+
+hi ssaBold cterm=bold gui=bold
+hi ssaItalics cterm=italic gui=italic
+hi ssaStrikeout cterm=strikethrough gui=strikethrough
+hi ssaUnderline cterm=underline gui=underline
+
+let b:current_syntax = 'srt'
diff --git a/runtime/syntax/sshconfig.vim b/runtime/syntax/sshconfig.vim
new file mode 100644
index 0000000..750289d
--- /dev/null
+++ b/runtime/syntax/sshconfig.vim
@@ -0,0 +1,296 @@
+" Vim syntax file
+" Language: OpenSSH client configuration file (ssh_config)
+" Author: David Necas (Yeti)
+" Maintainer: Jakub Jelen <jakuje at gmail dot com>
+" Previous Maintainer: Dominik Fischer <d dot f dot fischer at web dot de>
+" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
+" Contributor: Karsten Hopp <karsten@redhat.com>
+" Contributor: Dean, Adam Kenneth <adam.ken.dean@hpe.com>
+" Last Change: 2022 Nov 10
+" Added RemoteCommand from pull request #4809
+" Included additional keywords from Martin.
+" Included PR #5753
+" SSH Version: 8.5p1
+"
+
+" Setup
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=_,-,a-z,A-Z,48-57
+
+
+" case on
+syn case match
+
+
+" Comments
+syn match sshconfigComment "^#.*$" contains=sshconfigTodo
+syn match sshconfigComment "\s#.*$" contains=sshconfigTodo
+
+syn keyword sshconfigTodo TODO FIXME NOTE contained
+
+
+" Constants
+syn keyword sshconfigYesNo yes no ask confirm
+syn keyword sshconfigYesNo any auto
+syn keyword sshconfigYesNo force autoask none
+
+syn keyword sshconfigCipher 3des blowfish
+
+syn keyword sshconfigCiphers 3des-cbc
+syn keyword sshconfigCiphers blowfish-cbc
+syn keyword sshconfigCiphers cast128-cbc
+syn keyword sshconfigCiphers arcfour
+syn keyword sshconfigCiphers arcfour128
+syn keyword sshconfigCiphers arcfour256
+syn keyword sshconfigCiphers aes128-cbc
+syn keyword sshconfigCiphers aes192-cbc
+syn keyword sshconfigCiphers aes256-cbc
+syn match sshconfigCiphers "\<rijndael-cbc@lysator\.liu.se\>"
+syn keyword sshconfigCiphers aes128-ctr
+syn keyword sshconfigCiphers aes192-ctr
+syn keyword sshconfigCiphers aes256-ctr
+syn match sshconfigCiphers "\<aes128-gcm@openssh\.com\>"
+syn match sshconfigCiphers "\<aes256-gcm@openssh\.com\>"
+syn match sshconfigCiphers "\<chacha20-poly1305@openssh\.com\>"
+
+syn keyword sshconfigMAC hmac-sha1
+syn keyword sshconfigMAC hmac-sha1-96
+syn keyword sshconfigMAC hmac-sha2-256
+syn keyword sshconfigMAC hmac-sha2-512
+syn keyword sshconfigMAC hmac-md5
+syn keyword sshconfigMAC hmac-md5-96
+syn keyword sshconfigMAC hmac-ripemd160
+syn match sshconfigMAC "\<hmac-ripemd160@openssh\.com\>"
+syn match sshconfigMAC "\<umac-64@openssh\.com\>"
+syn match sshconfigMAC "\<umac-128@openssh\.com\>"
+syn match sshconfigMAC "\<hmac-sha1-etm@openssh\.com\>"
+syn match sshconfigMAC "\<hmac-sha1-96-etm@openssh\.com\>"
+syn match sshconfigMAC "\<hmac-sha2-256-etm@openssh\.com\>"
+syn match sshconfigMAC "\<hmac-sha2-512-etm@openssh\.com\>"
+syn match sshconfigMAC "\<hmac-md5-etm@openssh\.com\>"
+syn match sshconfigMAC "\<hmac-md5-96-etm@openssh\.com\>"
+syn match sshconfigMAC "\<hmac-ripemd160-etm@openssh\.com\>"
+syn match sshconfigMAC "\<umac-64-etm@openssh\.com\>"
+syn match sshconfigMAC "\<umac-128-etm@openssh\.com\>"
+
+syn keyword sshconfigHostKeyAlgo ssh-ed25519
+syn match sshconfigHostKeyAlgo "\<ssh-ed25519-cert-v01@openssh\.com\>"
+syn match sshconfigHostKeyAlgo "\<sk-ssh-ed25519@openssh\.com\>"
+syn match sshconfigHostKeyAlgo "\<sk-ssh-ed25519-cert-v01@openssh\.com\>"
+syn keyword sshconfigHostKeyAlgo ssh-rsa
+syn keyword sshconfigHostKeyAlgo rsa-sha2-256
+syn keyword sshconfigHostKeyAlgo rsa-sha2-512
+syn keyword sshconfigHostKeyAlgo ssh-dss
+syn keyword sshconfigHostKeyAlgo ecdsa-sha2-nistp256
+syn keyword sshconfigHostKeyAlgo ecdsa-sha2-nistp384
+syn keyword sshconfigHostKeyAlgo ecdsa-sha2-nistp521
+syn match sshconfigHostKeyAlgo "\<sk-ecdsa-sha2-nistp256@openssh\.com\>"
+syn match sshconfigHostKeyAlgo "\<ssh-rsa-cert-v01@openssh\.com\>"
+syn match sshconfigHostKeyAlgo "\<rsa-sha2-256-cert-v01@openssh\.com\>"
+syn match sshconfigHostKeyAlgo "\<rsa-sha2-512-cert-v01@openssh\.com\>"
+syn match sshconfigHostKeyAlgo "\<ssh-dss-cert-v01@openssh\.com\>"
+syn match sshconfigHostKeyAlgo "\<ecdsa-sha2-nistp256-cert-v01@openssh\.com\>"
+syn match sshconfigHostKeyAlgo "\<ecdsa-sha2-nistp384-cert-v01@openssh\.com\>"
+syn match sshconfigHostKeyAlgo "\<ecdsa-sha2-nistp521-cert-v01@openssh\.com\>"
+syn match sshconfigHostKeyAlgo "\<sk-ecdsa-sha2-nistp256-cert-v01@openssh\.com\>"
+
+syn keyword sshconfigPreferredAuth hostbased publickey password gssapi-with-mic
+syn keyword sshconfigPreferredAuth keyboard-interactive
+
+syn keyword sshconfigLogLevel QUIET FATAL ERROR INFO VERBOSE
+syn keyword sshconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3
+syn keyword sshconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1
+syn keyword sshconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7
+syn keyword sshconfigAddressFamily inet inet6
+
+syn match sshconfigIPQoS "af1[123]"
+syn match sshconfigIPQoS "af2[123]"
+syn match sshconfigIPQoS "af3[123]"
+syn match sshconfigIPQoS "af4[123]"
+syn match sshconfigIPQoS "cs[0-7]"
+syn keyword sshconfigIPQoS ef lowdelay throughput reliability
+syn keyword sshconfigKbdInteractive bsdauth pam skey
+
+syn keyword sshconfigKexAlgo diffie-hellman-group1-sha1
+syn keyword sshconfigKexAlgo diffie-hellman-group14-sha1
+syn keyword sshconfigKexAlgo diffie-hellman-group-exchange-sha1
+syn keyword sshconfigKexAlgo diffie-hellman-group-exchange-sha256
+syn keyword sshconfigKexAlgo ecdh-sha2-nistp256
+syn keyword sshconfigKexAlgo ecdh-sha2-nistp384
+syn keyword sshconfigKexAlgo ecdh-sha2-nistp521
+syn match sshconfigKexAlgo "\<curve25519-sha256@libssh\.org\>"
+
+syn keyword sshconfigTunnel point-to-point ethernet
+
+syn match sshconfigVar "%[rhplLdun]\>"
+syn match sshconfigSpecial "[*?]"
+syn match sshconfigNumber "\d\+"
+syn match sshconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>"
+syn match sshconfigHostPort "\<\([-a-zA-Z0-9]\+\.\)\+[-a-zA-Z0-9]\{2,}\(:\d\+\)\?\>"
+syn match sshconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}[:/]\d\+\>"
+syn match sshconfigHostPort "\(Host \)\@<=.\+"
+syn match sshconfigHostPort "\(HostName \)\@<=.\+"
+
+" case off
+syn case ignore
+
+
+" Keywords
+syn keyword sshconfigHostSect Host
+
+syn keyword sshconfigMatch canonical final exec host originalhost user localuser all
+
+syn keyword sshconfigKeyword AddressFamily
+syn keyword sshconfigKeyword AddKeysToAgent
+syn keyword sshconfigKeyword BatchMode
+syn keyword sshconfigKeyword BindAddress
+syn keyword sshconfigKeyword BindInterface
+syn keyword sshconfigKeyword CanonicalDomains
+syn keyword sshconfigKeyword CanonicalizeFallbackLocal
+syn keyword sshconfigKeyword CanonicalizeHostname
+syn keyword sshconfigKeyword CanonicalizeMaxDots
+syn keyword sshconfigKeyword CanonicalizePermittedCNAMEs
+syn keyword sshconfigKeyword CASignatureAlgorithms
+syn keyword sshconfigKeyword CertificateFile
+syn keyword sshconfigKeyword ChallengeResponseAuthentication
+syn keyword sshconfigKeyword CheckHostIP
+syn keyword sshconfigKeyword Ciphers
+syn keyword sshconfigKeyword ClearAllForwardings
+syn keyword sshconfigKeyword Compression
+syn keyword sshconfigKeyword ConnectTimeout
+syn keyword sshconfigKeyword ConnectionAttempts
+syn keyword sshconfigKeyword ControlMaster
+syn keyword sshconfigKeyword ControlPath
+syn keyword sshconfigKeyword ControlPersist
+syn keyword sshconfigKeyword DynamicForward
+syn keyword sshconfigKeyword EnableSSHKeysign
+syn keyword sshconfigKeyword EscapeChar
+syn keyword sshconfigKeyword ExitOnForwardFailure
+syn keyword sshconfigKeyword FingerprintHash
+syn keyword sshconfigKeyword ForkAfterAuthentication
+syn keyword sshconfigKeyword ForwardAgent
+syn keyword sshconfigKeyword ForwardX11
+syn keyword sshconfigKeyword ForwardX11Timeout
+syn keyword sshconfigKeyword ForwardX11Trusted
+syn keyword sshconfigKeyword GSSAPIAuthentication
+syn keyword sshconfigKeyword GSSAPIDelegateCredentials
+syn keyword sshconfigKeyword GatewayPorts
+syn keyword sshconfigKeyword GlobalKnownHostsFile
+syn keyword sshconfigKeyword HashKnownHosts
+syn keyword sshconfigKeyword HostKeyAlgorithms
+syn keyword sshconfigKeyword HostKeyAlias
+syn keyword sshconfigKeyword HostName
+syn keyword sshconfigKeyword HostbasedAuthentication
+syn keyword sshconfigKeyword HostbasedAcceptedAlgorithms
+syn keyword sshconfigKeyword HostbasedKeyTypes
+syn keyword sshconfigKeyword IPQoS
+syn keyword sshconfigKeyword IdentitiesOnly
+syn keyword sshconfigKeyword IdentityAgent
+syn keyword sshconfigKeyword IdentityFile
+syn keyword sshconfigKeyword IgnoreUnknown
+syn keyword sshconfigKeyword Include
+syn keyword sshconfigKeyword IPQoS
+syn keyword sshconfigKeyword KbdInteractiveAuthentication
+syn keyword sshconfigKeyword KbdInteractiveDevices
+syn keyword sshconfigKeyword KexAlgorithms
+syn keyword sshconfigKeyword KnownHostsCommand
+syn keyword sshconfigKeyword LocalCommand
+syn keyword sshconfigKeyword LocalForward
+syn keyword sshconfigKeyword LogLevel
+syn keyword sshconfigKeyword LogVerbose
+syn keyword sshconfigKeyword MACs
+syn keyword sshconfigKeyword Match
+syn keyword sshconfigKeyword NoHostAuthenticationForLocalhost
+syn keyword sshconfigKeyword NumberOfPasswordPrompts
+syn keyword sshconfigKeyword PKCS11Provider
+syn keyword sshconfigKeyword PasswordAuthentication
+syn keyword sshconfigKeyword PermitLocalCommand
+syn keyword sshconfigKeyword PermitRemoteOpen
+syn keyword sshconfigKeyword Port
+syn keyword sshconfigKeyword PreferredAuthentications
+syn keyword sshconfigKeyword ProxyCommand
+syn keyword sshconfigKeyword ProxyJump
+syn keyword sshconfigKeyword ProxyUseFDPass
+syn keyword sshconfigKeyword PubkeyAcceptedAlgorithms
+syn keyword sshconfigKeyword PubkeyAcceptedKeyTypes
+syn keyword sshconfigKeyword PubkeyAuthentication
+syn keyword sshconfigKeyword RekeyLimit
+syn keyword sshconfigKeyword RemoteCommand
+syn keyword sshconfigKeyword RemoteForward
+syn keyword sshconfigKeyword RequestTTY
+syn keyword sshconfigKeyword RequiredRSASize
+syn keyword sshconfigKeyword RevokedHostKeys
+syn keyword sshconfigKeyword SecurityKeyProvider
+syn keyword sshconfigKeyword SendEnv
+syn keyword sshconfigKeyword ServerAliveCountMax
+syn keyword sshconfigKeyword ServerAliveInterval
+syn keyword sshconfigKeyword SessionType
+syn keyword sshconfigKeyword SmartcardDevice
+syn keyword sshconfigKeyword SetEnv
+syn keyword sshconfigKeyword StdinNull
+syn keyword sshconfigKeyword StreamLocalBindMask
+syn keyword sshconfigKeyword StreamLocalBindUnlink
+syn keyword sshconfigKeyword StrictHostKeyChecking
+syn keyword sshconfigKeyword SyslogFacility
+syn keyword sshconfigKeyword TCPKeepAlive
+syn keyword sshconfigKeyword Tunnel
+syn keyword sshconfigKeyword TunnelDevice
+syn keyword sshconfigKeyword UseBlacklistedKeys
+syn keyword sshconfigKeyword UpdateHostKeys
+syn keyword sshconfigKeyword User
+syn keyword sshconfigKeyword UserKnownHostsFile
+syn keyword sshconfigKeyword VerifyHostKeyDNS
+syn keyword sshconfigKeyword VisualHostKey
+syn keyword sshconfigKeyword XAuthLocation
+
+" Deprecated/ignored/remove/unsupported keywords
+
+syn keyword sshConfigDeprecated Cipher
+syn keyword sshconfigDeprecated GSSAPIClientIdentity
+syn keyword sshconfigDeprecated GSSAPIKeyExchange
+syn keyword sshconfigDeprecated GSSAPIRenewalForcesRekey
+syn keyword sshconfigDeprecated GSSAPIServerIdentity
+syn keyword sshconfigDeprecated GSSAPITrustDNS
+syn keyword sshconfigDeprecated GSSAPITrustDns
+syn keyword sshconfigDeprecated Protocol
+syn keyword sshconfigDeprecated RSAAuthentication
+syn keyword sshconfigDeprecated RhostsRSAAuthentication
+syn keyword sshconfigDeprecated CompressionLevel
+syn keyword sshconfigDeprecated UseRoaming
+syn keyword sshconfigDeprecated UsePrivilegedPort
+
+" Define the default highlighting
+
+hi def link sshconfigComment Comment
+hi def link sshconfigTodo Todo
+hi def link sshconfigHostPort sshconfigConstant
+hi def link sshconfigNumber sshconfigConstant
+hi def link sshconfigConstant Constant
+hi def link sshconfigYesNo sshconfigEnum
+hi def link sshconfigCipher sshconfigDeprecated
+hi def link sshconfigCiphers sshconfigEnum
+hi def link sshconfigMAC sshconfigEnum
+hi def link sshconfigHostKeyAlgo sshconfigEnum
+hi def link sshconfigLogLevel sshconfigEnum
+hi def link sshconfigSysLogFacility sshconfigEnum
+hi def link sshconfigAddressFamily sshconfigEnum
+hi def link sshconfigIPQoS sshconfigEnum
+hi def link sshconfigKbdInteractive sshconfigEnum
+hi def link sshconfigKexAlgo sshconfigEnum
+hi def link sshconfigTunnel sshconfigEnum
+hi def link sshconfigPreferredAuth sshconfigEnum
+hi def link sshconfigVar sshconfigEnum
+hi def link sshconfigEnum Identifier
+hi def link sshconfigSpecial Special
+hi def link sshconfigKeyword Keyword
+hi def link sshconfigHostSect Type
+hi def link sshconfigMatch Type
+hi def link sshconfigDeprecated Error
+
+let b:current_syntax = "sshconfig"
+
+" vim:set ts=8 sw=2 sts=2:
diff --git a/runtime/syntax/sshdconfig.vim b/runtime/syntax/sshdconfig.vim
new file mode 100644
index 0000000..c0d9c3f
--- /dev/null
+++ b/runtime/syntax/sshdconfig.vim
@@ -0,0 +1,308 @@
+" Vim syntax file
+" Language: OpenSSH server configuration file (sshd_config)
+" Author: David Necas (Yeti)
+" Maintainer: Jakub Jelen <jakuje at gmail dot com>
+" Previous Maintainer: Dominik Fischer <d dot f dot fischer at web dot de>
+" Contributor: Thilo Six
+" Contributor: Leonard Ehrenfried <leonard.ehrenfried@web.de>
+" Contributor: Karsten Hopp <karsten@redhat.com>
+" Originally: 2009-07-09
+" Last Change: 2022 Nov 10
+" SSH Version: 8.5p1
+"
+
+" Setup
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword=_,-,a-z,A-Z,48-57
+
+
+" case on
+syn case match
+
+
+" Comments
+syn match sshdconfigComment "^#.*$" contains=sshdconfigTodo
+syn match sshdconfigComment "\s#.*$" contains=sshdconfigTodo
+
+syn keyword sshdconfigTodo TODO FIXME NOTE contained
+
+" Constants
+syn keyword sshdconfigYesNo yes no none
+
+syn keyword sshdconfigAddressFamily any inet inet6
+
+syn keyword sshdconfigPrivilegeSeparation sandbox
+
+syn keyword sshdconfigTcpForwarding local remote
+
+syn keyword sshdconfigRootLogin prohibit-password without-password forced-commands-only
+
+syn keyword sshdconfigCiphers 3des-cbc
+syn keyword sshdconfigCiphers blowfish-cbc
+syn keyword sshdconfigCiphers cast128-cbc
+syn keyword sshdconfigCiphers arcfour
+syn keyword sshdconfigCiphers arcfour128
+syn keyword sshdconfigCiphers arcfour256
+syn keyword sshdconfigCiphers aes128-cbc
+syn keyword sshdconfigCiphers aes192-cbc
+syn keyword sshdconfigCiphers aes256-cbc
+syn match sshdconfigCiphers "\<rijndael-cbc@lysator\.liu.se\>"
+syn keyword sshdconfigCiphers aes128-ctr
+syn keyword sshdconfigCiphers aes192-ctr
+syn keyword sshdconfigCiphers aes256-ctr
+syn match sshdconfigCiphers "\<aes128-gcm@openssh\.com\>"
+syn match sshdconfigCiphers "\<aes256-gcm@openssh\.com\>"
+syn match sshdconfigCiphers "\<chacha20-poly1305@openssh\.com\>"
+
+syn keyword sshdconfigMAC hmac-sha1
+syn keyword sshdconfigMAC hmac-sha1-96
+syn keyword sshdconfigMAC hmac-sha2-256
+syn keyword sshdconfigMAC hmac-sha2-512
+syn keyword sshdconfigMAC hmac-md5
+syn keyword sshdconfigMAC hmac-md5-96
+syn keyword sshdconfigMAC hmac-ripemd160
+syn match sshdconfigMAC "\<hmac-ripemd160@openssh\.com\>"
+syn match sshdconfigMAC "\<umac-64@openssh\.com\>"
+syn match sshdconfigMAC "\<umac-128@openssh\.com\>"
+syn match sshdconfigMAC "\<hmac-sha1-etm@openssh\.com\>"
+syn match sshdconfigMAC "\<hmac-sha1-96-etm@openssh\.com\>"
+syn match sshdconfigMAC "\<hmac-sha2-256-etm@openssh\.com\>"
+syn match sshdconfigMAC "\<hmac-sha2-512-etm@openssh\.com\>"
+syn match sshdconfigMAC "\<hmac-md5-etm@openssh\.com\>"
+syn match sshdconfigMAC "\<hmac-md5-96-etm@openssh\.com\>"
+syn match sshdconfigMAC "\<hmac-ripemd160-etm@openssh\.com\>"
+syn match sshdconfigMAC "\<umac-64-etm@openssh\.com\>"
+syn match sshdconfigMAC "\<umac-128-etm@openssh\.com\>"
+
+syn keyword sshdconfigHostKeyAlgo ssh-ed25519
+syn match sshdconfigHostKeyAlgo "\<ssh-ed25519-cert-v01@openssh\.com\>"
+syn match sshdconfigHostKeyAlgo "\<sk-ssh-ed25519@openssh\.com\>"
+syn match sshdconfigHostKeyAlgo "\<sk-ssh-ed25519-cert-v01@openssh\.com\>"
+syn keyword sshdconfigHostKeyAlgo ssh-rsa
+syn keyword sshdconfigHostKeyAlgo rsa-sha2-256
+syn keyword sshdconfigHostKeyAlgo rsa-sha2-512
+syn keyword sshdconfigHostKeyAlgo ssh-dss
+syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp256
+syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp384
+syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp521
+syn match sshdconfigHostKeyAlgo "\<ssh-rsa-cert-v01@openssh\.com\>"
+syn match sshdconfigHostKeyAlgo "\<rsa-sha2-256-cert-v01@openssh\.com\>"
+syn match sshdconfigHostKeyAlgo "\<rsa-sha2-512-cert-v01@openssh\.com\>"
+syn match sshdconfigHostKeyAlgo "\<ssh-dss-cert-v01@openssh\.com\>"
+syn match sshdconfigHostKeyAlgo "\<ecdsa-sha2-nistp256-cert-v01@openssh\.com\>"
+syn match sshdconfigHostKeyAlgo "\<ecdsa-sha2-nistp384-cert-v01@openssh\.com\>"
+syn match sshdconfigHostKeyAlgo "\<ecdsa-sha2-nistp521-cert-v01@openssh\.com\>"
+syn match sshdconfigHostKeyAlgo "\<sk-ecdsa-sha2-nistp256@openssh\.com\>"
+syn match sshdconfigHostKeyAlgo "\<sk-ecdsa-sha2-nistp256-cert-v01@openssh\.com\>"
+
+syn keyword sshdconfigRootLogin prohibit-password without-password forced-commands-only
+
+syn keyword sshdconfigLogLevel QUIET FATAL ERROR INFO VERBOSE
+syn keyword sshdconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3
+syn keyword sshdconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1
+syn keyword sshdconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7
+
+syn keyword sshdconfigCompression delayed
+
+syn match sshdconfigIPQoS "af1[123]"
+syn match sshdconfigIPQoS "af2[123]"
+syn match sshdconfigIPQoS "af3[123]"
+syn match sshdconfigIPQoS "af4[123]"
+syn match sshdconfigIPQoS "cs[0-7]"
+syn keyword sshdconfigIPQoS ef lowdelay throughput reliability
+
+syn keyword sshdconfigKexAlgo diffie-hellman-group1-sha1
+syn keyword sshdconfigKexAlgo diffie-hellman-group14-sha1
+syn keyword sshdconfigKexAlgo diffie-hellman-group14-sha256
+syn keyword sshdconfigKexAlgo diffie-hellman-group16-sha512
+syn keyword sshdconfigKexAlgo diffie-hellman-group18-sha512
+syn keyword sshdconfigKexAlgo diffie-hellman-group-exchange-sha1
+syn keyword sshdconfigKexAlgo diffie-hellman-group-exchange-sha256
+syn keyword sshdconfigKexAlgo ecdh-sha2-nistp256
+syn keyword sshdconfigKexAlgo ecdh-sha2-nistp384
+syn keyword sshdconfigKexAlgo ecdh-sha2-nistp521
+syn keyword sshdconfigKexAlgo curve25519-sha256
+syn match sshdconfigKexAlgo "\<curve25519-sha256@libssh\.org\>"
+syn match sshdconfigKexAlgo "\<sntrup4591761x25519-sha512@tinyssh\.org\>"
+
+syn keyword sshdconfigTunnel point-to-point ethernet
+
+syn keyword sshdconfigSubsystem internal-sftp
+
+syn match sshdconfigVar "%[hu]\>"
+syn match sshdconfigVar "%%"
+
+syn match sshdconfigSpecial "[*?]"
+
+syn match sshdconfigNumber "\d\+"
+syn match sshdconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>"
+syn match sshdconfigHostPort "\<\([-a-zA-Z0-9]\+\.\)\+[-a-zA-Z0-9]\{2,}\(:\d\+\)\?\>"
+" FIXME: this matches quite a few things which are NOT valid IPv6 addresses
+syn match sshdconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}:\d\+\>"
+syn match sshdconfigTime "\<\(\d\+[sSmMhHdDwW]\)\+\>"
+
+
+" case off
+syn case ignore
+
+
+" Keywords
+" Also includes RDomain, but that is a keyword.
+syn keyword sshdconfigMatch Host User Group Address LocalAddress LocalPort
+
+syn keyword sshdconfigKeyword AcceptEnv
+syn keyword sshdconfigKeyword AddressFamily
+syn keyword sshdconfigKeyword AllowAgentForwarding
+syn keyword sshdconfigKeyword AllowGroups
+syn keyword sshdconfigKeyword AllowStreamLocalForwarding
+syn keyword sshdconfigKeyword AllowTcpForwarding
+syn keyword sshdconfigKeyword AllowUsers
+syn keyword sshdconfigKeyword AuthenticationMethods
+syn keyword sshdconfigKeyword AuthorizedKeysFile
+syn keyword sshdconfigKeyword AuthorizedKeysCommand
+syn keyword sshdconfigKeyword AuthorizedKeysCommandUser
+syn keyword sshdconfigKeyword AuthorizedPrincipalsCommand
+syn keyword sshdconfigKeyword AuthorizedPrincipalsCommandUser
+syn keyword sshdconfigKeyword AuthorizedPrincipalsFile
+syn keyword sshdconfigKeyword Banner
+syn keyword sshdconfigKeyword CASignatureAlgorithms
+syn keyword sshdconfigKeyword ChallengeResponseAuthentication
+syn keyword sshdconfigKeyword ChrootDirectory
+syn keyword sshdconfigKeyword Ciphers
+syn keyword sshdconfigKeyword ClientAliveCountMax
+syn keyword sshdconfigKeyword ClientAliveInterval
+syn keyword sshdconfigKeyword Compression
+syn keyword sshdconfigKeyword DebianBanner
+syn keyword sshdconfigKeyword DenyGroups
+syn keyword sshdconfigKeyword DenyUsers
+syn keyword sshdconfigKeyword DisableForwarding
+syn keyword sshdconfigKeyword ExposeAuthInfo
+syn keyword sshdconfigKeyword FingerprintHash
+syn keyword sshdconfigKeyword ForceCommand
+syn keyword sshdconfigKeyword GatewayPorts
+syn keyword sshdconfigKeyword GSSAPIAuthentication
+syn keyword sshdconfigKeyword GSSAPICleanupCredentials
+syn keyword sshdconfigKeyword GSSAPIEnablek5users
+syn keyword sshdconfigKeyword GSSAPIKeyExchange
+syn keyword sshdconfigKeyword GSSAPIKexAlgorithms
+syn keyword sshdconfigKeyword GSSAPIStoreCredentialsOnRekey
+syn keyword sshdconfigKeyword GSSAPIStrictAcceptorCheck
+syn keyword sshdconfigKeyword HostCertificate
+syn keyword sshdconfigKeyword HostKey
+syn keyword sshdconfigKeyword HostKeyAgent
+syn keyword sshdconfigKeyword HostKeyAlgorithms
+syn keyword sshdconfigKeyword HostbasedAcceptedAlgorithms
+syn keyword sshdconfigKeyword HostbasedAcceptedKeyTypes
+syn keyword sshdconfigKeyword HostbasedAuthentication
+syn keyword sshdconfigKeyword HostbasedUsesNameFromPacketOnly
+syn keyword sshdconfigKeyword IPQoS
+syn keyword sshdconfigKeyword IgnoreRhosts
+syn keyword sshdconfigKeyword IgnoreUserKnownHosts
+syn keyword sshdconfigKeyword Include
+syn keyword sshdconfigKeyword KbdInteractiveAuthentication
+syn keyword sshdconfigKeyword KerberosAuthentication
+syn keyword sshdconfigKeyword KerberosGetAFSToken
+syn keyword sshdconfigKeyword KerberosOrLocalPasswd
+syn keyword sshdconfigKeyword KerberosTicketCleanup
+syn keyword sshdconfigKeyword KerberosUniqueCCache
+syn keyword sshdconfigKeyword KerberosUseKuserok
+syn keyword sshdconfigKeyword KexAlgorithms
+syn keyword sshdconfigKeyword KeyRegenerationInterval
+syn keyword sshdconfigKeyword ListenAddress
+syn keyword sshdconfigKeyword LogLevel
+syn keyword sshdconfigKeyword LogVerbose
+syn keyword sshdconfigKeyword LoginGraceTime
+syn keyword sshdconfigKeyword MACs
+syn keyword sshdconfigKeyword Match
+syn keyword sshdconfigKeyword MaxAuthTries
+syn keyword sshdconfigKeyword MaxSessions
+syn keyword sshdconfigKeyword MaxStartups
+syn keyword sshdconfigKeyword ModuliFile
+syn keyword sshdconfigKeyword PasswordAuthentication
+syn keyword sshdconfigKeyword PerSourceMaxStartups
+syn keyword sshdconfigKeyword PerSourceNetBlockSize
+syn keyword sshdconfigKeyword PermitBlacklistedKeys
+syn keyword sshdconfigKeyword PermitEmptyPasswords
+syn keyword sshdconfigKeyword PermitListen
+syn keyword sshdconfigKeyword PermitOpen
+syn keyword sshdconfigKeyword PermitRootLogin
+syn keyword sshdconfigKeyword PermitTTY
+syn keyword sshdconfigKeyword PermitTunnel
+syn keyword sshdconfigKeyword PermitUserEnvironment
+syn keyword sshdconfigKeyword PermitUserRC
+syn keyword sshdconfigKeyword PidFile
+syn keyword sshdconfigKeyword Port
+syn keyword sshdconfigKeyword PrintLastLog
+syn keyword sshdconfigKeyword PrintMotd
+syn keyword sshdconfigKeyword Protocol
+syn keyword sshdconfigKeyword PubkeyAcceptedAlgorithms
+syn keyword sshdconfigKeyword PubkeyAcceptedKeyTypes
+syn keyword sshdconfigKeyword PubkeyAuthentication
+syn keyword sshdconfigKeyword PubkeyAuthOptions
+syn keyword sshdconfigKeyword RSAAuthentication
+syn keyword sshdconfigKeyword RekeyLimit
+syn keyword sshdconfigKeyword RequiredRSASize
+syn keyword sshdconfigKeyword RevokedKeys
+syn keyword sshdconfigKeyword RDomain
+syn keyword sshdconfigKeyword RhostsRSAAuthentication
+syn keyword sshdconfigKeyword SecurityKeyProvider
+syn keyword sshdconfigKeyword ServerKeyBits
+syn keyword sshdconfigKeyword SetEnv
+syn keyword sshdconfigKeyword ShowPatchLevel
+syn keyword sshdconfigKeyword StrictModes
+syn keyword sshdconfigKeyword StreamLocalBindMask
+syn keyword sshdconfigKeyword StreamLocalBindUnlink
+syn keyword sshdconfigKeyword Subsystem
+syn keyword sshdconfigKeyword SyslogFacility
+syn keyword sshdconfigKeyword TCPKeepAlive
+syn keyword sshdconfigKeyword TrustedUserCAKeys
+syn keyword sshdconfigKeyword UseBlacklist
+syn keyword sshdconfigKeyword UseBlocklist
+syn keyword sshdconfigKeyword UseDNS
+syn keyword sshdconfigKeyword UseLogin
+syn keyword sshdconfigKeyword UsePAM
+syn keyword sshdconfigKeyword VersionAddendum
+syn keyword sshdconfigKeyword X11DisplayOffset
+syn keyword sshdconfigKeyword X11Forwarding
+syn keyword sshdconfigKeyword X11MaxDisplays
+syn keyword sshdconfigKeyword X11UseLocalhost
+syn keyword sshdconfigKeyword XAuthLocation
+
+
+" Define the default highlighting
+
+hi def link sshdconfigComment Comment
+hi def link sshdconfigTodo Todo
+hi def link sshdconfigHostPort sshdconfigConstant
+hi def link sshdconfigTime sshdconfigConstant
+hi def link sshdconfigNumber sshdconfigConstant
+hi def link sshdconfigConstant Constant
+hi def link sshdconfigYesNo sshdconfigEnum
+hi def link sshdconfigAddressFamily sshdconfigEnum
+hi def link sshdconfigPrivilegeSeparation sshdconfigEnum
+hi def link sshdconfigTcpForwarding sshdconfigEnum
+hi def link sshdconfigRootLogin sshdconfigEnum
+hi def link sshdconfigCiphers sshdconfigEnum
+hi def link sshdconfigMAC sshdconfigEnum
+hi def link sshdconfigHostKeyAlgo sshdconfigEnum
+hi def link sshdconfigRootLogin sshdconfigEnum
+hi def link sshdconfigLogLevel sshdconfigEnum
+hi def link sshdconfigSysLogFacility sshdconfigEnum
+hi def link sshdconfigVar sshdconfigEnum
+hi def link sshdconfigCompression sshdconfigEnum
+hi def link sshdconfigIPQoS sshdconfigEnum
+hi def link sshdconfigKexAlgo sshdconfigEnum
+hi def link sshdconfigTunnel sshdconfigEnum
+hi def link sshdconfigSubsystem sshdconfigEnum
+hi def link sshdconfigEnum Function
+hi def link sshdconfigSpecial Special
+hi def link sshdconfigKeyword Keyword
+hi def link sshdconfigMatch Type
+
+let b:current_syntax = "sshdconfig"
+
+" vim:set ts=8 sw=2 sts=2:
diff --git a/runtime/syntax/st.vim b/runtime/syntax/st.vim
new file mode 100644
index 0000000..ffa7820
--- /dev/null
+++ b/runtime/syntax/st.vim
@@ -0,0 +1,95 @@
+" Vim syntax file
+" Language: Smalltalk
+" Maintainer: Arndt Hesse <hesse@self.de>
+" Last Change: 2012 Feb 12 by Thilo Six
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" some Smalltalk keywords and standard methods
+syn keyword stKeyword super self class true false new not
+syn keyword stKeyword notNil isNil inspect out nil
+syn match stMethod "\<do\>:"
+syn match stMethod "\<whileTrue\>:"
+syn match stMethod "\<whileFalse\>:"
+syn match stMethod "\<ifTrue\>:"
+syn match stMethod "\<ifFalse\>:"
+syn match stMethod "\<put\>:"
+syn match stMethod "\<to\>:"
+syn match stMethod "\<at\>:"
+syn match stMethod "\<add\>:"
+syn match stMethod "\<new\>:"
+syn match stMethod "\<for\>:"
+syn match stMethod "\<methods\>:"
+syn match stMethod "\<methodsFor\>:"
+syn match stMethod "\<instanceVariableNames\>:"
+syn match stMethod "\<classVariableNames\>:"
+syn match stMethod "\<poolDictionaries\>:"
+syn match stMethod "\<subclass\>:"
+
+" the block of local variables of a method
+syn region stLocalVariables start="^[ \t]*|" end="|"
+
+" the Smalltalk comment
+syn region stComment start="\"" end="\""
+
+" the Smalltalk strings and single characters
+syn region stString start='\'' skip="''" end='\''
+syn match stCharacter "$."
+
+syn case ignore
+
+" the symbols prefixed by a '#'
+syn match stSymbol "\(#\<[a-z_][a-z0-9_]*\>\)"
+syn match stSymbol "\(#'[^']*'\)"
+
+" the variables in a statement block for loops
+syn match stBlockVariable "\(:[ \t]*\<[a-z_][a-z0-9_]*\>[ \t]*\)\+|" contained
+
+" some representations of numbers
+syn match stNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"
+syn match stFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
+syn match stFloat "\<\d\+e[-+]\=\d\+[fl]\=\>"
+
+syn case match
+
+" a try to highlight paren mismatches
+syn region stParen transparent start='(' end=')' contains=ALLBUT,stParenError
+syn match stParenError ")"
+syn region stBlock transparent start='\[' end='\]' contains=ALLBUT,stBlockError
+syn match stBlockError "\]"
+syn region stSet transparent start='{' end='}' contains=ALLBUT,stSetError
+syn match stSetError "}"
+
+hi link stParenError stError
+hi link stSetError stError
+hi link stBlockError stError
+
+" synchronization for syntax analysis
+syn sync minlines=50
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link stKeyword Statement
+hi def link stMethod Statement
+hi def link stComment Comment
+hi def link stCharacter Constant
+hi def link stString Constant
+hi def link stSymbol Special
+hi def link stNumber Type
+hi def link stFloat Type
+hi def link stError Error
+hi def link stLocalVariables Identifier
+hi def link stBlockVariable Identifier
+
+
+let b:current_syntax = "st"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/stata.vim b/runtime/syntax/stata.vim
new file mode 100644
index 0000000..29f5052
--- /dev/null
+++ b/runtime/syntax/stata.vim
@@ -0,0 +1,450 @@
+" stata.vim -- Vim syntax file for Stata do, ado, and class files.
+" Language: Stata and/or Mata
+" Maintainer: Jeff Pitblado <jpitblado@stata.com>
+" Last Change: 26apr2006
+" Version: 1.1.4
+
+" Log:
+" 14apr2006 renamed syntax groups st* to stata*
+" 'syntax clear' only under version control
+" check for 'b:current_syntax', removed 'did_stata_syntax_inits'
+" 17apr2006 fixed start expression for stataFunc
+" 26apr2006 fixed brace confusion in stataErrInParen and stataErrInBracket
+" fixed paren/bracket confusion in stataFuncGroup
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syntax case match
+
+" comments - single line
+" note that the triple slash continuing line comment comes free
+syn region stataStarComment start=/^\s*\*/ end=/$/ contains=stataComment oneline
+syn region stataSlashComment start="\s//" end=/$/ contains=stataComment oneline
+syn region stataSlashComment start="^//" end=/$/ contains=stataComment oneline
+" comments - multiple line
+syn region stataComment start="/\*" end="\*/" contains=stataComment
+
+" global macros - simple case
+syn match stataGlobal /\$\a\w*/
+" global macros - general case
+syn region stataGlobal start=/\${/ end=/}/ oneline contains=@stataMacroGroup
+" local macros - general case
+syn region stataLocal start=/`/ end=/'/ oneline contains=@stataMacroGroup
+
+" numeric formats
+syn match stataFormat /%-\=\d\+\.\d\+[efg]c\=/
+" numeric hex format
+syn match stataFormat /%-\=21x/
+" string format
+syn match stataFormat /%\(\|-\|\~\)\d\+s/
+
+" Statements
+syn keyword stataConditional else if
+syn keyword stataRepeat foreach
+syn keyword stataRepeat forv[alues]
+syn keyword stataRepeat while
+
+" Common programming commands
+syn keyword stataCommand about
+syn keyword stataCommand adopath
+syn keyword stataCommand adoupdate
+syn keyword stataCommand assert
+syn keyword stataCommand break
+syn keyword stataCommand by
+syn keyword stataCommand cap[ture]
+syn keyword stataCommand cd
+syn keyword stataCommand chdir
+syn keyword stataCommand checksum
+syn keyword stataCommand class
+syn keyword stataCommand classutil
+syn keyword stataCommand compress
+syn keyword stataCommand conf[irm]
+syn keyword stataCommand conren
+syn keyword stataCommand continue
+syn keyword stataCommand cou[nt]
+syn keyword stataCommand cscript
+syn keyword stataCommand cscript_log
+syn keyword stataCommand #delimit
+syn keyword stataCommand d[escribe]
+syn keyword stataCommand dir
+syn keyword stataCommand discard
+syn keyword stataCommand di[splay]
+syn keyword stataCommand do
+syn keyword stataCommand doedit
+syn keyword stataCommand drop
+syn keyword stataCommand edit
+syn keyword stataCommand end
+syn keyword stataCommand erase
+syn keyword stataCommand eret[urn]
+syn keyword stataCommand err[or]
+syn keyword stataCommand e[xit]
+syn keyword stataCommand expand
+syn keyword stataCommand expandcl
+syn keyword stataCommand file
+syn keyword stataCommand findfile
+syn keyword stataCommand format
+syn keyword stataCommand g[enerate]
+syn keyword stataCommand gettoken
+syn keyword stataCommand gl[obal]
+syn keyword stataCommand help
+syn keyword stataCommand hexdump
+syn keyword stataCommand include
+syn keyword stataCommand infile
+syn keyword stataCommand infix
+syn keyword stataCommand input
+syn keyword stataCommand insheet
+syn keyword stataCommand joinby
+syn keyword stataCommand la[bel]
+syn keyword stataCommand levelsof
+syn keyword stataCommand list
+syn keyword stataCommand loc[al]
+syn keyword stataCommand log
+syn keyword stataCommand ma[cro]
+syn keyword stataCommand mark
+syn keyword stataCommand markout
+syn keyword stataCommand marksample
+syn keyword stataCommand mata
+syn keyword stataCommand matrix
+syn keyword stataCommand memory
+syn keyword stataCommand merge
+syn keyword stataCommand mkdir
+syn keyword stataCommand more
+syn keyword stataCommand net
+syn keyword stataCommand nobreak
+syn keyword stataCommand n[oisily]
+syn keyword stataCommand note[s]
+syn keyword stataCommand numlist
+syn keyword stataCommand outfile
+syn keyword stataCommand outsheet
+syn keyword stataCommand _parse
+syn keyword stataCommand pause
+syn keyword stataCommand plugin
+syn keyword stataCommand post
+syn keyword stataCommand postclose
+syn keyword stataCommand postfile
+syn keyword stataCommand preserve
+syn keyword stataCommand print
+syn keyword stataCommand printer
+syn keyword stataCommand profiler
+syn keyword stataCommand pr[ogram]
+syn keyword stataCommand q[uery]
+syn keyword stataCommand qui[etly]
+syn keyword stataCommand rcof
+syn keyword stataCommand reg[ress]
+syn keyword stataCommand rename
+syn keyword stataCommand repeat
+syn keyword stataCommand replace
+syn keyword stataCommand reshape
+syn keyword stataCommand ret[urn]
+syn keyword stataCommand _rmcoll
+syn keyword stataCommand _rmcoll
+syn keyword stataCommand _rmcollright
+syn keyword stataCommand rmdir
+syn keyword stataCommand _robust
+syn keyword stataCommand save
+syn keyword stataCommand sca[lar]
+syn keyword stataCommand search
+syn keyword stataCommand serset
+syn keyword stataCommand set
+syn keyword stataCommand shell
+syn keyword stataCommand sleep
+syn keyword stataCommand sort
+syn keyword stataCommand split
+syn keyword stataCommand sret[urn]
+syn keyword stataCommand ssc
+syn keyword stataCommand su[mmarize]
+syn keyword stataCommand syntax
+syn keyword stataCommand sysdescribe
+syn keyword stataCommand sysdir
+syn keyword stataCommand sysuse
+syn keyword stataCommand token[ize]
+syn keyword stataCommand translate
+syn keyword stataCommand type
+syn keyword stataCommand unab
+syn keyword stataCommand unabcmd
+syn keyword stataCommand update
+syn keyword stataCommand use
+syn keyword stataCommand vers[ion]
+syn keyword stataCommand view
+syn keyword stataCommand viewsource
+syn keyword stataCommand webdescribe
+syn keyword stataCommand webseek
+syn keyword stataCommand webuse
+syn keyword stataCommand which
+syn keyword stataCommand who
+syn keyword stataCommand window
+
+" Literals
+syn match stataQuote /"/
+syn region stataEString matchgroup=Nothing start=/`"/ end=/"'/ oneline contains=@stataMacroGroup,stataQuote,stataString,stataEString
+syn region stataString matchgroup=Nothing start=/"/ end=/"/ oneline contains=@stataMacroGroup
+
+" define clusters
+syn cluster stataFuncGroup contains=@stataMacroGroup,stataFunc,stataString,stataEstring,stataParen,stataBracket
+syn cluster stataMacroGroup contains=stataGlobal,stataLocal
+syn cluster stataParenGroup contains=stataParenError,stataBracketError,stataBraceError,stataSpecial,stataFormat
+
+" Stata functions
+" Math
+syn region stataFunc matchgroup=Function start=/\<abs(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<acos(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<asin(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<atan(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<atan2(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<atanh(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<ceil(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<cloglog(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<comb(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<cos(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<digamma(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<exp(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<floor(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<int(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<invcloglog(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<invlogit(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<ln(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<lnfact(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<lnfactorial(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<lngamma(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<log(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<log10(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<logit(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<max(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<mod(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<reldif(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<round(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<sign(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<sin(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<sqrt(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<sum(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<tan(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<tanh(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<trigamma(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<trunc(/ end=/)/ contains=@stataFuncGroup
+" Probability distriubtions and density functions
+syn region stataFunc matchgroup=Function start=/\<betaden(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<Binomial(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<binorm(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<binormal(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<chi2(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<chi2tail(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<dgammapda(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<dgammapdada(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<dgammapdadx(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<dgammapdx(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<dgammapdxdx(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<F(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<Fden(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<Ftail(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<gammaden(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<gammap(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<ibeta(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<invbinomial(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<invchi2(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<invchi2tail(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<invF(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<invFtail(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<invgammap(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<invibeta(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<invnchi2(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<invFtail(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<invibeta(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<invnorm(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<invnormal(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<invttail(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<lnnormal(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<lnnormalden(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<nbetaden(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<nchi2(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<nFden(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<nFtail(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<nibeta(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<norm(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<normal(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<normalden(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<normden(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<npnchi2(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<tden(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<ttail(/ end=/)/ contains=@stataFuncGroup
+" Random numbers
+syn region stataFunc matchgroup=Function start=/\<uniform(/ end=/)/ contains=@stataFuncGroup
+" String
+syn region stataFunc matchgroup=Function start=/\<abbrev(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<hchar(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<indexnot(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<itrim(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<length(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<lower(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<ltrim(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<plural(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<proper(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<real(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<regexm(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<regexr(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<regexs(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<reverse(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<rtrim(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<string(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<strlen(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<strmatch(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<strpos(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<subinstr(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<subinword(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<substr(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<trim(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<upper(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<word(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<wordcount(/ end=/)/ contains=@stataFuncGroup
+" Programming
+syn region stataFunc matchgroup=Function start=/\<autocode(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<byteorder(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<c(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<_caller(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<chop(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<clip(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<cond(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<e(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<epsdouble(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<epsfloat(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<float(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<has_eprop(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<has_eprop(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<inlist(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<inrange(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<irecode(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<matrix(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<maxbyte(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<maxdouble(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<maxfloat(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<maxint(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<maxlong(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<mi(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<minbyte(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<mindouble(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<minfloat(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<minint(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<minlong(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<missing(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<r(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<recode(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<replay(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<return(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<s(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<scalar(/ end=/)/ contains=@stataFuncGroup
+" Date
+syn region stataFunc matchgroup=Function start=/\<d(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<date(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<day(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<dow(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<doy(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<halfyear(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<mdy(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<month(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<quarter(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<week(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<year(/ end=/)/ contains=@stataFuncGroup
+" Time-series
+syn region stataFunc matchgroup=Function start=/\<daily(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<halfyearly(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<monthly(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<quarterly(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<weekly(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<yearly(/ end=/)/ contains=@stataFuncGroup
+"
+syn region stataFunc matchgroup=Function start=/\<yh(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<ym(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<yq(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<yw(/ end=/)/ contains=@stataFuncGroup
+"
+syn region stataFunc matchgroup=Function start=/\<d(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<h(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<m(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<q(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<w(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<y(/ end=/)/ contains=@stataFuncGroup
+"
+syn region stataFunc matchgroup=Function start=/\<dofd(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<dofh(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<dofm(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<dofq(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<dofw(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<dofy(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<hofd(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<mofd(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<qofd(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<wofd(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<yofd(/ end=/)/ contains=@stataFuncGroup
+"
+syn region stataFunc matchgroup=Function start=/\<tin(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<twithin(/ end=/)/ contains=@stataFuncGroup
+" Matrix
+syn region stataFunc matchgroup=Function start=/\<colnumb(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<colsof(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<det(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<diag0cnt(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<el(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<issymmetric(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<matmissing(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<mreldif(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<rownumb(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<rowsof(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<trace(/ end=/)/ contains=@stataFuncGroup
+"
+syn region stataFunc matchgroup=Function start=/\<cholsky(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<corr(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<diag(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<get(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<hadamard(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<I(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<inv(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<invsym(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<J(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<matuniform(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<nullmat(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<sweep(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<vec(/ end=/)/ contains=@stataFuncGroup
+syn region stataFunc matchgroup=Function start=/\<vecdiag(/ end=/)/ contains=@stataFuncGroup
+
+" Errors to catch
+" taken from $VIMRUNTIME/syntax/c.vim
+" catch errors caused by wrong parenthesis, braces and brackets
+syn region stataParen transparent start=/(/ end=/)/ contains=ALLBUT,@stataParenGroup,stataErrInBracket,stataErrInBrace
+syn region stataBracket transparent start=/\[/ end=/]/ contains=ALLBUT,@stataParenGroup,stataErrInParen,stataErrInBrace
+syn region stataBrace transparent start=/{/ end=/}/ contains=ALLBUT,@stataParenGroup,stataErrInParen,stataErrInBracket
+syn match stataParenError /[\])}]/
+syn match stataBracketError /]/
+syn match stataBraceError /}/
+syn match stataErrInParen contained /[\]}]/
+syn match stataErrInBracket contained /[)}]/
+syn match stataErrInBrace contained /[)\]]/
+
+" assign highlight groups
+hi def link stataBraceError stataError
+hi def link stataBracketError stataError
+hi def link stataErrInBrace stataError
+hi def link stataErrInBracket stataError
+hi def link stataErrInParen stataError
+hi def link stataEString stataString
+hi def link stataFormat stataSpecial
+hi def link stataGlobal stataMacro
+hi def link stataLocal stataMacro
+hi def link stataParenError stataError
+hi def link stataSlashComment stataComment
+hi def link stataStarComment stataComment
+
+hi def link stataCommand Define
+hi def link stataComment Comment
+hi def link stataConditional Conditional
+hi def link stataError Error
+hi def link stataFunc None
+hi def link stataMacro Define
+hi def link stataRepeat Repeat
+hi def link stataSpecial SpecialChar
+hi def link stataString String
+
+let b:current_syntax = "stata"
+
+" vim: ts=8
diff --git a/runtime/syntax/stp.vim b/runtime/syntax/stp.vim
new file mode 100644
index 0000000..2992d8b
--- /dev/null
+++ b/runtime/syntax/stp.vim
@@ -0,0 +1,154 @@
+" Vim syntax file
+" Language: Stored Procedures (STP)
+" Maintainer: Jeff Lanzarotta (jefflanzarotta@yahoo.com)
+" URL: http://lanzarotta.tripod.com/vim/syntax/stp.vim.zip
+" Last Change: March 05, 2002
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" Specials.
+syn keyword stpSpecial null
+
+" Keywords.
+syn keyword stpKeyword begin break call case create deallocate dynamic
+syn keyword stpKeyword execute from function go grant
+syn keyword stpKeyword index insert into leave max min on output procedure
+syn keyword stpKeyword public result return returns scroll table to
+syn keyword stpKeyword when
+syn match stpKeyword "\<end\>"
+
+" Conditional.
+syn keyword stpConditional if else elseif then
+syn match stpConditional "\<end\s\+if\>"
+
+" Repeats.
+syn keyword stpRepeat for while loop
+syn match stpRepeat "\<end\s\+loop\>"
+
+" Operators.
+syn keyword stpOperator asc not and or desc group having in is any some all
+syn keyword stpOperator between exists like escape with union intersect minus
+syn keyword stpOperator out prior distinct sysdate
+
+" Statements.
+syn keyword stpStatement alter analyze as audit avg by close clustered comment
+syn keyword stpStatement commit continue count create cursor declare delete
+syn keyword stpStatement drop exec execute explain fetch from index insert
+syn keyword stpStatement into lock max min next noaudit nonclustered open
+syn keyword stpStatement order output print raiserror recompile rename revoke
+syn keyword stpStatement rollback savepoint select set sum transaction
+syn keyword stpStatement truncate unique update values where
+
+" Functions.
+syn keyword stpFunction abs acos ascii asin atan atn2 avg ceiling charindex
+syn keyword stpFunction charlength convert col_name col_length cos cot count
+syn keyword stpFunction curunreservedpgs datapgs datalength dateadd datediff
+syn keyword stpFunction datename datepart db_id db_name degree difference
+syn keyword stpFunction exp floor getdate hextoint host_id host_name index_col
+syn keyword stpFunction inttohex isnull lct_admin log log10 lower ltrim max
+syn keyword stpFunction min now object_id object_name patindex pi pos power
+syn keyword stpFunction proc_role radians rand replace replicate reserved_pgs
+syn keyword stpFunction reverse right rtrim rowcnt round show_role sign sin
+syn keyword stpFunction soundex space sqrt str stuff substr substring sum
+syn keyword stpFunction suser_id suser_name tan tsequal upper used_pgs user
+syn keyword stpFunction user_id user_name valid_name valid_user message
+
+" Types.
+syn keyword stpType binary bit char datetime decimal double float image
+syn keyword stpType int integer long money nchar numeric precision real
+syn keyword stpType smalldatetime smallint smallmoney text time tinyint
+syn keyword stpType timestamp varbinary varchar
+
+" Globals.
+syn match stpGlobals '@@char_convert'
+syn match stpGlobals '@@cient_csname'
+syn match stpGlobals '@@client_csid'
+syn match stpGlobals '@@connections'
+syn match stpGlobals '@@cpu_busy'
+syn match stpGlobals '@@error'
+syn match stpGlobals '@@identity'
+syn match stpGlobals '@@idle'
+syn match stpGlobals '@@io_busy'
+syn match stpGlobals '@@isolation'
+syn match stpGlobals '@@langid'
+syn match stpGlobals '@@language'
+syn match stpGlobals '@@max_connections'
+syn match stpGlobals '@@maxcharlen'
+syn match stpGlobals '@@ncharsize'
+syn match stpGlobals '@@nestlevel'
+syn match stpGlobals '@@pack_received'
+syn match stpGlobals '@@pack_sent'
+syn match stpGlobals '@@packet_errors'
+syn match stpGlobals '@@procid'
+syn match stpGlobals '@@rowcount'
+syn match stpGlobals '@@servername'
+syn match stpGlobals '@@spid'
+syn match stpGlobals '@@sqlstatus'
+syn match stpGlobals '@@testts'
+syn match stpGlobals '@@textcolid'
+syn match stpGlobals '@@textdbid'
+syn match stpGlobals '@@textobjid'
+syn match stpGlobals '@@textptr'
+syn match stpGlobals '@@textsize'
+syn match stpGlobals '@@thresh_hysteresis'
+syn match stpGlobals '@@timeticks'
+syn match stpGlobals '@@total_error'
+syn match stpGlobals '@@total_read'
+syn match stpGlobals '@@total_write'
+syn match stpGlobals '@@tranchained'
+syn match stpGlobals '@@trancount'
+syn match stpGlobals '@@transtate'
+syn match stpGlobals '@@version'
+
+" Todos.
+syn keyword stpTodo TODO FIXME XXX DEBUG NOTE
+
+" Strings and characters.
+syn match stpStringError "'.*$"
+syn match stpString "'\([^']\|''\)*'"
+
+" Numbers.
+syn match stpNumber "-\=\<\d*\.\=[0-9_]\>"
+
+" Comments.
+syn region stpComment start="/\*" end="\*/" contains=stpTodo
+syn match stpComment "--.*" contains=stpTodo
+syn sync ccomment stpComment
+
+" Parens.
+syn region stpParen transparent start='(' end=')' contains=ALLBUT,stpParenError
+syn match stpParenError ")"
+
+" Syntax Synchronizing.
+syn sync minlines=10 maxlines=100
+
+" Define the default highlighting.
+" Only when and item doesn't have highlighting yet.
+
+hi def link stpConditional Conditional
+hi def link stpComment Comment
+hi def link stpKeyword Keyword
+hi def link stpNumber Number
+hi def link stpOperator Operator
+hi def link stpSpecial Special
+hi def link stpStatement Statement
+hi def link stpString String
+hi def link stpStringError Error
+hi def link stpType Type
+hi def link stpTodo Todo
+hi def link stpFunction Function
+hi def link stpGlobals Macro
+hi def link stpParen Normal
+hi def link stpParenError Error
+hi def link stpSQLKeyword Function
+hi def link stpRepeat Repeat
+
+
+let b:current_syntax = "stp"
+
+" vim ts=8 sw=2
diff --git a/runtime/syntax/strace.vim b/runtime/syntax/strace.vim
new file mode 100644
index 0000000..20516a1
--- /dev/null
+++ b/runtime/syntax/strace.vim
@@ -0,0 +1,52 @@
+" Vim syntax file
+" Language: strace output
+" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
+" Last Change: 2022 Jan 29
+
+" Setup
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+" Parse the line
+syn match straceSpecialChar "\\\o\{1,3}\|\\." contained
+syn region straceString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=straceSpecialChar oneline
+syn match straceNumber "\W[+-]\=\(\d\+\)\=\.\=\d\+\([eE][+-]\=\d\+\)\="lc=1
+syn match straceNumber "\W0x\x\+"lc=1
+syn match straceNumberRHS "\W\(0x\x\+\|-\=\d\+\)"lc=1 contained
+syn match straceOtherRHS "?" contained
+syn match straceConstant "[A-Z_]\{2,}"
+syn region straceVerbosed start="(" end=")" matchgroup=Normal contained oneline
+syn region straceReturned start="\s=\s" end="$" contains=StraceEquals,straceNumberRHS,straceOtherRHS,straceConstant,straceVerbosed oneline transparent
+syn match straceEquals "\s=\s"ms=s+1,me=e-1
+syn match straceParenthesis "[][(){}]"
+syn match straceSysCall "^\w\+"
+syn match straceOtherPID "^\[[^]]*\]" contains=stracePID,straceNumber nextgroup=straceSysCallEmbed skipwhite
+syn match straceSysCallEmbed "\w\+" contained
+syn keyword stracePID pid contained
+syn match straceOperator "[-+=*/!%&|:,]"
+syn region straceComment start="/\*" end="\*/" oneline
+
+" Define the default highlighting
+
+hi def link straceComment Comment
+hi def link straceVerbosed Comment
+hi def link stracePID PreProc
+hi def link straceNumber Number
+hi def link straceNumberRHS Type
+hi def link straceOtherRHS Type
+hi def link straceString String
+hi def link straceConstant Function
+hi def link straceEquals Type
+hi def link straceSysCallEmbed straceSysCall
+hi def link straceSysCall Statement
+hi def link straceParenthesis Statement
+hi def link straceOperator Normal
+hi def link straceSpecialChar Special
+hi def link straceOtherPID PreProc
+
+
+let b:current_syntax = "strace"
diff --git a/runtime/syntax/structurizr.vim b/runtime/syntax/structurizr.vim
new file mode 100644
index 0000000..ab9e4ee
--- /dev/null
+++ b/runtime/syntax/structurizr.vim
@@ -0,0 +1,81 @@
+" Vim syntax file
+" Language: Structurizr DSL
+" Maintainer: Bastian Venthur <venthur@debian.org>
+" Last Change: 2022-02-15
+" Remark: For a language reference, see
+" https://github.com/structurizr/dsl
+
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" comments
+syn match scomment "#.*$"
+syn match scomment "//.*$"
+syn region scomment start="/\*" end="\*/"
+
+" keywords
+syn keyword skeyword animation
+syn keyword skeyword autoLayout
+syn keyword skeyword branding
+syn keyword skeyword component
+syn keyword skeyword configuration
+syn keyword skeyword container
+syn keyword skeyword containerinstance
+syn keyword skeyword custom
+syn keyword skeyword deployment
+syn keyword skeyword deploymentenvironment
+syn keyword skeyword deploymentgroup
+syn keyword skeyword deploymentnode
+syn keyword skeyword description
+syn keyword skeyword dynamic
+syn keyword skeyword element
+syn keyword skeyword enterprise
+syn keyword skeyword exclude
+syn keyword skeyword filtered
+syn keyword skeyword group
+syn keyword skeyword healthcheck
+syn keyword skeyword include
+syn keyword skeyword infrastructurenode
+syn keyword skeyword model
+syn keyword skeyword person
+syn keyword skeyword perspectives
+syn keyword skeyword properties
+syn keyword skeyword relationship
+syn keyword skeyword softwaresystem
+syn keyword skeyword softwaresysteminstance
+syn keyword skeyword styles
+syn keyword skeyword systemcontext
+syn keyword skeyword systemlandscape
+syn keyword skeyword tags
+syn keyword skeyword technology
+syn keyword skeyword terminology
+syn keyword skeyword theme
+syn keyword skeyword title
+syn keyword skeyword url
+syn keyword skeyword users
+syn keyword skeyword views
+syn keyword skeyword workspace
+
+syn match skeyword "\!adrs\s\+"
+syn match skeyword "\!constant\s\+"
+syn match skeyword "\!docs\s\+"
+syn match skeyword "\!identifiers\s\+"
+syn match skeyword "\!impliedrelationships\s\+"
+syn match skeyword "\!include\s\+"
+syn match skeyword "\!plugin\s\+"
+syn match skeyword "\!ref\s\+"
+syn match skeyword "\!script\s\+"
+
+syn region sstring oneline start='"' end='"'
+
+syn region sblock start='{' end='}' fold transparent
+
+hi def link sstring string
+hi def link scomment comment
+hi def link skeyword keyword
+
+let b:current_syntax = "structurizr"
diff --git a/runtime/syntax/sudoers.vim b/runtime/syntax/sudoers.vim
new file mode 100644
index 0000000..bf2d337
--- /dev/null
+++ b/runtime/syntax/sudoers.vim
@@ -0,0 +1,390 @@
+" Vim syntax file
+" Language: sudoers(5) configuration files
+" Maintainer: Eisuke Kawashima ( e.kawaschima+vim AT gmail.com )
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2021 Mar 15
+" Recent Changes: Support for #include and #includedir.
+" Added many new options (Samuel D. Leslie)
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" TODO: instead of 'skipnl', we would like to match a specific group that would
+" match \\$ and then continue with the nextgroup, actually, the skipnl doesn't
+" work...
+" TODO: treat 'ALL' like a special (yay, a bundle of new rules!!!)
+
+syn match sudoersUserSpec '^' nextgroup=@sudoersUserInSpec skipwhite
+
+syn match sudoersSpecEquals contained '=' nextgroup=@sudoersCmndSpecList skipwhite
+
+syn cluster sudoersCmndSpecList contains=sudoersUserRunasBegin,sudoersPASSWD,@sudoersCmndInSpec
+
+syn keyword sudoersTodo contained TODO FIXME XXX NOTE
+
+syn region sudoersComment display oneline start='#' end='$' contains=sudoersTodo
+syn region sudoersInclude display oneline start='[#@]\%(include\|includedir\)\>' end='$'
+
+syn keyword sudoersAlias User_Alias Runas_Alias nextgroup=sudoersUserAlias skipwhite skipnl
+syn keyword sudoersAlias Host_Alias nextgroup=sudoersHostAlias skipwhite skipnl
+syn keyword sudoersAlias Cmnd_Alias nextgroup=sudoersCmndAlias skipwhite skipnl
+
+syn match sudoersUserAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersUserAliasEquals skipwhite skipnl
+syn match sudoersUserNameInList contained '\<\l\+\>' nextgroup=@sudoersUserList skipwhite skipnl
+syn match sudoersUIDInList contained '#\d\+\>' nextgroup=@sudoersUserList skipwhite skipnl
+syn match sudoersGroupInList contained '%\l\+\>' nextgroup=@sudoersUserList skipwhite skipnl
+syn match sudoersUserNetgroupInList contained '+\l\+\>' nextgroup=@sudoersUserList skipwhite skipnl
+syn match sudoersUserAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserList skipwhite skipnl
+
+syn match sudoersUserName contained '\<\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl
+syn match sudoersUID contained '#\d\+\>' nextgroup=@sudoersParameter skipwhite skipnl
+syn match sudoersGroup contained '%\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl
+syn match sudoersUserNetgroup contained '+\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl
+syn match sudoersUserAliasRef contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersParameter skipwhite skipnl
+
+syn match sudoersUserNameInSpec contained '\<\l\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl
+syn match sudoersUIDInSpec contained '#\d\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl
+syn match sudoersGroupInSpec contained '%\l\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl
+syn match sudoersUserNetgroupInSpec contained '+\l\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl
+syn match sudoersUserAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserSpec skipwhite skipnl
+
+syn match sudoersUserNameInRunas contained '\<\l\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl
+syn match sudoersUIDInRunas contained '#\d\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl
+syn match sudoersGroupInRunas contained '%\l\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl
+syn match sudoersUserNetgroupInRunas contained '+\l\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl
+syn match sudoersUserAliasInRunas contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserRunas skipwhite skipnl
+
+syn match sudoersHostAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersHostAliasEquals skipwhite skipnl
+syn match sudoersHostNameInList contained '\<\l\+\>' nextgroup=@sudoersHostList skipwhite skipnl
+syn match sudoersIPAddrInList contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostList skipwhite skipnl
+syn match sudoersNetworkInList contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersHostList skipwhite skipnl
+syn match sudoersHostNetgroupInList contained '+\l\+\>' nextgroup=@sudoersHostList skipwhite skipnl
+syn match sudoersHostAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersHostList skipwhite skipnl
+
+syn match sudoersHostName contained '\<\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl
+syn match sudoersIPAddr contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersParameter skipwhite skipnl
+syn match sudoersNetwork contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersParameter skipwhite skipnl
+syn match sudoersHostNetgroup contained '+\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl
+syn match sudoersHostAliasRef contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersParameter skipwhite skipnl
+
+syn match sudoersHostNameInSpec contained '\<\l\+\>' nextgroup=@sudoersHostSpec skipwhite skipnl
+syn match sudoersIPAddrInSpec contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostSpec skipwhite skipnl
+syn match sudoersNetworkInSpec contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersHostSpec skipwhite skipnl
+syn match sudoersHostNetgroupInSpec contained '+\l\+\>' nextgroup=@sudoersHostSpec skipwhite skipnl
+syn match sudoersHostAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersHostSpec skipwhite skipnl
+
+syn match sudoersCmndAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersCmndAliasEquals skipwhite skipnl
+syn match sudoersCmndNameInList contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=@sudoersCmndList,sudoersCommandEmpty,sudoersCommandArgs skipwhite
+syn match sudoersCmndAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersCmndList skipwhite skipnl
+
+syn match sudoersCmndNameInSpec contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=@sudoersCmndSpec,sudoersCommandEmptyInSpec,sudoersCommandArgsInSpec skipwhite
+syn match sudoersCmndAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersCmndSpec skipwhite skipnl
+
+syn match sudoersUserAliasEquals contained '=' nextgroup=@sudoersUserInList skipwhite skipnl
+syn match sudoersUserListComma contained ',' nextgroup=@sudoersUserInList skipwhite skipnl
+syn match sudoersUserListColon contained ':' nextgroup=sudoersUserAlias skipwhite skipnl
+syn cluster sudoersUserList contains=sudoersUserListComma,sudoersUserListColon
+
+syn match sudoersUserSpecComma contained ',' nextgroup=@sudoersUserInSpec skipwhite skipnl
+syn cluster sudoersUserSpec contains=sudoersUserSpecComma,@sudoersHostInSpec
+
+syn match sudoersUserRunasBegin contained '(' nextgroup=@sudoersUserInRunas skipwhite skipnl
+syn match sudoersUserRunasComma contained ',' nextgroup=@sudoersUserInRunas skipwhite skipnl
+syn match sudoersUserRunasEnd contained ')' nextgroup=sudoersPASSWD,@sudoersCmndInSpec skipwhite skipnl
+syn cluster sudoersUserRunas contains=sudoersUserRunasComma,@sudoersUserInRunas,sudoersUserRunasEnd
+
+
+syn match sudoersHostAliasEquals contained '=' nextgroup=@sudoersHostInList skipwhite skipnl
+syn match sudoersHostListComma contained ',' nextgroup=@sudoersHostInList skipwhite skipnl
+syn match sudoersHostListColon contained ':' nextgroup=sudoersHostAlias skipwhite skipnl
+syn cluster sudoersHostList contains=sudoersHostListComma,sudoersHostListColon
+
+syn match sudoersHostSpecComma contained ',' nextgroup=@sudoersHostInSpec skipwhite skipnl
+syn cluster sudoersHostSpec contains=sudoersHostSpecComma,sudoersSpecEquals
+
+
+syn match sudoersCmndAliasEquals contained '=' nextgroup=@sudoersCmndInList skipwhite skipnl
+syn match sudoersCmndListComma contained ',' nextgroup=@sudoersCmndInList skipwhite skipnl
+syn match sudoersCmndListColon contained ':' nextgroup=sudoersCmndAlias skipwhite skipnl
+syn cluster sudoersCmndList contains=sudoersCmndListComma,sudoersCmndListColon
+
+syn match sudoersCmndSpecComma contained ',' nextgroup=@sudoersCmndSpecList skipwhite skipnl
+syn match sudoersCmndSpecColon contained ':' nextgroup=@sudoersUserInSpec skipwhite skipnl
+syn cluster sudoersCmndSpec contains=sudoersCmndSpecComma,sudoersCmndSpecColon
+
+syn cluster sudoersUserInList contains=sudoersUserNegationInList,sudoersUserNameInList,sudoersUIDInList,sudoersGroupInList,sudoersUserNetgroupInList,sudoersUserAliasInList
+syn cluster sudoersHostInList contains=sudoersHostNegationInList,sudoersHostNameInList,sudoersIPAddrInList,sudoersNetworkInList,sudoersHostNetgroupInList,sudoersHostAliasInList
+syn cluster sudoersCmndInList contains=sudoersCmndNegationInList,sudoersCmndNameInList,sudoersCmndAliasInList
+
+syn cluster sudoersUser contains=sudoersUserNegation,sudoersUserName,sudoersUID,sudoersGroup,sudoersUserNetgroup,sudoersUserAliasRef
+syn cluster sudoersHost contains=sudoersHostNegation,sudoersHostName,sudoersIPAddr,sudoersNetwork,sudoersHostNetgroup,sudoersHostAliasRef
+
+syn cluster sudoersUserInSpec contains=sudoersUserNegationInSpec,sudoersUserNameInSpec,sudoersUIDInSpec,sudoersGroupInSpec,sudoersUserNetgroupInSpec,sudoersUserAliasInSpec
+syn cluster sudoersHostInSpec contains=sudoersHostNegationInSpec,sudoersHostNameInSpec,sudoersIPAddrInSpec,sudoersNetworkInSpec,sudoersHostNetgroupInSpec,sudoersHostAliasInSpec
+syn cluster sudoersUserInRunas contains=sudoersUserNegationInRunas,sudoersUserNameInRunas,sudoersUIDInRunas,sudoersGroupInRunas,sudoersUserNetgroupInRunas,sudoersUserAliasInRunas
+syn cluster sudoersCmndInSpec contains=sudoersCmndNegationInSpec,sudoersCmndNameInSpec,sudoersCmndAliasInSpec
+
+syn match sudoersUserNegationInList contained '!\+' nextgroup=@sudoersUserInList skipwhite skipnl
+syn match sudoersHostNegationInList contained '!\+' nextgroup=@sudoersHostInList skipwhite skipnl
+syn match sudoersCmndNegationInList contained '!\+' nextgroup=@sudoersCmndInList skipwhite skipnl
+
+syn match sudoersUserNegation contained '!\+' nextgroup=@sudoersUser skipwhite skipnl
+syn match sudoersHostNegation contained '!\+' nextgroup=@sudoersHost skipwhite skipnl
+
+syn match sudoersUserNegationInSpec contained '!\+' nextgroup=@sudoersUserInSpec skipwhite skipnl
+syn match sudoersHostNegationInSpec contained '!\+' nextgroup=@sudoersHostInSpec skipwhite skipnl
+syn match sudoersUserNegationInRunas contained '!\+' nextgroup=@sudoersUserInRunas skipwhite skipnl
+syn match sudoersCmndNegationInSpec contained '!\+' nextgroup=@sudoersCmndInSpec skipwhite skipnl
+
+syn match sudoersCommandArgs contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersCommandArgs,@sudoersCmndList skipwhite
+syn match sudoersCommandEmpty contained '""' nextgroup=@sudoersCmndList skipwhite skipnl
+
+syn match sudoersCommandArgsInSpec contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersCommandArgsInSpec,@sudoersCmndSpec skipwhite
+syn match sudoersCommandEmptyInSpec contained '""' nextgroup=@sudoersCmndSpec skipwhite skipnl
+
+syn keyword sudoersDefaultEntry Defaults nextgroup=sudoersDefaultTypeAt,sudoersDefaultTypeColon,sudoersDefaultTypeGreaterThan,@sudoersParameter skipwhite skipnl
+syn match sudoersDefaultTypeAt contained '@' nextgroup=@sudoersHost skipwhite skipnl
+syn match sudoersDefaultTypeColon contained ':' nextgroup=@sudoersUser skipwhite skipnl
+syn match sudoersDefaultTypeGreaterThan contained '>' nextgroup=@sudoersUser skipwhite skipnl
+
+" TODO: could also deal with special characters here
+syn match sudoersBooleanParameter contained '!' nextgroup=sudoersBooleanParameter skipwhite skipnl
+syn keyword sudoersBooleanParameter contained skipwhite skipnl
+ \ always_query_group_plugin
+ \ always_set_home
+ \ authenticate
+ \ closefrom_override
+ \ compress_io
+ \ env_editor
+ \ env_reset
+ \ exec_background
+ \ fast_glob
+ \ fqdn
+ \ ignore_audit_errors
+ \ ignore_dot
+ \ ignore_iolog_errors
+ \ ignore_local_sudoers
+ \ ignore_logfile_errors
+ \ ignore_unknown_defaults
+ \ insults
+ \ log_host
+ \ log_input
+ \ log_output
+ \ log_year
+ \ long_otp_prompt
+ \ mail_all_cmnds
+ \ mail_always
+ \ mail_badpass
+ \ mail_no_host
+ \ mail_no_perms
+ \ mail_no_user
+ \ match_group_by_gid
+ \ netgroup_tuple
+ \ noexec
+ \ pam_session
+ \ pam_setcred
+ \ passprompt_override
+ \ path_info
+ \ preserve_groups
+ \ pwfeedback
+ \ requiretty
+ \ root_sudo
+ \ rootpw
+ \ runaspw
+ \ set_home
+ \ set_logname
+ \ set_utmp
+ \ setenv
+ \ shell_noargs
+ \ stay_setuid
+ \ sudoedit_checkdir
+ \ sudoedit_follow
+ \ syslog_pid
+ \ targetpw
+ \ tty_tickets
+ \ umask_override
+ \ use_netgroups
+ \ use_pty
+ \ user_command_timeouts
+ \ utmp_runas
+ \ visiblepw
+
+syn keyword sudoersIntegerParameter contained
+ \ nextgroup=sudoersIntegerParameterEquals
+ \ skipwhite skipnl
+ \ closefrom
+ \ command_timeout
+ \ loglinelen
+ \ maxseq
+ \ passwd_timeout
+ \ passwd_tries
+ \ syslog_maxlen
+ \ timestamp_timeout
+ \ umask
+
+syn keyword sudoersStringParameter contained
+ \ nextgroup=sudoersStringParameterEquals
+ \ skipwhite skipnl
+ \ askpass
+ \ badpass_message
+ \ editor
+ \ env_file
+ \ exempt_group
+ \ fdexec
+ \ group_plugin
+ \ iolog_dir
+ \ iolog_file
+ \ iolog_flush
+ \ iolog_group
+ \ iolog_mode
+ \ iolog_user
+ \ lecture
+ \ lecture_file
+ \ lecture_status_dir
+ \ listpw
+ \ logfile
+ \ mailerflags
+ \ mailerpath
+ \ mailfrom
+ \ mailsub
+ \ mailto
+ \ noexec_file
+ \ pam_login_service
+ \ pam_service
+ \ passprompt
+ \ restricted_env_file
+ \ role
+ \ runas_default
+ \ secure_path
+ \ sudoers_locale
+ \ syslog
+ \ syslog_badpri
+ \ syslog_goodpri
+ \ timestamp_type
+ \ timestampdir
+ \ timestampowner
+ \ type
+ \ verifypw
+
+syn keyword sudoersListParameter contained
+ \ nextgroup=sudoersListParameterEquals
+ \ skipwhite skipnl
+ \ env_check
+ \ env_delete
+ \ env_keep
+
+syn match sudoersParameterListComma contained ',' nextgroup=@sudoersParameter skipwhite skipnl
+
+syn cluster sudoersParameter contains=sudoersBooleanParameter,sudoersIntegerParameter,sudoersStringParameter,sudoersListParameter
+
+syn match sudoersIntegerParameterEquals contained '[+-]\==' nextgroup=sudoersIntegerValue skipwhite skipnl
+syn match sudoersStringParameterEquals contained '[+-]\==' nextgroup=sudoersStringValue skipwhite skipnl
+syn match sudoersListParameterEquals contained '[+-]\==' nextgroup=sudoersListValue skipwhite skipnl
+
+syn match sudoersIntegerValue contained '\d\+' nextgroup=sudoersParameterListComma skipwhite skipnl
+syn match sudoersStringValue contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl
+syn region sudoersStringValue contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl
+syn match sudoersListValue contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl
+syn region sudoersListValue contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl
+
+syn match sudoersPASSWD contained '\%(NO\)\=PASSWD:' nextgroup=@sudoersCmndInSpec skipwhite
+
+hi def link sudoersSpecEquals Operator
+hi def link sudoersTodo Todo
+hi def link sudoersComment Comment
+hi def link sudoersAlias Keyword
+hi def link sudoersUserAlias Identifier
+hi def link sudoersUserNameInList String
+hi def link sudoersUIDInList Number
+hi def link sudoersGroupInList PreProc
+hi def link sudoersUserNetgroupInList PreProc
+hi def link sudoersUserAliasInList PreProc
+hi def link sudoersUserName String
+hi def link sudoersUID Number
+hi def link sudoersGroup PreProc
+hi def link sudoersUserNetgroup PreProc
+hi def link sudoersUserAliasRef PreProc
+hi def link sudoersUserNameInSpec String
+hi def link sudoersUIDInSpec Number
+hi def link sudoersGroupInSpec PreProc
+hi def link sudoersUserNetgroupInSpec PreProc
+hi def link sudoersUserAliasInSpec PreProc
+hi def link sudoersUserNameInRunas String
+hi def link sudoersUIDInRunas Number
+hi def link sudoersGroupInRunas PreProc
+hi def link sudoersUserNetgroupInRunas PreProc
+hi def link sudoersUserAliasInRunas PreProc
+hi def link sudoersHostAlias Identifier
+hi def link sudoersHostNameInList String
+hi def link sudoersIPAddrInList Number
+hi def link sudoersNetworkInList Number
+hi def link sudoersHostNetgroupInList PreProc
+hi def link sudoersHostAliasInList PreProc
+hi def link sudoersHostName String
+hi def link sudoersIPAddr Number
+hi def link sudoersNetwork Number
+hi def link sudoersHostNetgroup PreProc
+hi def link sudoersHostAliasRef PreProc
+hi def link sudoersHostNameInSpec String
+hi def link sudoersIPAddrInSpec Number
+hi def link sudoersNetworkInSpec Number
+hi def link sudoersHostNetgroupInSpec PreProc
+hi def link sudoersHostAliasInSpec PreProc
+hi def link sudoersCmndAlias Identifier
+hi def link sudoersCmndNameInList String
+hi def link sudoersCmndAliasInList PreProc
+hi def link sudoersCmndNameInSpec String
+hi def link sudoersCmndAliasInSpec PreProc
+hi def link sudoersUserAliasEquals Operator
+hi def link sudoersUserListComma Delimiter
+hi def link sudoersUserListColon Delimiter
+hi def link sudoersUserSpecComma Delimiter
+hi def link sudoersUserRunasBegin Delimiter
+hi def link sudoersUserRunasComma Delimiter
+hi def link sudoersUserRunasEnd Delimiter
+hi def link sudoersHostAliasEquals Operator
+hi def link sudoersHostListComma Delimiter
+hi def link sudoersHostListColon Delimiter
+hi def link sudoersHostSpecComma Delimiter
+hi def link sudoersCmndAliasEquals Operator
+hi def link sudoersCmndListComma Delimiter
+hi def link sudoersCmndListColon Delimiter
+hi def link sudoersCmndSpecComma Delimiter
+hi def link sudoersCmndSpecColon Delimiter
+hi def link sudoersUserNegationInList Operator
+hi def link sudoersHostNegationInList Operator
+hi def link sudoersCmndNegationInList Operator
+hi def link sudoersUserNegation Operator
+hi def link sudoersHostNegation Operator
+hi def link sudoersUserNegationInSpec Operator
+hi def link sudoersHostNegationInSpec Operator
+hi def link sudoersUserNegationInRunas Operator
+hi def link sudoersCmndNegationInSpec Operator
+hi def link sudoersCommandArgs String
+hi def link sudoersCommandEmpty Special
+hi def link sudoersDefaultEntry Keyword
+hi def link sudoersDefaultTypeAt Special
+hi def link sudoersDefaultTypeColon Special
+hi def link sudoersDefaultTypeGreaterThan Special
+hi def link sudoersBooleanParameter Identifier
+hi def link sudoersIntegerParameter Identifier
+hi def link sudoersStringParameter Identifier
+hi def link sudoersListParameter Identifier
+hi def link sudoersParameterListComma Delimiter
+hi def link sudoersIntegerParameterEquals Operator
+hi def link sudoersStringParameterEquals Operator
+hi def link sudoersListParameterEquals Operator
+hi def link sudoersIntegerValue Number
+hi def link sudoersStringValue String
+hi def link sudoersListValue String
+hi def link sudoersPASSWD Special
+hi def link sudoersInclude Statement
+
+let b:current_syntax = "sudoers"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/svg.vim b/runtime/syntax/svg.vim
new file mode 100644
index 0000000..819b5ec
--- /dev/null
+++ b/runtime/syntax/svg.vim
@@ -0,0 +1,15 @@
+" Vim syntax file
+" Language: SVG (Scalable Vector Graphics)
+" Maintainer: Vincent Berthoux <twinside@gmail.com>
+" File Types: .svg (used in Web and vector programs)
+"
+" Directly call the xml syntax, because SVG is an XML
+" dialect. But as some plugins base their effect on filetype,
+" providing a distinct filetype from xml is better.
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/xml.vim
+let b:current_syntax = "svg"
diff --git a/runtime/syntax/svn.vim b/runtime/syntax/svn.vim
new file mode 100644
index 0000000..6239790
--- /dev/null
+++ b/runtime/syntax/svn.vim
@@ -0,0 +1,56 @@
+" Vim syntax file
+" Language: Subversion (svn) commit file
+" Maintainer: Dmitry Vasiliev <dima at hlabs dot org>
+" URL: https://github.com/hdima/vim-scripts/blob/master/syntax/svn.vim
+" Last Change: 2013-11-08
+" Filenames: svn-commit*.tmp
+" Version: 1.10
+
+" Contributors:
+"
+" List of the contributors in alphabetical order:
+"
+" A. S. Budden
+" Ingo Karkat
+" Myk Taylor
+" Stefano Zacchiroli
+
+" quit when a syntax file was already loaded.
+if exists("b:current_syntax")
+ finish
+endif
+
+syn spell toplevel
+
+syn match svnFirstLine "\%^.*" nextgroup=svnRegion,svnBlank skipnl
+syn match svnSummary "^.\{0,50\}" contained containedin=svnFirstLine nextgroup=svnOverflow contains=@Spell
+syn match svnOverflow ".*" contained contains=@Spell
+syn match svnBlank "^.*" contained contains=@Spell
+
+syn region svnRegion end="\%$" matchgroup=svnDelimiter start="^--.*--$" contains=svnRemoved,svnRenamed,svnAdded,svnModified,svnProperty,@NoSpell
+syn match svnRemoved "^D .*$" contained contains=@NoSpell
+syn match svnRenamed "^R[ M][ U][ +] .*$" contained contains=@NoSpell
+syn match svnAdded "^A[ M][ U][ +] .*$" contained contains=@NoSpell
+syn match svnModified "^M[ M][ U] .*$" contained contains=@NoSpell
+syn match svnProperty "^_M[ U] .*$" contained contains=@NoSpell
+
+" Synchronization.
+syn sync clear
+syn sync match svnSync grouphere svnRegion "^--.*--$"me=s-1
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet.
+
+hi def link svnSummary Keyword
+hi def link svnBlank Error
+
+hi def link svnRegion Comment
+hi def link svnDelimiter NonText
+hi def link svnRemoved Constant
+hi def link svnAdded Identifier
+hi def link svnModified Special
+hi def link svnProperty Special
+hi def link svnRenamed Special
+
+
+let b:current_syntax = "svn"
diff --git a/runtime/syntax/swayconfig.vim b/runtime/syntax/swayconfig.vim
new file mode 100644
index 0000000..996b8f5
--- /dev/null
+++ b/runtime/syntax/swayconfig.vim
@@ -0,0 +1,106 @@
+" Vim syntax file
+" Language: sway window manager config
+" Original Author: James Eapen <james.eapen@vai.org>
+" Maintainer: James Eapen <james.eapen@vai.org>
+" Version: 0.1.6
+" Reference version (jamespeapen/swayconfig.vim): 0.11.6
+" Last Change: 2022 Aug 08
+
+" References:
+" http://i3wm.org/docs/userguide.html#configuring
+" https://github.com/swaywm/sway/blob/b69d637f7a34e239e48a4267ae94a5e7087b5834/sway/sway.5.scd
+" http://vimdoc.sourceforge.net/htmldoc/syntax.html
+"
+"
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/i3config.vim
+
+scriptencoding utf-8
+
+" Error
+"syn match swayConfigError /.*/
+
+" binding
+syn keyword swayConfigBindKeyword bindswitch bindgesture contained
+syn match swayConfigBind /^\s*\(bindswitch\)\s\+.*$/ contains=i3ConfigVariable,i3ConfigBindKeyword,swayConfigBindKeyword,i3ConfigVariableAndModifier,i3ConfigNumber,i3ConfigUnit,i3ConfigUnitOr,i3ConfigBindArgument,i3ConfigModifier,i3ConfigAction,i3ConfigString,i3ConfigGapStyleKeyword,i3ConfigBorderStyleKeyword
+
+" bindgestures
+syn keyword swayConfigBindGestureCommand swipe pinch hold contained
+syn keyword swayConfigBindGestureDirection up down left right next prev contained
+syn keyword swayConfigBindGesturePinchDirection inward outward clockwise counterclockwise contained
+syn match swayConfigBindGestureHold /^\s*\(bindgesture\)\s\+hold\(:[1-5]\)\?\s\+.*$/ contains=swayConfigBindKeyword,swayConfigBindGestureCommand,swayConfigBindGestureDirection,i3ConfigWorkspaceKeyword,i3ConfigAction
+syn match swayConfigBindGestureSwipe /^\s*\(bindgesture\)\s\+swipe\(:[3-5]\)\?:\(up\|down\|left\|right\)\s\+.*$/ contains=swayConfigBindKeyword,swayConfigBindGestureCommand,swayConfigBindGestureDirection,i3ConfigWorkspaceKeyword,i3ConfigAction
+syn match swayConfigBindGesturePinch /^\s*\(bindgesture\)\s\+pinch\(:[2-5]\)\?:\(up\|down\|left\|right\|inward\|outward\|clockwise\|counterclockwise\)\(+\(up\|down\|left\|right\|inward\|outward\|clockwise\|counterclockwise\)\)\?.*$/ contains=swayConfigBindKeyword,swayConfigBindGestureCommand,swayConfigBindGestureDirection,swayConfigBindGesturePinchDirection,i3ConfigWorkspaceKeyword,i3ConfigAction
+
+" floating
+syn keyword swayConfigFloatingKeyword floating contained
+syn match swayConfigFloating /^\s*floating\s\+\(enable\|disable\|toggle\)\s*$/ contains=swayConfigFloatingKeyword
+
+syn clear i3ConfigFloatingModifier
+syn keyword swayConfigFloatingModifier floating_modifier contained
+syn match swayConfigFloatingMouseAction /^\s\?.*floating_modifier\s\S\+\s\?\(normal\|inverted\|none\)\?$/ contains=swayConfigFloatingModifier,i3ConfigVariable
+
+" Gaps
+syn clear i3ConfigSmartBorderKeyword
+syn clear i3ConfigSmartBorder
+syn keyword swayConfigSmartBorderKeyword on no_gaps off contained
+syn match swayConfigSmartBorder /^\s*smart_borders\s\+\(on\|no_gaps\|off\)\s\?$/ contains=swayConfigSmartBorderKeyword
+
+" Changing colors
+syn keyword swayConfigClientColorKeyword focused_tab_title contained
+syn match swayConfigClientColor /^\s*client.\w\+\s\+.*$/ contains=i3ConfigClientColorKeyword,i3ConfigColor,i3ConfigVariable,i3ConfigClientColorKeyword,swayConfigClientColorKeyword
+
+" Input config
+syn keyword swayConfigInputKeyword input contained
+syn match swayConfigInput /^\s*input\s\+.*$/ contains=swayConfigInputKeyword
+
+" set display outputs
+syn match swayConfigOutput /^\s*output\s\+.*$/ contains=i3ConfigOutput
+
+" set display focus
+syn keyword swayConfigFocusKeyword focus contained
+syn keyword swayConfigFocusType output contained
+syn match swayConfigFocus /^\s*focus\soutput\s.*$/ contains=swayConfigFocusKeyword,swayConfigFocusType
+
+" focus follows mouse
+syn clear i3ConfigFocusFollowsMouseType
+syn clear i3ConfigFocusFollowsMouse
+
+syn keyword swayConfigFocusFollowsMouseType yes no always contained
+syn match swayConfigFocusFollowsMouse /^\s*focus_follows_mouse\s\+\(yes\|no\|always\)\s\?$/ contains=i3ConfigFocusFollowsMouseKeyword,swayConfigFocusFollowsMouseType
+
+
+" xwayland
+syn keyword swayConfigXwaylandKeyword xwayland contained
+syn match swayConfigXwaylandModifier /^\s*xwayland\s\+\(enable\|disable\|force\)\s\?$/ contains=swayConfigXwaylandKeyword
+
+" Group mode/bar
+syn clear i3ConfigBlock
+syn region swayConfigBlock start=+.*s\?{$+ end=+^}$+ contains=i3ConfigBlockKeyword,i3ConfigString,i3ConfigBind,i3ConfigInitializeKeyword,i3ConfigComment,i3ConfigFont,i3ConfigFocusWrappingType,i3ConfigColor,i3ConfigVariable,swayConfigInputKeyword,i3ConfigOutput transparent keepend extend
+
+"hi def link swayConfigError Error
+hi def link i3ConfigFloating Error
+hi def link swayConfigFloating Type
+hi def link swayConfigFloatingMouseAction Type
+hi def link swayConfigFocusKeyword Type
+hi def link swayConfigSmartBorderKeyword Type
+hi def link swayConfigInputKeyword Type
+hi def link swayConfigFocusFollowsMouseType Type
+hi def link swayConfigBindGestureCommand Identifier
+hi def link swayConfigBindGestureDirection Constant
+hi def link swayConfigBindGesturePinchDirection Constant
+hi def link swayConfigBindKeyword Identifier
+hi def link swayConfigClientColorKeyword Identifier
+hi def link swayConfigFloatingKeyword Identifier
+hi def link swayConfigFloatingModifier Identifier
+hi def link swayConfigFocusType Identifier
+hi def link swayConfigSmartBorder Identifier
+hi def link swayConfigXwaylandKeyword Identifier
+hi def link swayConfigXwaylandModifier Type
+hi def link swayConfigBindGesture PreProc
+
+let b:current_syntax = "swayconfig"
diff --git a/runtime/syntax/swift.vim b/runtime/syntax/swift.vim
new file mode 100644
index 0000000..ff07be2
--- /dev/null
+++ b/runtime/syntax/swift.vim
@@ -0,0 +1,286 @@
+" This source file is part of the Swift.org open source project
+"
+" Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
+" Licensed under Apache License v2.0 with Runtime Library Exception
+"
+" See https://swift.org/LICENSE.txt for license information
+" See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+"
+" Vim syntax file
+" Language: swift
+" Maintainer: Joe Groff <jgroff@apple.com>
+" Last Change: 2018 Jan 21
+"
+" Vim maintainer: Emir SARI <bitigchi@me.com>
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:keepcpo = &cpo
+set cpo&vim
+
+syn keyword swiftKeyword
+ \ break
+ \ case
+ \ catch
+ \ continue
+ \ default
+ \ defer
+ \ do
+ \ else
+ \ fallthrough
+ \ for
+ \ guard
+ \ if
+ \ in
+ \ repeat
+ \ return
+ \ switch
+ \ throw
+ \ try
+ \ where
+ \ while
+syn match swiftMultiwordKeyword
+ \ "indirect case"
+
+syn keyword swiftCoreTypes
+ \ Any
+ \ AnyObject
+
+syn keyword swiftImport skipwhite skipempty nextgroup=swiftImportModule
+ \ import
+
+syn keyword swiftDefinitionModifier
+ \ convenience
+ \ dynamic
+ \ fileprivate
+ \ final
+ \ internal
+ \ lazy
+ \ nonmutating
+ \ open
+ \ override
+ \ prefix
+ \ private
+ \ public
+ \ required
+ \ rethrows
+ \ static
+ \ throws
+ \ weak
+
+syn keyword swiftInOutKeyword skipwhite skipempty nextgroup=swiftTypeName
+ \ inout
+
+syn keyword swiftIdentifierKeyword
+ \ Self
+ \ metatype
+ \ self
+ \ super
+
+syn keyword swiftFuncKeywordGeneral skipwhite skipempty nextgroup=swiftTypeParameters
+ \ init
+
+syn keyword swiftFuncKeyword
+ \ deinit
+ \ subscript
+
+syn keyword swiftScope
+ \ autoreleasepool
+
+syn keyword swiftMutating skipwhite skipempty nextgroup=swiftFuncDefinition
+ \ mutating
+syn keyword swiftFuncDefinition skipwhite skipempty nextgroup=swiftTypeName,swiftOperator
+ \ func
+
+syn keyword swiftTypeDefinition skipwhite skipempty nextgroup=swiftTypeName
+ \ class
+ \ enum
+ \ extension
+ \ operator
+ \ precedencegroup
+ \ protocol
+ \ struct
+
+syn keyword swiftTypeAliasDefinition skipwhite skipempty nextgroup=swiftTypeAliasName
+ \ associatedtype
+ \ typealias
+
+syn match swiftMultiwordTypeDefinition skipwhite skipempty nextgroup=swiftTypeName
+ \ "indirect enum"
+
+syn keyword swiftVarDefinition skipwhite skipempty nextgroup=swiftVarName
+ \ let
+ \ var
+
+syn keyword swiftLabel
+ \ get
+ \ set
+ \ didSet
+ \ willSet
+
+syn keyword swiftBoolean
+ \ false
+ \ true
+
+syn keyword swiftNil
+ \ nil
+
+syn match swiftImportModule contained nextgroup=swiftImportComponent
+ \ /\<[A-Za-z_][A-Za-z_0-9]*\>/
+syn match swiftImportComponent contained nextgroup=swiftImportComponent
+ \ /\.\<[A-Za-z_][A-Za-z_0-9]*\>/
+
+syn match swiftTypeAliasName contained skipwhite skipempty nextgroup=swiftTypeAliasValue
+ \ /\<[A-Za-z_][A-Za-z_0-9]*\>/
+syn match swiftTypeName contained skipwhite skipempty nextgroup=swiftTypeParameters
+ \ /\<[A-Za-z_][A-Za-z_0-9\.]*\>/
+syn match swiftVarName contained skipwhite skipempty nextgroup=swiftTypeDeclaration
+ \ /\<[A-Za-z_][A-Za-z_0-9]*\>/
+syn match swiftImplicitVarName
+ \ /\$\<[A-Za-z_0-9]\+\>/
+
+" TypeName[Optionality]?
+syn match swiftType contained skipwhite skipempty nextgroup=swiftTypeParameters
+ \ /\<[A-Za-z_][A-Za-z_0-9\.]*\>[!?]\?/
+" [Type:Type] (dictionary) or [Type] (array)
+syn region swiftType contained contains=swiftTypePair,swiftType
+ \ matchgroup=Delimiter start=/\[/ end=/\]/
+syn match swiftTypePair contained skipwhite skipempty nextgroup=swiftTypeParameters,swiftTypeDeclaration
+ \ /\<[A-Za-z_][A-Za-z_0-9\.]*\>[!?]\?/
+" (Type[, Type]) (tuple)
+" FIXME: we should be able to use skip="," and drop swiftParamDelim
+syn region swiftType contained contains=swiftType,swiftParamDelim
+ \ matchgroup=Delimiter start="[^@]\?(" end=")" matchgroup=NONE skip=","
+syn match swiftParamDelim contained
+ \ /,/
+" <Generic Clause> (generics)
+syn region swiftTypeParameters contained contains=swiftVarName,swiftConstraint
+ \ matchgroup=Delimiter start="<" end=">" matchgroup=NONE skip=","
+syn keyword swiftConstraint contained
+ \ where
+
+syn match swiftTypeAliasValue skipwhite skipempty nextgroup=swiftType
+ \ /=/
+syn match swiftTypeDeclaration skipwhite skipempty nextgroup=swiftType,swiftInOutKeyword
+ \ /:/
+syn match swiftTypeDeclaration skipwhite skipempty nextgroup=swiftType
+ \ /->/
+
+syn match swiftKeyword
+ \ /\<case\>/
+syn region swiftCaseLabelRegion
+ \ matchgroup=swiftKeyword start=/\<case\>/ matchgroup=Delimiter end=/:/ oneline contains=TOP
+syn region swiftDefaultLabelRegion
+ \ matchgroup=swiftKeyword start=/\<default\>/ matchgroup=Delimiter end=/:/ oneline
+
+syn region swiftParenthesisRegion contains=TOP
+ \ matchgroup=NONE start=/(/ end=/)/
+
+syn region swiftString contains=swiftInterpolationRegion
+ \ start=/"/ skip=/\\\\\|\\"/ end=/"/
+syn region swiftInterpolationRegion contained contains=TOP
+ \ matchgroup=swiftInterpolation start=/\\(/ end=/)/
+syn region swiftComment contains=swiftComment,swiftLineComment,swiftTodo
+ \ start="/\*" end="\*/"
+syn region swiftLineComment contains=swiftComment,swiftTodo
+ \ start="//" end="$"
+
+syn match swiftDecimal
+ \ /[+\-]\?\<\([0-9][0-9_]*\)\([.][0-9_]*\)\?\([eE][+\-]\?[0-9][0-9_]*\)\?\>/
+syn match swiftHex
+ \ /[+\-]\?\<0x[0-9A-Fa-f][0-9A-Fa-f_]*\(\([.][0-9A-Fa-f_]*\)\?[pP][+\-]\?[0-9][0-9_]*\)\?\>/
+syn match swiftOct
+ \ /[+\-]\?\<0o[0-7][0-7_]*\>/
+syn match swiftBin
+ \ /[+\-]\?\<0b[01][01_]*\>/
+
+syn match swiftOperator skipwhite skipempty nextgroup=swiftTypeParameters
+ \ "\.\@<!\.\.\.\@!\|[/=\-+*%<>!&|^~]\@<!\(/[/*]\@![/=\-+*%<>!&|^~]*\|*/\@![/=\-+*%<>!&|^~]*\|->\@![/=\-+*%<>!&|^~]*\|[=+%<>!&|^~][/=\-+*%<>!&|^~]*\)"
+syn match swiftOperator skipwhite skipempty nextgroup=swiftTypeParameters
+ \ "\.\.[<.]"
+
+syn match swiftChar
+ \ /'\([^'\\]\|\\\(["'tnr0\\]\|x[0-9a-fA-F]\{2}\|u[0-9a-fA-F]\{4}\|U[0-9a-fA-F]\{8}\)\)'/
+
+syn match swiftTupleIndexNumber contains=swiftDecimal
+ \ /\.[0-9]\+/
+syn match swiftDecimal contained
+ \ /[0-9]\+/
+
+syn match swiftPreproc
+ \ /#\(\<column\>\|\<dsohandle\>\|\<file\>\|\<line\>\|\<function\>\)/
+syn match swiftPreproc
+ \ /^\s*#\(\<if\>\|\<else\>\|\<elseif\>\|\<endif\>\|\<error\>\|\<warning\>\)/
+syn region swiftPreprocFalse
+ \ start="^\s*#\<if\>\s\+\<false\>" end="^\s*#\(\<else\>\|\<elseif\>\|\<endif\>\)"
+
+syn match swiftAttribute
+ \ /@\<\w\+\>/ skipwhite skipempty nextgroup=swiftType,swiftTypeDefinition
+
+syn keyword swiftTodo MARK TODO FIXME contained
+
+syn match swiftCastOp skipwhite skipempty nextgroup=swiftType,swiftCoreTypes
+ \ "\<is\>"
+syn match swiftCastOp skipwhite skipempty nextgroup=swiftType,swiftCoreTypes
+ \ "\<as\>[!?]\?"
+
+syn match swiftNilOps
+ \ "??"
+
+syn region swiftReservedIdentifier oneline
+ \ start=/`/ end=/`/
+
+hi def link swiftImport Include
+hi def link swiftImportModule Title
+hi def link swiftImportComponent Identifier
+hi def link swiftKeyword Statement
+hi def link swiftCoreTypes Type
+hi def link swiftMultiwordKeyword Statement
+hi def link swiftTypeDefinition Define
+hi def link swiftMultiwordTypeDefinition Define
+hi def link swiftType Type
+hi def link swiftTypePair Type
+hi def link swiftTypeAliasName Identifier
+hi def link swiftTypeName Function
+hi def link swiftConstraint Special
+hi def link swiftFuncDefinition Define
+hi def link swiftDefinitionModifier Operator
+hi def link swiftInOutKeyword Define
+hi def link swiftFuncKeyword Function
+hi def link swiftFuncKeywordGeneral Function
+hi def link swiftTypeAliasDefinition Define
+hi def link swiftVarDefinition Define
+hi def link swiftVarName Identifier
+hi def link swiftImplicitVarName Identifier
+hi def link swiftIdentifierKeyword Identifier
+hi def link swiftTypeAliasValue Delimiter
+hi def link swiftTypeDeclaration Delimiter
+hi def link swiftTypeParameters Delimiter
+hi def link swiftBoolean Boolean
+hi def link swiftString String
+hi def link swiftInterpolation Special
+hi def link swiftComment Comment
+hi def link swiftLineComment Comment
+hi def link swiftDecimal Number
+hi def link swiftHex Number
+hi def link swiftOct Number
+hi def link swiftBin Number
+hi def link swiftOperator Function
+hi def link swiftChar Character
+hi def link swiftLabel Operator
+hi def link swiftMutating Statement
+hi def link swiftPreproc PreCondit
+hi def link swiftPreprocFalse Comment
+hi def link swiftAttribute Type
+hi def link swiftTodo Todo
+hi def link swiftNil Constant
+hi def link swiftCastOp Operator
+hi def link swiftNilOps Operator
+hi def link swiftScope PreProc
+
+let b:current_syntax = "swift"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/runtime/syntax/swiftgyb.vim b/runtime/syntax/swiftgyb.vim
new file mode 100644
index 0000000..566b75b
--- /dev/null
+++ b/runtime/syntax/swiftgyb.vim
@@ -0,0 +1,24 @@
+" This source file is part of the Swift.org open source project
+"
+" Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
+" Licensed under Apache License v2.0 with Runtime Library Exception
+"
+" See https://swift.org/LICENSE.txt for license information
+" See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+"
+" Vim syntax file
+" Language: gyb on swift
+"
+" Vim maintainer: Emir SARI <bitigchi@me.com>
+
+runtime! syntax/swift.vim
+unlet b:current_syntax
+
+syn include @Python syntax/python.vim
+syn region pythonCode matchgroup=gybPythonCode start=+^ *%+ end=+$+ contains=@Python keepend
+syn region pythonCode matchgroup=gybPythonCode start=+%{+ end=+}%+ contains=@Python keepend
+syn match gybPythonCode /\${[^}]*}/
+hi def link gybPythonCode CursorLineNr
+
+let b:current_syntax = "swiftgyb"
+
diff --git a/runtime/syntax/syncolor.vim b/runtime/syntax/syncolor.vim
new file mode 100644
index 0000000..5b907a3
--- /dev/null
+++ b/runtime/syntax/syncolor.vim
@@ -0,0 +1,87 @@
+" Vim syntax support file
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last Change: 2020 Feb 13
+
+" This file sets up the default methods for highlighting.
+" It is loaded from "synload.vim" and from Vim for ":syntax reset".
+" Also used from init_highlight().
+
+if !exists("syntax_cmd") || syntax_cmd == "on"
+ " ":syntax on" works like in Vim 5.7: set colors but keep links
+ command -nargs=* SynColor hi <args>
+ command -nargs=* SynLink hi link <args>
+else
+ if syntax_cmd == "enable"
+ " ":syntax enable" keeps any existing colors
+ command -nargs=* SynColor hi def <args>
+ command -nargs=* SynLink hi def link <args>
+ elseif syntax_cmd == "reset"
+ " ":syntax reset" resets all colors to the default
+ command -nargs=* SynColor hi <args>
+ command -nargs=* SynLink hi! link <args>
+ else
+ " User defined syncolor file has already set the colors.
+ finish
+ endif
+endif
+
+" Many terminals can only use six different colors (plus black and white).
+" Therefore the number of colors used is kept low. It doesn't look nice with
+" too many colors anyway.
+" Careful with "cterm=bold", it changes the color to bright for some terminals.
+" There are two sets of defaults: for a dark and a light background.
+if &background == "dark"
+ SynColor Comment term=bold cterm=NONE ctermfg=Cyan ctermbg=NONE gui=NONE guifg=#80a0ff guibg=NONE
+ SynColor Constant term=underline cterm=NONE ctermfg=Magenta ctermbg=NONE gui=NONE guifg=#ffa0a0 guibg=NONE
+ SynColor Special term=bold cterm=NONE ctermfg=LightRed ctermbg=NONE gui=NONE guifg=Orange guibg=NONE
+ SynColor Identifier term=underline cterm=bold ctermfg=Cyan ctermbg=NONE gui=NONE guifg=#40ffff guibg=NONE
+ SynColor Statement term=bold cterm=NONE ctermfg=Yellow ctermbg=NONE gui=bold guifg=#ffff60 guibg=NONE
+ SynColor PreProc term=underline cterm=NONE ctermfg=LightBlue ctermbg=NONE gui=NONE guifg=#ff80ff guibg=NONE
+ SynColor Type term=underline cterm=NONE ctermfg=LightGreen ctermbg=NONE gui=bold guifg=#60ff60 guibg=NONE
+ SynColor Underlined term=underline cterm=underline ctermfg=LightBlue gui=underline guifg=#80a0ff
+ SynColor Ignore term=NONE cterm=NONE ctermfg=black ctermbg=NONE gui=NONE guifg=bg guibg=NONE
+else
+ SynColor Comment term=bold cterm=NONE ctermfg=DarkBlue ctermbg=NONE gui=NONE guifg=Blue guibg=NONE
+ SynColor Constant term=underline cterm=NONE ctermfg=DarkRed ctermbg=NONE gui=NONE guifg=Magenta guibg=NONE
+ " #6a5acd is SlateBlue
+ SynColor Special term=bold cterm=NONE ctermfg=DarkMagenta ctermbg=NONE gui=NONE guifg=#6a5acd guibg=NONE
+ SynColor Identifier term=underline cterm=NONE ctermfg=DarkCyan ctermbg=NONE gui=NONE guifg=DarkCyan guibg=NONE
+ SynColor Statement term=bold cterm=NONE ctermfg=Brown ctermbg=NONE gui=bold guifg=Brown guibg=NONE
+ " #6a0dad is Purple
+ SynColor PreProc term=underline cterm=NONE ctermfg=DarkMagenta ctermbg=NONE gui=NONE guifg=#6a0dad guibg=NONE
+ SynColor Type term=underline cterm=NONE ctermfg=DarkGreen ctermbg=NONE gui=bold guifg=SeaGreen guibg=NONE
+ SynColor Underlined term=underline cterm=underline ctermfg=DarkMagenta gui=underline guifg=SlateBlue
+ SynColor Ignore term=NONE cterm=NONE ctermfg=white ctermbg=NONE gui=NONE guifg=bg guibg=NONE
+endif
+SynColor Error term=reverse cterm=NONE ctermfg=White ctermbg=Red gui=NONE guifg=White guibg=Red
+SynColor Todo term=standout cterm=NONE ctermfg=Black ctermbg=Yellow gui=NONE guifg=Blue guibg=Yellow
+
+" Common groups that link to default highlighting.
+" You can specify other highlighting easily.
+SynLink String Constant
+SynLink Character Constant
+SynLink Number Constant
+SynLink Boolean Constant
+SynLink Float Number
+SynLink Function Identifier
+SynLink Conditional Statement
+SynLink Repeat Statement
+SynLink Label Statement
+SynLink Operator Statement
+SynLink Keyword Statement
+SynLink Exception Statement
+SynLink Include PreProc
+SynLink Define PreProc
+SynLink Macro PreProc
+SynLink PreCondit PreProc
+SynLink StorageClass Type
+SynLink Structure Type
+SynLink Typedef Type
+SynLink Tag Special
+SynLink SpecialChar Special
+SynLink Delimiter Special
+SynLink SpecialComment Special
+SynLink Debug Special
+
+delcommand SynColor
+delcommand SynLink
diff --git a/runtime/syntax/synload.vim b/runtime/syntax/synload.vim
new file mode 100644
index 0000000..70e2d88
--- /dev/null
+++ b/runtime/syntax/synload.vim
@@ -0,0 +1,83 @@
+" Vim syntax support file
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last Change: 2022 Apr 12
+
+" This file sets up for syntax highlighting.
+" It is loaded from "syntax.vim" and "manual.vim".
+" 1. Set the default highlight groups.
+" 2. Install Syntax autocommands for all the available syntax files.
+
+if !has("syntax")
+ finish
+endif
+
+" let others know that syntax has been switched on
+let syntax_on = 1
+
+" Set the default highlighting colors. Use a color scheme if specified.
+if exists("colors_name")
+ exe "colors " . colors_name
+else
+ runtime! syntax/syncolor.vim
+endif
+
+" Line continuation is used here, remove 'C' from 'cpoptions'
+let s:cpo_save = &cpo
+set cpo&vim
+
+" First remove all old syntax autocommands.
+au! Syntax
+
+au Syntax * call s:SynSet()
+
+fun! s:SynSet()
+ " clear syntax for :set syntax=OFF and any syntax name that doesn't exist
+ syn clear
+ if exists("b:current_syntax")
+ unlet b:current_syntax
+ endif
+
+ 0verbose let s = expand("<amatch>")
+ if s == "ON"
+ " :set syntax=ON
+ if &filetype == ""
+ echohl ErrorMsg
+ echo "filetype unknown"
+ echohl None
+ endif
+ let s = &filetype
+ elseif s == "OFF"
+ let s = ""
+ endif
+
+ if s != ""
+ " Load the syntax file(s). When there are several, separated by dots,
+ " load each in sequence. Skip empty entries.
+ for name in split(s, '\.')
+ if !empty(name)
+ exe "runtime! syntax/" . name . ".vim syntax/" . name . "/*.vim"
+ endif
+ endfor
+ endif
+endfun
+
+
+" Handle adding doxygen to other languages (C, C++, C#, IDL, java, php, DataScript)
+au Syntax c,cpp,cs,idl,java,php,datascript
+ \ if (exists('b:load_doxygen_syntax') && b:load_doxygen_syntax)
+ \ || (exists('g:load_doxygen_syntax') && g:load_doxygen_syntax)
+ \ | runtime! syntax/doxygen.vim
+ \ | endif
+
+
+" Source the user-specified syntax highlighting file
+if exists("mysyntaxfile")
+ let s:fname = expand(mysyntaxfile)
+ if filereadable(s:fname)
+ execute "source " . fnameescape(s:fname)
+ endif
+endif
+
+" Restore 'cpoptions'
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/syntax.vim b/runtime/syntax/syntax.vim
new file mode 100644
index 0000000..55a2ee6
--- /dev/null
+++ b/runtime/syntax/syntax.vim
@@ -0,0 +1,44 @@
+" Vim syntax support file
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last Change: 2022 Apr 12
+
+" This file is used for ":syntax on".
+" It installs the autocommands and starts highlighting for all buffers.
+
+if !has("syntax")
+ finish
+endif
+
+" If Syntax highlighting appears to be on already, turn it off first, so that
+" any leftovers are cleared.
+if exists("syntax_on") || exists("syntax_manual")
+ so <sfile>:p:h/nosyntax.vim
+endif
+
+" Load the Syntax autocommands and set the default methods for highlighting.
+runtime syntax/synload.vim
+
+" Load the FileType autocommands if not done yet.
+if exists("did_load_filetypes")
+ let s:did_ft = 1
+else
+ filetype on
+ let s:did_ft = 0
+endif
+
+" Set up the connection between FileType and Syntax autocommands.
+" This makes the syntax automatically set when the file type is detected.
+" Avoid an error when 'verbose' is set and <amatch> expansion fails.
+augroup syntaxset
+ au! FileType * 0verbose exe "set syntax=" . expand("<amatch>")
+augroup END
+
+
+" Execute the syntax autocommands for the each buffer.
+" If the filetype wasn't detected yet, do that now.
+" Always do the syntaxset autocommands, for buffers where the 'filetype'
+" already was set manually (e.g., help buffers).
+doautoall syntaxset FileType
+if !s:did_ft
+ doautoall filetypedetect BufRead
+endif
diff --git a/runtime/syntax/sysctl.vim b/runtime/syntax/sysctl.vim
new file mode 100644
index 0000000..d99ac01
--- /dev/null
+++ b/runtime/syntax/sysctl.vim
@@ -0,0 +1,39 @@
+" Vim syntax file
+" Language: sysctl.conf(5) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2011-05-02
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match sysctlBegin display '^'
+ \ nextgroup=sysctlToken,sysctlComment skipwhite
+
+syn match sysctlToken contained display '[^=]\+'
+ \ nextgroup=sysctlTokenEq skipwhite
+
+syn match sysctlTokenEq contained display '=' nextgroup=sysctlValue skipwhite
+
+syn region sysctlValue contained display oneline
+ \ matchgroup=sysctlValue start='\S'
+ \ matchgroup=Normal end='\s*$'
+
+syn keyword sysctlTodo contained TODO FIXME XXX NOTE
+
+syn region sysctlComment display oneline start='^\s*[#;]' end='$'
+ \ contains=sysctlTodo,@Spell
+
+hi def link sysctlTodo Todo
+hi def link sysctlComment Comment
+hi def link sysctlToken Identifier
+hi def link sysctlTokenEq Operator
+hi def link sysctlValue String
+
+let b:current_syntax = "sysctl"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/systemd.vim b/runtime/syntax/systemd.vim
new file mode 100644
index 0000000..5dfba74
--- /dev/null
+++ b/runtime/syntax/systemd.vim
@@ -0,0 +1,8 @@
+" Vim syntax file
+" Language: systemd.unit(5)
+
+if !exists('b:current_syntax')
+ " Looks a lot like dosini files.
+ runtime! syntax/dosini.vim
+ let b:current_syntax = 'systemd'
+endif
diff --git a/runtime/syntax/systemverilog.vim b/runtime/syntax/systemverilog.vim
new file mode 100644
index 0000000..f99ea8d
--- /dev/null
+++ b/runtime/syntax/systemverilog.vim
@@ -0,0 +1,85 @@
+" Vim syntax file
+" Language: SystemVerilog
+" Maintainer: kocha <kocha.lsifrontend@gmail.com>
+" Last Change: 12-Aug-2013.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read in Verilog syntax files
+runtime! syntax/verilog.vim
+unlet b:current_syntax
+
+" IEEE1800-2005
+syn keyword systemverilogStatement always_comb always_ff always_latch
+syn keyword systemverilogStatement class endclass new
+syn keyword systemverilogStatement virtual local const protected
+syn keyword systemverilogStatement package endpackage
+syn keyword systemverilogStatement rand randc constraint randomize
+syn keyword systemverilogStatement with inside dist
+syn keyword systemverilogStatement sequence endsequence randsequence
+syn keyword systemverilogStatement srandom
+syn keyword systemverilogStatement logic bit byte
+syn keyword systemverilogStatement int longint shortint
+syn keyword systemverilogStatement struct packed
+syn keyword systemverilogStatement final
+syn keyword systemverilogStatement import export
+syn keyword systemverilogStatement context pure
+syn keyword systemverilogStatement void shortreal chandle string
+syn keyword systemverilogStatement clocking endclocking iff
+syn keyword systemverilogStatement interface endinterface modport
+syn keyword systemverilogStatement cover covergroup coverpoint endgroup
+syn keyword systemverilogStatement property endproperty
+syn keyword systemverilogStatement program endprogram
+syn keyword systemverilogStatement bins binsof illegal_bins ignore_bins
+syn keyword systemverilogStatement alias matches solve static assert
+syn keyword systemverilogStatement assume super before expect bind
+syn keyword systemverilogStatement extends null tagged extern this
+syn keyword systemverilogStatement first_match throughout timeprecision
+syn keyword systemverilogStatement timeunit type union
+syn keyword systemverilogStatement uwire var cross ref wait_order intersect
+syn keyword systemverilogStatement wildcard within
+
+syn keyword systemverilogTypeDef typedef enum
+
+syn keyword systemverilogConditional randcase
+syn keyword systemverilogConditional unique priority
+
+syn keyword systemverilogRepeat return break continue
+syn keyword systemverilogRepeat do foreach
+
+syn keyword systemverilogLabel join_any join_none forkjoin
+
+" IEEE1800-2009 add
+syn keyword systemverilogStatement checker endchecker
+syn keyword systemverilogStatement accept_on reject_on
+syn keyword systemverilogStatement sync_accept_on sync_reject_on
+syn keyword systemverilogStatement eventually nexttime until until_with
+syn keyword systemverilogStatement s_always s_eventually s_nexttime s_until s_until_with
+syn keyword systemverilogStatement let untyped
+syn keyword systemverilogStatement strong weak
+syn keyword systemverilogStatement restrict global implies
+
+syn keyword systemverilogConditional unique0
+
+" IEEE1800-2012 add
+syn keyword systemverilogStatement implements
+syn keyword systemverilogStatement interconnect soft nettype
+
+" Define the default highlighting.
+
+" The default highlighting.
+hi def link systemverilogStatement Statement
+hi def link systemverilogTypeDef TypeDef
+hi def link systemverilogConditional Conditional
+hi def link systemverilogRepeat Repeat
+hi def link systemverilogLabel Label
+hi def link systemverilogGlobal Define
+hi def link systemverilogNumber Number
+
+
+let b:current_syntax = "systemverilog"
+
+" vim: ts=8
diff --git a/runtime/syntax/tads.vim b/runtime/syntax/tads.vim
new file mode 100644
index 0000000..23a65b9
--- /dev/null
+++ b/runtime/syntax/tads.vim
@@ -0,0 +1,171 @@
+" Vim syntax file
+" Language: TADS
+" Maintainer: Amir Karger <karger@post.harvard.edu>
+" $Date: 2004/06/13 19:28:45 $
+" $Revision: 1.1 $
+" Stolen from: Bram Moolenaar's C language file
+" Newest version at: http://www.hec.utah.edu/~karger/vim/syntax/tads.vim
+" History info at the bottom of the file
+
+" TODO lots more keywords
+" global, self, etc. are special *objects*, not functions. They should
+" probably be a different color than the special functions
+" Actually, should cvtstr etc. be functions?! (change tadsFunction)
+" Make global etc. into Identifiers, since we don't have regular variables?
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" A bunch of useful keywords
+syn keyword tadsStatement goto break return continue pass
+syn keyword tadsLabel case default
+syn keyword tadsConditional if else switch
+syn keyword tadsRepeat while for do
+syn keyword tadsStorageClass local compoundWord formatstring specialWords
+syn keyword tadsBoolean nil true
+
+" TADS keywords
+syn keyword tadsKeyword replace modify
+syn keyword tadsKeyword global self inherited
+" builtin functions
+syn keyword tadsKeyword cvtstr cvtnum caps lower upper substr
+syn keyword tadsKeyword say length
+syn keyword tadsKeyword setit setscore
+syn keyword tadsKeyword datatype proptype
+syn keyword tadsKeyword car cdr
+syn keyword tadsKeyword defined isclass
+syn keyword tadsKeyword find firstobj nextobj
+syn keyword tadsKeyword getarg argcount
+syn keyword tadsKeyword input yorn askfile
+syn keyword tadsKeyword rand randomize
+syn keyword tadsKeyword restart restore quit save undo
+syn keyword tadsException abort exit exitobj
+
+syn keyword tadsTodo contained TODO FIXME XXX
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match tadsSpecial contained "\\."
+syn region tadsDoubleString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tadsSpecial,tadsEmbedded
+syn region tadsSingleString start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=tadsSpecial
+" Embedded expressions in strings
+syn region tadsEmbedded contained start="<<" end=">>" contains=tadsKeyword
+
+" TADS doesn't have \xxx, right?
+"syn match cSpecial contained "\\[0-7][0-7][0-7]\=\|\\."
+"syn match cSpecialCharacter "'\\[0-7][0-7]'"
+"syn match cSpecialCharacter "'\\[0-7][0-7][0-7]'"
+
+"catch errors caused by wrong parenthesis
+"syn region cParen transparent start='(' end=')' contains=ALLBUT,cParenError,cIncluded,cSpecial,cTodo,cUserCont,cUserLabel
+"syn match cParenError ")"
+"syn match cInParen contained "[{}]"
+syn region tadsBrace transparent start='{' end='}' contains=ALLBUT,tadsBraceError,tadsIncluded,tadsSpecial,tadsTodo
+syn match tadsBraceError "}"
+
+"integer number (TADS has no floating point numbers)
+syn case ignore
+syn match tadsNumber "\<[0-9]\+\>"
+"hex number
+syn match tadsNumber "\<0x[0-9a-f]\+\>"
+syn match tadsIdentifier "\<[a-z][a-z0-9_$]*\>"
+syn case match
+" flag an octal number with wrong digits
+syn match tadsOctalError "\<0[0-7]*[89]"
+
+" Removed complicated c_comment_strings
+syn region tadsComment start="/\*" end="\*/" contains=tadsTodo
+syn match tadsComment "//.*" contains=tadsTodo
+syntax match tadsCommentError "\*/"
+
+syn region tadsPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=tadsComment,tadsString,tadsNumber,tadsCommentError
+syn region tadsIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match tadsIncluded contained "<[^>]*>"
+syn match tadsInclude "^\s*#\s*include\>\s*["<]" contains=tadsIncluded
+syn region tadsDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,tadsPreCondit,tadsIncluded,tadsInclude,tadsDefine,tadsInBrace,tadsIdentifier
+
+syn region tadsPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,tadsPreCondit,tadsIncluded,tadsInclude,tadsDefine,tadsInParen,tadsIdentifier
+
+" Highlight User Labels
+" TODO labels for gotos?
+"syn region cMulti transparent start='?' end=':' contains=ALLBUT,cIncluded,cSpecial,cTodo,cUserCont,cUserLabel,cBitField
+" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
+"syn match cUserCont "^\s*\I\i*\s*:$" contains=cUserLabel
+"syn match cUserCont ";\s*\I\i*\s*:$" contains=cUserLabel
+"syn match cUserCont "^\s*\I\i*\s*:[^:]" contains=cUserLabel
+"syn match cUserCont ";\s*\I\i*\s*:[^:]" contains=cUserLabel
+
+"syn match cUserLabel "\I\i*" contained
+
+" identifier: class-name [, class-name [...]] [property-list] ;
+" Don't highlight comment in class def
+syn match tadsClassDef "\<class\>[^/]*" contains=tadsObjectDef,tadsClass
+syn match tadsClass contained "\<class\>"
+syn match tadsObjectDef "\<[a-zA-Z][a-zA-Z0-9_$]*\s*:\s*[a-zA-Z0-9_$]\+\(\s*,\s*[a-zA-Z][a-zA-Z0-9_$]*\)*\(\s*;\)\="
+syn keyword tadsFunction contained function
+syn match tadsFunctionDef "\<[a-zA-Z][a-zA-Z0-9_$]*\s*:\s*function[^{]*" contains=tadsFunction
+"syn region tadsObject transparent start = '[a-zA-Z][\i$]\s*:\s*' end=";" contains=tadsBrace,tadsObjectDef
+
+" How far back do we go to find matching groups
+if !exists("tads_minlines")
+ let tads_minlines = 15
+endif
+exec "syn sync ccomment tadsComment minlines=" . tads_minlines
+if !exists("tads_sync_dist")
+ let tads_sync_dist = 100
+endif
+execute "syn sync maxlines=" . tads_sync_dist
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later
+hi def link tadsFunctionDef Function
+hi def link tadsFunction Structure
+hi def link tadsClass Structure
+hi def link tadsClassDef Identifier
+hi def link tadsObjectDef Identifier
+" no highlight for tadsEmbedded, so it prints as normal text w/in the string
+
+hi def link tadsOperator Operator
+hi def link tadsStructure Structure
+hi def link tadsTodo Todo
+hi def link tadsLabel Label
+hi def link tadsConditional Conditional
+hi def link tadsRepeat Repeat
+hi def link tadsException Exception
+hi def link tadsStatement Statement
+hi def link tadsStorageClass StorageClass
+hi def link tadsKeyWord Keyword
+hi def link tadsSpecial SpecialChar
+hi def link tadsNumber Number
+hi def link tadsBoolean Boolean
+hi def link tadsDoubleString tadsString
+hi def link tadsSingleString tadsString
+
+hi def link tadsOctalError tadsError
+hi def link tadsCommentError tadsError
+hi def link tadsBraceError tadsError
+hi def link tadsInBrace tadsError
+hi def link tadsError Error
+
+hi def link tadsInclude Include
+hi def link tadsPreProc PreProc
+hi def link tadsDefine Macro
+hi def link tadsIncluded tadsString
+hi def link tadsPreCondit PreCondit
+
+hi def link tadsString String
+hi def link tadsComment Comment
+
+
+
+let b:current_syntax = "tads"
+
+" Changes:
+" 11/18/99 Added a bunch of TADS functions, tadsException
+" 10/22/99 Misspelled Moolenaar (sorry!), c_minlines to tads_minlines
+"
+" vim: ts=8
diff --git a/runtime/syntax/tags.vim b/runtime/syntax/tags.vim
new file mode 100644
index 0000000..4c06dc1
--- /dev/null
+++ b/runtime/syntax/tags.vim
@@ -0,0 +1,31 @@
+" Language: tags
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Last Change: Oct 26, 2016
+" Version: 8
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TAGS
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match tagName "^[^\t]\+" skipwhite nextgroup=tagPath
+syn match tagPath "[^\t]\+" contained skipwhite nextgroup=tagAddr contains=tagBaseFile
+syn match tagBaseFile "[a-zA-Z_]\+[\.a-zA-Z_0-9]*\t"me=e-1 contained
+syn match tagAddr "\d*" contained skipwhite nextgroup=tagComment
+syn region tagAddr matchgroup=tagDelim start="/" skip="\(\\\\\)*\\/" matchgroup=tagDelim end="$\|/" oneline contained skipwhite nextgroup=tagComment
+syn match tagComment ";.*$" contained contains=tagField
+syn match tagComment "^!_TAG_.*$"
+syn match tagField contained "[a-z]*:"
+
+" Define the default highlighting.
+if !exists("skip_drchip_tags_inits")
+ hi def link tagBaseFile PreProc
+ hi def link tagComment Comment
+ hi def link tagDelim Delimiter
+ hi def link tagField Number
+ hi def link tagName Identifier
+ hi def link tagPath PreProc
+endif
+
+let b:current_syntax = "tags"
diff --git a/runtime/syntax/tak.vim b/runtime/syntax/tak.vim
new file mode 100644
index 0000000..7a8fceb
--- /dev/null
+++ b/runtime/syntax/tak.vim
@@ -0,0 +1,119 @@
+" Vim syntax file
+" Language: TAK2, TAK3, TAK2000 thermal modeling input file
+" Maintainer: Adrian Nagle, anagle@ball.com
+" Last Change: 2003 May 11
+" Filenames: *.tak
+" URL: http://www.naglenet.org/vim/syntax/tak.vim
+" MAIN URL: http://www.naglenet.org/vim/
+
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+
+" Ignore case
+syn case ignore
+
+
+
+"
+"
+" Begin syntax definitions for tak input file.
+"
+
+" Force free-form fortran format
+let fortran_free_source=1
+
+" Load FORTRAN syntax file
+runtime! syntax/fortran.vim
+unlet b:current_syntax
+
+
+
+" Define keywords for TAK and TAKOUT
+syn keyword takOptions AUTODAMP CPRINT CSGDUMP GPRINT HPRINT LODTMP
+syn keyword takOptions LOGIC LPRINT NCVPRINT PLOTQ QPRINT QDUMP
+syn keyword takOptions SUMMARY SOLRTN UID DICTIONARIES
+
+syn keyword takRoutine SSITER FWDWRD FWDBCK BCKWRD
+
+syn keyword takControl ABSZRO BACKUP DAMP DTIMEI DTIMEL DTIMEH IFC
+syn keyword takControl MAXTEMP NLOOPS NLOOPT NODELIST OUTPUT PLOT
+syn keyword takControl SCALE SIGMA SSCRIT TIMEND TIMEN TIMEO TRCRIT
+syn keyword takControl PLOT
+
+syn keyword takSolids PLATE CYL
+syn keyword takSolidsArg ID MATNAM NTYPE TEMP XL YL ZL ISTRN ISTRG NNX
+syn keyword takSolidsArg NNY NNZ INCX INCY INCZ IAK IAC DIFF ARITH BOUN
+syn keyword takSolidsArg RMIN RMAX AXMAX NNR NNTHETA INCR INCTHETA END
+
+syn case ignore
+
+syn keyword takMacro fac pstart pstop
+syn keyword takMacro takcommon fstart fstop
+
+syn keyword takIdentifier flq flx gen ncv per sim siv stf stv tvd tvs
+syn keyword takIdentifier tvt pro thm
+
+
+
+" Define matches for TAK
+syn match takFortran "^F[0-9 ]"me=e-1
+syn match takMotran "^M[0-9 ]"me=e-1
+
+syn match takComment "^C.*$"
+syn match takComment "^R.*$"
+syn match takComment "\$.*$"
+
+syn match takHeader "^header[^,]*"
+
+syn match takIncludeFile "include \+[^ ]\+"hs=s+8 contains=fortranInclude
+
+syn match takInteger "-\=\<[0-9]*\>"
+syn match takFloat "-\=\<[0-9]*\.[0-9]*"
+syn match takScientific "-\=\<[0-9]*\.[0-9]*E[-+]\=[0-9]\+\>"
+
+syn match takEndData "END OF DATA"
+
+if exists("thermal_todo")
+ execute 'syn match takTodo ' . '"^'.thermal_todo.'.*$"'
+else
+ syn match takTodo "^?.*$"
+endif
+
+
+
+" Define the default highlighting
+" Only when an item doesn't have highlighting yet
+
+hi def link takMacro Macro
+hi def link takOptions Special
+hi def link takRoutine Type
+hi def link takControl Special
+hi def link takSolids Special
+hi def link takSolidsArg Statement
+hi def link takIdentifier Identifier
+
+hi def link takFortran PreProc
+hi def link takMotran PreProc
+
+hi def link takComment Comment
+hi def link takHeader Typedef
+hi def link takIncludeFile Type
+hi def link takInteger Number
+hi def link takFloat Float
+hi def link takScientific Float
+
+hi def link takEndData Macro
+
+hi def link takTodo Todo
+
+
+
+let b:current_syntax = "tak"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/takcmp.vim b/runtime/syntax/takcmp.vim
new file mode 100644
index 0000000..9426e02
--- /dev/null
+++ b/runtime/syntax/takcmp.vim
@@ -0,0 +1,69 @@
+" Vim syntax file
+" Language: TAK2, TAK3, TAK2000 thermal modeling compare file
+" Maintainer: Adrian Nagle, anagle@ball.com
+" Last Change: 2003 May 11
+" Filenames: *.cmp
+" URL: http://www.naglenet.org/vim/syntax/takcmp.vim
+" MAIN URL: http://www.naglenet.org/vim/
+
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+
+" Ignore case
+syn case ignore
+
+
+
+"
+"
+" Begin syntax definitions for compare files.
+"
+" Define keywords for TAK compare
+ syn keyword takcmpUnit celsius fahrenheit
+
+
+
+" Define matches for TAK compare
+ syn match takcmpTitle "Steady State Temperature Comparison"
+
+ syn match takcmpLabel "Run Date:"
+ syn match takcmpLabel "Run Time:"
+ syn match takcmpLabel "Temp. File \d Units:"
+ syn match takcmpLabel "Filename:"
+ syn match takcmpLabel "Output Units:"
+
+ syn match takcmpHeader "^ *Node\( *File \d\)* *Node Description"
+
+ syn match takcmpDate "\d\d\/\d\d\/\d\d"
+ syn match takcmpTime "\d\d:\d\d:\d\d"
+ syn match takcmpInteger "^ *-\=\<[0-9]*\>"
+ syn match takcmpFloat "-\=\<[0-9]*\.[0-9]*"
+
+
+
+" Define the default highlighting
+" Only when an item doesn't have highlighting yet
+
+hi def link takcmpTitle Type
+hi def link takcmpUnit PreProc
+
+hi def link takcmpLabel Statement
+
+hi def link takcmpHeader takHeader
+
+hi def link takcmpDate Identifier
+hi def link takcmpTime Identifier
+hi def link takcmpInteger Number
+hi def link takcmpFloat Special
+
+
+
+let b:current_syntax = "takcmp"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/takout.vim b/runtime/syntax/takout.vim
new file mode 100644
index 0000000..5e5d360
--- /dev/null
+++ b/runtime/syntax/takout.vim
@@ -0,0 +1,85 @@
+" Vim syntax file
+" Language: TAK2, TAK3, TAK2000 thermal modeling output file
+" Maintainer: Adrian Nagle, anagle@ball.com
+" Last Change: 2003 May 11
+" Filenames: *.out
+" URL: http://www.naglenet.org/vim/syntax/takout.vim
+" MAIN URL: http://www.naglenet.org/vim/
+
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+
+" Ignore case
+syn case match
+
+
+
+" Load TAK syntax file
+runtime! syntax/tak.vim
+unlet b:current_syntax
+
+
+
+"
+"
+" Begin syntax definitions for tak output files.
+"
+
+" Define keywords for TAK output
+syn case match
+
+syn keyword takoutPos ON SI
+syn keyword takoutNeg OFF ENG
+
+
+
+" Define matches for TAK output
+syn match takoutTitle "TAK III"
+syn match takoutTitle "Release \d.\d\d"
+syn match takoutTitle " K & K Associates *Thermal Analysis Kit III *Serial Number \d\d-\d\d\d"
+
+syn match takoutFile ": \w*\.TAK"hs=s+2
+
+syn match takoutInteger "T\=[0-9]*\>"ms=s+1
+
+syn match takoutSectionDelim "[-<>]\{4,}" contains=takoutSectionTitle
+syn match takoutSectionDelim ":\=\.\{4,}:\=" contains=takoutSectionTitle
+syn match takoutSectionTitle "[-<:] \w[0-9A-Za-z_() ]\+ [->:]"hs=s+1,me=e-1
+
+syn match takoutHeaderDelim "=\{5,}"
+syn match takoutHeaderDelim "|\{5,}"
+syn match takoutHeaderDelim "+\{5,}"
+
+syn match takoutLabel "Input File:" contains=takoutFile
+syn match takoutLabel "Begin Solution: Routine"
+
+syn match takoutError "<<< Error >>>"
+
+
+" Define the default highlighting
+" Only when an item doesn't have highlighting yet
+
+hi def link takoutPos Statement
+hi def link takoutNeg PreProc
+hi def link takoutTitle Type
+hi def link takoutFile takIncludeFile
+hi def link takoutInteger takInteger
+
+hi def link takoutSectionDelim Delimiter
+hi def link takoutSectionTitle Exception
+hi def link takoutHeaderDelim SpecialComment
+hi def link takoutLabel Identifier
+
+hi def link takoutError Error
+
+
+
+let b:current_syntax = "takout"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/tap.vim b/runtime/syntax/tap.vim
new file mode 100644
index 0000000..6b00b1d
--- /dev/null
+++ b/runtime/syntax/tap.vim
@@ -0,0 +1,86 @@
+" Vim syntax file
+" Language: Verbose TAP Output
+" Maintainer: Rufus Cable <rufus@threebytesfull.com>
+" Remark: Simple syntax highlighting for TAP output
+" License: Vim License (see :help license)
+" Copyright: (c) 2008-2013 Rufus Cable
+" Last Change: 2020 Mar 15
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match tapTestDiag /^ *#.*/ contains=tapTestTodo
+syn match tapTestTime /^ *\[\d\d:\d\d:\d\d\].*/ contains=tapTestFile
+syn match tapTestFile /\w\+\/[^. ]*/ contained
+syn match tapTestFileWithDot /\w\+\/[^ ]*/ contained
+
+syn match tapTestPlan /^ *\d\+\.\.\d\+$/
+
+" tapTest is a line like 'ok 1', 'not ok 2', 'ok 3 - xxxx'
+syn match tapTest /^ *\(not \)\?ok \d\+.*/ contains=tapTestStatusOK,tapTestStatusNotOK,tapTestLine
+
+" tapTestLine is the line without the ok/not ok status - i.e. number and
+" optional message
+syn match tapTestLine /\d\+\( .*\|$\)/ contains=tapTestNumber,tapTestLoadMessage,tapTestTodo,tapTestSkip contained
+
+" turn ok/not ok messages green/red respectively
+syn match tapTestStatusOK /ok/ contained
+syn match tapTestStatusNotOK /not ok/ contained
+
+" highlight todo tests
+syn match tapTestTodo /\c\(# TODO\|Failed (TODO)\) .*$/ contained contains=tapTestTodoRev
+syn match tapTestTodoRev /\c\<TODO\>/ contained
+
+" highlight skipped tests
+syn match tapTestSkip /\c# skip .*$/ contained contains=tapTestSkipTag
+syn match tapTestSkipTag /\c\(# \)\@<=skip\>/ contained
+
+" look behind so "ok 123" and "not ok 124" match test number
+syn match tapTestNumber /\(ok \)\@<=\d\d*/ contained
+syn match tapTestLoadMessage /\*\*\*.*\*\*\*/ contained contains=tapTestThreeStars,tapTestFileWithDot
+syn match tapTestThreeStars /\*\*\*/ contained
+
+syn region tapTestRegion start=/^ *\(not \)\?ok.*$/me=e+1 end=/^\(\(not \)\?ok\|# Looks like you planned \|All tests successful\|Bailout called\)/me=s-1 fold transparent excludenl
+syn region tapTestResultsOKRegion start=/^\(All tests successful\|Result: PASS\)/ end=/$/
+syn region tapTestResultsNotOKRegion start=/^\(# Looks like you planned \|Bailout called\|# Looks like you failed \|Result: FAIL\)/ end=/$/
+syn region tapTestResultsSummaryRegion start=/^Test Summary Report/ end=/^Files=.*$/ contains=tapTestResultsSummaryHeading,tapTestResultsSummaryNotOK
+
+syn region tapTestResultsSummaryHeading start=/^Test Summary Report/ end=/^-\+$/ contained
+syn region tapTestResultsSummaryNotOK start=/TODO passed:/ end=/$/ contained
+
+syn region tapTestInstructionsRegion start=/\%1l/ end=/^$/
+
+syn sync fromstart
+
+if !exists("did_tapverboseoutput_syntax_inits")
+ let did_tapverboseoutput_syntax_inits = 1
+
+ hi tapTestStatusOK term=bold ctermfg=green guifg=Green
+ hi tapTestStatusNotOK term=reverse ctermfg=black ctermbg=red guifg=Black guibg=Red
+ hi tapTestTodo term=bold ctermfg=yellow ctermbg=black guifg=Yellow guibg=Black
+ hi tapTestTodoRev term=reverse ctermfg=black ctermbg=yellow guifg=Black guibg=Yellow
+ hi tapTestSkip term=bold ctermfg=lightblue guifg=LightBlue
+ hi tapTestSkipTag term=reverse ctermfg=black ctermbg=lightblue guifg=Black guibg=LightBlue
+ hi tapTestTime term=bold ctermfg=blue guifg=Blue
+ hi tapTestFile term=reverse ctermfg=black ctermbg=yellow guibg=Black guifg=Yellow
+ hi tapTestLoadedFile term=bold ctermfg=black ctermbg=cyan guibg=Cyan guifg=Black
+ hi tapTestThreeStars term=reverse ctermfg=blue guifg=Blue
+ hi tapTestPlan term=bold ctermfg=yellow guifg=Yellow
+
+ hi link tapTestFileWithDot tapTestLoadedFile
+ hi link tapTestNumber Number
+ hi link tapTestDiag Comment
+
+ hi tapTestRegion ctermbg=green
+
+ hi tapTestResultsOKRegion ctermbg=green ctermfg=black
+ hi tapTestResultsNotOKRegion ctermbg=red ctermfg=black
+
+ hi tapTestResultsSummaryHeading ctermbg=blue ctermfg=white
+ hi tapTestResultsSummaryNotOK ctermbg=red ctermfg=black
+
+ hi tapTestInstructionsRegion ctermbg=lightmagenta ctermfg=black
+endif
+
+let b:current_syntax="tapVerboseOutput"
diff --git a/runtime/syntax/tar.vim b/runtime/syntax/tar.vim
new file mode 100644
index 0000000..815c221
--- /dev/null
+++ b/runtime/syntax/tar.vim
@@ -0,0 +1,19 @@
+" Language : Tar Listing Syntax
+" Maintainer : Bram Moolenaar
+" Last change: Sep 08, 2004
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match tarComment '^".*' contains=tarFilename
+syn match tarFilename 'tarfile \zs.*' contained
+syn match tarDirectory '.*/$'
+
+hi def link tarComment Comment
+hi def link tarFilename Constant
+hi def link tarDirectory Type
+
+let b:current_syntax = 'tar'
+
+" vim: ts=8
diff --git a/runtime/syntax/taskdata.vim b/runtime/syntax/taskdata.vim
new file mode 100644
index 0000000..63a8284
--- /dev/null
+++ b/runtime/syntax/taskdata.vim
@@ -0,0 +1,45 @@
+" Vim syntax file
+" Language: task data
+" Maintainer: John Florian <jflorian@doubledog.org>
+" Updated: Wed Jul 8 19:46:20 EDT 2009
+
+
+" quit when a syntax file was already loaded.
+if exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+" Key Names for values.
+syn keyword taskdataKey description due end entry imask mask parent
+syn keyword taskdataKey priority project recur start status tags uuid
+syn match taskdataKey "annotation_\d\+"
+syn match taskdataUndo "^time.*$"
+syn match taskdataUndo "^\(old \|new \|---\)"
+
+" Values associated with key names.
+"
+" Strings
+syn region taskdataString matchgroup=Normal start=+"+ end=+"+
+ \ contains=taskdataEncoded,taskdataUUID,@Spell
+"
+" Special Embedded Characters (e.g., "&comma;")
+syn match taskdataEncoded "&\a\+;" contained
+" UUIDs
+syn match taskdataUUID "\x\{8}-\(\x\{4}-\)\{3}\x\{12}" contained
+
+
+" The default methods for highlighting. Can be overridden later.
+hi def link taskdataEncoded Function
+hi def link taskdataKey Statement
+hi def link taskdataString String
+hi def link taskdataUUID Special
+hi def link taskdataUndo Type
+
+let b:current_syntax = "taskdata"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim:noexpandtab
diff --git a/runtime/syntax/taskedit.vim b/runtime/syntax/taskedit.vim
new file mode 100644
index 0000000..d33ca78
--- /dev/null
+++ b/runtime/syntax/taskedit.vim
@@ -0,0 +1,37 @@
+" Vim syntax file
+" Language: support for 'task 42 edit'
+" Maintainer: John Florian <jflorian@doubledog.org>
+" Updated: Wed Jul 8 19:46:32 EDT 2009
+
+
+" quit when a syntax file was already loaded.
+if exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+syn match taskeditHeading "^\s*#\s*Name\s\+Editable details\s*$" contained
+syn match taskeditHeading "^\s*#\s*-\+\s\+-\+\s*$" contained
+syn match taskeditReadOnly "^\s*#\s*\(UU\)\?ID:.*$" contained
+syn match taskeditReadOnly "^\s*#\s*Status:.*$" contained
+syn match taskeditReadOnly "^\s*#\s*i\?Mask:.*$" contained
+syn match taskeditKey "^ *.\{-}:" nextgroup=taskeditString
+syn match taskeditComment "^\s*#.*$"
+ \ contains=taskeditReadOnly,taskeditHeading
+syn match taskeditString ".*$" contained contains=@Spell
+
+
+" The default methods for highlighting. Can be overridden later.
+hi def link taskeditComment Comment
+hi def link taskeditHeading Function
+hi def link taskeditKey Statement
+hi def link taskeditReadOnly Special
+hi def link taskeditString String
+
+let b:current_syntax = "taskedit"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim:noexpandtab
diff --git a/runtime/syntax/tasm.vim b/runtime/syntax/tasm.vim
new file mode 100644
index 0000000..1d6e570
--- /dev/null
+++ b/runtime/syntax/tasm.vim
@@ -0,0 +1,115 @@
+" Vim syntax file
+" Language: TASM: turbo assembler by Borland
+" Maintaner: FooLman of United Force <foolman@bigfoot.com>
+" Last Change: 2012 Feb 03 by Thilo Six, and 2018 Nov 27.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case ignore
+syn match tasmLabel "^[\ \t]*[@a-z_$][a-z0-9_$@]*\ *:"
+syn keyword tasmDirective ALIAS ALIGN ARG ASSUME %BIN CATSRT CODESEG
+syn match tasmDirective "\<\(byte\|word\|dword\|qword\)\ ptr\>"
+" CALL extended syntax
+syn keyword tasmDirective COMM %CONDS CONST %CREF %CREFALL %CREFREF
+syn keyword tasmDirective %CREFUREF %CTLS DATASEG DB DD %DEPTH DF DISPLAY
+syn keyword tasmDirective DOSSEG DP DQ DT DW ELSE EMUL END ENDIF
+" IF XXXX
+syn keyword tasmDirective ENDM ENDP ENDS ENUM EQU ERR EVEN EVENDATA EXITCODE
+syn keyword tasmDirective EXITM EXTRN FARDATA FASTIMUL FLIPFLAG GETFIELD GLOBAL
+syn keyword tasmDirective GOTO GROUP IDEAL %INCL INCLUDE INCLUDELIB INSTR IRP
+"JMP
+syn keyword tasmDirective IRPC JUMPS LABEL LARGESTACK %LINUM %LIST LOCAL
+syn keyword tasmDirective LOCALS MACRO %MACS MASKFLAG MASM MASM51 MODEL
+syn keyword tasmDirective MULTERRS NAME %NEWPAGE %NOCONDS %NOCREF %NOCTLS
+syn keyword tasmDirective NOEMUL %NOINCL NOJUMPS %NOLIST NOLOCALS %NOMACS
+syn keyword tasmDirective NOMASM51 NOMULTERRS NOSMART %NOSYMS %NOTRUNC NOWARN
+syn keyword tasmDirective %PAGESIZE %PCNT PNO87 %POPLCTL POPSTATE PROC PROCDESC
+syn keyword tasmDirective PROCTYPE PUBLIC PUBLICDLL PURGE %PUSHCTL PUSHSTATE
+"rept, ret
+syn keyword tasmDirective QUIRKS RADIX RECORD RETCODE SEGMENT SETFIELD
+syn keyword tasmDirective SETFLAG SIZESTR SMALLSTACK SMART STACK STARTUPCODE
+syn keyword tasmDirective STRUC SUBSTR %SUBTTL %SYMS TABLE %TABSIZE TBLINIT
+syn keyword tasmDirective TBLINST TBLPTR TESTFLAG %TEXT %TITLE %TRUNC TYPEDEF
+syn keyword tasmDirective UDATASEG UFARDATA UNION USES VERSION WAR WHILE ?DEBUG
+
+syn keyword tasmInstruction AAA AAD AAM AAS ADC ADD AND ARPL BOUND BSF BSR
+syn keyword tasmInstruction BSWAP BT BTC BTR BTS CALL CBW CLC CLD CLI CLTS
+syn keyword tasmInstruction CMC CMP CMPXCHG CMPXCHG8B CPUID CWD CDQ CWDE
+syn keyword tasmInstruction DAA DAS DEC DIV ENTER RETN RETF F2XM1
+syn keyword tasmCoprocInstr FABS FADD FADDP FBLD FBSTP FCHG FCOM FCOM2 FCOMI
+syn keyword tasmCoprocInstr FCOMIP FCOMP FCOMP3 FCOMP5 FCOMPP FCOS FDECSTP
+syn keyword tasmCoprocInstr FDISI FDIV FDIVP FDIVR FENI FFREE FFREEP FIADD
+syn keyword tasmCoprocInstr FICOM FICOMP FIDIV FIDIVR FILD FIMUL FINIT FINCSTP
+syn keyword tasmCoprocInstr FIST FISTP FISUB FISUBR FLD FLD1 FLDCW FLDENV
+syn keyword tasmCoprocInstr FLDL2E FLDL2T FLDLG2 FLDLN2 FLDPI FLDZ FMUL FMULP
+syn keyword tasmCoprocInstr FNCLEX FNINIT FNOP FNSAVE FNSTCW FNSTENV FNSTSW
+syn keyword tasmCoprocInstr FPATAN FPREM FPREM1 FPTAN FRNDINT FRSTOR FSCALE
+syn keyword tasmCoprocInstr FSETPM FSIN FSINCOM FSQRT FST FSTP FSTP1 FSTP8
+syn keyword tasmCoprocInstr FSTP9 FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMI
+syn keyword tasmCoprocInstr FUCOMPP FWAIT FXAM FXCH FXCH4 FXCH7 FXTRACT FYL2X
+syn keyword tasmCoprocInstr FYL2XP1 FSTCW FCHS FSINCOS
+syn keyword tasmInstruction IDIV IMUL IN INC INT INTO INVD INVLPG IRET JMP
+syn keyword tasmInstruction LAHF LAR LDS LEA LEAVE LES LFS LGDT LGS LIDT LLDT
+syn keyword tasmInstruction LMSW LOCK LODSB LSL LSS LTR MOV MOVSX MOVZX MUL
+syn keyword tasmInstruction NEG NOP NOT OR OUT POP POPA POPAD POPF POPFD PUSH
+syn keyword tasmInstruction PUSHA PUSHAD PUSHF PUSHFD RCL RCR RDMSR RDPMC RDTSC
+syn keyword tasmInstruction REP RET ROL ROR RSM SAHF SAR SBB SGDT SHL SAL SHLD
+syn keyword tasmInstruction SHR SHRD SIDT SMSW STC STD STI STR SUB TEST VERR
+syn keyword tasmInstruction VERW WBINVD WRMSR XADD XCHG XLAT XOR
+syn keyword tasmMMXinst EMMS MOVD MOVQ PACKSSDW PACKSSWB PACKUSWB PADDB
+syn keyword tasmMMXinst PADDD PADDSB PADDSB PADDSW PADDUSB PADDUSW PADDW
+syn keyword tasmMMXinst PAND PANDN PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD
+syn keyword tasmMMXinst PCMPGTW PMADDWD PMULHW PMULLW POR PSLLD PSLLQ
+syn keyword tasmMMXinst PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW PSUBB PSUBD
+syn keyword tasmMMXinst PSUBSB PSUBSW PSUBUSB PSUBUSW PSUBW PUNPCKHBW
+syn keyword tasmMMXinst PUNPCKHBQ PUNPCKHWD PUNPCKLBW PUNPCKLDQ PUNPCKLWD
+syn keyword tasmMMXinst PXOR
+"FCMOV
+syn match tasmInstruction "\<\(CMPS\|MOVS\|OUTS\|SCAS\|STOS\|LODS\|INS\)[BWD]"
+syn match tasmInstruction "\<\(CMOV\|SET\|J\)N\=[ABCGLESXZ]\>"
+syn match tasmInstruction "\<\(CMOV\|SET\|J\)N\=[ABGL]E\>"
+syn match tasmInstruction "\<\(LOOP\|REP\)N\=[EZ]\=\>"
+syn match tasmRegister "\<[A-D][LH]\>"
+syn match tasmRegister "\<E\=\([A-D]X\|[SD]I\|[BS]P\)\>"
+syn match tasmRegister "\<[C-GS]S\>"
+syn region tasmComment start=";" end="$"
+"HACK! comment ? ... selection
+syn region tasmComment start="comment \+\$" end="\$"
+syn region tasmComment start="comment \+\~" end="\~"
+syn region tasmComment start="comment \+#" end="#"
+syn region tasmString start="'" end="'"
+syn region tasmString start='"' end='"'
+
+syn match tasmDec "\<-\=[0-9]\+\.\=[0-9]*\>"
+syn match tasmHex "\<[0-9][0-9A-F]*H\>"
+syn match tasmOct "\<[0-7]\+O\>"
+syn match tasmBin "\<[01]\+B\>"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link tasmString String
+hi def link tasmDec Number
+hi def link tasmHex Number
+hi def link tasmOct Number
+hi def link tasmBin Number
+hi def link tasmInstruction Keyword
+hi def link tasmCoprocInstr Keyword
+hi def link tasmMMXInst Keyword
+hi def link tasmDirective PreProc
+hi def link tasmRegister Identifier
+hi def link tasmProctype PreProc
+hi def link tasmComment Comment
+hi def link tasmLabel Label
+
+
+let b:current_syntax = "tasm"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/tcl.vim b/runtime/syntax/tcl.vim
new file mode 100644
index 0000000..59cb04f
--- /dev/null
+++ b/runtime/syntax/tcl.vim
@@ -0,0 +1,274 @@
+" Vim syntax file
+" Language: Tcl/Tk
+" Maintainer: Taylor Venable <taylor@metasyntax.net>
+" (previously Brett Cannon <brett@python.org>)
+" (previously Dean Copsey <copsey@cs.ucdavis.edu>)
+" (previously Matt Neumann <mattneu@purpleturtle.com>)
+" (previously Allan Kelly <allan@fruitloaf.co.uk>)
+" Original: Robin Becker <robin@jessikat.demon.co.uk>
+" Last Change: 2021 Nov 16
+" Version: 1.14 plus improvements from PR #8948
+" URL: (removed, no longer worked)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Basic Tcl commands: http://www.tcl.tk/man/tcl8.6/TclCmd/contents.htm
+syn keyword tclCommand after append array bgerror binary cd chan clock close concat
+syn keyword tclCommand dde dict encoding eof error eval exec exit expr fblocked
+syn keyword tclCommand fconfigure fcopy file fileevent flush format gets glob
+syn keyword tclCommand global history http incr info interp join lappend lassign
+syn keyword tclCommand lindex linsert list llength lmap load lrange lrepeat
+syn keyword tclCommand lreplace lreverse lsearch lset lsort memory my namespace
+syn keyword tclCommand next nextto open package pid puts pwd read refchan regexp
+syn keyword tclCommand registry regsub rename scan seek self set socket source
+syn keyword tclCommand split string subst tell time trace unknown unload unset
+syn keyword tclCommand update uplevel upvar variable vwait
+
+" The 'Tcl Standard Library' commands: http://www.tcl.tk/man/tcl8.6/TclCmd/library.htm
+syn keyword tclCommand auto_execok auto_import auto_load auto_mkindex auto_reset
+syn keyword tclCommand auto_qualify tcl_findLibrary parray tcl_endOfWord
+syn keyword tclCommand tcl_startOfNextWord tcl_startOfPreviousWord
+syn keyword tclCommand tcl_wordBreakAfter tcl_wordBreakBefore
+
+" Global variables used by Tcl: http://www.tcl.tk/man/tcl8.6/TclCmd/tclvars.htm
+syn keyword tclVars auto_path env errorCode errorInfo tcl_library tcl_patchLevel
+syn keyword tclVars tcl_pkgPath tcl_platform tcl_precision tcl_rcFileName
+syn keyword tclVars tcl_traceCompile tcl_traceExec tcl_wordchars
+syn keyword tclVars tcl_nonwordchars tcl_version argc argv argv0 tcl_interactive
+
+" Strings which expr accepts as boolean values, aside from zero / non-zero.
+syn keyword tclBoolean true false on off yes no
+
+syn keyword tclProcCommand apply coroutine proc return tailcall yield yieldto
+syn keyword tclConditional if then else elseif switch
+syn keyword tclConditional catch try throw finally
+syn keyword tclLabel default
+syn keyword tclRepeat while for foreach break continue
+
+syn keyword tcltkSwitch contained insert create polygon fill outline tag
+
+" WIDGETS
+" commands associated with widgets
+syn keyword tcltkWidgetSwitch contained background highlightbackground insertontime cget
+syn keyword tcltkWidgetSwitch contained selectborderwidth borderwidth highlightcolor insertwidth
+syn keyword tcltkWidgetSwitch contained selectforeground cursor highlightthickness padx setgrid
+syn keyword tcltkWidgetSwitch contained exportselection insertbackground pady takefocus
+syn keyword tcltkWidgetSwitch contained font insertborderwidth relief xscrollcommand
+syn keyword tcltkWidgetSwitch contained foreground insertofftime selectbackground yscrollcommand
+syn keyword tcltkWidgetSwitch contained height spacing1 spacing2 spacing3
+syn keyword tcltkWidgetSwitch contained state tabs width wrap
+" button
+syn keyword tcltkWidgetSwitch contained command default
+" canvas
+syn keyword tcltkWidgetSwitch contained closeenough confine scrollregion xscrollincrement yscrollincrement orient
+" checkbutton, radiobutton
+syn keyword tcltkWidgetSwitch contained indicatoron offvalue onvalue selectcolor selectimage state variable
+" entry, frame
+syn keyword tcltkWidgetSwitch contained show class colormap container visual
+" listbox, menu
+syn keyword tcltkWidgetSwitch contained selectmode postcommand selectcolor tearoff tearoffcommand title type
+" menubutton, message
+syn keyword tcltkWidgetSwitch contained direction aspect justify
+" scale
+syn keyword tcltkWidgetSwitch contained bigincrement digits from length resolution showvalue sliderlength sliderrelief tickinterval to
+" scrollbar
+syn keyword tcltkWidgetSwitch contained activerelief elementborderwidth
+" image
+syn keyword tcltkWidgetSwitch contained delete names types create
+" variable reference
+ " ::optional::namespaces
+syn match tclVarRef "$\(\(::\)\?\([[:alnum:]_]*::\)*\)\a[[:alnum:]_]*"
+ " ${...} may contain any character except '}'
+syn match tclVarRef "${[^}]*}"
+
+" Used to facilitate hack to utilize string background for certain color
+" schemes, e.g. inkpot and lettuce.
+syn cluster tclVarRefC add=tclVarRef
+syn cluster tclSpecialC add=tclSpecial
+
+" The syntactic unquote-splicing replacement for [expand].
+syn match tclExpand '\s{\*}'
+syn match tclExpand '^{\*}'
+
+" menu, mane add
+syn keyword tcltkWidgetSwitch contained active end last none cascade checkbutton command radiobutton separator
+syn keyword tcltkWidgetSwitch contained activebackground actveforeground accelerator background bitmap columnbreak
+syn keyword tcltkWidgetSwitch contained font foreground hidemargin image indicatoron label menu offvalue onvalue
+syn keyword tcltkWidgetSwitch contained selectcolor selectimage state underline value variable
+syn keyword tcltkWidgetSwitch contained add clone configure delete entrycget entryconfigure index insert invoke
+syn keyword tcltkWidgetSwitch contained post postcascade type unpost yposition activate
+"syn keyword tcltkWidgetSwitch contained
+"syn match tcltkWidgetSwitch contained
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<button\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<scale\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<canvas\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<checkbutton\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<entry\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<frame\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<image\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<listbox\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<menubutton\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<message\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<radiobutton\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<scrollbar\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+" These words are dual purpose.
+" match switches
+"syn match tcltkWidgetSwitch contained "-text"hs=s+1
+syn match tcltkWidgetSwitch contained "-text\(var\)\?"hs=s+1
+syn match tcltkWidgetSwitch contained "-menu"hs=s+1
+syn match tcltkWidgetSwitch contained "-label"hs=s+1
+" match commands - 2 lines for pretty match.
+"variable
+" Special case - If a number follows a variable region, it must be at the end of
+" the pattern, by definition. Therefore, (1) either include a number as the region
+" end and exclude tclNumber from the contains list, or (2) make variable
+" keepend. As (1) would put variable out of step with everything else, use (2).
+syn region tcltkCommand matchgroup=tcltkCommandColor start="^\<variable\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tclString,tclNumber,tclVarRef,tcltkCommand
+syn region tcltkCommand matchgroup=tcltkCommandColor start="\s\<variable\>\|\[\<variable\>"hs=s+1 matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tclString,tclNumber,tclVarRef,tcltkCommand
+" menu
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="^\<menu\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="\s\<menu\>\|\[\<menu\>"hs=s+1 matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+" label
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="^\<label\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="\s\<label\>\|\[\<label\>"hs=s+1 matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+" text
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="^\<text\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidget,tcltkWidgetSwitch,tcltkSwitch,tclNumber,tclVarRef,tclString
+syn region tcltkWidget matchgroup=tcltkWidgetColor start="\s\<text\>\|\[\<text\>"hs=s+1 matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidget,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef
+
+" This isn't contained (I don't think) so it's OK to just associate with the Color group.
+" TODO: This could be wrong.
+syn keyword tcltkWidgetColor toplevel
+
+
+syn region tcltkPackConf matchgroup=tcltkPackConfColor start="\<configure\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tcltkPackConfSwitch,tclNumber,tclVarRef keepend
+syn region tcltkPackConf matchgroup=tcltkPackConfColor start="\<cget\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tcltkPackConfSwitch,tclNumber,tclVarRef
+
+
+" NAMESPACE
+" commands associated with namespace
+syn keyword tcltkNamespaceSwitch contained children code current delete eval
+syn keyword tcltkNamespaceSwitch contained export forget import inscope origin
+syn keyword tcltkNamespaceSwitch contained parent qualifiers tail which command variable
+syn region tcltkCommand matchgroup=tcltkCommandColor start="\<namespace\>" matchgroup=NONE skip="^\s*$" end="{\|}\|]\|\"\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkNamespaceSwitch
+
+" EXPR
+" commands associated with expr
+syn keyword tcltkMaths contained abs acos asin atan atan2 bool ceil cos cosh double entier
+syn keyword tcltkMaths contained exp floor fmod hypot int isqrt log log10 max min pow rand
+syn keyword tcltkMaths contained round sin sinh sqrt srand tan tanh wide
+
+syn region tcltkCommand matchgroup=tcltkCommandColor start="\<expr\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkMaths,tclNumber,tclVarRef,tclString,tcltlWidgetSwitch,tcltkCommand,tcltkPackConf
+
+" format
+syn region tcltkCommand matchgroup=tcltkCommandColor start="\<format\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkMaths,tclNumber,tclVarRef,tclString,tcltlWidgetSwitch,tcltkCommand,tcltkPackConf
+
+" PACK
+" commands associated with pack
+syn keyword tcltkPackSwitch contained forget info propagate slaves
+syn keyword tcltkPackConfSwitch contained after anchor before expand fill in ipadx ipady padx pady side
+syn region tcltkCommand matchgroup=tcltkCommandColor start="\<pack\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkPackSwitch,tcltkPackConf,tcltkPackConfSwitch,tclNumber,tclVarRef,tclString,tcltkCommand keepend
+
+" STRING
+" commands associated with string
+syn keyword tcltkStringSwitch contained compare first index last length match range tolower toupper trim trimleft trimright wordstart wordend
+syn region tcltkCommand matchgroup=tcltkCommandColor start="\<string\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkStringSwitch,tclNumber,tclVarRef,tclString,tcltkCommand
+
+" ARRAY
+" commands associated with array
+syn keyword tcltkArraySwitch contained anymore donesearch exists get names nextelement size startsearch set
+" match from command name to ] or EOL
+syn region tcltkCommand matchgroup=tcltkCommandColor start="\<array\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkArraySwitch,tclNumber,tclVarRef,tclString,tcltkCommand
+
+" LSORT
+" switches for lsort
+syn keyword tcltkLsortSwitch contained ascii dictionary integer real command increasing decreasing index
+" match from command name to ] or EOL
+syn region tcltkCommand matchgroup=tcltkCommandColor start="\<lsort\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkLsortSwitch,tclNumber,tclVarRef,tclString,tcltkCommand
+
+syn keyword tclTodo contained TODO
+
+" Sequences which are backslash-escaped: http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm#M16
+" Octal, hexadecimal, Unicode codepoints, and the classics.
+" Tcl takes as many valid characters in a row as it can, so \xAZ in a string is newline followed by 'Z'.
+syn match tclSpecial contained '\\\(\o\{1,3}\|x\x\{1,2}\|u\x\{1,4}\|[abfnrtv]\)'
+syn match tclSpecial contained '\\[\[\]\{\}\"\$]'
+
+" Command appearing inside another command or inside a string.
+syn region tclEmbeddedStatement start='\[' end='\]' contained contains=tclCommand,tclNumber,tclLineContinue,tclString,tclVarRef,tclEmbeddedStatement
+" A string needs the skip argument as it may legitimately contain \".
+" Match at start of line
+syn region tclString start=+^"+ end=+"+ contains=@tclSpecialC,@Spell skip=+\\\\\|\\"+
+"Match all other legal strings.
+syn region tclString start=+[^\\]"+ms=s+1 end=+"+ contains=@tclSpecialC,@tclVarRefC,tclEmbeddedStatement,@Spell skip=+\\\\\|\\"+
+
+" Line continuation is backslash immediately followed by newline.
+syn match tclLineContinue '\\$'
+
+if exists('g:tcl_warn_continuation')
+ syn match tclNotLineContinue '\\\s\+$'
+endif
+
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match tclNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"
+"floating point number, with dot, optional exponent
+syn match tclNumber "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, starting with a dot, optional exponent
+syn match tclNumber "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match tclNumber "\<\d\+e[-+]\=\d\+[fl]\=\>"
+"hex number
+syn match tclNumber "0x\x\+\(u\=l\=\|lu\)\>"
+"syn match tclIdentifier "\<\h\w*\>"
+syn case match
+
+syn region tclComment start="^\s*\#" skip="\\$" end="$" contains=tclTodo,@Spell
+syn region tclComment start=/;\s*\#/hs=s+1 skip="\\$" end="$" contains=tclTodo,@Spell
+
+"syn match tclComment /^\s*\#.*$/
+"syn match tclComment /;\s*\#.*$/hs=s+1
+
+"syn sync ccomment tclComment
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link tcltkSwitch Special
+hi def link tclExpand Special
+hi def link tclLabel Label
+hi def link tclConditional Conditional
+hi def link tclRepeat Repeat
+hi def link tclNumber Number
+hi def link tclError Error
+hi def link tclCommand Statement
+hi def link tclProcCommand Type
+hi def link tclString String
+hi def link tclComment Comment
+hi def link tclSpecial Special
+hi def link tclTodo Todo
+" Below here are the commands and their options.
+hi def link tcltkCommandColor Statement
+hi def link tcltkWidgetColor Structure
+hi def link tclLineContinue WarningMsg
+if exists('g:tcl_warn_continuation')
+hi def link tclNotLineContinue ErrorMsg
+endif
+hi def link tcltkStringSwitch Special
+hi def link tcltkArraySwitch Special
+hi def link tcltkLsortSwitch Special
+hi def link tcltkPackSwitch Special
+hi def link tcltkPackConfSwitch Special
+hi def link tcltkMaths Special
+hi def link tcltkNamespaceSwitch Special
+hi def link tcltkWidgetSwitch Special
+hi def link tcltkPackConfColor Identifier
+hi def link tclVarRef Identifier
+
+
+let b:current_syntax = "tcl"
+
+" vim: ts=8 noet nolist
diff --git a/runtime/syntax/tcsh.vim b/runtime/syntax/tcsh.vim
new file mode 100644
index 0000000..6837125
--- /dev/null
+++ b/runtime/syntax/tcsh.vim
@@ -0,0 +1,255 @@
+" Vim syntax file
+" Language: tcsh scripts
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Gautam Iyer <gi1242+vim@NoSpam.com> where NoSpam=gmail (Original Author)
+" Last Change: 2021 Oct 15
+
+" Description: We break up each statement into a "command" and an "end" part.
+" All groups are either a "command" or part of the "end" of a statement (ie
+" everything after the "command"). This is because blindly highlighting tcsh
+" statements as keywords caused way too many false positives. Eg:
+"
+" set history=200
+"
+" causes history to come up as a keyword, which we want to avoid.
+
+" Quit when a syntax file was already loaded
+if exists('b:current_syntax')
+ finish
+endif
+
+let s:oldcpo = &cpo
+set cpo&vim " Line continuation is used
+
+syn iskeyword @,48-57,_,192-255,-
+
+syn case match
+
+" ----- Clusters ----- {{{1
+syn cluster tcshModifiers contains=tcshModifier,tcshModifierError
+syn cluster tcshQuoteList contains=tcshDQuote,tcshSQuote,tcshBQuote
+syn cluster tcshStatementEnds contains=@tcshQuoteList,tcshComment,@tcshVarList,tcshRedir,tcshMeta,tcshHereDoc,tcshSpecial,tcshArgument
+syn cluster tcshStatements contains=tcshBuiltin,tcshCommands,tcshIf,tcshWhile
+syn cluster tcshVarList contains=tcshUsrVar,tcshArgv,tcshSubst
+syn cluster tcshConditions contains=tcshCmdSubst,tcshParenExpr,tcshOperator,tcshNumber,@tcshVarList
+
+" ----- Errors ----- {{{1
+" Define first, so can be easily overridden.
+syn match tcshError contained '\v\S.+'
+
+" ----- Statements ----- {{{1
+" Tcsh commands: Any filename / modifiable variable (must be first!)
+syn match tcshCommands '\v[a-zA-Z0-9\\./_$:-]+' contains=tcshSpecial,tcshUsrVar,tcshArgv,tcshVarError nextgroup=tcshStatementEnd
+
+" Builtin commands except those treated specially. Currently (un)set(env),
+" (un)alias, if, while, else, bindkey
+syn keyword tcshBuiltin nextgroup=tcshStatementEnd alloc bg break breaksw builtins bye case cd chdir complete continue default dirs echo echotc end endif endsw eval exec exit fg filetest foreach getspath getxvers glob goto hashstat history hup inlib jobs kill limit log login logout ls ls-F migrate newgrp nice nohup notify onintr popd printenv pushd rehash repeat rootnode sched setpath setspath settc setty setxvers shift source stop suspend switch telltc termname time umask uncomplete unhash universe unlimit ver wait warp watchlog where which
+
+" StatementEnd is anything after a built-in / command till the lexical end of a
+" statement (;, |, ||, |&, && or end of line)
+syn region tcshStatementEnd transparent contained matchgroup=tcshBuiltin start='' end='\v\\@<!(;|\|[|&]?|\&\&|$)' contains=@tcshStatementEnds
+
+" set expressions (Contains shell variables)
+syn keyword tcshShellVar contained addsuffix afsuser ampm anyerror argv autocorrect autoexpand autolist autologout autorehash backslash_quote catalog cdpath cdtohome color colorcat command compat_expr complete continue continue_args correct csubstnonl cwd dextract dirsfile dirstack dspmbyte dunique echo echo_style edit editors ellipsis euid euser fignore filec gid globdot globstar group highlight histchars histdup histfile histlit history home ignoreeof implicitcd inputmode killdup killring listflags listjobs listlinks listmax listmaxrows loginsh logout mail matchbeep nobeep noclobber noding noglob nokanji nonomatch nostat notify oid owd padhour parseoctal path printexitvalue prompt prompt2 prompt3 promptchars pushdtohome pushdsilent recexact recognize_only_executables rmstar rprompt savedirs savehist sched shell shlvl status symlinks tcsh term time tperiod tty uid user verbose version vimode visiblebell watch who wordchars
+syn keyword tcshBuiltin nextgroup=tcshSetEnd set unset
+syn region tcshSetEnd contained transparent matchgroup=tcshBuiltin start='' skip='\\$' end='$\|;' contains=tcshShellVar,@tcshStatementEnds
+
+" setenv expressions (Contains environment variables)
+syn keyword tcshEnvVar contained AFSUSER COLUMNS DISPLAY EDITOR GROUP HOME HOST HOSTTYPE HPATH LANG LC_CTYPE LINES LS_COLORS MACHTYPE NOREBIND OSTYPE PATH PWD REMOTEHOST SHLVL SYSTYPE TERM TERMCAP USER VENDOR VISUAL
+syn keyword tcshBuiltin nextgroup=tcshEnvEnd setenv unsetenv
+syn region tcshEnvEnd contained transparent matchgroup=tcshBuiltin start='' skip='\\$' end='$\|;' contains=tcshEnvVar,@tcshStatementEnds
+
+" alias and unalias (contains special aliases)
+syn keyword tcshAliases contained beepcmd cwdcmd jobcmd helpcommand periodic precmd postcmd shell
+syn keyword tcshBuiltin nextgroup=tcshAliCmd skipwhite alias unalias
+syn match tcshAliCmd contained nextgroup=tcshAliEnd skipwhite '\v(\w|-)+' contains=tcshAliases
+syn region tcshAliEnd contained transparent matchgroup=tcshBuiltin start='' skip='\\$' end='$\|;' contains=@tcshStatementEnds
+
+" if statements
+syn keyword tcshIf nextgroup=tcshIfEnd skipwhite if
+syn region tcshIfEnd contained start='\S' skip='\\$' matchgroup=tcshBuiltin end='\v<then>|$' contains=@tcshConditions,tcshSpecial,@tcshStatementEnds
+syn region tcshIfEnd contained matchgroup=tcshBuiltin contains=@tcshConditions,tcshSpecial start='(' end='\v\)%(\s+then>)?' skipwhite nextgroup=@tcshStatementEnds
+syn region tcshIfEnd contained matchgroup=tcshBuiltin contains=tcshCommands,tcshSpecial start='\v\{\s+' end='\v\s+\}%(\s+then>)?' skipwhite nextgroup=@tcshStatementEnds keepend
+
+" else statements
+syn keyword tcshBuiltin nextgroup=tcshIf skipwhite else
+
+" while statements (contains expressions / operators)
+syn keyword tcshBuiltin nextgroup=@tcshConditions,tcshSpecial skipwhite while
+
+" Conditions (for if and while)
+syn region tcshParenExpr contained contains=@tcshConditions,tcshSpecial matchgroup=tcshBuiltin start='(' end=')'
+syn region tcshCmdSubst contained contains=tcshCommands matchgroup=tcshBuiltin start='\v\{\s+' end='\v\s+\}' keepend
+
+" Bindkey. Internal editor functions
+syn keyword tcshBindkeyFuncs contained backward-char backward-delete-char
+ \ backward-delete-word backward-kill-line backward-word
+ \ beginning-of-line capitalize-word change-case
+ \ change-till-end-of-line clear-screen complete-word
+ \ complete-word-fwd complete-word-back complete-word-raw
+ \ copy-prev-word copy-region-as-kill dabbrev-expand delete-char
+ \ delete-char-or-eof delete-char-or-list
+ \ delete-char-or-list-or-eof delete-word digit digit-argument
+ \ down-history downcase-word end-of-file end-of-line
+ \ exchange-point-and-mark expand-glob expand-history expand-line
+ \ expand-variables forward-char forward-word
+ \ gosmacs-transpose-chars history-search-backward
+ \ history-search-forward insert-last-word i-search-fwd
+ \ i-search-back keyboard-quit kill-line kill-region
+ \ kill-whole-line list-choices list-choices-raw list-glob
+ \ list-or-eof load-average magic-space newline newline-and-hold
+ \ newline-and-down-history normalize-path normalize-command
+ \ overwrite-mode prefix-meta quoted-insert redisplay
+ \ run-fg-editor run-help self-insert-command sequence-lead-in
+ \ set-mark-command spell-word spell-line stuff-char
+ \ toggle-literal-history transpose-chars transpose-gosling
+ \ tty-dsusp tty-flush-output tty-sigintr tty-sigquit tty-sigtsusp
+ \ tty-start-output tty-stop-output undefined-key
+ \ universal-argument up-history upcase-word
+ \ vi-beginning-of-next-word vi-add vi-add-at-eol vi-chg-case
+ \ vi-chg-meta vi-chg-to-eol vi-cmd-mode vi-cmd-mode-complete
+ \ vi-delprev vi-delmeta vi-endword vi-eword vi-char-back
+ \ vi-char-fwd vi-charto-back vi-charto-fwd vi-insert
+ \ vi-insert-at-bol vi-repeat-char-fwd vi-repeat-char-back
+ \ vi-repeat-search-fwd vi-repeat-search-back vi-replace-char
+ \ vi-replace-mode vi-search-back vi-search-fwd vi-substitute-char
+ \ vi-substitute-line vi-word-back vi-word-fwd vi-undo vi-zero
+ \ which-command yank yank-pop e_copy_to_clipboard
+ \ e_paste_from_clipboard e_dosify_next e_dosify_prev e_page_up
+ \ e_page_down
+syn keyword tcshBuiltin nextgroup=tcshBindkeyEnd bindkey
+syn region tcshBindkeyEnd contained transparent matchgroup=tcshBuiltin start='' skip='\\$' end='$' contains=@tcshQuoteList,tcshComment,@tcshVarList,tcshMeta,tcshSpecial,tcshArgument,tcshBindkeyFuncs
+
+" Expressions start with @.
+syn match tcshExprStart '\v\@\s+' nextgroup=tcshExprVar
+syn match tcshExprVar contained '\v\h\w*%(\[\d+\])?' contains=tcshShellVar,tcshEnvVar nextgroup=tcshExprOp
+syn match tcshExprOp contained '++\|--'
+syn match tcshExprOp contained '\v\s*\=' nextgroup=tcshExprEnd
+syn match tcshExprEnd contained '\v.*$'hs=e+1 contains=@tcshConditions
+syn match tcshExprEnd contained '\v.{-};'hs=e contains=@tcshConditions
+
+" ----- Comments: ----- {{{1
+syn match tcshComment '#\s.*' contains=tcshTodo,tcshCommentTi,@Spell
+syn match tcshComment '\v#($|\S.*)' contains=tcshTodo,tcshCommentTi
+syn match tcshSharpBang '^#! .*$'
+syn match tcshCommentTi contained '\v#\s*\u\w*(\s+\u\w*)*:'hs=s+1 contains=tcshTodo
+syn match tcshTodo contained '\v\c<todo>'
+
+" ----- Strings ----- {{{1
+" Tcsh does not allow \" in strings unless the "backslash_quote" shell
+" variable is set. Set the vim variable "tcsh_backslash_quote" to 0 if you
+" want VIM to assume that no backslash quote constructs exist.
+
+" Backquotes are treated as commands, and are not contained in anything
+if exists('tcsh_backslash_quote') && tcsh_backslash_quote == 0
+ syn region tcshSQuote keepend contained start="\v\\@<!'" end="'"
+ syn region tcshDQuote keepend contained start='\v\\@<!"' end='"' contains=@tcshVarList,tcshSpecial,@Spell
+ syn region tcshBQuote keepend start='\v\\@<!`' end='`' contains=@tcshStatements
+else
+ syn region tcshSQuote contained start="\v\\@<!'" skip="\v\\\\|\\'" end="'"
+ syn region tcshDQuote contained start='\v\\@<!"' end='"' contains=@tcshVarList,tcshSpecial,@Spell
+ syn region tcshBQuote keepend matchgroup=tcshBQuoteGrp start='\v\\@<!`' skip='\v\\\\|\\`' end='`' contains=@tcshStatements
+endif
+
+" ----- Variables ----- {{{1
+" Variable Errors. Must come first! \$ constructs will be flagged by
+" tcshSpecial, so we don't consider them here.
+syn match tcshVarError '\v\$\S*' contained
+
+" Modifiable Variables without {}.
+syn match tcshUsrVar contained '\v\$\h\w*%(\[\d+%(-\d+)?\])?' nextgroup=@tcshModifiers contains=tcshShellVar,tcshEnvVar
+syn match tcshArgv contained '\v\$%(\d+|\*)' nextgroup=@tcshModifiers
+
+" Modifiable Variables with {}.
+syn match tcshUsrVar contained '\v\$\{\h\w*%(\[\d+%(-\d+)?\])?%(:\S*)?\}' contains=@tcshModifiers,tcshShellVar,tcshEnvVar
+syn match tcshArgv contained '\v\$\{%(\d+|\*)%(:\S*)?\}' contains=@tcshModifiers
+
+" Un-modifiable Substitutions. Order is important here.
+syn match tcshSubst contained '\v\$[?#$!_<]' nextgroup=tcshModifierError
+syn match tcshSubst contained '\v\$[%#?]%(\h\w*|\d+)' nextgroup=tcshModifierError contains=tcshShellVar,tcshEnvVar
+syn match tcshSubst contained '\v\$\{[%#?]%(\h\w*|\d+)%(:\S*)?\}' contains=tcshModifierError contains=tcshShellVar,tcshEnvVar
+
+" Variable Name Expansion Modifiers (order important)
+syn match tcshModifierError contained '\v:\S*'
+syn match tcshModifier contained '\v:[ag]?[htreuls&qx]' nextgroup=@tcshModifiers
+
+" ----- Operators / Specials ----- {{{1
+" Standard redirects (except <<) [<, >, >>, >>&, >>!, >>&!]
+syn match tcshRedir contained '\v\<|\>\>?\&?!?'
+
+" Meta-chars
+syn match tcshMeta contained '\v[]{}*?[]'
+
+" Here documents (<<)
+syn region tcshHereDoc contained matchgroup=tcshShellVar start='\v\<\<\s*\z(\h\w*)' end='^\z1$' contains=@tcshVarList,tcshSpecial
+syn region tcshHereDoc contained matchgroup=tcshShellVar start="\v\<\<\s*'\z(\h\w*)'" start='\v\<\<\s*"\z(\h\w*)"$' start='\v\<\<\s*\\\z(\h\w*)$' end='^\z1$'
+
+" Operators
+syn match tcshOperator contained '&&\|!\~\|!=\|<<\|<=\|==\|=\~\|>=\|>>\|\*\|\^\|\~\|||\|!\|%\|&\|+\|-\|/\|<\|>\||'
+"syn match tcshOperator contained '[(){}]'
+
+" Numbers
+syn match tcshNumber contained '\v<-?\d+>'
+
+" Arguments
+syn match tcshArgument contained '\v\s@<=-(\w|-)*'
+
+" Special characters. \xxx, or backslashed characters.
+"syn match tcshSpecial contained '\v\\@<!\\(\d{3}|.)'
+syn match tcshSpecial contained '\v\\%([0-7]{3}|.)'
+
+" ----- Synchronising ----- {{{1
+if exists('tcsh_minlines')
+ if tcsh_minlines == 'fromstart'
+ syn sync fromstart
+ else
+ exec 'syn sync minlines=' . tcsh_minlines
+ endif
+else
+ syn sync minlines=100 " Some completions can be quite long
+endif
+
+" ----- Highlighting ----- {{{1
+" Define highlighting of syntax groups
+hi def link tcshError Error
+hi def link tcshBuiltin Statement
+hi def link tcshShellVar Preproc
+hi def link tcshEnvVar tcshShellVar
+hi def link tcshAliases tcshShellVar
+hi def link tcshAliCmd Identifier
+hi def link tcshCommands Identifier
+hi def link tcshIf tcshBuiltin
+hi def link tcshWhile tcshBuiltin
+hi def link tcshBindkeyFuncs Function
+hi def link tcshExprStart tcshBuiltin
+hi def link tcshExprVar tcshUsrVar
+hi def link tcshExprOp tcshOperator
+hi def link tcshExprEnd tcshOperator
+hi def link tcshComment Comment
+hi def link tcshCommentTi Preproc
+hi def link tcshSharpBang tcshCommentTi
+hi def link tcshTodo Todo
+hi def link tcshSQuote Constant
+hi def link tcshDQuote tcshSQuote
+hi def link tcshBQuoteGrp Include
+hi def link tcshVarError Error
+hi def link tcshUsrVar Type
+hi def link tcshArgv tcshUsrVar
+hi def link tcshSubst tcshUsrVar
+hi def link tcshModifier tcshArgument
+hi def link tcshModifierError tcshVarError
+hi def link tcshMeta tcshSubst
+hi def link tcshRedir tcshOperator
+hi def link tcshHereDoc tcshSQuote
+hi def link tcshOperator Operator
+hi def link tcshNumber Number
+hi def link tcshArgument Special
+hi def link tcshSpecial SpecialChar
+" }}}
+
+let &cpo = s:oldcpo
+unlet s:oldcpo
+
+let b:current_syntax = 'tcsh'
+
+" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
diff --git a/runtime/syntax/template.vim b/runtime/syntax/template.vim
new file mode 100644
index 0000000..5bf580f
--- /dev/null
+++ b/runtime/syntax/template.vim
@@ -0,0 +1,15 @@
+" Vim syntax file
+" Language: Generic template
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last Change: 2019 May 06
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Known template types are very similar to HTML, E.g. golang and "Xfire User
+" Interface Template"
+" If you know how to recognize a more specific type for *.tmpl suggest a
+" change to runtime/scripts.vim.
+runtime! syntax/html.vim
diff --git a/runtime/syntax/teraterm.vim b/runtime/syntax/teraterm.vim
new file mode 100644
index 0000000..9115320
--- /dev/null
+++ b/runtime/syntax/teraterm.vim
@@ -0,0 +1,140 @@
+" Vim syntax file
+" Language: Tera Term Language (TTL)
+" Based on Tera Term Version 4.100
+" Maintainer: Ken Takata
+" URL: https://github.com/k-takata/vim-teraterm
+" Last Change: 2018-08-31
+" Filenames: *.ttl
+" License: VIM License
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+syn case ignore
+
+syn region ttlComment start=";" end="$" contains=@Spell
+syn region ttlComment start="/\*" end="\*/" contains=@Spell
+syn region ttlFirstComment start="/\*" end="\*/" contained contains=@Spell
+ \ nextgroup=ttlStatement,ttlFirstComment
+
+syn match ttlCharacter "#\%(\d\+\|\$\x\+\)\>"
+syn match ttlNumber "\%(\<\d\+\|\$\x\+\)\>"
+syn match ttlString "'[^']*'" contains=@Spell
+syn match ttlString '"[^"]*"' contains=@Spell
+syn cluster ttlConstant contains=ttlCharacter,ttlNumber,ttlString
+
+syn match ttlLabel ":\s*\w\{1,32}\>"
+
+syn keyword ttlOperator and or xor not
+
+syn match ttlVar "\<groupmatchstr\d\>"
+syn match ttlVar "\<param\d\>"
+syn keyword ttlVar inputstr matchstr paramcnt params result timeout mtimeout
+
+
+syn match ttlLine nextgroup=ttlStatement "^"
+syn match ttlStatement contained "\s*"
+ \ nextgroup=ttlIf,ttlElseIf,ttlConditional,ttlRepeat,
+ \ ttlFirstComment,ttlComment,ttlLabel,@ttlCommand
+
+syn cluster ttlCommand contains=ttlControlCommand,ttlCommunicationCommand,
+ \ ttlStringCommand,ttlFileCommand,ttlPasswordCommand,
+ \ ttlMiscCommand
+
+
+syn keyword ttlIf contained nextgroup=ttlIfExpression if
+syn keyword ttlElseIf contained nextgroup=ttlElseIfExpression elseif
+
+syn match ttlIfExpression contained "\s.*"
+ \ contains=@ttlConstant,ttlVar,ttlOperator,ttlComment,ttlThen,
+ \ @ttlCommand
+syn match ttlElseIfExpression contained "\s.*"
+ \ contains=@ttlConstant,ttlVar,ttlOperator,ttlComment,ttlThen
+
+syn keyword ttlThen contained then
+syn keyword ttlConditional contained else endif
+
+syn keyword ttlRepeat contained for next until enduntil while endwhile
+syn match ttlRepeat contained
+ \ "\<\%(do\|loop\)\%(\s\+\%(while\|until\)\)\?\>"
+syn keyword ttlControlCommand contained
+ \ break call continue end execcmnd exit goto include
+ \ mpause pause return
+
+
+syn keyword ttlCommunicationCommand contained
+ \ bplusrecv bplussend callmenu changedir clearscreen
+ \ closett connect cygconnect disconnect dispstr
+ \ enablekeyb flushrecv gethostname getmodemstatus
+ \ gettitle kmtfinish kmtget kmtrecv kmtsend loadkeymap
+ \ logautoclosemode logclose loginfo logopen logpause
+ \ logrotate logstart logwrite quickvanrecv
+ \ quickvansend recvln restoresetup scprecv scpsend
+ \ send sendbreak sendbroadcast sendfile sendkcode
+ \ sendln sendlnbroadcast sendlnmulticast sendmulticast
+ \ setbaud setdebug setdtr setecho setflowctrl
+ \ setmulticastname setrts setspeed setsync settitle
+ \ showtt testlink unlink wait wait4all waitevent
+ \ waitln waitn waitrecv waitregex xmodemrecv
+ \ xmodemsend ymodemrecv ymodemsend zmodemrecv
+ \ zmodemsend
+syn keyword ttlStringCommand contained
+ \ code2str expandenv int2str regexoption sprintf
+ \ sprintf2 str2code str2int strcompare strconcat
+ \ strcopy strinsert strjoin strlen strmatch strremove
+ \ strreplace strscan strspecial strsplit strtrim
+ \ tolower toupper
+syn keyword ttlFileCommand contained
+ \ basename dirname fileclose fileconcat filecopy
+ \ filecreate filedelete filelock filemarkptr fileopen
+ \ filereadln fileread filerename filesearch fileseek
+ \ fileseekback filestat filestrseek filestrseek2
+ \ filetruncate fileunlock filewrite filewriteln
+ \ findfirst findnext findclose foldercreate
+ \ folderdelete foldersearch getdir getfileattr makepath
+ \ setdir setfileattr
+syn keyword ttlPasswordCommand contained
+ \ delpassword getpassword ispassword passwordbox
+ \ setpassword
+syn keyword ttlMiscCommand contained
+ \ beep bringupbox checksum8 checksum8file checksum16
+ \ checksum16file checksum32 checksum32file closesbox
+ \ clipb2var crc16 crc16file crc32 crc32file exec
+ \ dirnamebox filenamebox getdate getenv getipv4addr
+ \ getipv6addr getspecialfolder gettime getttdir getver
+ \ ifdefined inputbox intdim listbox messagebox random
+ \ rotateleft rotateright setdate setdlgpos setenv
+ \ setexitcode settime show statusbox strdim uptime
+ \ var2clipb yesnobox
+
+
+hi def link ttlCharacter Character
+hi def link ttlNumber Number
+hi def link ttlComment Comment
+hi def link ttlFirstComment Comment
+hi def link ttlString String
+hi def link ttlLabel Label
+hi def link ttlIf Conditional
+hi def link ttlElseIf Conditional
+hi def link ttlThen Conditional
+hi def link ttlConditional Conditional
+hi def link ttlRepeat Repeat
+hi def link ttlControlCommand Keyword
+hi def link ttlVar Identifier
+hi def link ttlOperator Operator
+hi def link ttlCommunicationCommand Keyword
+hi def link ttlStringCommand Keyword
+hi def link ttlFileCommand Keyword
+hi def link ttlPasswordCommand Keyword
+hi def link ttlMiscCommand Keyword
+
+let b:current_syntax = "teraterm"
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
+
+" vim: ts=8 sw=2 sts=2
diff --git a/runtime/syntax/terminfo.vim b/runtime/syntax/terminfo.vim
new file mode 100644
index 0000000..2b0ab08
--- /dev/null
+++ b/runtime/syntax/terminfo.vim
@@ -0,0 +1,93 @@
+" Vim syntax file
+" Language: terminfo(5) definition
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match terminfoKeywords '[,=#|]'
+
+syn keyword terminfoTodo contained TODO FIXME XXX NOTE
+
+syn region terminfoComment display oneline start='^#' end='$'
+ \ contains=terminfoTodo,@Spell
+
+syn match terminfoNumbers '\<[0-9]\+\>'
+
+syn match terminfoSpecialChar '\\\(\o\{3}\|[Eenlrtbfs^\,:0]\)'
+syn match terminfoSpecialChar '\^\a'
+
+syn match terminfoDelay '$<[0-9]\+>'
+
+syn keyword terminfoBooleans bw am bce ccc xhp xhpa cpix crxw xt xenl eo gn
+ \ hc chts km daisy hs hls in lpix da db mir
+ \ msgr nxon xsb npc ndscr nrrmc os mc5i xcpa
+ \ sam eslok hz ul xon
+
+syn keyword terminfoNumerics cols it lh lw lines lm xmc ma colors pairs wnum
+ \ ncv nlab pb vt wsl bitwin bitype bufsz btns
+ \ spinh spinv maddr mjump mcs npins orc orhi
+ \ orl orvi cps widcs
+
+syn keyword terminfoStrings acsc cbt bel cr cpi lpi chr cvr csr rmp tbc mgc
+ \ clear el1 el ed hpa cmdch cwin cup cud1 home
+ \ civis cub1 mrcup cnorm cuf1 ll cuu1 cvvis
+ \ defc dch1 dl1 dial dsl dclk hd enacs smacs
+ \ smam blink bold smcup smdc dim swidm sdrfq
+ \ smir sitm slm smicm snlq snrmq prot rev
+ \ invis sshm smso ssubm ssupm smul sum smxon
+ \ ech rmacs rmam sgr0 rmcup rmdc rwidm rmir
+ \ ritm rlm rmicm rshm rmso rsubm rsupm rmul
+ \ rum rmxon pause hook flash ff fsl wingo hup
+ \ is1 is2 is3 if iprog initc initp ich1 il1 ip
+ \ ka1 ka3 kb2 kbs kbeg kcbt kc1 kc3 kcan ktbc
+ \ kclr kclo kcmd kcpy kcrt kctab kdch1 kdl1
+ \ kcud1 krmir kend kent kel ked kext kfnd khlp
+ \ khome kich1 kil1 kcub1 kll kmrk kmsg kmov
+ \ knxt knp kopn kopt kpp kprv kprt krdo kref
+ \ krfr krpl krst kres kcuf1 ksav kBEG kCAN
+ \ kCMD kCPY kCRT kDC kDL kslt kEND kEOL kEXT
+ \ kind kFND kHLP kHOM kIC kLFT kMSG kMOV kNXT
+ \ kOPT kPRV kPRT kri kRDO kRPL kRIT kRES kSAV
+ \ kSPD khts kUND kspd kund kcuu1 rmkx smkx
+ \ lf0 lf1 lf10 lf2 lf3 lf4 lf5 lf6 lf7 lf8 lf9
+ \ fln rmln smln rmm smm mhpa mcud1 mcub1 mcuf1
+ \ mvpa mcuu1 nel porder oc op pad dch dl cud
+ \ mcud ich indn il cub mcub cuf mcuf rin cuu
+ \ mccu pfkey pfloc pfx pln mc0 mc5p mc4 mc5
+ \ pulse qdial rmclk rep rfi rs1 rs2 rs3 rf rc
+ \ vpa sc ind ri scs sgr setbsmgb smgbp sclk
+ \ scp setb setf smgl smglp smgr smgrp hts smgt
+ \ smgtp wind sbim scsd rbim rcsd subcs supcs
+ \ ht docr tsl tone uc hu u0 u1 u2 u3 u4 u5 u6
+ \ u7 u8 u9 wait xoffc xonc zerom scesa bicr
+ \ binel birep csnm csin colornm defbi devt
+ \ dispc endbi smpch smsc rmpch rmsc getm kmous
+ \ minfo pctrm pfxl reqmp scesc s0ds s1ds s2ds
+ \ s3ds setab setaf setcolor smglr slines smgtb
+ \ ehhlm elhlm erhlm ethlm evhlm sgr1 slengthsL
+syn match terminfoStrings display '\<kf\([0-9]\|[0-5][0-9]\|6[0-3]\)\>'
+
+syn match terminfoParameters '%[%dcspl+*/mAO&|^=<>!~i?te;-]'
+syn match terminfoParameters "%\('[A-Z]'\|{[0-9]\{1,2}}\|p[1-9]\|P[a-z]\|g[A-Z]\)"
+
+hi def link terminfoComment Comment
+hi def link terminfoTodo Todo
+hi def link terminfoNumbers Number
+hi def link terminfoSpecialChar SpecialChar
+hi def link terminfoDelay Special
+hi def link terminfoBooleans Type
+hi def link terminfoNumerics Type
+hi def link terminfoStrings Type
+hi def link terminfoParameters Keyword
+hi def link terminfoKeywords Keyword
+
+let b:current_syntax = "terminfo"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/tex.vim b/runtime/syntax/tex.vim
new file mode 100644
index 0000000..5544fb6
--- /dev/null
+++ b/runtime/syntax/tex.vim
@@ -0,0 +1,1352 @@
+" Vim syntax file
+" Language: TeX
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Last Change: Apr 22, 2022
+" Version: 121
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX
+"
+" Notes: {{{1
+"
+" 1. If you have a \begin{verbatim} that appears to overrun its boundaries,
+" use %stopzone.
+"
+" 2. Run-on equations ($..$ and $$..$$, particularly) can also be stopped
+" by suitable use of %stopzone.
+"
+" 3. If you have a slow computer, you may wish to modify
+"
+" syn sync maxlines=200
+" syn sync minlines=50
+"
+" to values that are more to your liking.
+"
+" 4. There is no match-syncing for $...$ and $$...$$; hence large
+" equation blocks constructed that way may exhibit syncing problems.
+" (there's no difference between begin/end patterns)
+"
+" 5. If you have the variable "g:tex_no_error" defined then none of the
+" lexical error-checking will be done.
+"
+" ie. let g:tex_no_error=1
+"
+" 6. Please see :help latex-syntax for information on
+" syntax folding :help tex-folding
+" spell checking :help tex-nospell
+" commands and mathzones :help tex-runon
+" new command highlighting :help tex-morecommands
+" error highlighting :help tex-error
+" new math groups :help tex-math
+" new styles :help tex-style
+" using conceal mode :help tex-conceal
+
+" Version Clears: {{{1
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+scriptencoding utf-8
+
+" by default, enable all region-based highlighting
+let s:tex_fast= "bcmMprsSvV"
+if exists("g:tex_fast")
+ if type(g:tex_fast) != 1
+ " g:tex_fast exists and is not a string, so
+ " turn off all optional region-based highighting
+ let s:tex_fast= ""
+ else
+ let s:tex_fast= g:tex_fast
+ endif
+endif
+
+" let user determine which classes of concealment will be supported
+" a=accents/ligatures d=delimiters m=math symbols g=Greek s=superscripts/subscripts
+if !exists("g:tex_conceal")
+ let s:tex_conceal= 'abdmgsS'
+else
+ let s:tex_conceal= g:tex_conceal
+endif
+if !exists("g:tex_superscripts")
+ let s:tex_superscripts= '[0-9a-zA-W.,:;+-<>/()=]'
+else
+ let s:tex_superscripts= g:tex_superscripts
+endif
+if !exists("g:tex_subscripts")
+ let s:tex_subscripts= '[0-9aehijklmnoprstuvx,+-/().]'
+else
+ let s:tex_subscripts= g:tex_subscripts
+endif
+
+" Determine whether or not to use "*.sty" mode {{{1
+" The user may override the normal determination by setting
+" g:tex_stylish to 1 (for "*.sty" mode)
+" or to 0 else (normal "*.tex" mode)
+" or on a buffer-by-buffer basis with b:tex_stylish
+let s:extfname=expand("%:e")
+if exists("g:tex_stylish")
+ let b:tex_stylish= g:tex_stylish
+elseif !exists("b:tex_stylish")
+ if s:extfname == "sty" || s:extfname == "cls" || s:extfname == "clo" || s:extfname == "dtx" || s:extfname == "ltx"
+ let b:tex_stylish= 1
+ else
+ let b:tex_stylish= 0
+ endif
+endif
+
+" handle folding {{{1
+if !exists("g:tex_fold_enabled")
+ let s:tex_fold_enabled= 0
+elseif g:tex_fold_enabled && !has("folding")
+ let s:tex_fold_enabled= 0
+ echomsg "Ignoring g:tex_fold_enabled=".g:tex_fold_enabled."; need to re-compile vim for +fold support"
+else
+ let s:tex_fold_enabled= 1
+endif
+if s:tex_fold_enabled && &fdm == "manual"
+ setl fdm=syntax
+endif
+if s:tex_fold_enabled && has("folding")
+ com! -nargs=* TexFold <args> fold
+else
+ com! -nargs=* TexFold <args>
+endif
+
+" (La)TeX keywords: uses the characters 0-9,a-z,A-Z,192-255 only... {{{1
+" but _ is the only one that causes problems.
+" One may override this iskeyword setting by providing
+" g:tex_isk
+if exists("g:tex_isk")
+ if b:tex_stylish && g:tex_isk !~ '@'
+ let b:tex_isk= '@,'.g:tex_isk
+ else
+ let b:tex_isk= g:tex_isk
+ endif
+elseif b:tex_stylish
+ let b:tex_isk="@,48-57,a-z,A-Z,192-255"
+else
+ let b:tex_isk="48-57,a-z,A-Z,192-255"
+endif
+if (v:version == 704 && has("patch-7.4.1142")) || v:version > 704
+ exe "syn iskeyword ".b:tex_isk
+else
+ exe "setl isk=".b:tex_isk
+endif
+if exists("g:tex_no_error") && g:tex_no_error
+ let s:tex_no_error= 1
+else
+ let s:tex_no_error= 0
+endif
+if exists("g:tex_comment_nospell") && g:tex_comment_nospell
+ let s:tex_comment_nospell= 1
+else
+ let s:tex_comment_nospell= 0
+endif
+if exists("g:tex_nospell") && g:tex_nospell
+ let s:tex_nospell = 1
+else
+ let s:tex_nospell = 0
+endif
+if exists("g:tex_matchcheck")
+ let s:tex_matchcheck= g:tex_matchcheck
+else
+ let s:tex_matchcheck= '[({[]'
+endif
+if exists("g:tex_excludematcher")
+ let s:tex_excludematcher= g:tex_excludematcher
+else
+ let s:tex_excludematcher= 0
+endif
+
+" Clusters: {{{1
+" --------
+syn cluster texCmdGroup contains=texCmdBody,texComment,texDefParm,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texBeginEnd,texBeginEndName,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,@texMathZones
+if !s:tex_no_error
+ syn cluster texCmdGroup add=texMathError
+endif
+syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement
+syn cluster texFoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texItalStyle,texEmphStyle,texNoSpell
+syn cluster texBoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texBoldItalStyle,texNoSpell
+syn cluster texItalGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texItalStyle,texEmphStyle,texItalBoldStyle,texNoSpell
+if !s:tex_excludematcher
+ syn cluster texBoldGroup add=texMatcher
+ syn cluster texItalGroup add=texMatcher
+endif
+if !s:tex_nospell
+ if !s:tex_no_error
+ syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell
+ syn cluster texMatchNMGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell
+ syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher,@Spell
+ else
+ syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell
+ syn cluster texMatchNMGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell
+ syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher,@Spell
+ endif
+else
+ if !s:tex_no_error
+ syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption
+ syn cluster texMatchNMGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption
+ syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher
+ else
+ syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption
+ syn cluster texMatchNMGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption
+ syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher
+ endif
+endif
+syn cluster texPreambleMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTitle,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texMathZoneZ
+syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter
+if !exists("g:tex_no_math")
+ syn cluster texPreambleMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTitle,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texMathZoneZ
+ syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ
+ syn cluster texMatchGroup add=@texMathZones
+ syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2
+ syn cluster texMathMatchGroup contains=@texMathZones,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathMatcher,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone
+ syn cluster texMathZoneGroup contains=texBadPar,texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle
+ if !s:tex_no_error
+ syn cluster texMathMatchGroup add=texMathError
+ syn cluster texMathZoneGroup add=texMathError
+ endif
+ syn cluster texMathZoneGroup add=@NoSpell
+ " following used in the \part \chapter \section \subsection \subsubsection
+ " \paragraph \subparagraph \author \title highlighting
+ syn cluster texDocGroup contains=texPartZone,@texPartGroup
+ syn cluster texPartGroup contains=texChapterZone,texSectionZone,texParaZone
+ syn cluster texChapterGroup contains=texSectionZone,texParaZone
+ syn cluster texSectionGroup contains=texSubSectionZone,texParaZone
+ syn cluster texSubSectionGroup contains=texSubSubSectionZone,texParaZone
+ syn cluster texSubSubSectionGroup contains=texParaZone
+ syn cluster texParaGroup contains=texSubParaZone
+ if has("conceal") && &enc == 'utf-8'
+ syn cluster texMathZoneGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol
+ syn cluster texMathMatchGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol
+ endif
+endif
+
+" Try to flag {}, [], and () mismatches: {{{1
+if s:tex_fast =~# 'm'
+ if !s:tex_no_error
+ if s:tex_matchcheck =~ '{'
+ syn region texMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup,texError
+ syn region texMatcherNM matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup,texError
+ endif
+ if s:tex_matchcheck =~ '\['
+ syn region texMatcher matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchGroup,texError,@NoSpell
+ syn region texMatcherNM matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchNMGroup,texError,@NoSpell
+ endif
+ else
+ if s:tex_matchcheck =~ '{'
+ syn region texMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup
+ syn region texMatcherNM matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup
+ endif
+ if s:tex_matchcheck =~ '\['
+ syn region texMatcher matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchGroup
+ syn region texMatcherNM matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchNMGroup
+ endif
+ endif
+ if s:tex_matchcheck =~ '('
+ if !s:tex_nospell
+ syn region texParen start="(" end=")" transparent contains=@texMatchGroup,@Spell
+ else
+ syn region texParen start="(" end=")" transparent contains=@texMatchGroup
+ endif
+ endif
+endif
+if !s:tex_no_error
+ if s:tex_matchcheck =~ '('
+ syn match texError "[}\]]"
+ else
+ syn match texError "[}\])]"
+ endif
+endif
+if s:tex_fast =~# 'M'
+ if !exists("g:tex_no_math")
+ if !s:tex_no_error
+ syn match texMathError "}" contained
+ endif
+ syn region texMathMatcher matchgroup=texDelimiter start="{" skip="\%(\\\\\)*\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup
+ endif
+endif
+
+" TeX/LaTeX keywords: {{{1
+" Instead of trying to be All Knowing, I just match \..alphameric..
+" Note that *.tex files may not have "@" in their \commands
+if exists("g:tex_tex") || b:tex_stylish
+ syn match texStatement "\\[a-zA-Z@]\+"
+else
+ syn match texStatement "\\\a\+"
+ if !s:tex_no_error
+ syn match texError "\\\a*@[a-zA-Z@]*"
+ endif
+endif
+
+" TeX/LaTeX delimiters: {{{1
+syn match texDelimiter "&"
+syn match texDelimiter "\\\\"
+
+" Tex/Latex Options: {{{1
+syn match texOption "[^\\]\zs#\d\+\|^#\d\+"
+
+" texAccent (tnx to Karim Belabas) avoids annoying highlighting for accents: {{{1
+if b:tex_stylish
+ syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1
+ syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1
+else
+ syn match texAccent "\\[bcdvuH]\A"me=e-1
+ syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)\A"me=e-1
+endif
+syn match texAccent "\\[bcdvuH]$"
+syn match texAccent +\\[=^.\~"`']+
+syn match texAccent +\\['=t'.c^ud"vb~Hr]{\a}+
+syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$"
+
+
+" \begin{}/\end{} section markers: {{{1
+syn match texBeginEnd "\\begin\>\|\\end\>" nextgroup=texBeginEndName
+if s:tex_fast =~# 'm'
+ syn region texBeginEndName matchgroup=texDelimiter start="{" end="}" contained nextgroup=texBeginEndModifier contains=texComment
+ syn region texBeginEndModifier matchgroup=texDelimiter start="\[" end="]" contained contains=texComment,@texMathZones,@NoSpell
+endif
+
+" \documentclass, \documentstyle, \usepackage: {{{1
+syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texBeginEndName,texDocTypeArgs
+if s:tex_fast =~# 'm'
+ syn region texDocTypeArgs matchgroup=texDelimiter start="\[" end="]" contained nextgroup=texBeginEndName contains=texComment,@NoSpell
+endif
+
+" Preamble syntax-based folding support: {{{1
+if s:tex_fold_enabled && has("folding")
+ syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle,@texPreambleMatchGroup
+endif
+
+" TeX input: {{{1
+syn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatement
+syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
+syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
+syn match texInputCurlies "[{}]" contained
+if s:tex_fast =~# 'm'
+ syn region texInputFileOpt matchgroup=texDelimiter start="\[" end="\]" contained contains=texComment
+endif
+
+" Type Styles (LaTeX 2.09): {{{1
+syn match texTypeStyle "\\rm\>"
+syn match texTypeStyle "\\em\>"
+syn match texTypeStyle "\\bf\>"
+syn match texTypeStyle "\\it\>"
+syn match texTypeStyle "\\sl\>"
+syn match texTypeStyle "\\sf\>"
+syn match texTypeStyle "\\sc\>"
+syn match texTypeStyle "\\tt\>"
+
+" Type Styles: attributes, commands, families, etc (LaTeX2E): {{{1
+if s:tex_conceal !~# 'b'
+ syn match texTypeStyle "\\textbf\>"
+ syn match texTypeStyle "\\textit\>"
+ syn match texTypeStyle "\\emph\>"
+endif
+syn match texTypeStyle "\\textmd\>"
+syn match texTypeStyle "\\textrm\>"
+
+syn match texTypeStyle "\\mathbf\>"
+syn match texTypeStyle "\\mathcal\>"
+syn match texTypeStyle "\\mathit\>"
+syn match texTypeStyle "\\mathnormal\>"
+syn match texTypeStyle "\\mathrm\>"
+syn match texTypeStyle "\\mathsf\>"
+syn match texTypeStyle "\\mathtt\>"
+
+syn match texTypeStyle "\\rmfamily\>"
+syn match texTypeStyle "\\sffamily\>"
+syn match texTypeStyle "\\ttfamily\>"
+
+syn match texTypeStyle "\\itshape\>"
+syn match texTypeStyle "\\scshape\>"
+syn match texTypeStyle "\\slshape\>"
+syn match texTypeStyle "\\upshape\>"
+
+syn match texTypeStyle "\\bfseries\>"
+syn match texTypeStyle "\\mdseries\>"
+
+" Some type sizes: {{{1
+syn match texTypeSize "\\tiny\>"
+syn match texTypeSize "\\scriptsize\>"
+syn match texTypeSize "\\footnotesize\>"
+syn match texTypeSize "\\small\>"
+syn match texTypeSize "\\normalsize\>"
+syn match texTypeSize "\\large\>"
+syn match texTypeSize "\\Large\>"
+syn match texTypeSize "\\LARGE\>"
+syn match texTypeSize "\\huge\>"
+syn match texTypeSize "\\Huge\>"
+
+" Spacecodes (TeX'isms): {{{1
+" \mathcode`\^^@="2201 \delcode`\(="028300 \sfcode`\)=0 \uccode`X=`X \lccode`x=`x
+syn match texSpaceCode "\\\(math\|cat\|del\|lc\|sf\|uc\)code`"me=e-1 nextgroup=texSpaceCodeChar
+syn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained
+
+" Sections, subsections, etc: {{{1
+if s:tex_fast =~# 'p'
+ if !s:tex_nospell
+ TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell
+ TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup,@Spell
+ TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup,@Spell
+ TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup,@Spell
+ TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup,@Spell
+ TexFold syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup,@Spell
+ TexFold syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup,@Spell
+ TexFold syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@Spell
+ TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell
+ TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell
+ else
+ TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup
+ TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup
+ TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup
+ TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup
+ TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup
+ TexFold syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup
+ TexFold syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup
+ TexFold syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup
+ TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup
+ TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup
+ endif
+endif
+
+" particular support for bold and italic {{{1
+if s:tex_fast =~# 'b'
+ if s:tex_conceal =~# 'b'
+ if !exists("g:tex_nospell") || !g:tex_nospell
+ syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
+ syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
+ syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
+ syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
+ syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
+ syn region texEmphStyle matchgroup=texTypeStyle start="\\texts[cfl]\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
+ syn region texEmphStyle matchgroup=texTypeStyle start="\\textup\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
+ syn region texEmphStyle matchgroup=texTypeStyle start="\\texttt\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
+ else
+ syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup
+ syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
+ syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
+ syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup
+ syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
+ syn region texEmphStyle matchgroup=texTypeStyle start="\\texts[cfl]\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
+ syn region texEmphStyle matchgroup=texTypeStyle start="\\textup\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
+ syn region texEmphStyle matchgroup=texTypeStyle start="\\texttt\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
+ endif
+ endif
+endif
+
+" Bad Math (mismatched): {{{1
+if !exists("g:tex_no_math") && !s:tex_no_error
+ syn match texBadMath "\\end\s*{\s*\(array\|[bBpvV]matrix\|split\|smallmatrix\)\s*}"
+ syn match texBadMath "\\end\s*{\s*\(displaymath\|equation\|eqnarray\|math\)\*\=\s*}"
+ syn match texBadMath "\\[\])]"
+ syn match texBadPar contained "\%(\\par\>\|^\s*\n.\)"
+endif
+
+" Math Zones: {{{1
+if !exists("g:tex_no_math")
+ " TexNewMathZone: function creates a mathzone with the given suffix and mathzone name. {{{2
+ " Starred forms are created if starform is true. Starred
+ " forms have syntax group and synchronization groups with a
+ " "S" appended. Handles: cluster, syntax, sync, and highlighting.
+ fun! TexNewMathZone(sfx,mathzone,starform)
+ let grpname = "texMathZone".a:sfx
+ let syncname = "texSyncMathZone".a:sfx
+ if s:tex_fold_enabled
+ let foldcmd= " fold"
+ else
+ let foldcmd= ""
+ endif
+ exe "syn cluster texMathZones add=".grpname
+ if s:tex_fast =~# 'M'
+ exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
+ exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
+ exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
+ endif
+ exe 'hi def link '.grpname.' texMath'
+ if a:starform
+ let grpname = "texMathZone".a:sfx.'S'
+ let syncname = "texSyncMathZone".a:sfx.'S'
+ exe "syn cluster texMathZones add=".grpname
+ if s:tex_fast =~# 'M'
+ exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
+ exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
+ exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
+ endif
+ exe 'hi def link '.grpname.' texMath'
+ endif
+ endfun
+
+ " Standard Math Zones: {{{2
+ call TexNewMathZone("A","displaymath",1)
+ call TexNewMathZone("B","eqnarray",1)
+ call TexNewMathZone("C","equation",1)
+ call TexNewMathZone("D","math",1)
+
+ " Inline Math Zones: {{{2
+ if s:tex_fast =~# 'M'
+ if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'd'
+ syn region texMathZoneV matchgroup=texDelimiter start="\\(" matchgroup=texDelimiter end="\\)\|%stopzone\>" keepend concealends contains=@texMathZoneGroup
+ syn region texMathZoneW matchgroup=texDelimiter start="\\\[" matchgroup=texDelimiter end="\\]\|%stopzone\>" keepend concealends contains=@texMathZoneGroup
+ syn region texMathZoneX matchgroup=texDelimiter start="\$" skip="\\\\\|\\\$" matchgroup=texDelimiter end="\$" end="%stopzone\>" concealends contains=@texMathZoneGroup
+ syn region texMathZoneY matchgroup=texDelimiter start="\$\$" matchgroup=texDelimiter end="\$\$" end="%stopzone\>" keepend concealends contains=@texMathZoneGroup
+ else
+ syn region texMathZoneV matchgroup=texDelimiter start="\\(" matchgroup=texDelimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup
+ syn region texMathZoneW matchgroup=texDelimiter start="\\\[" matchgroup=texDelimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup
+ syn region texMathZoneX matchgroup=texDelimiter start="\$" skip="\%(\\\\\)*\\\$" matchgroup=texDelimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup
+ syn region texMathZoneY matchgroup=texDelimiter start="\$\$" matchgroup=texDelimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup
+ endif
+ syn region texMathZoneZ matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>" contains=@texMathZoneGroup
+ endif
+
+ syn match texMathOper "[_^=]" contained
+
+ " Text Inside Math Zones: {{{2
+ if s:tex_fast =~# 'M'
+ if !exists("g:tex_nospell") || !g:tex_nospell
+ syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup,@Spell
+ else
+ syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup
+ endif
+ endif
+
+ " \left..something.. and \right..something.. support: {{{2
+ syn match texMathDelimBad contained "\S"
+ if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'm'
+ syn match texMathDelim contained "\\left\["
+ syn match texMathDelim contained "\\left\\{" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar={
+ syn match texMathDelim contained "\\right\\}" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar=}
+ let s:texMathDelimList=[
+ \ ['<' , '<'] ,
+ \ ['>' , '>'] ,
+ \ ['(' , '('] ,
+ \ [')' , ')'] ,
+ \ ['\[' , '['] ,
+ \ [']' , ']'] ,
+ \ ['\\{' , '{'] ,
+ \ ['\\}' , '}'] ,
+ \ ['|' , '|'] ,
+ \ ['\\|' , '‖'] ,
+ \ ['\\backslash' , '\'] ,
+ \ ['\\downarrow' , '↓'] ,
+ \ ['\\Downarrow' , '⇓'] ,
+ \ ['\\lbrace' , '['] ,
+ \ ['\\lceil' , '⌈'] ,
+ \ ['\\lfloor' , '⌊'] ,
+ \ ['\\lgroup' , '⌊'] ,
+ \ ['\\lmoustache' , '⎛'] ,
+ \ ['\\rbrace' , ']'] ,
+ \ ['\\rceil' , '⌉'] ,
+ \ ['\\rfloor' , '⌋'] ,
+ \ ['\\rgroup' , '⌋'] ,
+ \ ['\\rmoustache' , '⎞'] ,
+ \ ['\\uparrow' , '↑'] ,
+ \ ['\\Uparrow' , '↑'] ,
+ \ ['\\updownarrow', '↕'] ,
+ \ ['\\Updownarrow', '⇕']]
+ if &ambw == "double" || exists("g:tex_usedblwidth")
+ let s:texMathDelimList= s:texMathDelimList + [
+ \ ['\\langle' , '〈'] ,
+ \ ['\\rangle' , '〉']]
+ else
+ let s:texMathDelimList= s:texMathDelimList + [
+ \ ['\\langle' , '<'] ,
+ \ ['\\rangle' , '>']]
+ endif
+ syn match texMathDelim '\\[bB]igg\=[lr]' contained nextgroup=texMathDelimBad
+ for texmath in s:texMathDelimList
+ exe "syn match texMathDelim '\\\\[bB]igg\\=[lr]\\=".texmath[0]."' contained conceal cchar=".texmath[1]
+ endfor
+
+ else
+ syn match texMathDelim contained "\\\(left\|right\)\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
+ syn match texMathDelim contained "\\[bB]igg\=[lr]\=\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
+ syn match texMathDelimSet2 contained "\\" nextgroup=texMathDelimKey,texMathDelimBad
+ syn match texMathDelimSet1 contained "[<>()[\]|/.]\|\\[{}|]"
+ syn keyword texMathDelimKey contained backslash lceil lVert rgroup uparrow
+ syn keyword texMathDelimKey contained downarrow lfloor rangle rmoustache Uparrow
+ syn keyword texMathDelimKey contained Downarrow lgroup rbrace rvert updownarrow
+ syn keyword texMathDelimKey contained langle lmoustache rceil rVert Updownarrow
+ syn keyword texMathDelimKey contained lbrace lvert rfloor
+ endif
+ syn match texMathDelim contained "\\\(left\|right\)arrow\>\|\<\([aA]rrow\|brace\)\=vert\>"
+ syn match texMathDelim contained "\\lefteqn\>"
+endif
+
+" Special TeX characters ( \$ \& \% \# \{ \} \_ \S \P ) : {{{1
+syn match texSpecialChar "\\[$&%#{}_]"
+if b:tex_stylish
+ syn match texSpecialChar "\\[SP@][^a-zA-Z@]"me=e-1
+else
+ syn match texSpecialChar "\\[SP@]\A"me=e-1
+endif
+syn match texSpecialChar "\\\\"
+if !exists("g:tex_no_math")
+ syn match texOnlyMath "[_^]"
+endif
+syn match texSpecialChar "\^\^[0-9a-f]\{2}\|\^\^\S"
+if s:tex_conceal !~# 'S'
+ syn match texSpecialChar '\\glq\>' contained conceal cchar=‚
+ syn match texSpecialChar '\\grq\>' contained conceal cchar=‘
+ syn match texSpecialChar '\\glqq\>' contained conceal cchar=„
+ syn match texSpecialChar '\\grqq\>' contained conceal cchar=“
+ syn match texSpecialChar '\\hyp\>' contained conceal cchar=-
+endif
+
+" Comments: {{{1
+" Normal TeX LaTeX : %....
+" Documented TeX Format: ^^A... -and- leading %s (only)
+if !s:tex_comment_nospell
+ syn cluster texCommentGroup contains=texTodo,@Spell
+else
+ syn cluster texCommentGroup contains=texTodo,@NoSpell
+endif
+syn case ignore
+syn keyword texTodo contained combak fixme todo xxx
+syn case match
+if s:extfname == "dtx"
+ syn match texComment "\^\^A.*$" contains=@texCommentGroup
+ syn match texComment "^%\+" contains=@texCommentGroup
+else
+ if s:tex_fold_enabled
+ " allows syntax-folding of 2 or more contiguous comment lines
+ " single-line comments are not folded
+ syn match texComment "%.*$" contains=@texCommentGroup
+ if s:tex_fast =~# 'c'
+ TexFold syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' contains=@texCommentGroup
+ TexFold syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell
+ endif
+ else
+ syn match texComment "%.*$" contains=@texCommentGroup
+ if s:tex_fast =~# 'c'
+ syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell
+ endif
+ endif
+endif
+
+" %begin-include ... %end-include acts like a texDocZone for \include'd files. Permits spell checking, for example, in such files.
+if !s:tex_nospell
+ TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup,@Spell
+else
+ TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup
+endif
+
+" Separate lines used for verb` and verb# so that the end conditions {{{1
+" will appropriately terminate.
+" If g:tex_verbspell exists, then verbatim texZones will permit spellchecking there.
+if s:tex_fast =~# 'v'
+ if exists("g:tex_verbspell") && g:tex_verbspell
+ syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell
+ " listings package:
+ if b:tex_stylish
+ syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" contains=@Spell
+ else
+ syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" contains=@Spell
+ endif
+ else
+ syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>"
+ if b:tex_stylish
+ syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>"
+ else
+ syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>"
+ endif
+ endif
+endif
+
+" Tex Reference Zones: {{{1
+if s:tex_fast =~# 'r'
+ syn region texZone matchgroup=texStatement start="@samp{" end="}\|%stopzone\>" contains=@texRefGroup
+ syn region texRefZone matchgroup=texStatement start="\\nocite{" end="}\|%stopzone\>" contains=@texRefGroup
+ syn region texRefZone matchgroup=texStatement start="\\bibliography{" end="}\|%stopzone\>" contains=@texRefGroup
+ syn region texRefZone matchgroup=texStatement start="\\label{" end="}\|%stopzone\>" contains=@texRefGroup
+ syn region texRefZone matchgroup=texStatement start="\\\(page\|eq\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
+ syn region texRefZone matchgroup=texStatement start="\\v\=ref{" end="}\|%stopzone\>" contains=@texRefGroup
+ syn region texRefOption contained matchgroup=texDelimiter start='\[' end=']' contains=@texRefGroup,texRefZone nextgroup=texRefOption,texCite
+ syn region texCite contained matchgroup=texDelimiter start='{' end='}' contains=@texRefGroup,texRefZone,texCite
+endif
+syn match texRefZone '\\cite\%([tp]\*\=\)\=\>' nextgroup=texRefOption,texCite
+
+" Handle (re)newcommand, (re)newenvironment : {{{1
+syn match texNewCmd "\\\%(re\)\=newcommand\>" nextgroup=texCmdName skipwhite skipnl
+if s:tex_fast =~# 'V'
+ syn region texCmdName contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl
+ syn region texCmdArgs contained matchgroup=texDelimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl
+ syn region texCmdBody contained matchgroup=texDelimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=texDelimiter end="}" contains=@texCmdGroup
+endif
+syn match texNewEnv "\\\%(re\)\=newenvironment\>" nextgroup=texEnvName skipwhite skipnl
+if s:tex_fast =~# 'V'
+ syn region texEnvName contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texEnvBgn skipwhite skipnl
+ syn region texEnvBgn contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup
+ syn region texEnvEnd contained matchgroup=texDelimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup
+endif
+
+" Definitions/Commands: {{{1
+syn match texDefCmd "\\def\>" nextgroup=texDefName skipwhite skipnl
+if b:tex_stylish
+ syn match texDefName contained "\\[a-zA-Z@]\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl
+ syn match texDefName contained "\\[^a-zA-Z@]" nextgroup=texDefParms,texCmdBody skipwhite skipnl
+else
+ syn match texDefName contained "\\\a\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl
+ syn match texDefName contained "\\\A" nextgroup=texDefParms,texCmdBody skipwhite skipnl
+endif
+syn match texDefParms contained "#[^{]*" contains=texDefParm nextgroup=texCmdBody skipwhite skipnl
+syn match texDefParm contained "#\d\+"
+
+" TeX Lengths: {{{1
+syn match texLength "\<\d\+\([.,]\d\+\)\=\s*\(true\)\=\s*\(bp\|cc\|cm\|dd\|em\|ex\|in\|mm\|pc\|pt\|sp\)\>"
+
+" TeX String Delimiters: {{{1
+syn match texString "\(``\|''\|,,\)"
+
+" makeatletter -- makeatother sections
+if !s:tex_no_error
+ if s:tex_fast =~# 'S'
+ syn region texStyle matchgroup=texStatement start='\\makeatletter' end='\\makeatother' contains=@texStyleGroup contained
+ endif
+ syn match texStyleStatement "\\[a-zA-Z@]\+" contained
+ if s:tex_fast =~# 'S'
+ syn region texStyleMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained
+ syn region texStyleMatcher matchgroup=texDelimiter start="\[" end="]" contains=@texStyleGroup,texError contained
+ endif
+endif
+
+" Conceal mode support (supports set cole=2) {{{1
+if has("conceal") && &enc == 'utf-8'
+
+ " Math Symbols {{{2
+ " (many of these symbols were contributed by Björn Winckler)
+ if s:tex_conceal =~# 'm'
+ let s:texMathList=[
+ \ ['|' , '‖'],
+ \ ['aleph' , 'ℵ'],
+ \ ['amalg' , 'âˆ'],
+ \ ['angle' , '∠'],
+ \ ['approx' , '≈'],
+ \ ['ast' , '∗'],
+ \ ['asymp' , 'â‰'],
+ \ ['backslash' , '∖'],
+ \ ['bigcap' , '∩'],
+ \ ['bigcirc' , 'â—‹'],
+ \ ['bigcup' , '∪'],
+ \ ['bigodot' , '⊙'],
+ \ ['bigoplus' , '⊕'],
+ \ ['bigotimes' , '⊗'],
+ \ ['bigsqcup' , '⊔'],
+ \ ['bigtriangledown', '∇'],
+ \ ['bigtriangleup' , '∆'],
+ \ ['bigvee' , 'â‹'],
+ \ ['bigwedge' , 'â‹€'],
+ \ ['bot' , '⊥'],
+ \ ['bowtie' , '⋈'],
+ \ ['bullet' , '•'],
+ \ ['cap' , '∩'],
+ \ ['cdot' , '·'],
+ \ ['cdots' , '⋯'],
+ \ ['circ' , '∘'],
+ \ ['clubsuit' , '♣'],
+ \ ['cong' , '≅'],
+ \ ['coprod' , 'âˆ'],
+ \ ['copyright' , '©'],
+ \ ['cup' , '∪'],
+ \ ['dagger' , '†'],
+ \ ['dashv' , '⊣'],
+ \ ['ddagger' , '‡'],
+ \ ['ddots' , '⋱'],
+ \ ['diamond' , 'â‹„'],
+ \ ['diamondsuit' , '♢'],
+ \ ['div' , '÷'],
+ \ ['doteq' , 'â‰'],
+ \ ['dots' , '…'],
+ \ ['downarrow' , '↓'],
+ \ ['Downarrow' , '⇓'],
+ \ ['ell' , 'â„“'],
+ \ ['emptyset' , '∅'],
+ \ ['equiv' , '≡'],
+ \ ['exists' , '∃'],
+ \ ['flat' , 'â™­'],
+ \ ['forall' , '∀'],
+ \ ['frown' , 'â”'],
+ \ ['ge' , '≥'],
+ \ ['geq' , '≥'],
+ \ ['gets' , 'â†'],
+ \ ['gg' , '⟫'],
+ \ ['hbar' , 'â„'],
+ \ ['heartsuit' , '♡'],
+ \ ['hookleftarrow' , '↩'],
+ \ ['hookrightarrow' , '↪'],
+ \ ['iff' , '⇔'],
+ \ ['Im' , 'â„‘'],
+ \ ['imath' , 'É©'],
+ \ ['in' , '∈'],
+ \ ['infty' , '∞'],
+ \ ['int' , '∫'],
+ \ ['jmath' , 'ðš¥'],
+ \ ['land' , '∧'],
+ \ ['lceil' , '⌈'],
+ \ ['ldots' , '…'],
+ \ ['le' , '≤'],
+ \ ['left|' , '|'],
+ \ ['left\\|' , '‖'],
+ \ ['left(' , '('],
+ \ ['left\[' , '['],
+ \ ['left\\{' , '{'],
+ \ ['leftarrow' , 'â†'],
+ \ ['Leftarrow' , 'â‡'],
+ \ ['leftharpoondown', '↽'],
+ \ ['leftharpoonup' , '↼'],
+ \ ['leftrightarrow' , '↔'],
+ \ ['Leftrightarrow' , '⇔'],
+ \ ['leq' , '≤'],
+ \ ['leq' , '≤'],
+ \ ['lfloor' , '⌊'],
+ \ ['ll' , '≪'],
+ \ ['lmoustache' , 'â•­'],
+ \ ['lor' , '∨'],
+ \ ['mapsto' , '↦'],
+ \ ['mid' , '∣'],
+ \ ['models' , 'â•ž'],
+ \ ['mp' , '∓'],
+ \ ['nabla' , '∇'],
+ \ ['natural' , 'â™®'],
+ \ ['ne' , '≠'],
+ \ ['nearrow' , '↗'],
+ \ ['neg' , '¬'],
+ \ ['neq' , '≠'],
+ \ ['ni' , '∋'],
+ \ ['notin' , '∉'],
+ \ ['nwarrow' , '↖'],
+ \ ['odot' , '⊙'],
+ \ ['oint' , '∮'],
+ \ ['ominus' , '⊖'],
+ \ ['oplus' , '⊕'],
+ \ ['oslash' , '⊘'],
+ \ ['otimes' , '⊗'],
+ \ ['owns' , '∋'],
+ \ ['P' , '¶'],
+ \ ['parallel' , 'â•‘'],
+ \ ['partial' , '∂'],
+ \ ['perp' , '⊥'],
+ \ ['pm' , '±'],
+ \ ['prec' , '≺'],
+ \ ['preceq' , '⪯'],
+ \ ['prime' , '′'],
+ \ ['prod' , 'âˆ'],
+ \ ['propto' , 'âˆ'],
+ \ ['rceil' , '⌉'],
+ \ ['Re' , 'ℜ'],
+ \ ['quad' , ' '],
+ \ ['qquad' , 'â€'],
+ \ ['rfloor' , '⌋'],
+ \ ['right|' , '|'],
+ \ ['right\\|' , '‖'],
+ \ ['right)' , ')'],
+ \ ['right]' , ']'],
+ \ ['right\\}' , '}'],
+ \ ['rightarrow' , '→'],
+ \ ['Rightarrow' , '⇒'],
+ \ ['rightleftharpoons', '⇌'],
+ \ ['rmoustache' , 'â•®'],
+ \ ['S' , '§'],
+ \ ['searrow' , '↘'],
+ \ ['setminus' , '∖'],
+ \ ['sharp' , '♯'],
+ \ ['sim' , '∼'],
+ \ ['simeq' , 'â‹'],
+ \ ['smile' , '‿'],
+ \ ['spadesuit' , 'â™ '],
+ \ ['sqcap' , '⊓'],
+ \ ['sqcup' , '⊔'],
+ \ ['sqsubset' , 'âŠ'],
+ \ ['sqsubseteq' , '⊑'],
+ \ ['sqsupset' , 'âŠ'],
+ \ ['sqsupseteq' , '⊒'],
+ \ ['star' , '✫'],
+ \ ['subset' , '⊂'],
+ \ ['subseteq' , '⊆'],
+ \ ['succ' , '≻'],
+ \ ['succeq' , '⪰'],
+ \ ['sum' , '∑'],
+ \ ['supset' , '⊃'],
+ \ ['supseteq' , '⊇'],
+ \ ['surd' , '√'],
+ \ ['swarrow' , '↙'],
+ \ ['times' , '×'],
+ \ ['to' , '→'],
+ \ ['top' , '⊤'],
+ \ ['triangle' , '∆'],
+ \ ['triangleleft' , '⊲'],
+ \ ['triangleright' , '⊳'],
+ \ ['uparrow' , '↑'],
+ \ ['Uparrow' , '⇑'],
+ \ ['updownarrow' , '↕'],
+ \ ['Updownarrow' , '⇕'],
+ \ ['vdash' , '⊢'],
+ \ ['vdots' , 'â‹®'],
+ \ ['vee' , '∨'],
+ \ ['wedge' , '∧'],
+ \ ['wp' , '℘'],
+ \ ['wr' , '≀']]
+ if &ambw == "double" || exists("g:tex_usedblwidth")
+ let s:texMathList= s:texMathList + [
+ \ ['right\\rangle' , '〉'],
+ \ ['left\\langle' , '〈']]
+ else
+ let s:texMathList= s:texMathList + [
+ \ ['right\\rangle' , '>'],
+ \ ['left\\langle' , '<']]
+ endif
+ for texmath in s:texMathList
+ if texmath[0] =~# '\w$'
+ exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1]
+ else
+ exe "syn match texMathSymbol '\\\\".texmath[0]."' contained conceal cchar=".texmath[1]
+ endif
+ endfor
+
+ if &ambw == "double"
+ syn match texMathSymbol '\\gg\>' contained conceal cchar=≫
+ syn match texMathSymbol '\\ll\>' contained conceal cchar=≪
+ else
+ syn match texMathSymbol '\\gg\>' contained conceal cchar=⟫
+ syn match texMathSymbol '\\ll\>' contained conceal cchar=⟪
+ endif
+
+ syn match texMathSymbol '\\hat{a}' contained conceal cchar=â
+ syn match texMathSymbol '\\hat{A}' contained conceal cchar=Â
+ syn match texMathSymbol '\\hat{c}' contained conceal cchar=ĉ
+ syn match texMathSymbol '\\hat{C}' contained conceal cchar=Ĉ
+ syn match texMathSymbol '\\hat{e}' contained conceal cchar=ê
+ syn match texMathSymbol '\\hat{E}' contained conceal cchar=Ê
+ syn match texMathSymbol '\\hat{g}' contained conceal cchar=Ä
+ syn match texMathSymbol '\\hat{G}' contained conceal cchar=Ĝ
+ syn match texMathSymbol '\\hat{i}' contained conceal cchar=î
+ syn match texMathSymbol '\\hat{I}' contained conceal cchar=ÃŽ
+ syn match texMathSymbol '\\hat{o}' contained conceal cchar=ô
+ syn match texMathSymbol '\\hat{O}' contained conceal cchar=Ô
+ syn match texMathSymbol '\\hat{s}' contained conceal cchar=Å
+ syn match texMathSymbol '\\hat{S}' contained conceal cchar=Ŝ
+ syn match texMathSymbol '\\hat{u}' contained conceal cchar=û
+ syn match texMathSymbol '\\hat{U}' contained conceal cchar=Û
+ syn match texMathSymbol '\\hat{w}' contained conceal cchar=ŵ
+ syn match texMathSymbol '\\hat{W}' contained conceal cchar=Å´
+ syn match texMathSymbol '\\hat{y}' contained conceal cchar=Å·
+ syn match texMathSymbol '\\hat{Y}' contained conceal cchar=Ŷ
+" syn match texMathSymbol '\\bar{a}' contained conceal cchar=aÌ…
+
+ syn match texMathSymbol '\\dot{B}' contained conceal cchar=Ḃ
+ syn match texMathSymbol '\\dot{b}' contained conceal cchar=ḃ
+ syn match texMathSymbol '\\dot{D}' contained conceal cchar=Ḋ
+ syn match texMathSymbol '\\dot{d}' contained conceal cchar=ḋ
+ syn match texMathSymbol '\\dot{F}' contained conceal cchar=Ḟ
+ syn match texMathSymbol '\\dot{f}' contained conceal cchar=ḟ
+ syn match texMathSymbol '\\dot{H}' contained conceal cchar=Ḣ
+ syn match texMathSymbol '\\dot{h}' contained conceal cchar=ḣ
+ syn match texMathSymbol '\\dot{M}' contained conceal cchar=á¹€
+ syn match texMathSymbol '\\dot{m}' contained conceal cchar=á¹
+ syn match texMathSymbol '\\dot{N}' contained conceal cchar=Ṅ
+ syn match texMathSymbol '\\dot{n}' contained conceal cchar=á¹…
+ syn match texMathSymbol '\\dot{P}' contained conceal cchar=á¹–
+ syn match texMathSymbol '\\dot{p}' contained conceal cchar=á¹—
+ syn match texMathSymbol '\\dot{R}' contained conceal cchar=Ṙ
+ syn match texMathSymbol '\\dot{r}' contained conceal cchar=á¹™
+ syn match texMathSymbol '\\dot{S}' contained conceal cchar=á¹ 
+ syn match texMathSymbol '\\dot{s}' contained conceal cchar=ṡ
+ syn match texMathSymbol '\\dot{T}' contained conceal cchar=Ṫ
+ syn match texMathSymbol '\\dot{t}' contained conceal cchar=ṫ
+ syn match texMathSymbol '\\dot{W}' contained conceal cchar=Ẇ
+ syn match texMathSymbol '\\dot{w}' contained conceal cchar=ẇ
+ syn match texMathSymbol '\\dot{X}' contained conceal cchar=Ẋ
+ syn match texMathSymbol '\\dot{x}' contained conceal cchar=ẋ
+ syn match texMathSymbol '\\dot{Y}' contained conceal cchar=Ẏ
+ syn match texMathSymbol '\\dot{y}' contained conceal cchar=áº
+ syn match texMathSymbol '\\dot{Z}' contained conceal cchar=Å»
+ syn match texMathSymbol '\\dot{z}' contained conceal cchar=ż
+
+ syn match texMathSymbol '\\dot{C}' contained conceal cchar=ÄŠ
+ syn match texMathSymbol '\\dot{c}' contained conceal cchar=Ä‹
+ syn match texMathSymbol '\\dot{E}' contained conceal cchar=Ä–
+ syn match texMathSymbol '\\dot{e}' contained conceal cchar=Ä—
+ syn match texMathSymbol '\\dot{G}' contained conceal cchar=Ä 
+ syn match texMathSymbol '\\dot{g}' contained conceal cchar=Ä¡
+ syn match texMathSymbol '\\dot{I}' contained conceal cchar=Ä°
+
+ syn match texMathSymbol '\\dot{A}' contained conceal cchar=Ȧ
+ syn match texMathSymbol '\\dot{a}' contained conceal cchar=ȧ
+ syn match texMathSymbol '\\dot{O}' contained conceal cchar=È®
+ syn match texMathSymbol '\\dot{o}' contained conceal cchar=ȯ
+ endif
+
+ " Greek {{{2
+ if s:tex_conceal =~# 'g'
+ fun! s:Greek(group,pat,cchar)
+ exe 'syn match '.a:group." '".a:pat."' contained conceal cchar=".a:cchar
+ endfun
+ call s:Greek('texGreek','\\alpha\>' ,'α')
+ call s:Greek('texGreek','\\beta\>' ,'β')
+ call s:Greek('texGreek','\\gamma\>' ,'γ')
+ call s:Greek('texGreek','\\delta\>' ,'δ')
+ call s:Greek('texGreek','\\epsilon\>' ,'ϵ')
+ call s:Greek('texGreek','\\varepsilon\>' ,'ε')
+ call s:Greek('texGreek','\\zeta\>' ,'ζ')
+ call s:Greek('texGreek','\\eta\>' ,'η')
+ call s:Greek('texGreek','\\theta\>' ,'θ')
+ call s:Greek('texGreek','\\vartheta\>' ,'Ï‘')
+ call s:Greek('texGreek','\\iota\>' ,'ι')
+ call s:Greek('texGreek','\\kappa\>' ,'κ')
+ call s:Greek('texGreek','\\lambda\>' ,'λ')
+ call s:Greek('texGreek','\\mu\>' ,'μ')
+ call s:Greek('texGreek','\\nu\>' ,'ν')
+ call s:Greek('texGreek','\\xi\>' ,'ξ')
+ call s:Greek('texGreek','\\pi\>' ,'Ï€')
+ call s:Greek('texGreek','\\varpi\>' ,'Ï–')
+ call s:Greek('texGreek','\\rho\>' ,'Ï')
+ call s:Greek('texGreek','\\varrho\>' ,'ϱ')
+ call s:Greek('texGreek','\\sigma\>' ,'σ')
+ call s:Greek('texGreek','\\varsigma\>' ,'Ï‚')
+ call s:Greek('texGreek','\\tau\>' ,'Ï„')
+ call s:Greek('texGreek','\\upsilon\>' ,'Ï…')
+ call s:Greek('texGreek','\\phi\>' ,'Ï•')
+ call s:Greek('texGreek','\\varphi\>' ,'φ')
+ call s:Greek('texGreek','\\chi\>' ,'χ')
+ call s:Greek('texGreek','\\psi\>' ,'ψ')
+ call s:Greek('texGreek','\\omega\>' ,'ω')
+ call s:Greek('texGreek','\\Gamma\>' ,'Γ')
+ call s:Greek('texGreek','\\Delta\>' ,'Δ')
+ call s:Greek('texGreek','\\Theta\>' ,'Θ')
+ call s:Greek('texGreek','\\Lambda\>' ,'Λ')
+ call s:Greek('texGreek','\\Xi\>' ,'Ξ')
+ call s:Greek('texGreek','\\Pi\>' ,'Π')
+ call s:Greek('texGreek','\\Sigma\>' ,'Σ')
+ call s:Greek('texGreek','\\Upsilon\>' ,'Î¥')
+ call s:Greek('texGreek','\\Phi\>' ,'Φ')
+ call s:Greek('texGreek','\\Chi\>' ,'Χ')
+ call s:Greek('texGreek','\\Psi\>' ,'Ψ')
+ call s:Greek('texGreek','\\Omega\>' ,'Ω')
+ delfun s:Greek
+ endif
+
+ " Superscripts/Subscripts {{{2
+ if s:tex_conceal =~# 's'
+ if s:tex_fast =~# 's'
+ syn region texSuperscript matchgroup=texDelimiter start='\^{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSuperscripts,texStatement,texSubscript,texSuperscript,texMathMatcher
+ syn region texSubscript matchgroup=texDelimiter start='_{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSubscripts,texStatement,texSubscript,texSuperscript,texMathMatcher
+ endif
+ " s:SuperSub:
+ fun! s:SuperSub(group,leader,pat,cchar)
+ if a:pat =~# '^\\' || (a:leader == '\^' && a:pat =~# s:tex_superscripts) || (a:leader == '_' && a:pat =~# s:tex_subscripts)
+" call Decho("SuperSub: group<".a:group."> leader<".a:leader."> pat<".a:pat."> cchar<".a:cchar.">")
+ exe 'syn match '.a:group." '".a:leader.a:pat."' contained conceal cchar=".a:cchar
+ exe 'syn match '.a:group."s '".a:pat ."' contained conceal cchar=".a:cchar.' nextgroup='.a:group.'s'
+ endif
+ endfun
+ call s:SuperSub('texSuperscript','\^','0','â°')
+ call s:SuperSub('texSuperscript','\^','1','¹')
+ call s:SuperSub('texSuperscript','\^','2','²')
+ call s:SuperSub('texSuperscript','\^','3','³')
+ call s:SuperSub('texSuperscript','\^','4','â´')
+ call s:SuperSub('texSuperscript','\^','5','âµ')
+ call s:SuperSub('texSuperscript','\^','6','â¶')
+ call s:SuperSub('texSuperscript','\^','7','â·')
+ call s:SuperSub('texSuperscript','\^','8','â¸')
+ call s:SuperSub('texSuperscript','\^','9','â¹')
+ call s:SuperSub('texSuperscript','\^','a','ᵃ')
+ call s:SuperSub('texSuperscript','\^','b','ᵇ')
+ call s:SuperSub('texSuperscript','\^','c','ᶜ')
+ call s:SuperSub('texSuperscript','\^','d','ᵈ')
+ call s:SuperSub('texSuperscript','\^','e','ᵉ')
+ call s:SuperSub('texSuperscript','\^','f','ᶠ')
+ call s:SuperSub('texSuperscript','\^','g','áµ')
+ call s:SuperSub('texSuperscript','\^','h','Ê°')
+ call s:SuperSub('texSuperscript','\^','i','â±')
+ call s:SuperSub('texSuperscript','\^','j','ʲ')
+ call s:SuperSub('texSuperscript','\^','k','áµ')
+ call s:SuperSub('texSuperscript','\^','l','Ë¡')
+ call s:SuperSub('texSuperscript','\^','m','áµ')
+ call s:SuperSub('texSuperscript','\^','n','â¿')
+ call s:SuperSub('texSuperscript','\^','o','áµ’')
+ call s:SuperSub('texSuperscript','\^','p','áµ–')
+ call s:SuperSub('texSuperscript','\^','r','ʳ')
+ call s:SuperSub('texSuperscript','\^','s','Ë¢')
+ call s:SuperSub('texSuperscript','\^','t','áµ—')
+ call s:SuperSub('texSuperscript','\^','u','ᵘ')
+ call s:SuperSub('texSuperscript','\^','v','áµ›')
+ call s:SuperSub('texSuperscript','\^','w','Ê·')
+ call s:SuperSub('texSuperscript','\^','x','Ë£')
+ call s:SuperSub('texSuperscript','\^','y','ʸ')
+ call s:SuperSub('texSuperscript','\^','z','ᶻ')
+ call s:SuperSub('texSuperscript','\^','A','á´¬')
+ call s:SuperSub('texSuperscript','\^','B','á´®')
+ call s:SuperSub('texSuperscript','\^','D','á´°')
+ call s:SuperSub('texSuperscript','\^','E','á´±')
+ call s:SuperSub('texSuperscript','\^','G','á´³')
+ call s:SuperSub('texSuperscript','\^','H','á´´')
+ call s:SuperSub('texSuperscript','\^','I','á´µ')
+ call s:SuperSub('texSuperscript','\^','J','á´¶')
+ call s:SuperSub('texSuperscript','\^','K','á´·')
+ call s:SuperSub('texSuperscript','\^','L','á´¸')
+ call s:SuperSub('texSuperscript','\^','M','á´¹')
+ call s:SuperSub('texSuperscript','\^','N','á´º')
+ call s:SuperSub('texSuperscript','\^','O','á´¼')
+ call s:SuperSub('texSuperscript','\^','P','á´¾')
+ call s:SuperSub('texSuperscript','\^','R','á´¿')
+ call s:SuperSub('texSuperscript','\^','T','áµ€')
+ call s:SuperSub('texSuperscript','\^','U','áµ')
+ call s:SuperSub('texSuperscript','\^','V','â±½')
+ call s:SuperSub('texSuperscript','\^','W','ᵂ')
+ call s:SuperSub('texSuperscript','\^',',','ï¸')
+ call s:SuperSub('texSuperscript','\^',':','︓')
+ call s:SuperSub('texSuperscript','\^',';','︔')
+ call s:SuperSub('texSuperscript','\^','+','âº')
+ call s:SuperSub('texSuperscript','\^','-','â»')
+ call s:SuperSub('texSuperscript','\^','<','Ë‚')
+ call s:SuperSub('texSuperscript','\^','>','˃')
+ call s:SuperSub('texSuperscript','\^','/','ËŠ')
+ call s:SuperSub('texSuperscript','\^','(','â½')
+ call s:SuperSub('texSuperscript','\^',')','â¾')
+ call s:SuperSub('texSuperscript','\^','\.','Ë™')
+ call s:SuperSub('texSuperscript','\^','=','Ë­')
+ call s:SuperSub('texSubscript','_','0','â‚€')
+ call s:SuperSub('texSubscript','_','1','â‚')
+ call s:SuperSub('texSubscript','_','2','â‚‚')
+ call s:SuperSub('texSubscript','_','3','₃')
+ call s:SuperSub('texSubscript','_','4','â‚„')
+ call s:SuperSub('texSubscript','_','5','â‚…')
+ call s:SuperSub('texSubscript','_','6','₆')
+ call s:SuperSub('texSubscript','_','7','₇')
+ call s:SuperSub('texSubscript','_','8','₈')
+ call s:SuperSub('texSubscript','_','9','₉')
+ call s:SuperSub('texSubscript','_','a','â‚')
+ call s:SuperSub('texSubscript','_','e','â‚‘')
+ call s:SuperSub('texSubscript','_','h','â‚•')
+ call s:SuperSub('texSubscript','_','i','áµ¢')
+ call s:SuperSub('texSubscript','_','j','â±¼')
+ call s:SuperSub('texSubscript','_','k','â‚–')
+ call s:SuperSub('texSubscript','_','l','â‚—')
+ call s:SuperSub('texSubscript','_','m','ₘ')
+ call s:SuperSub('texSubscript','_','n','â‚™')
+ call s:SuperSub('texSubscript','_','o','â‚’')
+ call s:SuperSub('texSubscript','_','p','â‚š')
+ call s:SuperSub('texSubscript','_','r','áµ£')
+ call s:SuperSub('texSubscript','_','s','â‚›')
+ call s:SuperSub('texSubscript','_','t','ₜ')
+ call s:SuperSub('texSubscript','_','u','ᵤ')
+ call s:SuperSub('texSubscript','_','v','áµ¥')
+ call s:SuperSub('texSubscript','_','x','â‚“')
+ call s:SuperSub('texSubscript','_',',','ï¸')
+ call s:SuperSub('texSubscript','_','+','â‚Š')
+ call s:SuperSub('texSubscript','_','-','â‚‹')
+ call s:SuperSub('texSubscript','_','/','Ë')
+ call s:SuperSub('texSubscript','_','(','â‚')
+ call s:SuperSub('texSubscript','_',')','â‚Ž')
+ call s:SuperSub('texSubscript','_','\.','‸')
+ call s:SuperSub('texSubscript','_','r','áµ£')
+ call s:SuperSub('texSubscript','_','v','áµ¥')
+ call s:SuperSub('texSubscript','_','x','â‚“')
+ call s:SuperSub('texSubscript','_','\\beta\>' ,'ᵦ')
+ call s:SuperSub('texSubscript','_','\\delta\>','ᵨ')
+ call s:SuperSub('texSubscript','_','\\phi\>' ,'ᵩ')
+ call s:SuperSub('texSubscript','_','\\gamma\>','ᵧ')
+ call s:SuperSub('texSubscript','_','\\chi\>' ,'ᵪ')
+
+ delfun s:SuperSub
+ endif
+
+ " Accented characters and Ligatures: {{{2
+ if s:tex_conceal =~# 'a'
+ if b:tex_stylish
+ syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1
+ syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1
+ syn match texLigature '--'
+ syn match texLigature '---'
+ else
+ fun! s:Accents(chr,...)
+ let i= 1
+ for accent in ["`","\\'","^",'"','\~','\.','=',"c","H","k","r","u","v"]
+ if i > a:0
+ break
+ endif
+ if strlen(a:{i}) == 0 || a:{i} == ' ' || a:{i} == '?'
+ let i= i + 1
+ continue
+ endif
+ if accent =~# '\a'
+ exe "syn match texAccent '".'\\'.accent.'\(\s*{'.a:chr.'}\|\s\+'.a:chr.'\)'."' conceal cchar=".a:{i}
+ else
+ exe "syn match texAccent '".'\\'.accent.'\s*\({'.a:chr.'}\|'.a:chr.'\)'."' conceal cchar=".a:{i}
+ endif
+ let i= i + 1
+ endfor
+ endfun
+ " \` \' \^ \" \~ \. \= \c \H \k \r \u \v
+ call s:Accents('a','à','á','â','ä','ã','ȧ','Ä',' ',' ','Ä…','Ã¥','ă','ÇŽ')
+ call s:Accents('A','À','Ã','Â','Ä','Ã','Ȧ','Ä€',' ',' ','Ä„','Ã…','Ä‚','Ç')
+ call s:Accents('c',' ','ć','ĉ',' ',' ','Ä‹',' ','ç',' ',' ',' ',' ','Ä')
+ call s:Accents('C',' ','Ć','Ĉ',' ',' ','Ċ',' ','Ç',' ',' ',' ',' ','Č')
+ call s:Accents('d',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ä')
+ call s:Accents('D',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ÄŽ')
+ call s:Accents('e','è','é','ê','ë','ẽ','ė','ē','ȩ',' ','ę',' ','ĕ','ě')
+ call s:Accents('E','È','É','Ê','Ë','Ẽ','Ė','Ē','Ȩ',' ','Ę',' ','Ĕ','Ě')
+ call s:Accents('g',' ','ǵ','Ä',' ',' ','Ä¡',' ','Ä£',' ',' ',' ','ÄŸ','ǧ')
+ call s:Accents('G',' ','Ǵ','Ĝ',' ',' ','Ġ',' ','Ģ',' ',' ',' ','Ğ','Ǧ')
+ call s:Accents('h',' ',' ','Ä¥',' ',' ',' ',' ',' ',' ',' ',' ',' ','ÈŸ')
+ call s:Accents('H',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Èž')
+ call s:Accents('i','ì','í','î','ï','Ä©','į','Ä«',' ',' ','į',' ','Ä­','Ç')
+ call s:Accents('I','ÃŒ','Ã','ÃŽ','Ã','Ĩ','Ä°','Ī',' ',' ','Ä®',' ','Ĭ','Ç')
+ call s:Accents('J',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ç°')
+ call s:Accents('k',' ',' ',' ',' ',' ',' ',' ','Ä·',' ',' ',' ',' ','Ç©')
+ call s:Accents('K',' ',' ',' ',' ',' ',' ',' ','Ķ',' ',' ',' ',' ','Ǩ')
+ call s:Accents('l',' ','ĺ','ľ',' ',' ',' ',' ','ļ',' ',' ',' ',' ','ľ')
+ call s:Accents('L',' ','Ĺ','Ľ',' ',' ',' ',' ','Ļ',' ',' ',' ',' ','Ľ')
+ call s:Accents('n',' ','ń',' ',' ','ñ',' ',' ','ņ',' ',' ',' ',' ','ň')
+ call s:Accents('N',' ','Ń',' ',' ','Ñ',' ',' ','Ņ',' ',' ',' ',' ','Ň')
+ call s:Accents('o','ò','ó','ô','ö','õ','ȯ','Å',' ','Å‘','Ç«',' ','Å','Ç’')
+ call s:Accents('O','Ã’','Ó','Ô','Ö','Õ','È®','ÅŒ',' ','Å','Ǫ',' ','ÅŽ','Ç‘')
+ call s:Accents('r',' ','Å•',' ',' ',' ',' ',' ','Å—',' ',' ',' ',' ','Å™')
+ call s:Accents('R',' ','Ŕ',' ',' ',' ',' ',' ','Ŗ',' ',' ',' ',' ','Ř')
+ call s:Accents('s',' ','Å›','Å',' ',' ',' ',' ','ÅŸ',' ','È¿',' ',' ','Å¡')
+ call s:Accents('S',' ','Ś','Ŝ',' ',' ',' ',' ','Ş',' ',' ',' ',' ','Š')
+ call s:Accents('t',' ',' ',' ',' ',' ',' ',' ','Å£',' ',' ',' ',' ','Å¥')
+ call s:Accents('T',' ',' ',' ',' ',' ',' ',' ','Ţ',' ',' ',' ',' ','Ť')
+ call s:Accents('u','ù','ú','û','ü','ũ',' ','ū',' ','ű','ų','ů','ŭ','ǔ')
+ call s:Accents('U','Ù','Ú','Û','Ü','Ũ',' ','Ū',' ','Ű','Ų','Ů','Ŭ','Ǔ')
+ call s:Accents('w',' ',' ','ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ')
+ call s:Accents('W',' ',' ','Å´',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ')
+ call s:Accents('y','ỳ','ý','ŷ','ÿ','ỹ',' ',' ',' ',' ',' ',' ',' ',' ')
+ call s:Accents('Y','Ỳ','Ã','Ŷ','Ÿ','Ỹ',' ',' ',' ',' ',' ',' ',' ',' ')
+ call s:Accents('z',' ','ź',' ',' ',' ','ż',' ',' ',' ',' ',' ',' ','ž')
+ call s:Accents('Z',' ','Ź',' ',' ',' ','Ż',' ',' ',' ',' ',' ',' ','Ž')
+ call s:Accents('\\i','ì','í','î','ï','ĩ','į',' ',' ',' ',' ',' ','ĭ',' ')
+ " \` \' \^ \" \~ \. \= \c \H \k \r \u \v
+ delfun s:Accents
+ syn match texAccent '\\aa\>' conceal cchar=Ã¥
+ syn match texAccent '\\AA\>' conceal cchar=Ã…
+ syn match texAccent '\\o\>' conceal cchar=ø
+ syn match texAccent '\\O\>' conceal cchar=Ø
+ syn match texLigature '\\AE\>' conceal cchar=Æ
+ syn match texLigature '\\ae\>' conceal cchar=æ
+ syn match texLigature '\\oe\>' conceal cchar=Å“
+ syn match texLigature '\\OE\>' conceal cchar=Å’
+ syn match texLigature '\\ss\>' conceal cchar=ß
+ syn match texLigature '--' conceal cchar=–
+ syn match texLigature '---' conceal cchar=—
+ endif
+ endif
+endif
+
+" ---------------------------------------------------------------------
+" LaTeX synchronization: {{{1
+syn sync maxlines=200
+syn sync minlines=50
+
+syn sync match texSyncStop groupthere NONE "%stopzone\>"
+
+" Synchronization: {{{1
+" The $..$ and $$..$$ make for impossible sync patterns
+" (one can't tell if a "$$" starts or stops a math zone by itself)
+" The following grouptheres coupled with minlines above
+" help improve the odds of good syncing.
+if !exists("g:tex_no_math")
+ syn sync match texSyncMathZoneA groupthere NONE "\\end{abstract}"
+ syn sync match texSyncMathZoneA groupthere NONE "\\end{center}"
+ syn sync match texSyncMathZoneA groupthere NONE "\\end{description}"
+ syn sync match texSyncMathZoneA groupthere NONE "\\end{enumerate}"
+ syn sync match texSyncMathZoneA groupthere NONE "\\end{itemize}"
+ syn sync match texSyncMathZoneA groupthere NONE "\\end{table}"
+ syn sync match texSyncMathZoneA groupthere NONE "\\end{tabular}"
+ syn sync match texSyncMathZoneA groupthere NONE "\\\(sub\)*section\>"
+endif
+
+" ---------------------------------------------------------------------
+" Highlighting: {{{1
+
+" Define the default highlighting. {{{1
+if !exists("skip_tex_syntax_inits")
+
+ " TeX highlighting groups which should share similar highlighting
+ if !exists("g:tex_no_error")
+ if !exists("g:tex_no_math")
+ hi def link texBadMath texError
+ hi def link texBadPar texBadMath
+ hi def link texMathDelimBad texError
+ hi def link texMathError texError
+ if !b:tex_stylish
+ hi def link texOnlyMath texError
+ endif
+ endif
+ hi def link texError Error
+ endif
+
+ hi texBoldStyle gui=bold cterm=bold
+ hi texItalStyle gui=italic cterm=italic
+ hi texBoldItalStyle gui=bold,italic cterm=bold,italic
+ hi texItalBoldStyle gui=bold,italic cterm=bold,italic
+ hi def link texEmphStyle texItalStyle
+ hi def link texCite texRefZone
+ hi def link texDefCmd texDef
+ hi def link texDefName texDef
+ hi def link texDocType texCmdName
+ hi def link texDocTypeArgs texCmdArgs
+ hi def link texInputFileOpt texCmdArgs
+ hi def link texInputCurlies texDelimiter
+ hi def link texLigature texSpecialChar
+ if !exists("g:tex_no_math")
+ hi def link texMathDelimSet1 texMathDelim
+ hi def link texMathDelimSet2 texMathDelim
+ hi def link texMathDelimKey texMathDelim
+ hi def link texMathMatcher texMath
+ hi def link texAccent texStatement
+ hi def link texGreek texStatement
+ hi def link texSuperscript texStatement
+ hi def link texSubscript texStatement
+ hi def link texSuperscripts texSuperscript
+ hi def link texSubscripts texSubscript
+ hi def link texMathSymbol texStatement
+ hi def link texMathZoneV texMath
+ hi def link texMathZoneW texMath
+ hi def link texMathZoneX texMath
+ hi def link texMathZoneY texMath
+ hi def link texMathZoneV texMath
+ hi def link texMathZoneZ texMath
+ endif
+ hi def link texBeginEnd texCmdName
+ hi def link texBeginEndName texSection
+ hi def link texSpaceCode texStatement
+ hi def link texStyleStatement texStatement
+ hi def link texTypeSize texType
+ hi def link texTypeStyle texType
+
+ " Basic TeX highlighting groups
+ hi def link texCmdArgs Number
+ hi def link texCmdName Statement
+ hi def link texComment Comment
+ hi def link texDef Statement
+ hi def link texDefParm Special
+ hi def link texDelimiter Delimiter
+ hi def link texInput Special
+ hi def link texInputFile Special
+ hi def link texLength Number
+ hi def link texMath Special
+ hi def link texMathDelim Statement
+ hi def link texMathOper Operator
+ hi def link texNewCmd Statement
+ hi def link texNewEnv Statement
+ hi def link texOption Number
+ hi def link texRefZone Special
+ hi def link texSection PreCondit
+ hi def link texSpaceCodeChar Special
+ hi def link texSpecialChar SpecialChar
+ hi def link texStatement Statement
+ hi def link texString String
+ hi def link texTodo Todo
+ hi def link texType Type
+ hi def link texZone PreCondit
+
+endif
+
+" Cleanup: {{{1
+delc TexFold
+unlet s:extfname
+let b:current_syntax = "tex"
+let &cpo = s:keepcpo
+unlet s:keepcpo
+" vim: ts=8 fdm=marker
diff --git a/runtime/syntax/texinfo.vim b/runtime/syntax/texinfo.vim
new file mode 100644
index 0000000..79a4dfe
--- /dev/null
+++ b/runtime/syntax/texinfo.vim
@@ -0,0 +1,46 @@
+" Vim syntax file
+" Language: Texinfo (documentation format)
+" Maintainer: Robert Dodier <robert.dodier@gmail.com>
+" Latest Revision: 2021-12-15
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match texinfoControlSequence display '\(@end [a-zA-Z@]\+\|@[a-zA-Z@]\+\)'
+
+syn match texinfoComment display '^\s*\(@comment\|@c\)\>.*$'
+
+syn region texinfoCode matchgroup=texinfoControlSequence start="@code{" end="}" contains=ALL
+syn region texinfoVerb matchgroup=texinfoControlSequence start="@verb{" end="}" contains=ALL
+
+syn region texinfoArgument matchgroup=texinfoBrace start="{" end="}" contains=ALLBUT
+
+syn region texinfoExample matchgroup=texinfoControlSequence start="^@example\s*$" end="^@end example\s*$" contains=ALL
+
+syn region texinfoVerbatim matchgroup=texinfoControlSequence start="^@verbatim\s*$" end="^@end verbatim\s*$"
+
+syn region texinfoMenu matchgroup=texinfoControlSequence start="^@menu\s*$" end="^@end menu\s*$"
+
+if exists("g:texinfo_delimiters")
+ syn match texinfoDelimiter display '[][{}]'
+endif
+
+hi def link texinfoDelimiter Delimiter
+hi def link texinfoComment Comment
+hi def link texinfoControlSequence Identifier
+hi def link texinfoBrace Operator
+hi def link texinfoArgument Special
+hi def link texinfoExample String
+hi def link texinfoVerbatim String
+hi def link texinfoVerb String
+hi def link texinfoCode String
+hi def link texinfoMenu String
+
+let b:current_syntax = "texinfo"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/texmf.vim b/runtime/syntax/texmf.vim
new file mode 100644
index 0000000..d1268fa
--- /dev/null
+++ b/runtime/syntax/texmf.vim
@@ -0,0 +1,74 @@
+" Vim syntax file
+" This is a GENERATED FILE. Please always refer to source file at the URI below.
+" Language: Web2C TeX texmf.cnf configuration file
+" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
+" Last Change: 2001-05-13
+" URL: http://physics.muni.cz/~yeti/download/syntax/texmf.vim
+
+" Setup
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+" Comments
+syn match texmfComment "%..\+$" contains=texmfTodo
+syn match texmfComment "%\s*$" contains=texmfTodo
+syn keyword texmfTodo TODO FIXME XXX NOT contained
+
+" Constants and parameters
+syn match texmfPassedParameter "[-+]\=%\w\W"
+syn match texmfPassedParameter "[-+]\=%\w$"
+syn match texmfNumber "\<\d\+\>"
+syn match texmfVariable "\$\(\w\k*\|{\w\k*}\)"
+syn match texmfSpecial +\\"\|\\$+
+syn region texmfString start=+"+ end=+"+ skip=+\\"\\\\+ contains=texmfVariable,texmfSpecial,texmfPassedParameter
+
+" Assignments
+syn match texmfLHSStart "^\s*\w\k*" nextgroup=texmfLHSDot,texmfEquals
+syn match texmfLHSVariable "\w\k*" contained nextgroup=texmfLHSDot,texmfEquals
+syn match texmfLHSDot "\." contained nextgroup=texmfLHSVariable
+syn match texmfEquals "\s*=" contained
+
+" Specialities
+syn match texmfComma "," contained
+syn match texmfColons ":\|;"
+syn match texmfDoubleExclam "!!" contained
+
+" Catch errors caused by wrong parenthesization
+syn region texmfBrace matchgroup=texmfBraceBrace start="{" end="}" contains=ALLBUT,texmfTodo,texmfBraceError,texmfLHSVariable,texmfLHSDot transparent
+syn match texmfBraceError "}"
+
+" Define the default highlighting
+
+hi def link texmfComment Comment
+hi def link texmfTodo Todo
+
+hi def link texmfPassedParameter texmfVariable
+hi def link texmfVariable Identifier
+
+hi def link texmfNumber Number
+hi def link texmfString String
+
+hi def link texmfLHSStart texmfLHS
+hi def link texmfLHSVariable texmfLHS
+hi def link texmfLHSDot texmfLHS
+hi def link texmfLHS Type
+
+hi def link texmfEquals Normal
+
+hi def link texmfBraceBrace texmfDelimiter
+hi def link texmfComma texmfDelimiter
+hi def link texmfColons texmfDelimiter
+hi def link texmfDelimiter Preproc
+
+hi def link texmfDoubleExclam Statement
+hi def link texmfSpecial Special
+
+hi def link texmfBraceError texmfError
+hi def link texmfError Error
+
+
+let b:current_syntax = "texmf"
diff --git a/runtime/syntax/tf.vim b/runtime/syntax/tf.vim
new file mode 100644
index 0000000..47775b8
--- /dev/null
+++ b/runtime/syntax/tf.vim
@@ -0,0 +1,196 @@
+" Vim syntax file
+" Language: tf
+" Maintainer: Lutz Eymers <ixtab@polzin.com>
+" URL: http://www.isp.de/data/tf.vim
+" Email: send syntax_vim.tgz
+" Last Change: 2001 May 10
+"
+" Options lite_minlines = x to sync at least x lines backwards
+
+" Remove any old syntax stuff hanging around
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+if !exists("main_syntax")
+ let main_syntax = 'tf'
+endif
+
+" Special global variables
+syn keyword tfVar HOME LANG MAIL SHELL TERM TFHELP TFLIBDIR TFLIBRARY TZ contained
+syn keyword tfVar background backslash contained
+syn keyword tfVar bamf bg_output borg clearfull cleardone clock connect contained
+syn keyword tfVar emulation end_color gag gethostbyname gpri hook hilite contained
+syn keyword tfVar hiliteattr histsize hpri insert isize istrip kecho contained
+syn keyword tfVar kprefix login lp lpquote maildelay matching max_iter contained
+syn keyword tfVar max_recur mecho more mprefix oldslash promt_sec contained
+syn keyword tfVar prompt_usec proxy_host proxy_port ptime qecho qprefix contained
+syn keyword tfVar quite quitdone redef refreshtime scroll shpause snarf sockmload contained
+syn keyword tfVar start_color tabsize telopt sub time_format visual contained
+syn keyword tfVar watch_dog watchname wordpunct wrap wraplog wrapsize contained
+syn keyword tfVar wrapspace contained
+
+" Worldvar
+syn keyword tfWorld world_name world_character world_password world_host contained
+syn keyword tfWorld world_port world_mfile world_type contained
+
+" Number
+syn match tfNumber "-\=\<\d\+\>"
+
+" Float
+syn match tfFloat "\(-\=\<\d+\|-\=\)\.\d\+\>"
+
+" Operator
+syn match tfOperator "[-+=?:&|!]"
+syn match tfOperator "/[^*~@]"he=e-1
+syn match tfOperator ":="
+syn match tfOperator "[^/%]\*"hs=s+1
+syn match tfOperator "$\+[([{]"he=e-1,me=e-1
+syn match tfOperator "\^\[\+"he=s+1 contains=tfSpecialCharEsc
+
+" Relational
+syn match tfRelation "&&"
+syn match tfRelation "||"
+syn match tfRelation "[<>/!=]="
+syn match tfRelation "[<>]"
+syn match tfRelation "[!=]\~"
+syn match tfRelation "[=!]/"
+
+
+" Readonly Var
+syn match tfReadonly "[#*]" contained
+syn match tfReadonly "\<-\=L\=\d\{-}\>" contained
+syn match tfReadonly "\<P\(\d\+\|R\|L\)\>" contained
+syn match tfReadonly "\<R\>" contained
+
+" Identifier
+syn match tfIdentifier "%\+[a-zA-Z_#*-0-9]\w*" contains=tfVar,tfReadonly
+syn match tfIdentifier "%\+[{]"he=e-1,me=e-1
+syn match tfIdentifier "\$\+{[a-zA-Z_#*-0-9]\w*}" contains=tfWorld
+
+" Function names
+syn keyword tfFunctions ascii char columns echo filename ftime fwrite getopts
+syn keyword tfFunctions getpid idle kbdel kbgoto kbhead kblen kbmatch kbpoint
+syn keyword tfFunctions kbtail kbwordleft kbwordright keycode lines mod
+syn keyword tfFunctions moresize pad rand read regmatch send strcat strchr
+syn keyword tfFunctions strcmp strlen strncmp strrchr strrep strstr substr
+syn keyword tfFunctions systype time tolower toupper
+
+syn keyword tfStatement addworld bamf beep bind break cat changes connect contained
+syn keyword tfStatement dc def dokey echo edit escape eval export expr fg for contained
+syn keyword tfStatement gag getfile grab help hilite histsize hook if input contained
+syn keyword tfStatement kill lcd let list listsockets listworlds load contained
+syn keyword tfStatement localecho log nohilite not partial paste ps purge contained
+syn keyword tfStatement purgeworld putfile quit quote recall recordline save contained
+syn keyword tfStatement saveworld send sh shift sub substitute contained
+syn keyword tfStatement suspend telnet test time toggle trig trigger unbind contained
+syn keyword tfStatement undef undefn undeft unhook untrig unworld contained
+syn keyword tfStatement version watchdog watchname while world contained
+
+" Hooks
+syn keyword tfHook ACTIVITY BACKGROUND BAMF CONFAIL CONFLICT CONNECT DISCONNECT
+syn keyword tfHook KILL LOAD LOADFAIL LOG LOGIN MAIL MORE PENDING PENDING
+syn keyword tfHook PROCESS PROMPT PROXY REDEF RESIZE RESUME SEND SHADOW SHELL
+syn keyword tfHook SIGHUP SIGTERM SIGUSR1 SIGUSR2 WORLD
+
+" Conditional
+syn keyword tfConditional if endif then else elseif contained
+
+" Repeat
+syn keyword tfRepeat while do done repeat for contained
+
+" Statement
+syn keyword tfStatement break quit contained
+
+" Include
+syn keyword tfInclude require load save loaded contained
+
+" Define
+syn keyword tfDefine bind unbind def undef undefn undefn purge hook unhook trig untrig contained
+syn keyword tfDefine set unset setenv contained
+
+" Todo
+syn keyword tfTodo TODO Todo todo contained
+
+" SpecialChar
+syn match tfSpecialChar "\\[abcfnrtyv\\]" contained
+syn match tfSpecialChar "\\\d\{3}" contained contains=tfOctalError
+syn match tfSpecialChar "\\x[0-9a-fA-F]\{2}" contained
+syn match tfSpecialCharEsc "\[\+" contained
+
+syn match tfOctalError "[89]" contained
+
+" Comment
+syn region tfComment start="^;" end="$" contains=tfTodo
+
+" String
+syn region tfString oneline matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=tfIdentifier,tfSpecialChar,tfEscape
+syn region tfString matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tfIdentifier,tfSpecialChar,tfEscape
+
+syn match tfParentError "[)}\]]"
+
+" Parents
+syn region tfParent matchgroup=Delimiter start="(" end=")" contains=ALLBUT,tfReadonly
+syn region tfParent matchgroup=Delimiter start="\[" end="\]" contains=ALL
+syn region tfParent matchgroup=Delimiter start="{" end="}" contains=ALL
+
+syn match tfEndCommand "%%\{-};"
+syn match tfJoinLines "\\$"
+
+" Types
+
+syn match tfType "/[a-zA-Z_~@][a-zA-Z0-9_]*" contains=tfConditional,tfRepeat,tfStatement,tfInclude,tfDefine,tfStatement
+
+" Catch /quote .. '
+syn match tfQuotes "/quote .\{-}'" contains=ALLBUT,tfString
+" Catch $(/escape )
+syn match tfEscape "(/escape .*)"
+
+" sync
+if exists("tf_minlines")
+ exec "syn sync minlines=" . tf_minlines
+else
+ syn sync minlines=100
+endif
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link tfComment Comment
+hi def link tfString String
+hi def link tfNumber Number
+hi def link tfFloat Float
+hi def link tfIdentifier Identifier
+hi def link tfVar Identifier
+hi def link tfWorld Identifier
+hi def link tfReadonly Identifier
+hi def link tfHook Identifier
+hi def link tfFunctions Function
+hi def link tfRepeat Repeat
+hi def link tfConditional Conditional
+hi def link tfLabel Label
+hi def link tfStatement Statement
+hi def link tfType Type
+hi def link tfInclude Include
+hi def link tfDefine Define
+hi def link tfSpecialChar SpecialChar
+hi def link tfSpecialCharEsc SpecialChar
+hi def link tfParentError Error
+hi def link tfTodo Todo
+hi def link tfEndCommand Delimiter
+hi def link tfJoinLines Delimiter
+hi def link tfOperator Operator
+hi def link tfRelation Operator
+
+
+let b:current_syntax = "tf"
+
+if main_syntax == 'tf'
+ unlet main_syntax
+endif
+
+" vim: ts=8
diff --git a/runtime/syntax/tidy.vim b/runtime/syntax/tidy.vim
new file mode 100644
index 0000000..7ffda90
--- /dev/null
+++ b/runtime/syntax/tidy.vim
@@ -0,0 +1,276 @@
+" Vim syntax file
+" Language: HMTL Tidy Configuration
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2020 Sep 4
+
+" Preamble {{{1
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn iskeyword @,48-57,-,_
+
+" Values {{{1
+syn match tidyWordSeparator contained ",\|\s" nextgroup=tidyWord skipwhite skipnl
+syn match tidyMuteIDSeparator contained ",\|\s" nextgroup=tidyMuteID skipwhite skipnl
+
+syn case ignore
+syn keyword tidyBoolean contained t[rue] f[alse] y[es] n[o] 1 0
+syn keyword tidyAutoBoolean contained t[rue] f[alse] y[es] n[o] 1 0 auto
+syn case match
+syn keyword tidyCustomTags contained no blocklevel empty inline pre
+syn keyword tidyDoctype contained html5 omit auto strict loose transitional user
+syn keyword tidyEncoding contained raw ascii latin0 latin1 utf8 iso2022 mac win1252 ibm858 utf16le utf16be utf16 big5 shiftjis
+syn keyword tidyNewline contained LF CRLF CR
+syn match tidyNumber contained "\<\d\+\>"
+syn keyword tidyRepeat contained keep-first keep-last
+syn keyword tidySorter contained alpha none
+syn region tidyString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline
+syn region tidyString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ oneline
+" Tag and attribute lists
+syn match tidyWord contained "\<\k\+\>:\@!" nextgroup=tidyWordSeparator skipwhite skipnl
+
+" Mute Message IDs {{{2
+syn keyword tidyMuteID ADDED_MISSING_CHARSET ANCHOR_DUPLICATED
+ \ ANCHOR_NOT_UNIQUE APOS_UNDEFINED APPLET_MISSING_ALT AREA_MISSING_ALT
+ \ ASCII_REQUIRES_DESCRIPTION ASSOCIATE_LABELS_EXPLICITLY
+ \ ASSOCIATE_LABELS_EXPLICITLY_FOR ASSOCIATE_LABELS_EXPLICITLY_ID
+ \ ATTRIBUTE_IS_NOT_ALLOWED ATTRIBUTE_VALUE_REPLACED
+ \ ATTR_VALUE_NOT_LCASE AUDIO_MISSING_TEXT_AIFF AUDIO_MISSING_TEXT_AU
+ \ AUDIO_MISSING_TEXT_RA AUDIO_MISSING_TEXT_RM AUDIO_MISSING_TEXT_SND
+ \ AUDIO_MISSING_TEXT_WAV BACKSLASH_IN_URI BAD_ATTRIBUTE_VALUE
+ \ BAD_ATTRIBUTE_VALUE_REPLACED BAD_CDATA_CONTENT BAD_SUMMARY_HTML5
+ \ BAD_SURROGATE_LEAD BAD_SURROGATE_PAIR BAD_SURROGATE_TAIL
+ \ CANT_BE_NESTED COERCE_TO_ENDTAG COLOR_CONTRAST_ACTIVE_LINK
+ \ COLOR_CONTRAST_LINK COLOR_CONTRAST_TEXT COLOR_CONTRAST_VISITED_LINK
+ \ CONTENT_AFTER_BODY CUSTOM_TAG_DETECTED DATA_TABLE_MISSING_HEADERS
+ \ DATA_TABLE_MISSING_HEADERS_COLUMN DATA_TABLE_MISSING_HEADERS_ROW
+ \ DATA_TABLE_REQUIRE_MARKUP_COLUMN_HEADERS
+ \ DATA_TABLE_REQUIRE_MARKUP_ROW_HEADERS DISCARDING_UNEXPECTED
+ \ DOCTYPE_AFTER_TAGS DOCTYPE_MISSING DUPLICATE_FRAMESET
+ \ ELEMENT_NOT_EMPTY ELEMENT_VERS_MISMATCH_ERROR
+ \ ELEMENT_VERS_MISMATCH_WARN ENCODING_MISMATCH
+ \ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_APPLET
+ \ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_EMBED
+ \ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_OBJECT
+ \ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_SCRIPT ESCAPED_ILLEGAL_URI
+ \ FILE_CANT_OPEN FILE_CANT_OPEN_CFG FILE_NOT_FILE FIXED_BACKSLASH
+ \ FOUND_STYLE_IN_BODY FRAME_MISSING_LONGDESC FRAME_MISSING_NOFRAMES
+ \ FRAME_MISSING_TITLE FRAME_SRC_INVALID FRAME_TITLE_INVALID_NULL
+ \ FRAME_TITLE_INVALID_SPACES HEADERS_IMPROPERLY_NESTED
+ \ HEADER_USED_FORMAT_TEXT ID_NAME_MISMATCH ILLEGAL_NESTING
+ \ ILLEGAL_URI_CODEPOINT ILLEGAL_URI_REFERENCE
+ \ IMAGE_MAP_SERVER_SIDE_REQUIRES_CONVERSION
+ \ IMG_ALT_SUSPICIOUS_FILENAME IMG_ALT_SUSPICIOUS_FILE_SIZE
+ \ IMG_ALT_SUSPICIOUS_PLACEHOLDER IMG_ALT_SUSPICIOUS_TOO_LONG
+ \ IMG_BUTTON_MISSING_ALT IMG_MAP_CLIENT_MISSING_TEXT_LINKS
+ \ IMG_MAP_SERVER_REQUIRES_TEXT_LINKS IMG_MISSING_ALT IMG_MISSING_DLINK
+ \ IMG_MISSING_LONGDESC IMG_MISSING_LONGDESC_DLINK
+ \ INFORMATION_NOT_CONVEYED_APPLET INFORMATION_NOT_CONVEYED_IMAGE
+ \ INFORMATION_NOT_CONVEYED_INPUT INFORMATION_NOT_CONVEYED_OBJECT
+ \ INFORMATION_NOT_CONVEYED_SCRIPT INSERTING_AUTO_ATTRIBUTE
+ \ INSERTING_TAG INVALID_ATTRIBUTE INVALID_NCR INVALID_SGML_CHARS
+ \ INVALID_UTF16 INVALID_UTF8 INVALID_XML_ID JOINING_ATTRIBUTE
+ \ LANGUAGE_INVALID LANGUAGE_NOT_IDENTIFIED
+ \ LAYOUT_TABLES_LINEARIZE_PROPERLY LAYOUT_TABLE_INVALID_MARKUP
+ \ LINK_TEXT_MISSING LINK_TEXT_NOT_MEANINGFUL
+ \ LINK_TEXT_NOT_MEANINGFUL_CLICK_HERE LINK_TEXT_TOO_LONG
+ \ LIST_USAGE_INVALID_LI LIST_USAGE_INVALID_OL LIST_USAGE_INVALID_UL
+ \ MALFORMED_COMMENT MALFORMED_COMMENT_DROPPING MALFORMED_COMMENT_EOS
+ \ MALFORMED_COMMENT_WARN MALFORMED_DOCTYPE METADATA_MISSING
+ \ METADATA_MISSING_REDIRECT_AUTOREFRESH MISMATCHED_ATTRIBUTE_ERROR
+ \ MISMATCHED_ATTRIBUTE_WARN MISSING_ATTRIBUTE MISSING_ATTR_VALUE
+ \ MISSING_DOCTYPE MISSING_ENDTAG_BEFORE MISSING_ENDTAG_FOR
+ \ MISSING_ENDTAG_OPTIONAL MISSING_IMAGEMAP MISSING_QUOTEMARK
+ \ MISSING_QUOTEMARK_OPEN MISSING_SEMICOLON MISSING_SEMICOLON_NCR
+ \ MISSING_STARTTAG MISSING_TITLE_ELEMENT MOVED_STYLE_TO_HEAD
+ \ MULTIMEDIA_REQUIRES_TEXT NESTED_EMPHASIS NESTED_QUOTATION
+ \ NEWLINE_IN_URI NEW_WINDOWS_REQUIRE_WARNING_BLANK
+ \ NEW_WINDOWS_REQUIRE_WARNING_NEW NOFRAMES_CONTENT
+ \ NOFRAMES_INVALID_CONTENT NOFRAMES_INVALID_LINK
+ \ NOFRAMES_INVALID_NO_VALUE NON_MATCHING_ENDTAG OBJECT_MISSING_ALT
+ \ OBSOLETE_ELEMENT OPTION_REMOVED OPTION_REMOVED_APPLIED
+ \ OPTION_REMOVED_UNAPPLIED POTENTIAL_HEADER_BOLD
+ \ POTENTIAL_HEADER_ITALICS POTENTIAL_HEADER_UNDERLINE
+ \ PREVIOUS_LOCATION PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_APPLET
+ \ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_EMBED
+ \ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_OBJECT
+ \ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_SCRIPT PROPRIETARY_ATTRIBUTE
+ \ PROPRIETARY_ATTR_VALUE PROPRIETARY_ELEMENT REMOVED_HTML5
+ \ REMOVE_AUTO_REDIRECT REMOVE_AUTO_REFRESH REMOVE_BLINK_MARQUEE
+ \ REMOVE_FLICKER_ANIMATED_GIF REMOVE_FLICKER_APPLET
+ \ REMOVE_FLICKER_EMBED REMOVE_FLICKER_OBJECT REMOVE_FLICKER_SCRIPT
+ \ REPEATED_ATTRIBUTE REPLACE_DEPRECATED_HTML_APPLET
+ \ REPLACE_DEPRECATED_HTML_BASEFONT REPLACE_DEPRECATED_HTML_CENTER
+ \ REPLACE_DEPRECATED_HTML_DIR REPLACE_DEPRECATED_HTML_FONT
+ \ REPLACE_DEPRECATED_HTML_ISINDEX REPLACE_DEPRECATED_HTML_MENU
+ \ REPLACE_DEPRECATED_HTML_S REPLACE_DEPRECATED_HTML_STRIKE
+ \ REPLACE_DEPRECATED_HTML_U REPLACING_ELEMENT REPLACING_UNEX_ELEMENT
+ \ SCRIPT_MISSING_NOSCRIPT SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_CLICK
+ \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_DOWN
+ \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_MOVE
+ \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_OUT
+ \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_OVER
+ \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_UP SKIPOVER_ASCII_ART
+ \ SPACE_PRECEDING_XMLDECL STRING_ARGUMENT_BAD STRING_CONTENT_LOOKS
+ \ STRING_DOCTYPE_GIVEN STRING_MISSING_MALFORMED STRING_MUTING_TYPE
+ \ STRING_NO_SYSID STRING_UNKNOWN_OPTION
+ \ STYLESHEETS_REQUIRE_TESTING_LINK
+ \ STYLESHEETS_REQUIRE_TESTING_STYLE_ATTR
+ \ STYLESHEETS_REQUIRE_TESTING_STYLE_ELEMENT
+ \ STYLE_SHEET_CONTROL_PRESENTATION SUSPECTED_MISSING_QUOTE
+ \ TABLE_MAY_REQUIRE_HEADER_ABBR TABLE_MAY_REQUIRE_HEADER_ABBR_NULL
+ \ TABLE_MAY_REQUIRE_HEADER_ABBR_SPACES TABLE_MISSING_CAPTION
+ \ TABLE_MISSING_SUMMARY TABLE_SUMMARY_INVALID_NULL
+ \ TABLE_SUMMARY_INVALID_PLACEHOLDER TABLE_SUMMARY_INVALID_SPACES
+ \ TAG_NOT_ALLOWED_IN TEXT_EQUIVALENTS_REQUIRE_UPDATING_APPLET
+ \ TEXT_EQUIVALENTS_REQUIRE_UPDATING_OBJECT
+ \ TEXT_EQUIVALENTS_REQUIRE_UPDATING_SCRIPT TOO_MANY_ELEMENTS
+ \ TOO_MANY_ELEMENTS_IN TRIM_EMPTY_ELEMENT UNESCAPED_AMPERSAND
+ \ UNEXPECTED_ENDTAG UNEXPECTED_ENDTAG_ERR UNEXPECTED_ENDTAG_IN
+ \ UNEXPECTED_END_OF_FILE UNEXPECTED_END_OF_FILE_ATTR
+ \ UNEXPECTED_EQUALSIGN UNEXPECTED_GT UNEXPECTED_QUOTEMARK
+ \ UNKNOWN_ELEMENT UNKNOWN_ELEMENT_LOOKS_CUSTOM UNKNOWN_ENTITY
+ \ USING_BR_INPLACE_OF VENDOR_SPECIFIC_CHARS WHITE_IN_URI
+ \ XML_DECLARATION_DETECTED XML_ID_SYNTAX
+ \ contained nextgroup=tidyMuteIDSeparator skipwhite skipnl
+
+" Options {{{1
+syn keyword tidyCustomTagsOption custom-tags contained nextgroup=tidyCustomTagsDelimiter
+syn match tidyCustomTagsDelimiter ":" nextgroup=tidyCustomTags contained skipwhite
+
+syn keyword tidyBooleanOption add-meta-charset add-xml-decl
+ \ add-xml-pi add-xml-space anchor-as-name ascii-chars
+ \ assume-xml-procins bare break-before-br clean coerce-endtags
+ \ decorate-inferred-ul drop-empty-paras drop-empty-elements
+ \ drop-font-tags drop-proprietary-attributes enclose-block-text
+ \ enclose-text escape-cdata escape-scripts fix-backslash
+ \ fix-style-tags fix-uri force-output gdoc gnu-emacs hide-comments
+ \ hide-endtags indent-attributes indent-cdata indent-with-tabs
+ \ input-xml join-classes join-styles keep-tabs keep-time language
+ \ literal-attributes logical-emphasis lower-literals markup
+ \ merge-emphasis mute-id ncr numeric-entities omit-optional-tags
+ \ output-html output-xhtml output-xml preserve-entities
+ \ punctuation-wrap quiet quote-ampersand quote-marks quote-nbsp raw
+ \ replace-color show-filename show-info show-meta-change show-warnings
+ \ skip-nested split strict-tags-attributes tidy-mark
+ \ uppercase-attributes uppercase-tags warn-proprietary-attributes
+ \ word-2000 wrap-asp wrap-attributes wrap-jste wrap-php
+ \ wrap-script-literals wrap-sections write-back
+ \ contained nextgroup=tidyBooleanDelimiter
+
+syn match tidyBooleanDelimiter ":" nextgroup=tidyBoolean contained skipwhite
+
+syn keyword tidyAutoBooleanOption fix-bad-comments indent merge-divs merge-spans output-bom show-body-only vertical-space contained nextgroup=tidyAutoBooleanDelimiter
+syn match tidyAutoBooleanDelimiter ":" nextgroup=tidyAutoBoolean contained skipwhite
+
+syn keyword tidyCSSSelectorOption css-prefix contained nextgroup=tidyCSSSelectorDelimiter
+syn match tidyCSSSelectorDelimiter ":" nextgroup=tidyCSSSelector contained skipwhite
+
+syn keyword tidyDoctypeOption doctype contained nextgroup=tidyDoctypeDelimiter
+syn match tidyDoctypeDelimiter ":" nextgroup=tidyDoctype,tidyString contained skipwhite
+
+syn keyword tidyEncodingOption char-encoding input-encoding output-encoding contained nextgroup=tidyEncodingDelimiter
+syn match tidyEncodingDelimiter ":" nextgroup=tidyEncoding contained skipwhite
+
+syn keyword tidyIntegerOption accessibility-check doctype-mode indent-spaces show-errors tab-size wrap contained nextgroup=tidyIntegerDelimiter
+syn match tidyIntegerDelimiter ":" nextgroup=tidyNumber contained skipwhite
+
+syn keyword tidyNameOption slide-style contained nextgroup=tidyNameDelimiter
+syn match tidyNameDelimiter ":" nextgroup=tidyName contained skipwhite
+
+syn keyword tidyNewlineOption newline contained nextgroup=tidyNewlineDelimiter
+syn match tidyNewlineDelimiter ":" nextgroup=tidyNewline contained skipwhite
+
+syn keyword tidyAttributesOption priority-attributes contained nextgroup=tidyAttributesDelimiter
+syn match tidyAttributesDelimiter ":" nextgroup=tidyWord contained skipwhite
+
+syn keyword tidyTagsOption new-blocklevel-tags new-empty-tags new-inline-tags new-pre-tags contained nextgroup=tidyTagsDelimiter
+syn match tidyTagsDelimiter ":" nextgroup=tidyWord contained skipwhite
+
+syn keyword tidyRepeatOption repeated-attributes contained nextgroup=tidyRepeatDelimiter
+syn match tidyRepeatDelimiter ":" nextgroup=tidyRepeat contained skipwhite
+
+syn keyword tidySorterOption sort-attributes contained nextgroup=tidySorterDelimiter
+syn match tidySorterDelimiter ":" nextgroup=tidySorter contained skipwhite
+
+syn keyword tidyStringOption alt-text error-file gnu-emacs-file output-file contained nextgroup=tidyStringDelimiter
+syn match tidyStringDelimiter ":" nextgroup=tidyString contained skipwhite
+
+syn keyword tidyMuteOption mute contained nextgroup=tidyMuteDelimiter
+syn match tidyMuteDelimiter ":" nextgroup=tidyMuteID contained skipwhite
+
+syn cluster tidyOptions contains=tidy.*Option
+
+" Option line anchor {{{1
+syn match tidyStart "^" nextgroup=@tidyOptions
+" Long standing bug - option lines (except the first) with leading whitespace
+" are silently ignored.
+syn match tidyErrorStart '^\s\+\ze\S'
+
+" Comments {{{1
+syn match tidyComment "^\s*//.*$" contains=tidyTodo
+syn match tidyComment "^\s*#.*$" contains=tidyTodo
+syn keyword tidyTodo TODO NOTE FIXME XXX contained
+
+" Default highlighting {{{1
+hi def link tidyAttributesOption Identifier
+hi def link tidyAutoBooleanOption Identifier
+hi def link tidyBooleanOption Identifier
+hi def link tidyCSSSelectorOption Identifier
+hi def link tidyCustomTagsOption Identifier
+hi def link tidyDoctypeOption Identifier
+hi def link tidyEncodingOption Identifier
+hi def link tidyIntegerOption Identifier
+hi def link tidyMuteOption Identifier
+hi def link tidyNameOption Identifier
+hi def link tidyNewlineOption Identifier
+hi def link tidyRepeatOption Identifier
+hi def link tidySorterOption Identifier
+hi def link tidyStringOption Identifier
+hi def link tidyTagsOption Identifier
+
+hi def link tidyAttributesDelimiter Special
+hi def link tidyAutoBooleanDelimiter Special
+hi def link tidyBooleanDelimiter Special
+hi def link tidyCSSSelectorDelimiter Special
+hi def link tidyCustomTagsDelimiter Special
+hi def link tidyDoctypeDelimiter Special
+hi def link tidyEncodingDelimiter Special
+hi def link tidyIntegerDelimiter Special
+hi def link tidyMuteDelimiter Special
+hi def link tidyNameDelimiter Special
+hi def link tidyNewlineDelimiter Special
+hi def link tidyRepeatDelimiter Special
+hi def link tidySorterDelimiter Special
+hi def link tidyStringDelimiter Special
+hi def link tidyTagsDelimiter Special
+
+hi def link tidyAutoBoolean Boolean
+hi def link tidyBoolean Boolean
+hi def link tidyCustomTags Constant
+hi def link tidyDoctype Constant
+hi def link tidyEncoding Constant
+hi def link tidyMuteID Constant
+hi def link tidyNewline Constant
+hi def link tidyNumber Number
+hi def link tidyRepeat Constant
+hi def link tidySorter Constant
+hi def link tidyString String
+hi def link tidyWord Constant
+
+hi def link tidyComment Comment
+hi def link tidyTodo Todo
+
+hi def link tidyErrorStart Error
+
+" Postscript {{{1
+let b:current_syntax = "tidy"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 fdm=marker
diff --git a/runtime/syntax/tilde.vim b/runtime/syntax/tilde.vim
new file mode 100644
index 0000000..d2a3360
--- /dev/null
+++ b/runtime/syntax/tilde.vim
@@ -0,0 +1,41 @@
+" Vim syntax file
+" This file works only for Vim6.x
+" Language: Tilde
+" Maintainer: Tobias Rundström <tobi@tildesoftware.net>
+" URL: http://www.tildesoftware.net
+" CVS: $Id: tilde.vim,v 1.1 2004/06/13 19:31:51 vimboss Exp $
+
+if exists("b:current_syntax")
+ finish
+endif
+
+"tilde dosent care ...
+syn case ignore
+
+syn match tildeFunction "\~[a-z_0-9]\+"ms=s+1
+syn region tildeParen start="(" end=")" contains=tildeString,tildeNumber,tildeVariable,tildeField,tildeSymtab,tildeFunction,tildeParen,tildeHexNumber,tildeOperator
+syn region tildeString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ keepend
+syn region tildeString contained start=+'+ skip=+\\\\\|\\"+ end=+'+ keepend
+syn match tildeNumber "\d" contained
+syn match tildeOperator "or\|and" contained
+syn match tildeHexNumber "0x[a-z0-9]\+" contained
+syn match tildeVariable "$[a-z_0-9]\+" contained
+syn match tildeField "%[a-z_0-9]\+" contained
+syn match tildeSymtab "@[a-z_0-9]\+" contained
+syn match tildeComment "^#.*"
+syn region tildeCurly start=+{+ end=+}+ contained contains=tildeLG,tildeString,tildeNumber,tildeVariable,tildeField,tildeFunction,tildeSymtab,tildeHexNumber
+syn match tildeLG "=>" contained
+
+
+hi def link tildeComment Comment
+hi def link tildeFunction Operator
+hi def link tildeOperator Operator
+hi def link tildeString String
+hi def link tildeNumber Number
+hi def link tildeHexNumber Number
+hi def link tildeVariable Identifier
+hi def link tildeField Identifier
+hi def link tildeSymtab Identifier
+hi def link tildeError Error
+
+let b:current_syntax = "tilde"
diff --git a/runtime/syntax/tli.vim b/runtime/syntax/tli.vim
new file mode 100644
index 0000000..b96d4a2
--- /dev/null
+++ b/runtime/syntax/tli.vim
@@ -0,0 +1,58 @@
+" Vim syntax file
+" Language: TealInfo source files (*.tli)
+" Maintainer: Kurt W. Andrews <kandrews@fastrans.net>
+" Last Change: 2001 May 10
+" Version: 1.0
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" TealInfo Objects
+
+syn keyword tliObject LIST POPLIST WINDOW POPWINDOW OUTLINE CHECKMARK GOTO
+syn keyword tliObject LABEL IMAGE RECT TRES PASSWORD POPEDIT POPIMAGE CHECKLIST
+
+" TealInfo Fields
+
+syn keyword tliField X Y W H BX BY BW BH SX SY FONT BFONT CYCLE DELAY TABS
+syn keyword tliField STYLE BTEXT RECORD DATABASE KEY TARGET DEFAULT TEXT
+syn keyword tliField LINKS MAXVAL
+
+" TealInfo Styles
+
+syn keyword tliStyle INVERTED HORIZ_RULE VERT_RULE NO_SCROLL NO_BORDER BOLD_BORDER
+syn keyword tliStyle ROUND_BORDER ALIGN_RIGHT ALIGN_CENTER ALIGN_LEFT_START ALIGN_RIGHT_START
+syn keyword tliStyle ALIGN_CENTER_START ALIGN_LEFT_END ALIGN_RIGHT_END ALIGN_CENTER_END
+syn keyword tliStyle LOCKOUT BUTTON_SCROLL BUTTON_SELECT STROKE_FIND FILLED REGISTER
+
+" String and Character constants
+
+syn match tliSpecial "@"
+syn region tliString start=+"+ end=+"+
+
+"TealInfo Numbers, identifiers and comments
+
+syn case ignore
+syn match tliNumber "\d*"
+syn match tliIdentifier "\<\h\w*\>"
+syn match tliComment "#.*"
+syn case match
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link tliNumber Number
+hi def link tliString String
+hi def link tliComment Comment
+hi def link tliSpecial SpecialChar
+hi def link tliIdentifier Identifier
+hi def link tliObject Statement
+hi def link tliField Type
+hi def link tliStyle PreProc
+
+
+let b:current_syntax = "tli"
+
+" vim: ts=8
diff --git a/runtime/syntax/tmux.vim b/runtime/syntax/tmux.vim
new file mode 100644
index 0000000..042b96e
--- /dev/null
+++ b/runtime/syntax/tmux.vim
@@ -0,0 +1,154 @@
+" Language: tmux(1) configuration file
+" Version: 3.3-rc (git-964deae4)
+" URL: https://github.com/ericpruitt/tmux.vim/
+" Maintainer: Eric Pruitt <eric.pruitt@gmail.com>
+" License: 2-Clause BSD (http://opensource.org/licenses/BSD-2-Clause)
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" Explicitly change compatibility options to Vim's defaults because this file
+" uses line continuations.
+let s:original_cpo = &cpo
+set cpo&vim
+
+let b:current_syntax = "tmux"
+syntax iskeyword @,48-57,_,192-255,-
+syntax case match
+
+syn keyword tmuxAction none any current other
+syn keyword tmuxBoolean off on yes no
+
+syn keyword tmuxTodo FIXME NOTE TODO XXX contained
+
+syn match tmuxColour /\<colou\?r[0-9]\+\>/ display
+syn match tmuxKey /\(C-\|M-\|\^\)\+\S\+/ display
+syn match tmuxNumber /\<\d\+\>/ display
+syn match tmuxFlags /\s-\a\+/ display
+syn match tmuxVariableExpansion /\$\({[A-Za-z_]\w*}\|[A-Za-z_]\w*\)/ display
+syn match tmuxControl /^\s*%\(if\|elif\|else\|endif\)\>/
+syn match tmuxEscape /\\\(u\x\{4\}\|U\x\{8\}\|\o\{3\}\|[\\ernt$]\)/ display
+
+syn region tmuxComment start=/#/ skip=/\\\@<!\\$/ end=/$/ contains=tmuxTodo,@Spell
+
+syn region tmuxString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=tmuxFormatString,tmuxEscape,tmuxVariableExpansion,@Spell
+syn region tmuxUninterpolatedString start=+'+ skip=+\\$+ excludenl end=+'+ end='$' contains=tmuxFormatString,@Spell
+
+" TODO: Figure out how escaping works inside of #(...) and #{...} blocks.
+syn region tmuxFormatString start=/#[#DFhHIPSTW]/ end=// contained keepend
+syn region tmuxFormatString start=/#{/ skip=/#{.\{-}}/ end=/}/ keepend
+syn region tmuxFormatString start=/#(/ skip=/#(.\{-})/ end=/)/ contained keepend
+
+" At the time of this writing, the latest tmux release will parse a line
+" reading "abc=xyz set-option ..." as an assignment followed by a command
+" hence the presence of "\s" in the "end" argument.
+syn region tmuxAssignment matchgroup=tmuxVariable start=/^\s*[A-Za-z_]\w*=\@=/ skip=/\\$\|\\\s/ end=/\s\|$/ contains=tmuxString,tmuxUninterpolatedString,tmuxVariableExpansion,tmuxControl,tmuxEscape
+
+hi def link tmuxFormatString Identifier
+hi def link tmuxAction Boolean
+hi def link tmuxBoolean Boolean
+hi def link tmuxCommands Keyword
+hi def link tmuxControl PreCondit
+hi def link tmuxComment Comment
+hi def link tmuxEscape Special
+hi def link tmuxEscapeUnquoted Special
+hi def link tmuxKey Special
+hi def link tmuxNumber Number
+hi def link tmuxFlags Identifier
+hi def link tmuxOptions Function
+hi def link tmuxString String
+hi def link tmuxTodo Todo
+hi def link tmuxUninterpolatedString
+\ String
+hi def link tmuxVariable Identifier
+hi def link tmuxVariableExpansion Identifier
+
+" Make the foreground of colourXXX keywords match the color they represent
+" when g:tmux_syntax_colors is unset or set to a non-zero value.
+" Darker colors have their background set to white.
+if get(g:, "tmux_syntax_colors", 1)
+ for s:i in range(0, 255)
+ let s:bg = (!s:i || s:i == 16 || (s:i > 231 && s:i < 235)) ? 15 : "none"
+ exec "syn match tmuxColour" . s:i . " /\\<colou\\?r" . s:i . "\\>/ display"
+\ " | highlight tmuxColour" . s:i . " ctermfg=" . s:i . " ctermbg=" . s:bg
+ endfor
+endif
+
+syn keyword tmuxOptions
+\ activity-action after-bind-key after-capture-pane after-copy-mode
+\ after-display-message after-display-panes after-kill-pane
+\ after-list-buffers after-list-clients after-list-keys after-list-panes
+\ after-list-sessions after-list-windows after-load-buffer after-lock-server
+\ after-new-session after-new-window after-paste-buffer after-pipe-pane
+\ after-queue after-refresh-client after-rename-session after-rename-window
+\ after-resize-pane after-resize-window after-save-buffer
+\ after-select-layout after-select-pane after-select-window after-send-keys
+\ after-set-buffer after-set-environment after-set-hook after-set-option
+\ after-show-environment after-show-messages after-show-options
+\ after-split-window after-unbind-key aggressive-resize alert-activity
+\ alert-bell alert-silence allow-passthrough allow-rename alternate-screen
+\ assume-paste-time automatic-rename automatic-rename-format backspace
+\ base-index bell-action buffer-limit client-active client-attached
+\ client-detached client-focus-in client-focus-out client-resized
+\ client-session-changed clock-mode-colour clock-mode-style command-alias
+\ copy-command copy-mode-current-match-style copy-mode-mark-style
+\ copy-mode-match-style cursor-colour cursor-style default-command
+\ default-shell default-size default-terminal destroy-unattached
+\ detach-on-destroy display-panes-active-colour display-panes-colour
+\ display-panes-time display-time editor escape-time exit-empty
+\ exit-unattached extended-keys fill-character focus-events history-file
+\ history-limit key-table lock-after-time lock-command main-pane-height
+\ main-pane-width message-command-style message-limit message-style
+\ mode-keys mode-style monitor-activity monitor-bell monitor-silence mouse
+\ other-pane-height other-pane-width pane-active-border-style
+\ pane-base-index pane-border-format pane-border-indicators
+\ pane-border-lines pane-border-status pane-border-style pane-colours
+\ pane-died pane-exited pane-focus-in pane-focus-out pane-mode-changed
+\ pane-set-clipboard pane-title-changed popup-border-lines
+\ popup-border-style popup-style prefix prefix2 prompt-history-limit
+\ remain-on-exit remain-on-exit-format renumber-windows repeat-time
+\ scroll-on-clear session-closed session-created session-renamed
+\ session-window-changed set-clipboard set-titles set-titles-string
+\ silence-action status status-bg status-fg status-format status-interval
+\ status-justify status-keys status-left status-left-length
+\ status-left-style status-position status-right status-right-length
+\ status-right-style status-style synchronize-panes terminal-features
+\ terminal-overrides update-environment user-keys visual-activity
+\ visual-bell visual-silence window-active-style window-layout-changed
+\ window-linked window-pane-changed window-renamed window-resized
+\ window-size window-status-activity-style window-status-bell-style
+\ window-status-current-format window-status-current-style
+\ window-status-format window-status-last-style window-status-separator
+\ window-status-style window-style window-unlinked word-separators
+\ wrap-search xterm-keys
+
+syn keyword tmuxCommands
+\ attach attach-session bind bind-key break-pane breakp capture-pane
+\ capturep choose-buffer choose-client choose-session choose-tree
+\ choose-window clear-history clear-prompt-history clearhist clearphist
+\ clock-mode command-prompt confirm confirm-before copy-mode customize-mode
+\ delete-buffer deleteb detach detach-client display display-menu
+\ display-message display-panes display-popup displayp find-window findw has
+\ has-session if if-shell info join-pane joinp kill-pane kill-server
+\ kill-session kill-window killp killw last last-pane last-window lastp
+\ link-window linkw list-buffers list-clients list-commands list-keys
+\ list-panes list-sessions list-windows load-buffer loadb lock lock-client
+\ lock-server lock-session lockc locks ls lsb lsc lscm lsk lsp lsw menu
+\ move-pane move-window movep movew new new-session new-window neww next
+\ next-layout next-window nextl paste-buffer pasteb pipe-pane pipep popup
+\ prev previous-layout previous-window prevl refresh refresh-client rename
+\ rename-session rename-window renamew resize-pane resize-window resizep
+\ resizew respawn-pane respawn-window respawnp respawnw rotate-window
+\ rotatew run run-shell save-buffer saveb select-layout select-pane
+\ select-window selectl selectp selectw send send-keys send-prefix
+\ server-info set set-buffer set-environment set-hook set-option
+\ set-window-option setb setenv setw show show-buffer show-environment
+\ show-hooks show-messages show-options show-prompt-history
+\ show-window-options showb showenv showmsgs showphist showw source
+\ source-file split-pane split-window splitp splitw start start-server
+\ suspend-client suspendc swap-pane swap-window swapp swapw switch-client
+\ switchc unbind unbind-key unlink-window unlinkw wait wait-for
+
+let &cpo = s:original_cpo
+unlet! s:original_cpo s:bg s:i
diff --git a/runtime/syntax/toml.vim b/runtime/syntax/toml.vim
new file mode 100644
index 0000000..bcb1b0b
--- /dev/null
+++ b/runtime/syntax/toml.vim
@@ -0,0 +1,81 @@
+" Vim syntax file
+" Language: TOML
+" Homepage: https://github.com/cespare/vim-toml
+" Maintainer: Aman Verma
+" Previous Maintainer: Caleb Spare <cespare@gmail.com>
+" Last Change: Oct 8, 2021
+
+if exists('b:current_syntax')
+ finish
+endif
+
+syn match tomlEscape /\\[btnfr"/\\]/ display contained
+syn match tomlEscape /\\u\x\{4}/ contained
+syn match tomlEscape /\\U\x\{8}/ contained
+syn match tomlLineEscape /\\$/ contained
+
+" Basic strings
+syn region tomlString oneline start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=tomlEscape
+" Multi-line basic strings
+syn region tomlString start=/"""/ end=/"""/ contains=tomlEscape,tomlLineEscape
+" Literal strings
+syn region tomlString oneline start=/'/ end=/'/
+" Multi-line literal strings
+syn region tomlString start=/'''/ end=/'''/
+
+syn match tomlInteger /[+-]\=\<[1-9]\(_\=\d\)*\>/ display
+syn match tomlInteger /[+-]\=\<0\>/ display
+syn match tomlInteger /[+-]\=\<0x[[:xdigit:]]\(_\=[[:xdigit:]]\)*\>/ display
+syn match tomlInteger /[+-]\=\<0o[0-7]\(_\=[0-7]\)*\>/ display
+syn match tomlInteger /[+-]\=\<0b[01]\(_\=[01]\)*\>/ display
+syn match tomlInteger /[+-]\=\<\(inf\|nan\)\>/ display
+
+syn match tomlFloat /[+-]\=\<\d\(_\=\d\)*\.\d\+\>/ display
+syn match tomlFloat /[+-]\=\<\d\(_\=\d\)*\(\.\d\(_\=\d\)*\)\=[eE][+-]\=\d\(_\=\d\)*\>/ display
+
+syn match tomlBoolean /\<\%(true\|false\)\>/ display
+
+" https://tools.ietf.org/html/rfc3339
+syn match tomlDate /\d\{4\}-\d\{2\}-\d\{2\}/ display
+syn match tomlDate /\d\{2\}:\d\{2\}:\d\{2\}\%(\.\d\+\)\?/ display
+syn match tomlDate /\d\{4\}-\d\{2\}-\d\{2\}[T ]\d\{2\}:\d\{2\}:\d\{2\}\%(\.\d\+\)\?\%(Z\|[+-]\d\{2\}:\d\{2\}\)\?/ display
+
+syn match tomlDotInKey /\v[^.]+\zs\./ contained display
+syn match tomlKey /\v(^|[{,])\s*\zs[[:alnum:]._-]+\ze\s*\=/ contains=tomlDotInKey display
+syn region tomlKeyDq oneline start=/\v(^|[{,])\s*\zs"/ end=/"\ze\s*=/ contains=tomlEscape
+syn region tomlKeySq oneline start=/\v(^|[{,])\s*\zs'/ end=/'\ze\s*=/
+
+syn region tomlTable oneline start=/^\s*\[[^\[]/ end=/\]/ contains=tomlKey,tomlKeyDq,tomlKeySq,tomlDotInKey
+
+syn region tomlTableArray oneline start=/^\s*\[\[/ end=/\]\]/ contains=tomlKey,tomlKeyDq,tomlKeySq,tomlDotInKey
+
+syn region tomlKeyValueArray start=/=\s*\[\zs/ end=/\]/ contains=@tomlValue
+
+syn region tomlArray start=/\[/ end=/\]/ contains=@tomlValue contained
+
+syn cluster tomlValue contains=tomlArray,tomlString,tomlInteger,tomlFloat,tomlBoolean,tomlDate,tomlComment
+
+syn keyword tomlTodo TODO FIXME XXX BUG contained
+
+syn match tomlComment /#.*/ contains=@Spell,tomlTodo
+
+hi def link tomlComment Comment
+hi def link tomlTodo Todo
+hi def link tomlTableArray Title
+hi def link tomlTable Title
+hi def link tomlDotInKey Normal
+hi def link tomlKeySq Identifier
+hi def link tomlKeyDq Identifier
+hi def link tomlKey Identifier
+hi def link tomlDate Constant
+hi def link tomlBoolean Boolean
+hi def link tomlFloat Float
+hi def link tomlInteger Number
+hi def link tomlString String
+hi def link tomlLineEscape SpecialChar
+hi def link tomlEscape SpecialChar
+
+syn sync minlines=500
+let b:current_syntax = 'toml'
+
+" vim: et sw=2 sts=2
diff --git a/runtime/syntax/tpp.vim b/runtime/syntax/tpp.vim
new file mode 100644
index 0000000..e2b307b
--- /dev/null
+++ b/runtime/syntax/tpp.vim
@@ -0,0 +1,83 @@
+" Vim syntax file
+" Language: tpp - Text Presentation Program
+" Maintainer: Debian Vim Maintainers
+" Former Maintainer: Gerfried Fuchs <alfie@ist.org>
+" Last Change: 2023 Jan 16
+" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/tpp.vim
+" Filenames: *.tpp
+" License: BSD
+"
+" XXX This file is in need of a new maintainer, Debian VIM Maintainers maintain
+" it only because patches have been submitted for it by Debian users and the
+" former maintainer was MIA (Missing In Action), taking over its
+" maintenance was thus the only way to include those patches.
+" If you care about this file, and have time to maintain it please do so!
+"
+" Comments are very welcome - but please make sure that you are commenting on
+" the latest version of this file.
+" SPAM is _NOT_ welcome - be ready to be reported!
+
+" quit when a syntax file was already loaded
+if exists('b:current_syntax')
+ finish
+endif
+
+if !exists('main_syntax')
+ let main_syntax = 'tpp'
+endif
+
+
+"" list of the legal switches/options
+syn match tppAbstractOptionKey contained "^--\%(author\|title\|date\|footer\) *" nextgroup=tppString
+syn match tppPageLocalOptionKey contained "^--\%(heading\|center\|right\|huge\|sethugefont\|exec\) *" nextgroup=tppString
+syn match tppPageLocalSwitchKey contained "^--\%(horline\|-\|\%(begin\|end\)\%(\%(shell\)\?output\|slide\%(left\|right\|top\|bottom\)\)\|\%(bold\|rev\|ul\)\%(on\|off\)\|withborder\)"
+syn match tppNewPageOptionKey contained "^--newpage *" nextgroup=tppString
+syn match tppColorOptionKey contained "^--\%(\%(bg\|fg\)\?color\) *"
+syn match tppTimeOptionKey contained "^--sleep *"
+
+syn match tppString contained ".*"
+syn match tppColor contained "\%(white\|yellow\|red\|green\|blue\|cyan\|magenta\|black\|default\)"
+syn match tppTime contained "\d\+"
+
+syn region tppPageLocalSwitch start="^--" end="$" contains=tppPageLocalSwitchKey oneline
+syn region tppColorOption start="^--\%(\%(bg\|fg\)\?color\)" end="$" contains=tppColorOptionKey,tppColor oneline
+syn region tppTimeOption start="^--sleep" end="$" contains=tppTimeOptionKey,tppTime oneline
+syn region tppNewPageOption start="^--newpage" end="$" contains=tppNewPageOptionKey oneline
+syn region tppPageLocalOption start="^--\%(heading\|center\|right\|huge\|sethugefont\|exec\)" end="$" contains=tppPageLocalOptionKey oneline
+syn region tppAbstractOption start="^--\%(author\|title\|date\|footer\)" end="$" contains=tppAbstractOptionKey oneline
+
+if main_syntax !=# 'sh'
+ " shell command
+ syn include @tppShExec syntax/sh.vim
+ unlet b:current_syntax
+
+ syn region shExec matchgroup=tppPageLocalOptionKey start='^--exec *' keepend end='$' contains=@tppShExec
+
+endif
+
+syn match tppComment "^--##.*$"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link tppAbstractOptionKey Special
+hi def link tppPageLocalOptionKey Keyword
+hi def link tppPageLocalSwitchKey Keyword
+hi def link tppColorOptionKey Keyword
+hi def link tppTimeOptionKey Comment
+hi def link tppNewPageOptionKey PreProc
+hi def link tppString String
+hi def link tppColor String
+hi def link tppTime Number
+hi def link tppComment Comment
+hi def link tppAbstractOption Error
+hi def link tppPageLocalOption Error
+hi def link tppPageLocalSwitch Error
+hi def link tppColorOption Error
+hi def link tppNewPageOption Error
+hi def link tppTimeOption Error
+
+
+let b:current_syntax = 'tpp'
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/trasys.vim b/runtime/syntax/trasys.vim
new file mode 100644
index 0000000..d52b5ee
--- /dev/null
+++ b/runtime/syntax/trasys.vim
@@ -0,0 +1,160 @@
+" Vim syntax file
+" Language: TRASYS input file
+" Maintainer: Adrian Nagle, anagle@ball.com
+" Last Change: 2003 May 11
+" Filenames: *.inp
+" URL: http://www.naglenet.org/vim/syntax/trasys.vim
+" MAIN URL: http://www.naglenet.org/vim/
+
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+" Force free-form fortran format
+let fortran_free_source=1
+
+" Load FORTRAN syntax file
+runtime! syntax/fortran.vim
+unlet b:current_syntax
+
+
+" Ignore case
+syn case ignore
+
+
+
+" Define keywords for TRASYS
+syn keyword trasysOptions model rsrec info maxfl nogo dmpdoc
+syn keyword trasysOptions rsi rti rso rto bcdou cmerg emerg
+syn keyword trasysOptions user1 nnmin erplot
+
+syn keyword trasysSurface icsn tx ty tz rotx roty rotz inc bcsn
+syn keyword trasysSurface nnx nny nnz nnax nnr nnth unnx
+syn keyword trasysSurface unny unnz unnax unnr unnth type idupsf
+syn keyword trasysSurface imagsf act active com shade bshade axmin
+syn keyword trasysSurface axmax zmin zmax rmin rmax thmin thmin
+syn keyword trasysSurface thmax alpha emiss trani trans spri sprs
+syn keyword trasysSurface refno posit com dupbcs dimensions
+syn keyword trasysSurface dimension position prop surfn
+
+syn keyword trasysSurfaceType rect trap disk cyl cone sphere parab
+syn keyword trasysSurfaceType box5 box6 shpero tor ogiv elem tape poly
+
+syn keyword trasysSurfaceArgs ff di top bottom in out both no only
+
+syn keyword trasysArgs fig smn nodea zero only ir sol
+syn keyword trasysArgs both wband stepn initl
+
+syn keyword trasysOperations orbgen build
+
+"syn keyword trasysSubRoutine call
+syn keyword trasysSubRoutine chgblk ndata ndatas odata odatas
+syn keyword trasysSubRoutine pldta ffdata cmdata adsurf rbdata
+syn keyword trasysSubRoutine rtdata pffshd orbit1 orbit2 orient
+syn keyword trasysSubRoutine didt1 didt1s didt2 didt2s spin
+syn keyword trasysSubRoutine spinav dicomp distab drdata gbdata
+syn keyword trasysSubRoutine gbaprx rkdata rcdata aqdata stfaq
+syn keyword trasysSubRoutine qodata qoinit modar modpr modtr
+syn keyword trasysSubRoutine modprs modshd moddat rstoff rston
+syn keyword trasysSubRoutine rsmerg ffread diread ffusr1 diusr1
+syn keyword trasysSubRoutine surfp didt3 didt3s romain stfrc
+syn keyword trasysSubRoutine rornt rocstr romove flxdata title
+
+syn keyword trassyPrcsrSegm nplot oplot plot cmcal ffcal rbcal
+syn keyword trassyPrcsrSegm rtcal dical drcal sfcal gbcal rccal
+syn keyword trassyPrcsrSegm rkcal aqcal qocal
+
+
+
+" Define matches for TRASYS
+syn match trasysOptions "list source"
+syn match trasysOptions "save source"
+syn match trasysOptions "no print"
+
+"syn match trasysSurface "^K *.* [^$]"
+"syn match trasysSurface "^D *[0-9]*\.[0-9]\+"
+"syn match trasysSurface "^I *.*[0-9]\+\.\="
+"syn match trasysSurface "^N *[0-9]\+"
+"syn match trasysSurface "^M *[a-z[A-Z0-9]\+"
+"syn match trasysSurface "^B[C][S] *[a-zA-Z0-9]*"
+"syn match trasysSurface "^S *SURFN.*[0-9]"
+syn match trasysSurface "P[0-9]* *="he=e-1
+
+syn match trasysIdentifier "^L "he=e-1
+syn match trasysIdentifier "^K "he=e-1
+syn match trasysIdentifier "^D "he=e-1
+syn match trasysIdentifier "^I "he=e-1
+syn match trasysIdentifier "^N "he=e-1
+syn match trasysIdentifier "^M "he=e-1
+syn match trasysIdentifier "^B[C][S]"
+syn match trasysIdentifier "^S "he=e-1
+
+syn match trasysComment "^C.*$"
+syn match trasysComment "^R.*$"
+syn match trasysComment "\$.*$"
+
+syn match trasysHeader "^header[^,]*"
+
+syn match trasysMacro "^FAC"
+
+syn match trasysInteger "-\=\<[0-9]*\>"
+syn match trasysFloat "-\=\<[0-9]*\.[0-9]*"
+syn match trasysScientific "-\=\<[0-9]*\.[0-9]*E[-+]\=[0-9]\+\>"
+
+syn match trasysBlank "' \+'"hs=s+1,he=e-1
+
+syn match trasysEndData "^END OF DATA"
+
+if exists("thermal_todo")
+ execute 'syn match trasysTodo ' . '"^'.thermal_todo.'.*$"'
+else
+ syn match trasysTodo "^?.*$"
+endif
+
+
+
+" Define regions for TRASYS
+syn region trasysComment matchgroup=trasysHeader start="^HEADER DOCUMENTATION DATA" end="^HEADER[^,]*"
+
+
+
+" Define synchronizing patterns for TRASYS
+syn sync maxlines=500
+syn sync match trasysSync grouphere trasysComment "^HEADER DOCUMENTATION DATA"
+
+
+
+" Define the default highlighting
+" Only when an item doesn't have highlighting yet
+
+hi def link trasysOptions Special
+hi def link trasysSurface Special
+hi def link trasysSurfaceType Constant
+hi def link trasysSurfaceArgs Constant
+hi def link trasysArgs Constant
+hi def link trasysOperations Statement
+hi def link trasysSubRoutine Statement
+hi def link trassyPrcsrSegm PreProc
+hi def link trasysIdentifier Identifier
+hi def link trasysComment Comment
+hi def link trasysHeader Typedef
+hi def link trasysMacro Macro
+hi def link trasysInteger Number
+hi def link trasysFloat Float
+hi def link trasysScientific Float
+
+hi def link trasysBlank SpecialChar
+
+hi def link trasysEndData Macro
+
+hi def link trasysTodo Todo
+
+
+
+let b:current_syntax = "trasys"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/treetop.vim b/runtime/syntax/treetop.vim
new file mode 100644
index 0000000..60bbf26
--- /dev/null
+++ b/runtime/syntax/treetop.vim
@@ -0,0 +1,110 @@
+" Vim syntax file
+" Language: Treetop
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2011-03-14
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword treetopTodo
+ \ contained
+ \ TODO
+ \ FIXME
+ \ XXX
+ \ NOTE
+
+syn match treetopComment
+ \ '#.*'
+ \ display
+ \ contains=treetopTodo
+
+syn include @treetopRuby syntax/ruby.vim
+unlet b:current_syntax
+
+syn keyword treetopKeyword
+ \ require
+ \ end
+syn region treetopKeyword
+ \ matchgroup=treetopKeyword
+ \ start='\<\%(grammar\|include\|module\)\>\ze\s'
+ \ end='$'
+ \ transparent
+ \ oneline
+ \ keepend
+ \ contains=@treetopRuby
+syn keyword treetopKeyword
+ \ rule
+ \ nextgroup=treetopRuleName
+ \ skipwhite skipnl
+
+syn match treetopGrammarName
+ \ '\u\w*'
+ \ contained
+
+syn match treetopRubyModuleName
+ \ '\u\w*'
+ \ contained
+
+syn match treetopRuleName
+ \ '\h\w*'
+ \ contained
+
+syn region treetopString
+ \ matchgroup=treetopStringDelimiter
+ \ start=+"+
+ \ end=+"+
+syn region treetopString
+ \ matchgroup=treetopStringDelimiter
+ \ start=+'+
+ \ end=+'+
+
+syn region treetopCharacterClass
+ \ matchgroup=treetopCharacterClassDelimiter
+ \ start=+\[+
+ \ skip=+\\\]+
+ \ end=+\]+
+
+syn region treetopRubyBlock
+ \ matchgroup=treetopRubyBlockDelimiter
+ \ start=+{+
+ \ end=+}+
+ \ contains=@treetopRuby
+
+syn region treetopSemanticPredicate
+ \ matchgroup=treetopSemanticPredicateDelimiter
+ \ start=+[!&]{+
+ \ end=+}+
+ \ contains=@treetopRuby
+
+syn region treetopSubclassDeclaration
+ \ matchgroup=treetopSubclassDeclarationDelimiter
+ \ start=+<+
+ \ end=+>+
+ \ contains=@treetopRuby
+
+syn match treetopEllipsis
+ \ +''+
+
+hi def link treetopTodo Todo
+hi def link treetopComment Comment
+hi def link treetopKeyword Keyword
+hi def link treetopGrammarName Constant
+hi def link treetopRubyModuleName Constant
+hi def link treetopRuleName Identifier
+hi def link treetopString String
+hi def link treetopStringDelimiter treetopString
+hi def link treetopCharacterClass treetopString
+hi def link treetopCharacterClassDelimiter treetopCharacterClass
+hi def link treetopRubyBlockDelimiter PreProc
+hi def link treetopSemanticPredicateDelimiter PreProc
+hi def link treetopSubclassDeclarationDelimiter PreProc
+hi def link treetopEllipsis Special
+
+let b:current_syntax = 'treetop'
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/trustees.vim b/runtime/syntax/trustees.vim
new file mode 100644
index 0000000..3a7d26e
--- /dev/null
+++ b/runtime/syntax/trustees.vim
@@ -0,0 +1,44 @@
+" Vim syntax file
+" Language: trustees
+" Maintainer: Nima Talebi <nima@it.net.au>
+" Last Change: 2022 Jun 14
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syntax case match
+syntax sync minlines=0 maxlines=0
+
+" Errors & Comments
+syntax match tfsError /.*/
+highlight link tfsError Error
+syntax keyword tfsSpecialComment TODO XXX FIXME contained
+highlight link tfsSpecialComment Todo
+syntax match tfsComment ~\s*#.*~ contains=tfsSpecialComment
+highlight link tfsComment Comment
+
+" Operators & Delimiters
+highlight link tfsSpecialChar Operator
+syntax match tfsSpecialChar ~[*!+]~ contained
+highlight link tfsDelimiter Delimiter
+syntax match tfsDelimiter ~:~ contained
+
+" Trustees Rules - Part 1 of 3 - The Device
+syntax region tfsRuleDevice matchgroup=tfsDeviceContainer start=~\[/~ end=~\]~ nextgroup=tfsRulePath oneline
+highlight link tfsRuleDevice Label
+highlight link tfsDeviceContainer PreProc
+
+" Trustees Rules - Part 2 of 3 - The Path
+syntax match tfsRulePath ~/[-_a-zA-Z0-9/]*~ nextgroup=tfsRuleACL contained contains=tfsDelimiter
+highlight link tfsRulePath String
+
+" Trustees Rules - Part 3 of 3 - The ACLs
+syntax match tfsRuleACL ~\(:\(\*\|[+]\{0,1\}[a-zA-Z0-9/]\+\):[RWEBXODCU!]\+\)\+$~ contained contains=tfsDelimiter,tfsRuleWho,tfsRuleWhat
+syntax match tfsRuleWho ~\(\*\|[+]\{0,1\}[a-zA-Z0-9/]\+\)~ contained contains=tfsSpecialChar
+highlight link tfsRuleWho Identifier
+syntax match tfsRuleWhat ~[RWEBXODCU!]\+~ contained contains=tfsSpecialChar
+highlight link tfsRuleWhat Structure
+
+let b:current_syntax = 'trustees'
diff --git a/runtime/syntax/tsalt.vim b/runtime/syntax/tsalt.vim
new file mode 100644
index 0000000..8dd2a24
--- /dev/null
+++ b/runtime/syntax/tsalt.vim
@@ -0,0 +1,206 @@
+" Vim syntax file
+" Language: Telix (Modem Comm Program) SALT Script
+" Maintainer: Sean M. McKee <mckee@misslink.net>
+" Last Change: 2012 Feb 03 by Thilo Six
+" Version Info: @(#)tsalt.vim 1.5 97/12/16 08:11:15
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" turn case matching off
+syn case ignore
+
+"FUNCTIONS
+" Character Handling Functions
+syn keyword tsaltFunction IsAscii IsAlNum IsAlpha IsCntrl IsDigit
+syn keyword tsaltFunction IsLower IsUpper ToLower ToUpper
+
+" Connect Device Operations
+syn keyword tsaltFunction Carrier cInp_Cnt cGetC cGetCT cPutC cPutN
+syn keyword tsaltFunction cPutS cPutS_TR FlushBuf Get_Baud
+syn keyword tsaltFunction Get_DataB Get_Port Get_StopB Hangup
+syn keyword tsaltFunction KillConnectDevice MakeConnectDevice
+syn keyword tsaltFunction Send_Brk Set_ConnectDevice Set_Port
+
+" File Input/Output Operations
+syn keyword tsaltFunction fClearErr fClose fDelete fError fEOF fFlush
+syn keyword tsaltFunction fGetC fGetS FileAttr FileFind FileSize
+syn keyword tsaltFunction FileTime fnStrip fOpen fPutC fPutS fRead
+syn keyword tsaltFunction fRename fSeek fTell fWrite
+
+" File Transfers and Logs
+syn keyword tsaltFunction Capture Capture_Stat Printer Receive Send
+syn keyword tsaltFunction Set_DefProt UsageLog Usage_Stat UStamp
+
+" Input String Matching
+syn keyword tsaltFunction Track Track_AddChr Track_Free Track_Hit
+syn keyword tsaltFunction WaitFor
+
+" Keyboard Operations
+syn keyword tsaltFunction InKey InKeyW KeyGet KeyLoad KeySave KeySet
+
+" Miscellaneous Functions
+syn keyword tsaltFunction ChatMode Dos Dial DosFunction ExitTelix
+syn keyword tsaltFunction GetEnv GetFon HelpScreen LoadFon NewDir
+syn keyword tsaltFunction Randon Redial RedirectDOS Run
+syn keyword tsaltFunction Set_Terminal Show_Directory TelixVersion
+syn keyword tsaltFunction Terminal TransTab Update_Term
+
+" Script Management
+syn keyword tsaltFunction ArgCount Call CallD CompileScript GetRunPath
+syn keyword tsaltFunction Is_Loaded Load_Scr ScriptVersion
+syn keyword tsaltFunction TelixForWindows Unload_Scr
+
+" Sound Functions
+syn keyword tsaltFunction Alarm PlayWave Tone
+
+" String Handling
+syn keyword tsaltFunction CopyChrs CopyStr DelChrs GetS GetSXY
+syn keyword tsaltFunction InputBox InsChrs ItoS SetChr StoI StrCat
+syn keyword tsaltFunction StrChr StrCompI StrLen StrLower StrMaxLen
+syn keyword tsaltFunction StrPos StrPosI StrUpper SubChr SubChrs
+syn keyword tsaltFunction SubStr
+
+" Time, Date, and Timer Operations
+syn keyword tsaltFunction CurTime Date Delay Delay_Scr Get_OnlineTime
+syn keyword tsaltFunction tDay tHour tMin tMonth tSec tYear Time
+syn keyword tsaltFunction Time_Up Timer_Free Time_Restart
+syn keyword tsaltFunction Time_Start Time_Total
+
+" Video Operations
+syn keyword tsaltFunction Box CNewLine Cursor_OnOff Clear_Scr
+syn keyword tsaltFunction GetTermHeight GetTermWidth GetX GetY
+syn keyword tsaltFunction GotoXY MsgBox NewLine PrintC PrintC_Trm
+syn keyword tsaltFunction PrintN PrintN_Trm PrintS PrintS_Trm
+syn keyword tsaltFunction PrintSC PRintSC_Trm
+syn keyword tsaltFunction PStrA PStrAXY Scroll Status_Wind vGetChr
+syn keyword tsaltFunction vGetChrs vGetChrsA vPutChr vPutChrs
+syn keyword tsaltFunction vPutChrsA vRstrArea vSaveArea
+
+" Dynamic Data Exchange (DDE) Operations
+syn keyword tsaltFunction DDEExecute DDEInitate DDEPoke DDERequest
+syn keyword tsaltFunction DDETerminate DDETerminateAll
+"END FUNCTIONS
+
+"PREDEFINED VARAIABLES
+syn keyword tsaltSysVar _add_lf _alarm_on _answerback_str _asc_rcrtrans
+syn keyword tsaltSysVar _asc_remabort _asc_rlftrans _asc_scpacing
+syn keyword tsaltSysVar _asc_scrtrans _asc_secho _asc_slpacing
+syn keyword tsaltSysVar _asc_spacechr _asc_striph _back_color
+syn keyword tsaltSysVar _capture_fname _connect_str _dest_bs
+syn keyword tsaltSysVar _dial_pause _dial_time _dial_post
+syn keyword tsaltSysVar _dial_pref1 _dial_pref2 _dial_pref3
+syn keyword tsaltSysVar _dial_pref4 _dir_prog _down_dir
+syn keyword tsaltSysVar _entry_bbstype _entry_comment _entry_enum
+syn keyword tsaltSysVar _entry_name _entry_num _entry_logonname
+syn keyword tsaltSysVar _entry_pass _fore_color _image_file
+syn keyword tsaltSysVar _local_echo _mdm_hang_str _mdm_init_str
+syn keyword tsaltSysVar _no_connect1 _no_connect2 _no_connect3
+syn keyword tsaltSysVar _no_connect4 _no_connect5 _redial_stop
+syn keyword tsaltSysVar _scr_chk_key _script_dir _sound_on
+syn keyword tsaltSysVar _strip_high _swap_bs _telix_dir _up_dir
+syn keyword tsaltSysVar _usage_fname _zmodauto _zmod_rcrash
+syn keyword tsaltSysVar _zmod_scrash
+"END PREDEFINED VARAIABLES
+
+"TYPE
+syn keyword tsaltType str int
+"END TYPE
+
+"KEYWORDS
+syn keyword tsaltStatement goto break return continue
+syn keyword tsaltConditional if then else
+syn keyword tsaltRepeat while for do
+"END KEYWORDS
+
+syn keyword tsaltTodo contained TODO
+
+" the rest is pretty close to C -----------------------------------------
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match tsaltSpecial contained "\^\d\d\d\|\^."
+syn region tsaltString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tsaltSpecial
+syn match tsaltCharacter "'[^\\]'"
+syn match tsaltSpecialCharacter "'\\.'"
+
+"catch errors caused by wrong parenthesis
+syn region tsaltParen transparent start='(' end=')' contains=ALLBUT,tsaltParenError,tsaltIncluded,tsaltSpecial,tsaltTodo
+syn match tsaltParenError ")"
+syn match tsaltInParen contained "[{}]"
+
+hi link tsaltParenError tsaltError
+hi link tsaltInParen tsaltError
+
+"integer number, or floating point number without a dot and with "f".
+syn match tsaltNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"
+"floating point number, with dot, optional exponent
+syn match tsaltFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, starting with a dot, optional exponent
+syn match tsaltFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match tsaltFloat "\<\d\+e[-+]\=\d\+[fl]\=\>"
+"hex number
+syn match tsaltNumber "0x[0-9a-f]\+\(u\=l\=\|lu\)\>"
+"syn match cIdentifier "\<[a-z_][a-z0-9_]*\>"
+
+syn region tsaltComment start="/\*" end="\*/" contains=cTodo
+syn match tsaltComment "//.*" contains=cTodo
+syn match tsaltCommentError "\*/"
+
+syn region tsaltPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=tsaltComment,tsaltString,tsaltCharacter,tsaltNumber,tsaltCommentError
+syn region tsaltIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match tsaltIncluded contained "<[^>]*>"
+syn match tsaltInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=tsaltIncluded
+"syn match TelixSalyLineSkip "\\$"
+syn region tsaltDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,tsaltPreCondit,tsaltIncluded,tsaltInclude,tsaltDefine,tsaltInParen
+syn region tsaltPreProc start="^[ \t]*#[ \t]*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,tsaltPreCondit,tsaltIncluded,tsaltInclude,tsaltDefine,tsaltInParen
+
+" Highlight User Labels
+syn region tsaltMulti transparent start='?' end=':' contains=ALLBUT,tsaltIncluded,tsaltSpecial,tsaltTodo
+
+syn sync ccomment tsaltComment
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link tsaltFunction Statement
+hi def link tsaltSysVar Type
+"hi def link tsaltLibFunc UserDefFunc
+"hi def link tsaltConstants Type
+"hi def link tsaltFuncArg Type
+"hi def link tsaltOperator Operator
+"hi def link tsaltLabel Label
+"hi def link tsaltUserLabel Label
+hi def link tsaltConditional Conditional
+hi def link tsaltRepeat Repeat
+hi def link tsaltCharacter SpecialChar
+hi def link tsaltSpecialCharacter SpecialChar
+hi def link tsaltNumber Number
+hi def link tsaltFloat Float
+hi def link tsaltCommentError tsaltError
+hi def link tsaltInclude Include
+hi def link tsaltPreProc PreProc
+hi def link tsaltDefine Macro
+hi def link tsaltIncluded tsaltString
+hi def link tsaltError Error
+hi def link tsaltStatement Statement
+hi def link tsaltPreCondit PreCondit
+hi def link tsaltType Type
+hi def link tsaltString String
+hi def link tsaltComment Comment
+hi def link tsaltSpecial Special
+hi def link tsaltTodo Todo
+
+
+let b:current_syntax = "tsalt"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
diff --git a/runtime/syntax/tsscl.vim b/runtime/syntax/tsscl.vim
new file mode 100644
index 0000000..fd2a5e2
--- /dev/null
+++ b/runtime/syntax/tsscl.vim
@@ -0,0 +1,204 @@
+" Vim syntax file
+" Language: TSS (Thermal Synthesizer System) Command Line
+" Maintainer: Adrian Nagle, anagle@ball.com
+" Last Change: 2003 May 11
+" Filenames: *.tsscl
+" URL: http://www.naglenet.org/vim/syntax/tsscl.vim
+" MAIN URL: http://www.naglenet.org/vim/
+
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+
+" Ignore case
+syn case ignore
+
+
+
+"
+"
+" Begin syntax definitions for tss geomtery file.
+"
+
+" Load TSS geometry syntax file
+"source $VIM/myvim/tssgm.vim
+"source $VIMRUNTIME/syntax/c.vim
+
+" Define keywords for TSS
+syn keyword tssclCommand begin radk list heatrates attr draw
+
+syn keyword tssclKeyword cells rays error nodes levels objects cpu
+syn keyword tssclKeyword units length positions energy time unit solar
+syn keyword tssclKeyword solar_constant albedo planet_power
+
+syn keyword tssclEnd exit
+
+syn keyword tssclUnits cm feet meters inches
+syn keyword tssclUnits Celsius Kelvin Fahrenheit Rankine
+
+
+
+" Define matches for TSS
+syn match tssclString /"[^"]\+"/ contains=ALLBUT,tssInteger,tssclKeyword,tssclCommand,tssclEnd,tssclUnits
+
+syn match tssclComment "#.*$"
+
+" rational and logical operators
+" < Less than
+" > Greater than
+" <= Less than or equal
+" >= Greater than or equal
+" == or = Equal to
+" != Not equal to
+" && or & Logical AND
+" || or | Logical OR
+" ! Logical NOT
+"
+" algebraic operators:
+" ^ or ** Exponentation
+" * Multiplication
+" / Division
+" % Remainder
+" + Addition
+" - Subtraction
+"
+syn match tssclOper "||\||\|&&\|&\|!=\|!\|>=\|<=\|>\|<\|+\|-\|^\|\*\*\|\*\|/\|%\|==\|=\|\." skipwhite
+
+" CLI Directive Commands, with arguments
+"
+" BASIC COMMAND LIST
+" *ADD input_source
+" *ARITHMETIC { [ON] | OFF }
+" *CLOSE unit_number
+" *CPU
+" *DEFINE
+" *ECHO[/qualifiers] { [ON] | OFF }
+" *ELSE [IF { 0 | 1 } ]
+" *END { IF | WHILE }
+" *EXIT
+" *IF { 0 | 1 }
+" *LIST/n list variable
+" *OPEN[/r | /r+ | /w | /w+ ] unit_number file_name
+" *PROMPT prompt_string sybol_name
+" *READ/unit=unit_number[/LOCAL | /GLOBAL ] sym1 [sym2, [sym3 ...]]
+" *REWIND
+" *STOP
+" *STRCMP string_1 string_2 difference
+" *SYSTEM command
+" *UNDEFINE[/LOCAL][/GLOBAL] symbol_name
+" *WHILE { 0 | 1 }
+" *WRITE[/unit=unit_number] output text
+"
+syn match tssclDirective "\*ADD"
+syn match tssclDirective "\*ARITHMETIC \+\(ON\|OFF\)"
+syn match tssclDirective "\*CLOSE"
+syn match tssclDirective "\*CPU"
+syn match tssclDirective "\*DEFINE"
+syn match tssclDirective "\*ECHO"
+syn match tssclConditional "\*ELSE"
+syn match tssclConditional "\*END \+\(IF\|WHILE\)"
+syn match tssclDirective "\*EXIT"
+syn match tssclConditional "\*IF"
+syn match tssclDirective "\*LIST"
+syn match tssclDirective "\*OPEN"
+syn match tssclDirective "\*PROMPT"
+syn match tssclDirective "\*READ"
+syn match tssclDirective "\*REWIND"
+syn match tssclDirective "\*STOP"
+syn match tssclDirective "\*STRCMP"
+syn match tssclDirective "\*SYSTEM"
+syn match tssclDirective "\*UNDEFINE"
+syn match tssclConditional "\*WHILE"
+syn match tssclDirective "\*WRITE"
+
+syn match tssclContChar "-$"
+
+" C library functoins
+" Bessel functions (jn, yn)
+" Error and complementary error fuctions (erf, erfc)
+" Exponential functions (exp)
+" Logrithm (log, log10)
+" Power (pow)
+" Square root (sqrt)
+" Floor (floor)
+" Ceiling (ceil)
+" Floating point remainder (fmod)
+" Floating point absolute value (fabs)
+" Gamma (gamma)
+" Euclidean distance function (hypot)
+" Hperbolic functions (sinh, cosh, tanh)
+" Trigometric functions in radians (sin, cos, tan, asin, acos, atan, atan2)
+" Trigometric functions in degrees (sind, cosd, tand, asind, acosd, atand,
+" atan2d)
+"
+" local varialbles: cl_arg1, cl_arg2, etc. (cl_arg is an array of arguments)
+" cl_args is the number of arguments
+"
+"
+" I/O: *PROMPT, *WRITE, *READ
+"
+" Conditional branching:
+" IF, ELSE IF, END
+" *IF value *IF I==10
+" *ELSE IF value *ELSE IF I<10
+" *ELSE *ELSE
+" *ENDIF *ENDIF
+"
+"
+" Iterative looping:
+" WHILE
+" *WHILE test
+" .....
+" *END WHILE
+"
+"
+" EXAMPLE:
+" *DEFINE I = 1
+" *WHILE (I <= 10)
+" *WRITE I = 'I'
+" *DEFINE I = (I + 1)
+" *END WHILE
+"
+
+syn match tssclQualifier "/[^/ ]\+"hs=s+1
+syn match tssclSymbol "'\S\+'"
+"syn match tssclSymbol2 " \S\+ " contained
+
+syn match tssclInteger "-\=\<[0-9]*\>"
+syn match tssclFloat "-\=\<[0-9]*\.[0-9]*"
+syn match tssclScientific "-\=\<[0-9]*\.[0-9]*E[-+]\=[0-9]\+\>"
+
+
+
+" Define the default highlighting
+" Only when an item doesn't have highlighting yet
+
+hi def link tssclCommand Statement
+hi def link tssclKeyword Special
+hi def link tssclEnd Macro
+hi def link tssclUnits Special
+
+hi def link tssclComment Comment
+hi def link tssclDirective Statement
+hi def link tssclConditional Conditional
+hi def link tssclContChar Macro
+hi def link tssclQualifier Typedef
+hi def link tssclSymbol Identifier
+hi def link tssclSymbol2 Symbol
+hi def link tssclString String
+hi def link tssclOper Operator
+
+hi def link tssclInteger Number
+hi def link tssclFloat Number
+hi def link tssclScientific Number
+
+
+
+let b:current_syntax = "tsscl"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/tssgm.vim b/runtime/syntax/tssgm.vim
new file mode 100644
index 0000000..8ca7962
--- /dev/null
+++ b/runtime/syntax/tssgm.vim
@@ -0,0 +1,98 @@
+" Vim syntax file
+" Language: TSS (Thermal Synthesizer System) Geometry
+" Maintainer: Adrian Nagle, anagle@ball.com
+" Last Change: 2003 May 11
+" Filenames: *.tssgm
+" URL: http://www.naglenet.org/vim/syntax/tssgm.vim
+" MAIN URL: http://www.naglenet.org/vim/
+
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+
+" Ignore case
+syn case ignore
+
+
+
+"
+"
+" Begin syntax definitions for tss geomtery file.
+"
+
+" Define keywords for TSS
+syn keyword tssgmParam units mirror param active sides submodel include
+syn keyword tssgmParam iconductor nbeta ngamma optics material thickness color
+syn keyword tssgmParam initial_temp
+syn keyword tssgmParam initial_id node_ids node_add node_type
+syn keyword tssgmParam gamma_boundaries gamma_add beta_boundaries
+syn keyword tssgmParam p1 p2 p3 p4 p5 p6 rot1 rot2 rot3 tx ty tz
+
+syn keyword tssgmSurfType rectangle trapezoid disc ellipse triangle
+syn keyword tssgmSurfType polygon cylinder cone sphere ellipic-cone
+syn keyword tssgmSurfType ogive torus box paraboloid hyperboloid ellipsoid
+syn keyword tssgmSurfType quadrilateral trapeziod
+
+syn keyword tssgmArgs OUT IN DOWN BOTH DOUBLE NONE SINGLE RADK CC FECC
+syn keyword tssgmArgs white red blue green yellow orange violet pink
+syn keyword tssgmArgs turquoise grey black
+syn keyword tssgmArgs Arithmetic Boundary Heater
+
+syn keyword tssgmDelim assembly
+
+syn keyword tssgmEnd end
+
+syn keyword tssgmUnits cm feet meters inches
+syn keyword tssgmUnits Celsius Kelvin Fahrenheit Rankine
+
+
+
+" Define matches for TSS
+syn match tssgmDefault "^DEFAULT/LENGTH = \(ft\|in\|cm\|m\)"
+syn match tssgmDefault "^DEFAULT/TEMP = [CKFR]"
+
+syn match tssgmComment /comment \+= \+".*"/ contains=tssParam,tssgmCommentString
+syn match tssgmCommentString /".*"/ contained
+
+syn match tssgmSurfIdent " \S\+\.\d\+ \=$"
+
+syn match tssgmString /"[^" ]\+"/ms=s+1,me=e-1 contains=ALLBUT,tssInteger
+
+syn match tssgmArgs / = [xyz],"/ms=s+3,me=e-2
+
+syn match tssgmInteger "-\=\<[0-9]*\>"
+syn match tssgmFloat "-\=\<[0-9]*\.[0-9]*"
+syn match tssgmScientific "-\=\<[0-9]*\.[0-9]*E[-+]\=[0-9]\+\>"
+
+
+
+" Define the default highlighting
+" Only when an item doesn't have highlighting yet
+
+hi def link tssgmParam Statement
+hi def link tssgmSurfType Type
+hi def link tssgmArgs Special
+hi def link tssgmDelim Typedef
+hi def link tssgmEnd Macro
+hi def link tssgmUnits Special
+
+hi def link tssgmDefault SpecialComment
+hi def link tssgmComment Statement
+hi def link tssgmCommentString Comment
+hi def link tssgmSurfIdent Identifier
+hi def link tssgmString Delimiter
+
+hi def link tssgmInteger Number
+hi def link tssgmFloat Float
+hi def link tssgmScientific Float
+
+
+
+let b:current_syntax = "tssgm"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/tssop.vim b/runtime/syntax/tssop.vim
new file mode 100644
index 0000000..6a775b2
--- /dev/null
+++ b/runtime/syntax/tssop.vim
@@ -0,0 +1,74 @@
+" Vim syntax file
+" Language: TSS (Thermal Synthesizer System) Optics
+" Maintainer: Adrian Nagle, anagle@ball.com
+" Last Change: 2003 May 11
+" Filenames: *.tssop
+" URL: http://www.naglenet.org/vim/syntax/tssop.vim
+" MAIN URL: http://www.naglenet.org/vim/
+
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+
+" Ignore case
+syn case ignore
+
+
+
+"
+"
+" Begin syntax definitions for tss optics file.
+"
+
+" Define keywords for TSS
+syn keyword tssopParam ir_eps ir_trans ir_spec ir_tspec ir_refract
+syn keyword tssopParam sol_eps sol_trans sol_spec sol_tspec sol_refract
+syn keyword tssopParam color
+
+"syn keyword tssopProp property
+
+syn keyword tssopArgs white red blue green yellow orange violet pink
+syn keyword tssopArgs turquoise grey black
+
+
+
+" Define matches for TSS
+syn match tssopComment /comment \+= \+".*"/ contains=tssopParam,tssopCommentString
+syn match tssopCommentString /".*"/ contained
+
+syn match tssopProp "property "
+syn match tssopProp "edit/optic "
+syn match tssopPropName "^property \S\+" contains=tssopProp
+syn match tssopPropName "^edit/optic \S\+$" contains=tssopProp
+
+syn match tssopInteger "-\=\<[0-9]*\>"
+syn match tssopFloat "-\=\<[0-9]*\.[0-9]*"
+syn match tssopScientific "-\=\<[0-9]*\.[0-9]*E[-+]\=[0-9]\+\>"
+
+
+
+" Define the default highlighting
+" Only when an item doesn't have highlighting yet
+
+hi def link tssopParam Statement
+hi def link tssopProp Identifier
+hi def link tssopArgs Special
+
+hi def link tssopComment Statement
+hi def link tssopCommentString Comment
+hi def link tssopPropName Typedef
+
+hi def link tssopInteger Number
+hi def link tssopFloat Float
+hi def link tssopScientific Float
+
+
+
+let b:current_syntax = "tssop"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/tt2.vim b/runtime/syntax/tt2.vim
new file mode 100644
index 0000000..6826fb1
--- /dev/null
+++ b/runtime/syntax/tt2.vim
@@ -0,0 +1,209 @@
+" Vim syntax file
+" Language: TT2 (Perl Template Toolkit)
+" Maintainer: vim-perl <vim-perl@googlegroups.com>
+" Author: Moriki, Atsushi <4woods+vim@gmail.com>
+" Homepage: https://github.com/vim-perl/vim-perl
+" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+" License: Vim License (see :help license)
+" Last Change: 2018 Mar 28
+"
+" Installation:
+" put tt2.vim and tt2html.vim in to your syntax directory.
+"
+" add below in your filetype.vim.
+" au BufNewFile,BufRead *.tt2 setf tt2
+" or
+" au BufNewFile,BufRead *.tt2
+" \ if ( getline(1) . getline(2) . getline(3) =~ '<\chtml' |
+" \ && getline(1) . getline(2) . getline(3) !~ '<[%?]' ) |
+" \ || getline(1) =~ '<!DOCTYPE HTML' |
+" \ setf tt2html |
+" \ else |
+" \ setf tt2 |
+" \ endif
+"
+" define START_TAG, END_TAG
+" "ASP"
+" :let b:tt2_syn_tags = '<% %>'
+" "PHP"
+" :let b:tt2_syn_tags = '<? ?>'
+" "TT2 and HTML"
+" :let b:tt2_syn_tags = '\[% %] <!-- -->'
+"
+" Changes:
+" 0.1.3
+" Changed fileformat from 'dos' to 'unix'
+" Deleted 'echo' that print obstructive message
+" 0.1.2
+" Added block comment syntax
+" e.g. [%# COMMENT
+" COMMENT TOO %]
+" [%# IT'S SAFE %] HERE IS OUTSIDE OF TT2 DIRECTIVE
+" [% # WRONG!! %] HERE STILL BE COMMENT
+" 0.1.1
+" Release
+" 0.1.0
+" Internal
+
+if !exists("b:tt2_syn_tags")
+ let b:tt2_syn_tags = '\[% %]'
+ "let b:tt2_syn_tags = '\[% %] \[\* \*]'
+endif
+
+if !exists("b:tt2_syn_inc_perl")
+ let b:tt2_syn_inc_perl = 1
+endif
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case match
+
+syn cluster tt2_top_cluster contains=tt2_perlcode,tt2_tag_region
+
+" TT2 TAG Region
+if exists("b:tt2_syn_tags")
+
+ let s:str = b:tt2_syn_tags . ' '
+ let s:str = substitute(s:str,'^ \+','','g')
+ let s:str = substitute(s:str,' \+',' ','g')
+
+ while stridx(s:str,' ') > 0
+
+ let s:st = strpart(s:str,0,stridx(s:str,' '))
+ let s:str = substitute(s:str,'[^ ]* ','',"")
+
+ let s:ed = strpart(s:str,0,stridx(s:str,' '))
+ let s:str = substitute(s:str,'[^ ]* ','',"")
+
+ exec 'syn region tt2_tag_region '.
+ \ 'matchgroup=tt2_tag '.
+ \ 'start=+\(' . s:st .'\)[-]\=+ '.
+ \ 'end=+[-]\=\(' . s:ed . '\)+ '.
+ \ 'contains=@tt2_statement_cluster keepend extend'
+
+ exec 'syn region tt2_commentblock_region '.
+ \ 'matchgroup=tt2_tag '.
+ \ 'start=+\(' . s:st .'\)[-]\=\(#\)\@=+ '.
+ \ 'end=+[-]\=\(' . s:ed . '\)+ '.
+ \ 'keepend extend'
+
+ "Include Perl syntax when 'PERL' 'RAWPERL' block
+ if b:tt2_syn_inc_perl
+ syn include @Perl syntax/perl.vim
+ exec 'syn region tt2_perlcode '.
+ \ 'start=+\(\(RAW\)\=PERL\s*[-]\=' . s:ed . '\(\n\)\=\)\@<=+ ' .
+ \ 'end=+' . s:st . '[-]\=\s*END+me=s-1 contains=@Perl keepend'
+ endif
+
+ "echo 'TAGS ' . s:st . ' ' . s:ed
+ unlet s:st
+ unlet s:ed
+ endwhile
+
+else
+
+ syn region tt2_tag_region
+ \ matchgroup=tt2_tag
+ \ start=+\(\[%\)[-]\=+
+ \ end=+[-]\=%\]+
+ \ contains=@tt2_statement_cluster keepend extend
+
+ syn region tt2_commentblock_region
+ \ matchgroup=tt2_tag
+ \ start=+\(\[%\)[-]\=#+
+ \ end=+[-]\=%\]+
+ \ keepend extend
+
+ "Include Perl syntax when 'PERL' 'RAWPERL' block
+ if b:tt2_syn_inc_perl
+ syn include @Perl syntax/perl.vim
+ syn region tt2_perlcode
+ \ start=+\(\(RAW\)\=PERL\s*[-]\=%]\(\n\)\=\)\@<=+
+ \ end=+\[%[-]\=\s*END+me=s-1
+ \ contains=@Perl keepend
+ endif
+endif
+
+" Directive
+syn keyword tt2_directive contained
+ \ GET CALL SET DEFAULT DEBUG
+ \ LAST NEXT BREAK STOP BLOCK
+ \ IF IN UNLESS ELSIF FOR FOREACH WHILE SWITCH CASE
+ \ USE PLUGIN MACRO META
+ \ TRY FINAL RETURN LAST
+ \ CLEAR TO STEP AND OR NOT MOD DIV
+ \ ELSE PERL RAWPERL END
+syn match tt2_directive +|+ contained
+syn keyword tt2_directive contained nextgroup=tt2_string_q,tt2_string_qq,tt2_blockname skipwhite skipempty
+ \ INSERT INCLUDE PROCESS WRAPPER FILTER
+ \ THROW CATCH
+syn keyword tt2_directive contained nextgroup=tt2_def_tag skipwhite skipempty
+ \ TAGS
+
+syn match tt2_def_tag "\S\+\s\+\S\+\|\<\w\+\>" contained
+
+syn match tt2_variable +\I\w*+ contained
+syn match tt2_operator "[+*/%:?-]" contained
+syn match tt2_operator "\<\(mod\|div\|or\|and\|not\)\>" contained
+syn match tt2_operator "[!=<>]=\=\|&&\|||" contained
+syn match tt2_operator "\(\s\)\@<=_\(\s\)\@=" contained
+syn match tt2_operator "=>\|," contained
+syn match tt2_deref "\([[:alnum:]_)\]}]\s*\)\@<=\." contained
+syn match tt2_comment +#.*$+ contained
+syn match tt2_func +\<\I\w*\(\s*(\)\@=+ contained nextgroup=tt2_bracket_r skipempty skipwhite
+"
+syn region tt2_bracket_r start=+(+ end=+)+ contained contains=@tt2_statement_cluster keepend extend
+syn region tt2_bracket_b start=+\[+ end=+]+ contained contains=@tt2_statement_cluster keepend extend
+syn region tt2_bracket_b start=+{+ end=+}+ contained contains=@tt2_statement_cluster keepend extend
+
+syn region tt2_string_qq start=+"+ end=+"+ skip=+\\"+ contained contains=tt2_ivariable keepend extend
+syn region tt2_string_q start=+'+ end=+'+ skip=+\\'+ contained keepend extend
+
+syn match tt2_ivariable +\$\I\w*\>\(\.\I\w*\>\)*+ contained
+syn match tt2_ivariable +\${\I\w*\>\(\.\I\w*\>\)*}+ contained
+
+syn match tt2_number "\d\+" contained
+syn match tt2_number "\d\+\.\d\+" contained
+syn match tt2_number "0x\x\+" contained
+syn match tt2_number "0\o\+" contained
+
+syn match tt2_blockname "\f\+" contained nextgroup=tt2_blockname_joint skipwhite skipempty
+syn match tt2_blockname "$\w\+" contained contains=tt2_ivariable nextgroup=tt2_blockname_joint skipwhite skipempty
+syn region tt2_blockname start=+"+ end=+"+ skip=+\\"+ contained contains=tt2_ivariable nextgroup=tt2_blockname_joint keepend skipwhite skipempty
+syn region tt2_blockname start=+'+ end=+'+ skip=+\\'+ contained nextgroup=tt2_blockname_joint keepend skipwhite skipempty
+syn match tt2_blockname_joint "+" contained nextgroup=tt2_blockname skipwhite skipempty
+
+syn cluster tt2_statement_cluster contains=tt2_directive,tt2_variable,tt2_operator,tt2_string_q,tt2_string_qq,tt2_deref,tt2_comment,tt2_func,tt2_bracket_b,tt2_bracket_r,tt2_number
+
+" Synchronizing
+syn sync minlines=50
+
+hi def link tt2_tag Type
+hi def link tt2_tag_region Type
+hi def link tt2_commentblock_region Comment
+hi def link tt2_directive Statement
+hi def link tt2_variable Identifier
+hi def link tt2_ivariable Identifier
+hi def link tt2_operator Statement
+hi def link tt2_string_qq String
+hi def link tt2_string_q String
+hi def link tt2_blockname String
+hi def link tt2_comment Comment
+hi def link tt2_func Function
+hi def link tt2_number Number
+
+if exists("b:tt2_syn_tags")
+ unlet b:tt2_syn_tags
+endif
+
+let b:current_syntax = "tt2"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim:ts=4:sw=4
diff --git a/runtime/syntax/tt2html.vim b/runtime/syntax/tt2html.vim
new file mode 100644
index 0000000..8c223be
--- /dev/null
+++ b/runtime/syntax/tt2html.vim
@@ -0,0 +1,22 @@
+" Vim syntax file
+" Language: TT2 embedded with HTML
+" Maintainer: vim-perl <vim-perl@googlegroups.com>
+" Author: Moriki, Atsushi <4woods+vim@gmail.com>
+" Homepage: https://github.com/vim-perl/vim-perl
+" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+" License: Vim License (see :help license)
+" Last Change: 2018 Mar 28
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/html.vim
+unlet b:current_syntax
+
+runtime! syntax/tt2.vim
+unlet b:current_syntax
+
+syn cluster htmlPreProc add=@tt2_top_cluster
+
+let b:current_syntax = "tt2html"
diff --git a/runtime/syntax/tt2js.vim b/runtime/syntax/tt2js.vim
new file mode 100644
index 0000000..52e5a3c
--- /dev/null
+++ b/runtime/syntax/tt2js.vim
@@ -0,0 +1,22 @@
+" Vim syntax file
+" Language: TT2 embedded with Javascript
+" Maintainer: Andy Lester <andy@petdance.com>
+" Author: Yates, Peter <pd.yates@gmail.com>
+" Homepage: https://github.com/vim-perl/vim-perl
+" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+" License: Vim License (see :help license)
+" Last Change: 2018 Mar 28
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/javascript.vim
+unlet b:current_syntax
+
+runtime! syntax/tt2.vim
+unlet b:current_syntax
+
+syn cluster javascriptPreProc add=@tt2_top_cluster
+
+let b:current_syntax = "tt2js"
diff --git a/runtime/syntax/typescript.vim b/runtime/syntax/typescript.vim
new file mode 100644
index 0000000..af71938
--- /dev/null
+++ b/runtime/syntax/typescript.vim
@@ -0,0 +1,47 @@
+" Vim syntax file
+" Language: TypeScript
+" Maintainer: Bram Moolenaar, Herrington Darkholme
+" Last Change: 2019 Nov 30
+" Based On: Herrington Darkholme's yats.vim
+" Changes: Go to https:github.com/HerringtonDarkholme/yats.vim for recent changes.
+" Origin: https://github.com/othree/yajs
+" Credits: Kao Wei-Ko(othree), Jose Elera Campana, Zhao Yi, Claudio Fleiner, Scott Shattuck
+" (This file is based on their hard work), gumnos (From the #vim
+" IRC Channel in Freenode)
+
+" This is the same syntax that is in yats.vim, but:
+" - flattened into one file
+" - HiLink commands changed to "hi def link"
+" - Setting 'cpo' to the Vim value
+
+if !exists("main_syntax")
+ if exists("b:current_syntax")
+ finish
+ endif
+ let main_syntax = 'typescript'
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" this region is NOT used in TypeScriptReact
+" nextgroup doesn't contain objectLiteral, let outer region contains it
+syntax region typescriptTypeCast matchgroup=typescriptTypeBrackets
+ \ start=/< \@!/ end=/>/
+ \ contains=@typescriptType
+ \ nextgroup=@typescriptExpression
+ \ contained skipwhite oneline
+
+
+"""""""""""""""""""""""""""""""""""""""""""""""""""
+" Source the part common with typescriptreact.vim
+source <sfile>:h/shared/typescriptcommon.vim
+
+
+let b:current_syntax = "typescript"
+if main_syntax == 'typescript'
+ unlet main_syntax
+endif
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/typescriptreact.vim b/runtime/syntax/typescriptreact.vim
new file mode 100644
index 0000000..c4c2d45
--- /dev/null
+++ b/runtime/syntax/typescriptreact.vim
@@ -0,0 +1,160 @@
+" Vim syntax file
+" Language: TypeScript with React (JSX)
+" Maintainer: Bram Moolenaar
+" Last Change: 2019 Nov 30
+" Based On: Herrington Darkholme's yats.vim
+" Changes: See https:github.com/HerringtonDarkholme/yats.vim
+" Credits: See yats.vim on github
+
+if !exists("main_syntax")
+ if exists("b:current_syntax")
+ finish
+ endif
+ let main_syntax = 'typescriptreact'
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syntax region tsxTag
+ \ start=+<\([^/!?<>="':]\+\)\@=+
+ \ skip=+</[^ /!?<>"']\+>+
+ \ end=+/\@<!>+
+ \ end=+\(/>\)\@=+
+ \ contained
+ \ contains=tsxTagName,tsxIntrinsicTagName,tsxAttrib,tsxEscJs,
+ \tsxCloseString,@tsxComment
+
+syntax match tsxTag /<>/ contained
+
+
+" <tag></tag>
+" s~~~~~~~~~e
+" and self close tag
+" <tag/>
+" s~~~~e
+" A big start regexp borrowed from https://git.io/vDyxc
+syntax region tsxRegion
+ \ start=+<\_s*\z([a-zA-Z1-9\$_-]\+\(\.\k\+\)*\)+
+ \ skip=+<!--\_.\{-}-->+
+ \ end=+</\_s*\z1>+
+ \ matchgroup=tsxCloseString end=+/>+
+ \ fold
+ \ contains=tsxRegion,tsxCloseString,tsxCloseTag,tsxTag,tsxCommentInvalid,tsxFragment,tsxEscJs,@Spell
+ \ keepend
+ \ extend
+
+" <> </>
+" s~~~~~~e
+" A big start regexp borrowed from https://git.io/vDyxc
+syntax region tsxFragment
+ \ start=+\(\((\|{\|}\|\[\|,\|&&\|||\|?\|:\|=\|=>\|\Wreturn\|^return\|\Wdefault\|^\|>\)\_s*\)\@<=<>+
+ \ skip=+<!--\_.\{-}-->+
+ \ end=+</>+
+ \ fold
+ \ contains=tsxRegion,tsxCloseString,tsxCloseTag,tsxTag,tsxCommentInvalid,tsxFragment,tsxEscJs,@Spell
+ \ keepend
+ \ extend
+
+" </tag>
+" ~~~~~~
+syntax match tsxCloseTag
+ \ +</\_s*[^/!?<>"']\+>+
+ \ contained
+ \ contains=tsxTagName,tsxIntrinsicTagName
+
+syntax match tsxCloseTag +</>+ contained
+
+syntax match tsxCloseString
+ \ +/>+
+ \ contained
+
+" <!-- -->
+" ~~~~~~~~
+syntax match tsxCommentInvalid /<!--\_.\{-}-->/ display
+
+syntax region tsxBlockComment
+ \ contained
+ \ start="/\*"
+ \ end="\*/"
+
+syntax match tsxLineComment
+ \ "//.*$"
+ \ contained
+ \ display
+
+syntax cluster tsxComment contains=tsxBlockComment,tsxLineComment
+
+syntax match tsxEntity "&[^; \t]*;" contains=tsxEntityPunct
+syntax match tsxEntityPunct contained "[&.;]"
+
+" <tag key={this.props.key}>
+" ~~~
+syntax match tsxTagName
+ \ +[</]\_s*[^/!?<>"'* ]\++hs=s+1
+ \ contained
+ \ nextgroup=tsxAttrib
+ \ skipwhite
+ \ display
+syntax match tsxIntrinsicTagName
+ \ +[</]\_s*[a-z1-9-]\++hs=s+1
+ \ contained
+ \ nextgroup=tsxAttrib
+ \ skipwhite
+ \ display
+
+" <tag key={this.props.key}>
+" ~~~
+syntax match tsxAttrib
+ \ +[a-zA-Z_][-0-9a-zA-Z_]*+
+ \ nextgroup=tsxEqual skipwhite
+ \ contained
+ \ display
+
+" <tag id="sample">
+" ~
+syntax match tsxEqual +=+ display contained
+ \ nextgroup=tsxString skipwhite
+
+" <tag id="sample">
+" s~~~~~~e
+syntax region tsxString contained start=+"+ end=+"+ contains=tsxEntity,@Spell display
+
+" <tag key={this.props.key}>
+" s~~~~~~~~~~~~~~e
+syntax region tsxEscJs
+ \ contained
+ \ contains=@typescriptValue,@tsxComment
+ \ matchgroup=typescriptBraces
+ \ start=+{+
+ \ end=+}+
+ \ extend
+
+
+"""""""""""""""""""""""""""""""""""""""""""""""""""
+" Source the part common with typescriptreact.vim
+source <sfile>:h/shared/typescriptcommon.vim
+
+
+syntax cluster typescriptExpression add=tsxRegion,tsxFragment
+
+hi def link tsxTag htmlTag
+hi def link tsxTagName Function
+hi def link tsxIntrinsicTagName htmlTagName
+hi def link tsxString String
+hi def link tsxNameSpace Function
+hi def link tsxCommentInvalid Error
+hi def link tsxBlockComment Comment
+hi def link tsxLineComment Comment
+hi def link tsxAttrib Type
+hi def link tsxEscJs tsxEscapeJs
+hi def link tsxCloseTag htmlTag
+hi def link tsxCloseString Identifier
+
+let b:current_syntax = "typescriptreact"
+if main_syntax == 'typescriptreact'
+ unlet main_syntax
+endif
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/uc.vim b/runtime/syntax/uc.vim
new file mode 100644
index 0000000..90d3339
--- /dev/null
+++ b/runtime/syntax/uc.vim
@@ -0,0 +1,165 @@
+" Vim syntax file
+" Language: UnrealScript
+" Maintainer: Mark Ferrell <major@chaoticdreams.org>
+" URL: ftp://ftp.chaoticdreams.org/pub/ut/vim/uc.vim
+" Credits: Based on the java.vim syntax file by Claudio Fleiner
+" Last change: 2003 May 31
+
+" Please check :help uc.vim for comments on some of the options available.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" some characters that cannot be in a UnrealScript program (outside a string)
+syn match ucError "[\\@`]"
+syn match ucError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/"
+
+" we define it here so that included files can test for it
+if !exists("main_syntax")
+ let main_syntax='uc'
+endif
+
+syntax case ignore
+
+" keyword definitions
+syn keyword ucBranch break continue
+syn keyword ucConditional if else switch
+syn keyword ucRepeat while for do foreach
+syn keyword ucBoolean true false
+syn keyword ucConstant null
+syn keyword ucOperator new instanceof
+syn keyword ucType boolean char byte short int long float double
+syn keyword ucType void Pawn sound state auto exec function ipaddr
+syn keyword ucType ELightType actor ammo defaultproperties bool
+syn keyword ucType native noexport var out vector name local string
+syn keyword ucType event
+syn keyword ucStatement return
+syn keyword ucStorageClass static synchronized transient volatile final
+syn keyword ucMethodDecl synchronized throws
+
+" UnrealScript defines classes in sorta fscked up fashion
+syn match ucClassDecl "^[Cc]lass[\s$]*\S*[\s$]*expands[\s$]*\S*;" contains=ucSpecial,ucSpecialChar,ucClassKeys
+syn keyword ucClassKeys class expands extends
+syn match ucExternal "^\#exec.*" contains=ucCommentString,ucNumber
+syn keyword ucScopeDecl public protected private abstract
+
+" UnrealScript Functions
+syn match ucFuncDef "^.*function\s*[\(]*" contains=ucType,ucStorageClass
+syn match ucEventDef "^.*event\s*[\(]*" contains=ucType,ucStorageClass
+syn match ucClassLabel "[a-zA-Z0-9]*\'[a-zA-Z0-9]*\'" contains=ucCharacter
+
+syn region ucLabelRegion transparent matchgroup=ucLabel start="\<case\>" matchgroup=NONE end=":" contains=ucNumber
+syn match ucUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=ucLabel
+syn keyword ucLabel default
+
+" The following cluster contains all java groups except the contained ones
+syn cluster ucTop contains=ucExternal,ucError,ucError,ucBranch,ucLabelRegion,ucLabel,ucConditional,ucRepeat,ucBoolean,ucConstant,ucTypedef,ucOperator,ucType,ucType,ucStatement,ucStorageClass,ucMethodDecl,ucClassDecl,ucClassDecl,ucClassDecl,ucScopeDecl,ucError,ucError2,ucUserLabel,ucClassLabel
+
+" Comments
+syn keyword ucTodo contained TODO FIXME XXX
+syn region ucCommentString contained start=+"+ end=+"+ end=+\*/+me=s-1,he=s-1 contains=ucSpecial,ucCommentStar,ucSpecialChar
+syn region ucComment2String contained start=+"+ end=+$\|"+ contains=ucSpecial,ucSpecialChar
+syn match ucCommentCharacter contained "'\\[^']\{1,6\}'" contains=ucSpecialChar
+syn match ucCommentCharacter contained "'\\''" contains=ucSpecialChar
+syn match ucCommentCharacter contained "'[^\\]'"
+syn region ucComment start="/\*" end="\*/" contains=ucCommentString,ucCommentCharacter,ucNumber,ucTodo
+syn match ucCommentStar contained "^\s*\*[^/]"me=e-1
+syn match ucCommentStar contained "^\s*\*$"
+syn match ucLineComment "//.*" contains=ucComment2String,ucCommentCharacter,ucNumber,ucTodo
+hi link ucCommentString ucString
+hi link ucComment2String ucString
+hi link ucCommentCharacter ucCharacter
+
+syn cluster ucTop add=ucComment,ucLineComment
+
+" match the special comment /**/
+syn match ucComment "/\*\*/"
+
+" Strings and constants
+syn match ucSpecialError contained "\\."
+"syn match ucSpecialCharError contained "[^']"
+syn match ucSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
+syn region ucString start=+"+ end=+"+ contains=ucSpecialChar,ucSpecialError
+syn match ucStringError +"\([^"\\]\|\\.\)*$+
+syn match ucCharacter "'[^']*'" contains=ucSpecialChar,ucSpecialCharError
+syn match ucCharacter "'\\''" contains=ucSpecialChar
+syn match ucCharacter "'[^\\]'"
+syn match ucNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
+syn match ucNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
+syn match ucNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
+syn match ucNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
+
+" unicode characters
+syn match ucSpecial "\\u\d\{4\}"
+
+syn cluster ucTop add=ucString,ucCharacter,ucNumber,ucSpecial,ucStringError
+
+" catch errors caused by wrong parenthesis
+syn region ucParen transparent start="(" end=")" contains=@ucTop,ucParen
+syn match ucParenError ")"
+hi link ucParenError ucError
+
+if !exists("uc_minlines")
+ let uc_minlines = 10
+endif
+exec "syn sync ccomment ucComment minlines=" . uc_minlines
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link ucFuncDef Conditional
+hi def link ucEventDef Conditional
+hi def link ucBraces Function
+hi def link ucBranch Conditional
+hi def link ucLabel Label
+hi def link ucUserLabel Label
+hi def link ucConditional Conditional
+hi def link ucRepeat Repeat
+hi def link ucStorageClass StorageClass
+hi def link ucMethodDecl ucStorageClass
+hi def link ucClassDecl ucStorageClass
+hi def link ucScopeDecl ucStorageClass
+hi def link ucBoolean Boolean
+hi def link ucSpecial Special
+hi def link ucSpecialError Error
+hi def link ucSpecialCharError Error
+hi def link ucString String
+hi def link ucCharacter Character
+hi def link ucSpecialChar SpecialChar
+hi def link ucNumber Number
+hi def link ucError Error
+hi def link ucStringError Error
+hi def link ucStatement Statement
+hi def link ucOperator Operator
+hi def link ucOverLoaded Operator
+hi def link ucComment Comment
+hi def link ucDocComment Comment
+hi def link ucLineComment Comment
+hi def link ucConstant ucBoolean
+hi def link ucTypedef Typedef
+hi def link ucTodo Todo
+
+hi def link ucCommentTitle SpecialComment
+hi def link ucDocTags Special
+hi def link ucDocParam Function
+hi def link ucCommentStar ucComment
+
+hi def link ucType Type
+hi def link ucExternal Include
+
+hi def link ucClassKeys Conditional
+hi def link ucClassLabel Conditional
+
+hi def link htmlComment Special
+hi def link htmlCommentPart Special
+
+
+let b:current_syntax = "uc"
+
+if main_syntax == 'uc'
+ unlet main_syntax
+endif
+
+" vim: ts=8
diff --git a/runtime/syntax/udevconf.vim b/runtime/syntax/udevconf.vim
new file mode 100644
index 0000000..82fd81d
--- /dev/null
+++ b/runtime/syntax/udevconf.vim
@@ -0,0 +1,39 @@
+" Vim syntax file
+" Language: udev(8) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword udevconfTodo contained TODO FIXME XXX NOTE
+
+syn region udevconfComment display oneline start='^\s*#' end='$'
+ \ contains=udevconfTodo,@Spell
+
+syn match udevconfBegin display '^'
+ \ nextgroup=udevconfVariable,udevconfComment
+ \ skipwhite
+
+syn keyword udevconfVariable contained udev_root udev_db udev_rules udev_log
+ \ nextgroup=udevconfVariableEq
+
+syn match udevconfVariableEq contained '[[:space:]=]'
+ \ nextgroup=udevconfString skipwhite
+
+syn region udevconfString contained display oneline start=+"+ end=+"+
+
+hi def link udevconfTodo Todo
+hi def link udevconfComment Comment
+hi def link udevconfVariable Identifier
+hi def link udevconfVariableEq Operator
+hi def link udevconfString String
+
+let b:current_syntax = "udevconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/udevperm.vim b/runtime/syntax/udevperm.vim
new file mode 100644
index 0000000..abda0b6
--- /dev/null
+++ b/runtime/syntax/udevperm.vim
@@ -0,0 +1,69 @@
+" Vim syntax file
+" Language: udev(8) permissions file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match udevpermBegin display '^' nextgroup=udevpermDevice
+
+syn match udevpermDevice contained display '[^:]\+'
+ \ contains=udevpermPattern
+ \ nextgroup=udevpermUserColon
+
+syn match udevpermPattern contained '[*?]'
+syn region udevpermPattern contained start='\[!\=' end='\]'
+ \ contains=udevpermPatRange
+
+syn match udevpermPatRange contained '[^[-]-[^]-]'
+
+syn match udevpermUserColon contained display ':'
+ \ nextgroup=udevpermUser
+
+syn match udevpermUser contained display '[^:]\+'
+ \ nextgroup=udevpermGroupColon
+
+syn match udevpermGroupColon contained display ':'
+ \ nextgroup=udevpermGroup
+
+syn match udevpermGroup contained display '[^:]\+'
+ \ nextgroup=udevpermPermColon
+
+syn match udevpermPermColon contained display ':'
+ \ nextgroup=udevpermPerm
+
+syn match udevpermPerm contained display '\<0\=\o\+\>'
+ \ contains=udevpermOctalZero
+
+syn match udevpermOctalZero contained display '\<0'
+syn match udevpermOctalError contained display '\<0\o*[89]\d*\>'
+
+syn keyword udevpermTodo contained TODO FIXME XXX NOTE
+
+syn region udevpermComment display oneline start='^\s*#' end='$'
+ \ contains=udevpermTodo,@Spell
+
+hi def link udevpermTodo Todo
+hi def link udevpermComment Comment
+hi def link udevpermDevice String
+hi def link udevpermPattern SpecialChar
+hi def link udevpermPatRange udevpermPattern
+hi def link udevpermColon Normal
+hi def link udevpermUserColon udevpermColon
+hi def link udevpermUser Identifier
+hi def link udevpermGroupColon udevpermColon
+hi def link udevpermGroup Type
+hi def link udevpermPermColon udevpermColon
+hi def link udevpermPerm Number
+hi def link udevpermOctalZero PreProc
+hi def link udevpermOctalError Error
+
+let b:current_syntax = "udevperm"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/udevrules.vim b/runtime/syntax/udevrules.vim
new file mode 100644
index 0000000..ce156cc
--- /dev/null
+++ b/runtime/syntax/udevrules.vim
@@ -0,0 +1,171 @@
+" Vim syntax file
+" Language: udev(8) rules file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-12-18
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" TODO: Line continuations.
+
+syn keyword udevrulesTodo contained TODO FIXME XXX NOTE
+
+syn region udevrulesComment display oneline start='^\s*#' end='$'
+ \ contains=udevrulesTodo,@Spell
+
+syn keyword udevrulesRuleKey ACTION DEVPATH KERNEL SUBSYSTEM KERNELS
+ \ SUBSYSTEMS DRIVERS RESULT
+ \ nextgroup=udevrulesRuleTest
+ \ skipwhite
+
+syn keyword udevrulesRuleKey ATTRS nextgroup=udevrulesAttrsPath
+
+syn region udevrulesAttrsPath display transparent
+ \ matchgroup=udevrulesDelimiter start='{'
+ \ matchgroup=udevrulesDelimiter end='}'
+ \ contains=udevrulesPath
+ \ nextgroup=udevrulesRuleTest
+ \ skipwhite
+
+syn keyword udevrulesRuleKey ENV nextgroup=udevrulesEnvVar
+
+syn region udevrulesEnvVar display transparent
+ \ matchgroup=udevrulesDelimiter start='{'
+ \ matchgroup=udevrulesDelimiter end='}'
+ \ contains=udevrulesVariable
+ \ nextgroup=udevrulesRuleTest,udevrulesRuleEq
+ \ skipwhite
+
+syn keyword udevrulesRuleKey PROGRAM RESULT
+ \ nextgroup=udevrulesEStringTest,udevrulesEStringEq
+ \ skipwhite
+
+syn keyword udevrulesAssignKey NAME SYMLINK OWNER GROUP RUN
+ \ nextgroup=udevrulesEStringEq
+ \ skipwhite
+
+syn keyword udevrulesAssignKey MODE LABEL GOTO WAIT_FOR_SYSFS
+ \ nextgroup=udevrulesRuleEq
+ \ skipwhite
+
+syn keyword udevrulesAssignKey ATTR nextgroup=udevrulesAttrsPath
+
+syn region udevrulesAttrKey display transparent
+ \ matchgroup=udevrulesDelimiter start='{'
+ \ matchgroup=udevrulesDelimiter end='}'
+ \ contains=udevrulesKey
+ \ nextgroup=udevrulesRuleEq
+ \ skipwhite
+
+syn keyword udevrulesAssignKey IMPORT nextgroup=udevrulesImport,
+ \ udevrulesEStringEq
+ \ skipwhite
+
+syn region udevrulesImport display transparent
+ \ matchgroup=udevrulesDelimiter start='{'
+ \ matchgroup=udevrulesDelimiter end='}'
+ \ contains=udevrulesImportType
+ \ nextgroup=udevrulesEStringEq
+ \ skipwhite
+
+syn keyword udevrulesImportType program file parent
+
+syn keyword udevrulesAssignKey OPTIONS
+ \ nextgroup=udevrulesOptionsEq
+
+syn match udevrulesPath contained display '[^}]\+'
+
+syn match udevrulesVariable contained display '[^}]\+'
+
+syn match udevrulesRuleTest contained display '[=!:]='
+ \ nextgroup=udevrulesString skipwhite
+
+syn match udevrulesEStringTest contained display '[=!+:]='
+ \ nextgroup=udevrulesEString skipwhite
+
+syn match udevrulesRuleEq contained display '+=\|=\ze[^=]'
+ \ nextgroup=udevrulesString skipwhite
+
+syn match udevrulesEStringEq contained '+=\|=\ze[^=]'
+ \ nextgroup=udevrulesEString skipwhite
+
+syn match udevrulesOptionsEq contained '+=\|=\ze[^=]'
+ \ nextgroup=udevrulesOptions skipwhite
+
+syn region udevrulesEString contained display oneline start=+"+ end=+"+
+ \ contains=udevrulesStrEscapes,udevrulesStrVars
+
+syn match udevrulesStrEscapes contained '%[knpbMmcPrN%]'
+
+" TODO: This can actually stand alone (without {…}), so add a nextgroup here.
+syn region udevrulesStrEscapes contained start='%c{' end='}'
+ \ contains=udevrulesStrNumber
+
+syn region udevrulesStrEscapes contained start='%s{' end='}'
+ \ contains=udevrulesPath
+
+syn region udevrulesStrEscapes contained start='%E{' end='}'
+ \ contains=udevrulesVariable
+
+syn match udevrulesStrNumber contained '\d\++\='
+
+syn match udevrulesStrVars contained display '$\%(kernel\|number\|devpath\|id\|major\|minor\|result\|parent\|root\|tempnode\)\>'
+
+syn region udevrulesStrVars contained start='$attr{' end='}'
+ \ contains=udevrulesPath
+
+syn region udevrulesStrVars contained start='$env{' end='}'
+ \ contains=udevrulesVariable
+
+syn match udevrulesStrVars contained display '\$\$'
+
+syn region udevrulesString contained display oneline start=+"+ end=+"+
+ \ contains=udevrulesPattern
+
+syn match udevrulesPattern contained '[*?]'
+syn region udevrulesPattern contained start='\[!\=' end='\]'
+ \ contains=udevrulesPatRange
+
+syn match udevrulesPatRange contained '[^[-]-[^]-]'
+
+syn region udevrulesOptions contained display oneline start=+"+ end=+"+
+ \ contains=udevrulesOption,udevrulesOptionSep
+
+syn keyword udevrulesOption contained last_rule ignore_device ignore_remove
+ \ all_partitions
+
+syn match udevrulesOptionSep contained ','
+
+hi def link udevrulesTodo Todo
+hi def link udevrulesComment Comment
+hi def link udevrulesRuleKey Keyword
+hi def link udevrulesDelimiter Delimiter
+hi def link udevrulesAssignKey Identifier
+hi def link udevrulesPath Identifier
+hi def link udevrulesVariable Identifier
+hi def link udevrulesAttrKey Identifier
+" XXX: setting this to Operator makes for extremely intense highlighting.
+hi def link udevrulesEq Normal
+hi def link udevrulesRuleEq udevrulesEq
+hi def link udevrulesEStringEq udevrulesEq
+hi def link udevrulesOptionsEq udevrulesEq
+hi def link udevrulesEString udevrulesString
+hi def link udevrulesStrEscapes SpecialChar
+hi def link udevrulesStrNumber Number
+hi def link udevrulesStrVars Identifier
+hi def link udevrulesString String
+hi def link udevrulesPattern SpecialChar
+hi def link udevrulesPatRange SpecialChar
+hi def link udevrulesOptions udevrulesString
+hi def link udevrulesOption Type
+hi def link udevrulesOptionSep Delimiter
+hi def link udevrulesImportType Type
+
+let b:current_syntax = "udevrules"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/uil.vim b/runtime/syntax/uil.vim
new file mode 100644
index 0000000..088a0f6
--- /dev/null
+++ b/runtime/syntax/uil.vim
@@ -0,0 +1,75 @@
+" Vim syntax file
+" Language: Motif UIL (User Interface Language)
+" Maintainer: Thomas Koehler <jean-luc@picard.franken.de>
+" Please be aware: I'm often slow to answer email due to a high
+" non-computer related workload (sometimes 4-8 weeks)
+" Last Change: 2016 September 6
+" URL: http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/uil.vim
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" A bunch of useful keywords
+syn keyword uilType arguments callbacks color
+syn keyword uilType compound_string controls end
+syn keyword uilType exported file include
+syn keyword uilType module object procedure
+syn keyword uilType user_defined xbitmapfile
+
+syn keyword uilTodo contained TODO
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match uilSpecial contained "\\\d\d\d\|\\."
+syn region uilString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell,uilSpecial
+syn match uilCharacter "'[^\\]'"
+syn region uilString start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@Spell,uilSpecial
+syn match uilSpecialCharacter "'\\.'"
+syn match uilSpecialStatement "Xm[^ =(){}:;]*"
+syn match uilSpecialFunction "MrmNcreateCallback"
+syn match uilRessource "XmN[^ =(){}:;]*"
+
+syn match uilNumber "-\=\<\d*\.\=\d\+\(e\=f\=\|[uU]\=[lL]\=\)\>"
+syn match uilNumber "0[xX]\x\+\>"
+
+syn region uilComment start="/\*" end="\*/" contains=@Spell,uilTodo
+syn match uilComment "!.*" contains=@Spell,uilTodo
+syn match uilCommentError "\*/"
+
+syn region uilPreCondit start="^#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=uilComment,uilString,uilCharacter,uilNumber,uilCommentError
+syn match uilIncluded contained "<[^>]*>"
+syn match uilInclude "^#\s*include\s\+." contains=uilString,uilIncluded
+syn match uilLineSkip "\\$"
+syn region uilDefine start="^#\s*\(define\>\|undef\>\)" end="$" contains=uilLineSkip,uilComment,uilString,uilCharacter,uilNumber,uilCommentError
+
+syn sync ccomment uilComment
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default highlighting.
+hi def link uilCharacter uilString
+hi def link uilSpecialCharacter uilSpecial
+hi def link uilNumber uilString
+hi def link uilCommentError uilError
+hi def link uilInclude uilPreCondit
+hi def link uilDefine uilPreCondit
+hi def link uilIncluded uilString
+hi def link uilSpecialFunction uilRessource
+hi def link uilRessource Identifier
+hi def link uilSpecialStatement Keyword
+hi def link uilError Error
+hi def link uilPreCondit PreCondit
+hi def link uilType Type
+hi def link uilString String
+hi def link uilComment Comment
+hi def link uilSpecial Special
+hi def link uilTodo Todo
+
+
+
+let b:current_syntax = "uil"
+
+" vim: ts=8
diff --git a/runtime/syntax/updatedb.vim b/runtime/syntax/updatedb.vim
new file mode 100644
index 0000000..224a7dd
--- /dev/null
+++ b/runtime/syntax/updatedb.vim
@@ -0,0 +1,41 @@
+" Vim syntax file
+" Language: updatedb.conf(5) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2009-05-25
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword updatedbTodo contained TODO FIXME XXX NOTE
+
+syn region updatedbComment display oneline start='^\s*#' end='$'
+ \ contains=updatedbTodo,@Spell
+
+syn match updatedbBegin display '^'
+ \ nextgroup=updatedbName,updatedbComment skipwhite
+
+syn keyword updatedbName contained
+ \ PRUNEFS
+ \ PRUNENAMES
+ \ PRUNEPATHS
+ \ PRUNE_BIND_MOUNTS
+ \ nextgroup=updatedbNameEq
+
+syn match updatedbNameEq contained display '=' nextgroup=updatedbValue
+
+syn region updatedbValue contained display oneline start='"' end='"'
+
+hi def link updatedbTodo Todo
+hi def link updatedbComment Comment
+hi def link updatedbName Identifier
+hi def link updatedbNameEq Operator
+hi def link updatedbValue String
+
+let b:current_syntax = "updatedb"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/upstart.vim b/runtime/syntax/upstart.vim
new file mode 100644
index 0000000..140cd17
--- /dev/null
+++ b/runtime/syntax/upstart.vim
@@ -0,0 +1,111 @@
+" Vim syntax file
+" Language: Upstart job files
+" Maintainer: Michael Biebl <biebl@debian.org>
+" James Hunt <james.hunt@ubuntu.com>
+" Last Change: 2012 Jan 16
+" License: The Vim license
+" Version: 0.4
+" Remark: Syntax highlighting for Upstart (init(8)) job files.
+"
+" It is inspired by the initng syntax file and includes sh.vim to do the
+" highlighting of script blocks.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let is_bash = 1
+syn include @Shell syntax/sh.vim
+
+syn case match
+
+" avoid need to use 'match' for most events
+setlocal iskeyword+=-
+
+syn match upstartComment /#.*$/ contains=upstartTodo
+syn keyword upstartTodo TODO FIXME contained
+
+syn region upstartString start=/"/ end=/"/ skip=/\\"/
+
+syn region upstartScript matchgroup=upstartStatement start="script" end="end script" contains=@upstartShellCluster
+
+syn cluster upstartShellCluster contains=@Shell
+
+" one argument
+syn keyword upstartStatement description author version instance expect
+syn keyword upstartStatement pid kill normal console env exit export
+syn keyword upstartStatement umask nice oom chroot chdir exec
+
+" two arguments
+syn keyword upstartStatement limit
+
+" one or more arguments (events)
+syn keyword upstartStatement emits
+
+syn keyword upstartStatement on start stop
+
+" flag, no parameter
+syn keyword upstartStatement respawn service instance manual debug task
+
+" prefix for exec or script
+syn keyword upstartOption pre-start post-start pre-stop post-stop
+
+" option for kill
+syn keyword upstartOption timeout
+" option for oom
+syn keyword upstartOption never
+" options for console
+syn keyword upstartOption output owner
+" options for expect
+syn keyword upstartOption fork daemon
+" options for limit
+syn keyword upstartOption unlimited
+
+" 'options' for start/stop on
+syn keyword upstartOption and or
+
+" Upstart itself and associated utilities
+syn keyword upstartEvent runlevel
+syn keyword upstartEvent started
+syn keyword upstartEvent starting
+syn keyword upstartEvent startup
+syn keyword upstartEvent stopped
+syn keyword upstartEvent stopping
+syn keyword upstartEvent control-alt-delete
+syn keyword upstartEvent keyboard-request
+syn keyword upstartEvent power-status-changed
+
+" D-Bus
+syn keyword upstartEvent dbus-activation
+
+" Display Manager (ie gdm)
+syn keyword upstartEvent desktop-session-start
+syn keyword upstartEvent login-session-start
+
+" mountall
+syn keyword upstartEvent all-swaps
+syn keyword upstartEvent filesystem
+syn keyword upstartEvent mounted
+syn keyword upstartEvent mounting
+syn keyword upstartEvent local-filesystems
+syn keyword upstartEvent remote-filesystems
+syn keyword upstartEvent virtual-filesystems
+
+" SysV umountnfs.sh
+syn keyword upstartEvent mounted-remote-filesystems
+
+" upstart-udev-bridge and ifup/down
+syn match upstartEvent /\<\i\{-1,}-device-\(added\|removed\|up\|down\)/
+
+" upstart-socket-bridge
+syn keyword upstartEvent socket
+
+hi def link upstartComment Comment
+hi def link upstartTodo Todo
+hi def link upstartString String
+hi def link upstartStatement Statement
+hi def link upstartOption Type
+hi def link upstartEvent Define
+
+let b:current_syntax = "upstart"
diff --git a/runtime/syntax/upstreamdat.vim b/runtime/syntax/upstreamdat.vim
new file mode 100644
index 0000000..e3b415a
--- /dev/null
+++ b/runtime/syntax/upstreamdat.vim
@@ -0,0 +1,305 @@
+" Vim syntax file
+" Language: Innovation Data Processing upstream.dat file
+" Maintainer: Rob Owens <rowens@fdrinnovation.com>
+" Latest Revision: 2013-11-27
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Parameters:
+syn keyword upstreamdat_Parameter ACCEPTPCREMOTE
+syn keyword upstreamdat_Parameter ACCEPTREMOTE
+syn keyword upstreamdat_Parameter ACTION
+syn keyword upstreamdat_Parameter ACTIVATEONENTRY
+syn keyword upstreamdat_Parameter ARCHIVEBIT
+syn keyword upstreamdat_Parameter ARCHIVEBIT
+syn keyword upstreamdat_Parameter ASCTOEBC
+syn keyword upstreamdat_Parameter ASRBACKUP
+syn keyword upstreamdat_Parameter ATTENDED
+syn keyword upstreamdat_Parameter AUTHORITATIVE
+syn keyword upstreamdat_Parameter AUTHORITATIVERESTORE
+syn keyword upstreamdat_Parameter AUTHORITATIVERESTORE
+syn keyword upstreamdat_Parameter BACKUPPROFILE
+syn keyword upstreamdat_Parameter BACKUPPROFILE2
+syn keyword upstreamdat_Parameter BACKUPREPARSEFILES
+syn keyword upstreamdat_Parameter BACKUPREPARSEFILES
+syn keyword upstreamdat_Parameter BACKUPVERIFY
+syn keyword upstreamdat_Parameter BLANKTRUNC
+syn keyword upstreamdat_Parameter CALCDASDSIZE
+syn keyword upstreamdat_Parameter CHANGEDIRATTRIBS
+syn keyword upstreamdat_Parameter CHANGEDIRATTRIBS
+syn keyword upstreamdat_Parameter COMPRESSLEVEL
+syn keyword upstreamdat_Parameter CONTROLFILE
+syn keyword upstreamdat_Parameter DASDOVERRIDE
+syn keyword upstreamdat_Parameter DATELIMIT
+syn keyword upstreamdat_Parameter DATELIMIT
+syn keyword upstreamdat_Parameter DAYSOLD
+syn keyword upstreamdat_Parameter DAYSOLD
+syn keyword upstreamdat_Parameter DELETED
+syn keyword upstreamdat_Parameter DELETED
+syn keyword upstreamdat_Parameter DELETEPROMPTS
+syn keyword upstreamdat_Parameter DELETEPROMPTS
+syn keyword upstreamdat_Parameter DESTINATION
+syn keyword upstreamdat_Parameter DESTINATION
+syn keyword upstreamdat_Parameter DIRDELETE
+syn keyword upstreamdat_Parameter DIRECTORVMC
+syn keyword upstreamdat_Parameter DIRONLYRESTOREOK
+syn keyword upstreamdat_Parameter DIRSONLY
+syn keyword upstreamdat_Parameter DIRSONLY
+syn keyword upstreamdat_Parameter DISASTERRECOVERY
+syn keyword upstreamdat_Parameter DISPLAY
+syn keyword upstreamdat_Parameter DRIVEALIAS
+syn keyword upstreamdat_Parameter DRIVEALIAS
+syn keyword upstreamdat_Parameter DUALCOPY
+syn keyword upstreamdat_Parameter DUPDAYS
+syn keyword upstreamdat_Parameter DUPLICATE
+syn keyword upstreamdat_Parameter EBCTOASC
+syn keyword upstreamdat_Parameter ENCRYPT
+syn keyword upstreamdat_Parameter ENCRYPTLEVEL
+syn keyword upstreamdat_Parameter EXCLUDELISTNAME
+syn keyword upstreamdat_Parameter FAILBACKUPONERROR
+syn keyword upstreamdat_Parameter FAILBACKUPONERROR
+syn keyword upstreamdat_Parameter FAILIFNOFILES
+syn keyword upstreamdat_Parameter FAILIFNOFILES
+syn keyword upstreamdat_Parameter FAILIFSKIP
+syn keyword upstreamdat_Parameter FAILJOB
+syn keyword upstreamdat_Parameter FAILRESTOREONERROR
+syn keyword upstreamdat_Parameter FAILRESTOREONERROR
+syn keyword upstreamdat_Parameter FILEDATE
+syn keyword upstreamdat_Parameter FILEDATE
+syn keyword upstreamdat_Parameter FILEDELETE
+syn keyword upstreamdat_Parameter FILEDELETE
+syn keyword upstreamdat_Parameter FILES
+syn keyword upstreamdat_Parameter FILES
+syn keyword upstreamdat_Parameter FILESOPENFORUPDAT
+syn keyword upstreamdat_Parameter FILESOPENFORUPDAT
+syn keyword upstreamdat_Parameter FILETRANSFER
+syn keyword upstreamdat_Parameter GETREMOTEFILES
+syn keyword upstreamdat_Parameter HARDLINKDB
+syn keyword upstreamdat_Parameter HARDLINKS
+syn keyword upstreamdat_Parameter HARDLINKS
+syn keyword upstreamdat_Parameter HIDDENFILES
+syn keyword upstreamdat_Parameter HIDDENFILES
+syn keyword upstreamdat_Parameter HOLDTAPE
+syn keyword upstreamdat_Parameter HOLDUSERDIRS
+syn keyword upstreamdat_Parameter HOSTFILENAME
+syn keyword upstreamdat_Parameter HOSTRECORD
+syn keyword upstreamdat_Parameter HOSTSORT
+syn keyword upstreamdat_Parameter IGNOREPLUGINSFORRESTORE
+syn keyword upstreamdat_Parameter INCRDB
+syn keyword upstreamdat_Parameter INCRDBARCHIVEBIT
+syn keyword upstreamdat_Parameter INCRDBDELETEDFILES
+syn keyword upstreamdat_Parameter INCREMENTAL
+syn keyword upstreamdat_Parameter INCREMENTAL
+syn keyword upstreamdat_Parameter INQOPTIONS
+syn keyword upstreamdat_Parameter INSTALLWIN2KAGENT
+syn keyword upstreamdat_Parameter INSTALLWIN2KAGENT
+syn keyword upstreamdat_Parameter JOBOPTIONS
+syn keyword upstreamdat_Parameter JOBRETURNCODEMAP
+syn keyword upstreamdat_Parameter JOBWAITTIMELIMIT
+syn keyword upstreamdat_Parameter KEEPALIVE
+syn keyword upstreamdat_Parameter LANINTERFACE
+syn keyword upstreamdat_Parameter LANWSNAME
+syn keyword upstreamdat_Parameter LANWSPASSWORD
+syn keyword upstreamdat_Parameter LASTACCESS
+syn keyword upstreamdat_Parameter LASTACCESS
+syn keyword upstreamdat_Parameter LATESTDATE
+syn keyword upstreamdat_Parameter LATESTDATE
+syn keyword upstreamdat_Parameter LATESTTIME
+syn keyword upstreamdat_Parameter LATESTTIME
+syn keyword upstreamdat_Parameter LATESTVERSION
+syn keyword upstreamdat_Parameter LINEBLOCK
+syn keyword upstreamdat_Parameter LINETRUNC
+syn keyword upstreamdat_Parameter LISTENFORREMOTE
+syn keyword upstreamdat_Parameter LOCALBACKUP
+syn keyword upstreamdat_Parameter LOCALBACKUPDIR
+syn keyword upstreamdat_Parameter LOCALBACKUPMAX
+syn keyword upstreamdat_Parameter LOCALBACKUPMAXFILESIZE
+syn keyword upstreamdat_Parameter LOCALBACKUPMAXSIZE
+syn keyword upstreamdat_Parameter LOCALEXCLUDEFILE
+syn keyword upstreamdat_Parameter LOCALPARAMETERS
+syn keyword upstreamdat_Parameter LOCALPASSWORD
+syn keyword upstreamdat_Parameter LOCALRESTORE
+syn keyword upstreamdat_Parameter LOCALUSER
+syn keyword upstreamdat_Parameter LOFS
+syn keyword upstreamdat_Parameter LOGNONFATAL
+syn keyword upstreamdat_Parameter MAXBACKUPFILESFAIL
+syn keyword upstreamdat_Parameter MAXBACKUPTIME
+syn keyword upstreamdat_Parameter MAXDUPS
+syn keyword upstreamdat_Parameter MAXFILENAMESIZE
+syn keyword upstreamdat_Parameter MAXKFILESIZE
+syn keyword upstreamdat_Parameter MAXLOGDAYS
+syn keyword upstreamdat_Parameter MAXRESTOREFILESFAIL
+syn keyword upstreamdat_Parameter MAXRESTORETIME
+syn keyword upstreamdat_Parameter MAXRETRY
+syn keyword upstreamdat_Parameter MAXRPTDAYS
+syn keyword upstreamdat_Parameter MERGE
+syn keyword upstreamdat_Parameter MIGRBITS
+syn keyword upstreamdat_Parameter MIGRBITS
+syn keyword upstreamdat_Parameter MINCOMPRESSSIZE
+syn keyword upstreamdat_Parameter MINIMIZE
+syn keyword upstreamdat_Parameter MODIFYFILE
+syn keyword upstreamdat_Parameter MOUNTPOINTS
+syn keyword upstreamdat_Parameter MOUNTPOINTS
+syn keyword upstreamdat_Parameter NDS
+syn keyword upstreamdat_Parameter NDS
+syn keyword upstreamdat_Parameter NEWFILECOMPARE
+syn keyword upstreamdat_Parameter NFSBELOW
+syn keyword upstreamdat_Parameter NODATAOK
+syn keyword upstreamdat_Parameter NODIRFORINCREMENTAL
+syn keyword upstreamdat_Parameter NODIRFORINCREMENTAL
+syn keyword upstreamdat_Parameter NONFILEDATABITMAP
+syn keyword upstreamdat_Parameter NONFILEDATABITMAP
+syn keyword upstreamdat_Parameter NOPOINTRESTORE
+syn keyword upstreamdat_Parameter NOSPECINHERITANCE
+syn keyword upstreamdat_Parameter NOTIFYEVENTS
+syn keyword upstreamdat_Parameter NOTIFYFAILUREATTACHMENT
+syn keyword upstreamdat_Parameter NOTIFYSUCCESSATTACHMENT
+syn keyword upstreamdat_Parameter NOTIFYTARGETS
+syn keyword upstreamdat_Parameter NOUIDGIDNAMES
+syn keyword upstreamdat_Parameter NOUIDGIDNAMES
+syn keyword upstreamdat_Parameter NOVELLMIGRATE
+syn keyword upstreamdat_Parameter NOVELLMIGRATE
+syn keyword upstreamdat_Parameter NOVELLMIGRATEADDEXT
+syn keyword upstreamdat_Parameter NOVELLMIGRATEADDEXT
+syn keyword upstreamdat_Parameter NOVELLPROFILE
+syn keyword upstreamdat_Parameter NOVELLRECALL
+syn keyword upstreamdat_Parameter NTFSADDPERMISSION
+syn keyword upstreamdat_Parameter NTFSADDPERMISSION
+syn keyword upstreamdat_Parameter NTREGRESTORE
+syn keyword upstreamdat_Parameter OSTYPE
+syn keyword upstreamdat_Parameter OUTPORT
+syn keyword upstreamdat_Parameter PACKFLUSHAFTERFILE
+syn keyword upstreamdat_Parameter PACKRECSIZE
+syn keyword upstreamdat_Parameter PARAMETER
+syn keyword upstreamdat_Parameter PASSWORD
+syn keyword upstreamdat_Parameter PATHNAME
+syn keyword upstreamdat_Parameter PATHNAME
+syn keyword upstreamdat_Parameter PERFORMBITMAP
+syn keyword upstreamdat_Parameter PERFORMNUMRECORDS
+syn keyword upstreamdat_Parameter PERFORMRECORDSIZE
+syn keyword upstreamdat_Parameter PLUGIN
+syn keyword upstreamdat_Parameter PLUGIN
+syn keyword upstreamdat_Parameter PLUGINPARAMETERS
+syn keyword upstreamdat_Parameter PLUGINPARAMETERS
+syn keyword upstreamdat_Parameter POSTJOB
+syn keyword upstreamdat_Parameter PREJOB
+syn keyword upstreamdat_Parameter PRTYCLASS
+syn keyword upstreamdat_Parameter PRTYLEVEL
+syn keyword upstreamdat_Parameter RECALLCLEANUP
+syn keyword upstreamdat_Parameter RECALLOFFLINEFILES
+syn keyword upstreamdat_Parameter RECALLOFFLINEFILES
+syn keyword upstreamdat_Parameter RECORDSIZE
+syn keyword upstreamdat_Parameter REMOTEADDR
+syn keyword upstreamdat_Parameter REMOTEAPPLPREF
+syn keyword upstreamdat_Parameter REMOTEAPPLRETRY
+syn keyword upstreamdat_Parameter REMOTECONNECTTYPE
+syn keyword upstreamdat_Parameter REMOTEFLAGS
+syn keyword upstreamdat_Parameter REMOTEIPADAPTER
+syn keyword upstreamdat_Parameter REMOTELOCALPARAMETERS
+syn keyword upstreamdat_Parameter REMOTELOGMODE
+syn keyword upstreamdat_Parameter REMOTELUNAME
+syn keyword upstreamdat_Parameter REMOTEMAXRETRIES
+syn keyword upstreamdat_Parameter REMOTEMODENAME
+syn keyword upstreamdat_Parameter REMOTEPARAMETERFILE
+syn keyword upstreamdat_Parameter REMOTEPORT
+syn keyword upstreamdat_Parameter REMOTEREQUEST
+syn keyword upstreamdat_Parameter REMOTERESTART
+syn keyword upstreamdat_Parameter REMOTEROUTE
+syn keyword upstreamdat_Parameter REMOTETARGETNAME
+syn keyword upstreamdat_Parameter REMOTETCP
+syn keyword upstreamdat_Parameter REMOTETIMEOUT
+syn keyword upstreamdat_Parameter REMOTETMAXRETRY
+syn keyword upstreamdat_Parameter REMOTETPN
+syn keyword upstreamdat_Parameter REMOTEUSAPPL
+syn keyword upstreamdat_Parameter REMOTEVERIFY
+syn keyword upstreamdat_Parameter REMOTEWTOCOMP
+syn keyword upstreamdat_Parameter REPORTNAME
+syn keyword upstreamdat_Parameter REPORTOPTIONS
+syn keyword upstreamdat_Parameter RESTARTLASTFILE
+syn keyword upstreamdat_Parameter RESTART
+syn keyword upstreamdat_Parameter RESTARTTYPE
+syn keyword upstreamdat_Parameter RESTARTVERSIONDATE
+syn keyword upstreamdat_Parameter RESTOREARCHIVEBIT
+syn keyword upstreamdat_Parameter RESTORECHECKPOINT
+syn keyword upstreamdat_Parameter RESTOREDATELIMIT
+syn keyword upstreamdat_Parameter RESTOREDATELIMIT
+syn keyword upstreamdat_Parameter RESTOREFILEFAIL
+syn keyword upstreamdat_Parameter RESTOREMOUNTPOINTS
+syn keyword upstreamdat_Parameter RESTOREMOUNTPOINTS
+syn keyword upstreamdat_Parameter RESTORESEGMENTS
+syn keyword upstreamdat_Parameter RESTORESEGMENTS
+syn keyword upstreamdat_Parameter RESTORETODIFFFS
+syn keyword upstreamdat_Parameter RETAIN
+syn keyword upstreamdat_Parameter RETAIN
+syn keyword upstreamdat_Parameter ROOTENTRY
+syn keyword upstreamdat_Parameter ROOTENTRY
+syn keyword upstreamdat_Parameter SAN
+syn keyword upstreamdat_Parameter SCHEDULENAME
+syn keyword upstreamdat_Parameter SEGMENTEDFILESIZE
+syn keyword upstreamdat_Parameter SEGMENTEDFILESIZE
+syn keyword upstreamdat_Parameter SEGMENTSIZE
+syn keyword upstreamdat_Parameter SEGMENTSIZE
+syn keyword upstreamdat_Parameter SENDHOSTDETAILS
+syn keyword upstreamdat_Parameter SINGLEFS
+syn keyword upstreamdat_Parameter SIZETRC
+syn keyword upstreamdat_Parameter SKIP
+syn keyword upstreamdat_Parameter SKIPBACKUPSCAN
+syn keyword upstreamdat_Parameter SKIPOLD
+syn keyword upstreamdat_Parameter SKIPOLD
+syn keyword upstreamdat_Parameter SMSTARGETSERVICENAME
+syn keyword upstreamdat_Parameter SMSTSA
+syn keyword upstreamdat_Parameter SOLO
+syn keyword upstreamdat_Parameter SORTBACKUP
+syn keyword upstreamdat_Parameter SOSDISK
+syn keyword upstreamdat_Parameter SOSDISK
+syn keyword upstreamdat_Parameter SOSTIMESTAMP
+syn keyword upstreamdat_Parameter SOSTIMESTAMP
+syn keyword upstreamdat_Parameter SOSTIMESTAMPPATH
+syn keyword upstreamdat_Parameter SOSTIMESTAMPPATH
+syn keyword upstreamdat_Parameter SPECNUMBER
+syn keyword upstreamdat_Parameter SPECNUMBER
+syn keyword upstreamdat_Parameter SPECTYPE
+syn keyword upstreamdat_Parameter SPECTYPE
+syn keyword upstreamdat_Parameter STARTTIME
+syn keyword upstreamdat_Parameter STORAGETYPE
+syn keyword upstreamdat_Parameter SUBDIRECTORIES
+syn keyword upstreamdat_Parameter SUBDIRECTORIES
+syn keyword upstreamdat_Parameter SWITCHTOTAPEMB
+syn keyword upstreamdat_Parameter TCPADDRESS
+syn keyword upstreamdat_Parameter TCPTIMEOUT
+syn keyword upstreamdat_Parameter TIMEOVERRIDE
+syn keyword upstreamdat_Parameter TRACE
+syn keyword upstreamdat_Parameter TRANSLATE
+syn keyword upstreamdat_Parameter ULTRACOMP
+syn keyword upstreamdat_Parameter ULTREG
+syn keyword upstreamdat_Parameter ULTUPD
+syn keyword upstreamdat_Parameter UNCMACHINEALIAS
+syn keyword upstreamdat_Parameter UNCMACHINEALIAS
+syn keyword upstreamdat_Parameter USEALEBRA
+syn keyword upstreamdat_Parameter USECONTROLFILE
+syn keyword upstreamdat_Parameter USEGID
+syn keyword upstreamdat_Parameter USERID
+syn keyword upstreamdat_Parameter USEUID
+syn keyword upstreamdat_Parameter USNOUIDGIDERRORS
+syn keyword upstreamdat_Parameter UTF8
+syn keyword upstreamdat_Parameter VAULTNUMBER
+syn keyword upstreamdat_Parameter VERSIONDATE
+syn keyword upstreamdat_Parameter WRITESPARSE
+syn keyword upstreamdat_Parameter XFERECORDSIZE
+syn keyword upstreamdat_Parameter XFERRECSEP
+syn keyword upstreamdat_Parameter XFERRECUSECR
+
+" File Specs:
+syn match upstreamdat_Filespec /file spec\c \d\{1,3}.*/
+
+" Comments:
+syn match upstreamdat_Comment /^#.*/
+
+hi def link upstreamdat_Parameter Type
+"hi def link upstreamdat_Filespec Underlined
+hi def link upstreamdat_Comment Comment
+
+let b:current_syntax = "upstreamdat"
diff --git a/runtime/syntax/upstreaminstalllog.vim b/runtime/syntax/upstreaminstalllog.vim
new file mode 100644
index 0000000..fb23fdc
--- /dev/null
+++ b/runtime/syntax/upstreaminstalllog.vim
@@ -0,0 +1,27 @@
+" Vim syntax file
+" Language: Innovation Data Processing UPSTREAMInstall.log file
+" Maintainer: Rob Owens <rowens@fdrinnovation.com>
+" Latest Revision: 2013-06-17
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Date:
+syn match upstreaminstalllog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/
+" Msg Types:
+syn match upstreaminstalllog_MsgD /Msg #MSI\d\{4,5}D/
+syn match upstreaminstalllog_MsgE /Msg #MSI\d\{4,5}E/
+syn match upstreaminstalllog_MsgI /Msg #MSI\d\{4,5}I/
+syn match upstreaminstalllog_MsgW /Msg #MSI\d\{4,5}W/
+" IP Address:
+syn match upstreaminstalllog_IPaddr / \d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/
+
+hi def link upstreaminstalllog_Date Underlined
+hi def link upstreaminstalllog_MsgD Type
+hi def link upstreaminstalllog_MsgE Error
+hi def link upstreaminstalllog_MsgW Constant
+hi def link upstreaminstalllog_IPaddr Identifier
+
+let b:current_syntax = "upstreaminstalllog"
diff --git a/runtime/syntax/upstreamlog.vim b/runtime/syntax/upstreamlog.vim
new file mode 100644
index 0000000..1439bdf
--- /dev/null
+++ b/runtime/syntax/upstreamlog.vim
@@ -0,0 +1,54 @@
+" Vim syntax file
+" Language: Innovation Data Processing upstream.log file
+" Maintainer: Rob Owens <rowens@fdrinnovation.com>
+" Latest Revision: 2013-09-19
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Date:
+syn match upstreamlog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/
+" Msg Types:
+syn match upstreamlog_MsgD /Msg #\(Agt\|PC\|Srv\)\d\{4,5}D/ nextgroup=upstreamlog_Process skipwhite
+syn match upstreamlog_MsgE /Msg #\(Agt\|PC\|Srv\)\d\{4,5}E/ nextgroup=upstreamlog_Process skipwhite
+syn match upstreamlog_MsgI /Msg #\(Agt\|PC\|Srv\)\d\{4,5}I/ nextgroup=upstreamlog_Process skipwhite
+syn match upstreamlog_MsgW /Msg #\(Agt\|PC\|Srv\)\d\{4,5}W/ nextgroup=upstreamlog_Process skipwhite
+" Processes:
+syn region upstreamlog_Process start="(" end=")" contained
+" IP Address:
+syn match upstreamlog_IPaddr /\( \|(\)\zs\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/
+" Profile:
+syn match upstreamlog_Profile /Using default configuration for profile \zs\S\{1,8}\ze/
+syn match upstreamlog_Profile /Now running profile \zs\S\{1,8}\ze/
+syn match upstreamlog_Profile /in profile set \zs\S\{1,8}\ze/
+syn match upstreamlog_Profile /Migrate disk backup from profile \zs\S\{1,8}\ze/
+syn match upstreamlog_Profile /Profileset=\zs\S\{1,8}\ze,/
+syn match upstreamlog_Profile /Vault \(disk\|tape\) backup to vault \d\{1,4} from profile \zs\S\{1,8}\ze/
+syn match upstreamlog_Profile /Profile name \zs\"\S\{1,8}\"/
+syn match upstreamlog_Profile / Profile: \zs\S\{1,8}/
+syn match upstreamlog_Profile / Profile: \zs\S\{1,8}\ze, /
+syn match upstreamlog_Profile /, profile: \zs\S\{1,8}\ze,/
+syn match upstreamlog_Profile /found Profile: \zs\S\{1,8}\ze,/
+syn match upstreamlog_Profile /Backup Profile: \zs\S\{1,8}\ze Version date/
+syn match upstreamlog_Profile /Backup profile: \zs\S\{1,8}\ze Version date/
+syn match upstreamlog_Profile /Full of \zs\S\{1,8}\ze$/
+syn match upstreamlog_Profile /Incr. of \zs\S\{1,8}\ze$/
+syn match upstreamlog_Profile /Profile=\zs\S\{1,8}\ze,/
+" Target:
+syn region upstreamlog_Target start="Computer: \zs" end="\ze[\]\)]"
+syn region upstreamlog_Target start="Computer name \zs\"" end="\"\ze"
+syn region upstreamlog_Target start="request to registered name \zs" end=" "
+
+
+hi def link upstreamlog_Date Underlined
+hi def link upstreamlog_MsgD Type
+hi def link upstreamlog_MsgE Error
+hi def link upstreamlog_MsgW Constant
+hi def link upstreamlog_Process Statement
+hi def link upstreamlog_IPaddr Identifier
+hi def link upstreamlog_Profile Identifier
+hi def link upstreamlog_Target Identifier
+
+let b:current_syntax = "upstreamlog"
diff --git a/runtime/syntax/upstreamrpt.vim b/runtime/syntax/upstreamrpt.vim
new file mode 100644
index 0000000..21c2563
--- /dev/null
+++ b/runtime/syntax/upstreamrpt.vim
@@ -0,0 +1,310 @@
+" Vim syntax file
+" Language: Innovation Data Processing upstream.rpt file
+" Maintainer: Rob Owens <rowens@fdrinnovation.com>
+" Latest Revision: 2014-03-13
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal foldmethod=syntax
+
+" Parameters:
+syn keyword upstreamdat_Parameter ACCEPTPCREMOTE
+syn keyword upstreamdat_Parameter ACCEPTREMOTE
+syn keyword upstreamdat_Parameter ACTION
+syn keyword upstreamdat_Parameter ACTIVATEONENTRY
+syn keyword upstreamdat_Parameter ARCHIVEBIT
+syn keyword upstreamdat_Parameter ARCHIVEBIT
+syn keyword upstreamdat_Parameter ASCTOEBC
+syn keyword upstreamdat_Parameter ASRBACKUP
+syn keyword upstreamdat_Parameter ATTENDED
+syn keyword upstreamdat_Parameter AUTHORITATIVE
+syn keyword upstreamdat_Parameter AUTHORITATIVERESTORE
+syn keyword upstreamdat_Parameter AUTHORITATIVERESTORE
+syn keyword upstreamdat_Parameter BACKUPPROFILE
+syn keyword upstreamdat_Parameter BACKUPPROFILE2
+syn keyword upstreamdat_Parameter BACKUPREPARSEFILES
+syn keyword upstreamdat_Parameter BACKUPREPARSEFILES
+syn keyword upstreamdat_Parameter BACKUPVERIFY
+syn keyword upstreamdat_Parameter BLANKTRUNC
+syn keyword upstreamdat_Parameter CALCDASDSIZE
+syn keyword upstreamdat_Parameter CHANGEDIRATTRIBS
+syn keyword upstreamdat_Parameter CHANGEDIRATTRIBS
+syn keyword upstreamdat_Parameter COMPRESSLEVEL
+syn keyword upstreamdat_Parameter CONTROLFILE
+syn keyword upstreamdat_Parameter DASDOVERRIDE
+syn keyword upstreamdat_Parameter DATELIMIT
+syn keyword upstreamdat_Parameter DATELIMIT
+syn keyword upstreamdat_Parameter DAYSOLD
+syn keyword upstreamdat_Parameter DAYSOLD
+syn keyword upstreamdat_Parameter DELETED
+syn keyword upstreamdat_Parameter DELETED
+syn keyword upstreamdat_Parameter DELETEPROMPTS
+syn keyword upstreamdat_Parameter DELETEPROMPTS
+syn keyword upstreamdat_Parameter DESTINATION
+syn keyword upstreamdat_Parameter DESTINATION
+syn keyword upstreamdat_Parameter DIRDELETE
+syn keyword upstreamdat_Parameter DIRECTORVMC
+syn keyword upstreamdat_Parameter DIRONLYRESTOREOK
+syn keyword upstreamdat_Parameter DIRSONLY
+syn keyword upstreamdat_Parameter DIRSONLY
+syn keyword upstreamdat_Parameter DISASTERRECOVERY
+syn keyword upstreamdat_Parameter DISPLAY
+syn keyword upstreamdat_Parameter DRIVEALIAS
+syn keyword upstreamdat_Parameter DRIVEALIAS
+syn keyword upstreamdat_Parameter DUALCOPY
+syn keyword upstreamdat_Parameter DUPDAYS
+syn keyword upstreamdat_Parameter DUPLICATE
+syn keyword upstreamdat_Parameter EBCTOASC
+syn keyword upstreamdat_Parameter ENCRYPT
+syn keyword upstreamdat_Parameter ENCRYPTLEVEL
+syn keyword upstreamdat_Parameter EXCLUDELISTNAME
+syn keyword upstreamdat_Parameter FAILBACKUPONERROR
+syn keyword upstreamdat_Parameter FAILBACKUPONERROR
+syn keyword upstreamdat_Parameter FAILIFNOFILES
+syn keyword upstreamdat_Parameter FAILIFNOFILES
+syn keyword upstreamdat_Parameter FAILIFSKIP
+syn keyword upstreamdat_Parameter FAILJOB
+syn keyword upstreamdat_Parameter FAILRESTOREONERROR
+syn keyword upstreamdat_Parameter FAILRESTOREONERROR
+syn keyword upstreamdat_Parameter FILEDATE
+syn keyword upstreamdat_Parameter FILEDATE
+syn keyword upstreamdat_Parameter FILEDELETE
+syn keyword upstreamdat_Parameter FILEDELETE
+syn keyword upstreamdat_Parameter FILES
+syn keyword upstreamdat_Parameter FILES
+syn keyword upstreamdat_Parameter FILESOPENFORUPDAT
+syn keyword upstreamdat_Parameter FILESOPENFORUPDAT
+syn keyword upstreamdat_Parameter FILETRANSFER
+syn keyword upstreamdat_Parameter GETREMOTEFILES
+syn keyword upstreamdat_Parameter HARDLINKDB
+syn keyword upstreamdat_Parameter HARDLINKS
+syn keyword upstreamdat_Parameter HARDLINKS
+syn keyword upstreamdat_Parameter HIDDENFILES
+syn keyword upstreamdat_Parameter HIDDENFILES
+syn keyword upstreamdat_Parameter HOLDTAPE
+syn keyword upstreamdat_Parameter HOLDUSERDIRS
+syn keyword upstreamdat_Parameter HOSTFILENAME
+syn keyword upstreamdat_Parameter HOSTRECORD
+syn keyword upstreamdat_Parameter HOSTSORT
+syn keyword upstreamdat_Parameter IGNOREPLUGINSFORRESTORE
+syn keyword upstreamdat_Parameter INCRDB
+syn keyword upstreamdat_Parameter INCRDBARCHIVEBIT
+syn keyword upstreamdat_Parameter INCRDBDELETEDFILES
+syn keyword upstreamdat_Parameter INCREMENTAL
+syn keyword upstreamdat_Parameter INCREMENTAL
+syn keyword upstreamdat_Parameter INQOPTIONS
+syn keyword upstreamdat_Parameter INSTALLWIN2KAGENT
+syn keyword upstreamdat_Parameter INSTALLWIN2KAGENT
+syn keyword upstreamdat_Parameter JOBOPTIONS
+syn keyword upstreamdat_Parameter JOBRETURNCODEMAP
+syn keyword upstreamdat_Parameter JOBWAITTIMELIMIT
+syn keyword upstreamdat_Parameter KEEPALIVE
+syn keyword upstreamdat_Parameter LANINTERFACE
+syn keyword upstreamdat_Parameter LANWSNAME
+syn keyword upstreamdat_Parameter LANWSPASSWORD
+syn keyword upstreamdat_Parameter LASTACCESS
+syn keyword upstreamdat_Parameter LASTACCESS
+syn keyword upstreamdat_Parameter LATESTDATE
+syn keyword upstreamdat_Parameter LATESTDATE
+syn keyword upstreamdat_Parameter LATESTTIME
+syn keyword upstreamdat_Parameter LATESTTIME
+syn keyword upstreamdat_Parameter LATESTVERSION
+syn keyword upstreamdat_Parameter LINEBLOCK
+syn keyword upstreamdat_Parameter LINETRUNC
+syn keyword upstreamdat_Parameter LISTENFORREMOTE
+syn keyword upstreamdat_Parameter LOCALBACKUP
+syn keyword upstreamdat_Parameter LOCALBACKUPDIR
+syn keyword upstreamdat_Parameter LOCALBACKUPMAX
+syn keyword upstreamdat_Parameter LOCALBACKUPMAXFILESIZE
+syn keyword upstreamdat_Parameter LOCALBACKUPMAXSIZE
+syn keyword upstreamdat_Parameter LOCALEXCLUDEFILE
+syn keyword upstreamdat_Parameter LOCALPARAMETERS
+syn keyword upstreamdat_Parameter LOCALPASSWORD
+syn keyword upstreamdat_Parameter LOCALRESTORE
+syn keyword upstreamdat_Parameter LOCALUSER
+syn keyword upstreamdat_Parameter LOFS
+syn keyword upstreamdat_Parameter LOGNONFATAL
+syn keyword upstreamdat_Parameter MAXBACKUPFILESFAIL
+syn keyword upstreamdat_Parameter MAXBACKUPTIME
+syn keyword upstreamdat_Parameter MAXDUPS
+syn keyword upstreamdat_Parameter MAXFILENAMESIZE
+syn keyword upstreamdat_Parameter MAXKFILESIZE
+syn keyword upstreamdat_Parameter MAXLOGDAYS
+syn keyword upstreamdat_Parameter MAXRESTOREFILESFAIL
+syn keyword upstreamdat_Parameter MAXRESTORETIME
+syn keyword upstreamdat_Parameter MAXRETRY
+syn keyword upstreamdat_Parameter MAXRPTDAYS
+syn keyword upstreamdat_Parameter MERGE
+syn keyword upstreamdat_Parameter MIGRBITS
+syn keyword upstreamdat_Parameter MIGRBITS
+syn keyword upstreamdat_Parameter MINCOMPRESSSIZE
+syn keyword upstreamdat_Parameter MINIMIZE
+syn keyword upstreamdat_Parameter MODIFYFILE
+syn keyword upstreamdat_Parameter MOUNTPOINTS
+syn keyword upstreamdat_Parameter MOUNTPOINTS
+syn keyword upstreamdat_Parameter NDS
+syn keyword upstreamdat_Parameter NDS
+syn keyword upstreamdat_Parameter NEWFILECOMPARE
+syn keyword upstreamdat_Parameter NFSBELOW
+syn keyword upstreamdat_Parameter NODATAOK
+syn keyword upstreamdat_Parameter NODIRFORINCREMENTAL
+syn keyword upstreamdat_Parameter NODIRFORINCREMENTAL
+syn keyword upstreamdat_Parameter NONFILEDATABITMAP
+syn keyword upstreamdat_Parameter NONFILEDATABITMAP
+syn keyword upstreamdat_Parameter NOPOINTRESTORE
+syn keyword upstreamdat_Parameter NOSPECINHERITANCE
+syn keyword upstreamdat_Parameter NOTIFYEVENTS
+syn keyword upstreamdat_Parameter NOTIFYFAILUREATTACHMENT
+syn keyword upstreamdat_Parameter NOTIFYSUCCESSATTACHMENT
+syn keyword upstreamdat_Parameter NOTIFYTARGETS
+syn keyword upstreamdat_Parameter NOUIDGIDNAMES
+syn keyword upstreamdat_Parameter NOUIDGIDNAMES
+syn keyword upstreamdat_Parameter NOVELLMIGRATE
+syn keyword upstreamdat_Parameter NOVELLMIGRATE
+syn keyword upstreamdat_Parameter NOVELLMIGRATEADDEXT
+syn keyword upstreamdat_Parameter NOVELLMIGRATEADDEXT
+syn keyword upstreamdat_Parameter NOVELLPROFILE
+syn keyword upstreamdat_Parameter NOVELLRECALL
+syn keyword upstreamdat_Parameter NTFSADDPERMISSION
+syn keyword upstreamdat_Parameter NTFSADDPERMISSION
+syn keyword upstreamdat_Parameter NTREGRESTORE
+syn keyword upstreamdat_Parameter OSTYPE
+syn keyword upstreamdat_Parameter OUTPORT
+syn keyword upstreamdat_Parameter PACKFLUSHAFTERFILE
+syn keyword upstreamdat_Parameter PACKRECSIZE
+syn keyword upstreamdat_Parameter PARAMETER
+syn keyword upstreamdat_Parameter PASSWORD
+syn keyword upstreamdat_Parameter PATHNAME
+syn keyword upstreamdat_Parameter PATHNAME
+syn keyword upstreamdat_Parameter PERFORMBITMAP
+syn keyword upstreamdat_Parameter PERFORMNUMRECORDS
+syn keyword upstreamdat_Parameter PERFORMRECORDSIZE
+syn keyword upstreamdat_Parameter PLUGIN
+syn keyword upstreamdat_Parameter PLUGIN
+syn keyword upstreamdat_Parameter PLUGINPARAMETERS
+syn keyword upstreamdat_Parameter PLUGINPARAMETERS
+syn keyword upstreamdat_Parameter POSTJOB
+syn keyword upstreamdat_Parameter PREJOB
+syn keyword upstreamdat_Parameter PRTYCLASS
+syn keyword upstreamdat_Parameter PRTYLEVEL
+syn keyword upstreamdat_Parameter RECALLCLEANUP
+syn keyword upstreamdat_Parameter RECALLOFFLINEFILES
+syn keyword upstreamdat_Parameter RECALLOFFLINEFILES
+syn keyword upstreamdat_Parameter RECORDSIZE
+syn keyword upstreamdat_Parameter REMOTEADDR
+syn keyword upstreamdat_Parameter REMOTEAPPLPREF
+syn keyword upstreamdat_Parameter REMOTEAPPLRETRY
+syn keyword upstreamdat_Parameter REMOTECONNECTTYPE
+syn keyword upstreamdat_Parameter REMOTEFLAGS
+syn keyword upstreamdat_Parameter REMOTEIPADAPTER
+syn keyword upstreamdat_Parameter REMOTELOCALPARAMETERS
+syn keyword upstreamdat_Parameter REMOTELOGMODE
+syn keyword upstreamdat_Parameter REMOTELUNAME
+syn keyword upstreamdat_Parameter REMOTEMAXRETRIES
+syn keyword upstreamdat_Parameter REMOTEMODENAME
+syn keyword upstreamdat_Parameter REMOTEPARAMETERFILE
+syn keyword upstreamdat_Parameter REMOTEPORT
+syn keyword upstreamdat_Parameter REMOTEREQUEST
+syn keyword upstreamdat_Parameter REMOTERESTART
+syn keyword upstreamdat_Parameter REMOTEROUTE
+syn keyword upstreamdat_Parameter REMOTETARGETNAME
+syn keyword upstreamdat_Parameter REMOTETCP
+syn keyword upstreamdat_Parameter REMOTETIMEOUT
+syn keyword upstreamdat_Parameter REMOTETMAXRETRY
+syn keyword upstreamdat_Parameter REMOTETPN
+syn keyword upstreamdat_Parameter REMOTEUSAPPL
+syn keyword upstreamdat_Parameter REMOTEVERIFY
+syn keyword upstreamdat_Parameter REMOTEWTOCOMP
+syn keyword upstreamdat_Parameter REPORTNAME
+syn keyword upstreamdat_Parameter REPORTOPTIONS
+syn keyword upstreamdat_Parameter RESTARTLASTFILE
+syn keyword upstreamdat_Parameter RESTART
+syn keyword upstreamdat_Parameter RESTARTTYPE
+syn keyword upstreamdat_Parameter RESTARTVERSIONDATE
+syn keyword upstreamdat_Parameter RESTOREARCHIVEBIT
+syn keyword upstreamdat_Parameter RESTORECHECKPOINT
+syn keyword upstreamdat_Parameter RESTOREDATELIMIT
+syn keyword upstreamdat_Parameter RESTOREDATELIMIT
+syn keyword upstreamdat_Parameter RESTOREFILEFAIL
+syn keyword upstreamdat_Parameter RESTOREMOUNTPOINTS
+syn keyword upstreamdat_Parameter RESTOREMOUNTPOINTS
+syn keyword upstreamdat_Parameter RESTORESEGMENTS
+syn keyword upstreamdat_Parameter RESTORESEGMENTS
+syn keyword upstreamdat_Parameter RESTORETODIFFFS
+syn keyword upstreamdat_Parameter RETAIN
+syn keyword upstreamdat_Parameter RETAIN
+syn keyword upstreamdat_Parameter ROOTENTRY
+syn keyword upstreamdat_Parameter ROOTENTRY
+syn keyword upstreamdat_Parameter SAN
+syn keyword upstreamdat_Parameter SCHEDULENAME
+syn keyword upstreamdat_Parameter SEGMENTEDFILESIZE
+syn keyword upstreamdat_Parameter SEGMENTEDFILESIZE
+syn keyword upstreamdat_Parameter SEGMENTSIZE
+syn keyword upstreamdat_Parameter SEGMENTSIZE
+syn keyword upstreamdat_Parameter SENDHOSTDETAILS
+syn keyword upstreamdat_Parameter SINGLEFS
+syn keyword upstreamdat_Parameter SIZETRC
+syn keyword upstreamdat_Parameter SKIP
+syn keyword upstreamdat_Parameter SKIPBACKUPSCAN
+syn keyword upstreamdat_Parameter SKIPOLD
+syn keyword upstreamdat_Parameter SKIPOLD
+syn keyword upstreamdat_Parameter SMSTARGETSERVICENAME
+syn keyword upstreamdat_Parameter SMSTSA
+syn keyword upstreamdat_Parameter SOLO
+syn keyword upstreamdat_Parameter SORTBACKUP
+syn keyword upstreamdat_Parameter SOSDISK
+syn keyword upstreamdat_Parameter SOSDISK
+syn keyword upstreamdat_Parameter SOSTIMESTAMP
+syn keyword upstreamdat_Parameter SOSTIMESTAMP
+syn keyword upstreamdat_Parameter SOSTIMESTAMPPATH
+syn keyword upstreamdat_Parameter SOSTIMESTAMPPATH
+syn keyword upstreamdat_Parameter SPECNUMBER
+syn keyword upstreamdat_Parameter SPECNUMBER
+syn keyword upstreamdat_Parameter SPECTYPE
+syn keyword upstreamdat_Parameter SPECTYPE
+syn keyword upstreamdat_Parameter STARTTIME
+syn keyword upstreamdat_Parameter STORAGETYPE
+syn keyword upstreamdat_Parameter SUBDIRECTORIES
+syn keyword upstreamdat_Parameter SUBDIRECTORIES
+syn keyword upstreamdat_Parameter SWITCHTOTAPEMB
+syn keyword upstreamdat_Parameter TCPADDRESS
+syn keyword upstreamdat_Parameter TCPTIMEOUT
+syn keyword upstreamdat_Parameter TIMEOVERRIDE
+syn keyword upstreamdat_Parameter TRACE
+syn keyword upstreamdat_Parameter TRANSLATE
+syn keyword upstreamdat_Parameter ULTRACOMP
+syn keyword upstreamdat_Parameter ULTREG
+syn keyword upstreamdat_Parameter ULTUPD
+syn keyword upstreamdat_Parameter UNCMACHINEALIAS
+syn keyword upstreamdat_Parameter UNCMACHINEALIAS
+syn keyword upstreamdat_Parameter USEALEBRA
+syn keyword upstreamdat_Parameter USECONTROLFILE
+syn keyword upstreamdat_Parameter USEGID
+syn keyword upstreamdat_Parameter USERID
+syn keyword upstreamdat_Parameter USEUID
+syn keyword upstreamdat_Parameter USNOUIDGIDERRORS
+syn keyword upstreamdat_Parameter UTF8
+syn keyword upstreamdat_Parameter VAULTNUMBER
+syn keyword upstreamdat_Parameter VERSIONDATE
+syn keyword upstreamdat_Parameter WRITESPARSE
+syn keyword upstreamdat_Parameter XFERECORDSIZE
+syn keyword upstreamdat_Parameter XFERRECSEP
+syn keyword upstreamdat_Parameter XFERRECUSECR
+
+" File Specs:
+syn match upstreamdat_Filespec /file spec\c \d\{1,3}.*/
+
+" Comments:
+syn match upstreamdat_Comment /^#.*/
+
+" List Of Parameters:
+syn region upstreamdat_Parms start="Current Parameters:" end="End Of Parameters" transparent fold
+
+hi def link upstreamdat_Parameter Type
+"hi def link upstreamdat_Filespec Underlined
+hi def link upstreamdat_Comment Comment
+
+let b:current_syntax = "upstreamrpt"
diff --git a/runtime/syntax/usserverlog.vim b/runtime/syntax/usserverlog.vim
new file mode 100644
index 0000000..34a7e3d
--- /dev/null
+++ b/runtime/syntax/usserverlog.vim
@@ -0,0 +1,60 @@
+" Vim syntax file
+" Language: Innovation Data Processing usserver.log file
+" Maintainer: Rob Owens <rowens@fdrinnovation.com>
+" Latest Revision: 2013-09-19
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Date:
+syn match usserverlog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/
+" Msg Types:
+syn match usserverlog_MsgD /Msg #\(Agt\|PC\|Srv\)\d\{4,5}D/ nextgroup=usserverlog_Process skipwhite
+syn match usserverlog_MsgE /Msg #\(Agt\|PC\|Srv\)\d\{4,5}E/ nextgroup=usserverlog_Process skipwhite
+syn match usserverlog_MsgI /Msg #\(Agt\|PC\|Srv\)\d\{4,5}I/ nextgroup=usserverlog_Process skipwhite
+syn match usserverlog_MsgW /Msg #\(Agt\|PC\|Srv\)\d\{4,5}W/ nextgroup=usserverlog_Process skipwhite
+" Processes:
+syn region usserverlog_Process start="(" end=")" contained
+" IP Address:
+syn match usserverlog_IPaddr /\( \|(\)\zs\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/
+" Profile:
+syn match usserverlog_Profile /Using default configuration for profile \zs\S\{1,8}\ze/
+syn match usserverlog_Profile /Now running profile \zs\S\{1,8}\ze/
+syn match usserverlog_Profile /in profile set \zs\S\{1,8}\ze/
+syn match usserverlog_Profile /Migrate disk backup from profile \zs\S\{1,8}\ze/
+syn match usserverlog_Profile /Using profile prefix for profile \zs\S\{1,8}\ze/
+syn match usserverlog_Profile /Add\/update profile \zs\S\{1,8}\ze/
+syn match usserverlog_Profile /Profileset=\zs\S\{1,8}\ze,/
+syn match usserverlog_Profile /profileset=\zs\S\{1,8}\ze/
+syn match usserverlog_Profile /Vault \(disk\|tape\) backup to vault \d\{1,4} from profile \zs\S\{1,8}\ze/
+syn match usserverlog_Profile /Profile name \zs\"\S\{1,8}\"/
+syn match usserverlog_Profile / Profile: \zs\S\{1,8}/
+syn match usserverlog_Profile / Profile: \zs\S\{1,8}\ze, /
+syn match usserverlog_Profile /, profile: \zs\S\{1,8}\ze,/
+syn match usserverlog_Profile /Expecting Profile: \zs\S\{1,8}\ze,/
+syn match usserverlog_Profile /found Profile: \zs\S\{1,8}\ze,/
+syn match usserverlog_Profile /Profile \zs\S\{1,8} \zeis a member of group: /
+syn match upstreamlog_Profile /Backup Profile: \zs\S\{1,8}\ze Version date/
+syn match upstreamlog_Profile /Backup profile: \zs\S\{1,8}\ze Version date/
+syn match usserverlog_Profile /Full of \zs\S\{1,8}\ze$/
+syn match usserverlog_Profile /Incr. of \zs\S\{1,8}\ze$/
+syn match usserverlog_Profile /Profile=\zs\S\{1,8}\ze,/
+" Target:
+syn region usserverlog_Target start="Computer: \zs" end="\ze[\]\)]"
+syn region usserverlog_Target start="Computer name \zs\"" end="\"\ze"
+syn region usserverlog_Target start="Registration add request successful \zs" end="$"
+syn region usserverlog_Target start="request to registered name \zs" end=" "
+syn region usserverlog_Target start=", sending to \zs" end="$"
+
+hi def link usserverlog_Date Underlined
+hi def link usserverlog_MsgD Type
+hi def link usserverlog_MsgE Error
+hi def link usserverlog_MsgW Constant
+hi def link usserverlog_Process Statement
+hi def link usserverlog_IPaddr Identifier
+hi def link usserverlog_Profile Identifier
+hi def link usserverlog_Target Identifier
+
+let b:current_syntax = "usserverlog"
diff --git a/runtime/syntax/usw2kagtlog.vim b/runtime/syntax/usw2kagtlog.vim
new file mode 100644
index 0000000..a112340
--- /dev/null
+++ b/runtime/syntax/usw2kagtlog.vim
@@ -0,0 +1,54 @@
+" Vim syntax file
+" Language: Innovation Data Processing USW2KAgt.log file
+" Maintainer: Rob Owens <rowens@fdrinnovation.com>
+" Latest Revision: 2014-04-01
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Date:
+syn match usw2kagtlog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/
+" Msg Types:
+syn match usw2kagtlog_MsgD /Msg #\(Agt\|PC\|Srv\)\d\{4,5}D/ nextgroup=usw2kagtlog_Process skipwhite
+syn match usw2kagtlog_MsgE /Msg #\(Agt\|PC\|Srv\)\d\{4,5}E/ nextgroup=usw2kagtlog_Process skipwhite
+syn match usw2kagtlog_MsgI /Msg #\(Agt\|PC\|Srv\)\d\{4,5}I/ nextgroup=usw2kagtlog_Process skipwhite
+syn match usw2kagtlog_MsgW /Msg #\(Agt\|PC\|Srv\)\d\{4,5}W/ nextgroup=usw2kagtlog_Process skipwhite
+" Processes:
+syn region usw2kagtlog_Process start="(" end=")" contained
+"syn region usw2kagtlog_Process start="Starting the processing for a \zs\"" end="\ze client request"
+"syn region usw2kagtlog_Process start="Ending the processing for a \zs\"" end="\ze client request"
+"syn region usw2kagtlog_Process start="Starting the processing for a \zs\"" end="\ze client\s\{0,1}\r\{0,1}\s\{1,9}request"
+"syn region usw2kagtlog_Process start="Ending the processing for a \zs\"" end="\ze client\s\{0,1}\r\{0,1}\s\{1,9}request"
+syn region usw2kagtlog_Process start="Starting the processing for a \zs\"" end="\ze client"
+syn region usw2kagtlog_Process start="Ending the processing for a \zs\"" end="\ze client"
+" IP Address:
+syn match usw2kagtlog_IPaddr / \d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/
+" Profile:
+
+syn match usw2kagtlog_Profile /Profile name \zs\"\S\{1,8}\"/
+syn match usw2kagtlog_Profile / Profile: \zs\S\{1,8}/
+syn match usw2kagtlog_Profile / Profile: \zs\S\{1,8}\ze, /
+syn match upstreamlog_Profile /Backup Profile: \zs\S\{1,8}\ze Version date/
+syn match upstreamlog_Profile /Backup profile: \zs\S\{1,8}\ze Version date/
+syn match usw2kagtlog_Profile /Full of \zs\S\{1,8}\ze$/
+syn match usw2kagtlog_Profile /Incr. of \zs\S\{1,8}\ze$/
+syn match usw2kagtlog_Profile /profile name "\zs\S\{1,8}\ze"/
+" Target:
+syn region usw2kagtlog_Target start="Computer: \zs" end="\ze[\]\)]"
+syn region usw2kagtlog_Target start="Computer name \zs\"" end="\"\ze"
+" Agent Keywords:
+syn keyword usw2kagtlog_Agentword opened closed
+
+hi def link usw2kagtlog_Date Underlined
+hi def link usw2kagtlog_MsgD Type
+hi def link usw2kagtlog_MsgE Error
+hi def link usw2kagtlog_MsgW Constant
+hi def link usw2kagtlog_Process Statement
+hi def link usw2kagtlog_IPaddr Identifier
+hi def link usw2kagtlog_Profile Identifier
+hi def link usw2kagtlog_Target Identifier
+hi def link usw2kagtlog_Agentword Special
+
+let b:current_syntax = "usw2kagentlog"
diff --git a/runtime/syntax/valgrind.vim b/runtime/syntax/valgrind.vim
new file mode 100644
index 0000000..a9b4a8c
--- /dev/null
+++ b/runtime/syntax/valgrind.vim
@@ -0,0 +1,110 @@
+" Vim syntax file
+" Language: Valgrind Memory Debugger Output
+" Maintainer: Roger Luethi <rl@hellgate.ch>
+" Program URL: http://devel-home.kde.org/~sewardj/
+" Last Change: 2019 Jul 24
+"
+" Notes: mostly based on strace.vim and xml.vim
+"
+" Contributors: Christoph Gysin <christoph.gysin@gmail.com>
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+" Lines can be long with demangled c++ functions.
+setlocal synmaxcol=8000
+
+syn case match
+syn sync minlines=50
+
+syn match valgrindSpecLine "^[+-]\{2}\d\+[+-]\{2}.*$"
+
+syn region valgrindRegion
+ \ start=+^==\z(\d\+\)== \w.*$+
+ \ skip=+^==\z1==\( \| .*\| \S.*\)$+
+ \ end=+^+
+ \ fold
+ \ keepend
+ \ contains=valgrindPidChunk,valgrindLine
+
+syn region valgrindPidChunk
+ \ start=+^==\zs+
+ \ end=+\ze==+
+ \ contained
+ \ contains=valgrindPid0,valgrindPid1,valgrindPid2,valgrindPid3,valgrindPid4,valgrindPid5,valgrindPid6,valgrindPid7,valgrindPid8,valgrindPid9
+ \ keepend
+
+syn match valgrindPid0 "\d\+0=" contained
+syn match valgrindPid1 "\d\+1=" contained
+syn match valgrindPid2 "\d\+2=" contained
+syn match valgrindPid3 "\d\+3=" contained
+syn match valgrindPid4 "\d\+4=" contained
+syn match valgrindPid5 "\d\+5=" contained
+syn match valgrindPid6 "\d\+6=" contained
+syn match valgrindPid7 "\d\+7=" contained
+syn match valgrindPid8 "\d\+8=" contained
+syn match valgrindPid9 "\d\+9=" contained
+
+syn region valgrindLine
+ \ start=+\(^==\d\+== \)\@<=+
+ \ end=+$+
+ \ keepend
+ \ contained
+ \ contains=valgrindOptions,valgrindMsg,valgrindLoc
+
+syn match valgrindOptions "[ ]\{3}-.*$" contained
+
+syn match valgrindMsg "\S.*$" contained
+ \ contains=valgrindError,valgrindNote,valgrindSummary
+syn match valgrindError "\(Invalid\|\d\+ errors\|.* definitely lost\).*$" contained
+syn match valgrindNote ".*still reachable.*" contained
+syn match valgrindSummary ".*SUMMARY:" contained
+
+syn match valgrindLoc "\s\+\(by\|at\|Address\).*$" contained
+ \ contains=valgrindAt,valgrindAddr,valgrindFunc,valgrindBin,valgrindSrc
+syn match valgrindAt "at\s\@=" contained
+syn match valgrindAddr "\W\zs0x\x\+" contained
+
+syn match valgrindFunc ": \zs\h[a-zA-Z0-9_:\[\]()<>&*+\-,=%!|^ @.]*\ze([^)]*)$" contained
+syn match valgrindBin "(\(with\)\=in \zs\S\+)\@=" contained
+syn match valgrindSrc "(\zs[^)]*:\d\+)\@=" contained
+
+" Define the default highlighting
+
+hi def link valgrindSpecLine Type
+"hi def link valgrindRegion Special
+
+hi def link valgrindPid0 Special
+hi def link valgrindPid1 Comment
+hi def link valgrindPid2 Type
+hi def link valgrindPid3 Constant
+hi def link valgrindPid4 Number
+hi def link valgrindPid5 Identifier
+hi def link valgrindPid6 Statement
+hi def link valgrindPid7 Error
+hi def link valgrindPid8 LineNr
+hi def link valgrindPid9 Normal
+"hi def link valgrindLine Special
+
+hi def link valgrindOptions Type
+"hi def link valgrindMsg Special
+"hi def link valgrindLoc Special
+
+hi def link valgrindError Special
+hi def link valgrindNote Comment
+hi def link valgrindSummary Type
+
+hi def link valgrindAt Special
+hi def link valgrindAddr Number
+hi def link valgrindFunc Type
+hi def link valgrindBin Comment
+hi def link valgrindSrc Statement
+
+let b:current_syntax = "valgrind"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/runtime/syntax/vb.vim b/runtime/syntax/vb.vim
new file mode 100644
index 0000000..607f613
--- /dev/null
+++ b/runtime/syntax/vb.vim
@@ -0,0 +1,375 @@
+" Vim syntax file
+" Language: Visual Basic
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Former Maintainer: Tim Chase <vb.vim@tim.thechases.com>
+" Former Maintainer: Robert M. Cortopassi <cortopar@mindspring.com>
+" (tried multiple times to contact, but email bounced)
+" Last Change:
+" 2021 Nov 26 Incorporated additions from Doug Kearns
+" 2005 May 25 Synched with work by Thomas Barthel
+" 2004 May 30 Added a few keywords
+
+" This was thrown together after seeing numerous requests on the
+" VIM and VIM-DEV mailing lists. It is by no means complete.
+" Send comments, suggestions and requests to the maintainer.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" VB is case insensitive
+syn case ignore
+
+syn keyword vbConditional If Then ElseIf Else Select Case
+
+syn keyword vbOperator AddressOf And ByRef ByVal Eqv Imp In
+syn keyword vbOperator Is Like Mod Not Or To Xor
+
+syn match vbOperator "[()+.,\-/*=&]"
+syn match vbOperator "[<>]=\="
+syn match vbOperator "<>"
+syn match vbOperator "\s\+_$"
+
+syn keyword vbBoolean True False
+syn keyword vbConst Null Nothing
+
+syn keyword vbRepeat Do For ForEach Loop Next
+syn keyword vbRepeat Step To Until Wend While
+
+syn keyword vbEvents AccessKeyPress Activate ActiveRowChanged
+syn keyword vbEvents AfterAddFile AfterChangeFileName AfterCloseFile
+syn keyword vbEvents AfterColEdit AfterColUpdate AfterDelete
+syn keyword vbEvents AfterInsert AfterLabelEdit AfterRemoveFile
+syn keyword vbEvents AfterUpdate AfterWriteFile AmbientChanged
+syn keyword vbEvents ApplyChanges Associate AsyncProgress
+syn keyword vbEvents AsyncReadComplete AsyncReadProgress AxisActivated
+syn keyword vbEvents AxisLabelActivated AxisLabelSelected
+syn keyword vbEvents AxisLabelUpdated AxisSelected AxisTitleActivated
+syn keyword vbEvents AxisTitleSelected AxisTitleUpdated AxisUpdated
+syn keyword vbEvents BeforeClick BeforeColEdit BeforeColUpdate
+syn keyword vbEvents BeforeConnect BeforeDelete BeforeInsert
+syn keyword vbEvents BeforeLabelEdit BeforeLoadFile BeforeUpdate
+syn keyword vbEvents BeginRequest BeginTrans ButtonClick
+syn keyword vbEvents ButtonCompleted ButtonDropDown ButtonGotFocus
+syn keyword vbEvents ButtonLostFocus CallbackKeyDown Change Changed
+syn keyword vbEvents ChartActivated ChartSelected ChartUpdated Click
+syn keyword vbEvents Close CloseQuery CloseUp ColEdit ColResize
+syn keyword vbEvents Collapse ColumnClick CommitTrans Compare
+syn keyword vbEvents ConfigChageCancelled ConfigChanged
+syn keyword vbEvents ConfigChangedCancelled Connect ConnectionRequest
+syn keyword vbEvents CurrentRecordChanged DECommandAdded
+syn keyword vbEvents DECommandPropertyChanged DECommandRemoved
+syn keyword vbEvents DEConnectionAdded DEConnectionPropertyChanged
+syn keyword vbEvents DEConnectionRemoved DataArrival DataChanged
+syn keyword vbEvents DataUpdated DateClicked DblClick Deactivate
+syn keyword vbEvents DevModeChange DeviceArrival DeviceOtherEvent
+syn keyword vbEvents DeviceQueryRemove DeviceQueryRemoveFailed
+syn keyword vbEvents DeviceRemoveComplete DeviceRemovePending
+syn keyword vbEvents Disconnect DisplayChanged Dissociate
+syn keyword vbEvents DoGetNewFileName Done DonePainting DownClick
+syn keyword vbEvents DragDrop DragOver DropDown EditProperty EditQuery
+syn keyword vbEvents EndRequest EnterCell EnterFocus ExitFocus Expand
+syn keyword vbEvents FontChanged FootnoteActivated FootnoteSelected
+syn keyword vbEvents FootnoteUpdated Format FormatSize GotFocus
+syn keyword vbEvents HeadClick HeightChanged Hide InfoMessage
+syn keyword vbEvents IniProperties InitProperties Initialize
+syn keyword vbEvents ItemActivated ItemAdded ItemCheck ItemClick
+syn keyword vbEvents ItemReloaded ItemRemoved ItemRenamed
+syn keyword vbEvents ItemSeletected KeyDown KeyPress KeyUp LeaveCell
+syn keyword vbEvents LegendActivated LegendSelected LegendUpdated
+syn keyword vbEvents LinkClose LinkError LinkExecute LinkNotify
+syn keyword vbEvents LinkOpen Load LostFocus MouseDown MouseMove
+syn keyword vbEvents MouseUp NodeCheck NodeClick OLECompleteDrag
+syn keyword vbEvents OLEDragDrop OLEDragOver OLEGiveFeedback OLESetData
+syn keyword vbEvents OLEStartDrag ObjectEvent ObjectMove OnAddNew
+syn keyword vbEvents OnComm Paint PanelClick PanelDblClick PathChange
+syn keyword vbEvents PatternChange PlotActivated PlotSelected
+syn keyword vbEvents PlotUpdated PointActivated PointLabelActivated
+syn keyword vbEvents PointLabelSelected PointLabelUpdated PointSelected
+syn keyword vbEvents PointUpdated PowerQuerySuspend PowerResume
+syn keyword vbEvents PowerStatusChanged PowerSuspend ProcessTag
+syn keyword vbEvents ProcessingTimeout QueryChangeConfig QueryClose
+syn keyword vbEvents QueryComplete QueryCompleted QueryTimeout
+syn keyword vbEvents QueryUnload ReadProperties RepeatedControlLoaded
+syn keyword vbEvents RepeatedControlUnloaded Reposition
+syn keyword vbEvents RequestChangeFileName RequestWriteFile Resize
+syn keyword vbEvents ResultsChanged RetainedProject RollbackTrans
+syn keyword vbEvents RowColChange RowCurrencyChange RowResize
+syn keyword vbEvents RowStatusChanged Scroll SelChange SelectionChanged
+syn keyword vbEvents SendComplete SendProgress SeriesActivated
+syn keyword vbEvents SeriesSelected SeriesUpdated SettingChanged Show
+syn keyword vbEvents SplitChange Start StateChanged StatusUpdate
+syn keyword vbEvents SysColorsChanged Terminate TimeChanged Timer
+syn keyword vbEvents TitleActivated TitleSelected TitleUpdated
+syn keyword vbEvents UnboundAddData UnboundDeleteRow
+syn keyword vbEvents UnboundGetRelativeBookmark UnboundReadData
+syn keyword vbEvents UnboundWriteData Unformat Unload UpClick Updated
+syn keyword vbEvents UserEvent Validate ValidationError
+syn keyword vbEvents VisibleRecordChanged WillAssociate WillChangeData
+syn keyword vbEvents WillDissociate WillExecute WillUpdateRows
+syn keyword vbEvents WriteProperties
+
+
+syn keyword vbFunction Abs Array Asc AscB AscW Atn Avg BOF CBool CByte
+syn keyword vbFunction CCur CDate CDbl CInt CLng CSng CStr CVDate CVErr
+syn keyword vbFunction CVar CallByName Cdec Choose Chr ChrB ChrW Command
+syn keyword vbFunction Cos Count CreateObject CurDir DDB Date DateAdd
+syn keyword vbFunction DateDiff DatePart DateSerial DateValue Day Dir
+syn keyword vbFunction DoEvents EOF Environ Error Exp FV FileAttr
+syn keyword vbFunction FileDateTime FileLen FilterFix Fix Format
+syn keyword vbFunction FormatCurrency FormatDateTime FormatNumber
+syn keyword vbFunction FormatPercent FreeFile GetAllStrings GetAttr
+syn keyword vbFunction GetAutoServerSettings GetObject GetSetting Hex
+syn keyword vbFunction Hour IIf IMEStatus IPmt InStr Input InputB
+syn keyword vbFunction InputBox InstrB Int IsArray IsDate IsEmpty IsError
+syn keyword vbFunction IsMissing IsNull IsNumeric IsObject Join LBound
+syn keyword vbFunction LCase LOF LTrim Left LeftB Len LenB LoadPicture
+syn keyword vbFunction LoadResData LoadResPicture LoadResString Loc Log
+syn keyword vbFunction MIRR Max Mid MidB Min Minute Month MonthName
+syn keyword vbFunction MsgBox NPV NPer Now Oct PPmt PV Partition Pmt
+syn keyword vbFunction QBColor RGB RTrim Rate Replace Right RightB Rnd
+syn keyword vbFunction Round SLN SYD Second Seek Sgn Shell Sin Space Spc
+syn keyword vbFunction Split Sqr StDev StDevP Str StrComp StrConv
+syn keyword vbFunction StrReverse String Sum Switch Tab Tan Time
+syn keyword vbFunction TimeSerial TimeValue Timer Trim TypeName UBound
+syn keyword vbFunction UCase Val Var VarP VarType Weekday WeekdayName
+syn keyword vbFunction Year
+
+syn keyword vbMethods AboutBox Accept Activate Add AddCustom AddFile
+syn keyword vbMethods AddFromFile AddFromGuid AddFromString
+syn keyword vbMethods AddFromTemplate AddItem AddNew AddToAddInToolbar
+syn keyword vbMethods AddToolboxProgID Append AppendAppendChunk
+syn keyword vbMethods AppendChunk Arrange Assert AsyncRead BatchUpdate
+syn keyword vbMethods BeginQueryEdit BeginTrans Bind BuildPath
+syn keyword vbMethods CanPropertyChange Cancel CancelAsyncRead
+syn keyword vbMethods CancelBatch CancelUpdate CaptureImage CellText
+syn keyword vbMethods CellValue Circle Clear ClearFields ClearSel
+syn keyword vbMethods ClearSelCols ClearStructure Clone Close Cls
+syn keyword vbMethods ColContaining CollapseAll ColumnSize CommitTrans
+syn keyword vbMethods CompactDatabase Compose Connect Copy CopyFile
+syn keyword vbMethods CopyFolder CopyQueryDef Count CreateDatabase
+syn keyword vbMethods CreateDragImage CreateEmbed CreateField
+syn keyword vbMethods CreateFolder CreateGroup CreateIndex CreateLink
+syn keyword vbMethods CreatePreparedStatement CreatePropery CreateQuery
+syn keyword vbMethods CreateQueryDef CreateRelation CreateTableDef
+syn keyword vbMethods CreateTextFile CreateToolWindow CreateUser
+syn keyword vbMethods CreateWorkspace Customize Cut Delete
+syn keyword vbMethods DeleteColumnLabels DeleteColumns DeleteFile
+syn keyword vbMethods DeleteFolder DeleteLines DeleteRowLabels
+syn keyword vbMethods DeleteRows DeselectAll DesignerWindow DoVerb Drag
+syn keyword vbMethods Draw DriveExists Edit EditCopy EditPaste EndDoc
+syn keyword vbMethods EnsureVisible EstablishConnection Execute Exists
+syn keyword vbMethods Expand Export ExportReport ExtractIcon Fetch
+syn keyword vbMethods FetchVerbs FileExists Files FillCache Find
+syn keyword vbMethods FindFirst FindItem FindLast FindNext FindPrevious
+syn keyword vbMethods FolderExists Forward GetAbsolutePathName
+syn keyword vbMethods GetBaseName GetBookmark GetChunk GetClipString
+syn keyword vbMethods GetData GetDrive GetDriveName GetFile GetFileName
+syn keyword vbMethods GetFirstVisible GetFolder GetFormat GetHeader
+syn keyword vbMethods GetLineFromChar GetNumTicks GetParentFolderName
+syn keyword vbMethods GetRows GetSelectedPart GetSelection
+syn keyword vbMethods GetSpecialFolder GetTempName GetText
+syn keyword vbMethods GetVisibleCount GoBack GoForward Hide HitTest
+syn keyword vbMethods HoldFields Idle Import InitializeLabels Insert
+syn keyword vbMethods InsertColumnLabels InsertColumns InsertFile
+syn keyword vbMethods InsertLines InsertObjDlg InsertRowLabels
+syn keyword vbMethods InsertRows Item Keys KillDoc Layout Line Lines
+syn keyword vbMethods LinkExecute LinkPoke LinkRequest LinkSend Listen
+syn keyword vbMethods LoadFile LoadResData LoadResPicture LoadResString
+syn keyword vbMethods LogEvent MakeCompileFile MakeCompiledFile
+syn keyword vbMethods MakeReplica MoreResults Move MoveData MoveFile
+syn keyword vbMethods MoveFirst MoveFolder MoveLast MoveNext
+syn keyword vbMethods MovePrevious NavigateTo NewPage NewPassword
+syn keyword vbMethods NextRecordset OLEDrag OnAddinsUpdate OnConnection
+syn keyword vbMethods OnDisconnection OnStartupComplete Open
+syn keyword vbMethods OpenAsTextStream OpenConnection OpenDatabase
+syn keyword vbMethods OpenQueryDef OpenRecordset OpenResultset OpenURL
+syn keyword vbMethods Overlay PSet PaintPicture PastSpecialDlg Paste
+syn keyword vbMethods PeekData Play Point PopulatePartial PopupMenu
+syn keyword vbMethods Print PrintForm PrintReport PropertyChanged Quit
+syn keyword vbMethods Raise RandomDataFill RandomFillColumns
+syn keyword vbMethods RandomFillRows ReFill Read ReadAll ReadFromFile
+syn keyword vbMethods ReadLine ReadProperty Rebind Refresh RefreshLink
+syn keyword vbMethods RegisterDatabase ReleaseInstance Reload Remove
+syn keyword vbMethods RemoveAddInFromToolbar RemoveAll RemoveItem Render
+syn keyword vbMethods RepairDatabase ReplaceLine Reply ReplyAll Requery
+syn keyword vbMethods ResetCustom ResetCustomLabel ResolveName
+syn keyword vbMethods RestoreToolbar Resync Rollback RollbackTrans
+syn keyword vbMethods RowBookmark RowContaining RowTop Save SaveAs
+syn keyword vbMethods SaveFile SaveToFile SaveToOle1File SaveToolbar
+syn keyword vbMethods Scale ScaleX ScaleY Scroll SelPrint SelectAll
+syn keyword vbMethods SelectPart Send SendData Set SetAutoServerSettings
+syn keyword vbMethods SetData SetFocus SetOption SetSelection SetSize
+syn keyword vbMethods SetText SetViewport Show ShowColor ShowFont
+syn keyword vbMethods ShowHelp ShowOpen ShowPrinter ShowSave
+syn keyword vbMethods ShowWhatsThis SignOff SignOn Size Skip SkipLine
+syn keyword vbMethods Span Split SplitContaining StartLabelEdit
+syn keyword vbMethods StartLogging Stop Synchronize Tag TextHeight
+syn keyword vbMethods TextWidth ToDefaults Trace TwipsToChartPart
+syn keyword vbMethods TypeByChartType URLFor Update UpdateControls
+syn keyword vbMethods UpdateRecord UpdateRow Upto ValidateControls Value
+syn keyword vbMethods WhatsThisMode Write WriteBlankLines WriteLine
+syn keyword vbMethods WriteProperty WriteTemplate ZOrder
+syn keyword vbMethods rdoCreateEnvironment rdoRegisterDataSource
+
+syn keyword vbStatement Alias AppActivate As Base Beep Begin Call ChDir
+syn keyword vbStatement ChDrive Close Const Date Declare DefBool DefByte
+syn keyword vbStatement DefCur DefDate DefDbl DefDec DefInt DefLng DefObj
+syn keyword vbStatement DefSng DefStr DefVar Deftype DeleteSetting Dim Do
+syn keyword vbStatement Each ElseIf End Enum Erase Error Event Exit
+syn keyword vbStatement Explicit FileCopy For ForEach Function Get GoSub
+syn keyword vbStatement GoTo Gosub Implements Kill LSet Let Lib LineInput
+syn keyword vbStatement Load Lock Loop Mid MkDir Name Next On OnError Open
+syn keyword vbStatement Option Preserve Private Property Public Put RSet
+syn keyword vbStatement RaiseEvent Randomize ReDim Redim Reset Resume
+syn keyword vbStatement Return RmDir SavePicture SaveSetting Seek SendKeys
+syn keyword vbStatement Sendkeys Set SetAttr Static Step Stop Sub Time
+syn keyword vbStatement Type Unload Unlock Until Wend While Width With
+syn keyword vbStatement Write
+
+syn keyword vbKeyword As Binary ByRef ByVal Date Empty Error Friend Get
+syn keyword vbKeyword Input Is Len Lock Me Mid New Nothing Null On
+syn keyword vbKeyword Option Optional ParamArray Print Private Property
+syn keyword vbKeyword Public PublicNotCreateable OnNewProcessSingleUse
+syn keyword vbKeyword InSameProcessMultiUse GlobalMultiUse Resume Seek
+syn keyword vbKeyword Set Static Step String Time WithEvents
+
+syn keyword vbTodo contained TODO
+
+"Datatypes
+syn keyword vbTypes Boolean Byte Currency Date Decimal Double Empty
+syn keyword vbTypes Integer Long Object Single String Variant
+
+"VB defined values
+syn keyword vbDefine dbBigInt dbBinary dbBoolean dbByte dbChar
+syn keyword vbDefine dbCurrency dbDate dbDecimal dbDouble dbFloat
+syn keyword vbDefine dbGUID dbInteger dbLong dbLongBinary dbMemo
+syn keyword vbDefine dbNumeric dbSingle dbText dbTime dbTimeStamp
+syn keyword vbDefine dbVarBinary
+
+"VB defined values
+syn keyword vbDefine vb3DDKShadow vb3DFace vb3DHighlight vb3DLight
+syn keyword vbDefine vb3DShadow vbAbort vbAbortRetryIgnore
+syn keyword vbDefine vbActiveBorder vbActiveTitleBar vbAlias
+syn keyword vbDefine vbApplicationModal vbApplicationWorkspace
+syn keyword vbDefine vbAppTaskManager vbAppWindows vbArchive vbArray
+syn keyword vbDefine vbBack vbBinaryCompare vbBlack vbBlue vbBoolean
+syn keyword vbDefine vbButtonFace vbButtonShadow vbButtonText vbByte
+syn keyword vbDefine vbCalGreg vbCalHijri vbCancel vbCr vbCritical
+syn keyword vbDefine vbCrLf vbCurrency vbCyan vbDatabaseCompare
+syn keyword vbDefine vbDataObject vbDate vbDecimal vbDefaultButton1
+syn keyword vbDefine vbDefaultButton2 vbDefaultButton3 vbDefaultButton4
+syn keyword vbDefine vbDesktop vbDirectory vbDouble vbEmpty vbError
+syn keyword vbDefine vbExclamation vbFirstFourDays vbFirstFullWeek
+syn keyword vbDefine vbFirstJan1 vbFormCode vbFormControlMenu
+syn keyword vbDefine vbFormFeed vbFormMDIForm vbFriday vbFromUnicode
+syn keyword vbDefine vbGrayText vbGreen vbHidden vbHide vbHighlight
+syn keyword vbDefine vbHighlightText vbHiragana vbIgnore vbIMEAlphaDbl
+syn keyword vbDefine vbIMEAlphaSng vbIMEDisable vbIMEHiragana
+syn keyword vbDefine vbIMEKatakanaDbl vbIMEKatakanaSng vbIMEModeAlpha
+syn keyword vbDefine vbIMEModeAlphaFull vbIMEModeDisable
+syn keyword vbDefine vbIMEModeHangul vbIMEModeHangulFull
+syn keyword vbDefine vbIMEModeHiragana vbIMEModeKatakana
+syn keyword vbDefine vbIMEModeKatakanaHalf vbIMEModeNoControl
+syn keyword vbDefine vbIMEModeOff vbIMEModeOn vbIMENoOp vbIMEOff
+syn keyword vbDefine vbIMEOn vbInactiveBorder vbInactiveCaptionText
+syn keyword vbDefine vbInactiveTitleBar vbInfoBackground vbInformation
+syn keyword vbDefine vbInfoText vbInteger vbKatakana vbKey0 vbKey1
+syn keyword vbDefine vbKey2 vbKey3 vbKey4 vbKey5 vbKey6 vbKey7 vbKey8
+syn keyword vbDefine vbKey9 vbKeyA vbKeyAdd vbKeyB vbKeyBack vbKeyC
+syn keyword vbDefine vbKeyCancel vbKeyCapital vbKeyClear vbKeyControl
+syn keyword vbDefine vbKeyD vbKeyDecimal vbKeyDelete vbKeyDivide
+syn keyword vbDefine vbKeyDown vbKeyE vbKeyEnd vbKeyEscape vbKeyExecute
+syn keyword vbDefine vbKeyF vbKeyF1 vbKeyF10 vbKeyF11 vbKeyF12 vbKeyF13
+syn keyword vbDefine vbKeyF14 vbKeyF15 vbKeyF16 vbKeyF2 vbKeyF3 vbKeyF4
+syn keyword vbDefine vbKeyF5 vbKeyF6 vbKeyF7 vbKeyF8 vbKeyF9 vbKeyG
+syn keyword vbDefine vbKeyH vbKeyHelp vbKeyHome vbKeyI vbKeyInsert
+syn keyword vbDefine vbKeyJ vbKeyK vbKeyL vbKeyLButton vbKeyLeft vbKeyM
+syn keyword vbDefine vbKeyMButton vbKeyMenu vbKeyMultiply vbKeyN
+syn keyword vbDefine vbKeyNumlock vbKeyNumpad0 vbKeyNumpad1
+syn keyword vbDefine vbKeyNumpad2 vbKeyNumpad3 vbKeyNumpad4
+syn keyword vbDefine vbKeyNumpad5 vbKeyNumpad6 vbKeyNumpad7
+syn keyword vbDefine vbKeyNumpad8 vbKeyNumpad9 vbKeyO vbKeyP
+syn keyword vbDefine vbKeyPageDown vbKeyPageUp vbKeyPause vbKeyPrint
+syn keyword vbDefine vbKeyQ vbKeyR vbKeyRButton vbKeyReturn vbKeyRight
+syn keyword vbDefine vbKeyS vbKeySelect vbKeySeparator vbKeyShift
+syn keyword vbDefine vbKeySnapshot vbKeySpace vbKeySubtract vbKeyT
+syn keyword vbDefine vbKeyTab vbKeyU vbKeyUp vbKeyV vbKeyW vbKeyX
+syn keyword vbDefine vbKeyY vbKeyZ vbLf vbLong vbLowerCase vbMagenta
+syn keyword vbDefine vbMaximizedFocus vbMenuBar vbMenuText
+syn keyword vbDefine vbMinimizedFocus vbMinimizedNoFocus vbMonday
+syn keyword vbDefine vbMsgBox vbMsgBoxHelpButton vbMsgBoxRight
+syn keyword vbDefine vbMsgBoxRtlReading vbMsgBoxSetForeground
+syn keyword vbDefine vbMsgBoxText vbNarrow vbNewLine vbNo vbNormal
+syn keyword vbDefine vbNormalFocus vbNormalNoFocus vbNull vbNullChar
+syn keyword vbDefine vbNullString vbObject vbObjectError vbOK
+syn keyword vbDefine vbOKCancel vbOKOnly vbProperCase vbQuestion
+syn keyword vbDefine vbReadOnly vbRed vbRetry vbRetryCancel vbSaturday
+syn keyword vbDefine vbScrollBars vbSingle vbString vbSunday vbSystem
+syn keyword vbDefine vbSystemModal vbTab vbTextCompare vbThursday
+syn keyword vbDefine vbTitleBarText vbTuesday vbUnicode vbUpperCase
+syn keyword vbDefine vbUseSystem vbUseSystemDayOfWeek vbVariant
+syn keyword vbDefine vbVerticalTab vbVolume vbWednesday vbWhite vbWide
+syn keyword vbDefine vbWindowBackground vbWindowFrame vbWindowText
+syn keyword vbDefine vbYellow vbYes vbYesNo vbYesNoCancel
+
+"Numbers
+"integer number, or floating point number without a dot.
+syn match vbNumber "\<\d\+\>"
+"floating point number, with dot
+syn match vbNumber "\<\d\+\.\d*\>"
+"floating point number, starting with a dot
+syn match vbNumber "\.\d\+\>"
+"syn match vbNumber "{[[:xdigit:]-]\+}\|&[hH][[:xdigit:]]\+&"
+"syn match vbNumber ":[[:xdigit:]]\+"
+"syn match vbNumber "[-+]\=\<\d\+\>"
+syn match vbFloat "[-+]\=\<\d\+[eE][\-+]\=\d\+"
+syn match vbFloat "[-+]\=\<\d\+\.\d*\([eE][\-+]\=\d\+\)\="
+syn match vbFloat "[-+]\=\<\.\d\+\([eE][\-+]\=\d\+\)\="
+
+" String and Character constants
+syn region vbString start=+"+ end=+"\|$+
+syn region vbComment start="\(^\|\s\)REM\s" end="$" contains=vbTodo
+syn region vbComment start="\(^\|\s\)\'" end="$" contains=vbTodo
+syn match vbLineLabel "^\h\w\+:"
+syn match vbLineNumber "^\d\+\(:\|\s\|$\)"
+syn match vbTypeSpecifier "\<\a\w*[@\$%&!#]"ms=s+1
+syn match vbTypeSpecifier "#[a-zA-Z0-9]"me=e-1
+" Conditional Compilation
+syn match vbPreProc "^#const\>"
+syn region vbPreProc matchgroup=PreProc start="^#if\>" end="\<then\>" transparent contains=TOP
+syn region vbPreProc matchgroup=PreProc start="^#elseif\>" end="\<then\>" transparent contains=TOP
+syn match vbPreProc "^#else\>"
+syn match vbPreProc "^#end\s*if\>"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link vbBoolean Boolean
+hi def link vbLineNumber Comment
+hi def link vbLineLabel Comment
+hi def link vbComment Comment
+hi def link vbConditional Conditional
+hi def link vbConst Constant
+hi def link vbDefine Constant
+hi def link vbError Error
+hi def link vbFunction Identifier
+hi def link vbIdentifier Identifier
+hi def link vbNumber Number
+hi def link vbFloat Float
+hi def link vbMethods PreProc
+hi def link vbOperator Operator
+hi def link vbRepeat Repeat
+hi def link vbString String
+hi def link vbStatement Statement
+hi def link vbKeyword Statement
+hi def link vbEvents Special
+hi def link vbTodo Todo
+hi def link vbTypes Type
+hi def link vbTypeSpecifier Type
+hi def link vbPreProc PreProc
+
+let b:current_syntax = "vb"
+
+" vim: ts=8
diff --git a/runtime/syntax/vdf.vim b/runtime/syntax/vdf.vim
new file mode 100644
index 0000000..c690b70
--- /dev/null
+++ b/runtime/syntax/vdf.vim
@@ -0,0 +1,54 @@
+" Vim syntax file
+" Language: Valve Data Format
+" Maintainer: ObserverOfTime <chronobserver@disroot.org>
+" Filenames: *.vdf
+" Last Change: 2022 Sep 15
+
+if exists('b:current_syntax')
+ finish
+endif
+
+let s:cpo_save = &cpoptions
+set cpoptions&vim
+
+" Comment
+syn keyword vdfTodo contained TODO FIXME XXX
+syn match vdfComment +//.*+ contains=vdfTodo
+
+" Macro
+syn match vdfMacro /^\s*#.*/
+
+" Tag
+syn region vdfTag start=/"/ skip=/\\"/ end=/"/
+ \ nextgroup=vdfValue skipwhite oneline
+
+" Section
+syn region vdfSection matchgroup=vdfBrace
+ \ start=/{/ end=/}/ transparent fold
+ \ contains=vdfTag,vdfSection,vdfComment,vdfConditional
+
+" Conditional
+syn match vdfConditional /\[\$\w\{1,1021}\]/ nextgroup=vdfTag
+
+" Value
+syn region vdfValue start=/"/ skip=/\\"/ end=/"/
+ \ oneline contained contains=vdfVariable,vdfNumber,vdfEscape
+syn region vdfVariable start=/%/ skip=/\\%/ end=/%/ oneline contained
+syn match vdfEscape /\\[nt\\"]/ contained
+syn match vdfNumber /"-\?\d\+"/ contained
+
+hi def link vdfBrace Delimiter
+hi def link vdfComment Comment
+hi def link vdfConditional Constant
+hi def link vdfEscape SpecialChar
+hi def link vdfMacro Macro
+hi def link vdfNumber Number
+hi def link vdfTag Keyword
+hi def link vdfTodo Todo
+hi def link vdfValue String
+hi def link vdfVariable Identifier
+
+let b:current_syntax = 'vdf'
+
+let &cpoptions = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/vera.vim b/runtime/syntax/vera.vim
new file mode 100644
index 0000000..b41c0a6
--- /dev/null
+++ b/runtime/syntax/vera.vim
@@ -0,0 +1,348 @@
+" Vim syntax file
+" Language: Vera
+" Maintainer: Dave Eggum (opine at bluebottle dOt com)
+" Last Change: 2005 Dec 19
+
+" NOTE: extra white space at the end of the line will be highlighted if you
+" add this line to your colorscheme:
+
+" highlight SpaceError guibg=#204050
+
+" (change the value for guibg to any color you like)
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" A bunch of useful Vera keywords
+syn keyword veraStatement break return continue fork join terminate
+syn keyword veraStatement breakpoint proceed
+
+syn keyword veraLabel bad_state bad_trans bind constraint coverage_group
+syn keyword veraLabel class CLOCK default function interface m_bad_state
+syn keyword veraLabel m_bad_trans m_state m_trans program randseq state
+syn keyword veraLabel task trans
+
+syn keyword veraConditional if else case casex casez randcase
+syn keyword veraRepeat repeat while for do foreach
+syn keyword veraModifier after all any around assoc_size async
+syn keyword veraModifier before big_endian bit_normal bit_reverse export
+syn keyword veraModifier extends extern little_endian local hdl_node hdl_task
+syn keyword veraModifier negedge none packed protected posedge public rules
+syn keyword veraModifier shadow soft static super this typedef unpacked var
+syn keyword veraModifier vca virtual virtuals wildcard with
+
+syn keyword veraType reg string enum event bit
+syn keyword veraType rand randc integer port prod
+
+syn keyword veraDeprecated call_func call_task close_conn get_bind get_bind_id
+syn keyword veraDeprecated get_conn_err mailbox_receive mailbox_send make_client
+syn keyword veraDeprecated make_server simwave_plot up_connections
+
+" predefined tasks and functions
+syn keyword veraTask alloc assoc_index cast_assign cm_coverage
+syn keyword veraTask cm_get_coverage cm_get_limit delay error error_mode
+syn keyword veraTask exit fclose feof ferror fflush flag fopen fprintf
+syn keyword veraTask freadb freadh freadstr get_cycle get_env get_memsize
+syn keyword veraTask get_plus_arg getstate get_systime get_time get_time_unit
+syn keyword veraTask initstate lock_file mailbox_get mailbox_put os_command
+syn keyword veraTask printf prodget prodset psprintf query query_str query_x
+syn keyword veraTask rand48 random region_enter region_exit rewind
+syn keyword veraTask semaphore_get semaphore_put setstate signal_connect
+syn keyword veraTask sprintf srandom sscanf stop suspend_thread sync
+syn keyword veraTask timeout trace trigger unit_delay unlock_file urand48
+syn keyword veraTask urandom urandom_range vera_bit_reverse vera_crc
+syn keyword veraTask vera_pack vera_pack_big_endian vera_plot
+syn keyword veraTask vera_report_profile vera_unpack vera_unpack_big_endian
+syn keyword veraTask vsv_call_func vsv_call_task vsv_get_conn_err
+syn keyword veraTask vsv_make_client vsv_make_server vsv_up_connections
+syn keyword veraTask vsv_wait_for_done vsv_wait_for_input wait_child wait_var
+
+syn cluster veraOperGroup contains=veraOperator,veraOperParen,veraNumber,veraString,veraOperOk,veraType
+" syn match veraOperator "++\|--\|&\|\~&\||\|\~|\|^\|\~^\|\~\|><"
+" syn match veraOperator "*\|/\|%\|+\|-\|<<\|>>\|<\|<=\|>\|>=\|!in"
+" syn match veraOperator "=?=\|!?=\|==\|!=\|===\|!==\|&\~\|^\~\||\~"
+" syn match veraOperator "&&\|||\|=\|+=\|-=\|*=\|/=\|%=\|<<=\|>>=\|&="
+" syn match veraOperator "|=\|^=\|\~&=\|\~|=\|\~^="
+
+syn match veraOperator "[&|\~><!*@+/=,.\^\-]"
+syn keyword veraOperator or in dist not
+
+" open vera class methods
+syn keyword veraMethods atobin atohex atoi atooct backref bittostr capacity
+syn keyword veraMethods compare Configure constraint_mode delete DisableTrigger
+syn keyword veraMethods DoAction empty EnableCount EnableTrigger Event find
+syn keyword veraMethods find_index first first_index GetAssert get_at_least
+syn keyword veraMethods get_auto_bin getc GetCount get_coverage_goal get_cov_weight
+syn keyword veraMethods get_cross_bin_max GetFirstAssert GetName GetNextAssert
+syn keyword veraMethods get_status get_status_msg hide hash icompare insert
+syn keyword veraMethods inst_get_at_least inst_get_auto_bin_max inst_get_collect
+syn keyword veraMethods inst_get_coverage_goal inst_get_cov_weight inst_getcross_bin_max
+syn keyword veraMethods inst_query inst_set_at_least inst_set_auto_bin_max
+syn keyword veraMethods inst_set_bin_activiation inst_set_collect inst_set_coverage_goal
+syn keyword veraMethods inst_set_cov_weight inst_set_cross_bin_max itoa last last_index
+syn keyword veraMethods len load match max max_index min min_index new object_compare
+syn keyword veraMethods object_compare object_copy object_print pack pick_index
+syn keyword veraMethods pop_back pop_front post_boundary postmatch post_pack post_pack
+syn keyword veraMethods post_randomize post_randomize post_unpack post_unpack
+syn keyword veraMethods pre_boundary prematch pre_pack pre_pack pre_randomize
+syn keyword veraMethods pre-randomize pre_unpack push_back push_front putc query
+syn keyword veraMethods query_str rand_mode randomize reserve reverse rsort search
+syn keyword veraMethods set_at_least set_auto_bin_max set_bin_activiation
+syn keyword veraMethods set_coverage_goal set_cov_weight set_cross_bin_max set_name
+syn keyword veraMethods size sort substr sum thismatch tolower toupper unique_index
+syn keyword veraMethods unpack Wait
+
+" interface keywords
+syn keyword veraInterface ASYNC CLOCK gnr gr0 gr1 grx grz NHOLD nr NR0 NR1
+syn keyword veraInterface NRZ NRZ NSAMPLE PHOLD PR0 PR1 PRX PRZ r0 r1 rx snr
+syn keyword veraInterface sr0 sr1 srx srz depth inout input output
+syn match veraInterface "\$\w\+"
+
+
+syn keyword veraTodo contained TODO FIXME XXX FINISH
+
+" veraCommentGroup allows adding matches for special things in comments
+syn cluster veraCommentGroup contains=veraTodo
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match veraSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
+syn match veraFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpnm]\|\[\^\=.[^]]*\]\)" contained
+syn match veraFormat display "%%" contained
+syn region veraString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=veraSpecial,veraFormat,@Spell
+syn region veraConcat contained transparent oneline start='{' end='}'
+
+" veraCppString: same as veraString, but ends at end of line
+syn region veraCppString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=veraSpecial,veraFormat,@Spell
+
+syn match veraCharacter "'[^\\]'"
+syn match veraCharacter "L'[^']*'" contains=veraSpecial
+syn match veraSpecialError "'\\[^'\"?\\abefnrtv]'"
+syn match veraSpecialCharacter "'\\['\"?\\abefnrtv]'"
+syn match veraSpecialCharacter display "'\\\o\{1,3}'"
+syn match veraSpecialCharacter display "'\\x\x\{1,2}'"
+syn match veraSpecialCharacter display "L'\\x\x\+'"
+
+" highlight trailing white space
+syn match veraSpaceError display excludenl "\s\+$"
+syn match veraSpaceError display " \+\t"me=e-1
+
+"catch errors caused by wrong parenthesis and brackets
+syn cluster veraParenGroup contains=veraParenError,veraIncluded,veraSpecial,veraCommentSkip,veraCommentString,veraComment2String,@veraCommentGroup,veraCommentStartError,veraUserCont,veraUserLabel,veraBitField,veraCommentSkip,veraOctalZero,veraCppOut,veraCppOut2,veraCppSkip,veraFormat,veraNumber,veraFloat,veraOctal,veraOctalError,veraNumbersCom
+
+syn region veraParen transparent start='(' end=')' contains=ALLBUT,@veraParenGroup,veraCppParen,veraErrInBracket,veraCppBracket,veraCppString,@Spell
+" veraCppParen: same as veraParen but ends at end-of-line; used in veraDefine
+syn region veraCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@veraParenGroup,veraErrInBracket,veraParen,veraBracket,veraString,@Spell
+syn match veraParenError display "[\])]"
+" syn match veraErrInParen display contained "[\]{}]"
+syn match veraErrInParen display contained "[\]]"
+syn region veraBracket transparent start='\[' end=']' contains=ALLBUT,@veraParenGroup,veraErrInParen,veraCppParen,veraCppBracket,veraCppString,@Spell
+
+" veraCppBracket: same as veraParen but ends at end-of-line; used in veraDefine
+syn region veraCppBracket transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@veraParenGroup,veraErrInParen,veraParen,veraBracket,veraString,@Spell
+syn match veraErrInBracket display contained "[);{}]"
+
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match veraNumbers display transparent "\<\d\|\.\d" contains=veraNumber,veraFloat,veraOctalError,veraOctal
+" Same, but without octal error (for comments)
+syn match veraNumbersCom display contained transparent "\<\d\|\.\d" contains=veraNumber,veraFloat,veraOctal
+" syn match veraNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
+" "hex number
+" syn match veraNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+" syn match veraNumber "\(\<[0-9]\+\|\)'[bdoh][0-9a-fxzA-FXZ_]\+\>"
+syn match veraNumber "\<\(\<[0-9]\+\)\?\('[bdoh]\)\?[0-9a-fxz_]\+\>"
+" syn match veraNumber "\<[+-]\=[0-9]\+\>"
+" Flag the first zero of an octal number as something special
+syn match veraOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=veraOctalZero
+syn match veraOctalZero display contained "\<0"
+syn match veraFloat display contained "\d\+f"
+"floating point number, with dot, optional exponent
+syn match veraFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+"floating point number, starting with a dot, optional exponent
+syn match veraFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match veraFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>"
+"hexadecimal floating point number, optional leading digits, with dot, with exponent
+syn match veraFloat display contained "0x\x*\.\x\+p[-+]\=\d\+[fl]\=\>"
+"hexadecimal floating point number, with leading digits, optional dot, with exponent
+syn match veraFloat display contained "0x\x\+\.\=p[-+]\=\d\+[fl]\=\>"
+
+" flag an octal number with wrong digits
+syn match veraOctalError display contained "0\o*[89]\d*"
+syn case match
+
+let vera_comment_strings = 1
+
+if exists("vera_comment_strings")
+ " A comment can contain veraString, veraCharacter and veraNumber.
+ " But a "*/" inside a veraString in a veraComment DOES end the comment! So we
+ " need to use a special type of veraString: veraCommentString, which also ends on
+ " "*/", and sees a "*" at the start of the line as comment again.
+ " Unfortunately this doesn't work very well for // type of comments :-(
+ syntax match veraCommentSkip contained "^\s*\*\($\|\s\+\)"
+ syntax region veraCommentString contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=veraSpecial,veraCommentSkip
+ syntax region veraComment2String contained start=+\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=veraSpecial
+ syntax region veraCommentL start="//" skip="\\$" end="$" keepend contains=@veraCommentGroup,veraComment2String,veraCharacter,veraNumbersCom,veraSpaceError,@Spell
+ if exists("vera_no_comment_fold")
+ syntax region veraComment matchgroup=veraCommentStart start="/\*" end="\*/" contains=@veraCommentGroup,veraCommentStartError,veraCommentString,veraCharacter,veraNumbersCom,veraSpaceError,@Spell
+ else
+ syntax region veraComment matchgroup=veraCommentStart start="/\*" end="\*/" contains=@veraCommentGroup,veraCommentStartError,veraCommentString,veraCharacter,veraNumbersCom,veraSpaceError,@Spell fold
+ endif
+else
+ syn region veraCommentL start="//" skip="\\$" end="$" keepend contains=@veraCommentGroup,veraSpaceError,@Spell
+ if exists("vera_no_comment_fold")
+ syn region veraComment matchgroup=veraCommentStart start="/\*" end="\*/" contains=@veraCommentGroup,veraCommentStartError,veraSpaceError,@Spell
+ else
+ syn region veraComment matchgroup=veraCommentStart start="/\*" end="\*/" contains=@veraCommentGroup,veraCommentStartError,veraSpaceError,@Spell fold
+ endif
+endif
+" keep a // comment separately, it terminates a preproc. conditional
+syntax match veraCommentError display "\*/"
+syntax match veraCommentStartError display "/\*"me=e-1 contained
+
+syntax region veraBlock start="{" end="}" transparent fold
+
+" open vera pre-defined constants
+syn keyword veraConstant ALL ANY BAD_STATE BAD_TRANS CALL CHECK CHGEDGE
+syn keyword veraConstant CLEAR COPY_NO_WAIT COPY_WAIT CROSS CROSS_TRANS
+syn keyword veraConstant DEBUG DELETE EC_ARRAYX EC_CODE_END EC_CONFLICT
+syn keyword veraConstant EC_EVNTIMOUT EC_EXPECT EC_FULLEXPECT EC_MBXTMOUT
+syn keyword veraConstant EC_NEXPECT EC_RETURN EC_RGNTMOUT EC_SCONFLICT
+syn keyword veraConstant EC_SEMTMOUT EC_SEXPECT EC_SFULLEXPECT EC_SNEXTPECT
+syn keyword veraConstant EC_USERSET EQ EVENT FAIL FIRST FORK GE GOAL GT
+syn keyword veraConstant HAND_SHAKE HI HIGH HNUM LE LIC_EXIT LIC_PRERR
+syn keyword veraConstant LIC_PRWARN LIC_WAIT LO LOAD LOW LT MAILBOX MAX_COM
+syn keyword veraConstant NAME NE NEGEDGE NEXT NO_OVERLAP NO_OVERLAP_STATE
+syn keyword veraConstant NO_OVERLAP_TRANS NO_VARS NO_WAIT NUM NUM_BIN
+syn keyword veraConstant NUM_DET null OFF OK OK_LAST ON ONE_BLAST ONE_SHOT ORDER
+syn keyword veraConstant PAST_IT PERCENT POSEDGE PROGRAM RAWIN REGION REPORT
+syn keyword veraConstant SAMPLE SAVE SEMAPHORE SET SILENT STATE stderr
+syn keyword veraConstant stdin stdout STR STR_ERR_OUT_OF_RANGE
+syn keyword veraConstant STR_ERR_REGEXP_SYNTAX SUM TRANS VERBOSE void WAIT
+syn keyword veraConstant __LINE__ __FILE__ __DATE__ __TIME__ __VERA__
+syn keyword veraConstant __VERSION__ __VERA_VERSION__ __VERA_MINOR__
+syn keyword veraConstant __VERA_PATCH__ __VERA_VMC__ __VERA_VMC_MINOR__
+
+syn match veraUserConstant "\<[A-Z][A-Z0-9_]\+\>"
+
+syn match veraClass "\zs\w\+\ze::"
+syn match veraClass "\zs\w\+\ze\s\+\w\+\s*[=;,)\[]" contains=veraConstant,veraUserConstant
+syn match veraClass "\zs\w\+\ze\s\+\w\+\s*$" contains=veraConstant,veraUserConstant
+syn match veraUserMethod "\zs\w\+\ze\s*(" contains=veraConstant,veraUserConstant
+syn match veraObject "\zs\w\+\ze\.\w"
+syn match veraObject "\zs\w\+\ze\.\$\w"
+
+" Accept ` for # (Verilog)
+syn region veraPreCondit start="^\s*\(`\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=veraComment,veraCppString,veraCharacter,veraCppParen,veraParenError,veraNumbers,veraCommentError,veraSpaceError
+syn match veraPreCondit display "^\s*\(`\|#\)\s*\(else\|endif\)\>"
+if !exists("vera_no_if0")
+ syn region veraCppOut start="^\s*\(`\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=veraCppOut2
+ syn region veraCppOut2 contained start="0" end="^\s*\(`\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=veraSpaceError,veraCppSkip
+ syn region veraCppSkip contained start="^\s*\(`\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(`\|#\)\s*endif\>" contains=veraSpaceError,veraCppSkip
+endif
+syn region veraIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match veraIncluded display contained "<[^>]*>"
+syn match veraInclude display "^\s*\(`\|#\)\s*include\>\s*["<]" contains=veraIncluded
+"syn match veraLineSkip "\\$"
+syn cluster veraPreProcGroup contains=veraPreCondit,veraIncluded,veraInclude,veraDefine,veraErrInParen,veraErrInBracket,veraUserLabel,veraSpecial,veraOctalZero,veraCppOut,veraCppOut2,veraCppSkip,veraFormat,veraNumber,veraFloat,veraOctal,veraOctalError,veraNumbersCom,veraString,veraCommentSkip,veraCommentString,veraComment2String,@veraCommentGroup,veraCommentStartError,veraParen,veraBracket,veraMulti
+syn region veraDefine start="^\s*\(`\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@veraPreProcGroup,@Spell
+syn region veraPreProc start="^\s*\(`\|#\)\s*\(pragma\>\|line\>\|warning\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@veraPreProcGroup,@Spell
+
+" Highlight User Labels
+syn cluster veraMultiGroup contains=veraIncluded,veraSpecial,veraCommentSkip,veraCommentString,veraComment2String,@veraCommentGroup,veraCommentStartError,veraUserCont,veraUserLabel,veraBitField,veraOctalZero,veraCppOut,veraCppOut2,veraCppSkip,veraFormat,veraNumber,veraFloat,veraOctal,veraOctalError,veraNumbersCom,veraCppParen,veraCppBracket,veraCppString
+syn region veraMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@veraMultiGroup,@Spell
+" syn region veraMulti transparent start='?' skip='::' end=':' contains=ALL
+" The above causes veraCppOut2 to catch on:
+" i = (isTrue) ? 0 : 1;
+" which ends up commenting the rest of the file
+
+" Avoid matching foo::bar() by requiring that the next char is not ':'
+syn cluster veraLabelGroup contains=veraUserLabel
+syn match veraUserCont display "^\s*\I\i*\s*:$" contains=@veraLabelGroup
+syn match veraUserCont display ";\s*\I\i*\s*:$" contains=@veraLabelGroup
+syn match veraUserCont display "^\s*\I\i*\s*:[^:]"me=e-1 contains=@veraLabelGroup
+syn match veraUserCont display ";\s*\I\i*\s*:[^:]"me=e-1 contains=@veraLabelGroup
+
+syn match veraUserLabel display "\I\i*" contained
+
+" Avoid recognizing most bitfields as labels
+syn match veraBitField display "^\s*\I\i*\s*:\s*[1-9]"me=e-1
+syn match veraBitField display ";\s*\I\i*\s*:\s*[1-9]"me=e-1
+
+if exists("vera_minlines")
+ let b:vera_minlines = vera_minlines
+else
+ if !exists("vera_no_if0")
+ let b:vera_minlines = 50 " #if 0 constructs can be long
+ else
+ let b:vera_minlines = 15 " mostly for () constructs
+ endif
+endif
+exec "syn sync ccomment veraComment minlines=" . b:vera_minlines
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link veraClass Identifier
+hi def link veraObject Identifier
+hi def link veraUserMethod Function
+hi def link veraTask Keyword
+hi def link veraModifier Tag
+hi def link veraDeprecated veraError
+hi def link veraMethods Statement
+" hi def link veraInterface Label
+hi def link veraInterface Function
+
+hi def link veraFormat veraSpecial
+hi def link veraCppString veraString
+hi def link veraCommentL veraComment
+hi def link veraCommentStart veraComment
+hi def link veraLabel Label
+hi def link veraUserLabel Label
+hi def link veraConditional Conditional
+hi def link veraRepeat Repeat
+hi def link veraCharacter Character
+hi def link veraSpecialCharacter veraSpecial
+hi def link veraNumber Number
+hi def link veraOctal Number
+hi def link veraOctalZero PreProc " link this to Error if you want
+hi def link veraFloat Float
+hi def link veraOctalError veraError
+hi def link veraParenError veraError
+hi def link veraErrInParen veraError
+hi def link veraErrInBracket veraError
+hi def link veraCommentError veraError
+hi def link veraCommentStartError veraError
+hi def link veraSpaceError SpaceError
+hi def link veraSpecialError veraError
+hi def link veraOperator Operator
+hi def link veraStructure Structure
+hi def link veraInclude Include
+hi def link veraPreProc PreProc
+hi def link veraDefine Macro
+hi def link veraIncluded veraString
+hi def link veraError Error
+hi def link veraStatement Statement
+hi def link veraPreCondit PreCondit
+hi def link veraType Type
+" hi def link veraConstant Constant
+hi def link veraConstant Keyword
+hi def link veraUserConstant Constant
+hi def link veraCommentString veraString
+hi def link veraComment2String veraString
+hi def link veraCommentSkip veraComment
+hi def link veraString String
+hi def link veraComment Comment
+hi def link veraSpecial SpecialChar
+hi def link veraTodo Todo
+hi def link veraCppSkip veraCppOut
+hi def link veraCppOut2 veraCppOut
+hi def link veraCppOut Comment
+
+
+let b:current_syntax = "vera"
+
+" vim: ts=8
diff --git a/runtime/syntax/verilog.vim b/runtime/syntax/verilog.vim
new file mode 100644
index 0000000..bbaca49
--- /dev/null
+++ b/runtime/syntax/verilog.vim
@@ -0,0 +1,119 @@
+" Vim syntax file
+" Language: Verilog
+" Maintainer: Mun Johl <Mun.Johl@emulex.com>
+" Last Update: Wed Jul 20 16:04:19 PDT 2011
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Set the local value of the 'iskeyword' option.
+" NOTE: '?' was added so that verilogNumber would be processed correctly when
+" '?' is the last character of the number.
+setlocal iskeyword=@,48-57,63,_,192-255
+
+" A bunch of useful Verilog keywords
+
+syn keyword verilogStatement always and assign automatic buf
+syn keyword verilogStatement bufif0 bufif1 cell cmos
+syn keyword verilogStatement config deassign defparam design
+syn keyword verilogStatement disable edge endconfig
+syn keyword verilogStatement endfunction endgenerate endmodule
+syn keyword verilogStatement endprimitive endspecify endtable endtask
+syn keyword verilogStatement event force function
+syn keyword verilogStatement generate genvar highz0 highz1 ifnone
+syn keyword verilogStatement incdir include initial inout input
+syn keyword verilogStatement instance integer large liblist
+syn keyword verilogStatement library localparam macromodule medium
+syn keyword verilogStatement module nand negedge nmos nor
+syn keyword verilogStatement noshowcancelled not notif0 notif1 or
+syn keyword verilogStatement output parameter pmos posedge primitive
+syn keyword verilogStatement pull0 pull1 pulldown pullup
+syn keyword verilogStatement pulsestyle_onevent pulsestyle_ondetect
+syn keyword verilogStatement rcmos real realtime reg release
+syn keyword verilogStatement rnmos rpmos rtran rtranif0 rtranif1
+syn keyword verilogStatement scalared showcancelled signed small
+syn keyword verilogStatement specify specparam strong0 strong1
+syn keyword verilogStatement supply0 supply1 table task time tran
+syn keyword verilogStatement tranif0 tranif1 tri tri0 tri1 triand
+syn keyword verilogStatement trior trireg unsigned use vectored wait
+syn keyword verilogStatement wand weak0 weak1 wire wor xnor xor
+syn keyword verilogLabel begin end fork join
+syn keyword verilogConditional if else case casex casez default endcase
+syn keyword verilogRepeat forever repeat while for
+
+syn keyword verilogTodo contained TODO FIXME
+
+syn match verilogOperator "[&|~><!)(*#%@+/=?:;}{,.\^\-\[\]]"
+
+syn region verilogComment start="/\*" end="\*/" contains=verilogTodo,@Spell
+syn match verilogComment "//.*" contains=verilogTodo,@Spell
+
+"syn match verilogGlobal "`[a-zA-Z0-9_]\+\>"
+syn match verilogGlobal "`celldefine"
+syn match verilogGlobal "`default_nettype"
+syn match verilogGlobal "`define"
+syn match verilogGlobal "`else"
+syn match verilogGlobal "`elsif"
+syn match verilogGlobal "`endcelldefine"
+syn match verilogGlobal "`endif"
+syn match verilogGlobal "`ifdef"
+syn match verilogGlobal "`ifndef"
+syn match verilogGlobal "`include"
+syn match verilogGlobal "`line"
+syn match verilogGlobal "`nounconnected_drive"
+syn match verilogGlobal "`resetall"
+syn match verilogGlobal "`timescale"
+syn match verilogGlobal "`unconnected_drive"
+syn match verilogGlobal "`undef"
+syn match verilogGlobal "$[a-zA-Z0-9_]\+\>"
+
+syn match verilogConstant "\<[A-Z][A-Z0-9_]\+\>"
+
+syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[bB]\s*[0-1_xXzZ?]\+\>"
+syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[oO]\s*[0-7_xXzZ?]\+\>"
+syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[dD]\s*[0-9_xXzZ?]\+\>"
+syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[hH]\s*[0-9a-fA-F_xXzZ?]\+\>"
+syn match verilogNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)\>"
+
+syn region verilogString start=+"+ skip=+\\"+ end=+"+ contains=verilogEscape,@Spell
+syn match verilogEscape +\\[nt"\\]+ contained
+syn match verilogEscape "\\\o\o\=\o\=" contained
+
+" Directives
+syn match verilogDirective "//\s*synopsys\>.*$"
+syn region verilogDirective start="/\*\s*synopsys\>" end="\*/"
+syn region verilogDirective start="//\s*synopsys dc_script_begin\>" end="//\s*synopsys dc_script_end\>"
+
+syn match verilogDirective "//\s*\$s\>.*$"
+syn region verilogDirective start="/\*\s*\$s\>" end="\*/"
+syn region verilogDirective start="//\s*\$s dc_script_begin\>" end="//\s*\$s dc_script_end\>"
+
+"Modify the following as needed. The trade-off is performance versus
+"functionality.
+syn sync minlines=50
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default highlighting.
+hi def link verilogCharacter Character
+hi def link verilogConditional Conditional
+hi def link verilogRepeat Repeat
+hi def link verilogString String
+hi def link verilogTodo Todo
+hi def link verilogComment Comment
+hi def link verilogConstant Constant
+hi def link verilogLabel Label
+hi def link verilogNumber Number
+hi def link verilogOperator Special
+hi def link verilogStatement Statement
+hi def link verilogGlobal Define
+hi def link verilogDirective SpecialComment
+hi def link verilogEscape Special
+
+
+let b:current_syntax = "verilog"
+
+" vim: ts=8
diff --git a/runtime/syntax/verilogams.vim b/runtime/syntax/verilogams.vim
new file mode 100644
index 0000000..7551b68
--- /dev/null
+++ b/runtime/syntax/verilogams.vim
@@ -0,0 +1,132 @@
+" Vim syntax file
+" Language: Verilog-AMS
+" Maintainer: S. Myles Prather <smprather@gmail.com>
+"
+" Version 1.1 S. Myles Prather <smprather@gmail.com>
+" Moved some keywords to the type category.
+" Added the metrix suffixes to the number matcher.
+" Version 1.2 Prasanna Tamhankar <pratam@gmail.com>
+" Minor reserved keyword updates.
+" Last Update: Thursday September 15 15:36:03 CST 2005
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Set the local value of the 'iskeyword' option
+setlocal iskeyword=@,48-57,_,192-255
+
+" Annex B.1 'All keywords'
+syn keyword verilogamsStatement above abs absdelay acos acosh ac_stim
+syn keyword verilogamsStatement always analog analysis and asin
+syn keyword verilogamsStatement asinh assign atan atan2 atanh
+syn keyword verilogamsStatement buf bufif0 bufif1 ceil cmos connectmodule
+syn keyword verilogamsStatement connectrules cos cosh cross ddt ddx deassign
+syn keyword verilogamsStatement defparam disable discipline
+syn keyword verilogamsStatement driver_update edge enddiscipline
+syn keyword verilogamsStatement endconnectrules endmodule endfunction endgenerate
+syn keyword verilogamsStatement endnature endparamset endprimitive endspecify
+syn keyword verilogamsStatement endtable endtask event exp final_step
+syn keyword verilogamsStatement flicker_noise floor flow force fork
+syn keyword verilogamsStatement function generate highz0
+syn keyword verilogamsStatement highz1 hypot idt idtmod if ifnone inf initial
+syn keyword verilogamsStatement initial_step inout input join
+syn keyword verilogamsStatement laplace_nd laplace_np laplace_zd laplace_zp
+syn keyword verilogamsStatement large last_crossing limexp ln localparam log
+syn keyword verilogamsStatement macromodule max medium min module nand nature
+syn keyword verilogamsStatement negedge net_resolution nmos noise_table nor not
+syn keyword verilogamsStatement notif0 notif1 or output paramset pmos
+syn keyword verilogamsType parameter real integer electrical input output
+syn keyword verilogamsType inout reg tri tri0 tri1 triand trior trireg
+syn keyword verilogamsType string from exclude aliasparam ground genvar
+syn keyword verilogamsType branch time realtime
+syn keyword verilogamsStatement posedge potential pow primitive pull0 pull1
+syn keyword verilogamsStatement pullup pulldown rcmos release
+syn keyword verilogamsStatement rnmos rpmos rtran rtranif0 rtranif1
+syn keyword verilogamsStatement scalared sin sinh slew small specify specparam
+syn keyword verilogamsStatement sqrt strong0 strong1 supply0 supply1
+syn keyword verilogamsStatement table tan tanh task timer tran tranif0
+syn keyword verilogamsStatement tranif1 transition
+syn keyword verilogamsStatement vectored wait wand weak0 weak1
+syn keyword verilogamsStatement white_noise wire wor wreal xnor xor zi_nd
+syn keyword verilogamsStatement zi_np zi_zd zi_zp
+syn keyword verilogamsRepeat forever repeat while for
+syn keyword verilogamsLabel begin end
+syn keyword verilogamsConditional if else case casex casez default endcase
+syn match verilogamsConstant ":inf"lc=1
+syn match verilogamsConstant "-inf"lc=1
+" Annex B.2 Discipline/nature
+syn keyword verilogamsStatement abstol access continuous ddt_nature discrete
+syn keyword verilogamsStatement domain idt_nature units
+" Annex B.3 Connect Rules
+syn keyword verilogamsStatement connect merged resolveto split
+
+syn match verilogamsOperator "[&|~><!)(*#%@+/=?:;}{,.\^\-\[\]]"
+syn match verilogamsOperator "<+"
+syn match verilogamsStatement "[vV]("me=e-1
+syn match verilogamsStatement "[iI]("me=e-1
+
+syn keyword verilogamsTodo contained TODO
+syn region verilogamsComment start="/\*" end="\*/" contains=verilogamsTodo
+syn match verilogamsComment "//.*" contains=verilogamsTodo
+
+syn match verilogamsGlobal "`celldefine"
+syn match verilogamsGlobal "`default_nettype"
+syn match verilogamsGlobal "`define"
+syn match verilogamsGlobal "`else"
+syn match verilogamsGlobal "`elsif"
+syn match verilogamsGlobal "`endcelldefine"
+syn match verilogamsGlobal "`endif"
+syn match verilogamsGlobal "`ifdef"
+syn match verilogamsGlobal "`ifndef"
+syn match verilogamsGlobal "`include"
+syn match verilogamsGlobal "`line"
+syn match verilogamsGlobal "`nounconnected_drive"
+syn match verilogamsGlobal "`resetall"
+syn match verilogamsGlobal "`timescale"
+syn match verilogamsGlobal "`unconnected_drive"
+syn match verilogamsGlobal "`undef"
+syn match verilogamsSystask "$[a-zA-Z0-9_]\+\>"
+
+syn match verilogamsConstant "\<[A-Z][A-Z0-9_]\+\>"
+
+syn match verilogamsNumber "\(\<\d\+\|\)'[bB]\s*[0-1_xXzZ?]\+\>"
+syn match verilogamsNumber "\(\<\d\+\|\)'[oO]\s*[0-7_xXzZ?]\+\>"
+syn match verilogamsNumber "\(\<\d\+\|\)'[dD]\s*[0-9_xXzZ?]\+\>"
+syn match verilogamsNumber "\(\<\d\+\|\)'[hH]\s*[0-9a-fA-F_xXzZ?]\+\>"
+syn match verilogamsNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)[TGMKkmunpfa]\=\>"
+
+syn region verilogamsString start=+"+ skip=+\\"+ end=+"+ contains=verilogamsEscape
+syn match verilogamsEscape +\\[nt"\\]+ contained
+syn match verilogamsEscape "\\\o\o\=\o\=" contained
+
+"Modify the following as needed. The trade-off is performance versus
+"functionality.
+syn sync lines=50
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default highlighting.
+hi def link verilogamsCharacter Character
+hi def link verilogamsConditional Conditional
+hi def link verilogamsRepeat Repeat
+hi def link verilogamsString String
+hi def link verilogamsTodo Todo
+hi def link verilogamsComment Comment
+hi def link verilogamsConstant Constant
+hi def link verilogamsLabel Label
+hi def link verilogamsNumber Number
+hi def link verilogamsOperator Special
+hi def link verilogamsStatement Statement
+hi def link verilogamsGlobal Define
+hi def link verilogamsDirective SpecialComment
+hi def link verilogamsEscape Special
+hi def link verilogamsType Type
+hi def link verilogamsSystask Function
+
+
+let b:current_syntax = "verilogams"
+
+" vim: ts=8
diff --git a/runtime/syntax/vgrindefs.vim b/runtime/syntax/vgrindefs.vim
new file mode 100644
index 0000000..3de31b1
--- /dev/null
+++ b/runtime/syntax/vgrindefs.vim
@@ -0,0 +1,45 @@
+" Vim syntax file
+" Language: Vgrindefs
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last Change: 2005 Jun 20
+
+" The Vgrindefs file is used to specify a language for vgrind
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Comments
+syn match vgrindefsComment "^#.*"
+
+" The fields that vgrind recognizes
+syn match vgrindefsField ":ab="
+syn match vgrindefsField ":ae="
+syn match vgrindefsField ":pb="
+syn match vgrindefsField ":bb="
+syn match vgrindefsField ":be="
+syn match vgrindefsField ":cb="
+syn match vgrindefsField ":ce="
+syn match vgrindefsField ":sb="
+syn match vgrindefsField ":se="
+syn match vgrindefsField ":lb="
+syn match vgrindefsField ":le="
+syn match vgrindefsField ":nc="
+syn match vgrindefsField ":tl"
+syn match vgrindefsField ":oc"
+syn match vgrindefsField ":kw="
+
+" Also find the ':' at the end of the line, so all ':' are highlighted
+syn match vgrindefsField ":\\$"
+syn match vgrindefsField ":$"
+syn match vgrindefsField "\\$"
+
+" Define the default highlighting.
+" Only used when an item doesn't have highlighting yet
+hi def link vgrindefsField Statement
+hi def link vgrindefsComment Comment
+
+let b:current_syntax = "vgrindefs"
+
+" vim: ts=8
diff --git a/runtime/syntax/vhdl.vim b/runtime/syntax/vhdl.vim
new file mode 100644
index 0000000..06fc2e7
--- /dev/null
+++ b/runtime/syntax/vhdl.vim
@@ -0,0 +1,268 @@
+" Vim syntax file
+" Language: VHDL [VHSIC (Very High Speed Integrated Circuit) Hardware Description Language]
+" Maintainer: Daniel Kho <daniel.kho@logik.haus>
+" Previous Maintainer: Czo <Olivier.Sirol@lip6.fr>
+" Credits: Stephan Hegel <stephan.hegel@snc.siemens.com.cn>
+" Last Changed: 2020 Apr 04 by Daniel Kho
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" case is not significant
+syn case ignore
+
+" VHDL 1076-2019 keywords
+syn keyword vhdlStatement access after alias all
+syn keyword vhdlStatement architecture array attribute
+syn keyword vhdlStatement assert assume
+syn keyword vhdlStatement begin block body buffer bus
+syn keyword vhdlStatement case component configuration constant
+syn keyword vhdlStatement context cover
+syn keyword vhdlStatement default disconnect downto
+syn keyword vhdlStatement elsif end entity exit
+syn keyword vhdlStatement file for function
+syn keyword vhdlStatement fairness force
+syn keyword vhdlStatement generate generic group guarded
+syn keyword vhdlStatement impure in inertial inout is
+syn keyword vhdlStatement label library linkage literal loop
+syn keyword vhdlStatement map
+syn keyword vhdlStatement new next null
+syn keyword vhdlStatement of on open others out
+syn keyword vhdlStatement package port postponed procedure process pure
+syn keyword vhdlStatement parameter property protected private
+syn keyword vhdlStatement range record register reject report return
+syn keyword vhdlStatement release restrict
+syn keyword vhdlStatement select severity signal shared subtype
+syn keyword vhdlStatement sequence strong
+syn keyword vhdlStatement then to transport type
+syn keyword vhdlStatement unaffected units until use
+syn keyword vhdlStatement variable view
+syn keyword vhdlStatement vpkg vmode vprop vunit
+syn keyword vhdlStatement wait when while with
+
+" VHDL predefined severity levels
+syn keyword vhdlAttribute note warning error failure
+
+" Linting of conditionals.
+syn match vhdlStatement "\<\(if\|else\)\>"
+syn match vhdlError "\<else\s\+if\>"
+
+" Types and type qualifiers
+" Predefined standard VHDL types
+syn match vhdlType "\<bit\>\'\="
+syn match vhdlType "\<boolean\>\'\="
+syn match vhdlType "\<natural\>\'\="
+syn match vhdlType "\<positive\>\'\="
+syn match vhdlType "\<integer\>\'\="
+syn match vhdlType "\<real\>\'\="
+syn match vhdlType "\<time\>\'\="
+
+syn match vhdlType "\<bit_vector\>\'\="
+syn match vhdlType "\<boolean_vector\>\'\="
+syn match vhdlType "\<integer_vector\>\'\="
+syn match vhdlType "\<real_vector\>\'\="
+syn match vhdlType "\<time_vector\>\'\="
+
+syn match vhdlType "\<character\>\'\="
+syn match vhdlType "\<string\>\'\="
+syn keyword vhdlType line text side width
+
+" Predefined standard IEEE VHDL types
+syn match vhdlType "\<std_ulogic\>\'\="
+syn match vhdlType "\<std_logic\>\'\="
+syn match vhdlType "\<std_ulogic_vector\>\'\="
+syn match vhdlType "\<std_logic_vector\>\'\="
+syn match vhdlType "\<unresolved_signed\>\'\="
+syn match vhdlType "\<unresolved_unsigned\>\'\="
+syn match vhdlType "\<u_signed\>\'\="
+syn match vhdlType "\<u_unsigned\>\'\="
+syn match vhdlType "\<signed\>\'\="
+syn match vhdlType "\<unsigned\>\'\="
+
+
+" array attributes
+syn match vhdlAttribute "\'high"
+syn match vhdlAttribute "\'left"
+syn match vhdlAttribute "\'length"
+syn match vhdlAttribute "\'low"
+syn match vhdlAttribute "\'range"
+syn match vhdlAttribute "\'reverse_range"
+syn match vhdlAttribute "\'right"
+syn match vhdlAttribute "\'ascending"
+" block attributes
+syn match vhdlAttribute "\'simple_name"
+syn match vhdlAttribute "\'instance_name"
+syn match vhdlAttribute "\'path_name"
+syn match vhdlAttribute "\'foreign" " VHPI
+" signal attribute
+syn match vhdlAttribute "\'active"
+syn match vhdlAttribute "\'delayed"
+syn match vhdlAttribute "\'event"
+syn match vhdlAttribute "\'last_active"
+syn match vhdlAttribute "\'last_event"
+syn match vhdlAttribute "\'last_value"
+syn match vhdlAttribute "\'quiet"
+syn match vhdlAttribute "\'stable"
+syn match vhdlAttribute "\'transaction"
+syn match vhdlAttribute "\'driving"
+syn match vhdlAttribute "\'driving_value"
+" type attributes
+syn match vhdlAttribute "\'base"
+syn match vhdlAttribute "\'subtype"
+syn match vhdlAttribute "\'element"
+syn match vhdlAttribute "\'leftof"
+syn match vhdlAttribute "\'pos"
+syn match vhdlAttribute "\'pred"
+syn match vhdlAttribute "\'rightof"
+syn match vhdlAttribute "\'succ"
+syn match vhdlAttribute "\'val"
+syn match vhdlAttribute "\'image"
+syn match vhdlAttribute "\'value"
+" VHDL-2019 interface attribute
+syn match vhdlAttribute "\'converse"
+
+syn keyword vhdlBoolean true false
+
+" for this vector values case is significant
+syn case match
+" Values for standard VHDL types
+syn match vhdlVector "\'[0L1HXWZU\-\?]\'"
+syn case ignore
+
+syn match vhdlVector "B\"[01_]\+\""
+syn match vhdlVector "O\"[0-7_]\+\""
+syn match vhdlVector "X\"[0-9a-f_]\+\""
+syn match vhdlCharacter "'.'"
+syn region vhdlString start=+"+ end=+"+
+
+" floating numbers
+syn match vhdlNumber "-\=\<\d\+\.\d\+\(E[+\-]\=\d\+\)\>"
+syn match vhdlNumber "-\=\<\d\+\.\d\+\>"
+syn match vhdlNumber "0*2#[01_]\+\.[01_]\+#\(E[+\-]\=\d\+\)\="
+syn match vhdlNumber "0*16#[0-9a-f_]\+\.[0-9a-f_]\+#\(E[+\-]\=\d\+\)\="
+" integer numbers
+syn match vhdlNumber "-\=\<\d\+\(E[+\-]\=\d\+\)\>"
+syn match vhdlNumber "-\=\<\d\+\>"
+syn match vhdlNumber "0*2#[01_]\+#\(E[+\-]\=\d\+\)\="
+syn match vhdlNumber "0*16#[0-9a-f_]\+#\(E[+\-]\=\d\+\)\="
+
+" operators
+syn keyword vhdlOperator and nand or nor xor xnor
+syn keyword vhdlOperator rol ror sla sll sra srl
+syn keyword vhdlOperator mod rem abs not
+
+" Concatenation and math operators
+syn match vhdlOperator "&\|+\|-\|\*\|\/"
+
+" Equality and comparison operators
+syn match vhdlOperator "=\|\/=\|>\|<\|>="
+
+" Assignment operators
+syn match vhdlOperator "<=\|:="
+syn match vhdlOperator "=>"
+
+" VHDL-202x concurrent signal association (spaceship) operator
+syn match vhdlOperator "<=>"
+
+" VHDL-2008 conversion, matching equality/non-equality operators
+syn match vhdlOperator "??\|?=\|?\/=\|?<\|?<=\|?>\|?>="
+
+" VHDL-2008 external names
+syn match vhdlOperator "<<\|>>"
+
+" Linting for illegal operators
+" '='
+syn match vhdlError "\(=\)[<=&+\-\*\/\\]\+"
+syn match vhdlError "[=&+\-\*\\]\+\(=\)"
+" '>', '<'
+" Allow external names: '<< ... >>'
+syn match vhdlError "\(>\)[<&+\-\/\\]\+"
+syn match vhdlError "[&+\-\/\\]\+\(>\)"
+syn match vhdlError "\(<\)[&+\-\/\\]\+"
+syn match vhdlError "[>=&+\-\/\\]\+\(<\)"
+" Covers most operators
+" support negative sign after operators. E.g. q<=-b;
+" Supports VHDL-202x spaceship (concurrent simple signal association).
+syn match vhdlError "\(<=\)[<=&+\*\\?:]\+"
+syn match vhdlError "[>=&+\-\*\\:]\+\(=>\)"
+syn match vhdlError "\(&\|+\|\-\|\*\*\|\/=\|??\|?=\|?\/=\|?<=\|?>=\|>=\|:=\|=>\)[<>=&+\*\\?:]\+"
+syn match vhdlError "[<>=&+\-\*\\:]\+\(&\|+\|\*\*\|\/=\|??\|?=\|?\/=\|?<\|?<=\|?>\|?>=\|>=\|<=\|:=\)"
+syn match vhdlError "\(?<\|?>\)[<>&+\*\/\\?:]\+"
+syn match vhdlError "\(<<\|>>\)[<>&+\*\/\\?:]\+"
+
+"syn match vhdlError "[?]\+\(&\|+\|\-\|\*\*\|??\|?=\|?\/=\|?<\|?<=\|?>\|?>=\|:=\|=>\)"
+" '/'
+syn match vhdlError "\(\/\)[<>&+\-\*\/\\?:]\+"
+syn match vhdlError "[<>=&+\-\*\/\\:]\+\(\/\)"
+
+syn match vhdlSpecial "<>"
+syn match vhdlSpecial "[().,;]"
+
+
+" time
+syn match vhdlTime "\<\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>"
+syn match vhdlTime "\<\d\+\.\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>"
+
+syn case match
+syn keyword vhdlTodo contained TODO NOTE
+syn keyword vhdlFixme contained FIXME
+syn case ignore
+
+syn region vhdlComment start="/\*" end="\*/" contains=vhdlTodo,vhdlFixme,@Spell
+syn match vhdlComment "\(^\|\s\)--.*" contains=vhdlTodo,vhdlFixme,@Spell
+
+" Standard IEEE P1076.6 preprocessor directives (metacomments).
+syn match vhdlPreProc "/\*\s*rtl_synthesis\s\+\(on\|off\)\s*\*/"
+syn match vhdlPreProc "\(^\|\s\)--\s*rtl_synthesis\s\+\(on\|off\)\s*"
+syn match vhdlPreProc "/\*\s*rtl_syn\s\+\(on\|off\)\s*\*/"
+syn match vhdlPreProc "\(^\|\s\)--\s*rtl_syn\s\+\(on\|off\)\s*"
+
+" Industry-standard directives. These are not standard VHDL, but are commonly
+" used in the industry.
+syn match vhdlPreProc "/\*\s*synthesis\s\+translate_\(on\|off\)\s*\*/"
+"syn match vhdlPreProc "/\*\s*simulation\s\+translate_\(on\|off\)\s*\*/"
+syn match vhdlPreProc "/\*\s*pragma\s\+translate_\(on\|off\)\s*\*/"
+syn match vhdlPreProc "/\*\s*pragma\s\+synthesis_\(on\|off\)\s*\*/"
+syn match vhdlPreProc "/\*\s*synopsys\s\+translate_\(on\|off\)\s*\*/"
+
+syn match vhdlPreProc "\(^\|\s\)--\s*synthesis\s\+translate_\(on\|off\)\s*"
+"syn match vhdlPreProc "\(^\|\s\)--\s*simulation\s\+translate_\(on\|off\)\s*"
+syn match vhdlPreProc "\(^\|\s\)--\s*pragma\s\+translate_\(on\|off\)\s*"
+syn match vhdlPreProc "\(^\|\s\)--\s*pragma\s\+synthesis_\(on\|off\)\s*"
+syn match vhdlPreProc "\(^\|\s\)--\s*synopsys\s\+translate_\(on\|off\)\s*"
+
+"Modify the following as needed. The trade-off is performance versus functionality.
+syn sync minlines=600
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link vhdlSpecial Special
+hi def link vhdlStatement Statement
+hi def link vhdlCharacter Character
+hi def link vhdlString String
+hi def link vhdlVector Number
+hi def link vhdlBoolean Number
+hi def link vhdlTodo Todo
+hi def link vhdlFixme Fixme
+hi def link vhdlComment Comment
+hi def link vhdlNumber Number
+hi def link vhdlTime Number
+hi def link vhdlType Type
+hi def link vhdlOperator Operator
+hi def link vhdlError Error
+hi def link vhdlAttribute Special
+hi def link vhdlPreProc PreProc
+
+
+let b:current_syntax = "vhdl"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
new file mode 100644
index 0000000..064416c
--- /dev/null
+++ b/runtime/syntax/vim.vim
@@ -0,0 +1,1046 @@
+" Vim syntax file
+" Language: Vim 9.0 script
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Last Change: January 18, 2023
+" Version: 9.0-21
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
+" Automatically generated keyword lists: {{{1
+
+" Quit when a syntax file was already loaded {{{2
+if exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+" vimTodo: contains common special-notices for comments {{{2
+" Use the vimCommentGroup cluster to add your own.
+syn keyword vimTodo contained COMBAK FIXME TODO XXX
+syn cluster vimCommentGroup contains=vimTodo,@Spell
+
+" regular vim commands {{{2
+syn keyword vimCommand contained a ar[gs] argl[ocal] bad[d] bn[ext] breakd[el] bw[ipeout] cabo[ve] cat[ch] ccl[ose] cfdo chd[ir] class cnf[ile] comc[lear] cp[revious] cstag debugg[reedy] delep dell diffg[et] dig[raphs] do dsp[lit] echoe[rr] em[enu] endfo[r] eval f[ile] fina[lly] foldd[oopen] gr[ep] helpc[lose] his[tory] ij[ump] inor j[oin] keepj[umps] lab[ove] lat lc[d] le[ft] lfir[st] lh[elpgrep] lmak[e] loadk lp[revious] luado ma[rk] mk[exrc] mz[scheme] new nore on[ly] pc[lose] pp[op] promptf[ind] ptj[ump] pu[t] py3f[ile] pyx r[ead] redrawt[abline] ri[ght] rundo sIl sal[l] sbf[irst] sc scp se[t] sg sgn sie sip sme snoremenu spelli[nfo] spr[evious] sri star[tinsert] sts[elect] sus[pend] syncbind tabN[ext] tabl[ast] tabr[ewind] tcld[o] tj[ump] tlu tno[remap] tu[nmenu] undol[ist] v vie[w] vne[w] win[size] wq xmapc[lear] xr[estore]
+syn keyword vimCommand contained ab arga[dd] argu[ment] balt bo[tright] breakl[ist] cN[ext] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] cle[arjumps] cnor comp[iler] cpf[ile] cun def deletel delm[arks] diffo[ff] dir doau e[dit] echom[sg] en[dif] endinterface ex files fini[sh] folddoc[losed] grepa[dd] helpf[ind] hor[izontal] il[ist] interface ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] public py[thon] pyxdo rec[over] reg[isters] rightb[elow] rv[iminfo] sIn san[dbox] sbl[ast] scI scr[iptnames] setf[iletype] sgI sgp sig sir smenu so[urce] spellr[are] sr srl startg[replace] substitutepattern sv[iew] syntime tabc[lose] tabm[ove] tabs tclf[ile] tl[ast] tlunmenu to[pleft] tunma[p] unh[ide] var vim9[cmd] vs[plit] winc[md] wqa[ll] xme xunme
+syn keyword vimCommand contained abc[lear] argd[elete] as[cii] bd[elete] bp[revious] bro[wse] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] defc[ompile] deletep delp diffp[atch] disa[ssemble] doaut ea echon endclass endt[ry] exi[t] filet fir[st] foldo[pen] gui helpg[rep] i imapc[lear] intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] leg[acy] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] pw[d] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smile sor[t] spellr[epall] srI srn startr[eplace] substituterepeat sw[apname] t tabd[o] tabn[ext] tags te[aroff] tlm tm[enu] tp[revious] type unl ve[rsion] vim9s[cript] wN[ext] windo wundo xmenu xunmenu
+syn keyword vimCommand contained abo[veleft] argded[upe] au bel[owright] br[ewind] bufdo c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] defer deletl dep diffpu[t] dj[ump] dp earlier echow[indow] enddef endw[hile] exp filetype fix[del] for gvim helpt[ags] ia imp is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3 pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] sn[ext] sp[lit] spellr[rare] src srp static sun[hide] sy tN[ext] tabe[dit] tabnew tc[d] ter[minal] tlmenu tma[p] tr[ewind] u[ndo] unlo[ckvar] verb[ose] vim[grep] w[rite] winp[os] wv[iminfo] xnoreme xwininfo
+syn keyword vimCommand contained abstract argdo bN[ext] bf[irst] brea[k] buffers ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cn[ext] colo[rscheme] cons[t] cs d[elete] delc[ommand] deletp di[splay] diffs[plit] dl dr[op] ec el[se] endenum ene[w] export filt[er] fo[ld] fu[nction] h[elp] hi iabc[lear] import isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py3do python3 qa[ll] redr[aw] retu[rn] rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] sre[wind] st[op] stj[ump] sunme syn ta[g] tabf[ind] tabo[nly] tch[dir] tf[irst] tln tmapc[lear] try una[bbreviate] uns[ilent] vert[ical] vimgrepa[dd] wa[ll] wn[ext] x[it] xnoremenu y[ank]
+syn keyword vimCommand contained addd arge[dit] b[uffer] bl[ast] breaka[dd] bun[load] cabc[lear] cal[l] cc cf[ile] changes cla[st] cnew[er] com cope[n] cscope debug delel delf[unction] dif[fupdate] difft[his] dli[st] ds[earch] echoc[onsole] elsei[f] endf[unction] enum exu[sage] fin[d] foldc[lose] go[to] ha[rdcopy] hid[e] if in iuna[bbrev] keepalt la[st] lan[guage] lbo[ttom] ld[o] lfdo lgrepa[dd] lma lo[adview] lop[en] lua m[ove] mes[sages] mod[e] nbs[tart] nor omapc[lear] packl[oadall] popu[p] profd[el] ptf[irst] pts[elect] py3f[ile] pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong] srg sta[g] stopi[nsert] sunmenu sync tab tabfir[st] tabp[revious] tcl th[row] tlnoremenu tn[ext] ts[elect] undoj[oin] up[date] vi[sual] viu[sage] wh[ile] wp[revious] xa[ll] xprop z[^.=]
+syn keyword vimCommand contained al[l] argg[lobal] ba[ll] bm[odified]
+syn match vimCommand contained "\<z[-+^.=]\=\>"
+syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man N[ext] Over P[rint] Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Until Winbar XMLent XMLns
+
+" vimOptions are caught only when contained in a vimSet {{{2
+syn keyword vimOption contained acd ambw arshape aw backupskip beval bk bri bufhidden cdh ci cinsd cms commentstring conceallevel cpt cscopetagorder csto cursorlineopt dg dir ed enc equalprg expandtab fdls fex fileignorecase fml foldlevel formatexpr gcr gli guifont guitabtooltip hidden hlg imactivatefunc imi inc inex isident keymap langmap linebreak lm lsp makeencoding maxmem mh mmp more mousemoveevent mzq numberwidth opfunc patchexpr pfn pp printfont pumwidth pythonthreehome re restorescreen ro rulerformat scl scs sft shellslash shortmess showtabline slm smoothscroll spell spl srr statusline sw sxq tag tal tenc termwintype tgst titleold tpm ttm tw udir ur verbose viminfofile warn wfh wildchar wim winminheight wmh write
+syn keyword vimOption contained ai anti asd awa balloondelay bevalterm bkc briopt buflisted cdhome cin cinw co compatible confirm crb cscopeverbose csverb cwh dict directory edcompatible encoding errorbells exrc fdm ff filetype fmr foldlevelstart formatlistpat gd go guifontset helpfile highlight hls imactivatekey iminsert include inf isk keymodel langmenu lines lmap luadll makeprg maxmempattern mis mmt mouse mouses mzquantum nuw osfiletype patchmode ph preserveindent printheader pvh pyx readonly revins rop runtimepath scr sect sh shelltemp shortname shq sloc sms spellcapcheck splitbelow ss stl swapfile syn tagbsearch tb term terse thesaurus titlestring tr tty twk ul ut verbosefile virtualedit wb wfw wildcharm winaltkeys winminwidth wmnu writeany
+syn keyword vimOption contained akm antialias autochdir background ballooneval bex bl brk buftype cdpath cindent cinwords cocu complete copyindent cryptmethod csl cuc debug dictionary display ef endoffile errorfile fcl fdn ffs fillchars fo foldmarker formatoptions gdefault gp guifontwide helpheight history hlsearch imaf ims includeexpr infercase iskeyword keyprotocol langnoremap linespace lnr lw mat maxmemtot mkspellmem mod mousef mouseshape mzschemedll odev pa path pheader previewheight printmbcharset pvp pyxversion redrawtime ri rs sb scroll sections shcf shelltype showbreak si sm sn spellfile splitkeep ssl stmp swapsync synmaxcol tagcase tbi termbidi textauto thesaurusfunc tl ts ttybuiltin tws undodir varsofttabstop vfile visualbell wc wh wildignore wincolor winptydll wmw writebackup
+syn keyword vimOption contained al ar autoindent backspace balloonevalterm bexpr bo browsedir casemap cedit cink clipboard cole completefunc cot cscopepathcomp cspc cul deco diff dy efm endofline errorformat fcs fdo fic fixendofline foldclose foldmethod formatprg gfm grepformat guiheadroom helplang hk ic imak imsearch incsearch insertmode isp keywordprg langremap lisp loadplugins lz matchpairs mco ml modeline mousefocus mouset mzschemegcdll oft packpath pdev pi previewpopup printmbfont pvw qe regexpengine rightleft rtp sbo scrollbind secure shell shellxescape showcmd sidescroll smartcase so spelllang splitright ssop sts swb syntax tagfunc tbidi termencoding textmode tildeop tm tsl ttyfast twsl undofile vartabstop vi vop wcm whichwrap wildignorecase window winwidth wop writedelay
+syn keyword vimOption contained aleph arab autoread backup balloonexpr bg bomb bs cb cf cinkeys cm colorcolumn completeopt cp cscopeprg csprg culopt def diffexpr ea ei eof esckeys fdc fdt fileencoding fixeol foldcolumn foldminlines fp gfn grepprg guiligatures hf hkmap icon imc imsf inde is isprint km laststatus lispoptions lop ma matchtime mef mle modelineexpr mousehide mousetime nf ofu para penc pm previewwindow printoptions pw qftf relativenumber rightleftcmd ru sbr scrollfocus sel shellcmdflag shellxquote showcmdloc sidescrolloff smartindent softtabstop spelloptions spo st su swf ta taglength tbis termguicolors textwidth timeout to tsr ttym twt undolevels vb viewdir vsts wcr wi wildmenu winfixheight wiv wrap ws
+syn keyword vimOption contained allowrevins arabic autoshelldir backupcopy bdir bh breakat bsdir cc cfu cino cmdheight columns completepopup cpo cscopequickfix csqf cursorbind define diffopt ead ek eol et fde fen fileencodings fk foldenable foldnestmax fs gfs gtl guioptions hh hkmapp iconstring imcmdline imst indentexpr isf joinspaces kmp lazyredraw lispwords lpl macatsui maxcombine menc mls modelines mousem mp nrformats omnifunc paragraphs perldll pmbcs printdevice prompt pythondll quickfixtextfunc remap rl rubydll sc scrolljump selection shellpipe shiftround showfulltag signcolumn smarttab sol spellsuggest spr sta sua switchbuf tabline tagrelative tbs termwinkey tf timeoutlen toolbar tsrfu ttymouse tx undoreload vbs viewoptions vts wd wic wildmode winfixwidth wiw wrapmargin ww
+syn keyword vimOption contained altkeymap arabicshape autowrite backupdir bdlay bin breakindent bsk ccv ch cinoptions cmdwinheight com completeslash cpoptions cscoperelative csre cursorcolumn delcombine digraph eadirection emo ep eventignore fdi fenc fileformat fkmap foldexpr foldopen fsync gfw gtt guipty hi hkp ignorecase imd imstatusfunc indentkeys isfname js kp lbr list lrm magic maxfuncdepth menuitems mm modifiable mousemev mps nu opendevice paste pex pmbfn printencoding pt pythonhome quoteescape renderoptions rlc ruf scb scrolloff selectmode shellquote shiftwidth showmatch siso smc sp spf sps stal suffixes sws tabpagemax tags tc termwinscroll tfu title toolbariconsize ttimeout ttyscroll uc updatecount vdir vif wa weirdinvert wig wildoptions winheight wm wrapscan xtermcodes
+syn keyword vimOption contained ambiwidth ari autowriteall backupext belloff binary breakindentopt bt cd charconvert cinscopedecls cmp comments concealcursor cpp cscopetag cst cursorline dex dip eb emoji equalalways ex fdl fencs fileformats flp foldignore foldtext ft ghr guicursor guitablabel hid hl im imdisable imstyle indk isi key kpc lcs listchars ls makeef maxmapdepth mfd mmd modified mousemodel msm number operatorfunc pastetoggle pexpr popt printexpr pumheight pythonthreedll rdt report rnu ruler scf scrollopt sessionoptions shellredir shm showmode sj smd spc spk sr startofline suffixesadd sxe tabstop tagstack tcldll termwinsize tgc titlelen top ttimeoutlen ttytype udf updatetime ve viminfo wak
+
+" vimOptions: These are the turn-off setting variants {{{2
+syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoindent noautowrite noawa noballoonevalterm nobin nobl nobri noci nocompatible nocp nocscopetag nocst nocul nocursorline nodg noea noedcompatible noemoji noeof noerrorbells noex nofen nofixendofline nofkmap nofsync noguipty nohk nohkp noic noim noimd noinf nois nolangnoremap nolbr nolist nolpl noma nomh nomod nomodifiable nomousef nonu noopendevice nopreserveindent noprompt noreadonly noremap norevins norightleft nornu nors noruler nosc noscf noscrollfocus nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab nosmoothscroll nosn nospell nosplitright nosr nosta nostmp noswf notagbsearch notagstack notbidi notermbidi notextauto notf notildeop notitle notop nottimeout nottyfast noudf novb nowa nowb nowfh nowic nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows
+syn keyword vimOption contained noai noaltkeymap noar noarabicshape noasd noautoread noautowriteall nobackup nobeval nobinary nobomb nobuflisted nocin noconfirm nocrb nocscopeverbose nocsverb nocursorbind nodeco nodiff noeb noek noendoffile noeol noesckeys noexpandtab nofic nofixeol nofoldenable nogd nohid nohkmap nohls noicon noimc noimdisable noinfercase nojoinspaces nolangremap nolinebreak nolnr nolrm nomacatsui noml nomodeline nomodified nomousefocus nonumber nopaste nopreviewwindow nopvw norelativenumber norestorescreen nori norl noro noru nosb noscb noscrollbind noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosms nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx noundofile novisualbell nowarn noweirdinvert nowfw nowildignorecase nowinfixheight nowiv nowrap nowrite nowritebackup noxtermcodes
+syn keyword vimOption contained noakm noanti noarab noari noautochdir noautoshelldir noaw noballooneval nobevalterm nobk nobreakindent nocf nocindent nocopyindent nocscoperelative nocsre nocuc nocursorcolumn nodelcombine nodigraph noed noemo noendofline noequalalways noet noexrc nofileignorecase nofk nofs nogdefault nohidden nohkmapp nohlsearch noignorecase noimcmdline noincsearch noinsertmode nojs nolazyredraw nolisp noloadplugins nolz nomagic nomle nomodelineexpr nomore nomousehide noodev nopi
+
+" vimOptions: These are the invertible variants {{{2
+syn keyword vimOption contained invacd invallowrevins invantialias invarabic invarshape invautoindent invautowrite invawa invballoonevalterm invbin invbl invbri invci invcompatible invcp invcscopetag invcst invcul invcursorline invdg invea invedcompatible invemoji inveof inverrorbells invex invfen invfixendofline invfkmap invfsync invguipty invhk invhkp invic invim invimd invinf invis invlangnoremap invlbr invlist invlpl invma invmh invmod invmodifiable invmousef invnu invopendevice invpreserveindent invprompt invreadonly invremap invrevins invrightleft invrnu invrs invruler invsc invscf invscrollfocus invsecure invshellslash invshiftround invshowcmd invshowmatch invsi invsmartcase invsmarttab invsmoothscroll invsn invspell invsplitright invsr invsta invstmp invswf invtagbsearch invtagstack invtbidi invtermbidi invtextauto invtf invtildeop invtitle invtop invttimeout invttyfast invudf invvb invwa invwb invwfh invwic invwildmenu invwinfixwidth invwmnu invwrapscan invwriteany invws
+syn keyword vimOption contained invai invaltkeymap invar invarabicshape invasd invautoread invautowriteall invbackup invbeval invbinary invbomb invbuflisted invcin invconfirm invcrb invcscopeverbose invcsverb invcursorbind invdeco invdiff inveb invek invendoffile inveol invesckeys invexpandtab invfic invfixeol invfoldenable invgd invhid invhkmap invhls invicon invimc invimdisable invinfercase invjoinspaces invlangremap invlinebreak invlnr invlrm invmacatsui invml invmodeline invmodified invmousefocus invnumber invpaste invpreviewwindow invpvw invrelativenumber invrestorescreen invri invrl invro invru invsb invscb invscrollbind invscs invsft invshelltemp invshortname invshowfulltag invshowmode invsm invsmartindent invsmd invsms invsol invsplitbelow invspr invssl invstartofline invswapfile invta invtagrelative invtbi invtbs invterse invtextmode invtgst invtimeout invto invtr invttybuiltin invtx invundofile invvisualbell invwarn invweirdinvert invwfw invwildignorecase invwinfixheight invwiv invwrap invwrite invwritebackup invxtermcodes
+syn keyword vimOption contained invakm invanti invarab invari invautochdir invautoshelldir invaw invballooneval invbevalterm invbk invbreakindent invcf invcindent invcopyindent invcscoperelative invcsre invcuc invcursorcolumn invdelcombine invdigraph inved invemo invendofline invequalalways invet invexrc invfileignorecase invfk invfs invgdefault invhidden invhkmapp invhlsearch invignorecase invimcmdline invincsearch invinsertmode invjs invlazyredraw invlisp invloadplugins invlz invmagic invmle invmodelineexpr invmore invmousehide invodev invpi
+
+" termcap codes (which can also be set) {{{2
+syn keyword vimOption contained t_8b t_8u t_AF t_AL t_bc t_BE t_ce t_cl t_Co t_Cs t_CV t_db t_DL t_Ds t_EI t_F2 t_F4 t_F6 t_F8 t_fd t_fs t_IE t_k1 t_k2 t_K3 t_K4 t_K5 t_K6 t_K7 t_K8 t_K9 t_kb t_KB t_kd t_KD t_KE t_KG t_KH t_KI t_KK t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_PE t_PS t_RB t_RC t_RF t_Ri t_RI t_RK t_RS t_RT t_RV t_Sb t_SC t_se t_Sf t_SH t_Si t_SI t_so t_sr t_SR t_ST t_te t_Te t_TE t_ti t_TI t_ts t_Ts t_u7 t_ue t_us t_Us t_ut t_vb t_ve t_vi t_vs t_VS t_WP t_WS t_XM t_xn t_xs t_ZH t_ZR
+syn keyword vimOption contained t_8f t_AB t_al t_AU t_BD t_cd t_Ce t_cm t_cs t_CS t_da t_dl t_ds t_EC t_F1 t_F3 t_F5 t_F7 t_F9 t_fe t_GP t_IS t_K1 t_k3 t_k4 t_k5 t_k6 t_k7 t_k8 t_k9 t_KA t_kB t_KC t_kD t_ke t_KF t_kh t_kI t_KJ t_kl
+syn match vimOption contained "t_%1"
+syn match vimOption contained "t_#2"
+syn match vimOption contained "t_#4"
+syn match vimOption contained "t_@7"
+syn match vimOption contained "t_*7"
+syn match vimOption contained "t_&8"
+syn match vimOption contained "t_%i"
+syn match vimOption contained "t_k;"
+
+" unsupported settings: some were supported by vi but don't do anything in vim {{{2
+" others have been dropped along with msdos support
+syn keyword vimErrSetting contained bioskey biosk conskey consk autoprint beautify flash graphic hardtabs mesg novice open op optimize redraw slow slowopen sourceany w300 w1200 w9600 hardtabs ht nobioskey nobiosk noconskey noconsk noautoprint nobeautify noflash nographic nohardtabs nomesg nonovice noopen noop nooptimize noredraw noslow noslowopen nosourceany now300 now1200 now9600 w1200 w300 w9600
+
+" AutoCmd Events {{{2
+syn case ignore
+syn keyword vimAutoEvent contained BufAdd BufDelete BufFilePost BufHidden BufNew BufRead BufReadPost BufUnload BufWinLeave BufWrite BufWritePost CmdlineChanged CmdlineLeave CmdwinEnter ColorScheme CompleteChanged CompleteDonePre CursorHoldI CursorMovedI DiffUpdated DirChanged DirChangedPre EncodingChanged ExitPre FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileExplorer FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave InsertLeavePre MenuPopup ModeChanged OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SafeState SafeStateAgain SessionLoadPost ShellCmdPost ShellFilterPost SigUSR1 SourceCmd SourcePost SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabEnter TabLeave TabNew TermChanged TerminalOpen TerminalWinOpen TermResponse TextChanged TextChangedI TextChangedP TextChangedT TextYankPost User VimEnter VimLeave VimLeavePre VimResized VimResume VimSuspend WinClosed WinEnter WinLeave WinNew WinResized WinScrolled
+syn keyword vimAutoEvent contained BufCreate BufEnter BufFilePre BufLeave BufNewFile BufReadCmd BufReadPre BufWinEnter BufWipeout BufWriteCmd BufWritePre CmdlineEnter CmdUndefined CmdwinLeave ColorSchemePre CompleteDone CursorHold CursorMoved
+
+" Highlight commonly used Groupnames {{{2
+syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo
+
+" Default highlighting groups {{{2
+syn keyword vimHLGroup contained ColorColumn CurSearch Cursor CursorColumn CursorIM CursorLine CursorLineFold CursorLineNr CursorLineSign DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr LineNrAbove LineNrBelow MatchParen Menu MessageWindow ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC StatusLineTerm StatusLineTermNC TabLine TabLineFill TabLineSel Terminal Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu
+syn match vimHLGroup contained "Conceal"
+syn case match
+
+" Function Names {{{2
+syn keyword vimFuncName contained abs argc assert_equal assert_match atan balloon_show bufexists bufwinid ceil ch_canread ch_getbufnr ch_read ch_status complete_check count deletebufline digraph_set eval exists_compiled extendnew findfile fnameescape foldtextresult get getchangelist getcmdcompltype getcompletion getfperm getline getpid getscriptinfo getwininfo glob2regpat histadd hlID indexof inputsecret isinf job_setoptions js_encode libcall list2str log10 mapnew matchdelete matchstrpos mzeval popup_atcursor popup_dialog popup_findpreview popup_locate popup_settext prompt_getprompt prop_add_list prop_type_add pum_getpos rand readfile reltimefloat remote_read repeat screenattr screenrow searchpair setbufline setcmdline setline setreg sha256 sign_getplaced sign_unplace slice sound_playfile sqrt str2nr strftime strpart submatch synconcealed system tagfiles term_dumpdiff term_getattr term_getsize term_list term_setkill test_alloc_fail test_getvalue test_null_channel test_null_partial test_setmouse timer_info tolower type values winbufnr win_getid win_id2win winnr win_splitmove
+syn keyword vimFuncName contained acos argidx assert_equalfile assert_nobeep atan2 balloon_split buflisted bufwinnr changenr ch_close ch_getjob ch_readblob cindent complete_info cscope_connection did_filetype digraph_setlist eventhandler exp feedkeys flatten fnamemodify foreground getbufinfo getchar getcmdline getcurpos getfsize getloclist getpos gettabinfo getwinpos globpath histdel hlset input insert islocked job_start json_decode libcallnr listener_add luaeval mapset matchend max nextnonblank popup_beval popup_filter_menu popup_getoptions popup_menu popup_show prompt_setcallback prop_clear prop_type_change pumvisible range reduce reltimestr remote_send resolve screenchar screenstring searchpairpos setbufvar setcmdpos setloclist settabvar shellescape sign_jump sign_unplacelist sort sound_stop srand strcharlen strgetchar strptime substitute synID systemlist taglist term_dumpload term_getcursor term_getstatus term_scrape term_setrestore test_autochdir test_gui_event test_null_dict test_null_string test_settime timer_pause toupper typename virtcol wincol win_gettype winlayout winrestcmd winwidth
+syn keyword vimFuncName contained add arglistid assert_exception assert_notequal autocmd_add blob2list bufload byte2line char2nr ch_close_in ch_info ch_readraw clearmatches confirm cursor diff_filler echoraw executable expand filereadable flattennew foldclosed fullcommand getbufline getcharmod getcmdpos getcursorcharpos getftime getmarklist getqflist gettabvar getwinposx has histget hostname inputdialog interrupt isnan job_status json_encode line listener_flush map match matchfuzzy menu_info nr2char popup_clear popup_filter_yesno popup_getpos popup_move pow prompt_setinterrupt prop_find prop_type_delete py3eval readblob reg_executing remote_expr remote_startserver reverse screenchars search searchpos setcellwidths setcursorcharpos setmatches settabwinvar shiftwidth sign_place simplify sound_clear spellbadword state strcharpart stridx strridx swapfilelist synIDattr tabpagebuflist tan term_dumpwrite term_getjob term_gettitle term_sendkeys term_setsize test_feedinput test_ignore_error test_null_function test_option_not_set test_srand_seed timer_start tr undofile virtcol2col windowsversion win_gotoid winline winrestview wordcount
+syn keyword vimFuncName contained and argv assert_fails assert_notmatch autocmd_delete browse bufloaded byteidx charclass chdir ch_log ch_sendexpr col copy debugbreak diff_hlID empty execute expandcmd filewritable float2nr foldclosedend funcref getbufoneline getcharpos getcmdscreenpos getcwd getftype getmatches getreg gettabwinvar getwinposy has_key histnr iconv inputlist invert items job_stop keys line2byte listener_remove maparg matchadd matchfuzzypos min or popup_close popup_findecho popup_hide popup_notification prevnonblank prompt_setprompt prop_list prop_type_get pyeval readdir reg_recording remote_foreground remove round screencol searchcount server2client setcharpos setenv setpos settagstack sign_define sign_placelist sin soundfold spellsuggest str2float strchars string strtrans swapinfo synIDtrans tabpagenr tanh term_getaltscreen term_getline term_gettty term_setansicolors term_start test_garbagecollect_now test_mswin_event test_null_job test_override test_unknown timer_stop trim undotree visualmode win_execute winheight win_move_separator winsaveview writefile
+syn keyword vimFuncName contained append asin assert_false assert_report autocmd_get browsedir bufname byteidxcomp charcol ch_evalexpr ch_logfile ch_sendraw complete cos deepcopy digraph_get environ exepath expr10 filter floor foldlevel function getbufvar getcharsearch getcmdtype getenv getimstatus getmousepos getreginfo gettagstack getwinvar haslocaldir hlexists indent inputrestore isabsolutepath job_getchannel join keytrans lispindent localtime mapcheck matchaddpos matchlist mkdir pathshorten popup_create popup_findinfo popup_list popup_setoptions printf prop_add prop_remove prop_type_list pyxeval readdirex reltime remote_peek rename rubyeval screenpos searchdecl serverlist setcharsearch setfperm setqflist setwinvar sign_getdefined sign_undefine sinh sound_playevent split str2list strdisplaywidth strlen strwidth swapname synstack tabpagewinnr tempname term_getansicolors term_getscrolled terminalprops term_setapi term_wait test_garbagecollect_soon test_null_blob test_null_list test_refcount test_void timer_stopall trunc uniq wildmenumode win_findbuf win_id2tabwin win_move_statusline win_screenpos xor
+syn keyword vimFuncName contained appendbufline assert_beeps assert_inrange assert_true balloon_gettext bufadd bufnr call charidx ch_evalraw ch_open ch_setoptions complete_add cosh delete digraph_getlist escape exists extend finddir fmod foldtext garbagecollect getcellwidths getcharstr getcmdwintype getfontname getjumplist getmouseshape getregtype gettext glob hasmapto hlget index inputsave isdirectory job_info js_decode len list2blob log maplist matcharg matchstr mode perleval
+
+"--- syntax here and above generated by mkvimvim ---
+" Special Vim Highlighting (not automatic) {{{1
+
+" Set up folding commands {{{2
+if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhlmpPrt]'
+ if g:vimsyn_folding =~# 'a'
+ com! -nargs=* VimFolda <args> fold
+ else
+ com! -nargs=* VimFolda <args>
+ endif
+ if g:vimsyn_folding =~# 'f'
+ com! -nargs=* VimFoldf <args> fold
+ else
+ com! -nargs=* VimFoldf <args>
+ endif
+ if g:vimsyn_folding =~# 'h'
+ com! -nargs=* VimFoldh <args> fold
+ else
+ com! -nargs=* VimFoldh <args>
+ endif
+ if g:vimsyn_folding =~# 'l'
+ com! -nargs=* VimFoldl <args> fold
+ else
+ com! -nargs=* VimFoldl <args>
+ endif
+ if g:vimsyn_folding =~# 'm'
+ com! -nargs=* VimFoldm <args> fold
+ else
+ com! -nargs=* VimFoldm <args>
+ endif
+ if g:vimsyn_folding =~# 'p'
+ com! -nargs=* VimFoldp <args> fold
+ else
+ com! -nargs=* VimFoldp <args>
+ endif
+ if g:vimsyn_folding =~# 'P'
+ com! -nargs=* VimFoldP <args> fold
+ else
+ com! -nargs=* VimFoldP <args>
+ endif
+ if g:vimsyn_folding =~# 'r'
+ com! -nargs=* VimFoldr <args> fold
+ else
+ com! -nargs=* VimFoldr <args>
+ endif
+ if g:vimsyn_folding =~# 't'
+ com! -nargs=* VimFoldt <args> fold
+ else
+ com! -nargs=* VimFoldt <args>
+ endif
+else
+ com! -nargs=* VimFolda <args>
+ com! -nargs=* VimFoldf <args>
+ com! -nargs=* VimFoldh <args>
+ com! -nargs=* VimFoldl <args>
+ com! -nargs=* VimFoldm <args>
+ com! -nargs=* VimFoldp <args>
+ com! -nargs=* VimFoldP <args>
+ com! -nargs=* VimFoldr <args>
+ com! -nargs=* VimFoldt <args>
+endif
+
+" commands not picked up by the generator (due to non-standard format) {{{2
+syn keyword vimCommand contained py3
+
+" Deprecated variable options {{{2
+if exists("g:vim_minlines")
+ let g:vimsyn_minlines= g:vim_minlines
+endif
+if exists("g:vim_maxlines")
+ let g:vimsyn_maxlines= g:vim_maxlines
+endif
+if exists("g:vimsyntax_noerror")
+ let g:vimsyn_noerror= g:vimsyntax_noerror
+endif
+
+" Variable options {{{2
+if exists("g:vim_maxlines")
+ let s:vimsyn_maxlines= g:vim_maxlines
+else
+ let s:vimsyn_maxlines= 60
+endif
+
+" Numbers {{{2
+" =======
+syn match vimNumber '\<\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment
+syn match vimNumber '-\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment
+syn match vimNumber '\<0[xX]\x\+' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment
+syn match vimNumber '\%(^\|\A\)\zs#\x\{6}' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment
+syn match vimNumber '\<0[zZ][a-zA-Z0-9.]\+' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment
+syn match vimNumber '0[0-7]\+' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment
+syn match vimNumber '0[bB][01]\+' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment
+
+" All vimCommands are contained by vimIsCommand. {{{2
+syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAddress,vimAutoCmd,vimEcho,vimIsCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd
+syn match vimIsCommand "\<\h\w*\>" contains=vimCommand
+syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>"
+syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
+syn match vimVar "\s\zs&\a\+\>"
+syn match vimFBVar contained "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
+syn keyword vimCommand contained in
+
+" Insertions And Appends: insert append {{{2
+" (buftype != nofile test avoids having append, change, insert show up in the command window)
+" =======================
+if &buftype != 'nofile'
+ syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$" matchgroup=vimCommand end="^\.$""
+ syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$" matchgroup=vimCommand end="^\.$""
+ syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$" matchgroup=vimCommand end="^\.$""
+endif
+
+" Behave! {{{2
+" =======
+syn match vimBehave "\<be\%[have]\>" skipwhite nextgroup=vimBehaveModel,vimBehaveError
+syn keyword vimBehaveModel contained mswin xterm
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nobehaveerror")
+ syn match vimBehaveError contained "[^ ]\+"
+endif
+
+" Filetypes {{{2
+" =========
+syn match vimFiletype "\<filet\%[ype]\(\s\+\I\i*\)*" skipwhite contains=vimFTCmd,vimFTOption,vimFTError
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimFTError")
+ syn match vimFTError contained "\I\i*"
+endif
+syn keyword vimFTCmd contained filet[ype]
+syn keyword vimFTOption contained detect indent off on plugin
+
+" Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
+" ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
+syn cluster vimAugroupList contains=vimAugroup,vimIsCommand,vimUserCmd,vimExecute,vimNotFunc,vimFuncName,vimFunction,vimFunctionError,vimLineComment,vimNotFunc,vimMap,vimSpecFile,vimOper,vimNumber,vimOperParen,vimComment,vim9Comment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vim9Comment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue,vimSetEqual,vimOption
+if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'a'
+ syn region vimAugroup fold matchgroup=vimAugroupKey start="\<aug\%[roup]\>\ze\s\+\K\k*" end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList
+else
+ syn region vimAugroup matchgroup=vimAugroupKey start="\<aug\%[roup]\>\ze\s\+\K\k*" end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList
+endif
+syn match vimAugroup "aug\%[roup]!" contains=vimAugroupKey
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror")
+ syn match vimAugroupError "\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
+endif
+syn keyword vimAugroupKey contained aug[roup]
+
+" Operators: {{{2
+" =========
+syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimType,vimRegister,vimContinue,vim9Comment,vimVar
+syn match vimOper "||\|&&\|[-+.!]" skipwhite nextgroup=vimString,vimSpecFile
+syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
+syn match vimOper "\(\<is\|\<isnot\)[?#]\{0,2}\>" skipwhite nextgroup=vimString,vimSpecFile
+syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=vimoperStar,@vimOperGroup
+syn region vimOperParen matchgroup=vimSep start="#\={" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
+ syn match vimOperError ")"
+endif
+
+" Functions : Tag is provided for those who wish to highlight tagged functions {{{2
+" =========
+syn cluster vimFuncList contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID
+syn cluster vimFuncBodyList contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vim9Comment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimEnvvar,vimExecute,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimGlobal,vimHighlight,vimIsCommand,vimLet,vimLetHereDoc,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUnmap,vimUserCommand
+syn match vimFunction "\<\(fu\%[nction]\)!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody
+syn match vimFunction "\<def!\=\s\+\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody
+"syn match vimFunction "\<def!\=\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody
+
+if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
+ syn region vimFuncBody contained fold start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\|enddef\>\)" contains=@vimFuncBodyList
+else
+ syn region vimFuncBody contained start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\|enddef\>\)" contains=@vimFuncBodyList
+endif
+syn match vimFuncVar contained "a:\(\K\k*\|\d\+\)"
+syn match vimFuncSID contained "\c<sid>\|\<s:"
+syn keyword vimFuncKey contained fu[nction]
+syn keyword vimFuncKey contained def
+syn match vimFuncBlank contained "\s\+"
+
+syn keyword vimPattern contained start skip end
+
+" vimTypes : new for vim9
+syn match vimType ":\s*\zs\<\(bool\|number\|float\|string\|blob\|list<\|dict<\|job\|channel\|func\)\>"
+
+" Special Filenames, Modifiers, Extension Removal: {{{2
+" ===============================================
+syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst
+syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst
+syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst
+syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst
+syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst
+syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst
+syn match vimSpecFileMod "\(:[phtre]\)\+" contained
+
+" User-Specified Commands: {{{2
+" =======================
+syn cluster vimUserCmdList contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vim9Comment,vimCtrlChar,vimEscapeBrace,vimFunc,vimFuncName,vimFunction,vimFunctionError,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine
+syn keyword vimUserCommand contained com[mand]
+syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList,vimComFilter
+syn match vimUserAttrbError contained "-\a\+\ze\s"
+syn match vimUserAttrb contained "-nargs=[01*?+]" contains=vimUserAttrbKey,vimOper
+syn match vimUserAttrb contained "-complete=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
+syn match vimUserAttrb contained "-range\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
+syn match vimUserAttrb contained "-count\(=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
+syn match vimUserAttrb contained "-bang\>" contains=vimOper,vimUserAttrbKey
+syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey
+syn match vimUserAttrb contained "-buffer\>" contains=vimOper,vimUserAttrbKey
+syn match vimUserAttrb contained "-register\>" contains=vimOper,vimUserAttrbKey
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
+ syn match vimUserCmdError contained "\S\+\>"
+endif
+syn case ignore
+syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister]
+syn keyword vimUserAttrbCmplt contained augroup buffer behave color command compiler cscope dir environment event expression file file_in_path filetype function help highlight history locale mapping menu option packadd shellcmd sign syntax syntime tag tag_listfiles user var
+syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
+syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%(#\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
+
+syn case match
+syn match vimUserAttrbCmplt contained "custom,\u\w*"
+
+" Lower Priority Comments: after some vim commands... {{{2
+" =======================
+syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
+syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
+syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
+syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"'
+" Vim9 comments - TODO: might be highlighted while they don't work
+syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString
+syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString
+syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString
+" Vim9 comment inside expression
+syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString
+syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString
+syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString
+
+" Environment Variables: {{{2
+" =====================
+syn match vimEnvvar "\$\I\i*"
+syn match vimEnvvar "\${\I\i*}"
+
+" In-String Specials: {{{2
+" Try to catch strings, if nothing else matches (therefore it must precede the others!)
+" vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside [])
+syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
+syn match vimPatSepErr contained "\\)"
+syn match vimPatSep contained "\\|"
+syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\\]['"]" contains=@vimStringGroup
+syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
+syn match vimNotPatSep contained "\\\\"
+syn cluster vimStringGroup contains=vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
+syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ contains=@vimStringGroup
+syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+
+syn region vimString oneline start=+=!+lc=1 skip=+\\\\\|\\!+ end=+!+ contains=@vimStringGroup
+syn region vimString oneline start="=+"lc=1 skip="\\\\\|\\+" end="+" contains=@vimStringGroup
+"syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup " see tst45.vim
+syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont
+syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+
+syn match vimEscape contained "\\."
+
+" Substitutions: {{{2
+" =============
+syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
+syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
+syn cluster vimSubstList add=vimCollection
+syn match vimSubst "\(:\+\s*\|^\s*\||\s*\)\<\%(\<s\%[ubstitute]\>\|\<sm\%[agic]\>\|\<sno\%[magic]\>\)[:#[:alpha:]]\@!" nextgroup=vimSubstPat
+"syn match vimSubst "\%(^\|[^\\]\)\<s\%[ubstitute]\>[:#[:alpha:]]\@!" nextgroup=vimSubstPat contained
+syn match vimSubst "\%(^\|[^\\\"']\)\<s\%[ubstitute]\>[:#[:alpha:]\"']\@!" nextgroup=vimSubstPat contained
+syn match vimSubst "/\zs\<s\%[ubstitute]\>\ze/" nextgroup=vimSubstPat
+syn match vimSubst "\(:\+\s*\|^\s*\)s\ze#.\{-}#.\{-}#" nextgroup=vimSubstPat
+syn match vimSubst1 contained "\<s\%[ubstitute]\>" nextgroup=vimSubstPat
+syn match vimSubst2 contained "s\%[ubstitute]\>" nextgroup=vimSubstPat
+syn region vimSubstPat contained matchgroup=vimSubstDelim start="\z([^a-zA-Z( \t[\]&]\)"rs=s+1 skip="\\\\\|\\\z1" end="\z1"re=e-1,me=e-1 contains=@vimSubstList nextgroup=vimSubstRep4 oneline
+syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline
+syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass
+syn match vimCollClassErr contained "\[:.\{-\}:\]"
+syn match vimCollClass contained transparent "\%#=1\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|retu\%[rn]\|tab\|escape\|backspace\):\]"
+syn match vimSubstSubstr contained "\\z\=\d"
+syn match vimSubstTwoBS contained "\\\\"
+syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
+syn match vimSubstFlags contained "[&cegiIlnpr#]\+"
+
+" 'String': {{{2
+syn match vimString "[^(,]'[^']\{-}\zs'"
+
+" Marks, Registers, Addresses, Filters: {{{2
+syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst
+syn match vimMark "'[<>]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst
+syn match vimMark ",\zs'[<>]\ze" nextgroup=vimFilter,vimMarkNumber,vimSubst
+syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst
+syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst
+syn match vimMarkNumber "[-+]\d\+" contained contains=vimOper nextgroup=vimSubst2
+syn match vimPlainMark contained "'[a-zA-Z0-9]"
+syn match vimRange "[`'][a-zA-Z0-9],[`'][a-zA-Z0-9]" contains=vimMark skipwhite nextgroup=vimFilter
+
+syn match vimRegister '[^,;[{: \t]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
+syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]'
+syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]'
+syn match vimRegister '@"'
+syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]'
+
+syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1
+syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
+
+syn match vimFilter "^!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
+syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
+syn match vimComFilter contained "|!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
+
+" Complex Repeats: (:h complex-repeat) {{{2
+" ===============
+syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
+syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
+
+" Set command and associated set-options (vimOptions) with comment {{{2
+syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\.\n\@!" end="$" end="|" matchgroup=vimNotation end="<[cC][rR]>" keepend contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vim9Comment,vimSetString,vimSetMod
+syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]"me=e-1 end="$" contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar
+syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
+syn match vimSetSep contained "[,:]"
+syn match vimSetMod contained "&vim\=\|[!&?<]\|all&"
+
+" Let: {{{2
+" ===
+syn keyword vimLet let unl[et] skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc
+VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s\+\%(trim\s\+\)\=\%(eval\s\+\)\=\s*\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\s*\z1\s*$'
+
+" Abbreviations: {{{2
+" =============
+syn keyword vimAbb ab[breviate] ca[bbrev] inorea[bbrev] cnorea[bbrev] norea[bbrev] ia[bbrev] skipwhite nextgroup=vimMapMod,vimMapLhs
+
+" Autocmd: {{{2
+" =======
+syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
+syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
+syn match vimAutoCmdSfxList contained "\S*" skipwhite nextgroup=vimAutoCmdMod
+syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
+syn match vimAutoCmdMod "\(++\)\=\(once\|nested\)"
+
+" Echo And Execute: -- prefer strings! {{{2
+" ================
+syn region vimEcho oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimFuncVar,vimString,vimVar
+syn region vimExecute oneline excludenl matchgroup=vimCommand start="\<exe\%[cute]\>" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimFuncVar,vimIsCommand,vimOper,vimNotation,vimOperParen,vimString,vimVar
+syn match vimEchoHL "echohl\=" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone
+syn case ignore
+syn keyword vimEchoHLNone none
+syn case match
+
+" Maps: {{{2
+" ====
+syn match vimMap "\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs
+syn keyword vimMap cm[ap] cno[remap] im[ap] ino[remap] lm[ap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] smap snor[emap] tno[remap] tm[ap] vm[ap] vmapc[lear] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
+syn keyword vimMap mapc[lear] smapc[lear]
+syn keyword vimUnmap cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] tunma[p] unm[ap] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
+syn match vimMapLhs contained "\S\+" contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
+syn match vimMapBang contained "!" skipwhite nextgroup=vimMapMod,vimMapLhs
+syn match vimMapMod contained "\%#=1\c<\(buffer\|expr\|\(local\)\=leader\|nowait\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
+syn match vimMapRhs contained ".*" contains=vimNotation,vimCtrlChar skipnl nextgroup=vimMapRhsExtend
+syn match vimMapRhsExtend contained "^\s*\\.*$" contains=vimContinue
+syn case ignore
+syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique
+syn case match
+
+" Menus: {{{2
+" =====
+syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod
+syn keyword vimCommand am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList
+syn match vimMenuName "[^ \t\\<]\+" contained nextgroup=vimMenuNameMore,vimMenuMap
+syn match vimMenuPriority "\d\+\(\.\d\+\)*" contained skipwhite nextgroup=vimMenuName
+syn match vimMenuNameMore "\c\\\s\|<tab>\|\\\." contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation
+syn match vimMenuMod contained "\c<\(script\|silent\)\+>" skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList
+syn match vimMenuMap "\s" contained skipwhite nextgroup=vimMenuRhs
+syn match vimMenuRhs ".*$" contained contains=vimString,vimComment,vim9Comment,vimIsCommand
+syn match vimMenuBang "!" contained skipwhite nextgroup=@vimMenuList
+
+" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
+" ======================
+syn case ignore
+syn match vimNotation "\%#=1\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cmd\|cr\|lf\|linefeed\|retu\%[rn]\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|mouse\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\(page\)\=\(\|down\|up\|k\d\>\)\)>" contains=vimBracket
+syn match vimNotation "\%#=1\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>" contains=vimBracket
+syn match vimNotation "\%#=1\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>" contains=vimBracket
+syn match vimNotation '\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
+syn match vimNotation '\%#=1\(\\\|<lt>\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket
+syn match vimNotation "\%#=1\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>" contains=vimBracket
+syn match vimBracket contained "[\\<>]"
+syn case match
+
+" User Function Highlighting: {{{2
+" (following Gautam Iyer's suggestion)
+" ==========================
+syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncEcho,vimFuncName,vimUserFunc,vimExecute
+syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation
+syn keyword vimFuncEcho contained ec ech echo
+
+" User Command Highlighting: {{{2
+syn match vimUsrCmd '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
+
+" Errors And Warnings: {{{2
+" ====================
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
+ syn match vimFunctionError "\s\zs[a-z0-9]\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
+ syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\d\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
+ syn match vimElseIfErr "\<else\s\+if\>"
+ syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
+endif
+
+syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
+
+" Norm: {{{2
+" ====
+syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
+syn match vimNormCmds contained ".*$"
+
+" Syntax: {{{2
+"=======
+syn match vimGroupList contained "@\=[^ \t,]*" contains=vimGroupSpecial,vimPatSep
+syn match vimGroupList contained "@\=[^ \t,]*," nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
+syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
+ syn match vimSynError contained "\i\+"
+ syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
+endif
+syn match vimSynContains contained "\<contain\(s\|edin\)=" nextgroup=vimGroupList
+syn match vimSynKeyContainedin contained "\<containedin=" nextgroup=vimGroupList
+syn match vimSynNextgroup contained "nextgroup=" nextgroup=vimGroupList
+
+syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment,vim9Comment
+syn match vimAuSyntax contained "\s+sy\%[ntax]" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment,vim9Comment
+syn cluster vimFuncBodyList add=vimSyntax
+
+" Syntax: case {{{2
+syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
+ syn match vimSynCaseError contained "\i\+"
+endif
+syn keyword vimSynCase contained ignore match
+
+" Syntax: clear {{{2
+syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
+
+" Syntax: cluster {{{2
+syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
+syn region vimClusterName contained matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
+syn match vimGroupAdd contained "add=" nextgroup=vimGroupList
+syn match vimGroupRem contained "remove=" nextgroup=vimGroupList
+syn cluster vimFuncBodyList add=vimSynType,vimGroupAdd,vimGroupRem
+
+" Syntax: iskeyword {{{2
+syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimIskList
+syn match vimIskList contained '\S\+' contains=vimIskSep
+syn match vimIskSep contained ','
+
+" Syntax: include {{{2
+syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
+syn cluster vimFuncBodyList add=vimSynType
+
+" Syntax: keyword {{{2
+syn cluster vimSynKeyGroup contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
+syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
+syn region vimSynKeyRegion contained oneline keepend matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
+syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
+syn cluster vimFuncBodyList add=vimSynType
+
+" Syntax: match {{{2
+syn cluster vimSynMtchGroup contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vim9Comment
+syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
+syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
+syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
+if has("conceal")
+ syn match vimSynMtchOpt contained "\<cchar=" nextgroup=vimSynMtchCchar
+ syn match vimSynMtchCchar contained "\S"
+endif
+syn cluster vimFuncBodyList add=vimSynMtchGroup
+
+" Syntax: off and on {{{2
+syn keyword vimSynType contained enable list manual off on reset
+
+" Syntax: region {{{2
+syn cluster vimSynRegPatGroup contains=vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
+syn cluster vimSynRegGroup contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
+syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
+syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup
+syn match vimSynRegOpt contained "\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
+syn match vimSynReg contained "\(start\|skip\|end\)="he=e-1 nextgroup=vimSynRegPat
+syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
+syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
+syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
+syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
+syn match vimSynPatMod contained "lc=\d\+"
+syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
+syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
+syn match vimSynNotPatRange contained "\\\\\|\\\["
+syn match vimMtchComment contained '"[^"]\+$'
+syn cluster vimFuncBodyList add=vimSynType
+
+" Syntax: sync {{{2
+" ============
+syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
+ syn match vimSyncError contained "\i\+"
+endif
+syn keyword vimSyncC contained ccomment clear fromstart
+syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
+syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
+syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
+syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
+syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
+syn match vimSyncGroupName contained "\h\w*" skipwhite nextgroup=vimSyncKey
+syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
+syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone
+syn keyword vimSyncNone contained NONE
+
+" Additional IsCommand: here by reasons of precedence {{{2
+" ====================
+syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
+
+" Highlighting: {{{2
+" ============
+syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment,vim9Comment
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
+ syn match vimHiCtermError contained "\D\i*"
+endif
+syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
+syn match vimHiBang contained "!" skipwhite nextgroup=@vimHighlightCluster
+
+syn match vimHiGroup contained "\i\+"
+syn case ignore
+syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl
+syn keyword vimFgBgAttrib contained none bg background fg foreground
+syn case match
+syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
+syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
+syn case ignore
+syn keyword vimHiCtermColor contained black blue brown cyan darkblue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey grey40 grey50 grey90 lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred lightyellow magenta red seagreen white yellow
+syn match vimHiCtermColor contained "\<color\d\{1,3}\>"
+
+syn case match
+syn match vimHiFontname contained "[a-zA-Z\-*]\+"
+syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
+syn match vimHiGuiRgb contained "#\x\{6}"
+
+" Highlighting: hi group key=arg ... {{{2
+syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation
+syn region vimHiKeyList contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||" contains=@vimHiCluster
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
+ syn match vimHiKeyError contained "\i\+="he=e-1
+endif
+syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
+syn match vimHiStartStop contained "\c\(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
+syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
+syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
+syn match vimHiCtermul contained "\cctermul="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
+syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
+syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
+syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
+syn match vimHiTermcap contained "\S\+" contains=vimNotation
+syn match vimHiNmbr contained '\d\+'
+
+" Highlight: clear {{{2
+syn keyword vimHiClear contained clear nextgroup=vimHiGroup
+
+" Highlight: link {{{2
+" see tst24 (hi def vs hi) (Jul 06, 2018)
+"syn region vimHiLink contained oneline matchgroup=vimCommand start="\(\<hi\%[ghlight]\s\+\)\@<=\(\(def\%[ault]\s\+\)\=link\>\|\<def\>\)" end="$" contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
+syn region vimHiLink contained oneline matchgroup=vimCommand start="\(\<hi\%[ghlight]\s\+\)\@<=\(\(def\%[ault]\s\+\)\=link\>\|\<def\>\)" end="$" contains=@vimHiCluster
+syn cluster vimFuncBodyList add=vimHiLink
+
+" Control Characters: {{{2
+" ==================
+syn match vimCtrlChar "[- -]"
+
+" Beginners - Patterns that involve ^ {{{2
+" =========
+syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle,vimComment
+syn match vimLineComment +^[ \t:]*"\("[^"]*"\|[^"]\)*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle
+syn match vim9LineComment +^[ \t:]\+#.*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle
+syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
+syn match vimContinue "^\s*\\"
+syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
+syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
+
+" Searches And Globals: {{{2
+" ====================
+syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
+syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
+syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst
+syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst
+
+" Embedded Scripts: {{{2
+" ================
+" perl,ruby : Benoit Cerrina
+" python,tcl : Johannes Zellner
+" mzscheme, lua : Charles Campbell
+
+" Allows users to specify the type of embedded script highlighting
+" they want: (perl/python/ruby/tcl support)
+" g:vimsyn_embed == 0 : don't embed any scripts
+" g:vimsyn_embed =~# 'l' : embed lua (but only if vim supports it)
+" g:vimsyn_embed =~# 'm' : embed mzscheme (but only if vim supports it)
+" g:vimsyn_embed =~# 'p' : embed perl (but only if vim supports it)
+" g:vimsyn_embed =~# 'P' : embed python (but only if vim supports it)
+" g:vimsyn_embed =~# 'r' : embed ruby (but only if vim supports it)
+" g:vimsyn_embed =~# 't' : embed tcl (but only if vim supports it)
+if !exists("g:vimsyn_embed")
+ let g:vimsyn_embed= "lmpPr"
+endif
+
+" [-- lua --] {{{3
+let s:luapath= fnameescape(expand("<sfile>:p:h")."/lua.vim")
+if !filereadable(s:luapath)
+ for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n")
+ if filereadable(fnameescape(s:luapath))
+ let s:luapath= fnameescape(s:luapath)
+ break
+ endif
+ endfor
+endif
+if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath)
+ unlet! b:current_syntax
+ syn cluster vimFuncBodyList add=vimLuaRegion
+ exe "syn include @vimLuaScript ".s:luapath
+ VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript
+ VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript
+ syn cluster vimFuncBodyList add=vimLuaRegion
+else
+ syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
+endif
+unlet s:luapath
+
+" [-- perl --] {{{3
+let s:perlpath= fnameescape(expand("<sfile>:p:h")."/perl.vim")
+if !filereadable(s:perlpath)
+ for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n")
+ if filereadable(fnameescape(s:perlpath))
+ let s:perlpath= fnameescape(s:perlpath)
+ break
+ endif
+ endfor
+endif
+if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath)
+ unlet! b:current_syntax
+ syn cluster vimFuncBodyList add=vimPerlRegion
+ exe "syn include @vimPerlScript ".s:perlpath
+ VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)\ze\(\s*["#].*\)\=$+ end=+^\z1\ze\(\s*[#"].*\)\=$+ contains=@vimPerlScript
+ VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
+ syn cluster vimFuncBodyList add=vimPerlRegion
+else
+ syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
+endif
+unlet s:perlpath
+
+" [-- ruby --] {{{3
+let s:rubypath= fnameescape(expand("<sfile>:p:h")."/ruby.vim")
+if !filereadable(s:rubypath)
+ for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n")
+ if filereadable(fnameescape(s:rubypath))
+ let s:rubypath= fnameescape(s:rubypath)
+ break
+ endif
+ endfor
+endif
+if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath)
+ syn cluster vimFuncBodyList add=vimRubyRegion
+ unlet! b:current_syntax
+ exe "syn include @vimRubyScript ".s:rubypath
+ VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimRubyScript
+ syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
+ syn cluster vimFuncBodyList add=vimRubyRegion
+else
+ syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
+endif
+unlet s:rubypath
+
+" [-- python --] {{{3
+let s:pythonpath= fnameescape(expand("<sfile>:p:h")."/python.vim")
+if !filereadable(s:pythonpath)
+ for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n")
+ if filereadable(fnameescape(s:pythonpath))
+ let s:pythonpath= fnameescape(s:pythonpath)
+ break
+ endif
+ endfor
+endif
+if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath)
+ unlet! b:current_syntax
+ syn cluster vimFuncBodyList add=vimPythonRegion
+ exe "syn include @vimPythonScript ".s:pythonpath
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
+ VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
+ syn cluster vimFuncBodyList add=vimPythonRegion
+else
+ syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+
+endif
+unlet s:pythonpath
+
+" [-- tcl --] {{{3
+if has("win32") || has("win95") || has("win64") || has("win16")
+ " apparently has("tcl") has been hanging vim on some windows systems with cygwin
+ let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
+else
+ let s:trytcl= 1
+endif
+if s:trytcl
+ let s:tclpath= fnameescape(expand("<sfile>:p:h")."/tcl.vim")
+ if !filereadable(s:tclpath)
+ for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n")
+ if filereadable(fnameescape(s:tclpath))
+ let s:tclpath= fnameescape(s:tclpath)
+ break
+ endif
+ endfor
+ endif
+ if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath)
+ unlet! b:current_syntax
+ syn cluster vimFuncBodyList add=vimTclRegion
+ exe "syn include @vimTclScript ".s:tclpath
+ VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
+ VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
+ syn cluster vimFuncBodyList add=vimTclScript
+ else
+ syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
+ endif
+ unlet s:tclpath
+else
+ syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
+endif
+unlet s:trytcl
+
+" [-- mzscheme --] {{{3
+let s:mzschemepath= fnameescape(expand("<sfile>:p:h")."/scheme.vim")
+if !filereadable(s:mzschemepath)
+ for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n")
+ if filereadable(fnameescape(s:mzschemepath))
+ let s:mzschemepath= fnameescape(s:mzschemepath)
+ break
+ endif
+ endfor
+endif
+if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
+ unlet! b:current_syntax
+ let s:iskKeep= &isk
+ syn cluster vimFuncBodyList add=vimMzSchemeRegion
+ exe "syn include @vimMzSchemeScript ".s:mzschemepath
+ let &isk= s:iskKeep
+ unlet s:iskKeep
+ VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
+ VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
+ syn cluster vimFuncBodyList add=vimMzSchemeRegion
+else
+ syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
+ syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
+endif
+unlet s:mzschemepath
+
+" Synchronize (speed) {{{2
+"============
+if exists("g:vimsyn_minlines")
+ exe "syn sync minlines=".g:vimsyn_minlines
+endif
+exe "syn sync maxlines=".s:vimsyn_maxlines
+syn sync linecont "^\s\+\\"
+syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
+
+" ====================
+" Highlighting Settings {{{2
+" ====================
+
+if !exists("skip_vim_syntax_inits")
+ if !exists("g:vimsyn_noerror")
+ hi def link vimBehaveError vimError
+ hi def link vimCollClassErr vimError
+ hi def link vimErrSetting vimError
+ hi def link vimEmbedError vimError
+ hi def link vimFTError vimError
+ hi def link vimFunctionError vimError
+ hi def link vimFunc vimError
+ hi def link vimHiAttribList vimError
+ hi def link vimHiCtermError vimError
+ hi def link vimHiKeyError vimError
+ hi def link vimKeyCodeError vimError
+ hi def link vimMapModErr vimError
+ hi def link vimSubstFlagErr vimError
+ hi def link vimSynCaseError vimError
+ hi def link vimBufnrWarn vimWarn
+ endif
+
+ hi def link vimAbb vimCommand
+ hi def link vimAddress vimMark
+ hi def link vimAugroupError vimError
+ hi def link vimAugroupKey vimCommand
+ hi def link vimAuHighlight vimHighlight
+ hi def link vimAutoCmdOpt vimOption
+ hi def link vimAutoCmd vimCommand
+ hi def link vimAutoEvent Type
+ hi def link vimAutoCmdMod Special
+ hi def link vimAutoSet vimCommand
+ hi def link vimBehaveModel vimBehave
+ hi def link vimBehave vimCommand
+ hi def link vimBracket Delimiter
+ hi def link vimCmplxRepeat SpecialChar
+ hi def link vimCommand Statement
+ hi def link vimComment Comment
+ hi def link vim9Comment Comment
+ hi def link vimCommentString vimString
+ hi def link vimCommentTitle PreProc
+ hi def link vimCondHL vimCommand
+ hi def link vimContinue Special
+ hi def link vimCtrlChar SpecialChar
+ hi def link vimEchoHLNone vimGroup
+ hi def link vimEchoHL vimCommand
+ hi def link vimElseIfErr Error
+ hi def link vimElseif vimCondHL
+ hi def link vimEnvvar PreProc
+ hi def link vimError Error
+ hi def link vimEscape Special
+ hi def link vimFBVar vimVar
+ hi def link vimFgBgAttrib vimHiAttrib
+ hi def link vimFuncEcho vimCommand
+ hi def link vimHiCtermul vimHiTerm
+ hi def link vimFold Folded
+ hi def link vimFTCmd vimCommand
+ hi def link vimFTOption vimSynType
+ hi def link vimFuncKey vimCommand
+ hi def link vimFuncName Function
+ hi def link vimFuncSID Special
+ hi def link vimFuncVar Identifier
+ hi def link vimGroupAdd vimSynOption
+ hi def link vimGroupName vimGroup
+ hi def link vimGroupRem vimSynOption
+ hi def link vimGroupSpecial Special
+ hi def link vimGroup Type
+ hi def link vimHiAttrib PreProc
+ hi def link vimHiClear vimHighlight
+ hi def link vimHiCtermFgBg vimHiTerm
+ hi def link vimHiCTerm vimHiTerm
+ hi def link vimHighlight vimCommand
+ hi def link vimHiGroup vimGroupName
+ hi def link vimHiGuiFgBg vimHiTerm
+ hi def link vimHiGuiFont vimHiTerm
+ hi def link vimHiGuiRgb vimNumber
+ hi def link vimHiGui vimHiTerm
+ hi def link vimHiNmbr Number
+ hi def link vimHiStartStop vimHiTerm
+ hi def link vimHiTerm Type
+ hi def link vimHLGroup vimGroup
+ hi def link vimHLMod PreProc
+ hi def link vimInsert vimString
+ hi def link vimIskSep Delimiter
+ hi def link vimKeyCode vimSpecFile
+ hi def link vimKeyword Statement
+ hi def link vimLet vimCommand
+ hi def link vimLetHereDoc vimString
+ hi def link vimLetHereDocStart Special
+ hi def link vimLetHereDocStop Special
+ hi def link vimLineComment vimComment
+ hi def link vim9LineComment vimComment
+ hi def link vimMapBang vimCommand
+ hi def link vimMapModKey vimFuncSID
+ hi def link vimMapMod vimBracket
+ hi def link vimMap vimCommand
+ hi def link vimMark Number
+ hi def link vimMarkNumber vimNumber
+ hi def link vimMenuMod vimMapMod
+ hi def link vimMenuNameMore vimMenuName
+ hi def link vimMenuName PreProc
+ hi def link vimMtchComment vimComment
+ hi def link vimNorm vimCommand
+ hi def link vimNotation Special
+ hi def link vimNotFunc vimCommand
+ hi def link vimNotPatSep vimString
+ hi def link vimNumber Number
+ hi def link vimOperError Error
+ hi def link vimOper Operator
+ hi def link vimOperStar vimOper
+ hi def link vimOption PreProc
+ hi def link vimParenSep Delimiter
+ hi def link vimPatSepErr vimError
+ hi def link vimPatSepR vimPatSep
+ hi def link vimPatSep SpecialChar
+ hi def link vimPatSepZone vimString
+ hi def link vimPatSepZ vimPatSep
+ hi def link vimPattern Type
+ hi def link vimPlainMark vimMark
+ hi def link vimPlainRegister vimRegister
+ hi def link vimRegister SpecialChar
+ hi def link vimScriptDelim Comment
+ hi def link vimSearchDelim Statement
+ hi def link vimSearch vimString
+ hi def link vimSep Delimiter
+ hi def link vimSetMod vimOption
+ hi def link vimSetSep Statement
+ hi def link vimSetString vimString
+ hi def link vimSpecFile Identifier
+ hi def link vimSpecFileMod vimSpecFile
+ hi def link vimSpecial Type
+ hi def link vimStatement Statement
+ hi def link vimStringCont vimString
+ hi def link vimString String
+ hi def link vimStringEnd vimString
+ hi def link vimSubst1 vimSubst
+ hi def link vimSubstDelim Delimiter
+ hi def link vimSubstFlags Special
+ hi def link vimSubstSubstr SpecialChar
+ hi def link vimSubstTwoBS vimString
+ hi def link vimSubst vimCommand
+ hi def link vimSynCaseError Error
+ hi def link vimSynCase Type
+ hi def link vimSyncC Type
+ hi def link vimSyncError Error
+ hi def link vimSyncGroupName vimGroupName
+ hi def link vimSyncGroup vimGroupName
+ hi def link vimSyncKey Type
+ hi def link vimSyncNone Type
+ hi def link vimSynContains vimSynOption
+ hi def link vimSynError Error
+ hi def link vimSynKeyContainedin vimSynContains
+ hi def link vimSynKeyOpt vimSynOption
+ hi def link vimSynMtchGrp vimSynOption
+ hi def link vimSynMtchOpt vimSynOption
+ hi def link vimSynNextgroup vimSynOption
+ hi def link vimSynNotPatRange vimSynRegPat
+ hi def link vimSynOption Special
+ hi def link vimSynPatRange vimString
+ hi def link vimSynRegOpt vimSynOption
+ hi def link vimSynRegPat vimString
+ hi def link vimSynReg Type
+ hi def link vimSyntax vimCommand
+ hi def link vimSynType vimSpecial
+ hi def link vimTodo Todo
+ hi def link vimType Type
+ hi def link vimUnmap vimMap
+ hi def link vimUserAttrbCmpltFunc Special
+ hi def link vimUserAttrbCmplt vimSpecial
+ hi def link vimUserAttrbKey vimOption
+ hi def link vimUserAttrb vimSpecial
+ hi def link vimUserAttrbError Error
+ hi def link vimUserCmdError Error
+ hi def link vimUserCommand vimCommand
+ hi def link vimUserFunc Normal
+ hi def link vimVar Identifier
+ hi def link vimWarn WarningMsg
+endif
+
+" Current Syntax Variable: {{{2
+let b:current_syntax = "vim"
+
+" ---------------------------------------------------------------------
+" Cleanup: {{{1
+delc VimFolda
+delc VimFoldf
+delc VimFoldl
+delc VimFoldm
+delc VimFoldp
+delc VimFoldP
+delc VimFoldr
+delc VimFoldt
+let &cpo = s:keepcpo
+unlet s:keepcpo
+" vim:ts=18 fdm=marker
diff --git a/runtime/syntax/viminfo.vim b/runtime/syntax/viminfo.vim
new file mode 100644
index 0000000..667e1ba
--- /dev/null
+++ b/runtime/syntax/viminfo.vim
@@ -0,0 +1,48 @@
+" Vim syntax file
+" Language: Vim .viminfo file
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last Change: 2016 Jun 05
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" The lines that are NOT recognized
+syn match viminfoError "^[^\t].*"
+
+" The one-character one-liners that are recognized
+syn match viminfoStatement "^[/&$@:?=%!<]"
+
+" The two-character one-liners that are recognized
+syn match viminfoStatement "^[-'>"]."
+syn match viminfoStatement +^"".+
+syn match viminfoStatement "^\~[/&]"
+syn match viminfoStatement "^\~[hH]"
+syn match viminfoStatement "^\~[mM][sS][lL][eE]\d\+\~\=[/&]"
+
+syn match viminfoOption "^\*.*=" contains=viminfoOptionName
+syn match viminfoOptionName "\*\a*"ms=s+1 contained
+
+" Comments
+syn match viminfoComment "^#.*"
+
+" New style lines. TODO: highlight numbers and strings.
+syn match viminfoNew "^|.*"
+
+" Define the default highlighting.
+" Only used when an item doesn't have highlighting yet
+hi def link viminfoComment Comment
+hi def link viminfoError Error
+hi def link viminfoStatement Statement
+hi def link viminfoNew String
+
+let b:current_syntax = "viminfo"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/virata.vim b/runtime/syntax/virata.vim
new file mode 100644
index 0000000..0ed54fa
--- /dev/null
+++ b/runtime/syntax/virata.vim
@@ -0,0 +1,207 @@
+" Vim syntax file
+" Language: Virata AConfig Configuration Script
+" Maintainer: Manuel M.H. Stol <mmh.stol@gmx.net>
+" Last Change: 2003 May 11
+" Vim URL: http://www.vim.org/lang.html
+" Virata URL: http://www.globespanvirata.com/
+
+
+" Virata AConfig Configuration Script syntax
+" Can be detected by: 1) Extension .hw, .sw, .pkg and .module
+" 2) The file name pattern "mk.*\.cfg"
+" 3) The string "Virata" in the first 5 lines
+
+
+" Setup Syntax:
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+" Virata syntax is case insensitive (mostly)
+syn case ignore
+
+
+
+" Comments:
+" Virata comments start with %, but % is not a keyword character
+syn region virataComment start="^%" start="\s%"lc=1 keepend end="$" contains=@virataGrpInComments
+syn region virataSpclComment start="^%%" start="\s%%"lc=1 keepend end="$" contains=@virataGrpInComments
+syn keyword virataInCommentTodo contained TODO FIXME XXX[XXXXX] REVIEW TBD
+syn cluster virataGrpInComments contains=virataInCommentTodo
+syn cluster virataGrpComments contains=@virataGrpInComments,virataComment,virataSpclComment
+
+
+" Constants:
+syn match virataStringError +["]+
+syn region virataString start=+"+ skip=+\(\\\\\|\\"\)+ end=+"+ oneline contains=virataSpclCharError,virataSpclChar,@virataGrpDefSubsts
+syn match virataCharacter +'[^']\{-}'+ contains=virataSpclCharError,virataSpclChar
+syn match virataSpclChar contained +\\\(x\x\+\|\o\{1,3}\|['\"?\\abefnrtv]\)+
+syn match virataNumberError "\<\d\{-1,}\I\{-1,}\>"
+syn match virataNumberError "\<0x\x*\X\x*\>"
+syn match virataNumberError "\<\d\+\.\d*\(e[+-]\=\d\+\)\=\>"
+syn match virataDecNumber "\<\d\+U\=L\=\>"
+syn match virataHexNumber "\<0x\x\+U\=L\=\>"
+syn match virataSizeNumber "\<\d\+[BKM]\>"he=e-1
+syn match virataSizeNumber "\<\d\+[KM]B\>"he=e-2
+syn cluster virataGrpNumbers contains=virataNumberError,virataDecNumber,virataHexNumber,virataSizeNumber
+syn cluster virataGrpConstants contains=@virataGrpNumbers,virataStringError,virataString,virataCharacter,virataSpclChar
+
+
+" Identifiers:
+syn match virataIdentError contained "\<\D\S*\>"
+syn match virataIdentifier contained "\<\I\i\{-}\(\-\i\{-1,}\)*\>" contains=@virataGrpDefSubsts
+syn match virataFileIdent contained "\F\f*" contains=@virataGrpDefSubsts
+syn cluster virataGrpIdents contains=virataIdentifier,virataIdentError
+syn cluster virataGrpFileIdents contains=virataFileIdent,virataIdentError
+
+
+" Statements:
+syn match virataStatement "^\s*Config\(\(/Kernel\)\=\.\(hs\=\|s\)\)\=\>"
+syn match virataStatement "^\s*Config\s\+\I\i\{-}\(\-\i\{-1,}\)*\.\(hs\=\|s\)\>"
+syn match virataStatement "^\s*Make\.\I\i\{-}\(\-\i\{-1}\)*\>" skipwhite nextgroup=@virataGrpIdents
+syn match virataStatement "^\s*Make\.c\(at\)\=++\s"me=e-1 skipwhite nextgroup=@virataGrpIdents
+syn match virataStatement "^\s*\(Architecture\|GetEnv\|Reserved\|\(Un\)\=Define\|Version\)\>" skipwhite nextgroup=@virataGrpIdents
+syn match virataStatement "^\s*\(Hardware\|ModuleSource\|\(Release\)\=Path\|Software\)\>" skipwhite nextgroup=@virataGrpFileIdents
+syn match virataStatement "^\s*\(DefaultPri\|Hydrogen\)\>" skipwhite nextgroup=virataDecNumber,virataNumberError
+syn match virataStatement "^\s*\(NoInit\|PCI\|SysLink\)\>"
+syn match virataStatement "^\s*Allow\s\+\(ModuleConfig\)\>"
+syn match virataStatement "^\s*NoWarn\s\+\(Export\|Parse\=able\|Relative]\)\>"
+syn match virataStatement "^\s*Debug\s\+O\(ff\|n\)\>"
+
+" Import (Package <exec>|Module <name> from <dir>)
+syn region virataImportDef transparent matchgroup=virataStatement start="^\s*Import\>" keepend end="$" contains=virataInImport,virataModuleDef,virataNumberError,virataStringError,@virataGrpDefSubsts
+syn match virataInImport contained "\<\(Module\|Package\|from\)\>" skipwhite nextgroup=@virataGrpFileIdents
+" Export (Header <header file>|SLibrary <obj file>)
+syn region virataExportDef transparent matchgroup=virataStatement start="^\s*Export\>" keepend end="$" contains=virataInExport,virataNumberError,virataStringError,@virataGrpDefSubsts
+syn match virataInExport contained "\<\(Header\|[SU]Library\)\>" skipwhite nextgroup=@virataGrpFileIdents
+" Process <name> is <dir/exec>
+syn region virataProcessDef transparent matchgroup=virataStatement start="^\s*Process\>" keepend end="$" contains=virataInProcess,virataInExec,virataNumberError,virataStringError,@virataGrpDefSubsts,@virataGrpIdents
+syn match virataInProcess contained "\<is\>"
+" Instance <name> of <module>
+syn region virataInstanceDef transparent matchgroup=virataStatement start="^\s*Instance\>" keepend end="$" contains=virataInInstance,virataNumberError,virataStringError,@virataGrpDefSubsts,@virataGrpIdents
+syn match virataInInstance contained "\<of\>"
+" Module <name> from <dir>
+syn region virataModuleDef transparent matchgroup=virataStatement start="^\s*\(Package\|Module\)\>" keepend end="$" contains=virataInModule,virataNumberError,virataStringError,@virataGrpDefSubsts
+syn match virataInModule contained "^\s*Package\>"hs=e-7 skipwhite nextgroup=@virataGrpIdents
+syn match virataInModule contained "^\s*Module\>"hs=e-6 skipwhite nextgroup=@virataGrpIdents
+syn match virataInModule contained "\<from\>" skipwhite nextgroup=@virataGrpFileIdents
+" Colour <name> from <dir>
+syn region virataColourDef transparent matchgroup=virataStatement start="^\s*Colour\>" keepend end="$" contains=virataInColour,virataNumberError,virataStringError,@virataGrpDefSubsts
+syn match virataInColour contained "^\s*Colour\>"hs=e-6 skipwhite nextgroup=@virataGrpIdents
+syn match virataInColour contained "\<from\>" skipwhite nextgroup=@virataGrpFileIdents
+" Link {<link cmds>}
+" Object {Executable [<ExecOptions>]}
+syn match virataStatement "^\s*\(Link\|Object\)"
+" Executable <name> [<ExecOptions>]
+syn region virataExecDef transparent matchgroup=virataStatement start="^\s*Executable\>" keepend end="$" contains=virataInExec,virataNumberError,virataStringError
+syn match virataInExec contained "^\s*Executable\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpIdents
+syn match virataInExec contained "\<\(epilogue\|pro\(logue\|cess\)\|qhandler\)\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpIdents
+syn match virataInExec contained "\<\(priority\|stack\)\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpNumbers
+" Message <name> {<msg format>}
+" MessageId <number>
+syn match virataStatement "^\s*Message\(Id\)\=\>" skipwhite nextgroup=@virataGrpNumbers
+" MakeRule <make suffix=file> {<make cmds>}
+syn region virataMakeDef transparent matchgroup=virataStatement start="^\s*MakeRule\>" keepend end="$" contains=virataInMake,@virataGrpDefSubsts
+syn case match
+syn match virataInMake contained "\<N\>"
+syn case ignore
+" (Append|Edit|Copy)Rule <make suffix=file> <subst cmd>
+syn match virataStatement "^\s*\(Append\|Copy\|Edit\)Rule\>"
+" AlterRules in <file> <subst cmd>
+syn region virataAlterDef transparent matchgroup=virataStatement start="^\s*AlterRules\>" keepend end="$" contains=virataInAlter,@virataGrpDefSubsts
+syn match virataInAlter contained "\<in\>" skipwhite nextgroup=@virataGrpIdents
+" Clustering
+syn cluster virataGrpInStatmnts contains=virataInImport,virataInExport,virataInExec,virataInProcess,virataInAlter,virataInInstance,virataInModule,virataInColour
+syn cluster virataGrpStatements contains=@virataGrpInStatmnts,virataStatement,virataImportDef,virataExportDef,virataExecDef,virataProcessDef,virataAlterDef,virataInstanceDef,virataModuleDef,virataColourDef
+
+
+" MkFlash.Cfg File Statements:
+syn region virataCfgFileDef transparent matchgroup=virataCfgStatement start="^\s*Dir\>" start="^\s*\a\{-}File\>" start="^\s*OutputFile\d\d\=\>" start="^\s*\a\w\{-}[NP]PFile\>" keepend end="$" contains=@virataGrpFileIdents
+syn region virataCfgSizeDef transparent matchgroup=virataCfgStatement start="^\s*\a\{-}Size\>" start="^\s*ConfigInfo\>" keepend end="$" contains=@virataGrpNumbers,@virataGrpDefSubsts,virataIdentError
+syn region virataCfgNumberDef transparent matchgroup=virataCfgStatement start="^\s*FlashchipNum\(b\(er\=\)\=\)\=\>" start="^\s*Granularity\>" keepend end="$" contains=@virataGrpNumbers,@virataGrpDefSubsts
+syn region virataCfgMacAddrDef transparent matchgroup=virataCfgStatement start="^\s*MacAddress\>" keepend end="$" contains=virataNumberError,virataStringError,virataIdentError,virataInMacAddr,@virataGrpDefSubsts
+syn match virataInMacAddr contained "\x[:]\x\{1,2}\>"lc=2
+syn match virataInMacAddr contained "\s\x\{1,2}[:]\x"lc=1,me=e-1,he=e-2 nextgroup=virataInMacAddr
+syn match virataCfgStatement "^\s*Target\>" skipwhite nextgroup=@virataGrpIdents
+syn cluster virataGrpCfgs contains=virataCfgStatement,virataCfgFileDef,virataCfgSizeDef,virataCfgNumberDef,virataCfgMacAddrDef,virataInMacAddr
+
+
+
+" PreProcessor Instructions:
+" Defines
+syn match virataDefine "^\s*\(Un\)\=Set\>" skipwhite nextgroup=@virataGrpIdents
+syn match virataInclude "^\s*Include\>" skipwhite nextgroup=@virataGrpFileIdents
+syn match virataDefSubstError "[^$]\$"lc=1
+syn match virataDefSubstError "\$\(\w\|{\(.\{-}}\)\=\)"
+syn case match
+syn match virataDefSubst "\$\(\d\|[DINORS]\|{\I\i\{-}\(\-\i\{-1,}\)*}\)"
+syn case ignore
+" Conditionals
+syn cluster virataGrpCntnPreCon contains=ALLBUT,@virataGrpInComments,@virataGrpFileIdents,@virataGrpInStatmnts
+syn region virataPreConDef transparent matchgroup=virataPreCondit start="^\s*If\>" end="^\s*Endif\>" contains=@virataGrpCntnPreCon
+syn match virataPreCondit contained "^\s*Else\(\s\+If\)\=\>"
+syn region virataPreConDef transparent matchgroup=virataPreCondit start="^\s*ForEach\>" end="^\s*Done\>" contains=@virataGrpCntnPreCon
+" Pre-Processors
+syn region virataPreProc start="^\s*Error\>" start="^\s*Warning\>" oneline end="$" contains=@virataGrpConstants,@virataGrpDefSubsts
+syn cluster virataGrpDefSubsts contains=virataDefSubstError,virataDefSubst
+syn cluster virataGrpPreProcs contains=@virataGrpDefSubsts,virataDefine,virataInclude,virataPreConDef,virataPreCondit,virataPreProc
+
+
+" Synchronize Syntax:
+syn sync clear
+syn sync minlines=50 "for multiple region nesting
+
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" Sub Links:
+hi def link virataDefSubstError virataPreProcError
+hi def link virataDefSubst virataPreProc
+hi def link virataInAlter virataOperator
+hi def link virataInExec virataOperator
+hi def link virataInExport virataOperator
+hi def link virataInImport virataOperator
+hi def link virataInInstance virataOperator
+hi def link virataInMake virataOperator
+hi def link virataInModule virataOperator
+hi def link virataInProcess virataOperator
+hi def link virataInMacAddr virataHexNumber
+
+" Comment Group:
+hi def link virataComment Comment
+hi def link virataSpclComment SpecialComment
+hi def link virataInCommentTodo Todo
+
+" Constant Group:
+hi def link virataString String
+hi def link virataStringError Error
+hi def link virataCharacter Character
+hi def link virataSpclChar Special
+hi def link virataDecNumber Number
+hi def link virataHexNumber Number
+hi def link virataSizeNumber Number
+hi def link virataNumberError Error
+
+" Identifier Group:
+hi def link virataIdentError Error
+
+" PreProc Group:
+hi def link virataPreProc PreProc
+hi def link virataDefine Define
+hi def link virataInclude Include
+hi def link virataPreCondit PreCondit
+hi def link virataPreProcError Error
+hi def link virataPreProcWarn Todo
+
+" Directive Group:
+hi def link virataStatement Statement
+hi def link virataCfgStatement Statement
+hi def link virataOperator Operator
+hi def link virataDirective Keyword
+
+
+let b:current_syntax = "virata"
+
+" vim:ts=8:sw=2:noet:
diff --git a/runtime/syntax/vmasm.vim b/runtime/syntax/vmasm.vim
new file mode 100644
index 0000000..c5cbb1e
--- /dev/null
+++ b/runtime/syntax/vmasm.vim
@@ -0,0 +1,238 @@
+" Vim syntax file
+" Language: (VAX) Macro Assembly
+" Maintainer: Tom Uijldert <tom.uijldert [at] cmg.nl>
+" Last change: 2004 May 16
+"
+" This is incomplete. Feel free to contribute...
+"
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" Partial list of register symbols
+syn keyword vmasmReg r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12
+syn keyword vmasmReg ap fp sp pc iv dv
+
+" All matches - order is important!
+syn keyword vmasmOpcode adawi adwc ashl ashq bitb bitw bitl decb decw decl
+syn keyword vmasmOpcode ediv emul incb incw incl mcomb mcomw mcoml
+syn keyword vmasmOpcode movzbw movzbl movzwl popl pushl rotl sbwc
+syn keyword vmasmOpcode cmpv cmpzv cmpc3 cmpc5 locc matchc movc3 movc5
+syn keyword vmasmOpcode movtc movtuc scanc skpc spanc crc extv extzv
+syn keyword vmasmOpcode ffc ffs insv aobleq aoblss bbc bbs bbcci bbssi
+syn keyword vmasmOpcode blbc blbs brb brw bsbb bsbw caseb casew casel
+syn keyword vmasmOpcode jmp jsb rsb sobgeq sobgtr callg calls ret
+syn keyword vmasmOpcode bicpsw bispsw bpt halt index movpsl nop popr pushr xfc
+syn keyword vmasmOpcode insqhi insqti insque remqhi remqti remque
+syn keyword vmasmOpcode addp4 addp6 ashp cmpp3 cmpp4 cvtpl cvtlp cvtps cvtpt
+syn keyword vmasmOpcode cvtsp cvttp divp movp mulp subp4 subp6 editpc
+syn keyword vmasmOpcode prober probew rei ldpctx svpctx mfpr mtpr bugw bugl
+syn keyword vmasmOpcode vldl vldq vgathl vgathq vstl vstq vscatl vscatq
+syn keyword vmasmOpcode vvcvt iota mfvp mtvp vsync
+syn keyword vmasmOpcode beql[u] bgtr[u] blss[u]
+syn match vmasmOpcode "\<add[bwlfdgh][23]\>"
+syn match vmasmOpcode "\<bi[cs][bwl][23]\>"
+syn match vmasmOpcode "\<clr[bwlqofdgh]\>"
+syn match vmasmOpcode "\<cmp[bwlfdgh]\>"
+syn match vmasmOpcode "\<cvt[bwlfdgh][bwlfdgh]\>"
+syn match vmasmOpcode "\<cvtr[fdgh]l\>"
+syn match vmasmOpcode "\<div[bwlfdgh][23]\>"
+syn match vmasmOpcode "\<emod[fdgh]\>"
+syn match vmasmOpcode "\<mneg[bwlfdgh]\>"
+syn match vmasmOpcode "\<mov[bwlqofdgh]\>"
+syn match vmasmOpcode "\<mul[bwlfdgh][23]\>"
+syn match vmasmOpcode "\<poly[fdgh]\>"
+syn match vmasmOpcode "\<sub[bwlfdgh][23]\>"
+syn match vmasmOpcode "\<tst[bwlfdgh]\>"
+syn match vmasmOpcode "\<xor[bwl][23]\>"
+syn match vmasmOpcode "\<mova[bwlfqdgho]\>"
+syn match vmasmOpcode "\<push[bwlfqdgho]\>"
+syn match vmasmOpcode "\<acb[bwlfgdh]\>"
+syn match vmasmOpcode "\<b[lng]equ\=\>"
+syn match vmasmOpcode "\<b[cv][cs]\>"
+syn match vmasmOpcode "\<bb[cs][cs]\>"
+syn match vmasmOpcode "\<v[vs]add[lfdg]\>"
+syn match vmasmOpcode "\<v[vs]cmp[lfdg]\>"
+syn match vmasmOpcode "\<v[vs]div[fdg]\>"
+syn match vmasmOpcode "\<v[vs]mul[lfdg]\>"
+syn match vmasmOpcode "\<v[vs]sub[lfdg]\>"
+syn match vmasmOpcode "\<v[vs]bi[cs]l\>"
+syn match vmasmOpcode "\<v[vs]xorl\>"
+syn match vmasmOpcode "\<v[vs]merge\>"
+syn match vmasmOpcode "\<v[vs]s[rl]ll\>"
+
+" Various number formats
+syn match vmasmdecNumber "[+-]\=[0-9]\+\>"
+syn match vmasmdecNumber "^d[0-9]\+\>"
+syn match vmasmhexNumber "^x[0-9a-f]\+\>"
+syn match vmasmoctNumber "^o[0-7]\+\>"
+syn match vmasmbinNumber "^b[01]\+\>"
+syn match vmasmfloatNumber "[-+]\=[0-9]\+E[-+]\=[0-9]\+"
+syn match vmasmfloatNumber "[-+]\=[0-9]\+\.[0-9]*\(E[-+]\=[0-9]\+\)\="
+
+" Valid labels
+syn match vmasmLabel "^[a-z_$.][a-z0-9_$.]\{,30}::\="
+syn match vmasmLabel "\<[0-9]\{1,5}\$:\=" " Local label
+
+" Character string constants
+" Too complex really. Could be "<...>" but those could also be
+" expressions. Don't know how to handle chosen delimiters
+" ("^<sep>...<sep>")
+" syn region vmasmString start="<" end=">" oneline
+
+" Operators
+syn match vmasmOperator "[-+*/@&!\\]"
+syn match vmasmOperator "="
+syn match vmasmOperator "==" " Global assignment
+syn match vmasmOperator "%length(.*)"
+syn match vmasmOperator "%locate(.*)"
+syn match vmasmOperator "%extract(.*)"
+syn match vmasmOperator "^[amfc]"
+syn match vmasmOperator "[bwlg]^"
+
+syn match vmasmOperator "\<\(not_\)\=equal\>"
+syn match vmasmOperator "\<less_equal\>"
+syn match vmasmOperator "\<greater\(_equal\)\=\>"
+syn match vmasmOperator "\<less_than\>"
+syn match vmasmOperator "\<\(not_\)\=defined\>"
+syn match vmasmOperator "\<\(not_\)\=blank\>"
+syn match vmasmOperator "\<identical\>"
+syn match vmasmOperator "\<different\>"
+syn match vmasmOperator "\<eq\>"
+syn match vmasmOperator "\<[gl]t\>"
+syn match vmasmOperator "\<n\=df\>"
+syn match vmasmOperator "\<n\=b\>"
+syn match vmasmOperator "\<idn\>"
+syn match vmasmOperator "\<[nlg]e\>"
+syn match vmasmOperator "\<dif\>"
+
+" Special items for comments
+syn keyword vmasmTodo contained todo
+
+" Comments
+syn match vmasmComment ";.*" contains=vmasmTodo
+
+" Include
+syn match vmasmInclude "\.library\>"
+
+" Macro definition
+syn match vmasmMacro "\.macro\>"
+syn match vmasmMacro "\.mexit\>"
+syn match vmasmMacro "\.endm\>"
+syn match vmasmMacro "\.mcall\>"
+syn match vmasmMacro "\.mdelete\>"
+
+" Conditional assembly
+syn match vmasmPreCond "\.iff\=\>"
+syn match vmasmPreCond "\.if_false\>"
+syn match vmasmPreCond "\.iftf\=\>"
+syn match vmasmPreCond "\.if_true\(_false\)\=\>"
+syn match vmasmPreCond "\.iif\>"
+
+" Loop control
+syn match vmasmRepeat "\.irpc\=\>"
+syn match vmasmRepeat "\.repeat\>"
+syn match vmasmRepeat "\.rept\>"
+syn match vmasmRepeat "\.endr\>"
+
+" Directives
+syn match vmasmDirective "\.address\>"
+syn match vmasmDirective "\.align\>"
+syn match vmasmDirective "\.asci[cdiz]\>"
+syn match vmasmDirective "\.blk[abdfghloqw]\>"
+syn match vmasmDirective "\.\(signed_\)\=byte\>"
+syn match vmasmDirective "\.\(no\)\=cross\>"
+syn match vmasmDirective "\.debug\>"
+syn match vmasmDirective "\.default displacement\>"
+syn match vmasmDirective "\.[dfgh]_floating\>"
+syn match vmasmDirective "\.disable\>"
+syn match vmasmDirective "\.double\>"
+syn match vmasmDirective "\.dsabl\>"
+syn match vmasmDirective "\.enable\=\>"
+syn match vmasmDirective "\.endc\=\>"
+syn match vmasmDirective "\.entry\>"
+syn match vmasmDirective "\.error\>"
+syn match vmasmDirective "\.even\>"
+syn match vmasmDirective "\.external\>"
+syn match vmasmDirective "\.extrn\>"
+syn match vmasmDirective "\.float\>"
+syn match vmasmDirective "\.globa\=l\>"
+syn match vmasmDirective "\.ident\>"
+syn match vmasmDirective "\.link\>"
+syn match vmasmDirective "\.list\>"
+syn match vmasmDirective "\.long\>"
+syn match vmasmDirective "\.mask\>"
+syn match vmasmDirective "\.narg\>"
+syn match vmasmDirective "\.nchr\>"
+syn match vmasmDirective "\.nlist\>"
+syn match vmasmDirective "\.ntype\>"
+syn match vmasmDirective "\.octa\>"
+syn match vmasmDirective "\.odd\>"
+syn match vmasmDirective "\.opdef\>"
+syn match vmasmDirective "\.packed\>"
+syn match vmasmDirective "\.page\>"
+syn match vmasmDirective "\.print\>"
+syn match vmasmDirective "\.psect\>"
+syn match vmasmDirective "\.quad\>"
+syn match vmasmDirective "\.ref[1248]\>"
+syn match vmasmDirective "\.ref16\>"
+syn match vmasmDirective "\.restore\(_psect\)\=\>"
+syn match vmasmDirective "\.save\(_psect\)\=\>"
+syn match vmasmDirective "\.sbttl\>"
+syn match vmasmDirective "\.\(no\)\=show\>"
+syn match vmasmDirective "\.\(sub\)\=title\>"
+syn match vmasmDirective "\.transfer\>"
+syn match vmasmDirective "\.warn\>"
+syn match vmasmDirective "\.weak\>"
+syn match vmasmDirective "\.\(signed_\)\=word\>"
+
+syn case match
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later
+" Comment Constant Error Identifier PreProc Special Statement Todo Type
+"
+" Constant Boolean Character Number String
+" Identifier Function
+" PreProc Define Include Macro PreCondit
+" Special Debug Delimiter SpecialChar SpecialComment Tag
+" Statement Conditional Exception Keyword Label Operator Repeat
+" Type StorageClass Structure Typedef
+
+hi def link vmasmComment Comment
+hi def link vmasmTodo Todo
+
+hi def link vmasmhexNumber Number " Constant
+hi def link vmasmoctNumber Number " Constant
+hi def link vmasmbinNumber Number " Constant
+hi def link vmasmdecNumber Number " Constant
+hi def link vmasmfloatNumber Number " Constant
+
+" hi def link vmasmString String " Constant
+
+hi def link vmasmReg Identifier
+hi def link vmasmOperator Identifier
+
+hi def link vmasmInclude Include " PreProc
+hi def link vmasmMacro Macro " PreProc
+" hi def link vmasmMacroParam Keyword " Statement
+
+hi def link vmasmDirective Special
+hi def link vmasmPreCond Special
+
+
+hi def link vmasmOpcode Statement
+hi def link vmasmCond Conditional " Statement
+hi def link vmasmRepeat Repeat " Statement
+
+hi def link vmasmLabel Type
+
+let b:current_syntax = "vmasm"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/voscm.vim b/runtime/syntax/voscm.vim
new file mode 100644
index 0000000..7d6bea7
--- /dev/null
+++ b/runtime/syntax/voscm.vim
@@ -0,0 +1,94 @@
+" Vim syntax file
+" Language: VOS CM macro
+" Maintainer: Andrew McGill andrewm at lunch.za.net
+" Last Change: Apr 06, 2007
+" Version: 1
+" URL: http://lunch.za.net/
+"
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+" set iskeyword=48-57,_,a-z,A-Z
+
+syn match voscmStatement "^!"
+syn match voscmStatement "&\(label\|begin_parameters\|end_parameters\|goto\|attach_input\|break\|continue\|control\|detach_input\|display_line\|display_line_partial\|echo\|eof\|eval\|if\|mode\|return\|while\|set\|set_string\|then\|else\|do\|done\|end\)\>"
+syn match voscmJump "\(&label\|&goto\) *" nextgroup=voscmLabelId
+syn match voscmLabelId contained "\<[A-Za-z][A-Z_a-z0-9]* *$"
+syn match voscmSetvar "\(&set_string\|&set\) *" nextgroup=voscmVariable
+syn match voscmError "\(&set_string\|&set\) *&"
+syn match voscmVariable contained "\<[A-Za-z][A-Z_a-z0-9]\+\>"
+syn keyword voscmParamKeyword contained number req string switch allow byte disable_input hidden length longword max min no_abbrev output_path req required req_for_form word
+syn region voscmParamList matchgroup=voscmParam start="&begin_parameters" end="&end_parameters" contains=voscmParamKeyword,voscmString,voscmParamName,voscmParamId
+syn match voscmParamName contained "\(^\s*[A-Za-z_0-9]\+\s\+\)\@<=\k\+"
+syn match voscmParamId contained "\(^\s*\)\@<=\k\+"
+syn region par1 matchgroup=par1 start=/(/ end=/)/ contains=voscmFunction,voscmIdentifier,voscmString transparent
+" FIXME: functions should only be allowed after a bracket ... ie (ask ...):
+syn keyword voscmFunction contained abs access after ask before break byte calc ceil command_status concat
+syn keyword voscmFunction contained contents path_name copy count current_dir current_module date date_time
+syn keyword voscmFunction contained decimal directory_name end_of_file exists file_info floor given group_name
+syn keyword voscmFunction contained has_access hexadecimal home_dir index iso_date iso_date_time language_name
+syn keyword voscmFunction contained length lock_type locked ltrim master_disk max message min mod module_info
+syn keyword voscmFunction contained module_name object_name online path_name person_name process_dir process_info
+syn keyword voscmFunction contained process_type quote rank referencing_dir reverse rtrim search
+syn keyword voscmFunction contained software_purchased string substitute substr system_name terminal_info
+syn keyword voscmFunction contained terminal_name time translate trunc unique_string unquote user_name verify
+syn keyword voscmFunction contained where_path
+syn keyword voscmTodo contained TODO FIXME XXX DEBUG NOTE
+syn match voscmTab "\t\+"
+
+syn keyword voscmCommand add_entry_names add_library_path add_profile analyze_pc_samples attach_default_output attach_port batch bind break_process c c_preprocess call_thru cancel_batch_requests cancel_device_reservation cancel_print_requests cc change_current_dir check_posix cobol comment_on_manual compare_dirs compare_files convert_text_file copy_dir copy_file copy_tape cpp create_data_object create_deleted_record_index create_dir create_file create_index create_record_index create_tape_volumes cvt_fixed_to_stream cvt_stream_to_fixed debug delete_dir delete_file delete_index delete_library_path detach_default_output detach_port dismount_tape display display_access display_access_list display_batch_status display_current_dir display_current_module display_date_time display_default_access_list display_device_info display_dir_status display_disk_info display_disk_usage display_error display_file display_file_status display_line display_notices display_object_module_info display_print_defaults display_print_status display_program_module display_system_usage display_tape_params display_terminal_parameters dump_file dump_record dump_tape edit edit_form emacs enforce_region_locks fortran get_external_variable give_access give_default_access handle_sig_dfl harvest_pc_samples help kill line_edit link link_dirs list list_batch_requests list_devices list_gateways list_library_paths list_modules list_port_attachments list_print_requests list_process_cmd_limits list_save_tape list_systems list_tape list_terminal_types list_users locate_files locate_large_files login logout mount_tape move_device_reservation move_dir move_file mp_debug nls_edit_form pascal pl1 position_tape preprocess_file print profile propagate_access read_tape ready remove_access remove_default_access rename reserve_device restore_object save_object send_message set set_cpu_time_limit set_expiration_date set_external_variable set_file_allocation set_implicit_locking set_index_flags set_language set_library_paths set_line_wrap_width set_log_protected_file set_owner_access set_pipe_file set_priority set_ready set_safety_switch set_second_tape set_tape_drive_params set_tape_file_params set_tape_mount_params set_terminal_parameters set_text_file set_time_zone sleep sort start_logging start_process stop_logging stop_process tail_file text_data_merge translate_links truncate_file unlink update_batch_requests update_print_requests update_process_cmd_limits use_abbreviations use_message_file vcc verify_posix_access verify_save verify_system_access walk_dir where_command where_path who_locked write_tape
+
+syn match voscmIdentifier "&[A-Za-z][a-z0-9_A-Z]*&"
+
+syn match voscmString "'[^']*'"
+
+" Number formats
+syn match voscmNumber "\<\d\+\>"
+"Floating point number part only
+syn match voscmDecimalNumber "\.\d\+\([eE][-+]\=\d\)\=\>"
+
+"syn region voscmComment start="^[ ]*&[ ]+" end="$"
+"syn match voscmComment "^[ ]*&[ ].*$"
+"syn match voscmComment "^&$"
+syn region voscmComment start="^[ ]*&[ ]" end="$" contains=voscmTodo
+syn match voscmComment "^&$"
+syn match voscmContinuation "&+$"
+
+"syn match voscmIdentifier "[A-Za-z0-9&._-]\+"
+
+"Synchronization with Statement terminator $
+" syn sync maxlines=100
+
+hi def link voscmConditional Conditional
+hi def link voscmStatement Statement
+hi def link voscmSetvar Statement
+hi def link voscmNumber Number
+hi def link voscmDecimalNumber Float
+hi def link voscmString String
+hi def link voscmIdentifier Identifier
+hi def link voscmVariable Identifier
+hi def link voscmComment Comment
+hi def link voscmJump Statement
+hi def link voscmContinuation Macro
+hi def link voscmLabelId String
+hi def link voscmParamList NONE
+hi def link voscmParamId Identifier
+hi def link voscmParamName String
+hi def link voscmParam Statement
+hi def link voscmParamKeyword Statement
+hi def link voscmFunction Function
+hi def link voscmCommand Structure
+"hi def link voscmIdentifier NONE
+"hi def link voscmSpecial Special " not used
+hi def link voscmTodo Todo
+hi def link voscmTab Error
+hi def link voscmError Error
+
+let b:current_syntax = "voscm"
+
+" vim: ts=8
diff --git a/runtime/syntax/vrml.vim b/runtime/syntax/vrml.vim
new file mode 100644
index 0000000..2474493
--- /dev/null
+++ b/runtime/syntax/vrml.vim
@@ -0,0 +1,222 @@
+" Vim syntax file
+" Language: VRML97
+" Modified from: VRML 1.0C by David Brown <dbrown@cgs.c4.gmeds.com>
+" Maintainer: vacancy!
+" Former Maintainer: Gregory Seidman <gsslist+vim@anthropohedron.net>
+" Last change: 2006 May 03
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" keyword definitions
+
+syn keyword VRMLFields ambientIntensity appearance attenuation
+syn keyword VRMLFields autoOffset avatarSize axisOfRotation backUrl
+syn keyword VRMLFields bboxCenter bboxSize beamWidth beginCap
+syn keyword VRMLFields bottom bottomRadius bottomUrl ccw center
+syn keyword VRMLFields children choice collide color colorIndex
+syn keyword VRMLFields colorPerVertex convex coord coordIndex
+syn keyword VRMLFields creaseAngle crossSection cutOffAngle
+syn keyword VRMLFields cycleInterval description diffuseColor
+syn keyword VRMLFields directOutput direction diskAngle
+syn keyword VRMLFields emissiveColor enabled endCap family
+syn keyword VRMLFields fieldOfView fogType fontStyle frontUrl
+syn keyword VRMLFields geometry groundAngle groundColor headlight
+syn keyword VRMLFields height horizontal info intensity jump
+syn keyword VRMLFields justify key keyValue language leftToRight
+syn keyword VRMLFields leftUrl length level location loop material
+syn keyword VRMLFields maxAngle maxBack maxExtent maxFront
+syn keyword VRMLFields maxPosition minAngle minBack minFront
+syn keyword VRMLFields minPosition mustEvaluate normal normalIndex
+syn keyword VRMLFields normalPerVertex offset on orientation
+syn keyword VRMLFields parameter pitch point position priority
+syn keyword VRMLFields proxy radius range repeatS repeatT rightUrl
+syn keyword VRMLFields rotation scale scaleOrientation shininess
+syn keyword VRMLFields side size skyAngle skyColor solid source
+syn keyword VRMLFields spacing spatialize specularColor speed spine
+syn keyword VRMLFields startTime stopTime string style texCoord
+syn keyword VRMLFields texCoordIndex texture textureTransform title
+syn keyword VRMLFields top topToBottom topUrl translation
+syn keyword VRMLFields transparency type url vector visibilityLimit
+syn keyword VRMLFields visibilityRange whichChoice xDimension
+syn keyword VRMLFields xSpacing zDimension zSpacing
+syn match VRMLFields "\<[A-Za-z_][A-Za-z0-9_]*\>" contains=VRMLComment,VRMLProtos,VRMLfTypes
+" syn match VRMLFields "\<[A-Za-z_][A-Za-z0-9_]*\>\(,\|\s\)*\(#.*$\)*\<IS\>\(#.*$\)*\(,\|\s\)*\<[A-Za-z_][A-Za-z0-9_]*\>\(,\|\s\)*\(#.*$\)*" contains=VRMLComment,VRMLProtos
+" syn region VRMLFields start="\<[A-Za-z_][A-Za-z0-9_]*\>" end=+\(,\|#\|\s\)+me=e-1 contains=VRMLComment,VRMLProtos
+
+syn keyword VRMLEvents addChildren ambientIntensity_changed
+syn keyword VRMLEvents appearance_changed attenuation_changed
+syn keyword VRMLEvents autoOffset_changed avatarSize_changed
+syn keyword VRMLEvents axisOfRotation_changed backUrl_changed
+syn keyword VRMLEvents beamWidth_changed bindTime bottomUrl_changed
+syn keyword VRMLEvents center_changed children_changed
+syn keyword VRMLEvents choice_changed collideTime collide_changed
+syn keyword VRMLEvents color_changed coord_changed
+syn keyword VRMLEvents cutOffAngle_changed cycleInterval_changed
+syn keyword VRMLEvents cycleTime description_changed
+syn keyword VRMLEvents diffuseColor_changed direction_changed
+syn keyword VRMLEvents diskAngle_changed duration_changed
+syn keyword VRMLEvents emissiveColor_changed enabled_changed
+syn keyword VRMLEvents enterTime exitTime fogType_changed
+syn keyword VRMLEvents fontStyle_changed fraction_changed
+syn keyword VRMLEvents frontUrl_changed geometry_changed
+syn keyword VRMLEvents groundAngle_changed headlight_changed
+syn keyword VRMLEvents hitNormal_changed hitPoint_changed
+syn keyword VRMLEvents hitTexCoord_changed intensity_changed
+syn keyword VRMLEvents isActive isBound isOver jump_changed
+syn keyword VRMLEvents keyValue_changed key_changed leftUrl_changed
+syn keyword VRMLEvents length_changed level_changed
+syn keyword VRMLEvents location_changed loop_changed
+syn keyword VRMLEvents material_changed maxAngle_changed
+syn keyword VRMLEvents maxBack_changed maxExtent_changed
+syn keyword VRMLEvents maxFront_changed maxPosition_changed
+syn keyword VRMLEvents minAngle_changed minBack_changed
+syn keyword VRMLEvents minFront_changed minPosition_changed
+syn keyword VRMLEvents normal_changed offset_changed on_changed
+syn keyword VRMLEvents orientation_changed parameter_changed
+syn keyword VRMLEvents pitch_changed point_changed position_changed
+syn keyword VRMLEvents priority_changed radius_changed
+syn keyword VRMLEvents removeChildren rightUrl_changed
+syn keyword VRMLEvents rotation_changed scaleOrientation_changed
+syn keyword VRMLEvents scale_changed set_ambientIntensity
+syn keyword VRMLEvents set_appearance set_attenuation
+syn keyword VRMLEvents set_autoOffset set_avatarSize
+syn keyword VRMLEvents set_axisOfRotation set_backUrl set_beamWidth
+syn keyword VRMLEvents set_bind set_bottomUrl set_center
+syn keyword VRMLEvents set_children set_choice set_collide
+syn keyword VRMLEvents set_color set_colorIndex set_coord
+syn keyword VRMLEvents set_coordIndex set_crossSection
+syn keyword VRMLEvents set_cutOffAngle set_cycleInterval
+syn keyword VRMLEvents set_description set_diffuseColor
+syn keyword VRMLEvents set_direction set_diskAngle
+syn keyword VRMLEvents set_emissiveColor set_enabled set_fogType
+syn keyword VRMLEvents set_fontStyle set_fraction set_frontUrl
+syn keyword VRMLEvents set_geometry set_groundAngle set_headlight
+syn keyword VRMLEvents set_height set_intensity set_jump set_key
+syn keyword VRMLEvents set_keyValue set_leftUrl set_length
+syn keyword VRMLEvents set_level set_location set_loop set_material
+syn keyword VRMLEvents set_maxAngle set_maxBack set_maxExtent
+syn keyword VRMLEvents set_maxFront set_maxPosition set_minAngle
+syn keyword VRMLEvents set_minBack set_minFront set_minPosition
+syn keyword VRMLEvents set_normal set_normalIndex set_offset set_on
+syn keyword VRMLEvents set_orientation set_parameter set_pitch
+syn keyword VRMLEvents set_point set_position set_priority
+syn keyword VRMLEvents set_radius set_rightUrl set_rotation
+syn keyword VRMLEvents set_scale set_scaleOrientation set_shininess
+syn keyword VRMLEvents set_size set_skyAngle set_skyColor
+syn keyword VRMLEvents set_source set_specularColor set_speed
+syn keyword VRMLEvents set_spine set_startTime set_stopTime
+syn keyword VRMLEvents set_string set_texCoord set_texCoordIndex
+syn keyword VRMLEvents set_texture set_textureTransform set_topUrl
+syn keyword VRMLEvents set_translation set_transparency set_type
+syn keyword VRMLEvents set_url set_vector set_visibilityLimit
+syn keyword VRMLEvents set_visibilityRange set_whichChoice
+syn keyword VRMLEvents shininess_changed size_changed
+syn keyword VRMLEvents skyAngle_changed skyColor_changed
+syn keyword VRMLEvents source_changed specularColor_changed
+syn keyword VRMLEvents speed_changed startTime_changed
+syn keyword VRMLEvents stopTime_changed string_changed
+syn keyword VRMLEvents texCoord_changed textureTransform_changed
+syn keyword VRMLEvents texture_changed time topUrl_changed
+syn keyword VRMLEvents touchTime trackPoint_changed
+syn keyword VRMLEvents translation_changed transparency_changed
+syn keyword VRMLEvents type_changed url_changed value_changed
+syn keyword VRMLEvents vector_changed visibilityLimit_changed
+syn keyword VRMLEvents visibilityRange_changed whichChoice_changed
+syn region VRMLEvents start="\S+[^0-9]+\.[A-Za-z_]+"ms=s+1 end="\(,\|$\|\s\)"me=e-1
+
+syn keyword VRMLNodes Anchor Appearance AudioClip Background
+syn keyword VRMLNodes Billboard Box Collision Color
+syn keyword VRMLNodes ColorInterpolator Cone Coordinate
+syn keyword VRMLNodes CoordinateInterpolator Cylinder
+syn keyword VRMLNodes CylinderSensor DirectionalLight
+syn keyword VRMLNodes ElevationGrid Extrusion Fog FontStyle
+syn keyword VRMLNodes Group ImageTexture IndexedFaceSet
+syn keyword VRMLNodes IndexedLineSet Inline LOD Material
+syn keyword VRMLNodes MovieTexture NavigationInfo Normal
+syn keyword VRMLNodes NormalInterpolator OrientationInterpolator
+syn keyword VRMLNodes PixelTexture PlaneSensor PointLight
+syn keyword VRMLNodes PointSet PositionInterpolator
+syn keyword VRMLNodes ProximitySensor ScalarInterpolator
+syn keyword VRMLNodes Script Shape Sound Sphere SphereSensor
+syn keyword VRMLNodes SpotLight Switch Text TextureCoordinate
+syn keyword VRMLNodes TextureTransform TimeSensor TouchSensor
+syn keyword VRMLNodes Transform Viewpoint VisibilitySensor
+syn keyword VRMLNodes WorldInfo
+
+" the following line doesn't catch <node><newline><openbrace> since \n
+" doesn't match as an atom yet :-(
+syn match VRMLNodes "[A-Za-z_][A-Za-z0-9_]*\(,\|\s\)*{"me=e-1
+syn region VRMLNodes start="\<EXTERNPROTO\>\(,\|\s\)*[A-Za-z_]"ms=e start="\<EXTERNPROTO\>\(,\|\s\)*" end="[\s]*\["me=e-1 contains=VRMLProtos,VRMLComment
+syn region VRMLNodes start="PROTO\>\(,\|\s\)*[A-Za-z_]"ms=e start="PROTO\>\(,\|\s\)*" end="[\s]*\["me=e-1 contains=VRMLProtos,VRMLComment
+
+syn keyword VRMLTypes SFBool SFColor MFColor SFFloat MFFloat
+syn keyword VRMLTypes SFImage SFInt32 MFInt32 SFNode MFNode
+syn keyword VRMLTypes SFRotation MFRotation SFString MFString
+syn keyword VRMLTypes SFTime MFTime SFVec2f MFVec2f SFVec3f MFVec3f
+
+syn keyword VRMLfTypes field exposedField eventIn eventOut
+
+syn keyword VRMLValues TRUE FALSE NULL
+
+syn keyword VRMLProtos contained EXTERNPROTO PROTO IS
+
+syn keyword VRMLRoutes contained ROUTE TO
+
+"containment!
+syn include @jscript $VIMRUNTIME/syntax/javascript.vim
+syn region VRMLjScriptString contained start=+"\(\(javascript\)\|\(vrmlscript\)\|\(ecmascript\)\):+ms=e+1 skip=+\\\\\|\\"+ end=+"+me=e-1 contains=@jscript
+
+" match definitions.
+syn match VRMLSpecial contained "\\[0-9][0-9][0-9]\|\\."
+syn region VRMLString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=VRMLSpecial,VRMLjScriptString
+syn match VRMLCharacter "'[^\\]'"
+syn match VRMLSpecialCharacter "'\\.'"
+syn match VRMLNumber "[-+]\=\<[0-9]\+\(\.[0-9]\+\)\=\([eE]\{1}[-+]\=[0-9]\+\)\=\>\|0[xX][0-9a-fA-F]\+\>"
+syn match VRMLNumber "0[xX][0-9a-fA-F]\+\>"
+syn match VRMLComment "#.*$"
+
+" newlines should count as whitespace, but they can't be matched yet :-(
+syn region VRMLRouteNode start="[^O]TO\(,\|\s\)*" end="\."me=e-1 contains=VRMLRoutes,VRMLComment
+syn region VRMLRouteNode start="ROUTE\(,\|\s\)*" end="\."me=e-1 contains=VRMLRoutes,VRMLComment
+syn region VRMLInstName start="DEF\>"hs=e+1 skip="DEF\(,\|\s\)*" end="[A-Za-z0-9_]\(\s\|$\|,\)"me=e contains=VRMLInstances,VRMLComment
+syn region VRMLInstName start="USE\>"hs=e+1 skip="USE\(,\|\s\)*" end="[A-Za-z0-9_]\(\s\|$\|,\)"me=e contains=VRMLInstances,VRMLComment
+
+syn keyword VRMLInstances contained DEF USE
+syn sync minlines=1
+
+"FOLDS!
+syn sync fromstart
+"setlocal foldmethod=syntax
+syn region braceFold start="{" end="}" transparent fold contains=TOP
+syn region bracketFold start="\[" end="]" transparent fold contains=TOP
+syn region VRMLString start=+"+ skip=+\\\\\|\\"+ end=+"+ fold contains=VRMLSpecial,VRMLjScriptString
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link VRMLCharacter VRMLString
+hi def link VRMLSpecialCharacter VRMLSpecial
+hi def link VRMLNumber VRMLString
+hi def link VRMLValues VRMLString
+hi def link VRMLString String
+hi def link VRMLSpecial Special
+hi def link VRMLComment Comment
+hi def link VRMLNodes Statement
+hi def link VRMLFields Type
+hi def link VRMLEvents Type
+hi def link VRMLfTypes LineNr
+" hi VRMLfTypes ctermfg=6 guifg=Brown
+hi def link VRMLInstances PreCondit
+hi def link VRMLRoutes PreCondit
+hi def link VRMLProtos PreProc
+hi def link VRMLRouteNode Identifier
+hi def link VRMLInstName Identifier
+hi def link VRMLTypes Identifier
+
+
+let b:current_syntax = "vrml"
+
+" vim: ts=8
diff --git a/runtime/syntax/vroom.vim b/runtime/syntax/vroom.vim
new file mode 100644
index 0000000..0509e30
--- /dev/null
+++ b/runtime/syntax/vroom.vim
@@ -0,0 +1,110 @@
+" Vim syntax file
+" Language: Vroom (vim testing and executable documentation)
+" Maintainer: David Barnett (https://github.com/google/vim-ft-vroom)
+" Last Change: 2014 Jul 23
+
+" quit when a syntax file was already loaded
+if exists('b:current_syntax')
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo-=C
+
+
+syn include @vroomVim syntax/vim.vim
+syn include @vroomShell syntax/sh.vim
+
+syntax region vroomAction
+ \ matchgroup=vroomOutput
+ \ start='\m^ ' end='\m$' keepend
+ \ contains=vroomControlBlock
+
+syntax region vroomAction
+ \ matchgroup=vroomOutput
+ \ start='\m^ & ' end='\m$' keepend
+ \ contains=vroomControlBlock
+
+syntax match vroomOutput '\m^ &$'
+
+syntax region vroomMessageBody
+ \ matchgroup=vroomMessage
+ \ start='\m^ \~ ' end='\m$' keepend
+ \ contains=vroomControlBlock
+
+syntax region vroomColoredAction
+ \ matchgroup=vroomInput
+ \ start='\m^ > ' end='\m$' keepend
+ \ contains=vimNotation,vroomControlBlock
+syntax region vroomAction
+ \ matchgroup=vroomInput
+ \ start='\m^ % ' end='\m$' keepend
+ \ contains=vimNotation,vroomControlBlock
+
+syntax region vroomAction
+ \ matchgroup=vroomContinuation
+ \ start='\m^ |' end='\m$' keepend
+
+syntax region vroomAction
+ \ start='\m^ \ze:' end='\m$' keepend
+ \ contains=@vroomVim,vroomControlBlock
+
+syntax region vroomAction
+ \ matchgroup=vroomDirective
+ \ start='\m^ @\i\+' end='\m$' keepend
+ \ contains=vroomControlBlock
+
+syntax region vroomSystemAction
+ \ matchgroup=vroomSystem
+ \ start='\m^ ! ' end='\m$' keepend
+ \ contains=@vroomShell,vroomControlBlock
+
+syntax region vroomHijackAction
+ \ matchgroup=vroomHijack
+ \ start='\m^ \$ ' end='\m$' keepend
+ \ contains=vroomControlBlock
+
+syntax match vroomControlBlock contains=vroomControlEscape,@vroomControls
+ \ '\v \([^&()][^()]*\)$'
+
+syntax match vroomControlEscape '\m&' contained
+
+syntax cluster vroomControls
+ \ contains=vroomDelay,vroomMode,vroomBuffer,vroomRange
+ \,vroomChannel,vroomBind,vroomStrictness
+syntax match vroomRange '\v\.(,\+?(\d+|\$)?)?' contained
+syntax match vroomRange '\v\d*,\+?(\d+|\$)?' contained
+syntax match vroomBuffer '\v\d+,@!' contained
+syntax match vroomDelay '\v\d+(\.\d+)?s' contained
+syntax match vroomMode '\v<%(regex|glob|verbatim)' contained
+syntax match vroomChannel '\v<%(stderr|stdout|command|status)>' contained
+syntax match vroomBind '\v<bind>' contained
+syntax match vroomStrictness '\v\<%(STRICT|RELAXED|GUESS-ERRORS)\>' contained
+
+highlight default link vroomInput Identifier
+highlight default link vroomDirective vroomInput
+highlight default link vroomControlBlock vroomInput
+highlight default link vroomSystem vroomInput
+highlight default link vroomOutput Statement
+highlight default link vroomContinuation Constant
+highlight default link vroomHijack Special
+highlight default link vroomColoredAction Statement
+highlight default link vroomSystemAction vroomSystem
+highlight default link vroomHijackAction vroomHijack
+highlight default link vroomMessage vroomOutput
+highlight default link vroomMessageBody Constant
+
+highlight default link vroomControlEscape Special
+highlight default link vroomBuffer vroomInput
+highlight default link vroomRange Include
+highlight default link vroomMode Constant
+highlight default link vroomDelay Type
+highlight default link vroomStrictness vroomMode
+highlight default link vroomChannel vroomMode
+highlight default link vroomBind vroomMode
+
+let b:current_syntax = 'vroom'
+
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/vsejcl.vim b/runtime/syntax/vsejcl.vim
new file mode 100644
index 0000000..f329836
--- /dev/null
+++ b/runtime/syntax/vsejcl.vim
@@ -0,0 +1,36 @@
+" Vim syntax file
+" Language: JCL job control language - DOS/VSE
+" Maintainer: Davyd Ondrejko <david.ondrejko@safelite.com>
+" URL:
+" Last change: 2001 May 10
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" tags
+syn keyword vsejclKeyword DLBL EXEC JOB ASSGN EOJ
+syn keyword vsejclField JNM CLASS DISP USER SYSID JSEP SIZE
+syn keyword vsejclField VSAM
+syn region vsejclComment start="^/\*" end="$"
+syn region vsejclComment start="^[\* ]\{}$" end="$"
+syn region vsejclMisc start="^ " end="$" contains=Jparms
+syn match vsejclString /'.\{-}'/
+syn match vsejclParms /(.\{-})/ contained
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link vsejclComment Comment
+hi def link vsejclField Type
+hi def link vsejclKeyword Statement
+hi def link vsejclObject Constant
+hi def link vsejclString Constant
+hi def link vsejclMisc Special
+hi def link vsejclParms Constant
+
+
+let b:current_syntax = "vsejcl"
+
+" vim: ts=4
diff --git a/runtime/syntax/vue.vim b/runtime/syntax/vue.vim
new file mode 100644
index 0000000..bad0e26
--- /dev/null
+++ b/runtime/syntax/vue.vim
@@ -0,0 +1,14 @@
+" Vim syntax file
+" Language: Vue.js Single File Component
+" Maintainer: Ralph Giles <giles@thaumas.net>
+" URL: https://vuejs.org/v2/guide/single-file-components.html
+" Last Change: 2019 Jul 8
+
+" Quit if a syntax file was already loaded.
+if exists("b:current_syntax")
+ finish
+endif
+
+" We have a collection of html, css and javascript wrapped in
+" tags. The default HTML syntax highlight works well enough.
+runtime! syntax/html.vim
diff --git a/runtime/syntax/wast.vim b/runtime/syntax/wast.vim
new file mode 100644
index 0000000..245d5f6
--- /dev/null
+++ b/runtime/syntax/wast.vim
@@ -0,0 +1,84 @@
+" Vim syntax file
+" Language: WebAssembly
+" Maintainer: rhysd <lin90162@yahoo.co.jp>
+" Last Change: Jul 29, 2018
+" For bugs, patches and license go to https://github.com/rhysd/vim-wasm
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn cluster wastCluster contains=wastModule,wastInstWithType,wastInstGeneral,wastParamInst,wastControlInst,wastString,wastNamedVar,wastUnnamedVar,wastFloat,wastNumber,wastComment,wastList,wastType
+
+" Instructions
+" https://webassembly.github.io/spec/core/text/instructions.html
+" Note: memarg (align=,offset=) can be added to memory instructions
+syn match wastInstWithType "\%((\s*\)\@<=\<\%(i32\|i64\|f32\|f64\|memory\)\.[[:alnum:]_]\+\%(/\%(i32\|i64\|f32\|f64\)\)\=\>\%(\s\+\%(align\|offset\)=\)\=" contained display
+syn match wastInstGeneral "\%((\s*\)\@<=\<[[:alnum:]_]\+\>" contained display
+" https://webassembly.github.io/spec/core/text/instructions.html#control-instructions
+syn match wastControlInst "\%((\s*\)\@<=\<\%(block\|end\|loop\|if\|else\|unreachable\|nop\|br\|br_if\|br_table\|return\|call\|call_indirect\)\>" contained display
+" https://webassembly.github.io/spec/core/text/instructions.html#parametric-instructions
+syn match wastParamInst "\%((\s*\)\@<=\<\%(drop\|select\)\>" contained display
+
+" Identifiers
+" https://webassembly.github.io/spec/core/text/values.html#text-id
+syn match wastNamedVar "$\+[[:alnum:]!#$%&'∗./:=><?@\\^_`~+-]*" contained display
+syn match wastUnnamedVar "$\+\d\+[[:alnum:]!#$%&'∗./:=><?@\\^_`~+-]\@!" contained display
+
+" String literals
+" https://webassembly.github.io/spec/core/text/values.html#strings
+syn region wastString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained contains=wastStringSpecial
+syn match wastStringSpecial "\\\x\x\|\\[tnr'\\\"]\|\\u\x\+" contained containedin=wastString
+
+" Float literals
+" https://webassembly.github.io/spec/core/text/values.html#floating-point
+syn match wastFloat "\<-\=\d\%(_\=\d\)*\%(\.\d\%(_\=\d\)*\)\=\%([eE][-+]\=\d\%(_\=\d\)*\)\=" display contained
+syn match wastFloat "\<-\=0x\x\%(_\=\d\)*\%(\.\x\%(_\=\x\)*\)\=\%([pP][-+]\=\d\%(_\=\d\)*\)\=" display contained
+syn keyword wastFloat inf nan contained
+
+" Integer literals
+" https://webassembly.github.io/spec/core/text/values.html#integers
+syn match wastNumber "\<-\=\d\%(_\=\d\)*\>" display contained
+syn match wastNumber "\<-\=0x\x\%(_\=\x\)*\>" display contained
+
+" Comments
+" https://webassembly.github.io/spec/core/text/lexical.html#comments
+syn region wastComment start=";;" end="$" display
+syn region wastComment start="(;;\@!" end=";)"
+
+syn region wastList matchgroup=wastListDelimiter start="(;\@!" matchgroup=wastListDelimiter end=";\@<!)" contains=@wastCluster
+
+" Types
+" https://webassembly.github.io/spec/core/text/types.html
+syn keyword wastType i64 i32 f64 f32 param result anyfunc mut contained
+syn match wastType "\%((\_s*\)\@<=func\%(\_s*[()]\)\@=" display contained
+
+" Modules
+" https://webassembly.github.io/spec/core/text/modules.html
+syn keyword wastModule module type export import table memory global data elem contained
+syn match wastModule "\%((\_s*\)\@<=func\%(\_s\+\$\)\@=" display contained
+
+syn sync lines=100
+
+hi def link wastModule PreProc
+hi def link wastListDelimiter Delimiter
+hi def link wastInstWithType Operator
+hi def link wastInstGeneral Operator
+hi def link wastControlInst Statement
+hi def link wastParamInst Conditional
+hi def link wastString String
+hi def link wastStringSpecial Special
+hi def link wastNamedVar Identifier
+hi def link wastUnnamedVar PreProc
+hi def link wastFloat Float
+hi def link wastNumber Number
+hi def link wastComment Comment
+hi def link wastType Type
+
+let b:current_syntax = "wast"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/wdiff.vim b/runtime/syntax/wdiff.vim
new file mode 100644
index 0000000..d0afadf
--- /dev/null
+++ b/runtime/syntax/wdiff.vim
@@ -0,0 +1,29 @@
+" Vim syntax file
+" Language: wDiff (wordwise diff)
+" Maintainer: Gerfried Fuchs <alfie@ist.org>
+" Last Change: 25 Apr 2001
+" URL: http://alfie.ist.org/vim/syntax/wdiff.vim
+"
+" Comments are very welcome - but please make sure that you are commenting on
+" the latest version of this file.
+" SPAM is _NOT_ welcome - be ready to be reported!
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+syn region wdiffOld start=+\[-+ end=+-]+
+syn region wdiffNew start="{+" end="+}"
+
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link wdiffOld Special
+hi def link wdiffNew Identifier
+
+
+let b:current_syntax = "wdiff"
diff --git a/runtime/syntax/wdl.vim b/runtime/syntax/wdl.vim
new file mode 100644
index 0000000..3b8369e
--- /dev/null
+++ b/runtime/syntax/wdl.vim
@@ -0,0 +1,41 @@
+" Vim syntax file
+" Language: wdl
+" Maintainer: Matt Dunford (zenmatic@gmail.com)
+" URL: https://github.com/zenmatic/vim-syntax-wdl
+" Last Change: 2022 Nov 24
+
+" https://github.com/openwdl/wdl
+
+" quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+
+syn keyword wdlStatement alias task input command runtime input output workflow call scatter import as meta parameter_meta in version
+syn keyword wdlConditional if then else
+syn keyword wdlType struct Array String File Int Float Boolean Map Pair Object
+
+syn keyword wdlFunctions stdout stderr read_lines read_tsv read_map read_object read_objects read_json read_int read_string read_float read_boolean write_lines write_tsv write_map write_object write_objects write_json size sub range transpose zip cross length flatten prefix select_first defined basename floor ceil round
+
+syn region wdlCommandSection start="<<<" end=">>>"
+
+syn region wdlString start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn region wdlString start=+'+ skip=+\\\\\|\\'+ end=+'+
+
+" Comments; their contents
+syn keyword wdlTodo contained TODO FIXME XXX BUG
+syn cluster wdlCommentGroup contains=wdlTodo
+syn region wdlComment start="#" end="$" contains=@wdlCommentGroup
+
+hi def link wdlStatement Statement
+hi def link wdlConditional Conditional
+hi def link wdlType Type
+hi def link wdlFunctions Function
+hi def link wdlString String
+hi def link wdlCommandSection String
+hi def link wdlComment Comment
+hi def link wdlTodo Todo
+
+let b:current_syntax = 'wdl'
diff --git a/runtime/syntax/web.vim b/runtime/syntax/web.vim
new file mode 100644
index 0000000..54eebda
--- /dev/null
+++ b/runtime/syntax/web.vim
@@ -0,0 +1,32 @@
+" Vim syntax file
+" Language: WEB
+" Maintainer: Andreas Scherer <andreas.scherer@pobox.com>
+" Last Change: April 30, 2001
+
+" Details of the WEB language can be found in the article by Donald E. Knuth,
+" "The WEB System of Structured Documentation", included as "webman.tex" in
+" the standard WEB distribution, available for anonymous ftp at
+" ftp://labrea.stanford.edu/pub/tex/web/.
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Although WEB is the ur-language for the "Literate Programming" paradigm,
+" we base this syntax file on the modern superset, CWEB. Note: This shortcut
+" may introduce some illegal constructs, e.g., CWEB's "@c" does _not_ start a
+" code section in WEB. Anyway, I'm not a WEB programmer.
+runtime! syntax/cweb.vim
+unlet b:current_syntax
+
+" Replace C/C++ syntax by Pascal syntax.
+syntax include @webIncludedC <sfile>:p:h/pascal.vim
+
+" Double-@ means single-@, anywhere in the WEB source (as in CWEB).
+" Don't misinterpret "@'" as the start of a Pascal string.
+syntax match webIgnoredStuff "@[@']"
+
+let b:current_syntax = "web"
+
+" vim: ts=8
diff --git a/runtime/syntax/webmacro.vim b/runtime/syntax/webmacro.vim
new file mode 100644
index 0000000..9597525
--- /dev/null
+++ b/runtime/syntax/webmacro.vim
@@ -0,0 +1,67 @@
+" WebMacro syntax file
+" Language: WebMacro
+" Maintainer: Claudio Fleiner <claudio@fleiner.com>
+" URL: http://www.fleiner.com/vim/syntax/webmacro.vim
+" Last Change: 2003 May 11
+
+" webmacro is a nice little language that you should
+" check out if you use java servlets.
+" webmacro: http://www.webmacro.org
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if !exists("main_syntax")
+ " quit when a syntax file was already loaded
+ if exists("b:current_syntax")
+ finish
+ endif
+ let main_syntax = 'webmacro'
+endif
+
+
+runtime! syntax/html.vim
+unlet b:current_syntax
+
+syn cluster htmlPreProc add=webmacroIf,webmacroUse,webmacroBraces,webmacroParse,webmacroInclude,webmacroSet,webmacroForeach,webmacroComment
+
+syn match webmacroVariable "\$[a-zA-Z0-9.()]*;\="
+syn match webmacroNumber "[-+]\=\d\+[lL]\=" contained
+syn keyword webmacroBoolean true false contained
+syn match webmacroSpecial "\\." contained
+syn region webmacroString contained start=+"+ end=+"+ contains=webmacroSpecial,webmacroVariable
+syn region webmacroString contained start=+'+ end=+'+ contains=webmacroSpecial,webmacroVariable
+syn region webmacroList contained matchgroup=Structure start="\[" matchgroup=Structure end="\]" contains=webmacroString,webmacroVariable,webmacroNumber,webmacroBoolean,webmacroList
+
+syn region webmacroIf start="#if" start="#else" end="{"me=e-1 contains=webmacroVariable,webmacroNumber,webmacroString,webmacroBoolean,webmacroList nextgroup=webmacroBraces
+syn region webmacroForeach start="#foreach" end="{"me=e-1 contains=webmacroVariable,webmacroNumber,webmacroString,webmacroBoolean,webmacroList nextgroup=webmacroBraces
+syn match webmacroSet "#set .*$" contains=webmacroVariable,webmacroNumber,webmacroBoolean,webmacroString,webmacroList
+syn match webmacroInclude "#include .*$" contains=webmacroVariable,webmacroNumber,webmacroBoolean,webmacroString,webmacroList
+syn match webmacroParse "#parse .*$" contains=webmacroVariable,webmacroNumber,webmacroBoolean,webmacroString,webmacroList
+syn region webmacroUse matchgroup=PreProc start="#use .*" matchgroup=PreProc end="^-.*" contains=webmacroHash,@HtmlTop
+syn region webmacroBraces matchgroup=Structure start="{" matchgroup=Structure end="}" contained transparent
+syn match webmacroBracesError "[{}]"
+syn match webmacroComment "##.*$"
+syn match webmacroHash "[#{}\$]" contained
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link webmacroComment CommentTitle
+hi def link webmacroVariable PreProc
+hi def link webmacroIf webmacroStatement
+hi def link webmacroForeach webmacroStatement
+hi def link webmacroSet webmacroStatement
+hi def link webmacroInclude webmacroStatement
+hi def link webmacroParse webmacroStatement
+hi def link webmacroStatement Function
+hi def link webmacroNumber Number
+hi def link webmacroBoolean Boolean
+hi def link webmacroSpecial Special
+hi def link webmacroString String
+hi def link webmacroBracesError Error
+
+let b:current_syntax = "webmacro"
+
+if main_syntax == 'webmacro'
+ unlet main_syntax
+endif
diff --git a/runtime/syntax/wget.vim b/runtime/syntax/wget.vim
new file mode 100644
index 0000000..8178d02
--- /dev/null
+++ b/runtime/syntax/wget.vim
@@ -0,0 +1,243 @@
+" Vim syntax file
+" Language: Wget configuration file (/etc/wgetrc ~/.wgetrc)
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2022 Apr 28
+
+" GNU Wget 1.21 built on linux-gnu.
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match wgetComment "#.*$" contains=wgetTodo contained
+
+syn keyword wgetTodo TODO NOTE FIXME XXX contained
+
+syn region wgetString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained oneline
+syn region wgetString start=+'+ skip=+\\\\\|\\'+ end=+'+ contained oneline
+
+syn case ignore
+
+syn keyword wgetBoolean on off yes no contained
+syn keyword wgetNumber inf contained
+
+syn match wgetNumber "\<\d\+>" contained
+syn match wgetQuota "\<\d\+[kmgt]\>" contained
+syn match wgetTime "\<\d\+[smhdw]\>" contained
+
+"{{{ Commands
+let s:commands =<< trim EOL
+ accept
+ accept_regex
+ add_host_dir
+ adjust_extension
+ always_rest
+ ask_password
+ auth_no_challenge
+ background
+ backup_converted
+ backups
+ base
+ bind_address
+ bind_dns_address
+ body_data
+ body_file
+ ca_certificate
+ ca_directory
+ cache
+ certificate
+ certificate_type
+ check_certificate
+ choose_config
+ ciphers
+ compression
+ connect_timeout
+ content_disposition
+ content_on_error
+ continue
+ convert_file_only
+ convert_links
+ cookies
+ crl_file
+ cut_dirs
+ debug
+ default_page
+ delete_after
+ dns_cache
+ dns_servers
+ dns_timeout
+ dir_prefix
+ dir_struct
+ domains
+ dot_bytes
+ dots_in_line
+ dot_spacing
+ dot_style
+ egd_file
+ exclude_directories
+ exclude_domains
+ follow_ftp
+ follow_tags
+ force_html
+ ftp_passwd
+ ftp_password
+ ftp_user
+ ftp_proxy
+ ftps_clear_data_connection
+ ftps_fallback_to_ftp
+ ftps_implicit
+ ftps_resume_ssl
+ hsts
+ hsts_file
+ ftp_stmlf
+ glob
+ header
+ html_extension
+ htmlify
+ http_keep_alive
+ http_passwd
+ http_password
+ http_proxy
+ https_proxy
+ https_only
+ http_user
+ if_modified_since
+ ignore_case
+ ignore_length
+ ignore_tags
+ include_directories
+ inet4_only
+ inet6_only
+ input
+ input_meta_link
+ iri
+ keep_bad_hash
+ keep_session_cookies
+ kill_longer
+ limit_rate
+ load_cookies
+ locale
+ local_encoding
+ logfile
+ login
+ max_redirect
+ metalink_index
+ metalink_over_http
+ method
+ mirror
+ netrc
+ no_clobber
+ no_config
+ no_parent
+ no_proxy
+ numtries
+ output_document
+ page_requisites
+ passive_ftp
+ passwd
+ password
+ pinned_pubkey
+ post_data
+ post_file
+ prefer_family
+ preferred_location
+ preserve_permissions
+ private_key
+ private_key_type
+ progress
+ protocol_directories
+ proxy_passwd
+ proxy_password
+ proxy_user
+ quiet
+ quota
+ random_file
+ random_wait
+ read_timeout
+ rec_level
+ recursive
+ referer
+ regex_type
+ reject
+ rejected_log
+ reject_regex
+ relative_only
+ remote_encoding
+ remove_listing
+ report_speed
+ restrict_file_names
+ retr_symlinks
+ retry_connrefused
+ retry_on_host_error
+ retry_on_http_error
+ robots
+ save_cookies
+ save_headers
+ secure_protocol
+ server_response
+ show_all_dns_entries
+ show_progress
+ simple_host_check
+ span_hosts
+ spider
+ start_pos
+ strict_comments
+ sslcertfile
+ sslcertkey
+ timeout
+ timestamping
+ use_server_timestamps
+ tries
+ trust_server_names
+ unlink
+ use_askpass
+ user
+ use_proxy
+ user_agent
+ verbose
+ wait
+ wait_retry
+ warc_cdx
+ warc_cdx_dedup
+ warc_compression
+ warc_digests
+ warc_file
+ warc_header
+ warc_keep_log
+ warc_max_size
+ warc_temp_dir
+ wdebug
+ xattr
+EOL
+"}}}
+
+call map(s:commands, "substitute(v:val, '_', '[-_]\\\\=', 'g')")
+
+for cmd in s:commands
+ exe 'syn match wgetCommand "\<' . cmd . '\>" nextgroup=wgetAssignmentOperator skipwhite contained'
+endfor
+
+syn case match
+
+syn match wgetStart "^" nextgroup=wgetCommand,wgetComment skipwhite
+syn match wgetAssignmentOperator "=" nextgroup=wgetString,wgetBoolean,wgetNumber,wgetQuota,wgetTime skipwhite contained
+
+hi def link wgetAssignmentOperator Special
+hi def link wgetBoolean Boolean
+hi def link wgetCommand Identifier
+hi def link wgetComment Comment
+hi def link wgetNumber Number
+hi def link wgetQuota Number
+hi def link wgetString String
+hi def link wgetTime Number
+hi def link wgetTodo Todo
+
+let b:current_syntax = "wget"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 fdm=marker:
diff --git a/runtime/syntax/wget2.vim b/runtime/syntax/wget2.vim
new file mode 100644
index 0000000..a63c336
--- /dev/null
+++ b/runtime/syntax/wget2.vim
@@ -0,0 +1,250 @@
+" Vim syntax file
+" Language: Wget2 configuration file (/etc/wget2rc ~/.wget2rc)
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2022 Apr 28
+
+" GNU Wget2 2.0.0 - multithreaded metalink/file/website downloader
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match wgetComment "#.*$" contains=wgetTodo contained
+
+syn keyword wgetTodo TODO NOTE FIXME XXX contained
+
+syn region wgetString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained oneline
+syn region wgetString start=+'+ skip=+\\\\\|\\'+ end=+'+ contained oneline
+
+syn case ignore
+
+syn keyword wgetBoolean on off yes no y n contained
+syn keyword wgetNumber infinity inf contained
+
+syn match wgetNumber "\<\d\+>" contained
+syn match wgetQuota "\<\d\+[kmgt]\>" contained
+syn match wgetTime "\<\d\+[smhd]\>" contained
+
+"{{{ Commands
+let s:commands =<< trim EOL
+ accept
+ accept-regex
+ adjust-extension
+ append-output
+ ask-password
+ auth-no-challenge
+ background
+ backup-converted
+ backups
+ base
+ bind-address
+ bind-interface
+ body-data
+ body-file
+ ca-certificate
+ ca-directory
+ cache
+ certificate
+ certificate-type
+ check-certificate
+ check-hostname
+ chunk-size
+ clobber
+ compression
+ config
+ connect-timeout
+ content-disposition
+ content-on-error
+ continue
+ convert-file-only
+ convert-links
+ cookie-suffixes
+ cookies
+ crl-file
+ cut-dirs
+ cut-file-get-vars
+ cut-url-get-vars
+ debug
+ default-http-port
+ default-https-port
+ default-page
+ delete-after
+ directories
+ directory-prefix
+ dns-cache
+ dns-cache-preload
+ dns-timeout
+ domains
+ download-attr
+ egd-file
+ exclude-directories
+ exclude-domains
+ execute
+ filter-mime-type
+ filter-urls
+ follow-tags
+ force-atom
+ force-css
+ force-directories
+ force-html
+ force-metalink
+ force-progress
+ force-rss
+ force-sitemap
+ fsync-policy
+ gnupg-homedir
+ header
+ help
+ host-directories
+ hpkp
+ hpkp-file
+ hsts
+ hsts-file
+ hsts-preload
+ hsts-preload-file
+ html-extension
+ http-keep-alive
+ http-password
+ http-proxy
+ http-proxy-password
+ http-proxy-user
+ http-user
+ http2
+ http2-only
+ http2-request-window
+ https-enforce
+ https-only
+ https-proxy
+ hyperlink
+ if-modified-since
+ ignore-case
+ ignore-length
+ ignore-tags
+ include-directories
+ inet4-only
+ inet6-only
+ input-encoding
+ input-file
+ keep-extension
+ keep-session-cookies
+ level
+ limit-rate
+ list-plugins
+ load-cookies
+ local-db
+ local-encoding
+ local-plugin
+ max-redirect
+ max-threads
+ metalink
+ method
+ mirror
+ netrc
+ netrc-file
+ ocsp
+ ocsp-date
+ ocsp-file
+ ocsp-nonce
+ ocsp-server
+ ocsp-stapling
+ output-document
+ output-file
+ page-requisites
+ parent
+ password
+ plugin
+ plugin-dirs
+ plugin-help
+ plugin-opt
+ post-data
+ post-file
+ prefer-family
+ private-key
+ private-key-type
+ progress
+ protocol-directories
+ proxy
+ quiet
+ quota
+ random-file
+ random-wait
+ read-timeout
+ recursive
+ referer
+ regex-type
+ reject
+ reject-regex
+ remote-encoding
+ report-speed
+ restrict-file-names
+ retry-connrefused
+ retry-on-http-error
+ robots
+ save-content-on
+ save-cookies
+ save-headers
+ secure-protocol
+ server-response
+ signature-extensions
+ span-hosts
+ spider
+ start-pos
+ stats-dns
+ stats-ocsp
+ stats-server
+ stats-site
+ stats-tls
+ strict-comments
+ tcp-fastopen
+ timeout
+ timestamping
+ tls-false-start
+ tls-resume
+ tls-session-file
+ tries
+ trust-server-names
+ unlink
+ use-askpass
+ use-server-timestamps
+ user
+ user-agent
+ verbose
+ verify-save-failed
+ verify-sig
+ version
+ wait
+ waitretry
+ xattr
+EOL
+"}}}
+
+call map(s:commands, "substitute(v:val, '_', '[-_]\\\\=', 'g')")
+
+for cmd in s:commands
+ exe 'syn match wgetCommand "\<' . cmd . '\>" nextgroup=wgetAssignmentOperator skipwhite contained'
+endfor
+
+syn case match
+
+syn match wgetStart "^" nextgroup=wgetCommand,wgetComment skipwhite
+syn match wgetAssignmentOperator "=" nextgroup=wgetString,wgetBoolean,wgetNumber,wgetQuota,wgetTime skipwhite contained
+
+hi def link wgetAssignmentOperator Special
+hi def link wgetBoolean Boolean
+hi def link wgetCommand Identifier
+hi def link wgetComment Comment
+hi def link wgetNumber Number
+hi def link wgetQuota Number
+hi def link wgetString String
+hi def link wgetTime Number
+hi def link wgetTodo Todo
+
+let b:current_syntax = "wget"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 fdm=marker:
diff --git a/runtime/syntax/whitespace.vim b/runtime/syntax/whitespace.vim
new file mode 100644
index 0000000..4d2e32e
--- /dev/null
+++ b/runtime/syntax/whitespace.vim
@@ -0,0 +1,13 @@
+" Simplistic way to make spaces and Tabs visible
+
+" This can be added to an already active syntax.
+
+syn match Space " "
+syn match Tab "\t"
+if &background == "dark"
+ hi def Space ctermbg=darkred guibg=#500000
+ hi def Tab ctermbg=darkgreen guibg=#003000
+else
+ hi def Space ctermbg=lightred guibg=#ffd0d0
+ hi def Tab ctermbg=lightgreen guibg=#d0ffd0
+endif
diff --git a/runtime/syntax/winbatch.vim b/runtime/syntax/winbatch.vim
new file mode 100644
index 0000000..15ea0fc
--- /dev/null
+++ b/runtime/syntax/winbatch.vim
@@ -0,0 +1,174 @@
+" Vim syntax file
+" Language: WinBatch/Webbatch (*.wbt, *.web)
+" Maintainer: dominique@mggen.com
+" URL: http://www.mggen.com/vim/syntax/winbatch.zip
+" Last change: 2001 May 10
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+syn keyword winbatchCtl if then else endif break end return exit next
+syn keyword winbatchCtl while for gosub goto switch select to case
+syn keyword winbatchCtl endselect endwhile endselect endswitch
+
+" String
+syn region winbatchVar start=+%+ end=+%+
+" %var% in strings
+syn region winbatchString start=+"+ end=+"+ contains=winbatchVar
+
+syn match winbatchComment ";.*$"
+syn match winbatchLabel "^\ *:[0-9a-zA-Z_\-]\+\>"
+
+" constant (bezgin by @)
+syn match winbatchConstant "@[0_9a-zA-Z_\-]\+"
+
+" number
+syn match winbatchNumber "\<[0-9]\+\(u\=l\=\|lu\|f\)\>"
+
+syn keyword winbatchImplicit aboveicons acc_attrib acc_chng_nt acc_control acc_create
+syn keyword winbatchImplicit acc_delete acc_full_95 acc_full_nt acc_list acc_pfull_nt
+syn keyword winbatchImplicit acc_pmang_nt acc_print_nt acc_read acc_read_95 acc_read_nt
+syn keyword winbatchImplicit acc_write amc arrange ascending attr_a attr_a attr_ci attr_ci
+syn keyword winbatchImplicit attr_dc attr_dc attr_di attr_di attr_dm attr_dm attr_h attr_h
+syn keyword winbatchImplicit attr_ic attr_ic attr_p attr_p attr_ri attr_ri attr_ro attr_ro
+syn keyword winbatchImplicit attr_sh attr_sh attr_sy attr_sy attr_t attr_t attr_x attr_x
+syn keyword winbatchImplicit avogadro backscan boltzmann cancel capslock check columns
+syn keyword winbatchImplicit commonformat cr crlf ctrl default default deg2rad descending
+syn keyword winbatchImplicit disable drive electric enable eulers false faraday float8
+syn keyword winbatchImplicit fwdscan gftsec globalgroup gmtsec goldenratio gravitation hidden
+syn keyword winbatchImplicit icon lbutton lclick ldblclick lf lightmps lightmtps localgroup
+syn keyword winbatchImplicit magfield major mbokcancel mbutton mbyesno mclick mdblclick minor
+syn keyword winbatchImplicit msformat multiple ncsaformat no none none noresize normal
+syn keyword winbatchImplicit notify nowait numlock off on open parsec parseonly pi
+syn keyword winbatchImplicit planckergs planckjoules printer rad2deg rbutton rclick rdblclick
+syn keyword winbatchImplicit regclasses regcurrent regmachine regroot regusers rows save
+syn keyword winbatchImplicit scrolllock server shift single sorted stack string tab tile
+syn keyword winbatchImplicit true uncheck unsorted wait wholesection word1 word2 word4 yes
+syn keyword winbatchImplicit zoomed about abs acos addextender appexist appwaitclose asin
+syn keyword winbatchImplicit askfilename askfiletext askitemlist askline askpassword askyesno
+syn keyword winbatchImplicit atan average beep binaryalloc binarycopy binaryeodget binaryeodset
+syn keyword winbatchImplicit binaryfree binaryhashrec binaryincr binaryincr2 binaryincr4
+syn keyword winbatchImplicit binaryincrflt binaryindex binaryindexnc binaryoletype binarypeek
+syn keyword winbatchImplicit binarypeek2 binarypeek4 binarypeekflt binarypeekstr binarypoke
+syn keyword winbatchImplicit binarypoke2 binarypoke4 binarypokeflt binarypokestr binaryread
+syn keyword winbatchImplicit binarysort binarystrcnt binarywrite boxbuttondraw boxbuttonkill
+syn keyword winbatchImplicit boxbuttonstat boxbuttonwait boxcaption boxcolor
+syn keyword winbatchImplicit boxdataclear boxdatatag
+syn keyword winbatchImplicit boxdestroy boxdrawcircle boxdrawline boxdrawrect boxdrawtext
+syn keyword winbatchImplicit boxesup boxmapmode boxnew boxopen boxpen boxshut boxtext boxtextcolor
+syn keyword winbatchImplicit boxtextfont boxtitle boxupdates break buttonnames by call
+syn keyword winbatchImplicit callext ceiling char2num clipappend clipget clipput
+syn keyword winbatchImplicit continue cos cosh datetime
+syn keyword winbatchImplicit ddeexecute ddeinitiate ddepoke dderequest ddeterminate
+syn keyword winbatchImplicit ddetimeout debug debugdata decimals delay dialog
+syn keyword winbatchImplicit dialogbox dirattrget dirattrset dirchange direxist
+syn keyword winbatchImplicit dirget dirhome diritemize dirmake dirremove dirrename
+syn keyword winbatchImplicit dirwindows diskexist diskfree diskinfo diskscan disksize
+syn keyword winbatchImplicit diskvolinfo display dllcall dllfree dllhinst dllhwnd dllload
+syn keyword winbatchImplicit dosboxcursorx dosboxcursory dosboxgetall dosboxgetdata
+syn keyword winbatchImplicit dosboxheight dosboxscrmode dosboxversion dosboxwidth dosversion
+syn keyword winbatchImplicit drop edosgetinfo edosgetvar edoslistvars edospathadd edospathchk
+syn keyword winbatchImplicit edospathdel edossetvar
+syn keyword winbatchImplicit endsession envgetinfo envgetvar environment
+syn keyword winbatchImplicit environset envitemize envlistvars envpathadd envpathchk
+syn keyword winbatchImplicit envpathdel envsetvar errormode exclusive execute exetypeinfo
+syn keyword winbatchImplicit exp fabs fileappend fileattrget fileattrset fileclose
+syn keyword winbatchImplicit filecompare filecopy filedelete fileexist fileextension filefullname
+syn keyword winbatchImplicit fileitemize filelocate filemapname filemove filenameeval1
+syn keyword winbatchImplicit filenameeval2 filenamelong filenameshort fileopen filepath
+syn keyword winbatchImplicit fileread filerename fileroot filesize filetimecode filetimeget
+syn keyword winbatchImplicit filetimeset filetimetouch fileverinfo filewrite fileymdhms
+syn keyword winbatchImplicit findwindow floor getexacttime gettickcount
+syn keyword winbatchImplicit iconarrange iconreplace ignoreinput inidelete inideletepvt
+syn keyword winbatchImplicit iniitemize iniitemizepvt iniread inireadpvt iniwrite iniwritepvt
+syn keyword winbatchImplicit installfile int intcontrol isdefined isfloat isint iskeydown
+syn keyword winbatchImplicit islicensed isnumber itemcount itemextract iteminsert itemlocate
+syn keyword winbatchImplicit itemremove itemselect itemsort keytoggleget keytoggleset
+syn keyword winbatchImplicit lasterror log10 logdisk loge max message min mod mouseclick
+syn keyword winbatchImplicit mouseclickbtn mousedrag mouseinfo mousemove msgtextget n3attach
+syn keyword winbatchImplicit n3captureend n3captureprt n3chgpassword n3detach n3dirattrget
+syn keyword winbatchImplicit n3dirattrset n3drivepath n3drivepath2 n3drivestatus n3fileattrget
+syn keyword winbatchImplicit n3fileattrset n3getloginid n3getmapped n3getnetaddr n3getuser
+syn keyword winbatchImplicit n3getuserid n3logout n3map n3mapdelete n3mapdir n3maproot n3memberdel
+syn keyword winbatchImplicit n3memberget n3memberset n3msgsend n3msgsendall n3serverinfo
+syn keyword winbatchImplicit n3serverlist n3setsrchdrv n3usergroups n3version n4attach
+syn keyword winbatchImplicit n4captureend n4captureprt n4chgpassword n4detach n4dirattrget
+syn keyword winbatchImplicit n4dirattrset n4drivepath n4drivestatus n4fileattrget n4fileattrset
+syn keyword winbatchImplicit n4getloginid n4getmapped n4getnetaddr n4getuser n4getuserid
+syn keyword winbatchImplicit n4login n4logout n4map n4mapdelete n4mapdir n4maproot n4memberdel
+syn keyword winbatchImplicit n4memberget n4memberset n4msgsend n4msgsendall n4serverinfo
+syn keyword winbatchImplicit n4serverlist n4setsrchdrv n4usergroups n4version netadddrive
+syn keyword winbatchImplicit netaddprinter netcancelcon netdirdialog netgetcon netgetuser
+syn keyword winbatchImplicit netinfo netresources netversion num2char objectclose
+syn keyword winbatchImplicit objectopen parsedata pause playmedia playmidi playwaveform
+syn keyword winbatchImplicit print random regapp regclosekey regconnect regcreatekey
+syn keyword winbatchImplicit regdeletekey regdelvalue regentrytype regloadhive regopenkey
+syn keyword winbatchImplicit regquerybin regquerydword regqueryex regqueryexpsz regqueryitem
+syn keyword winbatchImplicit regquerykey regquerymulsz regqueryvalue regsetbin
+syn keyword winbatchImplicit regsetdword regsetex regsetexpsz regsetmulsz regsetvalue
+syn keyword winbatchImplicit regunloadhive reload reload rtstatus run runenviron
+syn keyword winbatchImplicit runexit runhide runhidewait runicon runiconwait runshell runwait
+syn keyword winbatchImplicit runzoom runzoomwait sendkey sendkeyschild sendkeysto
+syn keyword winbatchImplicit sendmenusto shellexecute shortcutedit shortcutextra shortcutinfo
+syn keyword winbatchImplicit shortcutmake sin sinh snapshot sounds sqrt
+syn keyword winbatchImplicit srchfree srchinit srchnext strcat strcharcount strcmp
+syn keyword winbatchImplicit strfill strfix strfixchars stricmp strindex strlen
+syn keyword winbatchImplicit strlower strreplace strscan strsub strtrim strupper
+syn keyword winbatchImplicit tan tanh tcpaddr2host tcpftpchdir tcpftpclose tcpftpget
+syn keyword winbatchImplicit tcpftplist tcpftpmode tcpftpopen tcpftpput tcphost2addr tcphttpget
+syn keyword winbatchImplicit tcphttppost tcpparmget tcpparmset tcpping tcpsmtp terminate
+syn keyword winbatchImplicit textbox textboxsort textoutbufdel textoutbuffer textoutdebug
+syn keyword winbatchImplicit textoutfree textoutinfo textoutreset textouttrack textouttrackb
+syn keyword winbatchImplicit textouttrackp textoutwait textselect timeadd timedate
+syn keyword winbatchImplicit timedelay timediffdays timediffsecs timejulianday timejultoymd
+syn keyword winbatchImplicit timesubtract timewait timeymdhms version versiondll
+syn keyword winbatchImplicit w3addcon w3cancelcon w3dirbrowse w3getcaps w3getcon w3netdialog
+syn keyword winbatchImplicit w3netgetuser w3prtbrowse w3version w95accessadd w95accessdel
+syn keyword winbatchImplicit w95adddrive w95addprinter w95cancelcon w95dirdialog w95getcon
+syn keyword winbatchImplicit w95getuser w95resources w95shareadd w95sharedel w95shareset
+syn keyword winbatchImplicit w95version waitforkey wallpaper webbaseconv webcloselog
+syn keyword winbatchImplicit webcmddata webcondata webcounter webdatdata webdumperror webhashcode
+syn keyword winbatchImplicit webislocal weblogline webopenlog webout weboutfile webparamdata
+syn keyword winbatchImplicit webparamnames websettimeout webverifycard winactivate
+syn keyword winbatchImplicit winactivchild winarrange winclose winclosenot winconfig winexename
+syn keyword winbatchImplicit winexist winparset winparget winexistchild wingetactive
+syn keyword winbatchImplicit winhelp winhide winiconize winidget winisdos winitemchild
+syn keyword winbatchImplicit winitemize winitemnameid winmetrics winname winparmget
+syn keyword winbatchImplicit winparmset winplace winplaceget winplaceset
+syn keyword winbatchImplicit winposition winresources winshow winstate winsysinfo
+syn keyword winbatchImplicit wintitle winversion winwaitchild winwaitclose winwaitexist
+syn keyword winbatchImplicit winzoom wnaddcon wncancelcon wncmptrinfo wndialog
+syn keyword winbatchImplicit wndlgbrowse wndlgcon wndlgcon2 wndlgcon3
+syn keyword winbatchImplicit wndlgcon4 wndlgdiscon wndlgnoshare wndlgshare wngetcaps
+syn keyword winbatchImplicit wngetcon wngetuser wnnetnames wnrestore wnservers wnsharecnt
+syn keyword winbatchImplicit wnsharename wnsharepath wnshares wntaccessadd wntaccessdel
+syn keyword winbatchImplicit wntaccessget wntadddrive wntaddprinter wntcancelcon wntdirdialog
+syn keyword winbatchImplicit wntgetcon wntgetuser wntlistgroups wntmemberdel wntmemberget
+syn keyword winbatchImplicit wntmembergrps wntmemberlist wntmemberset wntresources wntshareadd
+syn keyword winbatchImplicit wntsharedel wntshareset wntversion wnversion wnwrkgroups wwenvunload
+syn keyword winbatchImplicit xbaseconvert xcursorset xdisklabelget xdriveready xextenderinfo
+syn keyword winbatchImplicit xgetchildhwnd xgetelapsed xhex xmemcompact xmessagebox
+syn keyword winbatchImplicit xsendmessage xverifyccard yield
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link winbatchLabel PreProc
+hi def link winbatchCtl Operator
+hi def link winbatchStatement Statement
+hi def link winbatchTodo Todo
+hi def link winbatchString String
+hi def link winbatchVar Type
+hi def link winbatchComment Comment
+hi def link winbatchImplicit Special
+hi def link winbatchNumber Number
+hi def link winbatchConstant StorageClass
+
+
+let b:current_syntax = "winbatch"
+
+" vim: ts=8
diff --git a/runtime/syntax/wml.vim b/runtime/syntax/wml.vim
new file mode 100644
index 0000000..73bf822
--- /dev/null
+++ b/runtime/syntax/wml.vim
@@ -0,0 +1,150 @@
+" Vim syntax file
+" Language: WML - Website MetaLanguage
+" Maintainer: Gerfried Fuchs <alfie@ist.org>
+" Filenames: *.wml
+" Last Change: 07 Feb 2002
+" URL: http://alfie.ist.org/software/vim/syntax/wml.vim
+"
+" Original Version: Craig Small <csmall@eye-net.com.au>
+
+" Comments are very welcome - but please make sure that you are commenting on
+" the latest version of this file.
+" SPAM is _NOT_ welcome - be ready to be reported!
+
+" If you are looking for the "Wireless Markup Language" syntax file,
+" please take a look at the wap.vim file done by Ralf Schandl, soon in a
+" vim-package around your corner :)
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+" A lot of the web stuff looks like HTML so we load that first
+runtime! syntax/html.vim
+unlet b:current_syntax
+
+if !exists("main_syntax")
+ let main_syntax = 'wml'
+endif
+
+" special character
+syn match wmlNextLine "\\$"
+
+" Redfine htmlTag
+syn clear htmlTag
+syn region htmlTag start=+<[^/<]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition
+
+"
+" Add in extra Arguments used by wml
+syn keyword htmlTagName contained gfont imgbg imgdot lowsrc
+syn keyword htmlTagName contained navbar:define navbar:header
+syn keyword htmlTagName contained navbar:footer navbar:prolog
+syn keyword htmlTagName contained navbar:epilog navbar:button
+syn keyword htmlTagName contained navbar:filter navbar:debug
+syn keyword htmlTagName contained navbar:render
+syn keyword htmlTagName contained preload rollover
+syn keyword htmlTagName contained space hspace vspace over
+syn keyword htmlTagName contained ps ds pi ein big sc spaced headline
+syn keyword htmlTagName contained ue subheadline zwue verbcode
+syn keyword htmlTagName contained isolatin pod sdf text url verbatim
+syn keyword htmlTagName contained xtable
+syn keyword htmlTagName contained csmap fsview import box
+syn keyword htmlTagName contained case:upper case:lower
+syn keyword htmlTagName contained grid cell info lang: logo page
+syn keyword htmlTagName contained set-var restore
+syn keyword htmlTagName contained array:push array:show set-var ifdef
+syn keyword htmlTagName contained say m4 symbol dump enter divert
+syn keyword htmlTagName contained toc
+syn keyword htmlTagName contained wml card do refresh oneevent catch spawn
+
+"
+" The wml arguments
+syn keyword htmlArg contained adjust background base bdcolor bdspace
+syn keyword htmlArg contained bdwidth complete copyright created crop
+syn keyword htmlArg contained direction description domainname eperlfilter
+syn keyword htmlArg contained file hint imgbase imgstar interchar interline
+syn keyword htmlArg contained keephr keepindex keywords layout spacing
+syn keyword htmlArg contained padding nonetscape noscale notag notypo
+syn keyword htmlArg contained onload oversrc pos select slices style
+syn keyword htmlArg contained subselected txtcol_select txtcol_normal
+syn keyword htmlArg contained txtonly via
+syn keyword htmlArg contained mode columns localsrc ordered
+
+
+" Lines starting with an # are usually comments
+syn match wmlComment "^\s*#.*"
+" The different exceptions to comments
+syn match wmlSharpBang "^#!.*"
+syn match wmlUsed contained "\s\s*[A-Za-z:_-]*"
+syn match wmlUse "^\s*#\s*use\s\+" contains=wmlUsed
+syn match wmlInclude "^\s*#\s*include.+"
+
+syn region wmlBody contained start=+<<+ end=+>>+
+
+syn match wmlLocationId contained "[A-Za-z]\+"
+syn region wmlLocation start=+<<+ end=+>>+ contains=wmlLocationId
+"syn region wmlLocation start=+{#+ end=+#}+ contains=wmlLocationId
+"syn region wmlLocationed contained start=+<<+ end=+>>+ contains=wmlLocationId
+
+syn match wmlDivert "\.\.[a-zA-Z_]\+>>"
+syn match wmlDivertEnd "<<\.\."
+" new version
+"syn match wmlDivert "{#[a-zA-Z_]\+#:"
+"syn match wmlDivertEnd ":##}"
+
+syn match wmlDefineName contained "\s\+[A-Za-z-]\+"
+syn region htmlTagName start="\<\(define-tag\|define-region\)" end="\>" contains=wmlDefineName
+
+" The perl include stuff
+if main_syntax != 'perl'
+ " Perl script
+ syn include @wmlPerlScript syntax/perl.vim
+ unlet b:current_syntax
+
+ syn region perlScript start=+<perl>+ keepend end=+</perl>+ contains=@wmlPerlScript,wmlPerlTag
+" eperl between '<:' and ':>' -- Alfie [1999-12-26]
+ syn region perlScript start=+<:+ keepend end=+:>+ contains=@wmlPerlScript,wmlPerlTag
+ syn match wmlPerlTag contained "</*perl>" contains=wmlPerlTagN
+ syn keyword wmlPerlTagN contained perl
+
+ hi link wmlPerlTag htmlTag
+ hi link wmlPerlTagN htmlStatement
+endif
+
+" verbatim tags -- don't highlight anything in between -- Alfie [2002-02-07]
+syn region wmlVerbatimText start=+<verbatim>+ keepend end=+</verbatim>+ contains=wmlVerbatimTag
+syn match wmlVerbatimTag contained "</*verbatim>" contains=wmlVerbatimTagN
+syn keyword wmlVerbatimTagN contained verbatim
+hi link wmlVerbatimTag htmlTag
+hi link wmlVerbatimTagN htmlStatement
+
+if main_syntax == "html"
+ syn sync match wmlHighlight groupthere NONE "</a-zA-Z]"
+ syn sync match wmlHighlight groupthere perlScript "<perl>"
+ syn sync match wmlHighlightSkip "^.*['\"].*$"
+ syn sync minlines=10
+endif
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link wmlNextLine Special
+hi def link wmlUse Include
+hi def link wmlUsed String
+hi def link wmlBody Special
+hi def link wmlDiverted Label
+hi def link wmlDivert Delimiter
+hi def link wmlDivertEnd Delimiter
+hi def link wmlLocationId Label
+hi def link wmlLocation Delimiter
+" hi def link wmlLocationed Delimiter
+hi def link wmlDefineName String
+hi def link wmlComment Comment
+hi def link wmlInclude Include
+hi def link wmlSharpBang PreProc
+
+
+let b:current_syntax = "wml"
diff --git a/runtime/syntax/wsh.vim b/runtime/syntax/wsh.vim
new file mode 100644
index 0000000..4b664a1
--- /dev/null
+++ b/runtime/syntax/wsh.vim
@@ -0,0 +1,45 @@
+" Vim syntax file
+" Language: Windows Scripting Host
+" Maintainer: Paul Moore <pf_moore AT yahoo.co.uk>
+" Last Change: Fre, 24 Nov 2000 21:54:09 +0100
+
+" This reuses the XML, VB and JavaScript syntax files. While VB is not
+" VBScript, it's close enough for us. No attempt is made to handle
+" other languages.
+" Send comments, suggestions and requests to the maintainer.
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:wsh_cpo_save = &cpo
+set cpo&vim
+
+runtime! syntax/xml.vim
+unlet b:current_syntax
+
+syn case ignore
+syn include @wshVBScript <sfile>:p:h/vb.vim
+unlet b:current_syntax
+syn include @wshJavaScript <sfile>:p:h/javascript.vim
+unlet b:current_syntax
+syn region wshVBScript
+ \ matchgroup=xmlTag start="<script[^>]*VBScript\(>\|[^>]*[^/>]>\)"
+ \ matchgroup=xmlEndTag end="</script>"
+ \ fold
+ \ contains=@wshVBScript
+ \ keepend
+syn region wshJavaScript
+ \ matchgroup=xmlTag start="<script[^>]*J\(ava\)\=Script\(>\|[^>]*[^/>]>\)"
+ \ matchgroup=xmlEndTag end="</script>"
+ \ fold
+ \ contains=@wshJavaScript
+ \ keepend
+
+syn cluster xmlRegionHook add=wshVBScript,wshJavaScript
+
+let b:current_syntax = "wsh"
+
+let &cpo = s:wsh_cpo_save
+unlet s:wsh_cpo_save
diff --git a/runtime/syntax/wsml.vim b/runtime/syntax/wsml.vim
new file mode 100644
index 0000000..d01294c
--- /dev/null
+++ b/runtime/syntax/wsml.vim
@@ -0,0 +1,113 @@
+" Vim syntax file
+" Language: WSML
+" Maintainer: Thomas Haselwanter <thomas.haselwanter@deri.org>
+" URL: none
+" Last Change: 2006 Apr 30
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" WSML
+syn keyword wsmlHeader wsmlVariant
+syn keyword wsmlNamespace namespace
+syn keyword wsmlTopLevel concept instance relationInstance ofType usesMediator usesService relation sharedVariables importsOntology
+syn keyword wsmlOntology hasValue memberOf ofType impliesType subConceptOf
+syn keyword wsmlAxiom axiom definedBy
+syn keyword wsmlService assumption effect postcondition precondition capability interface
+syn keyword wsmlTopLevel ooMediator wwMediator wgMediator ggMediator
+syn keyword wsmlMediation usesService source target
+syn match wsmlDataTypes "\( _string\| _decimal\| _integer\| _float\| _double\| _iri\| _sqname\| _boolean\| _duration\| _dateTime\| _time\| _date\| _gyearmonth\| _gyear\| _gmonthday\| _gday\| _gmonth\| _hexbinary\| _base64binary\)\((\S*)\)\?" contains=wsmlString,wsmlNumber,wsmlCharacter
+syn keyword wsmlTopLevel goal webService ontology
+syn keyword wsmlKeywordsInsideLEs true false memberOf hasValue subConceptOf ofType impliesType and or implies impliedBy equivalent neg naf forall exists
+syn keyword wsmlNFP nfp endnfp nonFunctionalProperties endNonFunctionalProperties
+syn region wsmlNFPregion start="nfp\|nonFunctionalProperties" end="endnfp\|endNonFunctionalProperties" contains=ALL
+syn region wsmlNamespace start="namespace" end="}" contains=wsmlIdentifier
+syn match wsmlOperator "!=\|:=:\|=<\|>=\|=\|+\|\*\|/\|<->\|->\|<-\|:-\|!-\|-\|<\|>"
+syn match wsmlBrace "(\|)\|\[\|\]\|{\|}"
+syn match wsmlIdentifier +_"\S*"+
+syn match wsmlIdentifier "_#\d*"
+syn match wsmlSqName "[0-9A-Za-z]\+#[0-9A-Za-z]\+"
+syn match wsmlVariable "?[0-9A-Za-z]\+"
+
+" ASM-specific code
+syn keyword wsmlBehavioral choreography orchestration transitionRules
+syn keyword wsmlChoreographyPri stateSignature in out shared static controlled
+syn keyword wsmlChoreographySec with do withGrounding forall endForall choose if then endIf
+syn match wsmlChoreographyTer "\(\s\|\_^\)\(add\|delete\|update\)\s*(.*)" contains=wsmlKeywordsInsideLEs,wsmlIdentifier,wsmlSqName,wsmlString,wsmlNumber,wsmlDataTypes,wsmlVariable
+
+" Comments
+syn keyword wsmlTodo contained TODO
+syn keyword wsmlFixMe contained FIXME
+if exists("wsml_comment_strings")
+ syn region wsmlCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=wsmlSpecial,wsmlCommentStar,wsmlSpecialChar,@Spell
+ syn region wsmlComment2String contained start=+"+ end=+$\|"+ contains=wsmlSpecial,wsmlSpecialChar,@Spell
+ syn match wsmlCommentCharacter contained "'\\[^']\{1,6\}'" contains=wsmlSpecialChar
+ syn match wsmlCommentCharacter contained "'\\''" contains=wsmlSpecialChar
+ syn match wsmlCommentCharacter contained "'[^\\]'"
+ syn cluster wsmlCommentSpecial add=wsmlCommentString,wsmlCommentCharacter,wsmlNumber
+ syn cluster wsmlCommentSpecial2 add=wsmlComment2String,wsmlCommentCharacter,wsmlNumber
+endif
+
+syn region wsmlComment start="/\*" end="\*/" contains=@wsmlCommentSpecial,wsmlTodo,wsmlFixMe,@Spell
+syn match wsmlCommentStar contained "^\s*\*[^/]"me=e-1
+syn match wsmlCommentStar contained "^\s*\*$"
+syn match wsmlLineComment "//.*" contains=@wsmlCommentSpecial2,wsmlTodo,@Spell
+
+syn cluster wsmlTop add=wsmlComment,wsmlLineComment
+
+"match the special comment /**/
+syn match wsmlComment "/\*\*/"
+
+" Strings
+syn region wsmlString start=+"+ end=+"+ contains=wsmlSpecialChar,wsmlSpecialError,@Spell
+syn match wsmlCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
+syn match wsmlCharacter "'\\''" contains=javaSpecialChar
+syn match wsmlCharacter "'[^\\]'"
+syn match wsmlNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
+syn match wsmlNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
+syn match wsmlNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
+syn match wsmlNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
+
+" unicode characters
+syn match wsmlSpecial "\\u\d\{4\}"
+
+syn cluster wsmlTop add=wsmlString,wsmlCharacter,wsmlNumber,wsmlSpecial,wsmlStringError
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link wsmlHeader TypeDef
+hi def link wsmlNamespace TypeDef
+hi def link wsmlOntology Statement
+hi def link wsmlAxiom TypeDef
+hi def link wsmlService TypeDef
+hi def link wsmlNFP TypeDef
+hi def link wsmlTopLevel TypeDef
+hi def link wsmlMediation TypeDef
+hi def link wsmlBehavioral TypeDef
+hi def link wsmlChoreographyPri TypeDef
+hi def link wsmlChoreographySec Operator
+hi def link wsmlChoreographyTer Special
+hi def link wsmlString String
+hi def link wsmlIdentifier Normal
+hi def link wsmlSqName Normal
+hi def link wsmlVariable Define
+hi def link wsmlKeywordsInsideLEs Operator
+hi def link wsmlOperator Operator
+hi def link wsmlBrace Operator
+hi def link wsmlCharacter Character
+hi def link wsmlNumber Number
+hi def link wsmlDataTypes Special
+hi def link wsmlComment Comment
+hi def link wsmlDocComment Comment
+hi def link wsmlLineComment Comment
+hi def link wsmlTodo Todo
+hi def link wsmlFixMe Error
+hi def link wsmlCommentTitle SpecialComment
+hi def link wsmlCommentStar wsmlComment
+
+
+let b:current_syntax = "wsml"
+let b:spell_options="contained"
+
diff --git a/runtime/syntax/wvdial.vim b/runtime/syntax/wvdial.vim
new file mode 100644
index 0000000..035138b
--- /dev/null
+++ b/runtime/syntax/wvdial.vim
@@ -0,0 +1,28 @@
+" Vim syntax file
+" Language: Configuration file for WvDial
+" Maintainer: Prahlad Vaidyanathan <slime@vsnl.net>
+" Last Update: Mon, 15 Oct 2001 09:39:03 Indian Standard Time
+
+" Quit if syntax file is already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match wvdialComment "^;.*$"lc=1
+syn match wvdialComment "[^\\];.*$"lc=1
+syn match wvdialSection "^\s*\[.*\]"
+syn match wvdialValue "=.*$"ms=s+1
+syn match wvdialValue "\s*[^ ;"' ]\+"lc=1
+syn match wvdialVar "^\s*\(Inherits\|Modem\|Baud\|Init.\|Phone\|Area\ Code\|Dial\ Prefix\|Dial\ Command\|Login\|Login\| Prompt\|Password\|Password\ Prompt\|PPPD\ Path\|Force\ Address\|Remote\ Name\|Carrier\ Check\|Stupid\ [Mm]ode\|New\ PPPD\|Default\ Reply\|Auto\ Reconnect\|SetVolume\|Username\)"
+syn match wvdialEqual "="
+
+" The default highlighting
+hi def link wvdialComment Comment
+hi def link wvdialSection PreProc
+hi def link wvdialVar Identifier
+hi def link wvdialValue String
+hi def link wvdialEqual Statement
+
+let b:current_syntax = "wvdial"
+
+"EOF vim: tw=78:ft=vim:ts=8
diff --git a/runtime/syntax/xbl.vim b/runtime/syntax/xbl.vim
new file mode 100644
index 0000000..97837e3
--- /dev/null
+++ b/runtime/syntax/xbl.vim
@@ -0,0 +1,29 @@
+" Vim syntax file
+" Language: XBL 1.0
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Latest Revision: 2007 November 5
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+runtime! syntax/xml.vim
+unlet b:current_syntax
+
+syn include @javascriptTop syntax/javascript.vim
+unlet b:current_syntax
+
+syn region xblJavascript
+ \ matchgroup=xmlCdataStart start=+<!\[CDATA\[+
+ \ matchgroup=xmlCdataEnd end=+]]>+
+ \ contains=@javascriptTop keepend extend
+
+let b:current_syntax = "xbl"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8
diff --git a/runtime/syntax/xdefaults.vim b/runtime/syntax/xdefaults.vim
new file mode 100644
index 0000000..7da5969
--- /dev/null
+++ b/runtime/syntax/xdefaults.vim
@@ -0,0 +1,132 @@
+" Vim syntax file
+" Language: X resources files like ~/.Xdefaults (xrdb)
+" Maintainer: Johannes Zellner <johannes@zellner.org>
+" Author and previous maintainer:
+" Gautam H. Mudunuri <gmudunur@informatica.com>
+" Last Change: Di, 09 Mai 2006 23:10:23 CEST
+" $Id: xdefaults.vim,v 1.2 2007/05/05 17:19:40 vimboss Exp $
+"
+" REFERENCES:
+" xrdb manual page
+" xrdb source: ftp://ftp.x.org/pub/R6.4/xc/programs/xrdb/xrdb.c
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" turn case on
+syn case match
+
+
+if !exists("xdefaults_no_colon_errors")
+ " mark lines which do not contain a colon as errors.
+ " This does not really catch all errors but only lines
+ " which contain at least two WORDS and no colon. This
+ " was done this way so that a line is not marked as
+ " error while typing (which would be annoying).
+ syntax match xdefaultsErrorLine "^\s*[a-zA-Z.*]\+\s\+[^: ]\+"
+endif
+
+
+" syn region xdefaultsLabel start=+^[^:]\{-}:+he=e-1 skip=+\\+ end="$"
+syn match xdefaultsLabel +^[^:]\{-}:+he=e-1 contains=xdefaultsPunct,xdefaultsSpecial,xdefaultsLineEnd
+syn region xdefaultsValue keepend start=+:+lc=1 skip=+\\+ end=+$+ contains=xdefaultsSpecial,xdefaultsLabel,xdefaultsLineEnd
+
+syn match xdefaultsSpecial contained +#override+
+syn match xdefaultsSpecial contained +#augment+
+syn match xdefaultsPunct contained +[.*:]+
+syn match xdefaultsLineEnd contained +\\$+
+syn match xdefaultsLineEnd contained +\\n\\$+
+syn match xdefaultsLineEnd contained +\\n$+
+
+
+
+" COMMENTS
+
+" note, that the '!' must be at the very first position of the line
+syn match xdefaultsComment "^!.*$" contains=xdefaultsTodo,@Spell
+
+" lines starting with a '#' mark and which are not preprocessor
+" lines are skipped. This is not part of the xrdb documentation.
+" It was reported by Bram Moolenaar and could be confirmed by
+" having a look at xrdb.c:GetEntries()
+syn match xdefaultsCommentH "^#.*$"
+"syn region xdefaultsComment start="^#" end="$" keepend contains=ALL
+syn region xdefaultsComment start="/\*" end="\*/" contains=xdefaultsTodo,@Spell
+
+syntax match xdefaultsCommentError "\*/"
+
+syn keyword xdefaultsTodo contained TODO FIXME XXX display
+
+
+
+" PREPROCESSOR STUFF
+
+syn region xdefaultsPreProc start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\|else\|endif\)\>" skip="\\$" end="$" contains=xdefaultsSymbol
+if !exists("xdefaults_no_if0")
+ syn region xdefaultsCppOut start="^\s*#\s*if\s\+0\>" end=".\|$" contains=xdefaultsCppOut2
+ syn region xdefaultsCppOut2 contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=xdefaultsCppSkip
+ syn region xdefaultsCppSkip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=xdefaultsCppSkip
+endif
+syn region xdefaultsIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match xdefaultsIncluded contained "<[^>]*>"
+syn match xdefaultsInclude "^\s*#\s*include\>\s*["<]" contains=xdefaultsIncluded
+syn cluster xdefaultsPreProcGroup contains=xdefaultsPreProc,xdefaultsIncluded,xdefaultsInclude,xdefaultsDefine,xdefaultsCppOut,xdefaultsCppOut2,xdefaultsCppSkip
+syn region xdefaultsDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" contains=ALLBUT,@xdefaultsPreProcGroup,xdefaultsCommentH,xdefaultsErrorLine,xdefaultsLabel,xdefaultsValue
+syn region xdefaultsPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@xdefaultsPreProcGroup,xdefaultsCommentH,xdefaultsErrorLine,xdefaultsLabel,xdefaultsValue
+
+
+
+" symbols as defined by xrdb
+syn keyword xdefaultsSymbol contained SERVERHOST
+syn match xdefaultsSymbol contained "SRVR_[a-zA-Z0-9_]\+"
+syn keyword xdefaultsSymbol contained HOST
+syn keyword xdefaultsSymbol contained DISPLAY_NUM
+syn keyword xdefaultsSymbol contained CLIENTHOST
+syn match xdefaultsSymbol contained "CLNT_[a-zA-Z0-9_]\+"
+syn keyword xdefaultsSymbol contained RELEASE
+syn keyword xdefaultsSymbol contained REVISION
+syn keyword xdefaultsSymbol contained VERSION
+syn keyword xdefaultsSymbol contained VENDOR
+syn match xdefaultsSymbol contained "VNDR_[a-zA-Z0-9_]\+"
+syn match xdefaultsSymbol contained "EXT_[a-zA-Z0-9_]\+"
+syn keyword xdefaultsSymbol contained NUM_SCREENS
+syn keyword xdefaultsSymbol contained SCREEN_NUM
+syn keyword xdefaultsSymbol contained BITS_PER_RGB
+syn keyword xdefaultsSymbol contained CLASS
+syn keyword xdefaultsSymbol contained StaticGray GrayScale StaticColor PseudoColor TrueColor DirectColor
+syn match xdefaultsSymbol contained "CLASS_\(StaticGray\|GrayScale\|StaticColor\|PseudoColor\|TrueColor\|DirectColor\)"
+syn keyword xdefaultsSymbol contained COLOR
+syn match xdefaultsSymbol contained "CLASS_\(StaticGray\|GrayScale\|StaticColor\|PseudoColor\|TrueColor\|DirectColor\)_[0-9]\+"
+syn keyword xdefaultsSymbol contained HEIGHT
+syn keyword xdefaultsSymbol contained WIDTH
+syn keyword xdefaultsSymbol contained PLANES
+syn keyword xdefaultsSymbol contained X_RESOLUTION
+syn keyword xdefaultsSymbol contained Y_RESOLUTION
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link xdefaultsLabel Type
+hi def link xdefaultsValue Constant
+hi def link xdefaultsComment Comment
+hi def link xdefaultsCommentH xdefaultsComment
+hi def link xdefaultsPreProc PreProc
+hi def link xdefaultsInclude xdefaultsPreProc
+hi def link xdefaultsCppSkip xdefaultsCppOut
+hi def link xdefaultsCppOut2 xdefaultsCppOut
+hi def link xdefaultsCppOut Comment
+hi def link xdefaultsIncluded String
+hi def link xdefaultsDefine Macro
+hi def link xdefaultsSymbol Statement
+hi def link xdefaultsSpecial Statement
+hi def link xdefaultsErrorLine Error
+hi def link xdefaultsCommentError Error
+hi def link xdefaultsPunct Normal
+hi def link xdefaultsLineEnd Special
+hi def link xdefaultsTodo Todo
+
+
+let b:current_syntax = "xdefaults"
+
+" vim:ts=8
diff --git a/runtime/syntax/xf86conf.vim b/runtime/syntax/xf86conf.vim
new file mode 100644
index 0000000..e8162f3
--- /dev/null
+++ b/runtime/syntax/xf86conf.vim
@@ -0,0 +1,207 @@
+" Vim syntax file
+" Language: XF86Config (XFree86 configuration file)
+" Former Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
+" Last Change By David: 2010 Nov 01
+" Last Change: 2023 Jan 23
+" Required Vim Version: 6.0
+"
+" Options: let xf86conf_xfree86_version = 3 or 4
+" to force XFree86 3.x or 4.x XF86Config syntax
+
+" Setup
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("b:xf86conf_xfree86_version")
+ if exists("xf86conf_xfree86_version")
+ let b:xf86conf_xfree86_version = xf86conf_xfree86_version
+ else
+ let b:xf86conf_xfree86_version = 4
+ endif
+endif
+
+syn case ignore
+
+" Comments
+syn match xf86confComment "#.*$" contains=xf86confTodo
+syn case match
+syn keyword xf86confTodo FIXME TODO XXX NOT contained
+syn case ignore
+syn match xf86confTodo "???" contained
+
+" Sectioning errors
+syn keyword xf86confSectionError Section contained
+syn keyword xf86confSectionError EndSection
+syn keyword xf86confSubSectionError SubSection
+syn keyword xf86confSubSectionError EndSubSection
+syn keyword xf86confModeSubSectionError Mode
+syn keyword xf86confModeSubSectionError EndMode
+syn cluster xf86confSectionErrors contains=xf86confSectionError,xf86confSubSectionError,xf86confModeSubSectionError
+
+" Values
+if b:xf86conf_xfree86_version >= 4
+ syn region xf86confString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained contains=xf86confSpecialChar,xf86confConstant,xf86confOptionName oneline keepend nextgroup=xf86confValue skipwhite
+else
+ syn region xf86confString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained contains=xf86confSpecialChar,xf86confOptionName oneline keepend
+endif
+syn match xf86confSpecialChar "\\\d\d\d\|\\." contained
+syn match xf86confDecimalNumber "\(\s\|-\)\zs\d*\.\=\d\+\>"
+syn match xf86confFrequency "\(\s\|-\)\zs\d\+\.\=\d*\(Hz\|k\|kHz\|M\|MHz\)"
+syn match xf86confOctalNumber "\<0\o\+\>"
+syn match xf86confOctalNumberError "\<0\o\+[89]\d*\>"
+syn match xf86confHexadecimalNumber "\<0x\x\+\>"
+syn match xf86confValue "\s\+.*$" contained contains=xf86confComment,xf86confString,xf86confFrequency,xf86conf\w\+Number,xf86confConstant
+syn keyword xf86confOption Option nextgroup=xf86confString skipwhite
+syn match xf86confModeLineValue "\"[^\"]\+\"\(\_s\+[0-9.]\+\)\{9}" nextgroup=xf86confSync skipwhite skipnl
+
+" Sections and subsections
+if b:xf86conf_xfree86_version >= 4
+ syn region xf86confSection matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Input[_ ]*Device\|Device\|Video[_ ]*Adaptor\|Server[_ ]*Layout\|DRI\|Extensions\|Vendor\|Keyboard\|Pointer\|InputClass\)\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOption,xf86confKeyword,xf86confSectionError
+ syn region xf86confSectionModule matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Module\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionAny,xf86confComment,xf86confOption,xf86confKeyword
+ syn region xf86confSectionMonitor matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Monitor\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionMode,xf86confModeLine,xf86confComment,xf86confOption,xf86confKeyword
+ syn region xf86confSectionModes matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Modes\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionMode,xf86confModeLine,xf86confComment
+ syn region xf86confSectionScreen matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Screen\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionDisplay,xf86confComment,xf86confOption,xf86confKeyword
+ syn region xf86confSubSectionAny matchgroup=xf86confSectionDelim start="^\s*SubSection\s\+\"[^\"]\+\"" end="^\s*EndSubSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOption,xf86confKeyword,@xf86confSectionErrors
+ syn region xf86confSubSectionMode matchgroup=xf86confSectionDelim start="^\s*Mode\s\+\"[^\"]\+\"" end="^\s*EndMode\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confKeyword,@xf86confSectionErrors
+ syn region xf86confSubSectionDisplay matchgroup=xf86confSectionDelim start="^\s*SubSection\s\+\"Display\"" end="^\s*EndSubSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOption,xf86confKeyword,@xf86confSectionErrors
+else
+ syn region xf86confSection matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Device\|Keyboard\|Pointer\)\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword
+ syn region xf86confSectionMX matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"\(Module\|Xinput\)\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionAny,xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword
+ syn region xf86confSectionMonitor matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Monitor\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionMode,xf86confModeLine,xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword
+ syn region xf86confSectionScreen matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Screen\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionDisplay,xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword
+ syn region xf86confSubSectionAny matchgroup=xf86confSectionDelim start="^\s*SubSection\s\+\"[^\"]\+\"" end="^\s*EndSubSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword,@xf86confSectionErrors
+ syn region xf86confSubSectionMode matchgroup=xf86confSectionDelim start="^\s*Mode\s\+\"[^\"]\+\"" end="^\s*EndMode\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword,@xf86confSectionErrors
+ syn region xf86confSubSectionDisplay matchgroup=xf86confSectionDelim start="^\s*SubSection\s\+\"Display\"" end="^\s*EndSubSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword,@xf86confSectionErrors
+endif
+
+" Options
+if b:xf86conf_xfree86_version >= 4
+ command -nargs=+ Xf86confdeclopt syn keyword xf86confOptionName <args> contained
+else
+ command -nargs=+ Xf86confdeclopt syn keyword xf86confOptionName <args> contained nextgroup=xf86confValue,xf86confComment skipwhite
+endif
+
+Xf86confdeclopt 18bitBus AGPFastWrite AGPMode Accel AllowClosedownGrabs AllowDeactivateGrabs
+Xf86confdeclopt AllowMouseOpenFail AllowNonLocalModInDev AllowNonLocalXvidtune AlwaysCore
+Xf86confdeclopt AngleOffset AutoRepeat BaudRate BeamTimeout Beep BlankTime BlockWrite BottomX
+Xf86confdeclopt BottomY ButtonNumber ButtonThreshold Buttons ByteSwap CacheLines ChordMiddle
+Xf86confdeclopt ClearDTR ClearDTS ClickMode CloneDisplay CloneHSync CloneMode CloneVRefresh
+Xf86confdeclopt ColorKey Composite CompositeSync CoreKeyboard CorePointer Crt2Memory CrtScreen
+Xf86confdeclopt CrtcNumber CyberShadow CyberStretch DDC DDCMode DMAForXv DPMS Dac6Bit DacSpeed
+Xf86confdeclopt DataBits Debug DebugLevel DefaultServerLayout DeltaX DeltaY Device DeviceName
+Xf86confdeclopt DisableModInDev DisableVidModeExtension Display Display1400 DontVTSwitch
+Xf86confdeclopt DontZap DontZoom DoubleScan DozeMode DozeScan DozeTime DragLockButtons
+Xf86confdeclopt DualCount DualRefresh EarlyRasPrecharge Emulate3Buttons Emulate3Timeout
+Xf86confdeclopt EmulateWheel EmulateWheelButton EmulateWheelInertia EnablePageFlip EnterCount
+Xf86confdeclopt EstimateSizesAggressively ExternDisp FPClock16 FPClock24 FPClock32
+Xf86confdeclopt FPClock8 FPDither FastDram FifoAggresive FifoConservative FifoModerate
+Xf86confdeclopt FireGL3000 FixPanelSize FlatPanel FlipXY FlowControl ForceCRT1 ForceCRT2Type
+Xf86confdeclopt ForceLegacyCRT ForcePCIMode FpmVRAM FrameBufferWC FullMMIO GammaBrightness
+Xf86confdeclopt HWClocks HWCursor HandleSpecialKeys HistorySize Interlace Interlaced InternDisp
+Xf86confdeclopt InvX InvY InvertX InvertY KeepShape LCDClock LateRasPrecharge LcdCenter
+Xf86confdeclopt LeftAlt Linear MGASDRAM MMIO MMIOCache MTTR MaxX MaxY MaximumXPosition
+Xf86confdeclopt MaximumYPosition MinX MinY MinimumXPosition MinimumYPosition NoAccel
+Xf86confdeclopt NoAllowMouseOpenFail NoAllowNonLocalModInDev NoAllowNonLocalXvidtune
+Xf86confdeclopt NoBlockWrite NoCompositeSync NoCompression NoCrtScreen NoCyberShadow NoDCC
+Xf86confdeclopt NoDDC NoDac6Bit NoDebug NoDisableModInDev NoDisableVidModeExtension NoDontZap
+Xf86confdeclopt NoDontZoom NoFireGL3000 NoFixPanelSize NoFpmVRAM NoFrameBufferWC NoHWClocks
+Xf86confdeclopt NoHWCursor NoHal NoLcdCenter NoLinear NoMGASDRAM NoMMIO NoMMIOCache NoMTTR
+Xf86confdeclopt NoOverClockMem NoOverlay NoPC98 NoPM NoPciBurst NoPciRetry NoProbeClock
+Xf86confdeclopt NoSTN NoSWCursor NoShadowFb NoShowCache NoSlowEDODRAM NoStretch NoSuspendHack
+Xf86confdeclopt NoTexturedVideo NoTrapSignals NoUseFBDev NoUseModeline NoUseVclk1 NoVTSysReq
+Xf86confdeclopt NoXVideo NvAGP OSMImageBuffers OffTime Origin OverClockMem Overlay
+Xf86confdeclopt PC98 PCIBurst PM PWMActive PWMSleep PanelDelayCompensation PanelHeight
+Xf86confdeclopt PanelOff PanelWidth Parity PciBurst PciRetry Pixmap Port PressDur PressPitch
+Xf86confdeclopt PressVol ProbeClocks ProgramFPRegs Protocol RGBBits ReleaseDur ReleasePitch
+Xf86confdeclopt ReportingMode Resolution RightAlt RightCtl Rotate STN SWCursor SampleRate
+Xf86confdeclopt ScreenNumber ScrollLock SendCoreEvents SendDragEvents Serial ServerNumLock
+Xf86confdeclopt SetLcdClk SetMClk SetRefClk ShadowFb ShadowStatus ShowCache SleepMode
+Xf86confdeclopt SleepScan SleepTime SlowDram SlowEDODRAM StandbyTime StopBits Stretch
+Xf86confdeclopt SuspendHack SuspendTime SwapXY SyncOnGreen TV TVOutput TVOverscan TVStandard
+Xf86confdeclopt TVXPosOffset TVYPosOffset TexturedVideo Threshold Tilt TopX TopY TouchTime
+Xf86confdeclopt TrapSignals Type USB UseBIOS UseFB UseFBDev UseFlatPanel UseModeline
+Xf86confdeclopt UseROMData UseVclk1 VTInit VTSysReq VTime VideoKey Vmin XAxisMapping
+Xf86confdeclopt XLeds XVideo XaaNoCPUToScreenColorExpandFill XaaNoColor8x8PatternFillRect
+Xf86confdeclopt XaaNoColor8x8PatternFillTrap XaaNoDashedBresenhamLine XaaNoDashedTwoPointLine
+Xf86confdeclopt XaaNoImageWriteRect XaaNoMono8x8PatternFillRect XaaNoMono8x8PatternFillTrap
+Xf86confdeclopt XaaNoOffscreenPixmaps XaaNoPixmapCache XaaNoScanlineCPUToScreenColorExpandFill
+Xf86confdeclopt XaaNoScanlineImageWriteRect XaaNoScreenToScreenColorExpandFill
+Xf86confdeclopt XaaNoScreenToScreenCopy XaaNoSolidBresenhamLine XaaNoSolidFillRect
+Xf86confdeclopt XaaNoSolidFillTrap XaaNoSolidHorVertLine XaaNoSolidTwoPointLine Xinerama
+Xf86confdeclopt XkbCompat XkbDisable XkbGeometry XkbKeycodes XkbKeymap XkbLayout XkbModel
+Xf86confdeclopt XkbOptions XkbRules XkbSymbols XkbTypes XkbVariant XvBskew XvHsync XvOnCRT2
+Xf86confdeclopt XvRskew XvVsync YAxisMapping ZAxisMapping ZoomOnLCD
+
+delcommand Xf86confdeclopt
+
+" Keywords
+syn keyword xf86confKeyword Device Driver FontPath Group Identifier Load ModelName ModulePath Monitor RGBPath VendorName VideoAdaptor Visual nextgroup=xf86confComment,xf86confString skipwhite
+syn keyword xf86confKeyword BiosBase Black BoardName BusID ChipID ChipRev Chipset nextgroup=xf86confComment,xf86confValue
+syn keyword xf86confKeyword ClockChip Clocks DacSpeed DefaultDepth DefaultFbBpp nextgroup=xf86confComment,xf86confValue
+syn keyword xf86confKeyword DefaultColorDepth nextgroup=xf86confComment,xf86confValue
+syn keyword xf86confKeyword Depth DisplaySize DotClock FbBpp Flags Gamma HorizSync nextgroup=xf86confComment,xf86confValue
+syn keyword xf86confKeyword Hskew HTimings InputDevice IOBase MemBase Mode nextgroup=xf86confComment,xf86confValue
+syn keyword xf86confKeyword Modes Ramdac Screen TextClockFreq UseModes VendorName nextgroup=xf86confComment,xf86confValue
+syn keyword xf86confKeyword VertRefresh VideoRam ViewPort Virtual VScan VTimings nextgroup=xf86confComment,xf86confValue
+syn keyword xf86confKeyword Weight White nextgroup=xf86confComment,xf86confValue
+syn keyword xf86confMatch MatchDevicePath MatchDriver MatchLayout MatchOS MatchPnPID MatchProduct MatchTag MatchUSBID MatchVendor nextgroup=xf86confComment,xf86confString skipwhite
+syn keyword xf86confMatch MatchIsPointer MatchIsKeyboard MatchIsTouchpad MatchIsTouchscreen MatchIsJoystick nextgroup=xf86confComment,xf86confValue skipwhite
+syn keyword xf86confModeLine ModeLine nextgroup=xf86confComment,xf86confModeLineValue skipwhite skipnl
+
+" Constants
+if b:xf86conf_xfree86_version >= 4
+ syn keyword xf86confConstant true false on off yes no omit contained
+else
+ syn keyword xf86confConstant Meta Compose Control
+endif
+syn keyword xf86confConstant StaticGray GrayScale StaticColor PseudoColor TrueColor DirectColor contained
+syn keyword xf86confConstant Absolute RightOf LeftOf Above Below Relative StaticGray GrayScale StaticColor PseudoColor TrueColor DirectColor contained
+syn match xf86confSync "\(\s\+[+-][CHV]_*Sync\)\+" contained
+
+" Synchronization
+if b:xf86conf_xfree86_version >= 4
+ syn sync match xf86confSyncSection grouphere xf86confSection "^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Input[_ ]*Device\|Device\|Video[_ ]*Adaptor\|Server[_ ]*Layout\|DRI\|Extensions\|Vendor\|Keyboard\|Pointer\|InputClass\)\""
+ syn sync match xf86confSyncSectionModule grouphere xf86confSectionModule "^\s*Section\s\+\"Module\""
+ syn sync match xf86confSyncSectionModes groupthere xf86confSectionModes "^\s*Section\s\+\"Modes\""
+else
+ syn sync match xf86confSyncSection grouphere xf86confSection "^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Device\|Keyboard\|Pointer\)\""
+ syn sync match xf86confSyncSectionMX grouphere xf86confSectionMX "^\s*Section\s\+\"\(Module\|Xinput\)\""
+endif
+syn sync match xf86confSyncSectionMonitor groupthere xf86confSectionMonitor "^\s*Section\s\+\"Monitor\""
+syn sync match xf86confSyncSectionScreen groupthere xf86confSectionScreen "^\s*Section\s\+\"Screen\""
+syn sync match xf86confSyncEndSection groupthere NONE "^\s*End_*Section\s*$"
+
+" Define the default highlighting
+hi def link xf86confComment Comment
+hi def link xf86confTodo Todo
+hi def link xf86confSectionDelim Statement
+hi def link xf86confOptionName Identifier
+
+hi def link xf86confSectionError xf86confError
+hi def link xf86confSubSectionError xf86confError
+hi def link xf86confModeSubSectionError xf86confError
+hi def link xf86confOctalNumberError xf86confError
+hi def link xf86confError Error
+
+hi def link xf86confOption xf86confKeyword
+hi def link xf86confMatch xf86confKeyword
+hi def link xf86confModeLine xf86confKeyword
+hi def link xf86confKeyword Type
+
+hi def link xf86confDecimalNumber xf86confNumber
+hi def link xf86confOctalNumber xf86confNumber
+hi def link xf86confHexadecimalNumber xf86confNumber
+hi def link xf86confFrequency xf86confNumber
+hi def link xf86confModeLineValue Constant
+hi def link xf86confNumber Constant
+
+hi def link xf86confSync xf86confConstant
+hi def link xf86confConstant Special
+hi def link xf86confSpecialChar Special
+hi def link xf86confString String
+
+hi def link xf86confValue Constant
+
+let b:current_syntax = "xf86conf"
diff --git a/runtime/syntax/xhtml.vim b/runtime/syntax/xhtml.vim
new file mode 100644
index 0000000..0c6ea73
--- /dev/null
+++ b/runtime/syntax/xhtml.vim
@@ -0,0 +1,11 @@
+" Vim syntax file
+" Language: XHTML
+" Maintainer: noone
+" Last Change: 2003 Feb 04
+
+" Load the HTML syntax for now.
+runtime! syntax/html.vim
+
+let b:current_syntax = "xhtml"
+
+" vim: ts=8
diff --git a/runtime/syntax/xinetd.vim b/runtime/syntax/xinetd.vim
new file mode 100644
index 0000000..fab3a91
--- /dev/null
+++ b/runtime/syntax/xinetd.vim
@@ -0,0 +1,347 @@
+" Vim syntax file
+" Language: xinetd.conf(5) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword xinetdTodo contained TODO FIXME XXX NOTE
+
+syn region xinetdComment display oneline start='^\s*#' end='$'
+ \ contains=xinetdTodo,@Spell
+
+syn match xinetdService '^\s*service\>'
+ \ nextgroup=xinetdServiceName skipwhite
+
+syn match xinetdServiceName contained '\S\+'
+ \ nextgroup=xinetdServiceGroup skipwhite skipnl
+
+syn match xinetdDefaults '^\s*defaults'
+ \ nextgroup=xinetdServiceGroup skipwhite skipnl
+
+syn region xinetdServiceGroup contained transparent
+ \ matchgroup=xinetdServiceGroupD start='{'
+ \ matchgroup=xinetdServiceGroupD end='}'
+ \ contains=xinetdAttribute,xinetdReqAttribute,
+ \ xinetdDisable
+
+syn keyword xinetdReqAttribute contained user server protocol
+ \ nextgroup=xinetdStringEq skipwhite
+
+syn keyword xinetdAttribute contained id group bind
+ \ interface
+ \ nextgroup=xinetdStringEq skipwhite
+
+syn match xinetdStringEq contained display '='
+ \ nextgroup=xinetdString skipwhite
+
+syn match xinetdString contained display '\S\+'
+
+syn keyword xinetdAttribute contained type nextgroup=xinetdTypeEq skipwhite
+
+syn match xinetdTypeEq contained display '='
+ \ nextgroup=xinetdType skipwhite
+
+syn keyword xinetdType contained RPC INTERNAL TCPMUX TCPMUXPLUS
+ \ UNLISTED
+ \ nextgroup=xinetdType skipwhite
+
+syn keyword xinetdAttribute contained flags
+ \ nextgroup=xinetdFlagsEq skipwhite
+
+syn cluster xinetdFlagsC contains=xinetdFlags,xinetdDeprFlags
+
+syn match xinetdFlagsEq contained display '='
+ \ nextgroup=@xinetdFlagsC skipwhite
+
+syn keyword xinetdFlags contained INTERCEPT NORETRY IDONLY NAMEINARGS
+ \ NODELAY KEEPALIVE NOLIBWRAP SENSOR IPv4 IPv6
+ \ nextgroup=@xinetdFlagsC skipwhite
+
+syn keyword xinetdDeprFlags contained REUSE nextgroup=xinetdFlagsC skipwhite
+
+syn keyword xinetdDisable contained disable
+ \ nextgroup=xinetdBooleanEq skipwhite
+
+syn match xinetdBooleanEq contained display '='
+ \ nextgroup=xinetdBoolean skipwhite
+
+syn keyword xinetdBoolean contained yes no
+
+syn keyword xinetdReqAttribute contained socket_type
+ \ nextgroup=xinetdSocketTypeEq skipwhite
+
+syn match xinetdSocketTypeEq contained display '='
+ \ nextgroup=xinetdSocketType skipwhite
+
+syn keyword xinetdSocketType contained stream dgram raw seqpacket
+
+syn keyword xinetdReqAttribute contained wait
+ \ nextgroup=xinetdBooleanEq skipwhite
+
+syn keyword xinetdAttribute contained groups mdns
+ \ nextgroup=xinetdBooleanEq skipwhite
+
+syn keyword xinetdAttribute contained instances per_source rlimit_cpu
+ \ rlimit_data rlimit_rss rlimit_stack
+ \ nextgroup=xinetdUNumberEq skipwhite
+
+syn match xinetdUNumberEq contained display '='
+ \ nextgroup=xinetdUnlimited,xinetdNumber
+ \ skipwhite
+
+syn keyword xinetdUnlimited contained UNLIMITED
+
+syn match xinetdNumber contained display '\<\d\+\>'
+
+syn keyword xinetdAttribute contained nice
+ \ nextgroup=xinetdSignedNumEq skipwhite
+
+syn match xinetdSignedNumEq contained display '='
+ \ nextgroup=xinetdSignedNumber skipwhite
+
+syn match xinetdSignedNumber contained display '[+-]\=\d\+\>'
+
+syn keyword xinetdAttribute contained server_args
+ \ enabled
+ \ nextgroup=xinetdStringsEq skipwhite
+
+syn match xinetdStringsEq contained display '='
+ \ nextgroup=xinetdStrings skipwhite
+
+syn match xinetdStrings contained display '\S\+'
+ \ nextgroup=xinetdStrings skipwhite
+
+syn keyword xinetdAttribute contained only_from no_access passenv
+ \ nextgroup=xinetdStringsAdvEq skipwhite
+
+syn match xinetdStringsAdvEq contained display '[+-]\=='
+ \ nextgroup=xinetdStrings skipwhite
+
+syn keyword xinetdAttribute contained access_times
+ \ nextgroup=xinetdTimeRangesEq skipwhite
+
+syn match xinetdTimeRangesEq contained display '='
+ \ nextgroup=xinetdTimeRanges skipwhite
+
+syn match xinetdTimeRanges contained display
+ \ '\%(0?\d\|1\d\|2[0-3]\):\%(0?\d\|[1-5]\d\)-\%(0?\d\|1\d\|2[0-3]\):\%(0?\d\|[1-5]\d\)'
+ \ nextgroup=xinetdTimeRanges skipwhite
+
+syn keyword xinetdAttribute contained log_type nextgroup=xinetdLogTypeEq
+ \ skipwhite
+
+syn match xinetdLogTypeEq contained display '='
+ \ nextgroup=xinetdLogType skipwhite
+
+syn keyword xinetdLogType contained SYSLOG nextgroup=xinetdSyslogType
+ \ skipwhite
+
+syn keyword xinetdLogType contained FILE nextgroup=xinetdLogFile skipwhite
+
+syn keyword xinetdSyslogType contained daemon auth authpriv user mail lpr
+ \ news uucp ftp local0 local1 local2 local3
+ \ local4 local5 local6 local7
+ \ nextgroup=xinetdSyslogLevel skipwhite
+
+syn keyword xinetdSyslogLevel contained emerg alert crit err warning notice
+ \ info debug
+
+syn match xinetdLogFile contained display '\S\+'
+ \ nextgroup=xinetdLogSoftLimit skipwhite
+
+syn match xinetdLogSoftLimit contained display '\<\d\+\>'
+ \ nextgroup=xinetdLogHardLimit skipwhite
+
+syn match xinetdLogHardLimit contained display '\<\d\+\>'
+
+syn keyword xinetdAttribute contained log_on_success
+ \ nextgroup=xinetdLogSuccessEq skipwhite
+
+syn match xinetdLogSuccessEq contained display '[+-]\=='
+ \ nextgroup=xinetdLogSuccess skipwhite
+
+syn keyword xinetdLogSuccess contained PID HOST USERID EXIT DURATION TRAFFIC
+ \ nextgroup=xinetdLogSuccess skipwhite
+
+syn keyword xinetdAttribute contained log_on_failure
+ \ nextgroup=xinetdLogFailureEq skipwhite
+
+syn match xinetdLogFailureEq contained display '[+-]\=='
+ \ nextgroup=xinetdLogFailure skipwhite
+
+syn keyword xinetdLogFailure contained HOST USERID ATTEMPT
+ \ nextgroup=xinetdLogFailure skipwhite
+
+syn keyword xinetdReqAttribute contained rpc_version
+ \ nextgroup=xinetdRPCVersionEq skipwhite
+
+syn match xinetdRPCVersionEq contained display '='
+ \ nextgroup=xinetdRPCVersion skipwhite
+
+syn match xinetdRPCVersion contained display '\d\+\%(-\d\+\)\=\>'
+
+syn keyword xinetdReqAttribute contained rpc_number port
+ \ nextgroup=xinetdNumberEq skipwhite
+
+syn match xinetdNumberEq contained display '='
+ \ nextgroup=xinetdNumber skipwhite
+
+syn keyword xinetdAttribute contained env nextgroup=xinetdEnvEq skipwhite
+
+syn match xinetdEnvEq contained display '+\=='
+ \ nextgroup=xinetdEnvName skipwhite
+
+syn match xinetdEnvName contained display '[^=]\+'
+ \ nextgroup=xinetdEnvNameEq
+
+syn match xinetdEnvNameEq contained display '=' nextgroup=xinetdEnvValue
+
+syn match xinetdEnvValue contained display '\S\+'
+ \ nextgroup=xinetdEnvName skipwhite
+
+syn keyword xinetdAttribute contained banner banner_success banner_failure
+ \ nextgroup=xinetdPathEq skipwhite
+
+syn keyword xinetdPPAttribute include includedir
+ \ nextgroup=xinetdPath skipwhite
+
+syn match xinetdPathEq contained display '='
+ \ nextgroup=xinetdPath skipwhite
+
+syn match xinetdPath contained display '\S\+'
+
+syn keyword xinetdAttribute contained redirect nextgroup=xinetdRedirectEq
+ \ skipwhite
+
+syn match xinetdRedirectEq contained display '='
+ \ nextgroup=xinetdRedirectIP skipwhite
+
+syn match xinetdRedirectIP contained display '\S\+'
+ \ nextgroup=xinetdNumber skipwhite
+
+syn keyword xinetdAttribute contained cps nextgroup=xinetdCPSEq skipwhite
+
+syn match xinetdCPSEq contained display '='
+ \ nextgroup=xinetdCPS skipwhite
+
+syn match xinetdCPS contained display '\<\d\+\>'
+ \ nextgroup=xinetdNumber skipwhite
+
+syn keyword xinetdAttribute contained max_load nextgroup=xinetdFloatEq
+ \ skipwhite
+
+syn match xinetdFloatEq contained display '='
+ \ nextgroup=xinetdFloat skipwhite
+
+syn match xinetdFloat contained display '\d\+\.\d*\|\.\d\+'
+
+syn keyword xinetdAttribute contained umask nextgroup=xinetdOctalEq
+ \ skipwhite
+
+syn match xinetdOctalEq contained display '='
+ \ nextgroup=xinetdOctal,xinetdOctalError
+ \ skipwhite
+
+syn match xinetdOctal contained display '\<0\o\+\>'
+ \ contains=xinetdOctalZero
+syn match xinetdOctalZero contained display '\<0'
+syn match xinetdOctalError contained display '\<0\o*[89]\d*\>'
+
+syn keyword xinetdAttribute contained rlimit_as nextgroup=xinetdASEq
+ \ skipwhite
+
+syn match xinetdASEq contained display '='
+ \ nextgroup=xinetdAS,xinetdUnlimited
+ \ skipwhite
+
+syn match xinetdAS contained display '\d\+' nextgroup=xinetdASMult
+
+syn match xinetdASMult contained display '[KM]'
+
+syn keyword xinetdAttribute contained deny_time nextgroup=xinetdDenyTimeEq
+ \ skipwhite
+
+syn match xinetdDenyTimeEq contained display '='
+ \ nextgroup=xinetdDenyTime,xinetdNumber
+ \ skipwhite
+
+syn keyword xinetdDenyTime contained FOREVER NEVER
+
+hi def link xinetdTodo Todo
+hi def link xinetdComment Comment
+hi def link xinetdService Keyword
+hi def link xinetdServiceName String
+hi def link xinetdDefaults Keyword
+hi def link xinetdServiceGroupD Delimiter
+hi def link xinetdReqAttribute Keyword
+hi def link xinetdAttribute Type
+hi def link xinetdEq Operator
+hi def link xinetdStringEq xinetdEq
+hi def link xinetdString String
+hi def link xinetdTypeEq xinetdEq
+hi def link xinetdType Identifier
+hi def link xinetdFlagsEq xinetdEq
+hi def link xinetdFlags xinetdType
+hi def link xinetdDeprFlags WarningMsg
+hi def link xinetdDisable Special
+hi def link xinetdBooleanEq xinetdEq
+hi def link xinetdBoolean Boolean
+hi def link xinetdSocketTypeEq xinetdEq
+hi def link xinetdSocketType xinetdType
+hi def link xinetdUNumberEq xinetdEq
+hi def link xinetdUnlimited Define
+hi def link xinetdNumber Number
+hi def link xinetdSignedNumEq xinetdEq
+hi def link xinetdSignedNumber xinetdNumber
+hi def link xinetdStringsEq xinetdEq
+hi def link xinetdStrings xinetdString
+hi def link xinetdStringsAdvEq xinetdEq
+hi def link xinetdTimeRangesEq xinetdEq
+hi def link xinetdTimeRanges Number
+hi def link xinetdLogTypeEq xinetdEq
+hi def link xinetdLogType Keyword
+hi def link xinetdSyslogType xinetdType
+hi def link xinetdSyslogLevel Number
+hi def link xinetdLogFile xinetdPath
+hi def link xinetdLogSoftLimit xinetdNumber
+hi def link xinetdLogHardLimit xinetdNumber
+hi def link xinetdLogSuccessEq xinetdEq
+hi def link xinetdLogSuccess xinetdType
+hi def link xinetdLogFailureEq xinetdEq
+hi def link xinetdLogFailure xinetdType
+hi def link xinetdRPCVersionEq xinetdEq
+hi def link xinetdRPCVersion xinetdNumber
+hi def link xinetdNumberEq xinetdEq
+hi def link xinetdEnvEq xinetdEq
+hi def link xinetdEnvName Identifier
+hi def link xinetdEnvNameEq xinetdEq
+hi def link xinetdEnvValue String
+hi def link xinetdPPAttribute PreProc
+hi def link xinetdPathEq xinetdEq
+hi def link xinetdPath String
+hi def link xinetdRedirectEq xinetdEq
+hi def link xinetdRedirectIP String
+hi def link xinetdCPSEq xinetdEq
+hi def link xinetdCPS xinetdNumber
+hi def link xinetdFloatEq xinetdEq
+hi def link xinetdFloat xinetdNumber
+hi def link xinetdOctalEq xinetdEq
+hi def link xinetdOctal xinetdNumber
+hi def link xinetdOctalZero PreProc
+hi def link xinetdOctalError Error
+hi def link xinetdASEq xinetdEq
+hi def link xinetdAS xinetdNumber
+hi def link xinetdASMult PreProc
+hi def link xinetdDenyTimeEq xinetdEq
+hi def link xinetdDenyTime PreProc
+
+let b:current_syntax = "xinetd"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/xkb.vim b/runtime/syntax/xkb.vim
new file mode 100644
index 0000000..22be56d
--- /dev/null
+++ b/runtime/syntax/xkb.vim
@@ -0,0 +1,79 @@
+" Vim syntax file
+" This is a GENERATED FILE. Please always refer to source file at the URI below.
+" Language: XKB (X Keyboard Extension) components
+" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
+" Last Change: 2020 Oct 18
+" URL: http://trific.ath.cx/Ftp/vim/syntax/xkb.vim
+
+" Setup
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+syn sync minlines=100
+
+" Comments
+syn region xkbComment start="//" skip="\\$" end="$" keepend contains=xkbTodo
+syn region xkbComment start="/\*" matchgroup=NONE end="\*/" contains=xkbCommentStartError,xkbTodo
+syn match xkbCommentError "\*/"
+syntax match xkbCommentStartError "/\*" contained
+syn sync ccomment xkbComment
+syn keyword xkbTodo TODO FIXME contained
+
+" Literal strings
+syn match xkbSpecialChar "\\\d\d\d\|\\." contained
+syn region xkbString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=xkbSpecialChar oneline
+
+" Catch errors caused by wrong parenthesization
+syn region xkbParen start='(' end=')' contains=ALLBUT,xkbParenError,xkbSpecial,xkbTodo transparent
+syn match xkbParenError ")"
+syn region xkbBrace start='{' end='}' contains=ALLBUT,xkbBraceError,xkbSpecial,xkbTodo transparent
+syn match xkbBraceError "}"
+syn region xkbBracket start='\[' end='\]' contains=ALLBUT,xkbBracketError,xkbSpecial,xkbTodo transparent
+syn match xkbBracketError "\]"
+
+" Physical keys
+syn match xkbPhysicalKey "<\w\+>"
+
+" Keywords
+syn keyword xkbPreproc augment include replace
+syn keyword xkbConstant False True
+syn keyword xkbModif override replace
+syn keyword xkbIdentifier action affect alias allowExplicit approx baseColor button clearLocks color controls cornerRadius count ctrls description driveskbd font fontSize gap group groups height indicator indicatorDrivesKeyboard interpret key keys labelColor latchToLock latchMods left level_name map maximum minimum modifier_map modifiers name offColor onColor outline preserve priority repeat row section setMods shape slant solid symbols text top type useModMapMods virtualModifier virtualMods virtual_modifiers weight whichModState width
+syn keyword xkbFunction AnyOf ISOLock LatchGroup LatchMods LockControls LockGroup LockMods LockPointerButton MovePtr NoAction PointerButton SetControls SetGroup SetMods SetPtrDflt Terminate
+syn keyword xkbTModif default hidden partial virtual
+syn keyword xkbSect alphanumeric_keys alternate_group function_keys keypad_keys modifier_keys xkb_compatibility xkb_geometry xkb_keycodes xkb_keymap xkb_semantics xkb_symbols xkb_types
+
+" Define the default highlighting
+
+hi def link xkbModif xkbPreproc
+hi def link xkbTModif xkbPreproc
+hi def link xkbPreproc Preproc
+
+hi def link xkbIdentifier Keyword
+hi def link xkbFunction Function
+hi def link xkbSect Type
+hi def link xkbPhysicalKey Identifier
+hi def link xkbKeyword Keyword
+
+hi def link xkbComment Comment
+hi def link xkbTodo Todo
+
+hi def link xkbConstant Constant
+hi def link xkbString String
+
+hi def link xkbSpecialChar xkbSpecial
+hi def link xkbSpecial Special
+
+hi def link xkbParenError xkbBalancingError
+hi def link xkbBraceError xkbBalancingError
+hi def link xkbBraketError xkbBalancingError
+hi def link xkbBalancingError xkbError
+hi def link xkbCommentStartError xkbCommentError
+hi def link xkbCommentError xkbError
+hi def link xkbError Error
+
+
+let b:current_syntax = "xkb"
diff --git a/runtime/syntax/xmath.vim b/runtime/syntax/xmath.vim
new file mode 100644
index 0000000..37ae951
--- /dev/null
+++ b/runtime/syntax/xmath.vim
@@ -0,0 +1,225 @@
+" Vim syntax file
+" Language: xmath (a simulation tool)
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Last Change: Aug 31, 2016
+" Version: 10
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_XMATH
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" parenthesis sanity checker
+syn region xmathZone matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" transparent contains=ALLBUT,xmathError,xmathBraceError,xmathCurlyError
+syn region xmathZone matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" transparent contains=ALLBUT,xmathError,xmathBraceError,xmathParenError
+syn region xmathZone matchgroup=Delimiter start="\[" matchgroup=Delimiter end="]" transparent contains=ALLBUT,xmathError,xmathCurlyError,xmathParenError
+syn match xmathError "[)\]}]"
+syn match xmathBraceError "[)}]" contained
+syn match xmathCurlyError "[)\]]" contained
+syn match xmathParenError "[\]}]" contained
+syn match xmathComma "[,;:]"
+syn match xmathComma "\.\.\.$"
+
+" A bunch of useful xmath keywords
+syn case ignore
+syn keyword xmathFuncCmd function endfunction command endcommand
+syn keyword xmathStatement abort beep debug default define
+syn keyword xmathStatement execute exit pause return undefine
+syn keyword xmathConditional if else elseif endif
+syn keyword xmathRepeat while for endwhile endfor
+syn keyword xmathCmd anigraph deletedatastore keep renamedatastore
+syn keyword xmathCmd autocode deletestd linkhyper renamestd
+syn keyword xmathCmd build deletesuperblock linksim renamesuperblock
+syn keyword xmathCmd comment deletetransition listusertype save
+syn keyword xmathCmd copydatastore deleteusertype load sbadisplay
+syn keyword xmathCmd copystd detailmodel lock set
+syn keyword xmathCmd copysuperblock display minmax_display setsbdefault
+syn keyword xmathCmd createblock documentit modifyblock show
+syn keyword xmathCmd createbubble editcatalog modifybubble showlicense
+syn keyword xmathCmd createconnection erase modifystd showsbdefault
+syn keyword xmathCmd creatertf expandsuperbubble modifysuperblock stop
+syn keyword xmathCmd createstd for modifytransition stopcosim
+syn keyword xmathCmd createsuperblock go modifyusertype syntax
+syn keyword xmathCmd createsuperbubble goto new unalias
+syn keyword xmathCmd createtransition hardcopy next unlock
+syn keyword xmathCmd createusertype help polargraph usertype
+syn keyword xmathCmd delete hyperbuild print whatis
+syn keyword xmathCmd deleteblock if printmodel while
+syn keyword xmathCmd deletebubble ifilter quit who
+syn keyword xmathCmd deleteconnection ipcwc remove xgraph
+
+syn keyword xmathFunc abcd eye irea querystdoptions
+syn keyword xmathFunc abs eyepattern is querysuperblock
+syn keyword xmathFunc acos feedback ISID querysuperblockopt
+syn keyword xmathFunc acosh fft ISID Models querytransition
+syn keyword xmathFunc adconversion fftpdm kronecker querytransitionopt
+syn keyword xmathFunc afeedback filter length qz
+syn keyword xmathFunc all find limit rampinvar
+syn keyword xmathFunc ambiguity firparks lin random
+syn keyword xmathFunc amdemod firremez lin30 randpdm
+syn keyword xmathFunc analytic firwind linearfm randpert
+syn keyword xmathFunc analyze fmdemod linfnorm randsys
+syn keyword xmathFunc any forwdiff lintodb rank
+syn keyword xmathFunc append fprintf list rayleigh
+syn keyword xmathFunc argn frac log rcepstrum
+syn keyword xmathFunc argv fracred log10 rcond
+syn keyword xmathFunc arma freq logm rdintegrate
+syn keyword xmathFunc arma2ss freqcircle lognormal read
+syn keyword xmathFunc armax freqcont logspace real
+syn keyword xmathFunc ascii frequencyhop lowpass rectify
+syn keyword xmathFunc asin fsesti lpopt redschur
+syn keyword xmathFunc asinh fslqgcomp lqgcomp reflect
+syn keyword xmathFunc atan fsregu lqgltr regulator
+syn keyword xmathFunc atan2 fwls ls residue
+syn keyword xmathFunc atanh gabor ls2unc riccati
+syn keyword xmathFunc attach_ac100 garb ls2var riccati_eig
+syn keyword xmathFunc backdiff gaussian lsjoin riccati_schur
+syn keyword xmathFunc balance gcexp lu ricean
+syn keyword xmathFunc balmoore gcos lyapunov rifd
+syn keyword xmathFunc bandpass gdfileselection makecontinuous rlinfo
+syn keyword xmathFunc bandstop gdmessage makematrix rlocus
+syn keyword xmathFunc bj gdselection makepoly rms
+syn keyword xmathFunc blknorm genconv margin rootlocus
+syn keyword xmathFunc bode get markoff roots
+syn keyword xmathFunc bpm get_info30 matchedpz round
+syn keyword xmathFunc bpm2inn get_inn max rref
+syn keyword xmathFunc bpmjoin gfdm maxlike rve_get
+syn keyword xmathFunc bpmsplit gfsk mean rve_info
+syn keyword xmathFunc bst gfskernel mergeseg rve_reset
+syn keyword xmathFunc buttconstr gfunction min rve_update
+syn keyword xmathFunc butterworth ggauss minimal samplehold
+syn keyword xmathFunc cancel giv mkpert schur
+syn keyword xmathFunc canform giv2var mkphase sdf
+syn keyword xmathFunc ccepstrum givjoin mma sds
+syn keyword xmathFunc char gpsk mmaget sdtrsp
+syn keyword xmathFunc chebconstr gpulse mmaput sec
+syn keyword xmathFunc chebyshev gqam mod sech
+syn keyword xmathFunc check gqpsk modal siginterp
+syn keyword xmathFunc cholesky gramp modalstate sign
+syn keyword xmathFunc chop gsawtooth modcarrier sim
+syn keyword xmathFunc circonv gsigmoid mreduce sim30
+syn keyword xmathFunc circorr gsin mtxplt simin
+syn keyword xmathFunc clock gsinc mu simin30
+syn keyword xmathFunc clocus gsqpsk mulhank simout
+syn keyword xmathFunc clsys gsquarewave multipath simout30
+syn keyword xmathFunc coherence gstep musynfit simtransform
+syn keyword xmathFunc colorind GuiDialogCreate mxstr2xmstr sin
+syn keyword xmathFunc combinepf GuiDialogDestroy mxstring2xmstring singriccati
+syn keyword xmathFunc commentof GuiFlush names sinh
+syn keyword xmathFunc compare GuiGetValue nichols sinm
+syn keyword xmathFunc complementaryerf GuiManage noisefilt size
+syn keyword xmathFunc complexenvelope GuiPlot none smargin
+syn keyword xmathFunc complexfreqshift GuiPlotGet norm sns2sys
+syn keyword xmathFunc concatseg GuiSetValue numden sort
+syn keyword xmathFunc condition GuiShellCreate nyquist spectrad
+syn keyword xmathFunc conj GuiShellDeiconify obscf spectrum
+syn keyword xmathFunc conmap GuiShellDestroy observable spline
+syn keyword xmathFunc connect GuiShellIconify oe sprintf
+syn keyword xmathFunc conpdm GuiShellLower ones sqrt
+syn keyword xmathFunc constellation GuiShellRaise ophank sqrtm
+syn keyword xmathFunc consys GuiShellRealize optimize sresidualize
+syn keyword xmathFunc controllable GuiShellUnrealize optscale ss2arma
+syn keyword xmathFunc convolve GuiTimer orderfilt sst
+syn keyword xmathFunc correlate GuiToolCreate orderstate ssv
+syn keyword xmathFunc cos GuiToolDestroy orth stable
+syn keyword xmathFunc cosh GuiToolExist oscmd stair
+syn keyword xmathFunc cosm GuiUnmanage oscope starp
+syn keyword xmathFunc cot GuiWidgetExist osscale step
+syn keyword xmathFunc coth h2norm padcrop stepinvar
+syn keyword xmathFunc covariance h2syn partialsum string
+syn keyword xmathFunc csc hadamard pdm stringex
+syn keyword xmathFunc csch hankelsv pdmslice substr
+syn keyword xmathFunc csum hessenberg pem subsys
+syn keyword xmathFunc ctrcf highpass perfplots sum
+syn keyword xmathFunc ctrlplot hilbert period svd
+syn keyword xmathFunc daug hilberttransform pfscale svplot
+syn keyword xmathFunc dbtolin hinfcontr phaseshift sweep
+syn keyword xmathFunc dct hinfnorm pinv symbolmap
+syn keyword xmathFunc decimate hinfsyn plot sys2sns
+syn keyword xmathFunc defFreqRange histogram plot30 sysic
+syn keyword xmathFunc defTimeRange idfreq pmdemod Sysid
+syn keyword xmathFunc delay idimpulse poisson system
+syn keyword xmathFunc delsubstr idsim poissonimpulse tan
+syn keyword xmathFunc det ifft poleplace tanh
+syn keyword xmathFunc detrend imag poles taper
+syn keyword xmathFunc dht impinvar polezero tfid
+syn keyword xmathFunc diagonal impplot poltrend toeplitz
+syn keyword xmathFunc differentiate impulse polyfit trace
+syn keyword xmathFunc directsequence index polynomial tril
+syn keyword xmathFunc discretize indexlist polyval trim
+syn keyword xmathFunc divide initial polyvalm trim30
+syn keyword xmathFunc domain initmodel prbs triu
+syn keyword xmathFunc dst initx0 product trsp
+syn keyword xmathFunc eig inn2bpm psd truncate
+syn keyword xmathFunc ellipconstr inn2pe put_inn tustin
+syn keyword xmathFunc elliptic inn2unc qpopt uniform
+syn keyword xmathFunc erf insertseg qr val
+syn keyword xmathFunc error int quantize variance
+syn keyword xmathFunc estimator integrate queryblock videolines
+syn keyword xmathFunc etfe integratedump queryblockoptions wcbode
+syn keyword xmathFunc exist interp querybubble wcgain
+syn keyword xmathFunc exp interpolate querybubbleoptionswindow
+syn keyword xmathFunc expm inv querycatalog wtbalance
+syn keyword xmathFunc extractchan invhilbert queryconnection zeros
+syn keyword xmathFunc extractseg iqmix querystd
+
+syn case match
+
+" Labels (supports xmath's goto)
+syn match xmathLabel "^\s*<[a-zA-Z_][a-zA-Z0-9]*>"
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match xmathSpecial contained "\\\d\d\d\|\\."
+syn region xmathString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=xmathSpecial,@Spell
+syn match xmathCharacter "'[^\\]'"
+syn match xmathSpecialChar "'\\.'"
+
+syn match xmathNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
+
+" Comments:
+" xmath supports #... (like Unix shells)
+" and #{ ... }# comment blocks
+syn cluster xmathCommentGroup contains=xmathString,xmathTodo,@Spell
+syn keyword xmathTodo contained COMBAK DEBUG FIXME Todo TODO XXX
+syn match xmathComment "#.*$" contains=@xmathCommentGroup
+syn region xmathCommentBlock start="#{" end="}#" contains=@xmathCommentGroup
+
+" synchronizing
+syn sync match xmathSyncComment grouphere xmathCommentBlock "#{"
+syn sync match xmathSyncComment groupthere NONE "}#"
+
+" Define the default highlighting.
+if !exists("skip_xmath_syntax_inits")
+
+ hi def link xmathBraceError xmathError
+ hi def link xmathCmd xmathStatement
+ hi def link xmathCommentBlock xmathComment
+ hi def link xmathCurlyError xmathError
+ hi def link xmathFuncCmd xmathStatement
+ hi def link xmathParenError xmathError
+
+ " The default methods for highlighting. Can be overridden later
+ hi def link xmathCharacter Character
+ hi def link xmathComma Delimiter
+ hi def link xmathComment Comment
+ hi def link xmathCommentBlock Comment
+ hi def link xmathConditional Conditional
+ hi def link xmathError Error
+ hi def link xmathFunc Function
+ hi def link xmathLabel PreProc
+ hi def link xmathNumber Number
+ hi def link xmathRepeat Repeat
+ hi def link xmathSpecial Type
+ hi def link xmathSpecialChar SpecialChar
+ hi def link xmathStatement Statement
+ hi def link xmathString String
+ hi def link xmathTodo Todo
+
+endif
+
+let b:current_syntax = "xmath"
+
+" vim: ts=17
diff --git a/runtime/syntax/xml.vim b/runtime/syntax/xml.vim
new file mode 100644
index 0000000..d99f8b4
--- /dev/null
+++ b/runtime/syntax/xml.vim
@@ -0,0 +1,361 @@
+" Vim syntax file
+" Language: XML
+" Maintainer: Christian Brabandt <cb@256bit.org>
+" Repository: https://github.com/chrisbra/vim-xml-ftplugin
+" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
+" Author: Paul Siegmann <pauls@euronet.nl>
+" Last Changed: Nov 03, 2019
+" Filenames: *.xml
+" Last Change:
+" 20190923 - Fix xmlEndTag to match xmlTag (vim/vim#884)
+" 20190924 - Fix xmlAttribute property (amadeus/vim-xml@d8ce1c946)
+" 20191103 - Enable spell checking globally
+" 20210428 - Improve syntax synchronizing
+
+" CONFIGURATION:
+" syntax folding can be turned on by
+"
+" let g:xml_syntax_folding = 1
+"
+" before the syntax file gets loaded (e.g. in ~/.vimrc).
+" This might slow down syntax highlighting significantly,
+" especially for large files.
+"
+" CREDITS:
+" The original version was derived by Paul Siegmann from
+" Claudio Fleiner's html.vim.
+"
+" REFERENCES:
+" [1] http://www.w3.org/TR/2000/REC-xml-20001006
+" [2] http://www.w3.org/XML/1998/06/xmlspec-report-19980910.htm
+"
+" as <hirauchi@kiwi.ne.jp> pointed out according to reference [1]
+"
+" 2.3 Common Syntactic Constructs
+" [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender
+" [5] Name ::= (Letter | '_' | ':') (NameChar)*
+"
+" NOTE:
+" 1) empty tag delimiters "/>" inside attribute values (strings)
+" confuse syntax highlighting.
+" 2) for large files, folding can be pretty slow, especially when
+" loading a file the first time and viewoptions contains 'folds'
+" so that folds of previous sessions are applied.
+" Don't use 'foldmethod=syntax' in this case.
+
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:xml_cpo_save = &cpo
+set cpo&vim
+
+syn case match
+
+" Allow spell checking in tag values,
+" there is no syntax region for that,
+" so enable spell checking in top-level elements
+" <tag>This text is spell checked</tag>
+syn spell toplevel
+
+" mark illegal characters
+syn match xmlError "[<&]"
+
+" strings (inside tags) aka VALUES
+"
+" EXAMPLE:
+"
+" <tag foo.attribute = "value">
+" ^^^^^^^
+syn region xmlString contained start=+"+ end=+"+ contains=xmlEntity,@Spell display
+syn region xmlString contained start=+'+ end=+'+ contains=xmlEntity,@Spell display
+
+
+" punctuation (within attributes) e.g. <tag xml:foo.attribute ...>
+" ^ ^
+" syn match xmlAttribPunct +[-:._]+ contained display
+syn match xmlAttribPunct +[:.]+ contained display
+
+" no highlighting for xmlEqual (xmlEqual has no highlighting group)
+syn match xmlEqual +=+ display
+
+
+" attribute, everything before the '='
+"
+" PROVIDES: @xmlAttribHook
+"
+" EXAMPLE:
+"
+" <tag foo.attribute = "value">
+" ^^^^^^^^^^^^^
+"
+syn match xmlAttrib
+ \ +[-'"<]\@1<!\<[a-zA-Z:_][-.0-9a-zA-Z:_]*\>\%(['"]\@!\|$\)+
+ \ contained
+ \ contains=xmlAttribPunct,@xmlAttribHook
+ \ display
+
+
+" namespace spec
+"
+" PROVIDES: @xmlNamespaceHook
+"
+" EXAMPLE:
+"
+" <xsl:for-each select = "lola">
+" ^^^
+"
+if exists("g:xml_namespace_transparent")
+syn match xmlNamespace
+ \ +\(<\|</\)\@2<=[^ /!?<>"':]\+[:]\@=+
+ \ contained
+ \ contains=@xmlNamespaceHook
+ \ transparent
+ \ display
+else
+syn match xmlNamespace
+ \ +\(<\|</\)\@2<=[^ /!?<>"':]\+[:]\@=+
+ \ contained
+ \ contains=@xmlNamespaceHook
+ \ display
+endif
+
+
+" tag name
+"
+" PROVIDES: @xmlTagHook
+"
+" EXAMPLE:
+"
+" <tag foo.attribute = "value">
+" ^^^
+"
+syn match xmlTagName
+ \ +\%(<\|</\)\@2<=[^ /!?<>"']\++
+ \ contained
+ \ contains=xmlNamespace,xmlAttribPunct,@xmlTagHook
+ \ display
+
+
+if exists('g:xml_syntax_folding')
+
+ " start tag
+ " use matchgroup=xmlTag to skip over the leading '<'
+ "
+ " PROVIDES: @xmlStartTagHook
+ "
+ " EXAMPLE:
+ "
+ " <tag id="whoops">
+ " s^^^^^^^^^^^^^^^e
+ "
+ syn region xmlTag
+ \ matchgroup=xmlTag start=+<[^ /!?<>"']\@=+
+ \ matchgroup=xmlTag end=+>+
+ \ contained
+ \ contains=xmlError,xmlTagName,xmlAttrib,xmlEqual,xmlString,@xmlStartTagHook
+
+
+ " highlight the end tag
+ "
+ " PROVIDES: @xmlTagHook
+ " (should we provide a separate @xmlEndTagHook ?)
+ "
+ " EXAMPLE:
+ "
+ " </tag>
+ " ^^^^^^
+ "
+ syn region xmlEndTag
+ \ matchgroup=xmlTag start=+</[^ /!?<>"']\@=+
+ \ matchgroup=xmlTag end=+>+
+ \ contained
+ \ contains=xmlTagName,xmlNamespace,xmlAttribPunct,@xmlTagHook
+
+ " tag elements with syntax-folding.
+ " NOTE: NO HIGHLIGHTING -- highlighting is done by contained elements
+ "
+ " PROVIDES: @xmlRegionHook
+ "
+ " EXAMPLE:
+ "
+ " <tag id="whoops">
+ " <!-- comment -->
+ " <another.tag></another.tag>
+ " <empty.tag/>
+ " some data
+ " </tag>
+ "
+ syn region xmlRegion
+ \ start=+<\z([^ /!?<>"']\+\)+
+ \ skip=+<!--\_.\{-}-->+
+ \ end=+</\z1\_\s\{-}>+
+ \ end=+/>+
+ \ fold
+ \ contains=xmlTag,xmlEndTag,xmlCdata,xmlRegion,xmlComment,xmlEntity,xmlProcessing,@xmlRegionHook,@Spell
+ \ keepend
+ \ extend
+
+else
+
+ " no syntax folding:
+ " - contained attribute removed
+ " - xmlRegion not defined
+ "
+ syn region xmlTag
+ \ matchgroup=xmlTag start=+<[^ /!?<>"']\@=+
+ \ matchgroup=xmlTag end=+>+
+ \ contains=xmlError,xmlTagName,xmlAttrib,xmlEqual,xmlString,@xmlStartTagHook
+
+ syn region xmlEndTag
+ \ matchgroup=xmlTag start=+</[^ /!?<>"']\@=+
+ \ matchgroup=xmlTag end=+>+
+ \ contains=xmlTagName,xmlNamespace,xmlAttribPunct,@xmlTagHook
+
+endif
+
+
+" &entities; compare with dtd
+syn match xmlEntity "&[^; \t]*;" contains=xmlEntityPunct
+syn match xmlEntityPunct contained "[&.;]"
+
+if exists('g:xml_syntax_folding')
+
+ " The real comments (this implements the comments as defined by xml,
+ " but not all xml pages actually conform to it. Errors are flagged.
+ syn region xmlComment
+ \ start=+<!+
+ \ end=+>+
+ \ contains=xmlCommentStart,xmlCommentError
+ \ extend
+ \ fold
+
+else
+
+ " no syntax folding:
+ " - fold attribute removed
+ "
+ syn region xmlComment
+ \ start=+<!+
+ \ end=+>+
+ \ contains=xmlCommentStart,xmlCommentError
+ \ extend
+
+endif
+
+syn match xmlCommentStart contained "<!" nextgroup=xmlCommentPart
+syn keyword xmlTodo contained TODO FIXME XXX
+syn match xmlCommentError contained "[^><!]"
+syn region xmlCommentPart
+ \ start=+--+
+ \ end=+--+
+ \ contained
+ \ contains=xmlTodo,@xmlCommentHook,@Spell
+
+
+" CData sections
+"
+" PROVIDES: @xmlCdataHook
+"
+syn region xmlCdata
+ \ start=+<!\[CDATA\[+
+ \ end=+]]>+
+ \ contains=xmlCdataStart,xmlCdataEnd,@xmlCdataHook,@Spell
+ \ keepend
+ \ extend
+
+" using the following line instead leads to corrupt folding at CDATA regions
+" syn match xmlCdata +<!\[CDATA\[\_.\{-}]]>+ contains=xmlCdataStart,xmlCdataEnd,@xmlCdataHook
+syn match xmlCdataStart +<!\[CDATA\[+ contained contains=xmlCdataCdata
+syn keyword xmlCdataCdata CDATA contained
+syn match xmlCdataEnd +]]>+ contained
+
+
+" Processing instructions
+" This allows "?>" inside strings -- good idea?
+syn region xmlProcessing matchgroup=xmlProcessingDelim start="<?" end="?>" contains=xmlAttrib,xmlEqual,xmlString
+
+
+if exists('g:xml_syntax_folding')
+
+ " DTD -- we use dtd.vim here
+ syn region xmlDocType matchgroup=xmlDocTypeDecl
+ \ start="<!DOCTYPE"he=s+2,rs=s+2 end=">"
+ \ fold
+ \ contains=xmlDocTypeKeyword,xmlInlineDTD,xmlString
+else
+
+ " no syntax folding:
+ " - fold attribute removed
+ "
+ syn region xmlDocType matchgroup=xmlDocTypeDecl
+ \ start="<!DOCTYPE"he=s+2,rs=s+2 end=">"
+ \ contains=xmlDocTypeKeyword,xmlInlineDTD,xmlString
+
+endif
+
+syn keyword xmlDocTypeKeyword contained DOCTYPE PUBLIC SYSTEM
+syn region xmlInlineDTD contained matchgroup=xmlDocTypeDecl start="\[" end="]" contains=@xmlDTD
+syn include @xmlDTD <sfile>:p:h/dtd.vim
+unlet b:current_syntax
+
+
+" synchronizing
+
+syn sync match xmlSyncComment grouphere xmlComment +<!--+
+syn sync match xmlSyncComment groupthere NONE +-->+
+
+" The following is slow on large documents (and the doctype is optional
+" syn sync match xmlSyncDT grouphere xmlDocType +\_.\(<!DOCTYPE\)\@=+
+" syn sync match xmlSyncDT groupthere NONE +]>+
+
+if exists('g:xml_syntax_folding')
+ syn sync match xmlSync grouphere xmlRegion +\_.\(<[^ /!?<>"']\+\)\@=+
+ " syn sync match xmlSync grouphere xmlRegion "<[^ /!?<>"']*>"
+ syn sync match xmlSync groupthere xmlRegion +</[^ /!?<>"']\+>+
+endif
+
+syn sync minlines=100 maxlines=200
+
+
+" The default highlighting.
+hi def link xmlTodo Todo
+hi def link xmlTag Function
+hi def link xmlTagName Function
+hi def link xmlEndTag Identifier
+if !exists("g:xml_namespace_transparent")
+ hi def link xmlNamespace Tag
+endif
+hi def link xmlEntity Statement
+hi def link xmlEntityPunct Type
+
+hi def link xmlAttribPunct Comment
+hi def link xmlAttrib Type
+
+hi def link xmlString String
+hi def link xmlComment Comment
+hi def link xmlCommentStart xmlComment
+hi def link xmlCommentPart Comment
+hi def link xmlCommentError Error
+hi def link xmlError Error
+
+hi def link xmlProcessingDelim Comment
+hi def link xmlProcessing Type
+
+hi def link xmlCdata String
+hi def link xmlCdataCdata Statement
+hi def link xmlCdataStart Type
+hi def link xmlCdataEnd Type
+
+hi def link xmlDocTypeDecl Function
+hi def link xmlDocTypeKeyword Statement
+hi def link xmlInlineDTD Function
+
+let b:current_syntax = "xml"
+
+let &cpo = s:xml_cpo_save
+unlet s:xml_cpo_save
+
+" vim: ts=4
diff --git a/runtime/syntax/xmodmap.vim b/runtime/syntax/xmodmap.vim
new file mode 100644
index 0000000..28cae3e
--- /dev/null
+++ b/runtime/syntax/xmodmap.vim
@@ -0,0 +1,677 @@
+" Vim syntax file
+" Language: xmodmap(1) definition file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-04-19
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword xmodmapTodo contained TODO FIXME XXX NOTE
+
+syn region xmodmapComment display oneline start='^!' end='$'
+ \ contains=xmodmapTodo,@Spell
+
+syn case ignore
+syn match xmodmapInt display '\<\d\+\>'
+syn match xmodmapHex display '\<0x\x\+\>'
+syn match xmodmapOctal display '\<0\o\+\>'
+syn match xmodmapOctalError display '\<0\o*[89]\d*'
+syn case match
+
+syn match xmodmapKeySym display '\<[A-Za-z]\>'
+
+" #include <X11/keysymdef.h>
+syn keyword xmodmapKeySym XK_VoidSymbol XK_BackSpace XK_Tab XK_Linefeed
+ \ XK_Clear XK_Return XK_Pause XK_Scroll_Lock
+ \ XK_Sys_Req XK_Escape XK_Delete XK_Multi_key
+ \ XK_Codeinput XK_SingleCandidate
+ \ XK_MultipleCandidate XK_PreviousCandidate
+ \ XK_Kanji XK_Muhenkan XK_Henkan_Mode
+ \ XK_Henkan XK_Romaji XK_Hiragana XK_Katakana
+ \ XK_Hiragana_Katakana XK_Zenkaku XK_Hankaku
+ \ XK_Zenkaku_Hankaku XK_Touroku XK_Massyo
+ \ XK_Kana_Lock XK_Kana_Shift XK_Eisu_Shift
+ \ XK_Eisu_toggle XK_Kanji_Bangou XK_Zen_Koho
+ \ XK_Mae_Koho XK_Home XK_Left XK_Up XK_Right
+ \ XK_Down XK_Prior XK_Page_Up XK_Next
+ \ XK_Page_Down XK_End XK_Begin XK_Select
+ \ XK_Print XK_Execute XK_Insert XK_Undo XK_Redo
+ \ XK_Menu XK_Find XK_Cancel XK_Help XK_Break
+ \ XK_Mode_switch XK_script_switch XK_Num_Lock
+ \ XK_KP_Space XK_KP_Tab XK_KP_Enter XK_KP_F1
+ \ XK_KP_F2 XK_KP_F3 XK_KP_F4 XK_KP_Home
+ \ XK_KP_Left XK_KP_Up XK_KP_Right XK_KP_Down
+ \ XK_KP_Prior XK_KP_Page_Up XK_KP_Next
+ \ XK_KP_Page_Down XK_KP_End XK_KP_Begin
+ \ XK_KP_Insert XK_KP_Delete XK_KP_Equal
+ \ XK_KP_Multiply XK_KP_Add XK_KP_Separator
+ \ XK_KP_Subtract XK_KP_Decimal XK_KP_Divide
+ \ XK_KP_0 XK_KP_1 XK_KP_2 XK_KP_3 XK_KP_4
+ \ XK_KP_5 XK_KP_6 XK_KP_7 XK_KP_8 XK_KP_9 XK_F1
+ \ XK_F2 XK_F3 XK_F4 XK_F5 XK_F6 XK_F7 XK_F8
+ \ XK_F9 XK_F10 XK_F11 XK_L1 XK_F12 XK_L2 XK_F13
+ \ XK_L3 XK_F14 XK_L4 XK_F15 XK_L5 XK_F16 XK_L6
+ \ XK_F17 XK_L7 XK_F18 XK_L8 XK_F19 XK_L9 XK_F20
+ \ XK_L10 XK_F21 XK_R1 XK_F22 XK_R2 XK_F23
+ \ XK_R3 XK_F24 XK_R4 XK_F25 XK_R5 XK_F26
+ \ XK_R6 XK_F27 XK_R7 XK_F28 XK_R8 XK_F29
+ \ XK_R9 XK_F30 XK_R10 XK_F31 XK_R11 XK_F32
+ \ XK_R12 XK_F33 XK_R13 XK_F34 XK_R14 XK_F35
+ \ XK_R15 XK_Shift_L XK_Shift_R XK_Control_L
+ \ XK_Control_R XK_Caps_Lock XK_Shift_Lock
+ \ XK_Meta_L XK_Meta_R XK_Alt_L XK_Alt_R
+ \ XK_Super_L XK_Super_R XK_Hyper_L XK_Hyper_R
+ \ XK_dead_hook XK_dead_horn XK_3270_Duplicate
+ \ XK_3270_FieldMark XK_3270_Right2 XK_3270_Left2
+ \ XK_3270_BackTab XK_3270_EraseEOF
+ \ XK_3270_EraseInput XK_3270_Reset
+ \ XK_3270_Quit XK_3270_PA1 XK_3270_PA2
+ \ XK_3270_PA3 XK_3270_Test XK_3270_Attn
+ \ XK_3270_CursorBlink XK_3270_AltCursor
+ \ XK_3270_KeyClick XK_3270_Jump
+ \ XK_3270_Ident XK_3270_Rule XK_3270_Copy
+ \ XK_3270_Play XK_3270_Setup XK_3270_Record
+ \ XK_3270_ChangeScreen XK_3270_DeleteWord
+ \ XK_3270_ExSelect XK_3270_CursorSelect
+ \ XK_3270_PrintScreen XK_3270_Enter XK_space
+ \ XK_exclam XK_quotedbl XK_numbersign XK_dollar
+ \ XK_percent XK_ampersand XK_apostrophe
+ \ XK_quoteright XK_parenleft XK_parenright
+ \ XK_asterisk XK_plus XK_comma XK_minus
+ \ XK_period XK_slash XK_0 XK_1 XK_2 XK_3
+ \ XK_4 XK_5 XK_6 XK_7 XK_8 XK_9 XK_colon
+ \ XK_semicolon XK_less XK_equal XK_greater
+ \ XK_question XK_at XK_A XK_B XK_C XK_D XK_E
+ \ XK_F XK_G XK_H XK_I XK_J XK_K XK_L XK_M XK_N
+ \ XK_O XK_P XK_Q XK_R XK_S XK_T XK_U XK_V XK_W
+ \ XK_X XK_Y XK_Z XK_bracketleft XK_backslash
+ \ XK_bracketright XK_asciicircum XK_underscore
+ \ XK_grave XK_quoteleft XK_a XK_b XK_c XK_d
+ \ XK_e XK_f XK_g XK_h XK_i XK_j XK_k XK_l
+ \ XK_m XK_n XK_o XK_p XK_q XK_r XK_s XK_t XK_u
+ \ XK_v XK_w XK_x XK_y XK_z XK_braceleft XK_bar
+ \ XK_braceright XK_asciitilde XK_nobreakspace
+ \ XK_exclamdown XK_cent XK_sterling XK_currency
+ \ XK_yen XK_brokenbar XK_section XK_diaeresis
+ \ XK_copyright XK_ordfeminine XK_guillemotleft
+ \ XK_notsign XK_hyphen XK_registered XK_macron
+ \ XK_degree XK_plusminus XK_twosuperior
+ \ XK_threesuperior XK_acute XK_mu XK_paragraph
+ \ XK_periodcentered XK_cedilla XK_onesuperior
+ \ XK_masculine XK_guillemotright XK_onequarter
+ \ XK_onehalf XK_threequarters XK_questiondown
+ \ XK_Agrave XK_Aacute XK_Acircumflex XK_Atilde
+ \ XK_Adiaeresis XK_Aring XK_AE XK_Ccedilla
+ \ XK_Egrave XK_Eacute XK_Ecircumflex
+ \ XK_Ediaeresis XK_Igrave XK_Iacute
+ \ XK_Icircumflex XK_Idiaeresis XK_ETH XK_Eth
+ \ XK_Ntilde XK_Ograve XK_Oacute XK_Ocircumflex
+ \ XK_Otilde XK_Odiaeresis XK_multiply
+ \ XK_Ooblique XK_Ugrave XK_Uacute XK_Ucircumflex
+ \ XK_Udiaeresis XK_Yacute XK_THORN XK_Thorn
+ \ XK_ssharp XK_agrave XK_aacute XK_acircumflex
+ \ XK_atilde XK_adiaeresis XK_aring XK_ae
+ \ XK_ccedilla XK_egrave XK_eacute XK_ecircumflex
+ \ XK_ediaeresis XK_igrave XK_iacute
+ \ XK_icircumflex XK_idiaeresis XK_eth XK_ntilde
+ \ XK_ograve XK_oacute XK_ocircumflex XK_otilde
+ \ XK_odiaeresis XK_division XK_oslash XK_ugrave
+ \ XK_uacute XK_ucircumflex XK_udiaeresis
+ \ XK_yacute XK_thorn XK_ydiaeresis XK_Aogonek
+ \ XK_breve XK_Lstroke XK_Lcaron XK_Sacute
+ \ XK_Scaron XK_Scedilla XK_Tcaron XK_Zacute
+ \ XK_Zcaron XK_Zabovedot XK_aogonek XK_ogonek
+ \ XK_lstroke XK_lcaron XK_sacute XK_caron
+ \ XK_scaron XK_scedilla XK_tcaron XK_zacute
+ \ XK_doubleacute XK_zcaron XK_zabovedot
+ \ XK_Racute XK_Abreve XK_Lacute XK_Cacute
+ \ XK_Ccaron XK_Eogonek XK_Ecaron XK_Dcaron
+ \ XK_Dstroke XK_Nacute XK_Ncaron XK_Odoubleacute
+ \ XK_Rcaron XK_Uring XK_Udoubleacute
+ \ XK_Tcedilla XK_racute XK_abreve XK_lacute
+ \ XK_cacute XK_ccaron XK_eogonek XK_ecaron
+ \ XK_dcaron XK_dstroke XK_nacute XK_ncaron
+ \ XK_odoubleacute XK_udoubleacute XK_rcaron
+ \ XK_uring XK_tcedilla XK_abovedot XK_Hstroke
+ \ XK_Hcircumflex XK_Iabovedot XK_Gbreve
+ \ XK_Jcircumflex XK_hstroke XK_hcircumflex
+ \ XK_idotless XK_gbreve XK_jcircumflex
+ \ XK_Cabovedot XK_Ccircumflex XK_Gabovedot
+ \ XK_Gcircumflex XK_Ubreve XK_Scircumflex
+ \ XK_cabovedot XK_ccircumflex XK_gabovedot
+ \ XK_gcircumflex XK_ubreve XK_scircumflex XK_kra
+ \ XK_kappa XK_Rcedilla XK_Itilde XK_Lcedilla
+ \ XK_Emacron XK_Gcedilla XK_Tslash XK_rcedilla
+ \ XK_itilde XK_lcedilla XK_emacron XK_gcedilla
+ \ XK_tslash XK_ENG XK_eng XK_Amacron XK_Iogonek
+ \ XK_Eabovedot XK_Imacron XK_Ncedilla XK_Omacron
+ \ XK_Kcedilla XK_Uogonek XK_Utilde XK_Umacron
+ \ XK_amacron XK_iogonek XK_eabovedot XK_imacron
+ \ XK_ncedilla XK_omacron XK_kcedilla XK_uogonek
+ \ XK_utilde XK_umacron XK_Babovedot XK_babovedot
+ \ XK_Dabovedot XK_Wgrave XK_Wacute XK_dabovedot
+ \ XK_Ygrave XK_Fabovedot XK_fabovedot
+ \ XK_Mabovedot XK_mabovedot XK_Pabovedot
+ \ XK_wgrave XK_pabovedot XK_wacute XK_Sabovedot
+ \ XK_ygrave XK_Wdiaeresis XK_wdiaeresis
+ \ XK_sabovedot XK_Wcircumflex XK_Tabovedot
+ \ XK_Ycircumflex XK_wcircumflex
+ \ XK_tabovedot XK_ycircumflex XK_OE XK_oe
+ \ XK_Ydiaeresis XK_overline XK_kana_fullstop
+ \ XK_kana_openingbracket XK_kana_closingbracket
+ \ XK_kana_comma XK_kana_conjunctive
+ \ XK_kana_middledot XK_kana_WO XK_kana_a
+ \ XK_kana_i XK_kana_u XK_kana_e XK_kana_o
+ \ XK_kana_ya XK_kana_yu XK_kana_yo
+ \ XK_kana_tsu XK_kana_tu XK_prolongedsound
+ \ XK_kana_A XK_kana_I XK_kana_U XK_kana_E
+ \ XK_kana_O XK_kana_KA XK_kana_KI XK_kana_KU
+ \ XK_kana_KE XK_kana_KO XK_kana_SA XK_kana_SHI
+ \ XK_kana_SU XK_kana_SE XK_kana_SO XK_kana_TA
+ \ XK_kana_CHI XK_kana_TI XK_kana_TSU
+ \ XK_kana_TU XK_kana_TE XK_kana_TO XK_kana_NA
+ \ XK_kana_NI XK_kana_NU XK_kana_NE XK_kana_NO
+ \ XK_kana_HA XK_kana_HI XK_kana_FU XK_kana_HU
+ \ XK_kana_HE XK_kana_HO XK_kana_MA XK_kana_MI
+ \ XK_kana_MU XK_kana_ME XK_kana_MO XK_kana_YA
+ \ XK_kana_YU XK_kana_YO XK_kana_RA XK_kana_RI
+ \ XK_kana_RU XK_kana_RE XK_kana_RO XK_kana_WA
+ \ XK_kana_N XK_voicedsound XK_semivoicedsound
+ \ XK_kana_switch XK_Farsi_0 XK_Farsi_1
+ \ XK_Farsi_2 XK_Farsi_3 XK_Farsi_4 XK_Farsi_5
+ \ XK_Farsi_6 XK_Farsi_7 XK_Farsi_8 XK_Farsi_9
+ \ XK_Arabic_percent XK_Arabic_superscript_alef
+ \ XK_Arabic_tteh XK_Arabic_peh XK_Arabic_tcheh
+ \ XK_Arabic_ddal XK_Arabic_rreh XK_Arabic_comma
+ \ XK_Arabic_fullstop XK_Arabic_0 XK_Arabic_1
+ \ XK_Arabic_2 XK_Arabic_3 XK_Arabic_4
+ \ XK_Arabic_5 XK_Arabic_6 XK_Arabic_7
+ \ XK_Arabic_8 XK_Arabic_9 XK_Arabic_semicolon
+ \ XK_Arabic_question_mark XK_Arabic_hamza
+ \ XK_Arabic_maddaonalef XK_Arabic_hamzaonalef
+ \ XK_Arabic_hamzaonwaw XK_Arabic_hamzaunderalef
+ \ XK_Arabic_hamzaonyeh XK_Arabic_alef
+ \ XK_Arabic_beh XK_Arabic_tehmarbuta
+ \ XK_Arabic_teh XK_Arabic_theh XK_Arabic_jeem
+ \ XK_Arabic_hah XK_Arabic_khah XK_Arabic_dal
+ \ XK_Arabic_thal XK_Arabic_ra XK_Arabic_zain
+ \ XK_Arabic_seen XK_Arabic_sheen
+ \ XK_Arabic_sad XK_Arabic_dad XK_Arabic_tah
+ \ XK_Arabic_zah XK_Arabic_ain XK_Arabic_ghain
+ \ XK_Arabic_tatweel XK_Arabic_feh XK_Arabic_qaf
+ \ XK_Arabic_kaf XK_Arabic_lam XK_Arabic_meem
+ \ XK_Arabic_noon XK_Arabic_ha XK_Arabic_heh
+ \ XK_Arabic_waw XK_Arabic_alefmaksura
+ \ XK_Arabic_yeh XK_Arabic_fathatan
+ \ XK_Arabic_dammatan XK_Arabic_kasratan
+ \ XK_Arabic_fatha XK_Arabic_damma
+ \ XK_Arabic_kasra XK_Arabic_shadda
+ \ XK_Arabic_sukun XK_Arabic_madda_above
+ \ XK_Arabic_hamza_above XK_Arabic_hamza_below
+ \ XK_Arabic_jeh XK_Arabic_veh XK_Arabic_keheh
+ \ XK_Arabic_gaf XK_Arabic_noon_ghunna
+ \ XK_Arabic_heh_doachashmee XK_Farsi_yeh
+ \ XK_Arabic_yeh_baree XK_Arabic_heh_goal
+ \ XK_Arabic_switch XK_Cyrillic_GHE_bar
+ \ XK_Cyrillic_ghe_bar XK_Cyrillic_ZHE_descender
+ \ XK_Cyrillic_zhe_descender
+ \ XK_Cyrillic_KA_descender
+ \ XK_Cyrillic_ka_descender
+ \ XK_Cyrillic_KA_vertstroke
+ \ XK_Cyrillic_ka_vertstroke
+ \ XK_Cyrillic_EN_descender
+ \ XK_Cyrillic_en_descender
+ \ XK_Cyrillic_U_straight XK_Cyrillic_u_straight
+ \ XK_Cyrillic_U_straight_bar
+ \ XK_Cyrillic_u_straight_bar
+ \ XK_Cyrillic_HA_descender
+ \ XK_Cyrillic_ha_descender
+ \ XK_Cyrillic_CHE_descender
+ \ XK_Cyrillic_che_descender
+ \ XK_Cyrillic_CHE_vertstroke
+ \ XK_Cyrillic_che_vertstroke XK_Cyrillic_SHHA
+ \ XK_Cyrillic_shha XK_Cyrillic_SCHWA
+ \ XK_Cyrillic_schwa XK_Cyrillic_I_macron
+ \ XK_Cyrillic_i_macron XK_Cyrillic_O_bar
+ \ XK_Cyrillic_o_bar XK_Cyrillic_U_macron
+ \ XK_Cyrillic_u_macron XK_Serbian_dje
+ \ XK_Macedonia_gje XK_Cyrillic_io
+ \ XK_Ukrainian_ie XK_Ukranian_je
+ \ XK_Macedonia_dse XK_Ukrainian_i XK_Ukranian_i
+ \ XK_Ukrainian_yi XK_Ukranian_yi XK_Cyrillic_je
+ \ XK_Serbian_je XK_Cyrillic_lje XK_Serbian_lje
+ \ XK_Cyrillic_nje XK_Serbian_nje XK_Serbian_tshe
+ \ XK_Macedonia_kje XK_Ukrainian_ghe_with_upturn
+ \ XK_Byelorussian_shortu XK_Cyrillic_dzhe
+ \ XK_Serbian_dze XK_numerosign
+ \ XK_Serbian_DJE XK_Macedonia_GJE
+ \ XK_Cyrillic_IO XK_Ukrainian_IE XK_Ukranian_JE
+ \ XK_Macedonia_DSE XK_Ukrainian_I XK_Ukranian_I
+ \ XK_Ukrainian_YI XK_Ukranian_YI XK_Cyrillic_JE
+ \ XK_Serbian_JE XK_Cyrillic_LJE XK_Serbian_LJE
+ \ XK_Cyrillic_NJE XK_Serbian_NJE XK_Serbian_TSHE
+ \ XK_Macedonia_KJE XK_Ukrainian_GHE_WITH_UPTURN
+ \ XK_Byelorussian_SHORTU XK_Cyrillic_DZHE
+ \ XK_Serbian_DZE XK_Cyrillic_yu
+ \ XK_Cyrillic_a XK_Cyrillic_be XK_Cyrillic_tse
+ \ XK_Cyrillic_de XK_Cyrillic_ie XK_Cyrillic_ef
+ \ XK_Cyrillic_ghe XK_Cyrillic_ha XK_Cyrillic_i
+ \ XK_Cyrillic_shorti XK_Cyrillic_ka
+ \ XK_Cyrillic_el XK_Cyrillic_em XK_Cyrillic_en
+ \ XK_Cyrillic_o XK_Cyrillic_pe XK_Cyrillic_ya
+ \ XK_Cyrillic_er XK_Cyrillic_es XK_Cyrillic_te
+ \ XK_Cyrillic_u XK_Cyrillic_zhe XK_Cyrillic_ve
+ \ XK_Cyrillic_softsign XK_Cyrillic_yeru
+ \ XK_Cyrillic_ze XK_Cyrillic_sha XK_Cyrillic_e
+ \ XK_Cyrillic_shcha XK_Cyrillic_che
+ \ XK_Cyrillic_hardsign XK_Cyrillic_YU
+ \ XK_Cyrillic_A XK_Cyrillic_BE XK_Cyrillic_TSE
+ \ XK_Cyrillic_DE XK_Cyrillic_IE XK_Cyrillic_EF
+ \ XK_Cyrillic_GHE XK_Cyrillic_HA XK_Cyrillic_I
+ \ XK_Cyrillic_SHORTI XK_Cyrillic_KA
+ \ XK_Cyrillic_EL XK_Cyrillic_EM XK_Cyrillic_EN
+ \ XK_Cyrillic_O XK_Cyrillic_PE XK_Cyrillic_YA
+ \ XK_Cyrillic_ER XK_Cyrillic_ES XK_Cyrillic_TE
+ \ XK_Cyrillic_U XK_Cyrillic_ZHE XK_Cyrillic_VE
+ \ XK_Cyrillic_SOFTSIGN XK_Cyrillic_YERU
+ \ XK_Cyrillic_ZE XK_Cyrillic_SHA XK_Cyrillic_E
+ \ XK_Cyrillic_SHCHA XK_Cyrillic_CHE
+ \ XK_Cyrillic_HARDSIGN XK_Greek_ALPHAaccent
+ \ XK_Greek_EPSILONaccent XK_Greek_ETAaccent
+ \ XK_Greek_IOTAaccent XK_Greek_IOTAdieresis
+ \ XK_Greek_OMICRONaccent XK_Greek_UPSILONaccent
+ \ XK_Greek_UPSILONdieresis
+ \ XK_Greek_OMEGAaccent XK_Greek_accentdieresis
+ \ XK_Greek_horizbar XK_Greek_alphaaccent
+ \ XK_Greek_epsilonaccent XK_Greek_etaaccent
+ \ XK_Greek_iotaaccent XK_Greek_iotadieresis
+ \ XK_Greek_iotaaccentdieresis
+ \ XK_Greek_omicronaccent XK_Greek_upsilonaccent
+ \ XK_Greek_upsilondieresis
+ \ XK_Greek_upsilonaccentdieresis
+ \ XK_Greek_omegaaccent XK_Greek_ALPHA
+ \ XK_Greek_BETA XK_Greek_GAMMA XK_Greek_DELTA
+ \ XK_Greek_EPSILON XK_Greek_ZETA XK_Greek_ETA
+ \ XK_Greek_THETA XK_Greek_IOTA XK_Greek_KAPPA
+ \ XK_Greek_LAMDA XK_Greek_LAMBDA XK_Greek_MU
+ \ XK_Greek_NU XK_Greek_XI XK_Greek_OMICRON
+ \ XK_Greek_PI XK_Greek_RHO XK_Greek_SIGMA
+ \ XK_Greek_TAU XK_Greek_UPSILON XK_Greek_PHI
+ \ XK_Greek_CHI XK_Greek_PSI XK_Greek_OMEGA
+ \ XK_Greek_alpha XK_Greek_beta XK_Greek_gamma
+ \ XK_Greek_delta XK_Greek_epsilon XK_Greek_zeta
+ \ XK_Greek_eta XK_Greek_theta XK_Greek_iota
+ \ XK_Greek_kappa XK_Greek_lamda XK_Greek_lambda
+ \ XK_Greek_mu XK_Greek_nu XK_Greek_xi
+ \ XK_Greek_omicron XK_Greek_pi XK_Greek_rho
+ \ XK_Greek_sigma XK_Greek_finalsmallsigma
+ \ XK_Greek_tau XK_Greek_upsilon XK_Greek_phi
+ \ XK_Greek_chi XK_Greek_psi XK_Greek_omega
+ \ XK_Greek_switch XK_leftradical
+ \ XK_topleftradical XK_horizconnector
+ \ XK_topintegral XK_botintegral
+ \ XK_vertconnector XK_topleftsqbracket
+ \ XK_botleftsqbracket XK_toprightsqbracket
+ \ XK_botrightsqbracket XK_topleftparens
+ \ XK_botleftparens XK_toprightparens
+ \ XK_botrightparens XK_leftmiddlecurlybrace
+ \ XK_rightmiddlecurlybrace
+ \ XK_topleftsummation XK_botleftsummation
+ \ XK_topvertsummationconnector
+ \ XK_botvertsummationconnector
+ \ XK_toprightsummation XK_botrightsummation
+ \ XK_rightmiddlesummation XK_lessthanequal
+ \ XK_notequal XK_greaterthanequal XK_integral
+ \ XK_therefore XK_variation XK_infinity
+ \ XK_nabla XK_approximate XK_similarequal
+ \ XK_ifonlyif XK_implies XK_identical XK_radical
+ \ XK_includedin XK_includes XK_intersection
+ \ XK_union XK_logicaland XK_logicalor
+ \ XK_partialderivative XK_function XK_leftarrow
+ \ XK_uparrow XK_rightarrow XK_downarrow XK_blank
+ \ XK_soliddiamond XK_checkerboard XK_ht XK_ff
+ \ XK_cr XK_lf XK_nl XK_vt XK_lowrightcorner
+ \ XK_uprightcorner XK_upleftcorner
+ \ XK_lowleftcorner XK_crossinglines
+ \ XK_horizlinescan1 XK_horizlinescan3
+ \ XK_horizlinescan5 XK_horizlinescan7
+ \ XK_horizlinescan9 XK_leftt XK_rightt XK_bott
+ \ XK_topt XK_vertbar XK_emspace XK_enspace
+ \ XK_em3space XK_em4space XK_digitspace
+ \ XK_punctspace XK_thinspace XK_hairspace
+ \ XK_emdash XK_endash XK_signifblank XK_ellipsis
+ \ XK_doubbaselinedot XK_onethird XK_twothirds
+ \ XK_onefifth XK_twofifths XK_threefifths
+ \ XK_fourfifths XK_onesixth XK_fivesixths
+ \ XK_careof XK_figdash XK_leftanglebracket
+ \ XK_decimalpoint XK_rightanglebracket
+ \ XK_marker XK_oneeighth XK_threeeighths
+ \ XK_fiveeighths XK_seveneighths XK_trademark
+ \ XK_signaturemark XK_trademarkincircle
+ \ XK_leftopentriangle XK_rightopentriangle
+ \ XK_emopencircle XK_emopenrectangle
+ \ XK_leftsinglequotemark XK_rightsinglequotemark
+ \ XK_leftdoublequotemark XK_rightdoublequotemark
+ \ XK_prescription XK_minutes XK_seconds
+ \ XK_latincross XK_hexagram XK_filledrectbullet
+ \ XK_filledlefttribullet XK_filledrighttribullet
+ \ XK_emfilledcircle XK_emfilledrect
+ \ XK_enopencircbullet XK_enopensquarebullet
+ \ XK_openrectbullet XK_opentribulletup
+ \ XK_opentribulletdown XK_openstar
+ \ XK_enfilledcircbullet XK_enfilledsqbullet
+ \ XK_filledtribulletup XK_filledtribulletdown
+ \ XK_leftpointer XK_rightpointer XK_club
+ \ XK_diamond XK_heart XK_maltesecross
+ \ XK_dagger XK_doubledagger XK_checkmark
+ \ XK_ballotcross XK_musicalsharp XK_musicalflat
+ \ XK_malesymbol XK_femalesymbol XK_telephone
+ \ XK_telephonerecorder XK_phonographcopyright
+ \ XK_caret XK_singlelowquotemark
+ \ XK_doublelowquotemark XK_cursor
+ \ XK_leftcaret XK_rightcaret XK_downcaret
+ \ XK_upcaret XK_overbar XK_downtack XK_upshoe
+ \ XK_downstile XK_underbar XK_jot XK_quad
+ \ XK_uptack XK_circle XK_upstile XK_downshoe
+ \ XK_rightshoe XK_leftshoe XK_lefttack
+ \ XK_righttack XK_hebrew_doublelowline
+ \ XK_hebrew_aleph XK_hebrew_bet XK_hebrew_beth
+ \ XK_hebrew_gimel XK_hebrew_gimmel
+ \ XK_hebrew_dalet XK_hebrew_daleth
+ \ XK_hebrew_he XK_hebrew_waw XK_hebrew_zain
+ \ XK_hebrew_zayin XK_hebrew_chet XK_hebrew_het
+ \ XK_hebrew_tet XK_hebrew_teth XK_hebrew_yod
+ \ XK_hebrew_finalkaph XK_hebrew_kaph
+ \ XK_hebrew_lamed XK_hebrew_finalmem
+ \ XK_hebrew_mem XK_hebrew_finalnun XK_hebrew_nun
+ \ XK_hebrew_samech XK_hebrew_samekh
+ \ XK_hebrew_ayin XK_hebrew_finalpe XK_hebrew_pe
+ \ XK_hebrew_finalzade XK_hebrew_finalzadi
+ \ XK_hebrew_zade XK_hebrew_zadi XK_hebrew_qoph
+ \ XK_hebrew_kuf XK_hebrew_resh XK_hebrew_shin
+ \ XK_hebrew_taw XK_hebrew_taf XK_Hebrew_switch
+ \ XK_Thai_kokai XK_Thai_khokhai XK_Thai_khokhuat
+ \ XK_Thai_khokhwai XK_Thai_khokhon
+ \ XK_Thai_khorakhang XK_Thai_ngongu
+ \ XK_Thai_chochan XK_Thai_choching
+ \ XK_Thai_chochang XK_Thai_soso XK_Thai_chochoe
+ \ XK_Thai_yoying XK_Thai_dochada XK_Thai_topatak
+ \ XK_Thai_thothan XK_Thai_thonangmontho
+ \ XK_Thai_thophuthao XK_Thai_nonen
+ \ XK_Thai_dodek XK_Thai_totao XK_Thai_thothung
+ \ XK_Thai_thothahan XK_Thai_thothong
+ \ XK_Thai_nonu XK_Thai_bobaimai XK_Thai_popla
+ \ XK_Thai_phophung XK_Thai_fofa XK_Thai_phophan
+ \ XK_Thai_fofan XK_Thai_phosamphao XK_Thai_moma
+ \ XK_Thai_yoyak XK_Thai_rorua XK_Thai_ru
+ \ XK_Thai_loling XK_Thai_lu XK_Thai_wowaen
+ \ XK_Thai_sosala XK_Thai_sorusi XK_Thai_sosua
+ \ XK_Thai_hohip XK_Thai_lochula XK_Thai_oang
+ \ XK_Thai_honokhuk XK_Thai_paiyannoi
+ \ XK_Thai_saraa XK_Thai_maihanakat
+ \ XK_Thai_saraaa XK_Thai_saraam XK_Thai_sarai
+ \ XK_Thai_saraii XK_Thai_saraue XK_Thai_sarauee
+ \ XK_Thai_sarau XK_Thai_sarauu XK_Thai_phinthu
+ \ XK_Thai_maihanakat_maitho XK_Thai_baht
+ \ XK_Thai_sarae XK_Thai_saraae XK_Thai_sarao
+ \ XK_Thai_saraaimaimuan XK_Thai_saraaimaimalai
+ \ XK_Thai_lakkhangyao XK_Thai_maiyamok
+ \ XK_Thai_maitaikhu XK_Thai_maiek XK_Thai_maitho
+ \ XK_Thai_maitri XK_Thai_maichattawa
+ \ XK_Thai_thanthakhat XK_Thai_nikhahit
+ \ XK_Thai_leksun XK_Thai_leknung XK_Thai_leksong
+ \ XK_Thai_leksam XK_Thai_leksi XK_Thai_lekha
+ \ XK_Thai_lekhok XK_Thai_lekchet XK_Thai_lekpaet
+ \ XK_Thai_lekkao XK_Hangul XK_Hangul_Start
+ \ XK_Hangul_End XK_Hangul_Hanja XK_Hangul_Jamo
+ \ XK_Hangul_Romaja XK_Hangul_Codeinput
+ \ XK_Hangul_Jeonja XK_Hangul_Banja
+ \ XK_Hangul_PreHanja XK_Hangul_PostHanja
+ \ XK_Hangul_SingleCandidate
+ \ XK_Hangul_MultipleCandidate
+ \ XK_Hangul_PreviousCandidate XK_Hangul_Special
+ \ XK_Hangul_switch XK_Hangul_Kiyeog
+ \ XK_Hangul_SsangKiyeog XK_Hangul_KiyeogSios
+ \ XK_Hangul_Nieun XK_Hangul_NieunJieuj
+ \ XK_Hangul_NieunHieuh XK_Hangul_Dikeud
+ \ XK_Hangul_SsangDikeud XK_Hangul_Rieul
+ \ XK_Hangul_RieulKiyeog XK_Hangul_RieulMieum
+ \ XK_Hangul_RieulPieub XK_Hangul_RieulSios
+ \ XK_Hangul_RieulTieut XK_Hangul_RieulPhieuf
+ \ XK_Hangul_RieulHieuh XK_Hangul_Mieum
+ \ XK_Hangul_Pieub XK_Hangul_SsangPieub
+ \ XK_Hangul_PieubSios XK_Hangul_Sios
+ \ XK_Hangul_SsangSios XK_Hangul_Ieung
+ \ XK_Hangul_Jieuj XK_Hangul_SsangJieuj
+ \ XK_Hangul_Cieuc XK_Hangul_Khieuq
+ \ XK_Hangul_Tieut XK_Hangul_Phieuf
+ \ XK_Hangul_Hieuh XK_Hangul_A XK_Hangul_AE
+ \ XK_Hangul_YA XK_Hangul_YAE XK_Hangul_EO
+ \ XK_Hangul_E XK_Hangul_YEO XK_Hangul_YE
+ \ XK_Hangul_O XK_Hangul_WA XK_Hangul_WAE
+ \ XK_Hangul_OE XK_Hangul_YO XK_Hangul_U
+ \ XK_Hangul_WEO XK_Hangul_WE XK_Hangul_WI
+ \ XK_Hangul_YU XK_Hangul_EU XK_Hangul_YI
+ \ XK_Hangul_I XK_Hangul_J_Kiyeog
+ \ XK_Hangul_J_SsangKiyeog XK_Hangul_J_KiyeogSios
+ \ XK_Hangul_J_Nieun XK_Hangul_J_NieunJieuj
+ \ XK_Hangul_J_NieunHieuh XK_Hangul_J_Dikeud
+ \ XK_Hangul_J_Rieul XK_Hangul_J_RieulKiyeog
+ \ XK_Hangul_J_RieulMieum XK_Hangul_J_RieulPieub
+ \ XK_Hangul_J_RieulSios XK_Hangul_J_RieulTieut
+ \ XK_Hangul_J_RieulPhieuf XK_Hangul_J_RieulHieuh
+ \ XK_Hangul_J_Mieum XK_Hangul_J_Pieub
+ \ XK_Hangul_J_PieubSios XK_Hangul_J_Sios
+ \ XK_Hangul_J_SsangSios XK_Hangul_J_Ieung
+ \ XK_Hangul_J_Jieuj XK_Hangul_J_Cieuc
+ \ XK_Hangul_J_Khieuq XK_Hangul_J_Tieut
+ \ XK_Hangul_J_Phieuf XK_Hangul_J_Hieuh
+ \ XK_Hangul_RieulYeorinHieuh
+ \ XK_Hangul_SunkyeongeumMieum
+ \ XK_Hangul_SunkyeongeumPieub XK_Hangul_PanSios
+ \ XK_Hangul_KkogjiDalrinIeung
+ \ XK_Hangul_SunkyeongeumPhieuf
+ \ XK_Hangul_YeorinHieuh XK_Hangul_AraeA
+ \ XK_Hangul_AraeAE XK_Hangul_J_PanSios
+ \ XK_Hangul_J_KkogjiDalrinIeung
+ \ XK_Hangul_J_YeorinHieuh XK_Korean_Won
+ \ XK_Armenian_eternity XK_Armenian_ligature_ew
+ \ XK_Armenian_full_stop XK_Armenian_verjaket
+ \ XK_Armenian_parenright XK_Armenian_parenleft
+ \ XK_Armenian_guillemotright
+ \ XK_Armenian_guillemotleft XK_Armenian_em_dash
+ \ XK_Armenian_dot XK_Armenian_mijaket
+ \ XK_Armenian_separation_mark XK_Armenian_but
+ \ XK_Armenian_comma XK_Armenian_en_dash
+ \ XK_Armenian_hyphen XK_Armenian_yentamna
+ \ XK_Armenian_ellipsis XK_Armenian_exclam
+ \ XK_Armenian_amanak XK_Armenian_accent
+ \ XK_Armenian_shesht XK_Armenian_question
+ \ XK_Armenian_paruyk XK_Armenian_AYB
+ \ XK_Armenian_ayb XK_Armenian_BEN
+ \ XK_Armenian_ben XK_Armenian_GIM
+ \ XK_Armenian_gim XK_Armenian_DA XK_Armenian_da
+ \ XK_Armenian_YECH XK_Armenian_yech
+ \ XK_Armenian_ZA XK_Armenian_za XK_Armenian_E
+ \ XK_Armenian_e XK_Armenian_AT XK_Armenian_at
+ \ XK_Armenian_TO XK_Armenian_to
+ \ XK_Armenian_ZHE XK_Armenian_zhe
+ \ XK_Armenian_INI XK_Armenian_ini
+ \ XK_Armenian_LYUN XK_Armenian_lyun
+ \ XK_Armenian_KHE XK_Armenian_khe
+ \ XK_Armenian_TSA XK_Armenian_tsa
+ \ XK_Armenian_KEN XK_Armenian_ken XK_Armenian_HO
+ \ XK_Armenian_ho XK_Armenian_DZA XK_Armenian_dza
+ \ XK_Armenian_GHAT XK_Armenian_ghat
+ \ XK_Armenian_TCHE XK_Armenian_tche
+ \ XK_Armenian_MEN XK_Armenian_men XK_Armenian_HI
+ \ XK_Armenian_hi XK_Armenian_NU XK_Armenian_nu
+ \ XK_Armenian_SHA XK_Armenian_sha XK_Armenian_VO
+ \ XK_Armenian_vo XK_Armenian_CHA XK_Armenian_cha
+ \ XK_Armenian_PE XK_Armenian_pe XK_Armenian_JE
+ \ XK_Armenian_je XK_Armenian_RA XK_Armenian_ra
+ \ XK_Armenian_SE XK_Armenian_se XK_Armenian_VEV
+ \ XK_Armenian_vev XK_Armenian_TYUN
+ \ XK_Armenian_tyun XK_Armenian_RE
+ \ XK_Armenian_re XK_Armenian_TSO
+ \ XK_Armenian_tso XK_Armenian_VYUN
+ \ XK_Armenian_vyun XK_Armenian_PYUR
+ \ XK_Armenian_pyur XK_Armenian_KE XK_Armenian_ke
+ \ XK_Armenian_O XK_Armenian_o XK_Armenian_FE
+ \ XK_Armenian_fe XK_Armenian_apostrophe
+ \ XK_Armenian_section_sign XK_Georgian_an
+ \ XK_Georgian_ban XK_Georgian_gan
+ \ XK_Georgian_don XK_Georgian_en XK_Georgian_vin
+ \ XK_Georgian_zen XK_Georgian_tan
+ \ XK_Georgian_in XK_Georgian_kan XK_Georgian_las
+ \ XK_Georgian_man XK_Georgian_nar XK_Georgian_on
+ \ XK_Georgian_par XK_Georgian_zhar
+ \ XK_Georgian_rae XK_Georgian_san
+ \ XK_Georgian_tar XK_Georgian_un
+ \ XK_Georgian_phar XK_Georgian_khar
+ \ XK_Georgian_ghan XK_Georgian_qar
+ \ XK_Georgian_shin XK_Georgian_chin
+ \ XK_Georgian_can XK_Georgian_jil
+ \ XK_Georgian_cil XK_Georgian_char
+ \ XK_Georgian_xan XK_Georgian_jhan
+ \ XK_Georgian_hae XK_Georgian_he XK_Georgian_hie
+ \ XK_Georgian_we XK_Georgian_har XK_Georgian_hoe
+ \ XK_Georgian_fi XK_Ccedillaabovedot
+ \ XK_Xabovedot XK_Qabovedot XK_IE XK_UO
+ \ XK_Zstroke XK_ccedillaabovedot XK_xabovedot
+ \ XK_qabovedot XK_ie XK_uo XK_zstroke XK_SCHWA
+ \ XK_schwa XK_Lbelowdot XK_Lstrokebelowdot
+ \ XK_lbelowdot XK_lstrokebelowdot XK_Gtilde
+ \ XK_gtilde XK_Abelowdot XK_abelowdot
+ \ XK_Ahook XK_ahook XK_Acircumflexacute
+ \ XK_acircumflexacute XK_Acircumflexgrave
+ \ XK_acircumflexgrave XK_Acircumflexhook
+ \ XK_acircumflexhook XK_Acircumflextilde
+ \ XK_acircumflextilde XK_Acircumflexbelowdot
+ \ XK_acircumflexbelowdot XK_Abreveacute
+ \ XK_abreveacute XK_Abrevegrave XK_abrevegrave
+ \ XK_Abrevehook XK_abrevehook XK_Abrevetilde
+ \ XK_abrevetilde XK_Abrevebelowdot
+ \ XK_abrevebelowdot XK_Ebelowdot XK_ebelowdot
+ \ XK_Ehook XK_ehook XK_Etilde XK_etilde
+ \ XK_Ecircumflexacute XK_ecircumflexacute
+ \ XK_Ecircumflexgrave XK_ecircumflexgrave
+ \ XK_Ecircumflexhook XK_ecircumflexhook
+ \ XK_Ecircumflextilde XK_ecircumflextilde
+ \ XK_Ecircumflexbelowdot XK_ecircumflexbelowdot
+ \ XK_Ihook XK_ihook XK_Ibelowdot XK_ibelowdot
+ \ XK_Obelowdot XK_obelowdot XK_Ohook XK_ohook
+ \ XK_Ocircumflexacute XK_ocircumflexacute
+ \ XK_Ocircumflexgrave XK_ocircumflexgrave
+ \ XK_Ocircumflexhook XK_ocircumflexhook
+ \ XK_Ocircumflextilde XK_ocircumflextilde
+ \ XK_Ocircumflexbelowdot XK_ocircumflexbelowdot
+ \ XK_Ohornacute XK_ohornacute XK_Ohorngrave
+ \ XK_ohorngrave XK_Ohornhook XK_ohornhook
+ \ XK_Ohorntilde XK_ohorntilde XK_Ohornbelowdot
+ \ XK_ohornbelowdot XK_Ubelowdot XK_ubelowdot
+ \ XK_Uhook XK_uhook XK_Uhornacute XK_uhornacute
+ \ XK_Uhorngrave XK_uhorngrave XK_Uhornhook
+ \ XK_uhornhook XK_Uhorntilde XK_uhorntilde
+ \ XK_Uhornbelowdot XK_uhornbelowdot XK_Ybelowdot
+ \ XK_ybelowdot XK_Yhook XK_yhook XK_Ytilde
+ \ XK_ytilde XK_Ohorn XK_ohorn XK_Uhorn XK_uhorn
+ \ XK_combining_tilde XK_combining_grave
+ \ XK_combining_acute XK_combining_hook
+ \ XK_combining_belowdot XK_EcuSign XK_ColonSign
+ \ XK_CruzeiroSign XK_FFrancSign XK_LiraSign
+ \ XK_MillSign XK_NairaSign XK_PesetaSign
+ \ XK_RupeeSign XK_WonSign XK_NewSheqelSign
+ \ XK_DongSign XK_EuroSign
+
+" #include <X11/Sunkeysym.h>
+syn keyword xmodmapKeySym SunXK_Sys_Req SunXK_Print_Screen SunXK_Compose
+ \ SunXK_AltGraph SunXK_PageUp SunXK_PageDown
+ \ SunXK_Undo SunXK_Again SunXK_Find SunXK_Stop
+ \ SunXK_Props SunXK_Front SunXK_Copy SunXK_Open
+ \ SunXK_Paste SunXK_Cut SunXK_PowerSwitch
+ \ SunXK_AudioLowerVolume SunXK_AudioMute
+ \ SunXK_AudioRaiseVolume SunXK_VideoDegauss
+ \ SunXK_VideoLowerBrightness
+ \ SunXK_VideoRaiseBrightness
+ \ SunXK_PowerSwitchShift
+
+" #include <X11/XF86keysym.h>
+syn keyword xmodmapKeySym XF86XK_ModeLock XF86XK_Standby
+ \ XF86XK_AudioLowerVolume XF86XK_AudioMute
+ \ XF86XK_AudioRaiseVolume XF86XK_AudioPlay
+ \ XF86XK_AudioStop XF86XK_AudioPrev
+ \ XF86XK_AudioNext XF86XK_HomePage
+ \ XF86XK_Mail XF86XK_Start XF86XK_Search
+ \ XF86XK_AudioRecord XF86XK_Calculator
+ \ XF86XK_Memo XF86XK_ToDoList XF86XK_Calendar
+ \ XF86XK_PowerDown XF86XK_ContrastAdjust
+ \ XF86XK_RockerUp XF86XK_RockerDown
+ \ XF86XK_RockerEnter XF86XK_Back XF86XK_Forward
+ \ XF86XK_Stop XF86XK_Refresh XF86XK_PowerOff
+ \ XF86XK_WakeUp XF86XK_Eject XF86XK_ScreenSaver
+ \ XF86XK_WWW XF86XK_Sleep XF86XK_Favorites
+ \ XF86XK_AudioPause XF86XK_AudioMedia
+ \ XF86XK_MyComputer XF86XK_VendorHome
+ \ XF86XK_LightBulb XF86XK_Shop XF86XK_History
+ \ XF86XK_OpenURL XF86XK_AddFavorite
+ \ XF86XK_HotLinks XF86XK_BrightnessAdjust
+ \ XF86XK_Finance XF86XK_Community
+ \ XF86XK_AudioRewind XF86XK_XF86BackForward
+ \ XF86XK_Launch0 XF86XK_Launch1 XF86XK_Launch2
+ \ XF86XK_Launch3 XF86XK_Launch4 XF86XK_Launch5
+ \ XF86XK_Launch6 XF86XK_Launch7 XF86XK_Launch8
+ \ XF86XK_Launch9 XF86XK_LaunchA XF86XK_LaunchB
+ \ XF86XK_LaunchC XF86XK_LaunchD XF86XK_LaunchE
+ \ XF86XK_LaunchF XF86XK_ApplicationLeft
+ \ XF86XK_ApplicationRight XF86XK_Book
+ \ XF86XK_CD XF86XK_Calculater XF86XK_Clear
+ \ XF86XK_Close XF86XK_Copy XF86XK_Cut
+ \ XF86XK_Display XF86XK_DOS XF86XK_Documents
+ \ XF86XK_Excel XF86XK_Explorer XF86XK_Game
+ \ XF86XK_Go XF86XK_iTouch XF86XK_LogOff
+ \ XF86XK_Market XF86XK_Meeting XF86XK_MenuKB
+ \ XF86XK_MenuPB XF86XK_MySites XF86XK_New
+ \ XF86XK_News XF86XK_OfficeHome XF86XK_Open
+ \ XF86XK_Option XF86XK_Paste XF86XK_Phone
+ \ XF86XK_Q XF86XK_Reply XF86XK_Reload
+ \ XF86XK_RotateWindows XF86XK_RotationPB
+ \ XF86XK_RotationKB XF86XK_Save XF86XK_ScrollUp
+ \ XF86XK_ScrollDown XF86XK_ScrollClick
+ \ XF86XK_Send XF86XK_Spell XF86XK_SplitScreen
+ \ XF86XK_Support XF86XK_TaskPane XF86XK_Terminal
+ \ XF86XK_Tools XF86XK_Travel XF86XK_UserPB
+ \ XF86XK_User1KB XF86XK_User2KB XF86XK_Video
+ \ XF86XK_WheelButton XF86XK_Word XF86XK_Xfer
+ \ XF86XK_ZoomIn XF86XK_ZoomOut XF86XK_Away
+ \ XF86XK_Messenger XF86XK_WebCam
+ \ XF86XK_MailForward XF86XK_Pictures
+ \ XF86XK_Music XF86XK_Switch_VT_1
+ \ XF86XK_Switch_VT_2 XF86XK_Switch_VT_3
+ \ XF86XK_Switch_VT_4 XF86XK_Switch_VT_5
+ \ XF86XK_Switch_VT_6 XF86XK_Switch_VT_7
+ \ XF86XK_Switch_VT_8 XF86XK_Switch_VT_9
+ \ XF86XK_Switch_VT_10 XF86XK_Switch_VT_11
+ \ XF86XK_Switch_VT_12 XF86XK_Ungrab
+ \ XF86XK_ClearGrab XF86XK_Next_VMode
+ \ XF86XK_Prev_VMode
+
+syn keyword xmodmapKeyword keycode keysym clear add remove pointer
+
+hi def link xmodmapComment Comment
+hi def link xmodmapTodo Todo
+hi def link xmodmapInt Number
+hi def link xmodmapHex Number
+hi def link xmodmapOctal Number
+hi def link xmodmapOctalError Error
+hi def link xmodmapKeySym Constant
+hi def link xmodmapKeyword Keyword
+
+let b:current_syntax = "xmodmap"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/xpm.vim b/runtime/syntax/xpm.vim
new file mode 100644
index 0000000..be9f387
--- /dev/null
+++ b/runtime/syntax/xpm.vim
@@ -0,0 +1,141 @@
+" Vim syntax file
+" Language: X Pixmap
+" Maintainer: Ronald Schild <rs@scutum.de>
+" Last Change: 2021 Oct 04
+" Version: 5.4n.1
+" Jemma Nelson added termguicolors support
+" Dominique Pellé fixed spelling support
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn spell notoplevel
+
+syn keyword xpmType char
+syn keyword xpmStorageClass static
+syn keyword xpmTodo TODO FIXME XXX contained
+syn region xpmComment start="/\*" end="\*/" contains=xpmTodo,@Spell
+syn region xpmPixelString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@xpmColors
+
+if has("gui_running") || has("termguicolors") && &termguicolors
+
+let color = ""
+let chars = ""
+let colors = 0
+let cpp = 0
+let n = 0
+let i = 1
+
+while i <= line("$") " scanning all lines
+
+ let s = matchstr(getline(i), '".\{-1,}"')
+ if s != "" " does line contain a string?
+
+ if n == 0 " first string is the Values string
+
+ " get the 3rd value: colors = number of colors
+ let colors = substitute(s, '"\s*\d\+\s\+\d\+\s\+\(\d\+\).*"', '\1', '')
+ " get the 4th value: cpp = number of character per pixel
+ let cpp = substitute(s, '"\s*\d\+\s\+\d\+\s\+\d\+\s\+\(\d\+\).*"', '\1', '')
+ if cpp =~ '[^0-9]'
+ break " if cpp is not made of digits there must be something wrong
+ endif
+
+ " Highlight the Values string as normal string (no pixel string).
+ " Only when there is no slash, it would terminate the pattern.
+ if s !~ '/'
+ exe 'syn match xpmValues /' . s . '/'
+ endif
+ hi link xpmValues String
+
+ let n = 1 " n = color index
+
+ elseif n <= colors " string is a color specification
+
+ " get chars = <cpp> length string representing the pixels
+ " (first incl. the following whitespace)
+ let chars = substitute(s, '"\(.\{'.cpp.'}\s\).*"', '\1', '')
+
+ " now get color, first try 'c' key if any (color visual)
+ let color = substitute(s, '".*\sc\s\+\(.\{-}\)\s*\(\(g4\=\|[ms]\)\s.*\)*\s*"', '\1', '')
+ if color == s
+ " no 'c' key, try 'g' key (grayscale with more than 4 levels)
+ let color = substitute(s, '".*\sg\s\+\(.\{-}\)\s*\(\(g4\|[ms]\)\s.*\)*\s*"', '\1', '')
+ if color == s
+ " next try: 'g4' key (4-level grayscale)
+ let color = substitute(s, '".*\sg4\s\+\(.\{-}\)\s*\([ms]\s.*\)*\s*"', '\1', '')
+ if color == s
+ " finally try 'm' key (mono visual)
+ let color = substitute(s, '".*\sm\s\+\(.\{-}\)\s*\(s\s.*\)*\s*"', '\1', '')
+ if color == s
+ let color = ""
+ endif
+ endif
+ endif
+ endif
+
+ " Vim cannot handle RGB codes with more than 6 hex digits
+ if color =~ '#\x\{10,}$'
+ let color = substitute(color, '\(\x\x\)\x\x', '\1', 'g')
+ elseif color =~ '#\x\{7,}$'
+ let color = substitute(color, '\(\x\x\)\x', '\1', 'g')
+ " nor with 3 digits
+ elseif color =~ '#\x\{3}$'
+ let color = substitute(color, '\(\x\)\(\x\)\(\x\)', '0\10\20\3', '')
+ endif
+
+ " escape meta characters in patterns
+ let s = escape(s, '/\*^$.~[]')
+ let chars = escape(chars, '/\*^$.~[]')
+
+ " now create syntax items
+ " highlight the color string as normal string (no pixel string)
+ exe 'syn match xpmCol'.n.'Def /'.s.'/ contains=xpmCol'.n.'inDef'
+ exe 'hi link xpmCol'.n.'Def String'
+
+ " but highlight the first whitespace after chars in its color
+ exe 'syn match xpmCol'.n.'inDef /"'.chars.'/hs=s+'.(cpp+1).' contained'
+ exe 'hi link xpmCol'.n.'inDef xpmColor'.n
+
+ " remove the following whitespace from chars
+ let chars = substitute(chars, '.$', '', '')
+
+ " and create the syntax item contained in the pixel strings
+ exe 'syn match xpmColor'.n.' /'.chars.'/ contained'
+ exe 'syn cluster xpmColors add=xpmColor'.n
+
+ " if no color or color = "None" show background
+ if color == "" || substitute(color, '.*', '\L&', '') == 'none'
+ exe 'hi xpmColor'.n.' guifg=bg'
+ exe 'hi xpmColor'.n.' guibg=NONE'
+ elseif color !~ "'"
+ exe 'hi xpmColor'.n." guifg='".color."'"
+ exe 'hi xpmColor'.n." guibg='".color."'"
+ endif
+ let n = n + 1
+ else
+ break " no more color string
+ endif
+ endif
+ let i = i + 1
+endwhile
+
+unlet color chars colors cpp n i s
+
+endif " has("gui_running") || has("termguicolors") && &termguicolors
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link xpmType Type
+hi def link xpmStorageClass StorageClass
+hi def link xpmTodo Todo
+hi def link xpmComment Comment
+hi def link xpmPixelString String
+
+
+let b:current_syntax = "xpm"
+
+" vim: ts=8:sw=3:noet:
diff --git a/runtime/syntax/xpm2.vim b/runtime/syntax/xpm2.vim
new file mode 100644
index 0000000..dfa6945
--- /dev/null
+++ b/runtime/syntax/xpm2.vim
@@ -0,0 +1,153 @@
+" Vim syntax file
+" Language: X Pixmap v2
+" Maintainer: Steve Wall (hitched97@velnet.com)
+" Last Change: 2017 Feb 01
+" (Dominique Pelle added @Spell)
+" Version: 5.8
+" Jemma Nelson added termguicolors support
+"
+" Made from xpm.vim by Ronald Schild <rs@scutum.de>
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn region xpm2PixelString start="^" end="$" contains=@xpm2Colors
+syn keyword xpm2Todo TODO FIXME XXX contained
+syn match xpm2Comment "\!.*$" contains=@Spell,xpm2Todo
+
+
+command -nargs=+ Hi hi def <args>
+
+if has("gui_running") || has("termguicolors") && &termguicolors
+
+ let color = ""
+ let chars = ""
+ let colors = 0
+ let cpp = 0
+ let n = 0
+ let i = 1
+
+ while i <= line("$") " scanning all lines
+
+ let s = getline(i)
+ if match(s,"\!.*$") != -1
+ let s = matchstr(s, "^[^\!]*")
+ endif
+ if s != "" " does line contain a string?
+
+ if n == 0 " first string is the Values string
+
+ " get the 3rd value: colors = number of colors
+ let colors = substitute(s, '\s*\d\+\s\+\d\+\s\+\(\d\+\).*', '\1', '')
+ " get the 4th value: cpp = number of character per pixel
+ let cpp = substitute(s, '\s*\d\+\s\+\d\+\s\+\d\+\s\+\(\d\+\).*', '\1', '')
+ if cpp =~ '[^0-9]'
+ break " if cpp is not made of digits there must be something wrong
+ endif
+
+ " Highlight the Values string as normal string (no pixel string).
+ " Only when there is no slash, it would terminate the pattern.
+ if s !~ '/'
+ exe 'syn match xpm2Values /' . s . '/'
+ endif
+ hi def link xpm2Values Statement
+
+ let n = 1 " n = color index
+
+ elseif n <= colors " string is a color specification
+
+ " get chars = <cpp> length string representing the pixels
+ " (first incl. the following whitespace)
+ let chars = substitute(s, '\(.\{'.cpp.'}\s\+\).*', '\1', '')
+
+ " now get color, first try 'c' key if any (color visual)
+ let color = substitute(s, '.*\sc\s\+\(.\{-}\)\s*\(\(g4\=\|[ms]\)\s.*\)*\s*', '\1', '')
+ if color == s
+ " no 'c' key, try 'g' key (grayscale with more than 4 levels)
+ let color = substitute(s, '.*\sg\s\+\(.\{-}\)\s*\(\(g4\|[ms]\)\s.*\)*\s*', '\1', '')
+ if color == s
+ " next try: 'g4' key (4-level grayscale)
+ let color = substitute(s, '.*\sg4\s\+\(.\{-}\)\s*\([ms]\s.*\)*\s*', '\1', '')
+ if color == s
+ " finally try 'm' key (mono visual)
+ let color = substitute(s, '.*\sm\s\+\(.\{-}\)\s*\(s\s.*\)*\s*', '\1', '')
+ if color == s
+ let color = ""
+ endif
+ endif
+ endif
+ endif
+
+ " Vim cannot handle RGB codes with more than 6 hex digits
+ if color =~ '#\x\{10,}$'
+ let color = substitute(color, '\(\x\x\)\x\x', '\1', 'g')
+ elseif color =~ '#\x\{7,}$'
+ let color = substitute(color, '\(\x\x\)\x', '\1', 'g')
+ " nor with 3 digits
+ elseif color =~ '#\x\{3}$'
+ let color = substitute(color, '\(\x\)\(\x\)\(\x\)', '0\10\20\3', '')
+ endif
+
+ " escape meta characters in patterns
+ let s = escape(s, '/\*^$.~[]')
+ let chars = escape(chars, '/\*^$.~[]')
+
+ " change whitespace to "\s\+"
+ let s = substitute(s, "[ \t][ \t]*", "\\\\s\\\\+", "g")
+ let chars = substitute(chars, "[ \t][ \t]*", "\\\\s\\\\+", "g")
+
+ " now create syntax items
+ " highlight the color string as normal string (no pixel string)
+ exe 'syn match xpm2Col'.n.'Def /'.s.'/ contains=xpm2Col'.n.'inDef'
+ exe 'hi def link xpm2Col'.n.'Def Constant'
+
+ " but highlight the first whitespace after chars in its color
+ exe 'syn match xpm2Col'.n.'inDef /^'.chars.'/hs=s+'.(cpp).' contained'
+ exe 'hi def link xpm2Col'.n.'inDef xpm2Color'.n
+
+ " remove the following whitespace from chars
+ let chars = substitute(chars, '\\s\\+$', '', '')
+
+ " and create the syntax item contained in the pixel strings
+ exe 'syn match xpm2Color'.n.' /'.chars.'/ contained'
+ exe 'syn cluster xpm2Colors add=xpm2Color'.n
+
+ " if no color or color = "None" show background
+ if color == "" || substitute(color, '.*', '\L&', '') == 'none'
+ exe 'Hi xpm2Color'.n.' guifg=bg guibg=NONE'
+ elseif color !~ "'"
+ exe 'Hi xpm2Color'.n." guifg='".color."' guibg='".color."'"
+ endif
+ let n = n + 1
+ else
+ break " no more color string
+ endif
+ endif
+ let i = i + 1
+ endwhile
+
+ unlet color chars colors cpp n i s
+
+endif " has("gui_running") || has("termguicolors") && &termguicolors
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+" The default highlighting.
+hi def link xpm2Type Type
+hi def link xpm2StorageClass StorageClass
+hi def link xpm2Todo Todo
+hi def link xpm2Comment Comment
+hi def link xpm2PixelString String
+
+delcommand Hi
+
+let b:current_syntax = "xpm2"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8:sw=2:noet:
diff --git a/runtime/syntax/xquery.vim b/runtime/syntax/xquery.vim
new file mode 100644
index 0000000..0c6b72a
--- /dev/null
+++ b/runtime/syntax/xquery.vim
@@ -0,0 +1,82 @@
+" Vim syntax file
+" Language: XQuery
+" Author: René Neumann <necoro@necoro.eu>
+" Author: Steve Spigarelli <http://spig.net/>
+" Original Author: Jean-Marc Vanel <http://jmvanel.free.fr/>
+" Last Change: mar jui 12 18:04:05 CEST 2005
+" Filenames: *.xq
+" URL: http://jmvanel.free.fr/vim/xquery.vim
+
+" REFERENCES:
+" [1] http://www.w3.org/TR/xquery/
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" - is allowed in keywords
+setlocal iskeyword+=-
+
+runtime syntax/xml.vim
+
+syn case match
+
+" From XQuery grammar:
+syn keyword xqStatement ancestor ancestor-or-self and as ascending at attribute base-uri boundary-space by case cast castable child collation construction declare default descendant descendant-or-self descending div document element else empty encoding eq every except external following following-sibling for function ge greatest gt idiv if import in inherit-namespaces instance intersect is le least let lt mod module namespace ne no of or order ordered ordering parent preceding preceding-sibling preserve return satisfies schema self some stable strip then to treat typeswitch union unordered validate variable version where xmlspace xquery yes
+
+" TODO contains clashes with vim keyword
+syn keyword xqFunction abs adjust-date-to-timezone adjust-date-to-timezone adjust-dateTime-to-timezone adjust-dateTime-to-timezone adjust-time-to-timezone adjust-time-to-timezone avg base-uri base-uri boolean ceiling codepoint-equal codepoints-to-string collection collection compare concat count current-date current-dateTime current-time data dateTime day-from-date day-from-dateTime days-from-duration deep-equal deep-equal default-collation distinct-values distinct-values doc doc-available document-uri empty ends-with ends-with error error error error escape-uri exactly-one exists false floor hours-from-dateTime hours-from-duration hours-from-time id id idref idref implicit-timezone in-scope-prefixes index-of index-of insert-before lang lang last local-name local-name local-name-from-QName lower-case matches matches max max min min minutes-from-dateTime minutes-from-duration minutes-from-time month-from-date month-from-dateTime months-from-duration name name namespace-uri namespace-uri namespace-uri-for-prefix namespace-uri-from-QName nilled node-name normalize-space normalize-space normalize-unicode normalize-unicode not number number one-or-more position prefix-from-QName QName remove replace replace resolve-QName resolve-uri resolve-uri reverse root root round round-half-to-even round-half-to-even seconds-from-dateTime seconds-from-duration seconds-from-time starts-with starts-with static-base-uri string string string-join string-length string-length string-to-codepoints subsequence subsequence substring substring substring-after substring-after substring-before substring-before sum sum timezone-from-date timezone-from-dateTime timezone-from-time tokenize tokenize trace translate true unordered upper-case year-from-date year-from-dateTime years-from-duration zero-or-one
+
+syn keyword xqOperator add-dayTimeDuration-to-date add-dayTimeDuration-to-dateTime add-dayTimeDuration-to-time add-dayTimeDurations add-yearMonthDuration-to-date add-yearMonthDuration-to-dateTime add-yearMonthDurations base64Binary-equal boolean-equal boolean-greater-than boolean-less-than concatenate date-equal date-greater-than date-less-than dateTime-equal dateTime-greater-than dateTime-less-than dayTimeDuration-equal dayTimeDuration-greater-than dayTimeDuration-less-than divide-dayTimeDuration divide-dayTimeDuration-by-dayTimeDuration divide-yearMonthDuration divide-yearMonthDuration-by-yearMonthDuration except gDay-equal gMonth-equal gMonthDay-equal gYear-equal gYearMonth-equal hexBinary-equal intersect is-same-node multiply-dayTimeDuration multiply-yearMonthDuration node-after node-before NOTATION-equal numeric-add numeric-divide numeric-equal numeric-greater-than numeric-integer-divide numeric-less-than numeric-mod numeric-multiply numeric-subtract numeric-unary-minus numeric-unary-plus QName-equal subtract-dates-yielding-dayTimeDuration subtract-dateTimes-yielding-dayTimeDuration subtract-dayTimeDuration-from-date subtract-dayTimeDuration-from-dateTime subtract-dayTimeDuration-from-time subtract-dayTimeDurations subtract-times subtract-yearMonthDuration-from-date subtract-yearMonthDuration-from-dateTime subtract-yearMonthDurations time-equal time-greater-than time-less-than to union yearMonthDuration-equal yearMonthDuration-greater-than yearMonthDuration-less-than
+
+syn match xqType "xs:\(\|Datatype\|primitive\|string\|boolean\|float\|double\|decimal\|duration\|dateTime\|time\|date\|gYearMonth\|gYear\|gMonthDay\|gDay\|gMonth\|hexBinary\|base64Binary\|anyURI\|QName\|NOTATION\|\|normalizedString\|token\|language\|IDREFS\|ENTITIES\|NMTOKEN\|NMTOKENS\|Name\|NCName\|ID\|IDREF\|ENTITY\|integer\|nonPositiveInteger\|negativeInteger\|long\|int\|short\|byte\|nonNegativeInteger\|unsignedLong\|unsignedInt\|unsignedShort\|unsignedByte\|positiveInteger\)"
+
+
+" From XPath grammar:
+syn keyword xqXPath some every in in satisfies if then else to div idiv mod union intersect except instance of treat castable cast eq ne lt le gt ge is child descendant attribute self descendant-or-self following-sibling following namespace parent ancestor preceding-sibling preceding ancestor-or-self void item node document-node text comment processing-instruction attribute schema-attribute schema-element
+
+" eXist extensions
+syn match xqExist "&="
+
+" XQdoc
+syn match XQdoc contained "@\(param\|return\|author\)\>"
+
+" floating point number, with dot, optional exponent
+syn match xqFloat "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+" floating point number, starting with a dot, optional exponent
+syn match xqFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+" floating point number, without dot, with exponent
+syn match xqFloat "\d\+e[-+]\=\d\+[fl]\=\>"
+syn match xqNumber "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+syn match xqNumber "\<\d\+\>"
+
+syn region xqString start=+\z(['"]\)+ skip=+\\.+ end=+\z1+
+syn region xqComment start='(:' excludenl end=':)' contains=XQdoc
+
+syn match xqVariable "$\<[a-zA-Z:_][-.0-9a-zA-Z0-9:_]*\>"
+syn match xqSeparator ",\|;"
+syn region xqCode transparent contained start='{' excludenl end='}' contains=xqFunction,xqCode,xmlRegionBis,xqComment,xqStatement,xmlString,xqSeparator,xqNumber,xqVariable,xqString keepend extend
+
+syn region xmlRegionBis start=+<\z([^ /!?<>"']\+\)+ skip=+<!--\_.\{-}-->+ end=+</\z1\_\s\{-}>+ end=+/>+ fold contains=xmlTag,xmlEndTag,xmlCdata,xmlRegionBis,xmlComment,xmlEntity,xmlProcessing,xqCode keepend extend
+
+hi def link xqNumber Number
+hi def link xqFloat Number
+hi def link xqString String
+hi def link xqVariable Identifier
+hi def link xqComment Comment
+hi def link xqSeparator Operator
+hi def link xqStatement Statement
+hi def link xqFunction Function
+hi def link xqOperator Operator
+hi def link xqType Type
+hi def link xqXPath Operator
+hi def link XQdoc Special
+hi def link xqExist Operator
+
+" override the xml highlighting
+"hi link xmlTag Structure
+"hi link xmlTagName Structure
+"hi link xmlEndTag Structure
+
+let b:current_syntax = "xquery"
diff --git a/runtime/syntax/xs.vim b/runtime/syntax/xs.vim
new file mode 100644
index 0000000..2145ede
--- /dev/null
+++ b/runtime/syntax/xs.vim
@@ -0,0 +1,3680 @@
+" Vim syntax file
+" Language: XS (Perl extension interface language)
+" Author: Autogenerated from perl headers, on an original basis of Michael W. Dodge <sarge@pobox.com>
+" Maintainer: vim-perl <vim-perl@googlegroups.com>
+" Previous: Vincent Pit <perl@profvince.com>
+" Homepage: https://github.com/vim-perl/vim-perl
+" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
+" License: Vim License (see :help license)
+" Last Change: 2018 Mar 28
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/c.vim
+
+" Configuration:
+" let xs_superseded = 0 " mark C functions superseded by Perl replacements (ex. memcpy vs Copy)
+" let xs_not_core = 0 " mark private core functions
+
+if get(g:, 'xs_superseded', 0)
+syn keyword xsSuperseded atof atol calloc clearerr exit fclose feof ferror
+syn keyword xsSuperseded fflush fgetc fgetpos fgets fopen fprintf fputc fputs
+syn keyword xsSuperseded fread free freopen fseek fsetpos fwrite getc getenv
+syn keyword xsSuperseded isalnum isalpha iscntrl isdigit isgraph islower
+syn keyword xsSuperseded isprint ispunct isspace isupper isxdigit malloc
+syn keyword xsSuperseded memcpy memmove memset printf putc rand realloc
+syn keyword xsSuperseded rewind setenv sprintf srand stderr stdin stdout
+syn keyword xsSuperseded strcat strcmp strcpy strdup strlen strncat strncmp
+syn keyword xsSuperseded strncpy strstr strtod strtol strtoul system tolower
+syn keyword xsSuperseded toupper ungetc
+endif
+if get(g:, 'xs_not_core', 0)
+syn keyword xsPrivate F0convert Perl__add_range_to_invlist
+syn keyword xsPrivate Perl__core_swash_init Perl__get_encoding
+syn keyword xsPrivate Perl__get_swash_invlist Perl__invlist_contents
+syn keyword xsPrivate Perl__invlist_dump
+syn keyword xsPrivate Perl__invlist_intersection_maybe_complement_2nd
+syn keyword xsPrivate Perl__invlist_invert Perl__invlist_populate_swatch
+syn keyword xsPrivate Perl__invlist_search
+syn keyword xsPrivate Perl__invlist_union_maybe_complement_2nd
+syn keyword xsPrivate Perl__load_PL_utf8_foldclosures Perl__new_invlist
+syn keyword xsPrivate Perl__setup_canned_invlist Perl__swash_inversion_hash
+syn keyword xsPrivate Perl__swash_to_invlist Perl__to_fold_latin1
+syn keyword xsPrivate Perl__warn_problematic_locale Perl_av_reify
+syn keyword xsPrivate Perl_current_re_engine Perl_cv_ckproto_len_flags
+syn keyword xsPrivate Perl_emulate_cop_io Perl_find_rundefsvoffset
+syn keyword xsPrivate Perl_get_re_arg Perl_grok_atoUV Perl_isALNUM_lazy
+syn keyword xsPrivate Perl_isIDFIRST_lazy Perl_is_uni_alnum
+syn keyword xsPrivate Perl_is_uni_alnum_lc Perl_is_uni_alnumc
+syn keyword xsPrivate Perl_is_uni_alnumc_lc Perl_is_uni_alpha
+syn keyword xsPrivate Perl_is_uni_alpha_lc Perl_is_uni_ascii
+syn keyword xsPrivate Perl_is_uni_ascii_lc Perl_is_uni_blank
+syn keyword xsPrivate Perl_is_uni_blank_lc Perl_is_uni_cntrl
+syn keyword xsPrivate Perl_is_uni_cntrl_lc Perl_is_uni_digit
+syn keyword xsPrivate Perl_is_uni_digit_lc Perl_is_uni_graph
+syn keyword xsPrivate Perl_is_uni_graph_lc Perl_is_uni_idfirst
+syn keyword xsPrivate Perl_is_uni_idfirst_lc Perl_is_uni_lower
+syn keyword xsPrivate Perl_is_uni_lower_lc Perl_is_uni_print
+syn keyword xsPrivate Perl_is_uni_print_lc Perl_is_uni_punct
+syn keyword xsPrivate Perl_is_uni_punct_lc Perl_is_uni_space
+syn keyword xsPrivate Perl_is_uni_space_lc Perl_is_uni_upper
+syn keyword xsPrivate Perl_is_uni_upper_lc Perl_is_uni_xdigit
+syn keyword xsPrivate Perl_is_uni_xdigit_lc Perl_is_utf8_alnum
+syn keyword xsPrivate Perl_is_utf8_alnumc Perl_is_utf8_alpha
+syn keyword xsPrivate Perl_is_utf8_ascii Perl_is_utf8_blank Perl_is_utf8_char
+syn keyword xsPrivate Perl_is_utf8_cntrl Perl_is_utf8_digit
+syn keyword xsPrivate Perl_is_utf8_graph Perl_is_utf8_idcont
+syn keyword xsPrivate Perl_is_utf8_idfirst Perl_is_utf8_lower
+syn keyword xsPrivate Perl_is_utf8_mark Perl_is_utf8_perl_space
+syn keyword xsPrivate Perl_is_utf8_perl_word Perl_is_utf8_posix_digit
+syn keyword xsPrivate Perl_is_utf8_print Perl_is_utf8_punct
+syn keyword xsPrivate Perl_is_utf8_space Perl_is_utf8_upper
+syn keyword xsPrivate Perl_is_utf8_xdigit Perl_is_utf8_xidcont
+syn keyword xsPrivate Perl_is_utf8_xidfirst Perl_mg_find_mglob Perl_mg_length
+syn keyword xsPrivate Perl_multideref_stringify Perl_new_warnings_bitfield
+syn keyword xsPrivate Perl_op_clear Perl_ptr_table_clear Perl_qerror
+syn keyword xsPrivate Perl_reg_named_buff Perl_reg_named_buff_iter
+syn keyword xsPrivate Perl_reg_numbered_buff_fetch
+syn keyword xsPrivate Perl_reg_numbered_buff_length
+syn keyword xsPrivate Perl_reg_numbered_buff_store Perl_reg_qr_package
+syn keyword xsPrivate Perl_reg_temp_copy Perl_regprop Perl_report_uninit
+syn keyword xsPrivate Perl_sv_magicext_mglob Perl_sv_setsv_cow
+syn keyword xsPrivate Perl_to_uni_lower_lc Perl_to_uni_title_lc
+syn keyword xsPrivate Perl_to_uni_upper_lc Perl_try_amagic_bin
+syn keyword xsPrivate Perl_try_amagic_un Perl_utf8_to_uvchr
+syn keyword xsPrivate Perl_utf8_to_uvuni Perl_utf8_to_uvuni_buf
+syn keyword xsPrivate Perl_valid_utf8_to_uvuni Perl_validate_proto
+syn keyword xsPrivate Perl_vivify_defelem Perl_yylex S_F0convert
+syn keyword xsPrivate S__append_range_to_invlist S__make_exactf_invlist
+syn keyword xsPrivate S_add_above_Latin1_folds S_add_data S_add_multi_match
+syn keyword xsPrivate S_add_utf16_textfilter S_adjust_size_and_find_bucket
+syn keyword xsPrivate S_advance_one_SB S_advance_one_WB S_amagic_cmp
+syn keyword xsPrivate S_amagic_cmp_locale S_amagic_i_ncmp S_amagic_ncmp
+syn keyword xsPrivate S_anonymise_cv_maybe S_ao S_apply_attrs
+syn keyword xsPrivate S_apply_attrs_my S_assert_uft8_cache_coherent
+syn keyword xsPrivate S_assignment_type S_backup_one_SB S_backup_one_WB
+syn keyword xsPrivate S_bad_type_gv S_bad_type_pv
+syn keyword xsPrivate S_check_locale_boundary_crossing S_check_type_and_open
+syn keyword xsPrivate S_check_uni S_checkcomma S_ckwarn_common
+syn keyword xsPrivate S_clear_placeholders S_clear_special_blocks
+syn keyword xsPrivate S_cntrl_to_mnemonic S_construct_ahocorasick_from_trie
+syn keyword xsPrivate S_cop_free S_could_it_be_a_POSIX_class S_cr_textfilter
+syn keyword xsPrivate S_curse S_cv_dump S_deb_curcv S_deb_stack_n S_debprof
+syn keyword xsPrivate S_debug_start_match S_del_sv
+syn keyword xsPrivate S_deprecate_commaless_var_list S_destroy_matcher
+syn keyword xsPrivate S_div128 S_do_chomp S_do_delete_local S_do_oddball
+syn keyword xsPrivate S_do_smartmatch S_do_trans_complex
+syn keyword xsPrivate S_do_trans_complex_utf8 S_do_trans_count
+syn keyword xsPrivate S_do_trans_count_utf8 S_do_trans_simple
+syn keyword xsPrivate S_do_trans_simple_utf8 S_docatch S_doeval S_dofindlabel
+syn keyword xsPrivate S_doform S_dooneliner S_doopen_pm S_doparseform
+syn keyword xsPrivate S_dopoptoeval S_dopoptogiven S_dopoptolabel
+syn keyword xsPrivate S_dopoptoloop S_dopoptosub_at S_dopoptowhen
+syn keyword xsPrivate S_dump_exec_pos S_dump_trie S_dump_trie_interim_list
+syn keyword xsPrivate S_dump_trie_interim_table S_dumpuntil S_dup_attrlist
+syn keyword xsPrivate S_exec_failed S_expect_number S_filter_gets
+syn keyword xsPrivate S_finalize_op S_find_and_forget_pmops
+syn keyword xsPrivate S_find_array_subscript S_find_beginning S_find_byclass
+syn keyword xsPrivate S_find_default_stash S_find_hash_subscript
+syn keyword xsPrivate S_find_in_my_stash S_find_uninit_var S_first_symbol
+syn keyword xsPrivate S_fixup_errno_string S_fold_constants S_forbid_setid
+syn keyword xsPrivate S_force_ident S_force_ident_maybe_lex S_force_list
+syn keyword xsPrivate S_force_next S_force_strict_version S_force_version
+syn keyword xsPrivate S_force_word S_forget_pmop S_form_short_octal_warning
+syn keyword xsPrivate S_gen_constant_list S_get_ANYOF_cp_list_for_ssc
+syn keyword xsPrivate S_get_aux_mg S_get_num S_glob_2number
+syn keyword xsPrivate S_glob_assign_glob S_grok_bslash_N S_grok_bslash_c
+syn keyword xsPrivate S_grok_bslash_o S_group_end S_gv_init_svtype
+syn keyword xsPrivate S_gv_is_in_main S_gv_magicalize S_gv_magicalize_isa
+syn keyword xsPrivate S_handle_regex_sets S_hfreeentries S_hsplit
+syn keyword xsPrivate S_hv_auxinit S_hv_auxinit_internal S_hv_delete_common
+syn keyword xsPrivate S_hv_free_ent_ret S_hv_magic_check S_hv_notallowed
+syn keyword xsPrivate S_incline S_incpush S_incpush_if_exists
+syn keyword xsPrivate S_incpush_use_sep S_ingroup S_init_ids S_init_interp
+syn keyword xsPrivate S_init_main_stash S_init_perllib
+syn keyword xsPrivate S_init_postdump_symbols S_init_predump_symbols
+syn keyword xsPrivate S_inplace_aassign S_intuit_method S_intuit_more
+syn keyword xsPrivate S_invlist_extend S_invlist_iternext
+syn keyword xsPrivate S_invoke_exception_hook S_isFOO_lc S_isFOO_utf8_lc
+syn keyword xsPrivate S_isGCB S_isSB S_isWB S_is_an_int
+syn keyword xsPrivate S_is_handle_constructor S_is_ssc_worth_it S_isa_lookup
+syn keyword xsPrivate S_join_exact S_leave_common S_listkids
+syn keyword xsPrivate S_looks_like_bool S_magic_methcall1 S_make_matcher
+syn keyword xsPrivate S_make_trie S_matcher_matches_sv S_maybe_multimagic_gv
+syn keyword xsPrivate S_mayberelocate S_measure_struct S_mem_log_common
+syn keyword xsPrivate S_mess_alloc S_minus_v S_missingterm S_modkids
+syn keyword xsPrivate S_more_sv S_move_proto_attr S_mro_clean_isarev
+syn keyword xsPrivate S_mro_gather_and_rename S_mro_get_linear_isa_dfs
+syn keyword xsPrivate S_mul128 S_mulexp10 S_my_bytes_to_utf8 S_my_exit_jump
+syn keyword xsPrivate S_my_kid S_need_utf8 S_newGIVWHENOP S_new_constant
+syn keyword xsPrivate S_new_he S_new_logop S_next_symbol S_nextchar
+syn keyword xsPrivate S_no_bareword_allowed S_no_fh_allowed S_no_op
+syn keyword xsPrivate S_not_a_number S_not_incrementable S_nuke_stacks
+syn keyword xsPrivate S_num_overflow S_open_script S_openn_cleanup
+syn keyword xsPrivate S_openn_setup S_pack_rec S_pad_alloc_name
+syn keyword xsPrivate S_pad_check_dup S_pad_findlex S_pad_reset S_parse_body
+syn keyword xsPrivate S_parse_gv_stash_name S_parse_ident
+syn keyword xsPrivate S_parse_lparen_question_flags S_pending_ident S_pidgone
+syn keyword xsPrivate S_pm_description S_pmtrans
+syn keyword xsPrivate S_populate_ANYOF_from_invlist S_printbuf
+syn keyword xsPrivate S_process_special_blocks S_ptr_table_find
+syn keyword xsPrivate S_put_charclass_bitmap_innards S_put_code_point
+syn keyword xsPrivate S_put_range S_qsortsvu S_re_croak2 S_ref_array_or_hash
+syn keyword xsPrivate S_refcounted_he_value S_refkids S_refto S_reg
+syn keyword xsPrivate S_reg2Lanode S_reg_check_named_buff_matched S_reg_node
+syn keyword xsPrivate S_reg_recode S_reg_scan_name S_reganode S_regatom
+syn keyword xsPrivate S_regbranch S_regclass S_regcppop S_regcppush
+syn keyword xsPrivate S_regdump_extflags S_regdump_intflags
+syn keyword xsPrivate S_regex_set_precedence S_reghop3 S_reghop4
+syn keyword xsPrivate S_reghopmaybe3 S_reginclass S_reginsert S_regmatch
+syn keyword xsPrivate S_regnode_guts S_regpatws S_regpiece S_regrepeat
+syn keyword xsPrivate S_regtail S_regtail_study S_regtry S_require_tie_mod
+syn keyword xsPrivate S_restore_magic S_run_body S_run_user_filter
+syn keyword xsPrivate S_rxres_free S_rxres_restore S_save_hek_flags
+syn keyword xsPrivate S_save_lines S_save_magic_flags S_save_pushptri32ptr
+syn keyword xsPrivate S_save_scalar_at S_scalar_mod_type S_scalarboolean
+syn keyword xsPrivate S_scalarkids S_scalarseq S_scan_commit S_scan_const
+syn keyword xsPrivate S_scan_formline S_scan_heredoc S_scan_ident
+syn keyword xsPrivate S_scan_inputsymbol S_scan_pat S_scan_str S_scan_subst
+syn keyword xsPrivate S_scan_trans S_scan_word S_search_const S_sequence_num
+syn keyword xsPrivate S_set_ANYOF_arg S_share_hek_flags S_simplify_sort
+syn keyword xsPrivate S_skipspace_flags S_sortcv S_sortcv_stacked
+syn keyword xsPrivate S_sortcv_xsub S_space_join_names_mortal S_ssc_and
+syn keyword xsPrivate S_ssc_anything S_ssc_finalize S_ssc_init
+syn keyword xsPrivate S_ssc_is_anything S_ssc_is_cp_posixl_init S_ssc_or
+syn keyword xsPrivate S_stdize_locale S_strip_return S_study_chunk
+syn keyword xsPrivate S_sublex_done S_sublex_push S_sublex_start
+syn keyword xsPrivate S_sv_2iuv_common S_sv_2iuv_non_preserve S_sv_add_arena
+syn keyword xsPrivate S_sv_buf_to_rw S_sv_display S_sv_dup_common
+syn keyword xsPrivate S_sv_dup_inc_multiple S_sv_exp_grow S_sv_i_ncmp
+syn keyword xsPrivate S_sv_ncmp S_sv_pos_b2u_midway S_sv_pos_u2b_cached
+syn keyword xsPrivate S_sv_pos_u2b_forwards S_sv_pos_u2b_midway
+syn keyword xsPrivate S_sv_release_COW S_swallow_bom S_swash_scan_list_line
+syn keyword xsPrivate S_swatch_get S_to_byte_substr S_to_lower_latin1
+syn keyword xsPrivate S_to_utf8_substr S_tokenize_use S_tokeq S_tokereport
+syn keyword xsPrivate S_too_few_arguments_pv S_too_many_arguments_pv
+syn keyword xsPrivate S_uiv_2buf S_unpack_rec S_unreferenced_to_tmp_stack
+syn keyword xsPrivate S_unshare_hek_or_pvn S_unwind_handler_stack
+syn keyword xsPrivate S_update_debugger_info S_usage S_utf16_textfilter
+syn keyword xsPrivate S_utf8_mg_len_cache_update S_utf8_mg_pos_cache_update
+syn keyword xsPrivate S_validate_suid S_visit S_with_queued_errors
+syn keyword xsPrivate S_xs_version_bootcheck S_yywarn _add_range_to_invlist
+syn keyword xsPrivate _append_range_to_invlist _core_swash_init _get_encoding
+syn keyword xsPrivate _get_swash_invlist _invlist_array_init
+syn keyword xsPrivate _invlist_contains_cp _invlist_contents _invlist_dump
+syn keyword xsPrivate _invlist_intersection
+syn keyword xsPrivate _invlist_intersection_maybe_complement_2nd
+syn keyword xsPrivate _invlist_invert _invlist_len _invlist_populate_swatch
+syn keyword xsPrivate _invlist_search _invlist_subtract _invlist_union
+syn keyword xsPrivate _invlist_union_maybe_complement_2nd
+syn keyword xsPrivate _load_PL_utf8_foldclosures _make_exactf_invlist
+syn keyword xsPrivate _new_invlist _setup_canned_invlist
+syn keyword xsPrivate _swash_inversion_hash _swash_to_invlist _to_fold_latin1
+syn keyword xsPrivate _warn_problematic_locale add_above_Latin1_folds
+syn keyword xsPrivate add_cp_to_invlist add_data add_multi_match
+syn keyword xsPrivate add_utf16_textfilter adjust_size_and_find_bucket
+syn keyword xsPrivate advance_one_SB advance_one_WB
+syn keyword xsPrivate alloc_maybe_populate_EXACT amagic_cmp amagic_cmp_locale
+syn keyword xsPrivate amagic_i_ncmp amagic_ncmp anonymise_cv_maybe ao
+syn keyword xsPrivate apply_attrs apply_attrs_my assert_uft8_cache_coherent
+syn keyword xsPrivate assignment_type av_reify backup_one_SB backup_one_WB
+syn keyword xsPrivate bad_type_gv bad_type_pv check_locale_boundary_crossing
+syn keyword xsPrivate check_type_and_open check_uni checkcomma ckwarn_common
+syn keyword xsPrivate clear_placeholders clear_special_blocks
+syn keyword xsPrivate cntrl_to_mnemonic compute_EXACTish
+syn keyword xsPrivate construct_ahocorasick_from_trie cop_free
+syn keyword xsPrivate could_it_be_a_POSIX_class cr_textfilter
+syn keyword xsPrivate current_re_engine curse cv_ckproto_len_flags cv_dump
+syn keyword xsPrivate deb_curcv deb_stack_n debprof debug_start_match del_sv
+syn keyword xsPrivate deprecate_commaless_var_list destroy_matcher div128
+syn keyword xsPrivate do_aexec do_chomp do_delete_local do_exec do_oddball
+syn keyword xsPrivate do_smartmatch do_trans_complex do_trans_complex_utf8
+syn keyword xsPrivate do_trans_count do_trans_count_utf8 do_trans_simple
+syn keyword xsPrivate do_trans_simple_utf8 docatch doeval dofindlabel doform
+syn keyword xsPrivate dooneliner doopen_pm doparseform dopoptoeval
+syn keyword xsPrivate dopoptogiven dopoptolabel dopoptoloop dopoptosub_at
+syn keyword xsPrivate dopoptowhen dump_exec_pos dump_trie
+syn keyword xsPrivate dump_trie_interim_list dump_trie_interim_table
+syn keyword xsPrivate dumpuntil dup_attrlist exec_failed expect_number
+syn keyword xsPrivate filter_gets finalize_op find_and_forget_pmops
+syn keyword xsPrivate find_array_subscript find_beginning find_byclass
+syn keyword xsPrivate find_default_stash find_hash_subscript find_in_my_stash
+syn keyword xsPrivate find_rundefsvoffset find_uninit_var first_symbol
+syn keyword xsPrivate fixup_errno_string fold_constants forbid_setid
+syn keyword xsPrivate force_ident force_ident_maybe_lex force_list force_next
+syn keyword xsPrivate force_strict_version force_version force_word
+syn keyword xsPrivate forget_pmop form_short_octal_warning free_c_backtrace
+syn keyword xsPrivate gen_constant_list get_ANYOF_cp_list_for_ssc get_aux_mg
+syn keyword xsPrivate get_invlist_iter_addr get_invlist_offset_addr
+syn keyword xsPrivate get_invlist_previous_index_addr get_num glob_2number
+syn keyword xsPrivate glob_assign_glob grok_atoUV grok_bslash_N grok_bslash_c
+syn keyword xsPrivate grok_bslash_o grok_bslash_x group_end gv_init_svtype
+syn keyword xsPrivate gv_is_in_main gv_magicalize gv_magicalize_isa
+syn keyword xsPrivate handle_regex_sets hfreeentries hsplit hv_auxinit
+syn keyword xsPrivate hv_auxinit_internal hv_delete_common hv_free_ent_ret
+syn keyword xsPrivate hv_magic_check hv_notallowed incline incpush
+syn keyword xsPrivate incpush_if_exists incpush_use_sep ingroup init_ids
+syn keyword xsPrivate init_interp init_main_stash init_perllib
+syn keyword xsPrivate init_postdump_symbols init_predump_symbols
+syn keyword xsPrivate inplace_aassign intuit_method intuit_more invlist_array
+syn keyword xsPrivate invlist_clone invlist_extend invlist_highest
+syn keyword xsPrivate invlist_is_iterating invlist_iterfinish
+syn keyword xsPrivate invlist_iterinit invlist_iternext invlist_max
+syn keyword xsPrivate invlist_previous_index invlist_set_len
+syn keyword xsPrivate invlist_set_previous_index invlist_trim
+syn keyword xsPrivate invoke_exception_hook isALNUM_lazy isFOO_lc
+syn keyword xsPrivate isFOO_utf8_lc isGCB isIDFIRST_lazy isSB isWB is_an_int
+syn keyword xsPrivate is_handle_constructor is_ssc_worth_it is_uni_alnum
+syn keyword xsPrivate is_uni_alnum_lc is_uni_alnumc is_uni_alnumc_lc
+syn keyword xsPrivate is_uni_alpha is_uni_alpha_lc is_uni_ascii
+syn keyword xsPrivate is_uni_ascii_lc is_uni_blank is_uni_blank_lc
+syn keyword xsPrivate is_uni_cntrl is_uni_cntrl_lc is_uni_digit
+syn keyword xsPrivate is_uni_digit_lc is_uni_graph is_uni_graph_lc
+syn keyword xsPrivate is_uni_idfirst is_uni_idfirst_lc is_uni_lower
+syn keyword xsPrivate is_uni_lower_lc is_uni_print is_uni_print_lc
+syn keyword xsPrivate is_uni_punct is_uni_punct_lc is_uni_space
+syn keyword xsPrivate is_uni_space_lc is_uni_upper is_uni_upper_lc
+syn keyword xsPrivate is_uni_xdigit is_uni_xdigit_lc is_utf8_alnum
+syn keyword xsPrivate is_utf8_alnumc is_utf8_alpha is_utf8_ascii
+syn keyword xsPrivate is_utf8_blank is_utf8_char is_utf8_cntrl is_utf8_digit
+syn keyword xsPrivate is_utf8_graph is_utf8_idcont is_utf8_idfirst
+syn keyword xsPrivate is_utf8_lower is_utf8_mark is_utf8_perl_space
+syn keyword xsPrivate is_utf8_perl_word is_utf8_posix_digit is_utf8_print
+syn keyword xsPrivate is_utf8_punct is_utf8_space is_utf8_upper
+syn keyword xsPrivate is_utf8_xdigit is_utf8_xidcont is_utf8_xidfirst
+syn keyword xsPrivate isa_lookup join_exact leave_common listkids
+syn keyword xsPrivate looks_like_bool magic_methcall1 make_matcher make_trie
+syn keyword xsPrivate matcher_matches_sv maybe_multimagic_gv mayberelocate
+syn keyword xsPrivate measure_struct mem_log_common mess_alloc mg_find_mglob
+syn keyword xsPrivate mg_length minus_v missingterm modkids more_sv
+syn keyword xsPrivate move_proto_attr mro_clean_isarev mro_gather_and_rename
+syn keyword xsPrivate mro_get_linear_isa_dfs mul128 mulexp10
+syn keyword xsPrivate multideref_stringify my_bytes_to_utf8 my_exit_jump
+syn keyword xsPrivate my_kid need_utf8 newGIVWHENOP new_he new_logop
+syn keyword xsPrivate next_symbol nextchar no_bareword_allowed no_fh_allowed
+syn keyword xsPrivate no_op not_a_number not_incrementable nuke_stacks
+syn keyword xsPrivate num_overflow op_clear open_script openn_cleanup
+syn keyword xsPrivate openn_setup pack_rec pad_alloc_name pad_check_dup
+syn keyword xsPrivate pad_findlex pad_reset parse_body parse_gv_stash_name
+syn keyword xsPrivate parse_ident parse_lparen_question_flags pending_ident
+syn keyword xsPrivate pidgone pm_description pmtrans
+syn keyword xsPrivate populate_ANYOF_from_invlist printbuf
+syn keyword xsPrivate process_special_blocks ptr_table_clear ptr_table_find
+syn keyword xsPrivate put_charclass_bitmap_innards put_code_point put_range
+syn keyword xsPrivate qerror qsortsvu re_croak2 ref_array_or_hash
+syn keyword xsPrivate refcounted_he_value refkids refto reg reg2Lanode
+syn keyword xsPrivate reg_check_named_buff_matched reg_named_buff
+syn keyword xsPrivate reg_named_buff_iter reg_node reg_numbered_buff_fetch
+syn keyword xsPrivate reg_numbered_buff_length reg_numbered_buff_store
+syn keyword xsPrivate reg_qr_package reg_recode reg_scan_name reg_skipcomment
+syn keyword xsPrivate reg_temp_copy reganode regatom regbranch regclass
+syn keyword xsPrivate regcppop regcppush regcurly regdump_extflags
+syn keyword xsPrivate regdump_intflags regex_set_precedence reghop3 reghop4
+syn keyword xsPrivate reghopmaybe3 reginclass reginsert regmatch regnode_guts
+syn keyword xsPrivate regpatws regpiece regpposixcc regprop regrepeat regtail
+syn keyword xsPrivate regtail_study regtry report_uninit require_tie_mod
+syn keyword xsPrivate restore_magic run_body run_user_filter rxres_free
+syn keyword xsPrivate rxres_restore save_hek_flags save_lines
+syn keyword xsPrivate save_magic_flags save_pushptri32ptr save_scalar_at
+syn keyword xsPrivate scalar_mod_type scalarboolean scalarkids scalarseq
+syn keyword xsPrivate scan_commit scan_const scan_formline scan_heredoc
+syn keyword xsPrivate scan_ident scan_inputsymbol scan_pat scan_str
+syn keyword xsPrivate scan_subst scan_trans scan_word search_const
+syn keyword xsPrivate sequence_num set_ANYOF_arg share_hek_flags
+syn keyword xsPrivate simplify_sort skipspace_flags sortcv sortcv_stacked
+syn keyword xsPrivate sortcv_xsub space_join_names_mortal ssc_add_range
+syn keyword xsPrivate ssc_and ssc_anything ssc_clear_locale ssc_cp_and
+syn keyword xsPrivate ssc_finalize ssc_init ssc_intersection ssc_is_anything
+syn keyword xsPrivate ssc_is_cp_posixl_init ssc_or ssc_union stdize_locale
+syn keyword xsPrivate strip_return study_chunk sublex_done sublex_push
+syn keyword xsPrivate sublex_start sv_2iuv_common sv_2iuv_non_preserve
+syn keyword xsPrivate sv_add_arena sv_buf_to_rw sv_copypv sv_display
+syn keyword xsPrivate sv_dup_common sv_dup_inc_multiple sv_exp_grow sv_i_ncmp
+syn keyword xsPrivate sv_magicext_mglob sv_ncmp sv_only_taint_gmagic
+syn keyword xsPrivate sv_or_pv_pos_u2b sv_pos_b2u_midway sv_pos_u2b_cached
+syn keyword xsPrivate sv_pos_u2b_forwards sv_pos_u2b_midway sv_release_COW
+syn keyword xsPrivate sv_setsv_cow swallow_bom swash_scan_list_line
+syn keyword xsPrivate swatch_get to_byte_substr to_lower_latin1
+syn keyword xsPrivate to_uni_lower_lc to_uni_title_lc to_uni_upper_lc
+syn keyword xsPrivate to_utf8_substr tokenize_use tokeq tokereport
+syn keyword xsPrivate too_few_arguments_pv too_many_arguments_pv uiv_2buf
+syn keyword xsPrivate unpack_rec unreferenced_to_tmp_stack unshare_hek_or_pvn
+syn keyword xsPrivate unwind_handler_stack update_debugger_info usage
+syn keyword xsPrivate utf16_textfilter utf8_mg_len_cache_update
+syn keyword xsPrivate utf8_mg_pos_cache_update utf8_to_uvchr utf8_to_uvuni
+syn keyword xsPrivate utf8_to_uvuni_buf valid_utf8_to_uvuni validate_proto
+syn keyword xsPrivate visit vivify_defelem with_queued_errors yylex yywarn
+endif
+syn keyword xsType AMT AMTS ANY AV BHK BINOP BLOCK CHECKPOINT CLONE_PARAMS
+syn keyword xsType COP COPHH CV DB_Hash_t DB_Prefix_t DEBUG_t Direntry_t
+syn keyword xsType Fpos_t Free_t GCB_enum GP GV Gid_t Groups_t HE HEK HV I16
+syn keyword xsType I32 I64 I8 IO IV Int64 JMPENV LISTOP LOGOP LOOP MAGIC
+syn keyword xsType METHOP MGS MGVTBL Malloc_t Mmap_t Mode_t NV Netdb_hlen_t
+syn keyword xsType Netdb_host_t Netdb_name_t Netdb_net_t OP OPCODE OPSLAB
+syn keyword xsType OPSLOT Off_t Optype PAD PADLIST PADNAME PADNAMELIST
+syn keyword xsType PADOFFSET PADOP PERL_CONTEXT PERL_DRAND48_T PERL_SI PMOP
+syn keyword xsType PTR_TBL_ENT_t PTR_TBL_t PVOP PerlHandShakeInterpreter
+syn keyword xsType PerlIO PerlIO_funcs PerlIO_list_s PerlIO_list_t PerlIOl
+syn keyword xsType PerlInterpreter Pid_t Quad_t REGEXP RExC_state_t
+syn keyword xsType Rand_seed_t SB_enum SSize_t STRLEN STRUCT_SV SUBLEXINFO SV
+syn keyword xsType SVOP Select_fd_set_t Shmat_t Signal_t Sigsave_t Size_t
+syn keyword xsType Sock_size_t Stat_t TM64 Time64_T Time_t U16 U32 U64 U8
+syn keyword xsType UNOP UNOP_AUX UV Uid_t Uquad_t WB_enum XINVLIST XOP XPV
+syn keyword xsType XPVAV XPVBM XPVCV XPVFM XPVGV XPVHV XPVIO XPVIV XPVLV
+syn keyword xsType XPVMG XPVNV XPVUV Year _PerlIO _PerlIO_funcs
+syn keyword xsType _char_class_number _pMY_CXT _pTHX _reg_ac_data
+syn keyword xsType _reg_trie_data _reg_trie_state _reg_trie_trans
+syn keyword xsType _reg_trie_trans_list_elem _sublex_info _xhvnameu _xivu
+syn keyword xsType _xmgu _xnvu am_table am_table_short block_eval
+syn keyword xsType block_format block_givwhen block_hooks block_loop
+syn keyword xsType block_sub bound_type clone_params custom_op cv_flags_t
+syn keyword xsType expectation gccbug_semun line_t magic mem_log_type methop
+syn keyword xsType mgvtbl mro_alg mro_meta my_cxt_t opcode opslab opslot p5rx
+syn keyword xsType pMY_CXT pMY_CXT_ pTHX pTHX_ padlist padname
+syn keyword xsType padname_with_str padnamelist padtidy_type perl_cond
+syn keyword xsType perl_debug_pad perl_drand48_t perl_key
+syn keyword xsType perl_memory_debug_header perl_mstats perl_mstats_t
+syn keyword xsType perl_mutex perl_os_thread perl_phase perl_vars
+syn keyword xsType pthread_addr_t ptr_tbl ptr_tbl_ent refcounted_he
+syn keyword xsType reg_ac_data reg_code_block reg_data reg_substr_data
+syn keyword xsType reg_substr_datum reg_trie_data reg_trie_state
+syn keyword xsType reg_trie_trans reg_trie_trans_le regex_charset regnode
+syn keyword xsType regnode_1 regnode_2 regnode_2L regnode_charclass
+syn keyword xsType regnode_charclass_class regnode_charclass_posixl
+syn keyword xsType regnode_ssc regnode_string semun shared_he svtype ufuncs
+syn keyword xsType unop_aux xop_flags_enum xpv xpvav xpvcv xpvfm xpvgv xpvhv
+syn keyword xsType xpvhv_aux xpvinvlist xpvio xpviv xpvlv xpvmg xpvnv xpvuv
+syn keyword xsType yytokentype
+syn keyword xsString IVdf NVef NVff NVgf SVf SVf256 SVf32 SVf_ UVof UVuf UVxf
+syn keyword xsConstant CXt_BLOCK CXt_EVAL CXt_FORMAT CXt_GIVEN CXt_LOOP_FOR
+syn keyword xsConstant CXt_LOOP_LAZYIV CXt_LOOP_LAZYSV CXt_LOOP_PLAIN
+syn keyword xsConstant CXt_NULL CXt_SUB CXt_SUBST CXt_WHEN GCB_BOUND GCB_CR
+syn keyword xsConstant GCB_Control GCB_EDGE GCB_Extend GCB_L GCB_LF GCB_LV
+syn keyword xsConstant GCB_LVT GCB_Other GCB_Prepend GCB_Regional_Indicator
+syn keyword xsConstant GCB_SpacingMark GCB_T GCB_V G_ARRAY G_DISCARD G_EVAL
+syn keyword xsConstant G_FAKINGEVAL G_KEEPERR G_METHOD G_METHOD_NAMED
+syn keyword xsConstant G_NOARGS G_NODEBUG G_RE_REPARSING G_SCALAR
+syn keyword xsConstant G_UNDEF_FILL G_VOID G_WANT G_WARN_ALL_MASK
+syn keyword xsConstant G_WARN_ALL_OFF G_WARN_ALL_ON G_WARN_OFF G_WARN_ON
+syn keyword xsConstant G_WARN_ONCE G_WRITING_TO_STDERR OA_AVREF OA_BASEOP
+syn keyword xsConstant OA_BASEOP_OR_UNOP OA_BINOP OA_CLASS_MASK OA_COP
+syn keyword xsConstant OA_CVREF OA_DANGEROUS OA_DEFGV OA_FILEREF
+syn keyword xsConstant OA_FILESTATOP OA_FOLDCONST OA_HVREF OA_LIST OA_LISTOP
+syn keyword xsConstant OA_LOGOP OA_LOOP OA_LOOPEXOP OA_MARK OA_METHOP
+syn keyword xsConstant OA_OPTIONAL OA_OTHERINT OA_PADOP OA_PMOP
+syn keyword xsConstant OA_PVOP_OR_SVOP OA_RETSCALAR OA_SCALAR OA_SCALARREF
+syn keyword xsConstant OA_SVOP OA_TARGET OA_TARGLEX OA_UNOP OA_UNOP_AUX
+syn keyword xsConstant OP_AASSIGN OP_ABS OP_ACCEPT OP_ADD OP_AEACH OP_AELEM
+syn keyword xsConstant OP_AELEMFAST OP_AELEMFAST_LEX OP_AKEYS OP_ALARM OP_AND
+syn keyword xsConstant OP_ANDASSIGN OP_ANONCODE OP_ANONCONST OP_ANONHASH
+syn keyword xsConstant OP_ANONLIST OP_ASLICE OP_ATAN2 OP_AV2ARYLEN OP_AVALUES
+syn keyword xsConstant OP_BACKTICK OP_BIND OP_BINMODE OP_BIT_AND OP_BIT_OR
+syn keyword xsConstant OP_BIT_XOR OP_BLESS OP_BREAK OP_CALLER OP_CHDIR
+syn keyword xsConstant OP_CHMOD OP_CHOMP OP_CHOP OP_CHOWN OP_CHR OP_CHROOT
+syn keyword xsConstant OP_CLONECV OP_CLOSE OP_CLOSEDIR OP_COMPLEMENT
+syn keyword xsConstant OP_CONCAT OP_COND_EXPR OP_CONNECT OP_CONST OP_CONTINUE
+syn keyword xsConstant OP_COREARGS OP_COS OP_CRYPT OP_CUSTOM OP_DBMCLOSE
+syn keyword xsConstant OP_DBMOPEN OP_DBSTATE OP_DEFINED OP_DELETE OP_DIE
+syn keyword xsConstant OP_DIVIDE OP_DOFILE OP_DOR OP_DORASSIGN OP_DUMP
+syn keyword xsConstant OP_EACH OP_EGRENT OP_EHOSTENT OP_ENETENT OP_ENTER
+syn keyword xsConstant OP_ENTEREVAL OP_ENTERGIVEN OP_ENTERITER OP_ENTERLOOP
+syn keyword xsConstant OP_ENTERSUB OP_ENTERTRY OP_ENTERWHEN OP_ENTERWRITE
+syn keyword xsConstant OP_EOF OP_EPROTOENT OP_EPWENT OP_EQ OP_ESERVENT
+syn keyword xsConstant OP_EXEC OP_EXISTS OP_EXIT OP_EXP OP_FC OP_FCNTL
+syn keyword xsConstant OP_FILENO OP_FLIP OP_FLOCK OP_FLOP OP_FORK OP_FORMLINE
+syn keyword xsConstant OP_FTATIME OP_FTBINARY OP_FTBLK OP_FTCHR OP_FTCTIME
+syn keyword xsConstant OP_FTDIR OP_FTEEXEC OP_FTEOWNED OP_FTEREAD OP_FTEWRITE
+syn keyword xsConstant OP_FTFILE OP_FTIS OP_FTLINK OP_FTMTIME OP_FTPIPE
+syn keyword xsConstant OP_FTREXEC OP_FTROWNED OP_FTRREAD OP_FTRWRITE
+syn keyword xsConstant OP_FTSGID OP_FTSIZE OP_FTSOCK OP_FTSUID OP_FTSVTX
+syn keyword xsConstant OP_FTTEXT OP_FTTTY OP_FTZERO OP_GE OP_GELEM OP_GETC
+syn keyword xsConstant OP_GETLOGIN OP_GETPEERNAME OP_GETPGRP OP_GETPPID
+syn keyword xsConstant OP_GETPRIORITY OP_GETSOCKNAME OP_GGRENT OP_GGRGID
+syn keyword xsConstant OP_GGRNAM OP_GHBYADDR OP_GHBYNAME OP_GHOSTENT OP_GLOB
+syn keyword xsConstant OP_GMTIME OP_GNBYADDR OP_GNBYNAME OP_GNETENT OP_GOTO
+syn keyword xsConstant OP_GPBYNAME OP_GPBYNUMBER OP_GPROTOENT OP_GPWENT
+syn keyword xsConstant OP_GPWNAM OP_GPWUID OP_GREPSTART OP_GREPWHILE
+syn keyword xsConstant OP_GSBYNAME OP_GSBYPORT OP_GSERVENT OP_GSOCKOPT OP_GT
+syn keyword xsConstant OP_GV OP_GVSV OP_HELEM OP_HEX OP_HINTSEVAL OP_HSLICE
+syn keyword xsConstant OP_INDEX OP_INT OP_INTROCV OP_IOCTL OP_ITER OP_I_ADD
+syn keyword xsConstant OP_I_DIVIDE OP_I_EQ OP_I_GE OP_I_GT OP_I_LE OP_I_LT
+syn keyword xsConstant OP_I_MODULO OP_I_MULTIPLY OP_I_NCMP OP_I_NE
+syn keyword xsConstant OP_I_NEGATE OP_I_POSTDEC OP_I_POSTINC OP_I_PREDEC
+syn keyword xsConstant OP_I_PREINC OP_I_SUBTRACT OP_JOIN OP_KEYS OP_KILL
+syn keyword xsConstant OP_KVASLICE OP_KVHSLICE OP_LAST OP_LC OP_LCFIRST OP_LE
+syn keyword xsConstant OP_LEAVE OP_LEAVEEVAL OP_LEAVEGIVEN OP_LEAVELOOP
+syn keyword xsConstant OP_LEAVESUB OP_LEAVESUBLV OP_LEAVETRY OP_LEAVEWHEN
+syn keyword xsConstant OP_LEAVEWRITE OP_LEFT_SHIFT OP_LENGTH OP_LINESEQ
+syn keyword xsConstant OP_LINK OP_LIST OP_LISTEN OP_LOCALTIME OP_LOCK OP_LOG
+syn keyword xsConstant OP_LSLICE OP_LSTAT OP_LT OP_LVAVREF OP_LVREF
+syn keyword xsConstant OP_LVREFSLICE OP_MAPSTART OP_MAPWHILE OP_MATCH
+syn keyword xsConstant OP_METHOD OP_METHOD_NAMED OP_METHOD_REDIR
+syn keyword xsConstant OP_METHOD_REDIR_SUPER OP_METHOD_SUPER OP_MKDIR
+syn keyword xsConstant OP_MODULO OP_MSGCTL OP_MSGGET OP_MSGRCV OP_MSGSND
+syn keyword xsConstant OP_MULTIDEREF OP_MULTIPLY OP_NBIT_AND OP_NBIT_OR
+syn keyword xsConstant OP_NBIT_XOR OP_NCMP OP_NCOMPLEMENT OP_NE OP_NEGATE
+syn keyword xsConstant OP_NEXT OP_NEXTSTATE OP_NOT OP_NULL OP_OCT OP_ONCE
+syn keyword xsConstant OP_OPEN OP_OPEN_DIR OP_OR OP_ORASSIGN OP_ORD OP_PACK
+syn keyword xsConstant OP_PADANY OP_PADAV OP_PADCV OP_PADHV OP_PADRANGE
+syn keyword xsConstant OP_PADSV OP_PIPE_OP OP_POP OP_POS OP_POSTDEC
+syn keyword xsConstant OP_POSTINC OP_POW OP_PREDEC OP_PREINC OP_PRINT
+syn keyword xsConstant OP_PROTOTYPE OP_PRTF OP_PUSH OP_PUSHMARK OP_PUSHRE
+syn keyword xsConstant OP_QR OP_QUOTEMETA OP_RAND OP_RANGE OP_RCATLINE
+syn keyword xsConstant OP_REACH OP_READ OP_READDIR OP_READLINE OP_READLINK
+syn keyword xsConstant OP_RECV OP_REDO OP_REF OP_REFASSIGN OP_REFGEN
+syn keyword xsConstant OP_REGCMAYBE OP_REGCOMP OP_REGCRESET OP_RENAME
+syn keyword xsConstant OP_REPEAT OP_REQUIRE OP_RESET OP_RETURN OP_REVERSE
+syn keyword xsConstant OP_REWINDDIR OP_RIGHT_SHIFT OP_RINDEX OP_RKEYS
+syn keyword xsConstant OP_RMDIR OP_RUNCV OP_RV2AV OP_RV2CV OP_RV2GV OP_RV2HV
+syn keyword xsConstant OP_RV2SV OP_RVALUES OP_SASSIGN OP_SAY OP_SBIT_AND
+syn keyword xsConstant OP_SBIT_OR OP_SBIT_XOR OP_SCALAR OP_SCHOMP OP_SCHOP
+syn keyword xsConstant OP_SCMP OP_SCOMPLEMENT OP_SCOPE OP_SEEK OP_SEEKDIR
+syn keyword xsConstant OP_SELECT OP_SEMCTL OP_SEMGET OP_SEMOP OP_SEND OP_SEQ
+syn keyword xsConstant OP_SETPGRP OP_SETPRIORITY OP_SGE OP_SGRENT OP_SGT
+syn keyword xsConstant OP_SHIFT OP_SHMCTL OP_SHMGET OP_SHMREAD OP_SHMWRITE
+syn keyword xsConstant OP_SHOSTENT OP_SHUTDOWN OP_SIN OP_SLE OP_SLEEP OP_SLT
+syn keyword xsConstant OP_SMARTMATCH OP_SNE OP_SNETENT OP_SOCKET OP_SOCKPAIR
+syn keyword xsConstant OP_SORT OP_SPLICE OP_SPLIT OP_SPRINTF OP_SPROTOENT
+syn keyword xsConstant OP_SPWENT OP_SQRT OP_SRAND OP_SREFGEN OP_SSELECT
+syn keyword xsConstant OP_SSERVENT OP_SSOCKOPT OP_STAT OP_STRINGIFY OP_STUB
+syn keyword xsConstant OP_STUDY OP_SUBST OP_SUBSTCONT OP_SUBSTR OP_SUBTRACT
+syn keyword xsConstant OP_SYMLINK OP_SYSCALL OP_SYSOPEN OP_SYSREAD OP_SYSSEEK
+syn keyword xsConstant OP_SYSTEM OP_SYSWRITE OP_TELL OP_TELLDIR OP_TIE
+syn keyword xsConstant OP_TIED OP_TIME OP_TMS OP_TRANS OP_TRANSR OP_TRUNCATE
+syn keyword xsConstant OP_UC OP_UCFIRST OP_UMASK OP_UNDEF OP_UNLINK OP_UNPACK
+syn keyword xsConstant OP_UNSHIFT OP_UNSTACK OP_UNTIE OP_UTIME OP_VALUES
+syn keyword xsConstant OP_VEC OP_WAIT OP_WAITPID OP_WANTARRAY OP_WARN OP_XOR
+syn keyword xsConstant OP_max OPf_FOLDED OPf_KIDS OPf_KNOW OPf_LIST OPf_MOD
+syn keyword xsConstant OPf_PARENS OPf_REF OPf_SPECIAL OPf_STACKED OPf_WANT
+syn keyword xsConstant OPf_WANT_LIST OPf_WANT_SCALAR OPf_WANT_VOID
+syn keyword xsConstant OPpALLOW_FAKE OPpARG1_MASK OPpARG2_MASK OPpARG3_MASK
+syn keyword xsConstant OPpARG4_MASK OPpASSIGN_BACKWARDS OPpASSIGN_COMMON
+syn keyword xsConstant OPpASSIGN_CV_TO_GV OPpCONST_BARE OPpCONST_ENTERED
+syn keyword xsConstant OPpCONST_NOVER OPpCONST_SHORTCIRCUIT OPpCONST_STRICT
+syn keyword xsConstant OPpCOREARGS_DEREF1 OPpCOREARGS_DEREF2
+syn keyword xsConstant OPpCOREARGS_PUSHMARK OPpCOREARGS_SCALARMOD OPpDEREF
+syn keyword xsConstant OPpDEREF_AV OPpDEREF_HV OPpDEREF_SV OPpDONT_INIT_GV
+syn keyword xsConstant OPpEARLY_CV OPpENTERSUB_AMPER OPpENTERSUB_DB
+syn keyword xsConstant OPpENTERSUB_HASTARG OPpENTERSUB_INARGS
+syn keyword xsConstant OPpENTERSUB_LVAL_MASK OPpENTERSUB_NOPAREN
+syn keyword xsConstant OPpEVAL_BYTES OPpEVAL_COPHH OPpEVAL_HAS_HH
+syn keyword xsConstant OPpEVAL_RE_REPARSING OPpEVAL_UNICODE OPpEXISTS_SUB
+syn keyword xsConstant OPpFLIP_LINENUM OPpFT_ACCESS OPpFT_AFTER_t
+syn keyword xsConstant OPpFT_STACKED OPpFT_STACKING OPpGREP_LEX
+syn keyword xsConstant OPpHINT_STRICT_REFS OPpHUSH_VMSISH OPpITER_DEF
+syn keyword xsConstant OPpITER_REVERSED OPpLIST_GUESSED OPpLVALUE
+syn keyword xsConstant OPpLVAL_DEFER OPpLVAL_INTRO OPpLVREF_AV OPpLVREF_CV
+syn keyword xsConstant OPpLVREF_ELEM OPpLVREF_HV OPpLVREF_ITER OPpLVREF_SV
+syn keyword xsConstant OPpLVREF_TYPE OPpMAYBE_LVSUB OPpMAYBE_TRUEBOOL
+syn keyword xsConstant OPpMAY_RETURN_CONSTANT OPpMULTIDEREF_DELETE
+syn keyword xsConstant OPpMULTIDEREF_EXISTS OPpOFFBYONE OPpOPEN_IN_CRLF
+syn keyword xsConstant OPpOPEN_IN_RAW OPpOPEN_OUT_CRLF OPpOPEN_OUT_RAW
+syn keyword xsConstant OPpOUR_INTRO OPpPADRANGE_COUNTMASK
+syn keyword xsConstant OPpPADRANGE_COUNTSHIFT OPpPAD_STATE OPpPV_IS_UTF8
+syn keyword xsConstant OPpREFCOUNTED OPpREPEAT_DOLIST OPpREVERSE_INPLACE
+syn keyword xsConstant OPpRUNTIME OPpSLICE OPpSLICEWARNING OPpSORT_DESCEND
+syn keyword xsConstant OPpSORT_INPLACE OPpSORT_INTEGER OPpSORT_NUMERIC
+syn keyword xsConstant OPpSORT_QSORT OPpSORT_REVERSE OPpSORT_STABLE
+syn keyword xsConstant OPpSPLIT_IMPLIM OPpSUBSTR_REPL_FIRST OPpTARGET_MY
+syn keyword xsConstant OPpTRANS_ALL OPpTRANS_COMPLEMENT OPpTRANS_DELETE
+syn keyword xsConstant OPpTRANS_FROM_UTF OPpTRANS_GROWS OPpTRANS_IDENTICAL
+syn keyword xsConstant OPpTRANS_SQUASH OPpTRANS_TO_UTF OPpTRUEBOOL
+syn keyword xsConstant PERL_MAGIC_READONLY_ACCEPTABLE
+syn keyword xsConstant PERL_MAGIC_TYPE_IS_VALUE_MAGIC
+syn keyword xsConstant PERL_MAGIC_TYPE_READONLY_ACCEPTABLE
+syn keyword xsConstant PERL_MAGIC_UTF8_CACHESIZE PERL_MAGIC_VALUE_MAGIC
+syn keyword xsConstant PERL_MAGIC_VTABLE_MASK PERL_MAGIC_arylen
+syn keyword xsConstant PERL_MAGIC_arylen_p PERL_MAGIC_backref PERL_MAGIC_bm
+syn keyword xsConstant PERL_MAGIC_checkcall PERL_MAGIC_collxfrm
+syn keyword xsConstant PERL_MAGIC_dbfile PERL_MAGIC_dbline
+syn keyword xsConstant PERL_MAGIC_debugvar PERL_MAGIC_defelem PERL_MAGIC_env
+syn keyword xsConstant PERL_MAGIC_envelem PERL_MAGIC_ext PERL_MAGIC_fm
+syn keyword xsConstant PERL_MAGIC_hints PERL_MAGIC_hintselem PERL_MAGIC_isa
+syn keyword xsConstant PERL_MAGIC_isaelem PERL_MAGIC_lvref PERL_MAGIC_nkeys
+syn keyword xsConstant PERL_MAGIC_overload_table PERL_MAGIC_pos PERL_MAGIC_qr
+syn keyword xsConstant PERL_MAGIC_regdata PERL_MAGIC_regdatum
+syn keyword xsConstant PERL_MAGIC_regex_global PERL_MAGIC_rhash
+syn keyword xsConstant PERL_MAGIC_shared PERL_MAGIC_shared_scalar
+syn keyword xsConstant PERL_MAGIC_sig PERL_MAGIC_sigelem PERL_MAGIC_substr
+syn keyword xsConstant PERL_MAGIC_sv PERL_MAGIC_symtab PERL_MAGIC_taint
+syn keyword xsConstant PERL_MAGIC_tied PERL_MAGIC_tiedelem
+syn keyword xsConstant PERL_MAGIC_tiedscalar PERL_MAGIC_utf8 PERL_MAGIC_uvar
+syn keyword xsConstant PERL_MAGIC_uvar_elem PERL_MAGIC_vec PERL_MAGIC_vstring
+syn keyword xsConstant REGEX_ASCII_MORE_RESTRICTED_CHARSET
+syn keyword xsConstant REGEX_ASCII_RESTRICTED_CHARSET REGEX_DEPENDS_CHARSET
+syn keyword xsConstant REGEX_LOCALE_CHARSET REGEX_UNICODE_CHARSET SB_ATerm
+syn keyword xsConstant SB_BOUND SB_CR SB_Close SB_EDGE SB_Extend SB_Format
+syn keyword xsConstant SB_LF SB_Lower SB_Numeric SB_OLetter SB_Other
+syn keyword xsConstant SB_SContinue SB_STerm SB_Sep SB_Sp SB_Upper SVfARG
+syn keyword xsConstant SVf_AMAGIC SVf_BREAK SVf_FAKE SVf_IOK SVf_IVisUV
+syn keyword xsConstant SVf_IsCOW SVf_NOK SVf_OK SVf_OOK SVf_POK SVf_PROTECT
+syn keyword xsConstant SVf_READONLY SVf_ROK SVf_THINKFIRST SVf_UTF8 SVp_IOK
+syn keyword xsConstant SVp_NOK SVp_POK SVp_SCREAM SVpad_OUR SVpad_STATE
+syn keyword xsConstant SVpad_TYPED SVpav_REAL SVpav_REIFY SVpbm_TAIL
+syn keyword xsConstant SVpbm_VALID SVpgv_GP SVphv_CLONEABLE SVphv_HASKFLAGS
+syn keyword xsConstant SVphv_LAZYDEL SVphv_SHAREKEYS SVprv_PCS_IMPORTED
+syn keyword xsConstant SVprv_WEAKREF SVs_GMG SVs_OBJECT SVs_PADMY
+syn keyword xsConstant SVs_PADSTALE SVs_PADTMP SVs_RMG SVs_SMG SVs_TEMP
+syn keyword xsConstant SVt_INVLIST SVt_IV SVt_LAST SVt_NULL SVt_NV SVt_PV
+syn keyword xsConstant SVt_PVAV SVt_PVBM SVt_PVCV SVt_PVFM SVt_PVGV SVt_PVHV
+syn keyword xsConstant SVt_PVIO SVt_PVIV SVt_PVLV SVt_PVMG SVt_PVNV
+syn keyword xsConstant SVt_REGEXP SVt_RV TRADITIONAL_BOUND WB_ALetter
+syn keyword xsConstant WB_BOUND WB_CR WB_Double_Quote WB_EDGE WB_Extend
+syn keyword xsConstant WB_ExtendNumLet WB_Format WB_Hebrew_Letter WB_Katakana
+syn keyword xsConstant WB_LF WB_MidLetter WB_MidNum WB_MidNumLet WB_Newline
+syn keyword xsConstant WB_Numeric WB_Other WB_Regional_Indicator
+syn keyword xsConstant WB_Single_Quote WB_UNKNOWN XATTRBLOCK XATTRTERM XBLOCK
+syn keyword xsConstant XBLOCKTERM XOPERATOR XOPe_xop_class XOPe_xop_desc
+syn keyword xsConstant XOPe_xop_name XOPe_xop_peep XOPe_xop_ptr XPOSTDEREF
+syn keyword xsConstant XREF XSTATE XTERM XTERMBLOCK XTERMORDORDOR
+syn keyword xsConstant _CC_ENUM_ALPHA _CC_ENUM_ALPHANUMERIC _CC_ENUM_ASCII
+syn keyword xsConstant _CC_ENUM_BLANK _CC_ENUM_CASED _CC_ENUM_CNTRL
+syn keyword xsConstant _CC_ENUM_DIGIT _CC_ENUM_GRAPH _CC_ENUM_LOWER
+syn keyword xsConstant _CC_ENUM_PRINT _CC_ENUM_PUNCT _CC_ENUM_SPACE
+syn keyword xsConstant _CC_ENUM_UPPER _CC_ENUM_VERTSPACE _CC_ENUM_WORDCHAR
+syn keyword xsConstant _CC_ENUM_XDIGIT padtidy_FORMAT padtidy_SUB
+syn keyword xsConstant padtidy_SUBCLONE
+syn keyword xsException XCPT_CATCH XCPT_RETHROW XCPT_TRY_END XCPT_TRY_START
+syn keyword xsException dXCPT
+syn keyword xsKeyword ALIAS: BOOT: CASE: CLEANUP: CODE: C_ARGS: DISABLE
+syn keyword xsKeyword ENABLE FALLBACK: IN INCLUDE: INIT: INPUT: INTERFACE:
+syn keyword xsKeyword INTERFACE_MACRO: IN_OUT IN_OUTLIST MODULE NO_INIT:
+syn keyword xsKeyword NO_OUTPUT: OUT OUTLIST OUTPUT: OVERLOAD: PACKAGE
+syn keyword xsKeyword POSTCALL: PPCODE: PREFIX PREINIT: PROTOTYPE:
+syn keyword xsKeyword PROTOTYPES: REQUIRE: SCOPE: VERSIONCHECK: length
+syn keyword xsFunction GetVars Gv_AMupdate PerlIO_clearerr PerlIO_close
+syn keyword xsFunction PerlIO_eof PerlIO_error PerlIO_fileno PerlIO_fill
+syn keyword xsFunction PerlIO_flush PerlIO_get_base PerlIO_get_bufsiz
+syn keyword xsFunction PerlIO_get_cnt PerlIO_get_ptr PerlIO_read PerlIO_seek
+syn keyword xsFunction PerlIO_set_cnt PerlIO_set_ptrcnt PerlIO_setlinebuf
+syn keyword xsFunction PerlIO_stderr PerlIO_stdin PerlIO_stdout PerlIO_tell
+syn keyword xsFunction PerlIO_unread PerlIO_write Perl_GetVars
+syn keyword xsFunction Perl_Gv_AMupdate Perl_PerlIO_clearerr
+syn keyword xsFunction Perl_PerlIO_close Perl_PerlIO_context_layers
+syn keyword xsFunction Perl_PerlIO_eof Perl_PerlIO_error Perl_PerlIO_fileno
+syn keyword xsFunction Perl_PerlIO_fill Perl_PerlIO_flush
+syn keyword xsFunction Perl_PerlIO_get_base Perl_PerlIO_get_bufsiz
+syn keyword xsFunction Perl_PerlIO_get_cnt Perl_PerlIO_get_ptr
+syn keyword xsFunction Perl_PerlIO_read Perl_PerlIO_seek Perl_PerlIO_set_cnt
+syn keyword xsFunction Perl_PerlIO_set_ptrcnt Perl_PerlIO_setlinebuf
+syn keyword xsFunction Perl_PerlIO_stderr Perl_PerlIO_stdin
+syn keyword xsFunction Perl_PerlIO_stdout Perl_PerlIO_tell Perl_PerlIO_unread
+syn keyword xsFunction Perl_PerlIO_write Perl__get_regclass_nonbitmap_data
+syn keyword xsFunction Perl__is_cur_LC_category_utf8
+syn keyword xsFunction Perl__is_in_locale_category Perl__is_uni_FOO
+syn keyword xsFunction Perl__is_uni_perl_idcont Perl__is_uni_perl_idstart
+syn keyword xsFunction Perl__is_utf8_FOO Perl__is_utf8_idcont
+syn keyword xsFunction Perl__is_utf8_idstart Perl__is_utf8_mark
+syn keyword xsFunction Perl__is_utf8_perl_idcont Perl__is_utf8_perl_idstart
+syn keyword xsFunction Perl__is_utf8_xidcont Perl__is_utf8_xidstart
+syn keyword xsFunction Perl__new_invlist_C_array Perl__to_uni_fold_flags
+syn keyword xsFunction Perl__to_utf8_fold_flags Perl__to_utf8_lower_flags
+syn keyword xsFunction Perl__to_utf8_title_flags Perl__to_utf8_upper_flags
+syn keyword xsFunction Perl_alloccopstash Perl_amagic_call
+syn keyword xsFunction Perl_amagic_deref_call Perl_any_dup
+syn keyword xsFunction Perl_apply_attrs_string Perl_atfork_lock
+syn keyword xsFunction Perl_atfork_unlock Perl_av_arylen_p Perl_av_clear
+syn keyword xsFunction Perl_av_create_and_push Perl_av_create_and_unshift_one
+syn keyword xsFunction Perl_av_delete Perl_av_exists Perl_av_extend
+syn keyword xsFunction Perl_av_fetch Perl_av_fill Perl_av_iter_p Perl_av_len
+syn keyword xsFunction Perl_av_make Perl_av_pop Perl_av_push Perl_av_shift
+syn keyword xsFunction Perl_av_store Perl_av_undef Perl_av_unshift
+syn keyword xsFunction Perl_block_end Perl_block_gimme Perl_block_start
+syn keyword xsFunction Perl_blockhook_register Perl_bytes_cmp_utf8
+syn keyword xsFunction Perl_bytes_from_utf8 Perl_bytes_to_utf8 Perl_call_argv
+syn keyword xsFunction Perl_call_atexit Perl_call_list Perl_call_method
+syn keyword xsFunction Perl_call_pv Perl_call_sv Perl_caller_cx Perl_calloc
+syn keyword xsFunction Perl_cast_i32 Perl_cast_iv Perl_cast_ulong
+syn keyword xsFunction Perl_cast_uv Perl_ck_entersub_args_list
+syn keyword xsFunction Perl_ck_entersub_args_proto
+syn keyword xsFunction Perl_ck_entersub_args_proto_or_list Perl_ck_warner
+syn keyword xsFunction Perl_ck_warner_d Perl_ckwarn Perl_ckwarn_d
+syn keyword xsFunction Perl_clone_params_del Perl_clone_params_new
+syn keyword xsFunction Perl_cop_fetch_label Perl_cop_store_label Perl_croak
+syn keyword xsFunction Perl_croak_no_modify Perl_croak_nocontext
+syn keyword xsFunction Perl_croak_sv Perl_croak_xs_usage Perl_csighandler
+syn keyword xsFunction Perl_custom_op_desc Perl_custom_op_name
+syn keyword xsFunction Perl_custom_op_register Perl_cv_clone Perl_cv_const_sv
+syn keyword xsFunction Perl_cv_get_call_checker Perl_cv_name
+syn keyword xsFunction Perl_cv_set_call_checker
+syn keyword xsFunction Perl_cv_set_call_checker_flags Perl_cv_undef
+syn keyword xsFunction Perl_cx_dump Perl_cx_dup Perl_cxinc Perl_deb
+syn keyword xsFunction Perl_deb_nocontext Perl_debop Perl_debprofdump
+syn keyword xsFunction Perl_debstack Perl_debstackptrs Perl_delimcpy
+syn keyword xsFunction Perl_despatch_signals Perl_die Perl_die_nocontext
+syn keyword xsFunction Perl_die_sv Perl_dirp_dup Perl_do_aspawn
+syn keyword xsFunction Perl_do_binmode Perl_do_close Perl_do_gv_dump
+syn keyword xsFunction Perl_do_gvgv_dump Perl_do_hv_dump Perl_do_join
+syn keyword xsFunction Perl_do_magic_dump Perl_do_op_dump Perl_do_open9
+syn keyword xsFunction Perl_do_openn Perl_do_pmop_dump Perl_do_spawn
+syn keyword xsFunction Perl_do_spawn_nowait Perl_do_sprintf Perl_do_sv_dump
+syn keyword xsFunction Perl_doing_taint Perl_doref Perl_dounwind
+syn keyword xsFunction Perl_dowantarray Perl_dump_all Perl_dump_c_backtrace
+syn keyword xsFunction Perl_dump_eval Perl_dump_form Perl_dump_indent
+syn keyword xsFunction Perl_dump_mstats Perl_dump_packsubs Perl_dump_sub
+syn keyword xsFunction Perl_dump_vindent Perl_eval_pv Perl_eval_sv
+syn keyword xsFunction Perl_fbm_compile Perl_fbm_instr Perl_filter_add
+syn keyword xsFunction Perl_filter_del Perl_filter_read Perl_find_runcv
+syn keyword xsFunction Perl_find_rundefsv Perl_foldEQ Perl_foldEQ_latin1
+syn keyword xsFunction Perl_foldEQ_locale Perl_foldEQ_utf8_flags Perl_form
+syn keyword xsFunction Perl_form_nocontext Perl_fp_dup Perl_fprintf_nocontext
+syn keyword xsFunction Perl_free_global_struct Perl_free_tmps Perl_get_av
+syn keyword xsFunction Perl_get_c_backtrace_dump Perl_get_context Perl_get_cv
+syn keyword xsFunction Perl_get_cvn_flags Perl_get_hv Perl_get_mstats
+syn keyword xsFunction Perl_get_op_descs Perl_get_op_names Perl_get_ppaddr
+syn keyword xsFunction Perl_get_sv Perl_get_vtbl Perl_getcwd_sv Perl_gp_dup
+syn keyword xsFunction Perl_gp_free Perl_gp_ref Perl_grok_bin Perl_grok_hex
+syn keyword xsFunction Perl_grok_infnan Perl_grok_number
+syn keyword xsFunction Perl_grok_number_flags Perl_grok_numeric_radix
+syn keyword xsFunction Perl_grok_oct Perl_gv_add_by_type Perl_gv_autoload_pv
+syn keyword xsFunction Perl_gv_autoload_pvn Perl_gv_autoload_sv Perl_gv_check
+syn keyword xsFunction Perl_gv_const_sv Perl_gv_dump Perl_gv_efullname
+syn keyword xsFunction Perl_gv_efullname4 Perl_gv_fetchfile
+syn keyword xsFunction Perl_gv_fetchfile_flags Perl_gv_fetchmeth_pv
+syn keyword xsFunction Perl_gv_fetchmeth_pv_autoload Perl_gv_fetchmeth_pvn
+syn keyword xsFunction Perl_gv_fetchmeth_pvn_autoload Perl_gv_fetchmeth_sv
+syn keyword xsFunction Perl_gv_fetchmeth_sv_autoload
+syn keyword xsFunction Perl_gv_fetchmethod_autoload
+syn keyword xsFunction Perl_gv_fetchmethod_pv_flags
+syn keyword xsFunction Perl_gv_fetchmethod_pvn_flags
+syn keyword xsFunction Perl_gv_fetchmethod_sv_flags Perl_gv_fetchpv
+syn keyword xsFunction Perl_gv_fetchpvn_flags Perl_gv_fetchsv
+syn keyword xsFunction Perl_gv_fullname Perl_gv_fullname4 Perl_gv_handler
+syn keyword xsFunction Perl_gv_init_pv Perl_gv_init_pvn Perl_gv_init_sv
+syn keyword xsFunction Perl_gv_name_set Perl_gv_stashpv Perl_gv_stashpvn
+syn keyword xsFunction Perl_gv_stashsv Perl_he_dup Perl_hek_dup
+syn keyword xsFunction Perl_hv_assert Perl_hv_clear
+syn keyword xsFunction Perl_hv_clear_placeholders Perl_hv_common
+syn keyword xsFunction Perl_hv_common_key_len Perl_hv_copy_hints_hv
+syn keyword xsFunction Perl_hv_delayfree_ent Perl_hv_eiter_p
+syn keyword xsFunction Perl_hv_eiter_set Perl_hv_fill Perl_hv_free_ent
+syn keyword xsFunction Perl_hv_iterinit Perl_hv_iterkey Perl_hv_iterkeysv
+syn keyword xsFunction Perl_hv_iternext_flags Perl_hv_iternextsv
+syn keyword xsFunction Perl_hv_iterval Perl_hv_ksplit Perl_hv_name_set
+syn keyword xsFunction Perl_hv_placeholders_get Perl_hv_placeholders_set
+syn keyword xsFunction Perl_hv_rand_set Perl_hv_riter_p Perl_hv_riter_set
+syn keyword xsFunction Perl_hv_scalar Perl_init_global_struct
+syn keyword xsFunction Perl_init_i18nl10n Perl_init_i18nl14n Perl_init_stacks
+syn keyword xsFunction Perl_init_tm Perl_instr Perl_intro_my
+syn keyword xsFunction Perl_is_invariant_string Perl_is_lvalue_sub
+syn keyword xsFunction Perl_is_utf8_string Perl_is_utf8_string_loclen
+syn keyword xsFunction Perl_isinfnan Perl_leave_scope Perl_lex_bufutf8
+syn keyword xsFunction Perl_lex_discard_to Perl_lex_grow_linestr
+syn keyword xsFunction Perl_lex_next_chunk Perl_lex_peek_unichar
+syn keyword xsFunction Perl_lex_read_space Perl_lex_read_to
+syn keyword xsFunction Perl_lex_read_unichar Perl_lex_start Perl_lex_stuff_pv
+syn keyword xsFunction Perl_lex_stuff_pvn Perl_lex_stuff_sv Perl_lex_unstuff
+syn keyword xsFunction Perl_load_module Perl_load_module_nocontext
+syn keyword xsFunction Perl_looks_like_number Perl_magic_dump Perl_malloc
+syn keyword xsFunction Perl_markstack_grow Perl_mess Perl_mess_nocontext
+syn keyword xsFunction Perl_mess_sv Perl_mfree Perl_mg_clear Perl_mg_copy
+syn keyword xsFunction Perl_mg_dup Perl_mg_find Perl_mg_findext Perl_mg_free
+syn keyword xsFunction Perl_mg_free_type Perl_mg_get Perl_mg_magical
+syn keyword xsFunction Perl_mg_set Perl_mg_size Perl_mini_mktime
+syn keyword xsFunction Perl_moreswitches Perl_mro_get_from_name
+syn keyword xsFunction Perl_mro_get_linear_isa Perl_mro_get_private_data
+syn keyword xsFunction Perl_mro_method_changed_in Perl_mro_register
+syn keyword xsFunction Perl_mro_set_mro Perl_mro_set_private_data
+syn keyword xsFunction Perl_my_atof Perl_my_atof2 Perl_my_bcopy Perl_my_bzero
+syn keyword xsFunction Perl_my_chsize Perl_my_cxt_index Perl_my_cxt_init
+syn keyword xsFunction Perl_my_dirfd Perl_my_exit Perl_my_failure_exit
+syn keyword xsFunction Perl_my_fflush_all Perl_my_fork Perl_my_memcmp
+syn keyword xsFunction Perl_my_memset Perl_my_pclose Perl_my_popen
+syn keyword xsFunction Perl_my_popen_list Perl_my_setenv Perl_my_setlocale
+syn keyword xsFunction Perl_my_snprintf Perl_my_socketpair Perl_my_sprintf
+syn keyword xsFunction Perl_my_strerror Perl_my_strftime Perl_my_strlcat
+syn keyword xsFunction Perl_my_strlcpy Perl_my_vsnprintf Perl_newANONATTRSUB
+syn keyword xsFunction Perl_newANONHASH Perl_newANONLIST Perl_newANONSUB
+syn keyword xsFunction Perl_newASSIGNOP Perl_newAVREF Perl_newBINOP
+syn keyword xsFunction Perl_newCONDOP Perl_newCONSTSUB Perl_newCONSTSUB_flags
+syn keyword xsFunction Perl_newCVREF Perl_newDEFSVOP Perl_newFORM
+syn keyword xsFunction Perl_newFOROP Perl_newGIVENOP Perl_newGVOP
+syn keyword xsFunction Perl_newGVREF Perl_newGVgen_flags Perl_newHVREF
+syn keyword xsFunction Perl_newHVhv Perl_newLISTOP Perl_newLOGOP
+syn keyword xsFunction Perl_newLOOPEX Perl_newLOOPOP Perl_newMETHOP
+syn keyword xsFunction Perl_newMETHOP_named Perl_newMYSUB Perl_newNULLLIST
+syn keyword xsFunction Perl_newOP Perl_newPADNAMELIST Perl_newPADNAMEouter
+syn keyword xsFunction Perl_newPADNAMEpvn Perl_newPADOP Perl_newPMOP
+syn keyword xsFunction Perl_newPROG Perl_newPVOP Perl_newRANGE Perl_newRV
+syn keyword xsFunction Perl_newRV_noinc Perl_newSLICEOP Perl_newSTATEOP
+syn keyword xsFunction Perl_newSV Perl_newSVOP Perl_newSVREF Perl_newSV_type
+syn keyword xsFunction Perl_newSVhek Perl_newSViv Perl_newSVnv Perl_newSVpv
+syn keyword xsFunction Perl_newSVpv_share Perl_newSVpvf
+syn keyword xsFunction Perl_newSVpvf_nocontext Perl_newSVpvn
+syn keyword xsFunction Perl_newSVpvn_flags Perl_newSVpvn_share Perl_newSVrv
+syn keyword xsFunction Perl_newSVsv Perl_newSVuv Perl_newUNOP
+syn keyword xsFunction Perl_newUNOP_AUX Perl_newWHENOP Perl_newWHILEOP
+syn keyword xsFunction Perl_newXS Perl_newXS_flags Perl_new_collate
+syn keyword xsFunction Perl_new_ctype Perl_new_numeric Perl_new_stackinfo
+syn keyword xsFunction Perl_new_version Perl_ninstr Perl_nothreadhook
+syn keyword xsFunction Perl_op_append_elem Perl_op_append_list
+syn keyword xsFunction Perl_op_contextualize Perl_op_convert_list
+syn keyword xsFunction Perl_op_dump Perl_op_free Perl_op_linklist
+syn keyword xsFunction Perl_op_null Perl_op_parent Perl_op_prepend_elem
+syn keyword xsFunction Perl_op_refcnt_lock Perl_op_refcnt_unlock
+syn keyword xsFunction Perl_op_scope Perl_op_sibling_splice Perl_pack_cat
+syn keyword xsFunction Perl_packlist Perl_pad_add_anon Perl_pad_add_name_pv
+syn keyword xsFunction Perl_pad_add_name_pvn Perl_pad_add_name_sv
+syn keyword xsFunction Perl_pad_alloc Perl_pad_compname_type
+syn keyword xsFunction Perl_pad_findmy_pv Perl_pad_findmy_pvn
+syn keyword xsFunction Perl_pad_findmy_sv Perl_pad_new Perl_pad_setsv
+syn keyword xsFunction Perl_pad_sv Perl_pad_tidy Perl_padnamelist_fetch
+syn keyword xsFunction Perl_padnamelist_store Perl_parse_arithexpr
+syn keyword xsFunction Perl_parse_barestmt Perl_parse_block
+syn keyword xsFunction Perl_parse_fullexpr Perl_parse_fullstmt
+syn keyword xsFunction Perl_parse_label Perl_parse_listexpr
+syn keyword xsFunction Perl_parse_stmtseq Perl_parse_termexpr Perl_parser_dup
+syn keyword xsFunction Perl_pmop_dump Perl_pop_scope Perl_pregcomp
+syn keyword xsFunction Perl_pregexec Perl_pregfree Perl_pregfree2
+syn keyword xsFunction Perl_prescan_version Perl_printf_nocontext
+syn keyword xsFunction Perl_ptr_table_fetch Perl_ptr_table_free
+syn keyword xsFunction Perl_ptr_table_new Perl_ptr_table_split
+syn keyword xsFunction Perl_ptr_table_store Perl_push_scope Perl_pv_display
+syn keyword xsFunction Perl_pv_escape Perl_pv_pretty Perl_pv_uni_display
+syn keyword xsFunction Perl_quadmath_format_needed
+syn keyword xsFunction Perl_quadmath_format_single Perl_re_compile
+syn keyword xsFunction Perl_re_dup_guts Perl_re_intuit_start
+syn keyword xsFunction Perl_re_intuit_string Perl_realloc Perl_reentrant_free
+syn keyword xsFunction Perl_reentrant_init Perl_reentrant_retry
+syn keyword xsFunction Perl_reentrant_size Perl_reg_named_buff_all
+syn keyword xsFunction Perl_reg_named_buff_exists Perl_reg_named_buff_fetch
+syn keyword xsFunction Perl_reg_named_buff_firstkey
+syn keyword xsFunction Perl_reg_named_buff_nextkey Perl_reg_named_buff_scalar
+syn keyword xsFunction Perl_regclass_swash Perl_regdump Perl_regdupe_internal
+syn keyword xsFunction Perl_regexec_flags Perl_regfree_internal
+syn keyword xsFunction Perl_reginitcolors Perl_regnext Perl_repeatcpy
+syn keyword xsFunction Perl_require_pv Perl_rninstr Perl_rsignal
+syn keyword xsFunction Perl_rsignal_state Perl_runops_debug
+syn keyword xsFunction Perl_runops_standard Perl_rv2cv_op_cv Perl_rvpv_dup
+syn keyword xsFunction Perl_safesyscalloc Perl_safesysfree Perl_safesysmalloc
+syn keyword xsFunction Perl_safesysrealloc Perl_save_I16 Perl_save_I32
+syn keyword xsFunction Perl_save_I8 Perl_save_adelete Perl_save_aelem_flags
+syn keyword xsFunction Perl_save_alloc Perl_save_aptr Perl_save_ary
+syn keyword xsFunction Perl_save_bool Perl_save_clearsv Perl_save_delete
+syn keyword xsFunction Perl_save_destructor Perl_save_destructor_x
+syn keyword xsFunction Perl_save_generic_pvref Perl_save_generic_svref
+syn keyword xsFunction Perl_save_gp Perl_save_hash Perl_save_hdelete
+syn keyword xsFunction Perl_save_helem_flags Perl_save_hints Perl_save_hptr
+syn keyword xsFunction Perl_save_int Perl_save_item Perl_save_iv
+syn keyword xsFunction Perl_save_list Perl_save_long Perl_save_nogv
+syn keyword xsFunction Perl_save_padsv_and_mortalize Perl_save_pptr
+syn keyword xsFunction Perl_save_pushi32ptr Perl_save_pushptr
+syn keyword xsFunction Perl_save_pushptrptr Perl_save_re_context
+syn keyword xsFunction Perl_save_scalar Perl_save_set_svflags
+syn keyword xsFunction Perl_save_shared_pvref Perl_save_sptr Perl_save_svref
+syn keyword xsFunction Perl_save_vptr Perl_savepv Perl_savepvn
+syn keyword xsFunction Perl_savesharedpv Perl_savesharedpvn
+syn keyword xsFunction Perl_savesharedsvpv Perl_savestack_grow
+syn keyword xsFunction Perl_savestack_grow_cnt Perl_savesvpv Perl_scan_bin
+syn keyword xsFunction Perl_scan_hex Perl_scan_num Perl_scan_oct
+syn keyword xsFunction Perl_scan_version Perl_scan_vstring Perl_seed
+syn keyword xsFunction Perl_set_context Perl_set_numeric_local
+syn keyword xsFunction Perl_set_numeric_radix Perl_set_numeric_standard
+syn keyword xsFunction Perl_setdefout Perl_share_hek Perl_si_dup Perl_sortsv
+syn keyword xsFunction Perl_sortsv_flags Perl_ss_dup Perl_stack_grow
+syn keyword xsFunction Perl_start_subparse Perl_str_to_version
+syn keyword xsFunction Perl_sv_2bool_flags Perl_sv_2cv Perl_sv_2io
+syn keyword xsFunction Perl_sv_2iv_flags Perl_sv_2mortal Perl_sv_2nv_flags
+syn keyword xsFunction Perl_sv_2pv_flags Perl_sv_2pvbyte Perl_sv_2pvutf8
+syn keyword xsFunction Perl_sv_2uv_flags Perl_sv_backoff Perl_sv_bless
+syn keyword xsFunction Perl_sv_cat_decode Perl_sv_catpv Perl_sv_catpv_flags
+syn keyword xsFunction Perl_sv_catpv_mg Perl_sv_catpvf Perl_sv_catpvf_mg
+syn keyword xsFunction Perl_sv_catpvf_mg_nocontext Perl_sv_catpvf_nocontext
+syn keyword xsFunction Perl_sv_catpvn_flags Perl_sv_catsv_flags Perl_sv_chop
+syn keyword xsFunction Perl_sv_clear Perl_sv_cmp Perl_sv_cmp_flags
+syn keyword xsFunction Perl_sv_cmp_locale Perl_sv_cmp_locale_flags
+syn keyword xsFunction Perl_sv_collxfrm_flags Perl_sv_copypv_flags
+syn keyword xsFunction Perl_sv_dec Perl_sv_dec_nomg Perl_sv_derived_from
+syn keyword xsFunction Perl_sv_derived_from_pv Perl_sv_derived_from_pvn
+syn keyword xsFunction Perl_sv_derived_from_sv Perl_sv_destroyable
+syn keyword xsFunction Perl_sv_does Perl_sv_does_pv Perl_sv_does_pvn
+syn keyword xsFunction Perl_sv_does_sv Perl_sv_dump Perl_sv_dup
+syn keyword xsFunction Perl_sv_dup_inc Perl_sv_eq_flags
+syn keyword xsFunction Perl_sv_force_normal_flags Perl_sv_free
+syn keyword xsFunction Perl_sv_get_backrefs Perl_sv_gets Perl_sv_grow
+syn keyword xsFunction Perl_sv_inc Perl_sv_inc_nomg Perl_sv_insert_flags
+syn keyword xsFunction Perl_sv_isa Perl_sv_isobject Perl_sv_iv Perl_sv_len
+syn keyword xsFunction Perl_sv_len_utf8 Perl_sv_magic Perl_sv_magicext
+syn keyword xsFunction Perl_sv_newmortal Perl_sv_newref Perl_sv_nosharing
+syn keyword xsFunction Perl_sv_nounlocking Perl_sv_nv Perl_sv_peek
+syn keyword xsFunction Perl_sv_pos_b2u Perl_sv_pos_b2u_flags Perl_sv_pos_u2b
+syn keyword xsFunction Perl_sv_pos_u2b_flags Perl_sv_pvbyten
+syn keyword xsFunction Perl_sv_pvbyten_force Perl_sv_pvn
+syn keyword xsFunction Perl_sv_pvn_force_flags Perl_sv_pvn_nomg
+syn keyword xsFunction Perl_sv_pvutf8n Perl_sv_pvutf8n_force
+syn keyword xsFunction Perl_sv_recode_to_utf8 Perl_sv_reftype Perl_sv_replace
+syn keyword xsFunction Perl_sv_report_used Perl_sv_reset Perl_sv_rvweaken
+syn keyword xsFunction Perl_sv_setiv Perl_sv_setiv_mg Perl_sv_setnv
+syn keyword xsFunction Perl_sv_setnv_mg Perl_sv_setpv Perl_sv_setpv_mg
+syn keyword xsFunction Perl_sv_setpvf Perl_sv_setpvf_mg
+syn keyword xsFunction Perl_sv_setpvf_mg_nocontext Perl_sv_setpvf_nocontext
+syn keyword xsFunction Perl_sv_setpviv Perl_sv_setpviv_mg Perl_sv_setpvn
+syn keyword xsFunction Perl_sv_setpvn_mg Perl_sv_setref_iv Perl_sv_setref_nv
+syn keyword xsFunction Perl_sv_setref_pv Perl_sv_setref_pvn Perl_sv_setref_uv
+syn keyword xsFunction Perl_sv_setsv_flags Perl_sv_setsv_mg Perl_sv_setuv
+syn keyword xsFunction Perl_sv_setuv_mg Perl_sv_tainted Perl_sv_true
+syn keyword xsFunction Perl_sv_uni_display Perl_sv_unmagic Perl_sv_unmagicext
+syn keyword xsFunction Perl_sv_unref_flags Perl_sv_untaint Perl_sv_upgrade
+syn keyword xsFunction Perl_sv_usepvn_flags Perl_sv_utf8_decode
+syn keyword xsFunction Perl_sv_utf8_downgrade Perl_sv_utf8_encode
+syn keyword xsFunction Perl_sv_utf8_upgrade_flags_grow Perl_sv_uv
+syn keyword xsFunction Perl_sv_vcatpvf Perl_sv_vcatpvf_mg Perl_sv_vcatpvfn
+syn keyword xsFunction Perl_sv_vcatpvfn_flags Perl_sv_vsetpvf
+syn keyword xsFunction Perl_sv_vsetpvf_mg Perl_sv_vsetpvfn Perl_swash_fetch
+syn keyword xsFunction Perl_swash_init Perl_sync_locale Perl_sys_init
+syn keyword xsFunction Perl_sys_init3 Perl_sys_intern_clear
+syn keyword xsFunction Perl_sys_intern_dup Perl_sys_intern_init Perl_sys_term
+syn keyword xsFunction Perl_taint_env Perl_taint_proper Perl_to_uni_lower
+syn keyword xsFunction Perl_to_uni_title Perl_to_uni_upper Perl_to_utf8_case
+syn keyword xsFunction Perl_unlnk Perl_unpack_str Perl_unpackstring
+syn keyword xsFunction Perl_unsharepvn Perl_upg_version Perl_utf16_to_utf8
+syn keyword xsFunction Perl_utf16_to_utf8_reversed Perl_utf8_distance
+syn keyword xsFunction Perl_utf8_hop Perl_utf8_length Perl_utf8_to_bytes
+syn keyword xsFunction Perl_utf8n_to_uvchr Perl_utf8n_to_uvuni
+syn keyword xsFunction Perl_uvoffuni_to_utf8_flags Perl_uvuni_to_utf8
+syn keyword xsFunction Perl_uvuni_to_utf8_flags Perl_valid_utf8_to_uvchr
+syn keyword xsFunction Perl_vcmp Perl_vcroak Perl_vdeb Perl_vform
+syn keyword xsFunction Perl_vload_module Perl_vmess Perl_vnewSVpvf
+syn keyword xsFunction Perl_vnormal Perl_vnumify Perl_vstringify Perl_vverify
+syn keyword xsFunction Perl_vwarn Perl_vwarner Perl_warn Perl_warn_nocontext
+syn keyword xsFunction Perl_warn_sv Perl_warner Perl_warner_nocontext
+syn keyword xsFunction Perl_whichsig_pv Perl_whichsig_pvn Perl_whichsig_sv
+syn keyword xsFunction Perl_wrap_op_checker _get_regclass_nonbitmap_data
+syn keyword xsFunction _is_cur_LC_category_utf8 _is_in_locale_category
+syn keyword xsFunction _is_uni_FOO _is_uni_perl_idcont _is_uni_perl_idstart
+syn keyword xsFunction _is_utf8_FOO _is_utf8_char_slow _is_utf8_idcont
+syn keyword xsFunction _is_utf8_idstart _is_utf8_mark _is_utf8_perl_idcont
+syn keyword xsFunction _is_utf8_perl_idstart _is_utf8_xidcont
+syn keyword xsFunction _is_utf8_xidstart _new_invlist_C_array
+syn keyword xsFunction _to_uni_fold_flags _to_utf8_fold_flags
+syn keyword xsFunction _to_utf8_lower_flags _to_utf8_title_flags
+syn keyword xsFunction _to_utf8_upper_flags alloccopstash amagic_call
+syn keyword xsFunction amagic_deref_call any_dup append_utf8_from_native_byte
+syn keyword xsFunction apply_attrs_string atfork_lock atfork_unlock av_clear
+syn keyword xsFunction av_delete av_exists av_extend av_fetch av_fill av_len
+syn keyword xsFunction av_make av_pop av_push av_shift av_store av_top_index
+syn keyword xsFunction av_undef av_unshift block_end block_gimme block_start
+syn keyword xsFunction bytes_cmp_utf8 bytes_from_utf8 bytes_to_utf8 call_argv
+syn keyword xsFunction call_atexit call_list call_method call_pv call_sv
+syn keyword xsFunction caller_cx cast_i32 cast_iv cast_ulong cast_uv
+syn keyword xsFunction ck_entersub_args_list ck_entersub_args_proto
+syn keyword xsFunction ck_entersub_args_proto_or_list ck_warner ck_warner_d
+syn keyword xsFunction croak croak_memory_wrap croak_no_modify
+syn keyword xsFunction croak_nocontext croak_sv croak_xs_usage csighandler
+syn keyword xsFunction custom_op_desc custom_op_name cv_clone cv_const_sv
+syn keyword xsFunction cv_get_call_checker cv_name cv_set_call_checker
+syn keyword xsFunction cv_set_call_checker_flags cv_undef cx_dump cx_dup
+syn keyword xsFunction cxinc deb deb_nocontext debop debprofdump debstack
+syn keyword xsFunction debstackptrs delimcpy despatch_signals die
+syn keyword xsFunction die_nocontext die_sv dirp_dup do_aspawn do_binmode
+syn keyword xsFunction do_close do_gv_dump do_gvgv_dump do_hv_dump do_join
+syn keyword xsFunction do_magic_dump do_op_dump do_open9 do_openn
+syn keyword xsFunction do_pmop_dump do_spawn do_spawn_nowait do_sprintf
+syn keyword xsFunction do_sv_dump doing_taint doref dounwind dowantarray
+syn keyword xsFunction dump_all dump_c_backtrace dump_eval dump_form
+syn keyword xsFunction dump_indent dump_mstats dump_packsubs dump_sub
+syn keyword xsFunction dump_vindent eval_pv eval_sv fbm_compile fbm_instr
+syn keyword xsFunction filter_add filter_del filter_read find_runcv
+syn keyword xsFunction find_rundefsv foldEQ foldEQ_latin1 foldEQ_locale
+syn keyword xsFunction foldEQ_utf8_flags form form_nocontext fp_dup
+syn keyword xsFunction fprintf_nocontext free_global_struct free_tmps get_av
+syn keyword xsFunction get_c_backtrace_dump get_context get_cv get_cvn_flags
+syn keyword xsFunction get_hv get_mstats get_op_descs get_op_names get_ppaddr
+syn keyword xsFunction get_sv get_vtbl getcwd_sv gp_dup gp_free gp_ref
+syn keyword xsFunction grok_bin grok_hex grok_infnan grok_number
+syn keyword xsFunction grok_number_flags grok_numeric_radix grok_oct
+syn keyword xsFunction gv_add_by_type gv_autoload_pv gv_autoload_pvn
+syn keyword xsFunction gv_autoload_sv gv_check gv_const_sv gv_dump
+syn keyword xsFunction gv_efullname gv_efullname4 gv_fetchfile
+syn keyword xsFunction gv_fetchfile_flags gv_fetchmeth_pv
+syn keyword xsFunction gv_fetchmeth_pv_autoload gv_fetchmeth_pvn
+syn keyword xsFunction gv_fetchmeth_pvn_autoload gv_fetchmeth_sv
+syn keyword xsFunction gv_fetchmeth_sv_autoload gv_fetchmethod_autoload
+syn keyword xsFunction gv_fetchmethod_pv_flags gv_fetchmethod_pvn_flags
+syn keyword xsFunction gv_fetchmethod_sv_flags gv_fetchpv gv_fetchpvn_flags
+syn keyword xsFunction gv_fetchsv gv_fullname gv_fullname4 gv_handler
+syn keyword xsFunction gv_init_pv gv_init_pvn gv_init_sv gv_name_set
+syn keyword xsFunction gv_stashpv gv_stashpvn gv_stashsv he_dup hek_dup
+syn keyword xsFunction hv_clear hv_clear_placeholders hv_common
+syn keyword xsFunction hv_common_key_len hv_copy_hints_hv hv_delayfree_ent
+syn keyword xsFunction hv_free_ent hv_iterinit hv_iterkey hv_iterkeysv
+syn keyword xsFunction hv_iternext_flags hv_iternextsv hv_iterval hv_ksplit
+syn keyword xsFunction hv_name_set hv_rand_set hv_scalar init_global_struct
+syn keyword xsFunction init_i18nl10n init_i18nl14n init_stacks init_tm instr
+syn keyword xsFunction intro_my is_invariant_string is_lvalue_sub
+syn keyword xsFunction is_safe_syscall is_utf8_string is_utf8_string_loclen
+syn keyword xsFunction isinfnan leave_scope lex_bufutf8 lex_discard_to
+syn keyword xsFunction lex_grow_linestr lex_next_chunk lex_peek_unichar
+syn keyword xsFunction lex_read_space lex_read_to lex_read_unichar lex_start
+syn keyword xsFunction lex_stuff_pv lex_stuff_pvn lex_stuff_sv lex_unstuff
+syn keyword xsFunction load_module load_module_nocontext looks_like_number
+syn keyword xsFunction magic_dump markstack_grow mess mess_nocontext mess_sv
+syn keyword xsFunction mg_clear mg_copy mg_dup mg_find mg_findext mg_free
+syn keyword xsFunction mg_free_type mg_get mg_magical mg_set mg_size
+syn keyword xsFunction mini_mktime moreswitches mro_get_linear_isa
+syn keyword xsFunction mro_method_changed_in my_atof my_atof2 my_bcopy
+syn keyword xsFunction my_bzero my_chsize my_dirfd my_exit my_failure_exit
+syn keyword xsFunction my_fflush_all my_fork my_memcmp my_memset my_pclose
+syn keyword xsFunction my_popen my_popen_list my_setenv my_setlocale
+syn keyword xsFunction my_socketpair my_strerror my_strftime newANONATTRSUB
+syn keyword xsFunction newANONHASH newANONLIST newANONSUB newASSIGNOP
+syn keyword xsFunction newAVREF newBINOP newCONDOP newCONSTSUB
+syn keyword xsFunction newCONSTSUB_flags newCVREF newDEFSVOP newFORM newFOROP
+syn keyword xsFunction newGIVENOP newGVOP newGVREF newGVgen_flags newHVREF
+syn keyword xsFunction newHVhv newLISTOP newLOGOP newLOOPEX newLOOPOP
+syn keyword xsFunction newMETHOP newMETHOP_named newMYSUB newNULLLIST newOP
+syn keyword xsFunction newPADNAMELIST newPADNAMEouter newPADNAMEpvn newPADOP
+syn keyword xsFunction newPMOP newPROG newPVOP newRANGE newRV newRV_noinc
+syn keyword xsFunction newSLICEOP newSTATEOP newSV newSVOP newSVREF
+syn keyword xsFunction newSV_type newSVhek newSViv newSVnv newSVpv
+syn keyword xsFunction newSVpv_share newSVpvf newSVpvf_nocontext newSVpvn
+syn keyword xsFunction newSVpvn_flags newSVpvn_share newSVrv newSVsv newSVuv
+syn keyword xsFunction newUNOP newUNOP_AUX newWHENOP newWHILEOP newXS
+syn keyword xsFunction newXS_flags new_collate new_ctype new_numeric
+syn keyword xsFunction new_stackinfo new_version ninstr nothreadhook
+syn keyword xsFunction op_append_elem op_append_list op_contextualize
+syn keyword xsFunction op_convert_list op_dump op_free op_linklist op_null
+syn keyword xsFunction op_parent op_prepend_elem op_refcnt_lock
+syn keyword xsFunction op_refcnt_unlock op_scope op_sibling_splice pack_cat
+syn keyword xsFunction packlist pad_add_anon pad_add_name_pv pad_add_name_pvn
+syn keyword xsFunction pad_add_name_sv pad_alloc pad_compname_type
+syn keyword xsFunction pad_findmy_pv pad_findmy_pvn pad_findmy_sv pad_new
+syn keyword xsFunction pad_setsv pad_sv pad_tidy padnamelist_fetch
+syn keyword xsFunction padnamelist_store parse_arithexpr parse_barestmt
+syn keyword xsFunction parse_block parse_fullexpr parse_fullstmt parse_label
+syn keyword xsFunction parse_listexpr parse_stmtseq parse_termexpr parser_dup
+syn keyword xsFunction pmop_dump pop_scope pregcomp pregexec pregfree
+syn keyword xsFunction pregfree2 prescan_version printf_nocontext
+syn keyword xsFunction ptr_table_fetch ptr_table_free ptr_table_new
+syn keyword xsFunction ptr_table_split ptr_table_store push_scope pv_display
+syn keyword xsFunction pv_escape pv_pretty pv_uni_display
+syn keyword xsFunction quadmath_format_needed quadmath_format_single
+syn keyword xsFunction re_compile re_dup_guts re_intuit_start
+syn keyword xsFunction re_intuit_string reentrant_free reentrant_init
+syn keyword xsFunction reentrant_retry reentrant_size reg_named_buff_all
+syn keyword xsFunction reg_named_buff_exists reg_named_buff_fetch
+syn keyword xsFunction reg_named_buff_firstkey reg_named_buff_nextkey
+syn keyword xsFunction reg_named_buff_scalar regclass_swash regdump
+syn keyword xsFunction regdupe_internal regexec_flags regfree_internal
+syn keyword xsFunction reginitcolors regnext repeatcpy require_pv rninstr
+syn keyword xsFunction rsignal rsignal_state runops_debug runops_standard
+syn keyword xsFunction rv2cv_op_cv rvpv_dup safesyscalloc safesysfree
+syn keyword xsFunction safesysmalloc safesysrealloc save_I16 save_I32 save_I8
+syn keyword xsFunction save_adelete save_aelem_flags save_alloc save_aptr
+syn keyword xsFunction save_ary save_bool save_clearsv save_delete
+syn keyword xsFunction save_destructor save_destructor_x save_generic_pvref
+syn keyword xsFunction save_generic_svref save_gp save_hash save_hdelete
+syn keyword xsFunction save_helem_flags save_hints save_hptr save_int
+syn keyword xsFunction save_item save_iv save_list save_long save_nogv
+syn keyword xsFunction save_padsv_and_mortalize save_pptr save_pushi32ptr
+syn keyword xsFunction save_pushptr save_pushptrptr save_re_context
+syn keyword xsFunction save_scalar save_set_svflags save_shared_pvref
+syn keyword xsFunction save_sptr save_svref save_vptr savepv savepvn
+syn keyword xsFunction savesharedpv savesharedpvn savesharedsvpv
+syn keyword xsFunction savestack_grow savestack_grow_cnt savesvpv scan_bin
+syn keyword xsFunction scan_hex scan_num scan_oct scan_version scan_vstring
+syn keyword xsFunction seed set_context set_numeric_local set_numeric_radix
+syn keyword xsFunction set_numeric_standard setdefout share_hek si_dup sortsv
+syn keyword xsFunction sortsv_flags ss_dup stack_grow start_subparse
+syn keyword xsFunction str_to_version sv_2bool_flags sv_2cv sv_2io
+syn keyword xsFunction sv_2iv_flags sv_2mortal sv_2nv_flags sv_2pv_flags
+syn keyword xsFunction sv_2pvbyte sv_2pvutf8 sv_2uv_flags sv_backoff sv_bless
+syn keyword xsFunction sv_cat_decode sv_catpv sv_catpv_flags sv_catpv_mg
+syn keyword xsFunction sv_catpvf sv_catpvf_mg sv_catpvf_mg_nocontext
+syn keyword xsFunction sv_catpvf_nocontext sv_catpvn_flags sv_catsv_flags
+syn keyword xsFunction sv_chop sv_clear sv_cmp_flags sv_cmp_locale_flags
+syn keyword xsFunction sv_collxfrm_flags sv_copypv_flags sv_dec sv_dec_nomg
+syn keyword xsFunction sv_derived_from sv_derived_from_pv sv_derived_from_pvn
+syn keyword xsFunction sv_derived_from_sv sv_destroyable sv_does sv_does_pv
+syn keyword xsFunction sv_does_pvn sv_does_sv sv_dump sv_dup sv_dup_inc
+syn keyword xsFunction sv_eq_flags sv_force_normal_flags sv_free
+syn keyword xsFunction sv_get_backrefs sv_gets sv_grow sv_inc sv_inc_nomg
+syn keyword xsFunction sv_insert_flags sv_isa sv_isobject sv_iv sv_len
+syn keyword xsFunction sv_len_utf8 sv_magic sv_magicext sv_newmortal
+syn keyword xsFunction sv_newref sv_nosharing sv_nounlocking sv_nv sv_peek
+syn keyword xsFunction sv_pos_b2u sv_pos_b2u_flags sv_pos_u2b
+syn keyword xsFunction sv_pos_u2b_flags sv_pvbyten sv_pvbyten_force sv_pvn
+syn keyword xsFunction sv_pvn_force_flags sv_pvn_nomg sv_pvutf8n
+syn keyword xsFunction sv_pvutf8n_force sv_recode_to_utf8 sv_reftype
+syn keyword xsFunction sv_replace sv_report_used sv_reset sv_rvweaken
+syn keyword xsFunction sv_setiv sv_setiv_mg sv_setnv sv_setnv_mg sv_setpv
+syn keyword xsFunction sv_setpv_mg sv_setpvf sv_setpvf_mg
+syn keyword xsFunction sv_setpvf_mg_nocontext sv_setpvf_nocontext sv_setpviv
+syn keyword xsFunction sv_setpviv_mg sv_setpvn sv_setpvn_mg sv_setref_iv
+syn keyword xsFunction sv_setref_nv sv_setref_pv sv_setref_pvn sv_setref_uv
+syn keyword xsFunction sv_setsv_flags sv_setsv_mg sv_setuv sv_setuv_mg
+syn keyword xsFunction sv_tainted sv_true sv_uni_display sv_unmagic
+syn keyword xsFunction sv_unmagicext sv_unref_flags sv_untaint sv_upgrade
+syn keyword xsFunction sv_usepvn_flags sv_utf8_decode sv_utf8_downgrade
+syn keyword xsFunction sv_utf8_encode sv_utf8_upgrade_flags_grow sv_uv
+syn keyword xsFunction sv_vcatpvf sv_vcatpvf_mg sv_vcatpvfn sv_vcatpvfn_flags
+syn keyword xsFunction sv_vsetpvf sv_vsetpvf_mg sv_vsetpvfn swash_fetch
+syn keyword xsFunction swash_init sync_locale sys_intern_clear sys_intern_dup
+syn keyword xsFunction sys_intern_init taint_env taint_proper to_uni_lower
+syn keyword xsFunction to_uni_title to_uni_upper to_utf8_case unlnk
+syn keyword xsFunction unpack_str unpackstring unsharepvn upg_version
+syn keyword xsFunction utf16_to_utf8 utf16_to_utf8_reversed utf8_distance
+syn keyword xsFunction utf8_hop utf8_length utf8_to_bytes utf8n_to_uvchr
+syn keyword xsFunction utf8n_to_uvuni uvoffuni_to_utf8_flags uvuni_to_utf8
+syn keyword xsFunction uvuni_to_utf8_flags valid_utf8_to_uvchr vcmp vcroak
+syn keyword xsFunction vdeb vform vload_module vmess vnewSVpvf vnormal
+syn keyword xsFunction vnumify vstringify vverify vwarn vwarner warn
+syn keyword xsFunction warn_nocontext warn_sv warner warner_nocontext
+syn keyword xsFunction whichsig_pv whichsig_pvn whichsig_sv wrap_op_checker
+syn keyword xsVariable MARK MY_CXT ORIGMARK PL_I PL_No PL_Vars PL_VarsPtr
+syn keyword xsVariable PL_Yes PL_a2e PL_bincompat_options PL_bitcount
+syn keyword xsVariable PL_block_type PL_bufend PL_bufptr PL_charclass
+syn keyword xsVariable PL_check PL_copline PL_core_reg_engine PL_cshname
+syn keyword xsVariable PL_e2a PL_e2utf PL_error_count PL_expect PL_fold
+syn keyword xsVariable PL_fold_latin1 PL_fold_locale PL_force_link_funcs
+syn keyword xsVariable PL_freq PL_global_struct_size PL_hexdigit PL_in_my
+syn keyword xsVariable PL_in_my_stash PL_interp_size PL_interp_size_5_18_0
+syn keyword xsVariable PL_last_lop PL_last_lop_op PL_last_uni PL_latin1_lc
+syn keyword xsVariable PL_lex_allbrackets PL_lex_brackets PL_lex_brackstack
+syn keyword xsVariable PL_lex_casemods PL_lex_casestack PL_lex_defer
+syn keyword xsVariable PL_lex_dojoin PL_lex_fakeeof PL_lex_formbrack
+syn keyword xsVariable PL_lex_inpat PL_lex_inwhat PL_lex_op PL_lex_repl
+syn keyword xsVariable PL_lex_starts PL_lex_state PL_lex_stuff PL_linestart
+syn keyword xsVariable PL_linestr PL_magic_data PL_magic_vtable_names
+syn keyword xsVariable PL_memory_wrap PL_mod_latin1_uc PL_multi_close
+syn keyword xsVariable PL_multi_end PL_multi_open PL_multi_start PL_nexttoke
+syn keyword xsVariable PL_nexttype PL_nextval PL_no_aelem PL_no_dir_func
+syn keyword xsVariable PL_no_func PL_no_helem_sv PL_no_localize_ref PL_no_mem
+syn keyword xsVariable PL_no_modify PL_no_myglob PL_no_security
+syn keyword xsVariable PL_no_sock_func PL_no_symref PL_no_symref_sv
+syn keyword xsVariable PL_no_usym PL_no_wrongref PL_oldbufptr PL_oldoldbufptr
+syn keyword xsVariable PL_op_desc PL_op_name PL_op_private_bitdef_ix
+syn keyword xsVariable PL_op_private_bitdefs PL_op_private_bitfields
+syn keyword xsVariable PL_op_private_labels PL_op_private_valid PL_opargs
+syn keyword xsVariable PL_phase_names PL_ppaddr PL_preambled
+syn keyword xsVariable PL_reg_extflags_name PL_reg_intflags_name PL_reg_name
+syn keyword xsVariable PL_regkind PL_revision PL_rsfp PL_rsfp_filters
+syn keyword xsVariable PL_runops_dbg PL_runops_std PL_sh_path PL_sig_name
+syn keyword xsVariable PL_sig_num PL_simple PL_simple_bitmask PL_sublex_info
+syn keyword xsVariable PL_subversion PL_tokenbuf PL_utf2e PL_utf8skip
+syn keyword xsVariable PL_uudmap PL_uuemap PL_valid_types_IVX
+syn keyword xsVariable PL_valid_types_IV_set PL_valid_types_NVX
+syn keyword xsVariable PL_valid_types_NV_set PL_valid_types_PVX
+syn keyword xsVariable PL_valid_types_RV PL_varies PL_varies_bitmask
+syn keyword xsVariable PL_version PL_warn_nl PL_warn_nosemi PL_warn_reserved
+syn keyword xsVariable PL_warn_uninit PL_warn_uninit_sv RETVAL SP TARG
+syn keyword xsVariable _aMY_CXT _aTHX aMY_CXT aMY_CXT_ aTHX aTHX_ items
+syn keyword xsMacro ABORT ACCEPT ADDOP AHOCORASICK AHOCORASICKC
+syn keyword xsMacro ALLOC_THREAD_KEY AMG_CALLun AMG_CALLunary AMGf_assign
+syn keyword xsMacro AMGf_noleft AMGf_noright AMGf_numarg AMGf_numeric
+syn keyword xsMacro AMGf_set AMGf_unary AMGf_want_list AMGfallNEVER AMGfallNO
+syn keyword xsMacro AMGfallYES AMT_AMAGIC AMT_AMAGIC_off AMT_AMAGIC_on
+syn keyword xsMacro AMTf_AMAGIC ANDAND ANDOP ANGSTROM_SIGN ANONSUB ANYOF
+syn keyword xsMacro ANYOFL ANYOF_ALNUM ANYOF_ALNUML ANYOF_ALPHA
+syn keyword xsMacro ANYOF_ALPHANUMERIC ANYOF_ASCII ANYOF_BIT ANYOF_BITMAP
+syn keyword xsMacro ANYOF_BITMAP_BYTE ANYOF_BITMAP_CLEAR
+syn keyword xsMacro ANYOF_BITMAP_CLEARALL ANYOF_BITMAP_SET
+syn keyword xsMacro ANYOF_BITMAP_SETALL ANYOF_BITMAP_SIZE ANYOF_BITMAP_TEST
+syn keyword xsMacro ANYOF_BITMAP_ZERO ANYOF_BLANK ANYOF_CASED
+syn keyword xsMacro ANYOF_CLASS_CLEAR ANYOF_CLASS_OR ANYOF_CLASS_SET
+syn keyword xsMacro ANYOF_CLASS_SETALL ANYOF_CLASS_TEST
+syn keyword xsMacro ANYOF_CLASS_TEST_ANY_SET ANYOF_CLASS_ZERO ANYOF_CNTRL
+syn keyword xsMacro ANYOF_COMMON_FLAGS ANYOF_DIGIT ANYOF_FLAGS
+syn keyword xsMacro ANYOF_FLAGS_ALL ANYOF_FOLD_SHARP_S ANYOF_GRAPH
+syn keyword xsMacro ANYOF_HAS_NONBITMAP_NON_UTF8_MATCHES
+syn keyword xsMacro ANYOF_HAS_UTF8_NONBITMAP_MATCHES ANYOF_HORIZWS
+syn keyword xsMacro ANYOF_INVERT ANYOF_LOCALE_FLAGS ANYOF_LOC_FOLD
+syn keyword xsMacro ANYOF_LOWER ANYOF_MATCHES_ALL_ABOVE_BITMAP
+syn keyword xsMacro ANYOF_MATCHES_ALL_NON_UTF8_NON_ASCII ANYOF_MATCHES_POSIXL
+syn keyword xsMacro ANYOF_MAX ANYOF_NALNUM ANYOF_NALNUML ANYOF_NALPHA
+syn keyword xsMacro ANYOF_NALPHANUMERIC ANYOF_NASCII ANYOF_NBLANK
+syn keyword xsMacro ANYOF_NCASED ANYOF_NCNTRL ANYOF_NDIGIT ANYOF_NGRAPH
+syn keyword xsMacro ANYOF_NHORIZWS ANYOF_NLOWER ANYOF_NPRINT ANYOF_NPUNCT
+syn keyword xsMacro ANYOF_NSPACE ANYOF_NSPACEL ANYOF_NUPPER ANYOF_NVERTWS
+syn keyword xsMacro ANYOF_NWORDCHAR ANYOF_NXDIGIT ANYOF_ONLY_HAS_BITMAP
+syn keyword xsMacro ANYOF_POSIXL_AND ANYOF_POSIXL_CLEAR ANYOF_POSIXL_MAX
+syn keyword xsMacro ANYOF_POSIXL_OR ANYOF_POSIXL_SET ANYOF_POSIXL_SETALL
+syn keyword xsMacro ANYOF_POSIXL_SKIP ANYOF_POSIXL_SSC_TEST_ALL_SET
+syn keyword xsMacro ANYOF_POSIXL_SSC_TEST_ANY_SET ANYOF_POSIXL_TEST
+syn keyword xsMacro ANYOF_POSIXL_TEST_ALL_SET ANYOF_POSIXL_TEST_ANY_SET
+syn keyword xsMacro ANYOF_POSIXL_ZERO ANYOF_PRINT ANYOF_PUNCT ANYOF_SKIP
+syn keyword xsMacro ANYOF_SPACE ANYOF_SPACEL ANYOF_UNIPROP ANYOF_UPPER
+syn keyword xsMacro ANYOF_VERTWS ANYOF_WARN_SUPER ANYOF_WORDCHAR ANYOF_XDIGIT
+syn keyword xsMacro ARCHLIB ARCHLIB_EXP ARCHNAME ARG ARG1 ARG1_LOC ARG1_SET
+syn keyword xsMacro ARG2 ARG2L ARG2L_LOC ARG2L_SET ARG2_LOC ARG2_SET ARGTARG
+syn keyword xsMacro ARG_LOC ARG_SET ARG_VALUE ARG__SET ARROW
+syn keyword xsMacro ASCII_MORE_RESTRICT_PAT_MODS ASCII_RESTRICT_PAT_MOD
+syn keyword xsMacro ASCII_RESTRICT_PAT_MODS ASCII_TO_NATIVE ASCTIME_R_PROTO
+syn keyword xsMacro ASSERT_CURPAD_ACTIVE ASSERT_CURPAD_LEGAL ASSIGNOP ASSUME
+syn keyword xsMacro Atof Atol Atoul AvALLOC AvARRAY AvARYLEN AvFILL AvFILLp
+syn keyword xsMacro AvMAX AvREAL AvREALISH AvREAL_off AvREAL_on AvREAL_only
+syn keyword xsMacro AvREIFY AvREIFY_off AvREIFY_on AvREIFY_only BADVERSION
+syn keyword xsMacro BASEOP BHKf_bhk_eval BHKf_bhk_post_end BHKf_bhk_pre_end
+syn keyword xsMacro BHKf_bhk_start BIN BIN_EXP BITANDOP BITMAP_BYTE
+syn keyword xsMacro BITMAP_TEST BITOROP BIT_BUCKET BIT_DIGITS BOL
+syn keyword xsMacro BOM_UTF8_FIRST_BYTE BOM_UTF8_TAIL BOUND BOUNDA BOUNDL
+syn keyword xsMacro BOUNDU BRANCH BRANCHJ BRANCH_next BRANCH_next_fail
+syn keyword xsMacro BSD_GETPGRP BSD_SETPGRP BSDish BUFSIZ BYTEORDER
+syn keyword xsMacro BhkDISABLE BhkENABLE BhkENTRY BhkENTRY_set BhkFLAGS Bit
+syn keyword xsMacro BmFLAGS BmPREVIOUS BmRARE BmUSEFUL CALLREGCOMP
+syn keyword xsMacro CALLREGCOMP_ENG CALLREGDUPE CALLREGDUPE_PVT CALLREGEXEC
+syn keyword xsMacro CALLREGFREE CALLREGFREE_PVT CALLREG_INTUIT_START
+syn keyword xsMacro CALLREG_INTUIT_STRING CALLREG_NAMED_BUFF_ALL
+syn keyword xsMacro CALLREG_NAMED_BUFF_CLEAR CALLREG_NAMED_BUFF_COUNT
+syn keyword xsMacro CALLREG_NAMED_BUFF_DELETE CALLREG_NAMED_BUFF_EXISTS
+syn keyword xsMacro CALLREG_NAMED_BUFF_FETCH CALLREG_NAMED_BUFF_FIRSTKEY
+syn keyword xsMacro CALLREG_NAMED_BUFF_NEXTKEY CALLREG_NAMED_BUFF_SCALAR
+syn keyword xsMacro CALLREG_NAMED_BUFF_STORE CALLREG_NUMBUF_FETCH
+syn keyword xsMacro CALLREG_NUMBUF_LENGTH CALLREG_NUMBUF_STORE
+syn keyword xsMacro CALLREG_PACKAGE CALLRUNOPS CALL_BLOCK_HOOKS
+syn keyword xsMacro CALL_CHECKER_REQUIRE_GV CALL_FPTR CANY CAN_COW_FLAGS
+syn keyword xsMacro CAN_COW_MASK CAN_PROTOTYPE CAN_VAPROTO
+syn keyword xsMacro CASE_STD_PMMOD_FLAGS_PARSE_SET CASTFLAGS CASTNEGFLOAT
+syn keyword xsMacro CAT2 CATCH_GET CATCH_SET CHANGE_MULTICALL_FLAGS CHARBITS
+syn keyword xsMacro CHARSET_PAT_MODS CHECK_MALLOC_TAINT
+syn keyword xsMacro CHECK_MALLOC_TOO_LATE_FOR CHECK_MALLOC_TOO_LATE_FOR_
+syn keyword xsMacro CLEAR_ARGARRAY CLEAR_ERRSV CLONEf_CLONE_HOST
+syn keyword xsMacro CLONEf_COPY_STACKS CLONEf_JOIN_IN CLONEf_KEEP_PTR_TABLE
+syn keyword xsMacro CLOSE CLUMP CLUMP_2IV CLUMP_2UV COLONATTR
+syn keyword xsMacro COMBINING_GRAVE_ACCENT_UTF8 COMMIT COMMIT_next
+syn keyword xsMacro COMMIT_next_fail COND_BROADCAST COND_DESTROY COND_INIT
+syn keyword xsMacro COND_SIGNAL COND_WAIT CONTINUE CONTINUE_PAT_MOD
+syn keyword xsMacro COPHH_KEY_UTF8 COP_SEQMAX_INC COP_SEQ_RANGE_HIGH
+syn keyword xsMacro COP_SEQ_RANGE_LOW CPERLarg CPERLarg_ CPERLscope CPPLAST
+syn keyword xsMacro CPPMINUS CPPRUN CPPSTDIN CRYPT_R_PROTO CR_NATIVE CSH
+syn keyword xsMacro CTERMID_R_PROTO CTIME_R_PROTO CTYPE256 CURLY CURLYM
+syn keyword xsMacro CURLYM_A CURLYM_A_fail CURLYM_B CURLYM_B_fail CURLYN
+syn keyword xsMacro CURLYX CURLYX_end CURLYX_end_fail CURLY_B_max
+syn keyword xsMacro CURLY_B_max_fail CURLY_B_min CURLY_B_min_fail
+syn keyword xsMacro CURLY_B_min_known CURLY_B_min_known_fail
+syn keyword xsMacro CURRENT_FEATURE_BUNDLE CURRENT_HINTS CUTGROUP
+syn keyword xsMacro CUTGROUP_next CUTGROUP_next_fail CV_NAME_NOTQUAL
+syn keyword xsMacro CV_UNDEF_KEEP_NAME CVf_ANON CVf_ANONCONST CVf_AUTOLOAD
+syn keyword xsMacro CVf_BUILTIN_ATTRS CVf_CLONE CVf_CLONED CVf_CONST
+syn keyword xsMacro CVf_CVGV_RC CVf_DYNFILE CVf_HASEVAL CVf_ISXSUB
+syn keyword xsMacro CVf_LEXICAL CVf_LVALUE CVf_METHOD CVf_NAMED CVf_NODEBUG
+syn keyword xsMacro CVf_SLABBED CVf_UNIQUE CVf_WEAKOUTSIDE CXINC CXTYPEMASK
+syn keyword xsMacro CX_CURPAD_SAVE CX_CURPAD_SV CXp_FOR_DEF CXp_FOR_LVREF
+syn keyword xsMacro CXp_HASARGS CXp_MULTICALL CXp_ONCE CXp_REAL CXp_SUB_RE
+syn keyword xsMacro CXp_SUB_RE_FAKE CXp_TRYBLOCK C_ARRAY_END C_ARRAY_LENGTH
+syn keyword xsMacro C_FAC_POSIX CopFILE CopFILEAV CopFILEAVx CopFILEGV
+syn keyword xsMacro CopFILEGV_set CopFILESV CopFILE_free CopFILE_set
+syn keyword xsMacro CopFILE_setn CopHINTHASH_get CopHINTHASH_set CopHINTS_get
+syn keyword xsMacro CopHINTS_set CopLABEL CopLABEL_alloc CopLABEL_len
+syn keyword xsMacro CopLABEL_len_flags CopLINE CopLINE_dec CopLINE_inc
+syn keyword xsMacro CopLINE_set CopSTASH CopSTASHPV CopSTASHPV_set
+syn keyword xsMacro CopSTASH_eq CopSTASH_ne CopSTASH_set Copy CopyD CowREFCNT
+syn keyword xsMacro Ctl CvANON CvANONCONST CvANONCONST_off CvANONCONST_on
+syn keyword xsMacro CvANON_off CvANON_on CvAUTOLOAD CvAUTOLOAD_off
+syn keyword xsMacro CvAUTOLOAD_on CvCLONE CvCLONED CvCLONED_off CvCLONED_on
+syn keyword xsMacro CvCLONE_off CvCLONE_on CvCONST CvCONST_off CvCONST_on
+syn keyword xsMacro CvCVGV_RC CvCVGV_RC_off CvCVGV_RC_on CvDEPTH
+syn keyword xsMacro CvDEPTHunsafe CvDYNFILE CvDYNFILE_off CvDYNFILE_on CvEVAL
+syn keyword xsMacro CvEVAL_off CvEVAL_on CvFILE CvFILEGV CvFILE_set_from_cop
+syn keyword xsMacro CvFLAGS CvGV CvGV_set CvHASEVAL CvHASEVAL_off
+syn keyword xsMacro CvHASEVAL_on CvHASGV CvHSCXT CvISXSUB CvISXSUB_off
+syn keyword xsMacro CvISXSUB_on CvLEXICAL CvLEXICAL_off CvLEXICAL_on CvLVALUE
+syn keyword xsMacro CvLVALUE_off CvLVALUE_on CvMETHOD CvMETHOD_off
+syn keyword xsMacro CvMETHOD_on CvNAMED CvNAMED_off CvNAMED_on CvNAME_HEK_set
+syn keyword xsMacro CvNODEBUG CvNODEBUG_off CvNODEBUG_on CvOUTSIDE
+syn keyword xsMacro CvOUTSIDE_SEQ CvPADLIST CvPADLIST_set CvPROTO CvPROTOLEN
+syn keyword xsMacro CvROOT CvSLABBED CvSLABBED_off CvSLABBED_on CvSPECIAL
+syn keyword xsMacro CvSPECIAL_off CvSPECIAL_on CvSTART CvSTASH CvSTASH_set
+syn keyword xsMacro CvUNIQUE CvUNIQUE_off CvUNIQUE_on CvWEAKOUTSIDE
+syn keyword xsMacro CvWEAKOUTSIDE_off CvWEAKOUTSIDE_on CvXSUB CvXSUBANY
+syn keyword xsMacro CxFOREACH CxFOREACHDEF CxHASARGS CxITERVAR
+syn keyword xsMacro CxITERVAR_PADSV CxLABEL CxLABEL_len CxLABEL_len_flags
+syn keyword xsMacro CxLVAL CxMULTICALL CxOLD_IN_EVAL CxOLD_OP_TYPE CxONCE
+syn keyword xsMacro CxPADLOOP CxPOPSUB_DONE CxREALEVAL CxTRYBLOCK CxTYPE
+syn keyword xsMacro CxTYPE_is_LOOP DBL_DIG DBL_MAX DBL_MIN DBM_ckFilter
+syn keyword xsMacro DBM_setFilter DBVARMG_COUNT DBVARMG_SIGNAL DBVARMG_SINGLE
+syn keyword xsMacro DBVARMG_TRACE DB_VERSION_MAJOR_CFG DB_VERSION_MINOR_CFG
+syn keyword xsMacro DB_VERSION_PATCH_CFG DEBUG_A DEBUG_A_FLAG DEBUG_A_TEST
+syn keyword xsMacro DEBUG_A_TEST_ DEBUG_B DEBUG_BUFFERS_r DEBUG_B_FLAG
+syn keyword xsMacro DEBUG_B_TEST DEBUG_B_TEST_ DEBUG_C DEBUG_COMPILE_r
+syn keyword xsMacro DEBUG_CX DEBUG_C_FLAG DEBUG_C_TEST DEBUG_C_TEST_ DEBUG_D
+syn keyword xsMacro DEBUG_DB_RECURSE_FLAG DEBUG_DUMP_r DEBUG_D_FLAG
+syn keyword xsMacro DEBUG_D_TEST DEBUG_D_TEST_ DEBUG_EXECUTE_r DEBUG_EXTRA_r
+syn keyword xsMacro DEBUG_FLAGS_r DEBUG_GPOS_r DEBUG_H DEBUG_H_FLAG
+syn keyword xsMacro DEBUG_H_TEST DEBUG_H_TEST_ DEBUG_INTUIT_r DEBUG_J_FLAG
+syn keyword xsMacro DEBUG_J_TEST DEBUG_J_TEST_ DEBUG_L DEBUG_L_FLAG
+syn keyword xsMacro DEBUG_L_TEST DEBUG_L_TEST_ DEBUG_M DEBUG_MASK
+syn keyword xsMacro DEBUG_MATCH_r DEBUG_M_FLAG DEBUG_M_TEST DEBUG_M_TEST_
+syn keyword xsMacro DEBUG_OFFSETS_r DEBUG_OPTIMISE_MORE_r DEBUG_OPTIMISE_r
+syn keyword xsMacro DEBUG_P DEBUG_PARSE_r DEBUG_P_FLAG DEBUG_P_TEST
+syn keyword xsMacro DEBUG_P_TEST_ DEBUG_Pv DEBUG_Pv_TEST DEBUG_Pv_TEST_
+syn keyword xsMacro DEBUG_R DEBUG_R_FLAG DEBUG_R_TEST DEBUG_R_TEST_ DEBUG_S
+syn keyword xsMacro DEBUG_SCOPE DEBUG_STACK_r DEBUG_STATE_r DEBUG_S_FLAG
+syn keyword xsMacro DEBUG_S_TEST DEBUG_S_TEST_ DEBUG_T DEBUG_TEST_r
+syn keyword xsMacro DEBUG_TOP_FLAG DEBUG_TRIE_COMPILE_MORE_r
+syn keyword xsMacro DEBUG_TRIE_COMPILE_r DEBUG_TRIE_EXECUTE_MORE_r
+syn keyword xsMacro DEBUG_TRIE_EXECUTE_r DEBUG_TRIE_r DEBUG_T_FLAG
+syn keyword xsMacro DEBUG_T_TEST DEBUG_T_TEST_ DEBUG_U DEBUG_U_FLAG
+syn keyword xsMacro DEBUG_U_TEST DEBUG_U_TEST_ DEBUG_Uv DEBUG_Uv_TEST
+syn keyword xsMacro DEBUG_Uv_TEST_ DEBUG_X DEBUG_X_FLAG DEBUG_X_TEST
+syn keyword xsMacro DEBUG_X_TEST_ DEBUG_Xv DEBUG_Xv_TEST DEBUG_Xv_TEST_
+syn keyword xsMacro DEBUG__ DEBUG_c DEBUG_c_FLAG DEBUG_c_TEST DEBUG_c_TEST_
+syn keyword xsMacro DEBUG_f DEBUG_f_FLAG DEBUG_f_TEST DEBUG_f_TEST_ DEBUG_l
+syn keyword xsMacro DEBUG_l_FLAG DEBUG_l_TEST DEBUG_l_TEST_ DEBUG_m
+syn keyword xsMacro DEBUG_m_FLAG DEBUG_m_TEST DEBUG_m_TEST_ DEBUG_o
+syn keyword xsMacro DEBUG_o_FLAG DEBUG_o_TEST DEBUG_o_TEST_ DEBUG_p
+syn keyword xsMacro DEBUG_p_FLAG DEBUG_p_TEST DEBUG_p_TEST_ DEBUG_q
+syn keyword xsMacro DEBUG_q_FLAG DEBUG_q_TEST DEBUG_q_TEST_ DEBUG_r
+syn keyword xsMacro DEBUG_r_FLAG DEBUG_r_TEST DEBUG_r_TEST_ DEBUG_s
+syn keyword xsMacro DEBUG_s_FLAG DEBUG_s_TEST DEBUG_s_TEST_ DEBUG_t_FLAG
+syn keyword xsMacro DEBUG_t_TEST DEBUG_t_TEST_ DEBUG_u DEBUG_u_FLAG
+syn keyword xsMacro DEBUG_u_TEST DEBUG_u_TEST_ DEBUG_v DEBUG_v_FLAG
+syn keyword xsMacro DEBUG_v_TEST DEBUG_v_TEST_ DEBUG_x DEBUG_x_FLAG
+syn keyword xsMacro DEBUG_x_TEST DEBUG_x_TEST_
+syn keyword xsMacro DECLARATION_FOR_LC_NUMERIC_MANIPULATION
+syn keyword xsMacro DECLARATION_FOR_STORE_LC_NUMERIC_SET_TO_NEEDED
+syn keyword xsMacro DECLARE_STORE_LC_NUMERIC_SET_TO_NEEDED DEFAULT
+syn keyword xsMacro DEFAULT_PAT_MOD DEFINEP DEFSV DEFSV_set DEL_NATIVE
+syn keyword xsMacro DEPENDS_PAT_MOD DEPENDS_PAT_MODS DETACH DIE DM_ARRAY_ISA
+syn keyword xsMacro DM_DELAY DM_EGID DM_EUID DM_GID DM_RGID DM_RUID DM_UID DO
+syn keyword xsMacro DOINIT DOLSHARP DONT_DECLARE_STD DORDOR DOROP DOSISH
+syn keyword xsMacro DOTDOT DOUBLEKIND DOUBLESIZE DOUBLE_BIG_ENDIAN
+syn keyword xsMacro DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN
+syn keyword xsMacro DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN
+syn keyword xsMacro DOUBLE_IS_IEEE_754_32_BIT_BIG_ENDIAN
+syn keyword xsMacro DOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIAN
+syn keyword xsMacro DOUBLE_IS_IEEE_754_64_BIT_BIG_ENDIAN
+syn keyword xsMacro DOUBLE_IS_IEEE_754_64_BIT_LITTLE_ENDIAN
+syn keyword xsMacro DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE
+syn keyword xsMacro DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE
+syn keyword xsMacro DOUBLE_IS_UNKNOWN_FORMAT DOUBLE_LITTLE_ENDIAN
+syn keyword xsMacro DOUBLE_MIX_ENDIAN DO_UTF8 DPTR2FPTR DRAND48_R_PROTO
+syn keyword xsMacro DUP_WARNINGS Drand01 ELSE ELSIF EMBEDMYMALLOC END
+syn keyword xsMacro ENDGRENT_R_PROTO ENDHOSTENT_R_PROTO ENDLIKE
+syn keyword xsMacro ENDNETENT_R_PROTO ENDPROTOENT_R_PROTO ENDPWENT_R_PROTO
+syn keyword xsMacro ENDSERVENT_R_PROTO END_EXTERN_C ENTER ENTER_with_name
+syn keyword xsMacro ENTRY_PROBE EOF EOL EOS EQOP ERRSV ESC_NATIVE EVAL
+syn keyword xsMacro EVAL_AB EVAL_AB_fail EVAL_INEVAL EVAL_INREQUIRE
+syn keyword xsMacro EVAL_KEEPERR EVAL_NULL EVAL_RE_REPARSING EVAL_WARNONLY
+syn keyword xsMacro EXACT EXACTF EXACTFA EXACTFA_NO_TRIE EXACTFL EXACTFLU8
+syn keyword xsMacro EXACTFU EXACTFU_SS EXACTL EXEC_ARGV_CAST EXEC_PAT_MOD
+syn keyword xsMacro EXEC_PAT_MODS EXPECT EXT EXTCONST EXTEND EXTEND_MORTAL
+syn keyword xsMacro EXTERN_C EXTPERLIO EXTRA_SIZE EXTRA_STEP_2ARGS EXT_MGVTBL
+syn keyword xsMacro EXT_PAT_MODS FAKE_BIT_BUCKET FAKE_DEFAULT_SIGNAL_HANDLERS
+syn keyword xsMacro FAKE_PERSISTENT_SIGNAL_HANDLERS FALSE FBMcf_TAIL
+syn keyword xsMacro FBMcf_TAIL_DOLLAR FBMcf_TAIL_DOLLARM FBMcf_TAIL_Z
+syn keyword xsMacro FBMcf_TAIL_z FBMrf_MULTILINE FCNTL_CAN_LOCK FD_CLR
+syn keyword xsMacro FD_ISSET FD_SET FD_ZERO FEATURE_ARYBASE_IS_ENABLED
+syn keyword xsMacro FEATURE_BITWISE_IS_ENABLED FEATURE_BUNDLE_510
+syn keyword xsMacro FEATURE_BUNDLE_511 FEATURE_BUNDLE_515
+syn keyword xsMacro FEATURE_BUNDLE_CUSTOM FEATURE_BUNDLE_DEFAULT
+syn keyword xsMacro FEATURE_EVALBYTES_IS_ENABLED FEATURE_FC_IS_ENABLED
+syn keyword xsMacro FEATURE_IS_ENABLED FEATURE_LEXSUBS_IS_ENABLED
+syn keyword xsMacro FEATURE_POSTDEREF_IS_ENABLED
+syn keyword xsMacro FEATURE_POSTDEREF_QQ_IS_ENABLED
+syn keyword xsMacro FEATURE_REFALIASING_IS_ENABLED FEATURE_SAY_IS_ENABLED
+syn keyword xsMacro FEATURE_SIGNATURES_IS_ENABLED FEATURE_STATE_IS_ENABLED
+syn keyword xsMacro FEATURE_SWITCH_IS_ENABLED FEATURE_UNICODE_IS_ENABLED
+syn keyword xsMacro FEATURE_UNIEVAL_IS_ENABLED FEATURE___SUB___IS_ENABLED
+syn keyword xsMacro FFLUSH_NULL FF_0DECIMAL FF_BLANK FF_CHECKCHOP FF_CHECKNL
+syn keyword xsMacro FF_CHOP FF_DECIMAL FF_END FF_FETCH FF_HALFSPACE FF_ITEM
+syn keyword xsMacro FF_LINEGLOB FF_LINEMARK FF_LINESNGL FF_LITERAL FF_MORE
+syn keyword xsMacro FF_NEWLINE FF_SKIP FF_SPACE FILE FILE_base FILE_bufsiz
+syn keyword xsMacro FILE_cnt FILE_ptr FILL_ADVANCE_NODE
+syn keyword xsMacro FILL_ADVANCE_NODE_2L_ARG FILL_ADVANCE_NODE_ARG
+syn keyword xsMacro FILTER_DATA FILTER_ISREADER FILTER_READ
+syn keyword xsMacro FIND_RUNCV_level_eq FIND_RUNCV_padid_eq
+syn keyword xsMacro FIRST_SURROGATE_UTF8_FIRST_BYTE FITS_IN_8_BITS FLAGS
+syn keyword xsMacro FLEXFILENAMES FOLDEQ_LOCALE FOLDEQ_S1_ALREADY_FOLDED
+syn keyword xsMacro FOLDEQ_S1_FOLDS_SANE FOLDEQ_S2_ALREADY_FOLDED
+syn keyword xsMacro FOLDEQ_S2_FOLDS_SANE FOLDEQ_UTF8_NOMIX_ASCII
+syn keyword xsMacro FOLD_FLAGS_FULL FOLD_FLAGS_LOCALE FOLD_FLAGS_NOMIX_ASCII
+syn keyword xsMacro FOR FORMAT FORMLBRACK FORMRBRACK FPTR2DPTR FP_PINF
+syn keyword xsMacro FP_QNAN FREETMPS FREE_THREAD_KEY FSEEKSIZE FUNC FUNC0
+syn keyword xsMacro FUNC0OP FUNC0SUB FUNC1 FUNCMETH FUNCTION__ F_atan2_amg
+syn keyword xsMacro F_cos_amg F_exp_amg F_log_amg F_pow_amg F_sin_amg
+syn keyword xsMacro F_sqrt_amg Fflush FmLINES FreeOp Fstat GCB_ENUM_COUNT
+syn keyword xsMacro GCC_DIAG_IGNORE GCC_DIAG_PRAGMA GCC_DIAG_RESTORE
+syn keyword xsMacro GDBMNDBM_H_USES_PROTOTYPES GETATARGET GETGRENT_R_PROTO
+syn keyword xsMacro GETGRGID_R_PROTO GETGRNAM_R_PROTO GETHOSTBYADDR_R_PROTO
+syn keyword xsMacro GETHOSTBYNAME_R_PROTO GETHOSTENT_R_PROTO GETLOGIN_R_PROTO
+syn keyword xsMacro GETNETBYADDR_R_PROTO GETNETBYNAME_R_PROTO
+syn keyword xsMacro GETNETENT_R_PROTO GETPROTOBYNAME_R_PROTO
+syn keyword xsMacro GETPROTOBYNUMBER_R_PROTO GETPROTOENT_R_PROTO
+syn keyword xsMacro GETPWENT_R_PROTO GETPWNAM_R_PROTO GETPWUID_R_PROTO
+syn keyword xsMacro GETSERVBYNAME_R_PROTO GETSERVBYPORT_R_PROTO
+syn keyword xsMacro GETSERVENT_R_PROTO GETSPNAM_R_PROTO GETTARGET
+syn keyword xsMacro GETTARGETSTACKED GET_RE_DEBUG_FLAGS
+syn keyword xsMacro GET_RE_DEBUG_FLAGS_DECL GIMME GIMME_V GIVEN
+syn keyword xsMacro GLOBAL_PAT_MOD GMTIME_MAX GMTIME_MIN GMTIME_R
+syn keyword xsMacro GMTIME_R_PROTO GOSTART GOSUB GPOS GPf_ALIASED_SV
+syn keyword xsMacro GRAMBARESTMT GRAMBLOCK GRAMEXPR GRAMFULLSTMT GRAMPROG
+syn keyword xsMacro GRAMSTMTSEQ GREEK_CAPITAL_LETTER_IOTA_UTF8
+syn keyword xsMacro GREEK_CAPITAL_LETTER_MU GREEK_SMALL_LETTER_MU
+syn keyword xsMacro GREEK_SMALL_LETTER_MU_UTF8 GROK_NUMERIC_RADIX GROUPP
+syn keyword xsMacro GRPASSWD GV_ADD GV_ADDMG GV_ADDMULTI GV_ADDWARN
+syn keyword xsMacro GV_AUTOLOAD GV_AUTOLOAD_ISMETHOD GV_CACHE_ONLY GV_CROAK
+syn keyword xsMacro GV_NOADD_MASK GV_NOADD_NOINIT GV_NOEXPAND GV_NOINIT
+syn keyword xsMacro GV_NOTQUAL GV_NO_SVGMAGIC GV_SUPER GVf_ASSUMECV
+syn keyword xsMacro GVf_IMPORTED GVf_IMPORTED_AV GVf_IMPORTED_CV
+syn keyword xsMacro GVf_IMPORTED_HV GVf_IMPORTED_SV GVf_INTRO GVf_MULTI
+syn keyword xsMacro Gconvert Gid_t_f Gid_t_sign Gid_t_size GvALIASED_SV
+syn keyword xsMacro GvALIASED_SV_off GvALIASED_SV_on GvASSIGN_GENERATION
+syn keyword xsMacro GvASSIGN_GENERATION_set GvASSUMECV GvASSUMECV_off
+syn keyword xsMacro GvASSUMECV_on GvAV GvAVn GvCV GvCVGEN GvCV_set GvCVu
+syn keyword xsMacro GvEGV GvEGVx GvENAME GvENAMELEN GvENAMEUTF8 GvENAME_HEK
+syn keyword xsMacro GvESTASH GvFILE GvFILEGV GvFILE_HEK GvFILEx GvFLAGS
+syn keyword xsMacro GvFORM GvGP GvGPFLAGS GvGP_set GvHV GvHVn GvIMPORTED
+syn keyword xsMacro GvIMPORTED_AV GvIMPORTED_AV_off GvIMPORTED_AV_on
+syn keyword xsMacro GvIMPORTED_CV GvIMPORTED_CV_off GvIMPORTED_CV_on
+syn keyword xsMacro GvIMPORTED_HV GvIMPORTED_HV_off GvIMPORTED_HV_on
+syn keyword xsMacro GvIMPORTED_SV GvIMPORTED_SV_off GvIMPORTED_SV_on
+syn keyword xsMacro GvIMPORTED_off GvIMPORTED_on GvINTRO GvINTRO_off
+syn keyword xsMacro GvINTRO_on GvIN_PAD GvIN_PAD_off GvIN_PAD_on GvIO GvIOn
+syn keyword xsMacro GvIOp GvLINE GvMULTI GvMULTI_off GvMULTI_on GvNAME
+syn keyword xsMacro GvNAMELEN GvNAMELEN_get GvNAMEUTF8 GvNAME_HEK GvNAME_get
+syn keyword xsMacro GvREFCNT GvSTASH GvSV GvSVn GvXPVGV Gv_AMG HANDY_H
+syn keyword xsMacro HASATTRIBUTE_DEPRECATED HASATTRIBUTE_FORMAT
+syn keyword xsMacro HASATTRIBUTE_MALLOC HASATTRIBUTE_NONNULL
+syn keyword xsMacro HASATTRIBUTE_NORETURN HASATTRIBUTE_PURE
+syn keyword xsMacro HASATTRIBUTE_UNUSED HASATTRIBUTE_WARN_UNUSED_RESULT
+syn keyword xsMacro HASCONST HASHBRACK HASVOLATILE HAS_ACCESS HAS_ACOSH
+syn keyword xsMacro HAS_ALARM HAS_ASINH HAS_ATANH HAS_ATOLL HAS_BACKTRACE
+syn keyword xsMacro HAS_BCMP HAS_BCOPY HAS_BOOL HAS_BUILTIN_CHOOSE_EXPR
+syn keyword xsMacro HAS_BUILTIN_EXPECT HAS_BZERO HAS_C99
+syn keyword xsMacro HAS_C99_VARIADIC_MACROS HAS_CBRT HAS_CHOWN HAS_CHROOT
+syn keyword xsMacro HAS_CLEARENV HAS_COPYSIGN HAS_COPYSIGNL HAS_CRYPT
+syn keyword xsMacro HAS_CTERMID HAS_CUSERID HAS_DBL_DIG HAS_DBMINIT_PROTO
+syn keyword xsMacro HAS_DIFFTIME HAS_DIRFD HAS_DLADDR HAS_DLERROR
+syn keyword xsMacro HAS_DRAND48_PROTO HAS_DUP2 HAS_EACCESS HAS_ENDGRENT
+syn keyword xsMacro HAS_ENDHOSTENT HAS_ENDNETENT HAS_ENDPROTOENT HAS_ENDPWENT
+syn keyword xsMacro HAS_ENDSERVENT HAS_ERF HAS_ERFC HAS_EXP2 HAS_EXPM1
+syn keyword xsMacro HAS_FCHDIR HAS_FCHMOD HAS_FCHOWN HAS_FCNTL HAS_FDIM
+syn keyword xsMacro HAS_FD_SET HAS_FEGETROUND HAS_FGETPOS HAS_FINITE
+syn keyword xsMacro HAS_FINITEL HAS_FLOCK HAS_FLOCK_PROTO HAS_FMA HAS_FMAX
+syn keyword xsMacro HAS_FMIN HAS_FORK HAS_FPATHCONF HAS_FPCLASSIFY HAS_FREXPL
+syn keyword xsMacro HAS_FSEEKO HAS_FSETPOS HAS_FSTATFS HAS_FSTATVFS HAS_FSYNC
+syn keyword xsMacro HAS_FTELLO HAS_FUTIMES HAS_GETADDRINFO HAS_GETCWD
+syn keyword xsMacro HAS_GETGRENT HAS_GETGROUPS HAS_GETHOSTBYADDR
+syn keyword xsMacro HAS_GETHOSTBYNAME HAS_GETHOSTENT HAS_GETHOSTNAME
+syn keyword xsMacro HAS_GETHOST_PROTOS HAS_GETITIMER HAS_GETLOGIN
+syn keyword xsMacro HAS_GETMNTENT HAS_GETNAMEINFO HAS_GETNETBYADDR
+syn keyword xsMacro HAS_GETNETBYNAME HAS_GETNETENT HAS_GETNET_PROTOS
+syn keyword xsMacro HAS_GETPAGESIZE HAS_GETPGID HAS_GETPGRP HAS_GETPPID
+syn keyword xsMacro HAS_GETPRIORITY HAS_GETPROTOBYNAME HAS_GETPROTOBYNUMBER
+syn keyword xsMacro HAS_GETPROTOENT HAS_GETPROTO_PROTOS HAS_GETPWENT
+syn keyword xsMacro HAS_GETSERVBYNAME HAS_GETSERVBYPORT HAS_GETSERVENT
+syn keyword xsMacro HAS_GETSERV_PROTOS HAS_GETSPNAM HAS_GETTIMEOFDAY
+syn keyword xsMacro HAS_GNULIBC HAS_GROUP HAS_HASMNTOPT HAS_HTONL HAS_HTONS
+syn keyword xsMacro HAS_HYPOT HAS_ILOGB HAS_ILOGBL HAS_INETNTOP HAS_INETPTON
+syn keyword xsMacro HAS_INET_ATON HAS_INT64_T HAS_IOCTL HAS_IPV6_MREQ
+syn keyword xsMacro HAS_IP_MREQ HAS_IP_MREQ_SOURCE HAS_ISASCII HAS_ISBLANK
+syn keyword xsMacro HAS_ISFINITE HAS_ISINF HAS_ISINFL HAS_ISNAN HAS_ISNANL
+syn keyword xsMacro HAS_ISNORMAL HAS_J0 HAS_J0L HAS_KILL HAS_KILLPG
+syn keyword xsMacro HAS_LCHOWN HAS_LC_MONETARY_2008 HAS_LDBL_DIG HAS_LDEXPL
+syn keyword xsMacro HAS_LGAMMA HAS_LGAMMA_R HAS_LINK HAS_LLRINT HAS_LLRINTL
+syn keyword xsMacro HAS_LLROUND HAS_LLROUNDL HAS_LOCALECONV HAS_LOCKF
+syn keyword xsMacro HAS_LOG1P HAS_LOG2 HAS_LOGB HAS_LONG_DOUBLE HAS_LONG_LONG
+syn keyword xsMacro HAS_LRINT HAS_LRINTL HAS_LROUND HAS_LROUNDL
+syn keyword xsMacro HAS_LSEEK_PROTO HAS_LSTAT HAS_MADVISE HAS_MBLEN
+syn keyword xsMacro HAS_MBSTOWCS HAS_MBTOWC HAS_MEMCHR HAS_MEMCMP HAS_MEMCPY
+syn keyword xsMacro HAS_MEMMOVE HAS_MEMSET HAS_MKDIR HAS_MKDTEMP HAS_MKFIFO
+syn keyword xsMacro HAS_MKSTEMP HAS_MKSTEMPS HAS_MKTIME HAS_MMAP HAS_MODFL
+syn keyword xsMacro HAS_MODFL_PROTO HAS_MPROTECT HAS_MSG HAS_MSG_CTRUNC
+syn keyword xsMacro HAS_MSG_DONTROUTE HAS_MSG_OOB HAS_MSG_PEEK HAS_MSG_PROXY
+syn keyword xsMacro HAS_MSYNC HAS_MUNMAP HAS_NAN HAS_NEARBYINT HAS_NEXTAFTER
+syn keyword xsMacro HAS_NEXTTOWARD HAS_NICE HAS_NL_LANGINFO HAS_NTOHL
+syn keyword xsMacro HAS_NTOHS HAS_OPEN3 HAS_PASSWD HAS_PATHCONF HAS_PAUSE
+syn keyword xsMacro HAS_PIPE HAS_POLL HAS_PRCTL HAS_PRCTL_SET_NAME
+syn keyword xsMacro HAS_PROCSELFEXE HAS_PTHREAD_ATFORK
+syn keyword xsMacro HAS_PTHREAD_ATTR_SETSCOPE
+syn keyword xsMacro HAS_PTHREAD_UNCHECKED_GETSPECIFIC_NP HAS_PTHREAD_YIELD
+syn keyword xsMacro HAS_PTRDIFF_T HAS_READDIR HAS_READLINK HAS_READV
+syn keyword xsMacro HAS_RECVMSG HAS_REGCOMP HAS_REMAINDER HAS_REMQUO
+syn keyword xsMacro HAS_RENAME HAS_REWINDDIR HAS_RINT HAS_RMDIR HAS_ROUND
+syn keyword xsMacro HAS_SANE_MEMCMP HAS_SBRK_PROTO HAS_SCALBN HAS_SCALBNL
+syn keyword xsMacro HAS_SCHED_YIELD HAS_SCM_RIGHTS HAS_SEEKDIR HAS_SELECT
+syn keyword xsMacro HAS_SEM HAS_SENDMSG HAS_SETEGID HAS_SETEUID HAS_SETGRENT
+syn keyword xsMacro HAS_SETGROUPS HAS_SETHOSTENT HAS_SETITIMER HAS_SETLINEBUF
+syn keyword xsMacro HAS_SETLOCALE HAS_SETNETENT HAS_SETPGID HAS_SETPGRP
+syn keyword xsMacro HAS_SETPRIORITY HAS_SETPROTOENT HAS_SETPWENT HAS_SETREGID
+syn keyword xsMacro HAS_SETRESGID HAS_SETRESUID HAS_SETREUID HAS_SETSERVENT
+syn keyword xsMacro HAS_SETSID HAS_SETVBUF HAS_SHM HAS_SHMAT_PROTOTYPE
+syn keyword xsMacro HAS_SIGACTION HAS_SIGNBIT HAS_SIGPROCMASK HAS_SIGSETJMP
+syn keyword xsMacro HAS_SIN6_SCOPE_ID HAS_SKIP_LOCALE_INIT HAS_SNPRINTF
+syn keyword xsMacro HAS_SOCKADDR_IN6 HAS_SOCKATMARK HAS_SOCKATMARK_PROTO
+syn keyword xsMacro HAS_SOCKET HAS_SQRTL HAS_STAT HAS_STATIC_INLINE
+syn keyword xsMacro HAS_STRCHR HAS_STRCOLL HAS_STRFTIME HAS_STRTOD HAS_STRTOL
+syn keyword xsMacro HAS_STRTOLD HAS_STRTOLL HAS_STRTOQ HAS_STRTOUL
+syn keyword xsMacro HAS_STRTOULL HAS_STRTOUQ HAS_STRUCT_CMSGHDR
+syn keyword xsMacro HAS_STRUCT_MSGHDR HAS_STRUCT_STATFS
+syn keyword xsMacro HAS_STRUCT_STATFS_F_FLAGS HAS_STRXFRM HAS_SYMLINK
+syn keyword xsMacro HAS_SYSCALL HAS_SYSCALL_PROTO HAS_SYSCONF HAS_SYSTEM
+syn keyword xsMacro HAS_SYS_ERRLIST HAS_TCGETPGRP HAS_TCSETPGRP HAS_TELLDIR
+syn keyword xsMacro HAS_TELLDIR_PROTO HAS_TGAMMA HAS_TIME HAS_TIMEGM
+syn keyword xsMacro HAS_TIMES HAS_TM_TM_GMTOFF HAS_TM_TM_ZONE HAS_TRUNC
+syn keyword xsMacro HAS_TRUNCATE HAS_TRUNCL HAS_TZNAME HAS_UALARM HAS_UMASK
+syn keyword xsMacro HAS_UNAME HAS_UNSETENV HAS_USLEEP HAS_USLEEP_PROTO
+syn keyword xsMacro HAS_USTAT HAS_UTIME HAS_VPRINTF HAS_VSNPRINTF HAS_WAIT
+syn keyword xsMacro HAS_WAIT4 HAS_WAITPID HAS_WCSCMP HAS_WCSTOMBS HAS_WCSXFRM
+syn keyword xsMacro HAS_WCTOMB HAS_WRITEV HEK_BASESIZE HEK_FLAGS HEK_HASH
+syn keyword xsMacro HEK_KEY HEK_LEN HEK_UTF8 HEK_UTF8_off HEK_UTF8_on
+syn keyword xsMacro HEK_WASUTF8 HEK_WASUTF8_off HEK_WASUTF8_on HEKf HEKf256
+syn keyword xsMacro HEKfARG HE_SVSLOT HEf_SVKEY HINTS_REFCNT_INIT
+syn keyword xsMacro HINTS_REFCNT_LOCK HINTS_REFCNT_TERM HINTS_REFCNT_UNLOCK
+syn keyword xsMacro HINT_BLOCK_SCOPE HINT_BYTES HINT_EXPLICIT_STRICT_REFS
+syn keyword xsMacro HINT_EXPLICIT_STRICT_SUBS HINT_EXPLICIT_STRICT_VARS
+syn keyword xsMacro HINT_FEATURE_MASK HINT_FEATURE_SHIFT HINT_FILETEST_ACCESS
+syn keyword xsMacro HINT_INTEGER HINT_LEXICAL_IO_IN HINT_LEXICAL_IO_OUT
+syn keyword xsMacro HINT_LOCALE HINT_LOCALE_PARTIAL HINT_LOCALIZE_HH
+syn keyword xsMacro HINT_NEW_BINARY HINT_NEW_FLOAT HINT_NEW_INTEGER
+syn keyword xsMacro HINT_NEW_RE HINT_NEW_STRING HINT_NO_AMAGIC HINT_RE_EVAL
+syn keyword xsMacro HINT_RE_FLAGS HINT_RE_TAINT HINT_SORT_MERGESORT
+syn keyword xsMacro HINT_SORT_QUICKSORT HINT_SORT_SORT_BITS HINT_SORT_STABLE
+syn keyword xsMacro HINT_STRICT_REFS HINT_STRICT_SUBS HINT_STRICT_VARS
+syn keyword xsMacro HINT_UNI_8_BIT HINT_UTF8 HS_APIVERLEN_MAX HS_CXT
+syn keyword xsMacro HS_GETAPIVERLEN HS_GETINTERPSIZE HS_GETXSVERLEN HS_KEY
+syn keyword xsMacro HS_KEYp HS_XSVERLEN_MAX HSf_IMP_CXT HSf_NOCHK HSf_POPMARK
+syn keyword xsMacro HSf_SETXSUBFN HSm_APIVERLEN HSm_INTRPSIZE HSm_KEY_MATCH
+syn keyword xsMacro HSm_XSVERLEN HV_DELETE HV_DISABLE_UVAR_XKEY
+syn keyword xsMacro HV_FETCH_EMPTY_HE HV_FETCH_ISEXISTS HV_FETCH_ISSTORE
+syn keyword xsMacro HV_FETCH_JUST_SV HV_FETCH_LVALUE
+syn keyword xsMacro HV_ITERNEXT_WANTPLACEHOLDERS HV_NAME_SETALL
+syn keyword xsMacro HVhek_ENABLEHVKFLAGS HVhek_FREEKEY HVhek_KEYCANONICAL
+syn keyword xsMacro HVhek_MASK HVhek_PLACEHOLD HVhek_UNSHARED HVhek_UTF8
+syn keyword xsMacro HVhek_WASUTF8 HVrhek_IV HVrhek_PV HVrhek_PV_UTF8
+syn keyword xsMacro HVrhek_UV HVrhek_delete HVrhek_typemask HVrhek_undef
+syn keyword xsMacro HYPHEN_UTF8 H_EBCDIC_TABLES H_PERL H_REGCHARCLASS
+syn keyword xsMacro H_UNICODE_CONSTANTS H_UTF8 HeHASH HeKEY HeKEY_hek
+syn keyword xsMacro HeKEY_sv HeKFLAGS HeKLEN HeKLEN_UTF8 HeKUTF8 HeKWASUTF8
+syn keyword xsMacro HeNEXT HePV HeSVKEY HeSVKEY_force HeSVKEY_set HeUTF8
+syn keyword xsMacro HeVAL HvAMAGIC HvAMAGIC_off HvAMAGIC_on HvARRAY HvAUX
+syn keyword xsMacro HvAUXf_NO_DEREF HvAUXf_SCAN_STASH HvEITER HvEITER_get
+syn keyword xsMacro HvEITER_set HvENAME HvENAMELEN HvENAMELEN_get HvENAMEUTF8
+syn keyword xsMacro HvENAME_HEK HvENAME_HEK_NN HvENAME_get HvFILL HvHASKFLAGS
+syn keyword xsMacro HvHASKFLAGS_off HvHASKFLAGS_on HvKEYS HvLASTRAND_get
+syn keyword xsMacro HvLAZYDEL HvLAZYDEL_off HvLAZYDEL_on HvMAX HvMROMETA
+syn keyword xsMacro HvNAME HvNAMELEN HvNAMELEN_get HvNAMEUTF8 HvNAME_HEK
+syn keyword xsMacro HvNAME_HEK_NN HvNAME_get HvPLACEHOLDERS
+syn keyword xsMacro HvPLACEHOLDERS_get HvPLACEHOLDERS_set HvRAND_get HvRITER
+syn keyword xsMacro HvRITER_get HvRITER_set HvSHAREKEYS HvSHAREKEYS_off
+syn keyword xsMacro HvSHAREKEYS_on HvTOTALKEYS HvUSEDKEYS I16SIZE I16TYPE
+syn keyword xsMacro I16_MAX I16_MIN I32SIZE I32TYPE I32_MAX I32_MAX_P1
+syn keyword xsMacro I32_MIN I64SIZE I64TYPE I8SIZE I8TYPE I8_TO_NATIVE
+syn keyword xsMacro I8_TO_NATIVE_UTF8 IF IFMATCH IFMATCH_A IFMATCH_A_fail
+syn keyword xsMacro IFTHEN IGNORE_PAT_MOD ILLEGAL_UTF8_BYTE INIT INIT_THREADS
+syn keyword xsMacro INIT_TRACK_MEMPOOL INSUBP INT2PTR INT32_MIN INT64_C
+syn keyword xsMacro INT64_MIN INTSIZE INT_64_T INT_PAT_MODS IN_BYTES
+syn keyword xsMacro IN_ENCODING IN_LC IN_LC_ALL_COMPILETIME IN_LC_ALL_RUNTIME
+syn keyword xsMacro IN_LC_COMPILETIME IN_LC_PARTIAL_COMPILETIME
+syn keyword xsMacro IN_LC_PARTIAL_RUNTIME IN_LC_RUNTIME IN_LOCALE
+syn keyword xsMacro IN_LOCALE_COMPILETIME IN_LOCALE_RUNTIME
+syn keyword xsMacro IN_PERL_COMPILETIME IN_PERL_RUNTIME IN_SOME_LOCALE_FORM
+syn keyword xsMacro IN_SOME_LOCALE_FORM_COMPILETIME
+syn keyword xsMacro IN_SOME_LOCALE_FORM_RUNTIME IN_UNI_8_BIT
+syn keyword xsMacro IN_UTF8_CTYPE_LOCALE IOCPARM_LEN IOf_ARGV IOf_DIDTOP
+syn keyword xsMacro IOf_FAKE_DIRP IOf_FLUSH IOf_NOLINE IOf_START IOf_UNTAINT
+syn keyword xsMacro ISA_VERSION_OBJ IS_ANYOF_TRIE
+syn keyword xsMacro IS_NUMBER_GREATER_THAN_UV_MAX IS_NUMBER_INFINITY
+syn keyword xsMacro IS_NUMBER_IN_UV IS_NUMBER_NAN IS_NUMBER_NEG
+syn keyword xsMacro IS_NUMBER_NOT_INT IS_NUMBER_TRAILING IS_NUMERIC_RADIX
+syn keyword xsMacro IS_PADCONST IS_PADGV IS_SAFE_PATHNAME IS_SAFE_SYSCALL
+syn keyword xsMacro IS_TRIE_AC IS_UTF8_CHAR IS_UTF8_CHAR_FAST IVSIZE IVTYPE
+syn keyword xsMacro IV_DIG IV_MAX IV_MAX_P1 IV_MIN I_32 I_ARPA_INET I_ASSERT
+syn keyword xsMacro I_BFD I_CRYPT I_DBM I_DIRENT I_DLFCN I_EXECINFO I_FENV
+syn keyword xsMacro I_FLOAT I_GDBM I_GDBMNDBM I_GRP I_INTTYPES I_LANGINFO
+syn keyword xsMacro I_LIMITS I_LOCALE I_MATH I_MNTENT I_NETDB I_NETINET_IN
+syn keyword xsMacro I_NETINET_TCP I_POLL I_PTHREAD I_PWD I_QUADMATH I_SHADOW
+syn keyword xsMacro I_STDARG I_STDBOOL I_STDDEF I_STDINT I_STDLIB I_STRING
+syn keyword xsMacro I_SYSLOG I_SYSUIO I_SYSUTSNAME I_SYS_DIR I_SYS_FILE
+syn keyword xsMacro I_SYS_IOCTL I_SYS_MOUNT I_SYS_PARAM I_SYS_POLL
+syn keyword xsMacro I_SYS_RESOURCE I_SYS_SELECT I_SYS_STAT I_SYS_STATFS
+syn keyword xsMacro I_SYS_STATVFS I_SYS_TIME I_SYS_TIMES I_SYS_TYPES I_SYS_UN
+syn keyword xsMacro I_SYS_VFS I_SYS_WAIT I_TERMIOS I_TIME I_UNISTD I_USTAT
+syn keyword xsMacro I_UTIME I_V I_VALUES IoANY IoBOTTOM_GV IoBOTTOM_NAME
+syn keyword xsMacro IoDIRP IoFLAGS IoFMT_GV IoFMT_NAME IoIFP IoLINES
+syn keyword xsMacro IoLINES_LEFT IoOFP IoPAGE IoPAGE_LEN IoTOP_GV IoTOP_NAME
+syn keyword xsMacro IoTYPE IoTYPE_APPEND IoTYPE_CLOSED IoTYPE_IMPLICIT
+syn keyword xsMacro IoTYPE_NUMERIC IoTYPE_PIPE IoTYPE_RDONLY IoTYPE_RDWR
+syn keyword xsMacro IoTYPE_SOCKET IoTYPE_STD IoTYPE_WRONLY IsSet
+syn keyword xsMacro JMPENV_BOOTSTRAP JMPENV_JUMP JMPENV_POP JMPENV_PUSH JOIN
+syn keyword xsMacro KEEPCOPY_PAT_MOD KEEPCOPY_PAT_MODS KEEPS KEEPS_next
+syn keyword xsMacro KEEPS_next_fail KELVIN_SIGN KEYWORD_PLUGIN_DECLINE
+syn keyword xsMacro KEYWORD_PLUGIN_EXPR KEYWORD_PLUGIN_STMT KEY_AUTOLOAD
+syn keyword xsMacro KEY_BEGIN KEY_CHECK KEY_DESTROY KEY_END KEY_INIT KEY_NULL
+syn keyword xsMacro KEY_UNITCHECK KEY___DATA__ KEY___END__ KEY___FILE__
+syn keyword xsMacro KEY___LINE__ KEY___PACKAGE__ KEY___SUB__ KEY_abs
+syn keyword xsMacro KEY_accept KEY_alarm KEY_and KEY_atan2 KEY_bind
+syn keyword xsMacro KEY_binmode KEY_bless KEY_break KEY_caller KEY_chdir
+syn keyword xsMacro KEY_chmod KEY_chomp KEY_chop KEY_chown KEY_chr KEY_chroot
+syn keyword xsMacro KEY_close KEY_closedir KEY_cmp KEY_connect KEY_continue
+syn keyword xsMacro KEY_cos KEY_crypt KEY_dbmclose KEY_dbmopen KEY_default
+syn keyword xsMacro KEY_defined KEY_delete KEY_die KEY_do KEY_dump KEY_each
+syn keyword xsMacro KEY_else KEY_elsif KEY_endgrent KEY_endhostent
+syn keyword xsMacro KEY_endnetent KEY_endprotoent KEY_endpwent KEY_endservent
+syn keyword xsMacro KEY_eof KEY_eq KEY_eval KEY_evalbytes KEY_exec KEY_exists
+syn keyword xsMacro KEY_exit KEY_exp KEY_fc KEY_fcntl KEY_fileno KEY_flock
+syn keyword xsMacro KEY_for KEY_foreach KEY_fork KEY_format KEY_formline
+syn keyword xsMacro KEY_ge KEY_getc KEY_getgrent KEY_getgrgid KEY_getgrnam
+syn keyword xsMacro KEY_gethostbyaddr KEY_gethostbyname KEY_gethostent
+syn keyword xsMacro KEY_getlogin KEY_getnetbyaddr KEY_getnetbyname
+syn keyword xsMacro KEY_getnetent KEY_getpeername KEY_getpgrp KEY_getppid
+syn keyword xsMacro KEY_getpriority KEY_getprotobyname KEY_getprotobynumber
+syn keyword xsMacro KEY_getprotoent KEY_getpwent KEY_getpwnam KEY_getpwuid
+syn keyword xsMacro KEY_getservbyname KEY_getservbyport KEY_getservent
+syn keyword xsMacro KEY_getsockname KEY_getsockopt KEY_given KEY_glob
+syn keyword xsMacro KEY_gmtime KEY_goto KEY_grep KEY_gt KEY_hex KEY_if
+syn keyword xsMacro KEY_index KEY_int KEY_ioctl KEY_join KEY_keys KEY_kill
+syn keyword xsMacro KEY_last KEY_lc KEY_lcfirst KEY_le KEY_length KEY_link
+syn keyword xsMacro KEY_listen KEY_local KEY_localtime KEY_lock KEY_log
+syn keyword xsMacro KEY_lstat KEY_lt KEY_m KEY_map KEY_mkdir KEY_msgctl
+syn keyword xsMacro KEY_msgget KEY_msgrcv KEY_msgsnd KEY_my KEY_ne KEY_next
+syn keyword xsMacro KEY_no KEY_not KEY_oct KEY_open KEY_opendir KEY_or
+syn keyword xsMacro KEY_ord KEY_our KEY_pack KEY_package KEY_pipe KEY_pop
+syn keyword xsMacro KEY_pos KEY_print KEY_printf KEY_prototype KEY_push KEY_q
+syn keyword xsMacro KEY_qq KEY_qr KEY_quotemeta KEY_qw KEY_qx KEY_rand
+syn keyword xsMacro KEY_read KEY_readdir KEY_readline KEY_readlink
+syn keyword xsMacro KEY_readpipe KEY_recv KEY_redo KEY_ref KEY_rename
+syn keyword xsMacro KEY_require KEY_reset KEY_return KEY_reverse
+syn keyword xsMacro KEY_rewinddir KEY_rindex KEY_rmdir KEY_s KEY_say
+syn keyword xsMacro KEY_scalar KEY_seek KEY_seekdir KEY_select KEY_semctl
+syn keyword xsMacro KEY_semget KEY_semop KEY_send KEY_setgrent KEY_sethostent
+syn keyword xsMacro KEY_setnetent KEY_setpgrp KEY_setpriority KEY_setprotoent
+syn keyword xsMacro KEY_setpwent KEY_setservent KEY_setsockopt KEY_shift
+syn keyword xsMacro KEY_shmctl KEY_shmget KEY_shmread KEY_shmwrite
+syn keyword xsMacro KEY_shutdown KEY_sin KEY_sleep KEY_socket KEY_socketpair
+syn keyword xsMacro KEY_sort KEY_splice KEY_split KEY_sprintf KEY_sqrt
+syn keyword xsMacro KEY_srand KEY_stat KEY_state KEY_study KEY_sub KEY_substr
+syn keyword xsMacro KEY_symlink KEY_syscall KEY_sysopen KEY_sysread
+syn keyword xsMacro KEY_sysseek KEY_system KEY_syswrite KEY_tell KEY_telldir
+syn keyword xsMacro KEY_tie KEY_tied KEY_time KEY_times KEY_tr KEY_truncate
+syn keyword xsMacro KEY_uc KEY_ucfirst KEY_umask KEY_undef KEY_unless
+syn keyword xsMacro KEY_unlink KEY_unpack KEY_unshift KEY_untie KEY_until
+syn keyword xsMacro KEY_use KEY_utime KEY_values KEY_vec KEY_wait KEY_waitpid
+syn keyword xsMacro KEY_wantarray KEY_warn KEY_when KEY_while KEY_write KEY_x
+syn keyword xsMacro KEY_xor KEY_y LABEL LATIN1_TO_NATIVE
+syn keyword xsMacro LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE
+syn keyword xsMacro LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE_NATIVE
+syn keyword xsMacro LATIN_CAPITAL_LETTER_SHARP_S
+syn keyword xsMacro LATIN_CAPITAL_LETTER_SHARP_S_UTF8
+syn keyword xsMacro LATIN_CAPITAL_LETTER_Y_WITH_DIAERESIS
+syn keyword xsMacro LATIN_SMALL_LETTER_A_WITH_RING_ABOVE
+syn keyword xsMacro LATIN_SMALL_LETTER_A_WITH_RING_ABOVE_NATIVE
+syn keyword xsMacro LATIN_SMALL_LETTER_LONG_S LATIN_SMALL_LETTER_LONG_S_UTF8
+syn keyword xsMacro LATIN_SMALL_LETTER_SHARP_S
+syn keyword xsMacro LATIN_SMALL_LETTER_SHARP_S_NATIVE
+syn keyword xsMacro LATIN_SMALL_LETTER_Y_WITH_DIAERESIS
+syn keyword xsMacro LATIN_SMALL_LETTER_Y_WITH_DIAERESIS_NATIVE
+syn keyword xsMacro LATIN_SMALL_LIGATURE_LONG_S_T
+syn keyword xsMacro LATIN_SMALL_LIGATURE_LONG_S_T_UTF8
+syn keyword xsMacro LATIN_SMALL_LIGATURE_ST LATIN_SMALL_LIGATURE_ST_UTF8
+syn keyword xsMacro LDBL_DIG LEAVE LEAVESUB LEAVE_SCOPE LEAVE_with_name
+syn keyword xsMacro LEX_DONT_CLOSE_RSFP LEX_EVALBYTES LEX_IGNORE_UTF8_HINTS
+syn keyword xsMacro LEX_KEEP_PREVIOUS LEX_NOTPARSING LEX_START_COPIED
+syn keyword xsMacro LEX_START_FLAGS LEX_START_SAME_FILTER LEX_STUFF_UTF8
+syn keyword xsMacro LF_NATIVE LIBERAL LIBM_LIB_VERSION LIB_INVARG LIKELY
+syn keyword xsMacro LINKLIST LNBREAK LOADED_FILE_PROBE LOADING_FILE_PROBE
+syn keyword xsMacro LOCAL LOCALE_PAT_MOD LOCALE_PAT_MODS LOCALTIME_MAX
+syn keyword xsMacro LOCALTIME_MIN LOCALTIME_R LOCALTIME_R_PROTO
+syn keyword xsMacro LOCAL_PATCH_COUNT LOCK_DOLLARZERO_MUTEX
+syn keyword xsMacro LOCK_LC_NUMERIC_STANDARD LOCK_NUMERIC_STANDARD LOC_SED
+syn keyword xsMacro LOGICAL LONGDOUBLE_BIG_ENDIAN LONGDOUBLE_DOUBLEDOUBLE
+syn keyword xsMacro LONGDOUBLE_LITTLE_ENDIAN LONGDOUBLE_X86_80_BIT LONGJMP
+syn keyword xsMacro LONGLONGSIZE LONGSIZE LONG_DOUBLEKIND LONG_DOUBLESIZE
+syn keyword xsMacro LONG_DOUBLE_EQUALS_DOUBLE LONG_DOUBLE_IS_DOUBLE
+syn keyword xsMacro LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN
+syn keyword xsMacro LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN
+syn keyword xsMacro LONG_DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN
+syn keyword xsMacro LONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN
+syn keyword xsMacro LONG_DOUBLE_IS_UNKNOWN_FORMAT
+syn keyword xsMacro LONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIAN
+syn keyword xsMacro LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN LOOPEX
+syn keyword xsMacro LOOP_PAT_MODS LSEEKSIZE LSTOP LSTOPSUB LVRET L_R_TZSET
+syn keyword xsMacro LvFLAGS LvSTARGOFF LvTARG LvTARGLEN LvTARGOFF LvTYPE
+syn keyword xsMacro MALLOC_CHECK_TAINT MALLOC_CHECK_TAINT2 MALLOC_CTL_H
+syn keyword xsMacro MALLOC_INIT MALLOC_OVERHEAD MALLOC_TERM
+syn keyword xsMacro MALLOC_TOO_LATE_FOR MARKPOINT MARKPOINT_next
+syn keyword xsMacro MARKPOINT_next_fail MASK MATCHOP MAXARG MAXO MAXPATHLEN
+syn keyword xsMacro MAXSYSFD MAX_CHARSET_NAME_LENGTH MAX_FEATURE_LEN
+syn keyword xsMacro MAX_PORTABLE_UTF8_TWO_BYTE
+syn keyword xsMacro MAX_PRINT_A_FOR_USE_ONLY_BY_REGCOMP_DOT_C
+syn keyword xsMacro MAX_RECURSE_EVAL_NOCHANGE_DEPTH MAX_UTF8_TWO_BYTE
+syn keyword xsMacro MAYBE_DEREF_GV MAYBE_DEREF_GV_flags MAYBE_DEREF_GV_nomg
+syn keyword xsMacro MBOL MB_CUR_MAX MDEREF_ACTION_MASK MDEREF_AV_gvav_aelem
+syn keyword xsMacro MDEREF_AV_gvsv_vivify_rv2av_aelem MDEREF_AV_padav_aelem
+syn keyword xsMacro MDEREF_AV_padsv_vivify_rv2av_aelem
+syn keyword xsMacro MDEREF_AV_pop_rv2av_aelem MDEREF_AV_vivify_rv2av_aelem
+syn keyword xsMacro MDEREF_FLAG_last MDEREF_HV_gvhv_helem
+syn keyword xsMacro MDEREF_HV_gvsv_vivify_rv2hv_helem MDEREF_HV_padhv_helem
+syn keyword xsMacro MDEREF_HV_padsv_vivify_rv2hv_helem
+syn keyword xsMacro MDEREF_HV_pop_rv2hv_helem MDEREF_HV_vivify_rv2hv_helem
+syn keyword xsMacro MDEREF_INDEX_MASK MDEREF_INDEX_const MDEREF_INDEX_gvsv
+syn keyword xsMacro MDEREF_INDEX_none MDEREF_INDEX_padsv MDEREF_MASK
+syn keyword xsMacro MDEREF_SHIFT MDEREF_reload MEMBER_TO_FPTR MEM_ALIGNBYTES
+syn keyword xsMacro MEM_LOG_ALLOC MEM_LOG_FREE MEM_LOG_REALLOC MEM_SIZE
+syn keyword xsMacro MEM_SIZE_MAX MEM_WRAP_CHECK MEM_WRAP_CHECK_
+syn keyword xsMacro MEM_WRAP_CHECK_1 MEM_WRAP_CHECK_2 MEOL METHOD MEXTEND
+syn keyword xsMacro MGf_BYTES MGf_COPY MGf_DUP MGf_GSKIP MGf_LOCAL
+syn keyword xsMacro MGf_MINMATCH MGf_PERSIST MGf_REFCOUNTED MGf_REQUIRE_GV
+syn keyword xsMacro MGf_TAINTEDDIR MICRO_SIGN MICRO_SIGN_NATIVE MINMOD
+syn keyword xsMacro MJD_OFFSET_DEBUG MRO_GET_PRIVATE_DATA MSPAGAIN MULOP
+syn keyword xsMacro MULTICALL MULTILINE_PAT_MOD MULTIPLICITY MURMUR_C1
+syn keyword xsMacro MURMUR_C2 MURMUR_C3 MURMUR_C4 MURMUR_C5 MURMUR_DOBLOCK
+syn keyword xsMacro MURMUR_DOBYTES MUTABLE_AV MUTABLE_CV MUTABLE_GV
+syn keyword xsMacro MUTABLE_HV MUTABLE_IO MUTABLE_PTR MUTABLE_SV
+syn keyword xsMacro MUTEX_DESTROY MUTEX_INIT MUTEX_INIT_NEEDS_MUTEX_ZEROED
+syn keyword xsMacro MUTEX_LOCK MUTEX_UNLOCK MY MY_CXT_CLONE MY_CXT_INDEX
+syn keyword xsMacro MY_CXT_INIT MY_CXT_INIT_ARG MY_CXT_INIT_INTERP M_PAT_MODS
+syn keyword xsMacro MgBYTEPOS MgBYTEPOS_set MgPV MgPV_const MgPV_nolen_const
+syn keyword xsMacro MgTAINTEDDIR MgTAINTEDDIR_off MgTAINTEDDIR_on Mkdir Move
+syn keyword xsMacro MoveD NAN_COMPARE_BROKEN NATIVE8_TO_UNI
+syn keyword xsMacro NATIVE_BYTE_IS_INVARIANT NATIVE_SKIP NATIVE_TO_ASCII
+syn keyword xsMacro NATIVE_TO_I8 NATIVE_TO_LATIN1 NATIVE_TO_UNI NATIVE_TO_UTF
+syn keyword xsMacro NATIVE_UTF8_TO_I8 NBOUND NBOUNDA NBOUNDL NBOUNDU
+syn keyword xsMacro NBSP_NATIVE NBSP_UTF8 NDBM_H_USES_PROTOTYPES NDEBUG
+syn keyword xsMacro NEED_PTHREAD_INIT NEED_VA_COPY NEGATIVE_INDICES_VAR
+syn keyword xsMacro NETDB_R_OBSOLETE NEWSV NEW_VERSION NEXTOPER
+syn keyword xsMacro NEXT_LINE_CHAR NEXT_OFF NGROUPP NOAMP NOCAPTURE_PAT_MOD
+syn keyword xsMacro NOCAPTURE_PAT_MODS NODE_ALIGN NODE_ALIGN_FILL NODE_STEP_B
+syn keyword xsMacro NODE_STEP_REGNODE NODE_SZ_STR NOLINE NONDESTRUCT_PAT_MOD
+syn keyword xsMacro NONDESTRUCT_PAT_MODS
+syn keyword xsMacro NON_OTHER_COUNT_FOR_USE_ONLY_BY_REGCOMP_DOT_C NOOP
+syn keyword xsMacro NORETURN_FUNCTION_END NORMAL NOTHING NOTOP NOT_IN_PAD
+syn keyword xsMacro NOT_REACHED NO_ENV_ARRAY_IN_MAIN NO_LOCALE
+syn keyword xsMacro NO_LOCALECONV_MON_THOUSANDS_SEP NO_TAINT_SUPPORT NPOSIXA
+syn keyword xsMacro NPOSIXD NPOSIXL NPOSIXU NREF NREFF NREFFA NREFFL NREFFU
+syn keyword xsMacro NSIG NUM2PTR NUM_ANYOF_CODE_POINTS NVSIZE NVTYPE
+syn keyword xsMacro NV_BIG_ENDIAN NV_DIG NV_EPSILON NV_INF NV_LITTLE_ENDIAN
+syn keyword xsMacro NV_MANT_DIG NV_MAX NV_MAX_10_EXP NV_MAX_EXP NV_MIN
+syn keyword xsMacro NV_MIN_10_EXP NV_MIN_EXP NV_MIX_ENDIAN NV_NAN
+syn keyword xsMacro NV_OVERFLOWS_INTEGERS_AT NV_PRESERVES_UV_BITS
+syn keyword xsMacro NV_WITHIN_IV NV_WITHIN_UV New NewOp NewOpSz Newc Newx
+syn keyword xsMacro Newxc Newxz Newz NofAMmeth Null Nullav Nullch Nullcv
+syn keyword xsMacro Nullfp Nullgv Nullhe Nullhek Nullhv Nullop Nullsv OASHIFT
+syn keyword xsMacro OCSHIFT OCTAL_VALUE OFFUNISKIP ONCE_PAT_MOD ONCE_PAT_MODS
+syn keyword xsMacro OPEN OPERAND OPFAIL OPSLOT_HEADER OPSLOT_HEADER_P
+syn keyword xsMacro OPTIMIZED OP_BINARY OP_CHECK_MUTEX_INIT
+syn keyword xsMacro OP_CHECK_MUTEX_LOCK OP_CHECK_MUTEX_TERM
+syn keyword xsMacro OP_CHECK_MUTEX_UNLOCK OP_CLASS OP_DESC OP_ENTRY_PROBE
+syn keyword xsMacro OP_FREED OP_GIMME OP_GIMME_REVERSE OP_IS_DIRHOP
+syn keyword xsMacro OP_IS_FILETEST OP_IS_FILETEST_ACCESS OP_IS_INFIX_BIT
+syn keyword xsMacro OP_IS_NUMCOMPARE OP_IS_SOCKET OP_LVALUE_NO_CROAK OP_NAME
+syn keyword xsMacro OP_REFCNT_INIT OP_REFCNT_LOCK OP_REFCNT_TERM
+syn keyword xsMacro OP_REFCNT_UNLOCK OP_SIBLING OP_TYPE_IS OP_TYPE_ISNT
+syn keyword xsMacro OP_TYPE_ISNT_AND_WASNT OP_TYPE_ISNT_AND_WASNT_NN
+syn keyword xsMacro OP_TYPE_ISNT_NN OP_TYPE_IS_NN OP_TYPE_IS_OR_WAS
+syn keyword xsMacro OP_TYPE_IS_OR_WAS_NN OROP OROR OSNAME OSVERS O_CREAT
+syn keyword xsMacro O_RDONLY O_RDWR O_TEXT O_WRONLY Off Off_t_size
+syn keyword xsMacro OpHAS_SIBLING OpLASTSIB_set OpMAYBESIB_set OpMORESIB_set
+syn keyword xsMacro OpREFCNT_dec OpREFCNT_inc OpREFCNT_set OpSIBLING OpSLAB
+syn keyword xsMacro OpSLOT OpslabREFCNT_dec OpslabREFCNT_dec_padok OutCopFILE
+syn keyword xsMacro PADNAME_FROM_PV PADNAMEt_LVALUE PADNAMEt_OUR
+syn keyword xsMacro PADNAMEt_OUTER PADNAMEt_STATE PADNAMEt_TYPED PAD_BASE_SV
+syn keyword xsMacro PAD_CLONE_VARS PAD_COMPNAME PAD_COMPNAME_FLAGS
+syn keyword xsMacro PAD_COMPNAME_FLAGS_isOUR PAD_COMPNAME_GEN
+syn keyword xsMacro PAD_COMPNAME_GEN_set PAD_COMPNAME_OURSTASH
+syn keyword xsMacro PAD_COMPNAME_PV PAD_COMPNAME_SV PAD_COMPNAME_TYPE
+syn keyword xsMacro PAD_FAKELEX_ANON PAD_FAKELEX_MULTI PAD_RESTORE_LOCAL
+syn keyword xsMacro PAD_SAVE_LOCAL PAD_SAVE_SETNULLPAD PAD_SETSV PAD_SET_CUR
+syn keyword xsMacro PAD_SET_CUR_NOSAVE PAD_SV PAD_SVl PARENT_FAKELEX_FLAGS
+syn keyword xsMacro PARENT_PAD_INDEX PARSE_OPTIONAL PASS1 PASS2 PATCHLEVEL
+syn keyword xsMacro PERLDB_ALL PERLDB_GOTO PERLDB_INTER PERLDB_LINE
+syn keyword xsMacro PERLDB_NAMEANON PERLDB_NAMEEVAL PERLDB_NOOPT
+syn keyword xsMacro PERLDB_SAVESRC PERLDB_SAVESRC_INVALID
+syn keyword xsMacro PERLDB_SAVESRC_NOSUBS PERLDB_SINGLE PERLDB_SUB
+syn keyword xsMacro PERLDB_SUBLINE PERLDB_SUB_NN PERLDBf_GOTO PERLDBf_INTER
+syn keyword xsMacro PERLDBf_LINE PERLDBf_NAMEANON PERLDBf_NAMEEVAL
+syn keyword xsMacro PERLDBf_NONAME PERLDBf_NOOPT PERLDBf_SAVESRC
+syn keyword xsMacro PERLDBf_SAVESRC_INVALID PERLDBf_SAVESRC_NOSUBS
+syn keyword xsMacro PERLDBf_SINGLE PERLDBf_SUB PERLDBf_SUBLINE
+syn keyword xsMacro PERLIOBUF_DEFAULT_BUFSIZ PERLIO_DUP_CLONE PERLIO_DUP_FD
+syn keyword xsMacro PERLIO_FUNCS_CAST PERLIO_FUNCS_CONST PERLIO_FUNCS_DECL
+syn keyword xsMacro PERLIO_F_APPEND PERLIO_F_CANREAD PERLIO_F_CANWRITE
+syn keyword xsMacro PERLIO_F_CLEARED PERLIO_F_CRLF PERLIO_F_EOF
+syn keyword xsMacro PERLIO_F_ERROR PERLIO_F_FASTGETS PERLIO_F_LINEBUF
+syn keyword xsMacro PERLIO_F_NOTREG PERLIO_F_OPEN PERLIO_F_RDBUF
+syn keyword xsMacro PERLIO_F_TEMP PERLIO_F_TRUNCATE PERLIO_F_TTY
+syn keyword xsMacro PERLIO_F_UNBUF PERLIO_F_UTF8 PERLIO_F_WRBUF PERLIO_INIT
+syn keyword xsMacro PERLIO_IS_STDIO PERLIO_K_BUFFERED PERLIO_K_CANCRLF
+syn keyword xsMacro PERLIO_K_DESTRUCT PERLIO_K_DUMMY PERLIO_K_FASTGETS
+syn keyword xsMacro PERLIO_K_MULTIARG PERLIO_K_RAW PERLIO_K_UTF8
+syn keyword xsMacro PERLIO_LAYERS PERLIO_NOT_STDIO PERLIO_STDTEXT PERLIO_TERM
+syn keyword xsMacro PERLIO_USING_CRLF PERLSI_DESTROY PERLSI_DIEHOOK
+syn keyword xsMacro PERLSI_MAGIC PERLSI_MAIN PERLSI_OVERLOAD PERLSI_REQUIRE
+syn keyword xsMacro PERLSI_SIGNAL PERLSI_SORT PERLSI_UNDEF PERLSI_UNKNOWN
+syn keyword xsMacro PERLSI_WARNHOOK PERL_ABS PERL_ALLOC_CHECK PERL_ANY_COW
+syn keyword xsMacro PERL_API_REVISION PERL_API_SUBVERSION PERL_API_VERSION
+syn keyword xsMacro PERL_API_VERSION_STRING PERL_ARENA_ROOTS_SIZE
+syn keyword xsMacro PERL_ARENA_SIZE PERL_ARGS_ASSERT_ADD_ABOVE_LATIN1_FOLDS
+syn keyword xsMacro PERL_ARGS_ASSERT_ADD_DATA
+syn keyword xsMacro PERL_ARGS_ASSERT_ADD_MULTI_MATCH
+syn keyword xsMacro PERL_ARGS_ASSERT_ADD_UTF16_TEXTFILTER
+syn keyword xsMacro PERL_ARGS_ASSERT_ADJUST_SIZE_AND_FIND_BUCKET
+syn keyword xsMacro PERL_ARGS_ASSERT_ADVANCE_ONE_SB
+syn keyword xsMacro PERL_ARGS_ASSERT_ADVANCE_ONE_WB
+syn keyword xsMacro PERL_ARGS_ASSERT_ALLOCCOPSTASH PERL_ARGS_ASSERT_ALLOCMY
+syn keyword xsMacro PERL_ARGS_ASSERT_ALLOC_MAYBE_POPULATE_EXACT
+syn keyword xsMacro PERL_ARGS_ASSERT_AMAGIC_CALL PERL_ARGS_ASSERT_AMAGIC_CMP
+syn keyword xsMacro PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE
+syn keyword xsMacro PERL_ARGS_ASSERT_AMAGIC_DEREF_CALL
+syn keyword xsMacro PERL_ARGS_ASSERT_AMAGIC_I_NCMP
+syn keyword xsMacro PERL_ARGS_ASSERT_AMAGIC_NCMP
+syn keyword xsMacro PERL_ARGS_ASSERT_ANONYMISE_CV_MAYBE
+syn keyword xsMacro PERL_ARGS_ASSERT_ANY_DUP
+syn keyword xsMacro PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE
+syn keyword xsMacro PERL_ARGS_ASSERT_APPLY PERL_ARGS_ASSERT_APPLY_ATTRS
+syn keyword xsMacro PERL_ARGS_ASSERT_APPLY_ATTRS_MY
+syn keyword xsMacro PERL_ARGS_ASSERT_APPLY_ATTRS_STRING
+syn keyword xsMacro PERL_ARGS_ASSERT_ASSERT_UFT8_CACHE_COHERENT
+syn keyword xsMacro PERL_ARGS_ASSERT_AV_ARYLEN_P PERL_ARGS_ASSERT_AV_CLEAR
+syn keyword xsMacro PERL_ARGS_ASSERT_AV_CREATE_AND_PUSH
+syn keyword xsMacro PERL_ARGS_ASSERT_AV_CREATE_AND_UNSHIFT_ONE
+syn keyword xsMacro PERL_ARGS_ASSERT_AV_DELETE PERL_ARGS_ASSERT_AV_EXISTS
+syn keyword xsMacro PERL_ARGS_ASSERT_AV_EXTEND
+syn keyword xsMacro PERL_ARGS_ASSERT_AV_EXTEND_GUTS PERL_ARGS_ASSERT_AV_FETCH
+syn keyword xsMacro PERL_ARGS_ASSERT_AV_FILL PERL_ARGS_ASSERT_AV_ITER_P
+syn keyword xsMacro PERL_ARGS_ASSERT_AV_LEN PERL_ARGS_ASSERT_AV_MAKE
+syn keyword xsMacro PERL_ARGS_ASSERT_AV_POP PERL_ARGS_ASSERT_AV_PUSH
+syn keyword xsMacro PERL_ARGS_ASSERT_AV_REIFY PERL_ARGS_ASSERT_AV_SHIFT
+syn keyword xsMacro PERL_ARGS_ASSERT_AV_STORE PERL_ARGS_ASSERT_AV_TOP_INDEX
+syn keyword xsMacro PERL_ARGS_ASSERT_AV_UNDEF PERL_ARGS_ASSERT_AV_UNSHIFT
+syn keyword xsMacro PERL_ARGS_ASSERT_BACKUP_ONE_SB
+syn keyword xsMacro PERL_ARGS_ASSERT_BACKUP_ONE_WB
+syn keyword xsMacro PERL_ARGS_ASSERT_BAD_TYPE_GV PERL_ARGS_ASSERT_BAD_TYPE_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_BIND_MATCH
+syn keyword xsMacro PERL_ARGS_ASSERT_BLOCKHOOK_REGISTER
+syn keyword xsMacro PERL_ARGS_ASSERT_BYTES_CMP_UTF8
+syn keyword xsMacro PERL_ARGS_ASSERT_BYTES_FROM_UTF8
+syn keyword xsMacro PERL_ARGS_ASSERT_BYTES_TO_UTF8 PERL_ARGS_ASSERT_CALL_ARGV
+syn keyword xsMacro PERL_ARGS_ASSERT_CALL_LIST PERL_ARGS_ASSERT_CALL_METHOD
+syn keyword xsMacro PERL_ARGS_ASSERT_CALL_PV PERL_ARGS_ASSERT_CALL_SV
+syn keyword xsMacro PERL_ARGS_ASSERT_CANDO PERL_ARGS_ASSERT_CHECKCOMMA
+syn keyword xsMacro PERL_ARGS_ASSERT_CHECK_LOCALE_BOUNDARY_CROSSING
+syn keyword xsMacro PERL_ARGS_ASSERT_CHECK_TYPE_AND_OPEN
+syn keyword xsMacro PERL_ARGS_ASSERT_CHECK_UTF8_PRINT
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_ANONCODE PERL_ARGS_ASSERT_CK_BACKTICK
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_BITOP PERL_ARGS_ASSERT_CK_CMP
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_CONCAT PERL_ARGS_ASSERT_CK_DEFINED
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_DELETE PERL_ARGS_ASSERT_CK_EACH
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_CORE
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_LIST
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO_OR_LIST
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_EOF PERL_ARGS_ASSERT_CK_EVAL
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_EXEC PERL_ARGS_ASSERT_CK_EXISTS
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_FTST PERL_ARGS_ASSERT_CK_FUN
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_GLOB PERL_ARGS_ASSERT_CK_GREP
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_INDEX PERL_ARGS_ASSERT_CK_JOIN
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_LENGTH PERL_ARGS_ASSERT_CK_LFUN
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_LISTIOB PERL_ARGS_ASSERT_CK_MATCH
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_METHOD PERL_ARGS_ASSERT_CK_NULL
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_OPEN PERL_ARGS_ASSERT_CK_PROTOTYPE
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_READLINE
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_REFASSIGN PERL_ARGS_ASSERT_CK_REPEAT
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_REQUIRE PERL_ARGS_ASSERT_CK_RETURN
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_RFUN PERL_ARGS_ASSERT_CK_RVCONST
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_SASSIGN PERL_ARGS_ASSERT_CK_SELECT
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_SHIFT PERL_ARGS_ASSERT_CK_SMARTMATCH
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_SORT PERL_ARGS_ASSERT_CK_SPAIR
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_SPLIT PERL_ARGS_ASSERT_CK_STRINGIFY
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_SUBR PERL_ARGS_ASSERT_CK_SUBSTR
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_SVCONST PERL_ARGS_ASSERT_CK_TELL
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_TRUNC PERL_ARGS_ASSERT_CK_WARNER
+syn keyword xsMacro PERL_ARGS_ASSERT_CK_WARNER_D
+syn keyword xsMacro PERL_ARGS_ASSERT_CLEAR_PLACEHOLDERS
+syn keyword xsMacro PERL_ARGS_ASSERT_CLEAR_SPECIAL_BLOCKS
+syn keyword xsMacro PERL_ARGS_ASSERT_CLONE_PARAMS_DEL
+syn keyword xsMacro PERL_ARGS_ASSERT_CLONE_PARAMS_NEW
+syn keyword xsMacro PERL_ARGS_ASSERT_CLOSEST_COP
+syn keyword xsMacro PERL_ARGS_ASSERT_COMPUTE_EXACTISH
+syn keyword xsMacro PERL_ARGS_ASSERT_CONSTRUCT_AHOCORASICK_FROM_TRIE
+syn keyword xsMacro PERL_ARGS_ASSERT_COP_FETCH_LABEL
+syn keyword xsMacro PERL_ARGS_ASSERT_COP_FREE
+syn keyword xsMacro PERL_ARGS_ASSERT_COP_STORE_LABEL
+syn keyword xsMacro PERL_ARGS_ASSERT_CORESUB_OP
+syn keyword xsMacro PERL_ARGS_ASSERT_CORE_PROTOTYPE
+syn keyword xsMacro PERL_ARGS_ASSERT_COULD_IT_BE_A_POSIX_CLASS
+syn keyword xsMacro PERL_ARGS_ASSERT_CROAK_SV PERL_ARGS_ASSERT_CROAK_XS_USAGE
+syn keyword xsMacro PERL_ARGS_ASSERT_CURSE PERL_ARGS_ASSERT_CUSTOM_OP_DESC
+syn keyword xsMacro PERL_ARGS_ASSERT_CUSTOM_OP_GET_FIELD
+syn keyword xsMacro PERL_ARGS_ASSERT_CUSTOM_OP_NAME
+syn keyword xsMacro PERL_ARGS_ASSERT_CUSTOM_OP_REGISTER
+syn keyword xsMacro PERL_ARGS_ASSERT_CVGV_FROM_HEK PERL_ARGS_ASSERT_CVGV_SET
+syn keyword xsMacro PERL_ARGS_ASSERT_CVSTASH_SET
+syn keyword xsMacro PERL_ARGS_ASSERT_CV_CKPROTO_LEN_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_CV_CLONE PERL_ARGS_ASSERT_CV_CLONE_INTO
+syn keyword xsMacro PERL_ARGS_ASSERT_CV_DUMP
+syn keyword xsMacro PERL_ARGS_ASSERT_CV_GET_CALL_CHECKER
+syn keyword xsMacro PERL_ARGS_ASSERT_CV_NAME
+syn keyword xsMacro PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER
+syn keyword xsMacro PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_CV_UNDEF PERL_ARGS_ASSERT_CV_UNDEF_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_CX_DUMP PERL_ARGS_ASSERT_CX_DUP
+syn keyword xsMacro PERL_ARGS_ASSERT_DEB PERL_ARGS_ASSERT_DEBOP
+syn keyword xsMacro PERL_ARGS_ASSERT_DEBPROF
+syn keyword xsMacro PERL_ARGS_ASSERT_DEBUG_START_MATCH
+syn keyword xsMacro PERL_ARGS_ASSERT_DEB_NOCONTEXT
+syn keyword xsMacro PERL_ARGS_ASSERT_DEB_STACK_N
+syn keyword xsMacro PERL_ARGS_ASSERT_DEFELEM_TARGET PERL_ARGS_ASSERT_DELIMCPY
+syn keyword xsMacro PERL_ARGS_ASSERT_DEL_SV PERL_ARGS_ASSERT_DESTROY_MATCHER
+syn keyword xsMacro PERL_ARGS_ASSERT_DIE_SV PERL_ARGS_ASSERT_DIE_UNWIND
+syn keyword xsMacro PERL_ARGS_ASSERT_DIRP_DUP PERL_ARGS_ASSERT_DIV128
+syn keyword xsMacro PERL_ARGS_ASSERT_DOFILE PERL_ARGS_ASSERT_DOFINDLABEL
+syn keyword xsMacro PERL_ARGS_ASSERT_DOFORM PERL_ARGS_ASSERT_DOONELINER
+syn keyword xsMacro PERL_ARGS_ASSERT_DOOPEN_PM PERL_ARGS_ASSERT_DOPARSEFORM
+syn keyword xsMacro PERL_ARGS_ASSERT_DOPOPTOLABEL
+syn keyword xsMacro PERL_ARGS_ASSERT_DOPOPTOSUB_AT PERL_ARGS_ASSERT_DOREF
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_AEXEC PERL_ARGS_ASSERT_DO_AEXEC5
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_ASPAWN PERL_ARGS_ASSERT_DO_BINMODE
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_CHOMP PERL_ARGS_ASSERT_DO_DUMP_PAD
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_EOF PERL_ARGS_ASSERT_DO_EXEC
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_EXEC3 PERL_ARGS_ASSERT_DO_GVGV_DUMP
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_GV_DUMP PERL_ARGS_ASSERT_DO_HV_DUMP
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_IPCCTL PERL_ARGS_ASSERT_DO_IPCGET
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_JOIN PERL_ARGS_ASSERT_DO_MAGIC_DUMP
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_MSGRCV PERL_ARGS_ASSERT_DO_MSGSND
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_NCMP PERL_ARGS_ASSERT_DO_ODDBALL
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_OPEN PERL_ARGS_ASSERT_DO_OPEN6
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_OPEN9 PERL_ARGS_ASSERT_DO_OPENN
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_OPEN_RAW PERL_ARGS_ASSERT_DO_OP_DUMP
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_PMOP_DUMP PERL_ARGS_ASSERT_DO_PRINT
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_SEMOP PERL_ARGS_ASSERT_DO_SHMIO
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_SPAWN
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_SPAWN_NOWAIT
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_SPRINTF PERL_ARGS_ASSERT_DO_SV_DUMP
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_SYSSEEK PERL_ARGS_ASSERT_DO_TELL
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_COMPLEX
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_COMPLEX_UTF8
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_COUNT
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_COUNT_UTF8
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_SIMPLE
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_SIMPLE_UTF8
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_VECGET PERL_ARGS_ASSERT_DO_VECSET
+syn keyword xsMacro PERL_ARGS_ASSERT_DO_VOP PERL_ARGS_ASSERT_DRAND48_INIT_R
+syn keyword xsMacro PERL_ARGS_ASSERT_DRAND48_R PERL_ARGS_ASSERT_DUMPUNTIL
+syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_C_BACKTRACE
+syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_EXEC_POS PERL_ARGS_ASSERT_DUMP_FORM
+syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_INDENT PERL_ARGS_ASSERT_DUMP_MSTATS
+syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_PACKSUBS
+syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_PACKSUBS_PERL
+syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_SUB PERL_ARGS_ASSERT_DUMP_SUB_PERL
+syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_SV_CHILD PERL_ARGS_ASSERT_DUMP_TRIE
+syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_LIST
+syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_TABLE
+syn keyword xsMacro PERL_ARGS_ASSERT_DUMP_VINDENT
+syn keyword xsMacro PERL_ARGS_ASSERT_DUP_ATTRLIST
+syn keyword xsMacro PERL_ARGS_ASSERT_EMULATE_COP_IO PERL_ARGS_ASSERT_EVAL_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_EVAL_SV PERL_ARGS_ASSERT_EXEC_FAILED
+syn keyword xsMacro PERL_ARGS_ASSERT_EXPECT_NUMBER PERL_ARGS_ASSERT_F0CONVERT
+syn keyword xsMacro PERL_ARGS_ASSERT_FBM_COMPILE PERL_ARGS_ASSERT_FBM_INSTR
+syn keyword xsMacro PERL_ARGS_ASSERT_FEATURE_IS_ENABLED
+syn keyword xsMacro PERL_ARGS_ASSERT_FILTER_DEL PERL_ARGS_ASSERT_FILTER_GETS
+syn keyword xsMacro PERL_ARGS_ASSERT_FILTER_READ PERL_ARGS_ASSERT_FINALIZE_OP
+syn keyword xsMacro PERL_ARGS_ASSERT_FINALIZE_OPTREE
+syn keyword xsMacro PERL_ARGS_ASSERT_FIND_AND_FORGET_PMOPS
+syn keyword xsMacro PERL_ARGS_ASSERT_FIND_ARRAY_SUBSCRIPT
+syn keyword xsMacro PERL_ARGS_ASSERT_FIND_BEGINNING
+syn keyword xsMacro PERL_ARGS_ASSERT_FIND_BYCLASS
+syn keyword xsMacro PERL_ARGS_ASSERT_FIND_DEFAULT_STASH
+syn keyword xsMacro PERL_ARGS_ASSERT_FIND_HASH_SUBSCRIPT
+syn keyword xsMacro PERL_ARGS_ASSERT_FIND_IN_MY_STASH
+syn keyword xsMacro PERL_ARGS_ASSERT_FIND_RUNDEFSV2
+syn keyword xsMacro PERL_ARGS_ASSERT_FIND_SCRIPT
+syn keyword xsMacro PERL_ARGS_ASSERT_FIND_UNINIT_VAR
+syn keyword xsMacro PERL_ARGS_ASSERT_FIRST_SYMBOL
+syn keyword xsMacro PERL_ARGS_ASSERT_FIXUP_ERRNO_STRING
+syn keyword xsMacro PERL_ARGS_ASSERT_FOLDEQ PERL_ARGS_ASSERT_FOLDEQ_LATIN1
+syn keyword xsMacro PERL_ARGS_ASSERT_FOLDEQ_LOCALE
+syn keyword xsMacro PERL_ARGS_ASSERT_FOLDEQ_UTF8_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_FOLD_CONSTANTS
+syn keyword xsMacro PERL_ARGS_ASSERT_FORCE_IDENT
+syn keyword xsMacro PERL_ARGS_ASSERT_FORCE_STRICT_VERSION
+syn keyword xsMacro PERL_ARGS_ASSERT_FORCE_VERSION
+syn keyword xsMacro PERL_ARGS_ASSERT_FORCE_WORD PERL_ARGS_ASSERT_FORGET_PMOP
+syn keyword xsMacro PERL_ARGS_ASSERT_FORM PERL_ARGS_ASSERT_FORM_NOCONTEXT
+syn keyword xsMacro PERL_ARGS_ASSERT_FORM_SHORT_OCTAL_WARNING
+syn keyword xsMacro PERL_ARGS_ASSERT_FPRINTF_NOCONTEXT
+syn keyword xsMacro PERL_ARGS_ASSERT_FP_DUP
+syn keyword xsMacro PERL_ARGS_ASSERT_FREE_GLOBAL_STRUCT
+syn keyword xsMacro PERL_ARGS_ASSERT_GETCWD_SV PERL_ARGS_ASSERT_GETENV_LEN
+syn keyword xsMacro PERL_ARGS_ASSERT_GET_AND_CHECK_BACKSLASH_N_NAME
+syn keyword xsMacro PERL_ARGS_ASSERT_GET_ANYOF_CP_LIST_FOR_SSC
+syn keyword xsMacro PERL_ARGS_ASSERT_GET_AUX_MG PERL_ARGS_ASSERT_GET_AV
+syn keyword xsMacro PERL_ARGS_ASSERT_GET_CV PERL_ARGS_ASSERT_GET_CVN_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_GET_DB_SUB
+syn keyword xsMacro PERL_ARGS_ASSERT_GET_DEBUG_OPTS
+syn keyword xsMacro PERL_ARGS_ASSERT_GET_HASH_SEED PERL_ARGS_ASSERT_GET_HV
+syn keyword xsMacro PERL_ARGS_ASSERT_GET_INVLIST_ITER_ADDR
+syn keyword xsMacro PERL_ARGS_ASSERT_GET_INVLIST_OFFSET_ADDR
+syn keyword xsMacro PERL_ARGS_ASSERT_GET_INVLIST_PREVIOUS_INDEX_ADDR
+syn keyword xsMacro PERL_ARGS_ASSERT_GET_MSTATS PERL_ARGS_ASSERT_GET_NUM
+syn keyword xsMacro PERL_ARGS_ASSERT_GET_SV PERL_ARGS_ASSERT_GLOB_2NUMBER
+syn keyword xsMacro PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB PERL_ARGS_ASSERT_GP_DUP
+syn keyword xsMacro PERL_ARGS_ASSERT_GROK_ATOUV PERL_ARGS_ASSERT_GROK_BIN
+syn keyword xsMacro PERL_ARGS_ASSERT_GROK_BSLASH_N
+syn keyword xsMacro PERL_ARGS_ASSERT_GROK_BSLASH_O
+syn keyword xsMacro PERL_ARGS_ASSERT_GROK_BSLASH_X PERL_ARGS_ASSERT_GROK_HEX
+syn keyword xsMacro PERL_ARGS_ASSERT_GROK_INFNAN PERL_ARGS_ASSERT_GROK_NUMBER
+syn keyword xsMacro PERL_ARGS_ASSERT_GROK_NUMBER_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_GROK_NUMERIC_RADIX
+syn keyword xsMacro PERL_ARGS_ASSERT_GROK_OCT PERL_ARGS_ASSERT_GROUP_END
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_AMUPDATE
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_AUTOLOAD_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_AUTOLOAD_PVN
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_AUTOLOAD_SV PERL_ARGS_ASSERT_GV_CHECK
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_CONST_SV
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_EFULLNAME
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_EFULLNAME3
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_EFULLNAME4
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHFILE
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHFILE_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETHOD
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETHOD_PVN_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETHOD_PV_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETHOD_SV_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_PVN
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_PVN_AUTOLOAD
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_PV_AUTOLOAD
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_SV
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_SV_AUTOLOAD
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHPV
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHSV PERL_ARGS_ASSERT_GV_FULLNAME
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FULLNAME3
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_FULLNAME4 PERL_ARGS_ASSERT_GV_INIT_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_INIT_PVN PERL_ARGS_ASSERT_GV_INIT_SV
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_INIT_SVTYPE
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_IS_IN_MAIN
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_MAGICALIZE
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_MAGICALIZE_ISA
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_NAME_SET PERL_ARGS_ASSERT_GV_OVERRIDE
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_SETREF PERL_ARGS_ASSERT_GV_STASHPV
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_STASHPVN
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_STASHPVN_INTERNAL
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_STASHSV
+syn keyword xsMacro PERL_ARGS_ASSERT_GV_TRY_DOWNGRADE
+syn keyword xsMacro PERL_ARGS_ASSERT_HANDLE_REGEX_SETS
+syn keyword xsMacro PERL_ARGS_ASSERT_HEK_DUP PERL_ARGS_ASSERT_HE_DUP
+syn keyword xsMacro PERL_ARGS_ASSERT_HFREEENTRIES
+syn keyword xsMacro PERL_ARGS_ASSERT_HFREE_NEXT_ENTRY PERL_ARGS_ASSERT_HSPLIT
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_ASSERT PERL_ARGS_ASSERT_HV_AUXINIT
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_AUXINIT_INTERNAL
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_BACKREFERENCES_P
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_CLEAR_PLACEHOLDERS
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_COMMON_KEY_LEN
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_DELAYFREE_ENT
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_DELETE PERL_ARGS_ASSERT_HV_DELETE_ENT
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_EITER_P PERL_ARGS_ASSERT_HV_EITER_SET
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_ENAME_ADD
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_ENAME_DELETE
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_EXISTS PERL_ARGS_ASSERT_HV_EXISTS_ENT
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_FETCH PERL_ARGS_ASSERT_HV_FETCH_ENT
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_FILL PERL_ARGS_ASSERT_HV_FREE_ENT
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_FREE_ENT_RET
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERINIT PERL_ARGS_ASSERT_HV_ITERKEY
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERKEYSV
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERNEXT
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERNEXTSV
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERNEXT_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERVAL
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_KILL_BACKREFS
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_KSPLIT PERL_ARGS_ASSERT_HV_MAGIC
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_MAGIC_CHECK
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_NAME_SET
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_NOTALLOWED
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_PLACEHOLDERS_GET
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_PLACEHOLDERS_P
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_PLACEHOLDERS_SET
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_RAND_SET PERL_ARGS_ASSERT_HV_RITER_P
+syn keyword xsMacro PERL_ARGS_ASSERT_HV_RITER_SET PERL_ARGS_ASSERT_HV_SCALAR
+syn keyword xsMacro PERL_ARGS_ASSERT_INCLINE PERL_ARGS_ASSERT_INCPUSH
+syn keyword xsMacro PERL_ARGS_ASSERT_INCPUSH_IF_EXISTS
+syn keyword xsMacro PERL_ARGS_ASSERT_INCPUSH_USE_SEP
+syn keyword xsMacro PERL_ARGS_ASSERT_INIT_ARGV_SYMBOLS
+syn keyword xsMacro PERL_ARGS_ASSERT_INIT_POSTDUMP_SYMBOLS
+syn keyword xsMacro PERL_ARGS_ASSERT_INIT_TM PERL_ARGS_ASSERT_INPLACE_AASSIGN
+syn keyword xsMacro PERL_ARGS_ASSERT_INSTR PERL_ARGS_ASSERT_INTUIT_METHOD
+syn keyword xsMacro PERL_ARGS_ASSERT_INTUIT_MORE
+syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_ARRAY
+syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_CLONE
+syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_EXTEND
+syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_HIGHEST
+syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_IS_ITERATING
+syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_ITERFINISH
+syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_ITERINIT
+syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_ITERNEXT
+syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_MAX
+syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_PREVIOUS_INDEX
+syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_SET_LEN
+syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_SET_PREVIOUS_INDEX
+syn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_TRIM PERL_ARGS_ASSERT_IO_CLOSE
+syn keyword xsMacro PERL_ARGS_ASSERT_ISALNUM_LAZY PERL_ARGS_ASSERT_ISA_LOOKUP
+syn keyword xsMacro PERL_ARGS_ASSERT_ISFOO_UTF8_LC
+syn keyword xsMacro PERL_ARGS_ASSERT_ISIDFIRST_LAZY
+syn keyword xsMacro PERL_ARGS_ASSERT_ISINFNANSV PERL_ARGS_ASSERT_ISSB
+syn keyword xsMacro PERL_ARGS_ASSERT_ISWB PERL_ARGS_ASSERT_IS_AN_INT
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_HANDLE_CONSTRUCTOR
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_INVARIANT_STRING
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_SAFE_SYSCALL
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_SSC_WORTH_IT
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_ALNUM
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_ALNUMC
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_ALPHA
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_ASCII
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_BLANK
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_CHAR
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_CHAR_BUF
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_CNTRL
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_COMMON
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_DIGIT
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_GRAPH
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_IDCONT
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_IDFIRST
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_LOWER
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_MARK
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_PERL_SPACE
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_PERL_WORD
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_POSIX_DIGIT
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_PRINT
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_PUNCT
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_SPACE
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_STRING
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_UPPER
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_XDIGIT
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_XIDCONT
+syn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_XIDFIRST PERL_ARGS_ASSERT_JMAYBE
+syn keyword xsMacro PERL_ARGS_ASSERT_JOIN_EXACT PERL_ARGS_ASSERT_KEYWORD
+syn keyword xsMacro PERL_ARGS_ASSERT_KEYWORD_PLUGIN_STANDARD
+syn keyword xsMacro PERL_ARGS_ASSERT_LEAVE_COMMON
+syn keyword xsMacro PERL_ARGS_ASSERT_LEX_DISCARD_TO
+syn keyword xsMacro PERL_ARGS_ASSERT_LEX_READ_TO
+syn keyword xsMacro PERL_ARGS_ASSERT_LEX_STUFF_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_LEX_STUFF_PVN
+syn keyword xsMacro PERL_ARGS_ASSERT_LEX_STUFF_SV
+syn keyword xsMacro PERL_ARGS_ASSERT_LEX_UNSTUFF PERL_ARGS_ASSERT_LOAD_MODULE
+syn keyword xsMacro PERL_ARGS_ASSERT_LOAD_MODULE_NOCONTEXT
+syn keyword xsMacro PERL_ARGS_ASSERT_LOCALIZE
+syn keyword xsMacro PERL_ARGS_ASSERT_LOOKS_LIKE_BOOL
+syn keyword xsMacro PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER PERL_ARGS_ASSERT_LOP
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARARYLEN_P
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARENV
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARHINT
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARHINTS
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARISA
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARPACK
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARSIG
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEAR_ALL_ENV
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_COPYCALLCHECKER
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_EXISTSPACK
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_FREEARYLEN_P
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_FREEOVRLD
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GET
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETARYLEN
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETDEBUGVAR
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETDEFELEM
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETNKEYS
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETPACK
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETPOS
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETSIG
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETSUBSTR
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETTAINT
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETUVAR
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETVEC
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_KILLBACKREFS
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_METHCALL
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_METHCALL1
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_METHPACK
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_NEXTPACK
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_REGDATA_CNT
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_REGDATUM_GET
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_REGDATUM_SET
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SCALARPACK
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SET
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETARYLEN
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETCOLLXFRM
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETDBLINE
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETDEBUGVAR
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETDEFELEM
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETENV
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETHINT
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETISA
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETLVREF
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETMGLOB
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETNKEYS
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETPACK
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETPOS
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETREGEXP
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETSIG
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETSUBSTR
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETTAINT
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETUTF8
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETUVAR
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETVEC
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SET_ALL_ENV
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SIZEPACK
+syn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_WIPEPACK
+syn keyword xsMacro PERL_ARGS_ASSERT_MAKE_MATCHER PERL_ARGS_ASSERT_MAKE_TRIE
+syn keyword xsMacro PERL_ARGS_ASSERT_MALLOCED_SIZE
+syn keyword xsMacro PERL_ARGS_ASSERT_MATCHER_MATCHES_SV
+syn keyword xsMacro PERL_ARGS_ASSERT_MAYBERELOCATE
+syn keyword xsMacro PERL_ARGS_ASSERT_MAYBE_MULTIMAGIC_GV
+syn keyword xsMacro PERL_ARGS_ASSERT_MEASURE_STRUCT
+syn keyword xsMacro PERL_ARGS_ASSERT_MEM_COLLXFRM
+syn keyword xsMacro PERL_ARGS_ASSERT_MEM_LOG_COMMON PERL_ARGS_ASSERT_MESS
+syn keyword xsMacro PERL_ARGS_ASSERT_MESS_NOCONTEXT PERL_ARGS_ASSERT_MESS_SV
+syn keyword xsMacro PERL_ARGS_ASSERT_MG_CLEAR PERL_ARGS_ASSERT_MG_COPY
+syn keyword xsMacro PERL_ARGS_ASSERT_MG_DUP PERL_ARGS_ASSERT_MG_FIND_MGLOB
+syn keyword xsMacro PERL_ARGS_ASSERT_MG_FREE PERL_ARGS_ASSERT_MG_FREE_TYPE
+syn keyword xsMacro PERL_ARGS_ASSERT_MG_GET PERL_ARGS_ASSERT_MG_LENGTH
+syn keyword xsMacro PERL_ARGS_ASSERT_MG_LOCALIZE PERL_ARGS_ASSERT_MG_MAGICAL
+syn keyword xsMacro PERL_ARGS_ASSERT_MG_SET PERL_ARGS_ASSERT_MG_SIZE
+syn keyword xsMacro PERL_ARGS_ASSERT_MINI_MKTIME
+syn keyword xsMacro PERL_ARGS_ASSERT_MORESWITCHES
+syn keyword xsMacro PERL_ARGS_ASSERT_MOVE_PROTO_ATTR
+syn keyword xsMacro PERL_ARGS_ASSERT_MRO_CLEAN_ISAREV
+syn keyword xsMacro PERL_ARGS_ASSERT_MRO_GATHER_AND_RENAME
+syn keyword xsMacro PERL_ARGS_ASSERT_MRO_GET_FROM_NAME
+syn keyword xsMacro PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA
+syn keyword xsMacro PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA_DFS
+syn keyword xsMacro PERL_ARGS_ASSERT_MRO_GET_PRIVATE_DATA
+syn keyword xsMacro PERL_ARGS_ASSERT_MRO_ISA_CHANGED_IN
+syn keyword xsMacro PERL_ARGS_ASSERT_MRO_META_DUP
+syn keyword xsMacro PERL_ARGS_ASSERT_MRO_META_INIT
+syn keyword xsMacro PERL_ARGS_ASSERT_MRO_METHOD_CHANGED_IN
+syn keyword xsMacro PERL_ARGS_ASSERT_MRO_PACKAGE_MOVED
+syn keyword xsMacro PERL_ARGS_ASSERT_MRO_REGISTER
+syn keyword xsMacro PERL_ARGS_ASSERT_MRO_SET_MRO
+syn keyword xsMacro PERL_ARGS_ASSERT_MRO_SET_PRIVATE_DATA
+syn keyword xsMacro PERL_ARGS_ASSERT_MUL128
+syn keyword xsMacro PERL_ARGS_ASSERT_MULTIDEREF_STRINGIFY
+syn keyword xsMacro PERL_ARGS_ASSERT_MY_ATOF PERL_ARGS_ASSERT_MY_ATOF2
+syn keyword xsMacro PERL_ARGS_ASSERT_MY_ATTRS PERL_ARGS_ASSERT_MY_BCOPY
+syn keyword xsMacro PERL_ARGS_ASSERT_MY_BYTES_TO_UTF8
+syn keyword xsMacro PERL_ARGS_ASSERT_MY_BZERO PERL_ARGS_ASSERT_MY_CXT_INDEX
+syn keyword xsMacro PERL_ARGS_ASSERT_MY_CXT_INIT PERL_ARGS_ASSERT_MY_KID
+syn keyword xsMacro PERL_ARGS_ASSERT_MY_MEMCMP PERL_ARGS_ASSERT_MY_MEMSET
+syn keyword xsMacro PERL_ARGS_ASSERT_MY_POPEN PERL_ARGS_ASSERT_MY_POPEN_LIST
+syn keyword xsMacro PERL_ARGS_ASSERT_MY_SNPRINTF PERL_ARGS_ASSERT_MY_SPRINTF
+syn keyword xsMacro PERL_ARGS_ASSERT_MY_STRFTIME
+syn keyword xsMacro PERL_ARGS_ASSERT_MY_VSNPRINTF PERL_ARGS_ASSERT_NEED_UTF8
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWAVREF PERL_ARGS_ASSERT_NEWCONDOP
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWFOROP PERL_ARGS_ASSERT_NEWGIVENOP
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWGIVWHENOP PERL_ARGS_ASSERT_NEWGP
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWGVGEN_FLAGS PERL_ARGS_ASSERT_NEWGVOP
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWHVREF PERL_ARGS_ASSERT_NEWLOGOP
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWLOOPEX PERL_ARGS_ASSERT_NEWMETHOP
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWMETHOP_NAMED
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWMYSUB
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWPADNAMEOUTER
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWPADNAMEPVN PERL_ARGS_ASSERT_NEWPADOP
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWPROG PERL_ARGS_ASSERT_NEWRANGE
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWRV PERL_ARGS_ASSERT_NEWRV_NOINC
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWSTUB PERL_ARGS_ASSERT_NEWSVAVDEFELEM
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWSVOP PERL_ARGS_ASSERT_NEWSVPVF
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWSVPVF_NOCONTEXT
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWSVREF PERL_ARGS_ASSERT_NEWSVRV
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWWHENOP PERL_ARGS_ASSERT_NEWXS
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWXS_DEFFILE
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWXS_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_NEWXS_LEN_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_NEW_CONSTANT PERL_ARGS_ASSERT_NEW_CTYPE
+syn keyword xsMacro PERL_ARGS_ASSERT_NEW_LOGOP PERL_ARGS_ASSERT_NEW_VERSION
+syn keyword xsMacro PERL_ARGS_ASSERT_NEW_WARNINGS_BITFIELD
+syn keyword xsMacro PERL_ARGS_ASSERT_NEXTARGV PERL_ARGS_ASSERT_NEXTCHAR
+syn keyword xsMacro PERL_ARGS_ASSERT_NEXT_SYMBOL PERL_ARGS_ASSERT_NINSTR
+syn keyword xsMacro PERL_ARGS_ASSERT_NOPERL_DIE PERL_ARGS_ASSERT_NOT_A_NUMBER
+syn keyword xsMacro PERL_ARGS_ASSERT_NOT_INCREMENTABLE
+syn keyword xsMacro PERL_ARGS_ASSERT_NO_BAREWORD_ALLOWED
+syn keyword xsMacro PERL_ARGS_ASSERT_NO_FH_ALLOWED PERL_ARGS_ASSERT_NO_OP
+syn keyword xsMacro PERL_ARGS_ASSERT_OOPSAV PERL_ARGS_ASSERT_OOPSHV
+syn keyword xsMacro PERL_ARGS_ASSERT_OPENN_CLEANUP
+syn keyword xsMacro PERL_ARGS_ASSERT_OPENN_SETUP PERL_ARGS_ASSERT_OPEN_SCRIPT
+syn keyword xsMacro PERL_ARGS_ASSERT_OPMETHOD_STASH
+syn keyword xsMacro PERL_ARGS_ASSERT_OPSLAB_FORCE_FREE
+syn keyword xsMacro PERL_ARGS_ASSERT_OPSLAB_FREE
+syn keyword xsMacro PERL_ARGS_ASSERT_OPSLAB_FREE_NOPAD
+syn keyword xsMacro PERL_ARGS_ASSERT_OP_CLEAR
+syn keyword xsMacro PERL_ARGS_ASSERT_OP_CONTEXTUALIZE
+syn keyword xsMacro PERL_ARGS_ASSERT_OP_DUMP PERL_ARGS_ASSERT_OP_INTEGERIZE
+syn keyword xsMacro PERL_ARGS_ASSERT_OP_LINKLIST PERL_ARGS_ASSERT_OP_NULL
+syn keyword xsMacro PERL_ARGS_ASSERT_OP_PARENT PERL_ARGS_ASSERT_OP_REFCNT_DEC
+syn keyword xsMacro PERL_ARGS_ASSERT_OP_RELOCATE_SV
+syn keyword xsMacro PERL_ARGS_ASSERT_OP_STD_INIT PERL_ARGS_ASSERT_PACKAGE
+syn keyword xsMacro PERL_ARGS_ASSERT_PACKAGE_VERSION
+syn keyword xsMacro PERL_ARGS_ASSERT_PACKLIST PERL_ARGS_ASSERT_PACK_CAT
+syn keyword xsMacro PERL_ARGS_ASSERT_PACK_REC PERL_ARGS_ASSERT_PADLIST_DUP
+syn keyword xsMacro PERL_ARGS_ASSERT_PADLIST_STORE
+syn keyword xsMacro PERL_ARGS_ASSERT_PADNAMELIST_DUP
+syn keyword xsMacro PERL_ARGS_ASSERT_PADNAMELIST_FETCH
+syn keyword xsMacro PERL_ARGS_ASSERT_PADNAMELIST_FREE
+syn keyword xsMacro PERL_ARGS_ASSERT_PADNAMELIST_STORE
+syn keyword xsMacro PERL_ARGS_ASSERT_PADNAME_DUP
+syn keyword xsMacro PERL_ARGS_ASSERT_PADNAME_FREE
+syn keyword xsMacro PERL_ARGS_ASSERT_PAD_ADD_ANON
+syn keyword xsMacro PERL_ARGS_ASSERT_PAD_ADD_NAME_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_PAD_ADD_NAME_PVN
+syn keyword xsMacro PERL_ARGS_ASSERT_PAD_ADD_NAME_SV
+syn keyword xsMacro PERL_ARGS_ASSERT_PAD_ADD_WEAKREF
+syn keyword xsMacro PERL_ARGS_ASSERT_PAD_ALLOC_NAME
+syn keyword xsMacro PERL_ARGS_ASSERT_PAD_CHECK_DUP
+syn keyword xsMacro PERL_ARGS_ASSERT_PAD_FINDLEX
+syn keyword xsMacro PERL_ARGS_ASSERT_PAD_FINDMY_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_PAD_FINDMY_PVN
+syn keyword xsMacro PERL_ARGS_ASSERT_PAD_FINDMY_SV
+syn keyword xsMacro PERL_ARGS_ASSERT_PAD_FIXUP_INNER_ANONS
+syn keyword xsMacro PERL_ARGS_ASSERT_PAD_PUSH PERL_ARGS_ASSERT_PAD_SETSV
+syn keyword xsMacro PERL_ARGS_ASSERT_PARSER_DUP PERL_ARGS_ASSERT_PARSER_FREE
+syn keyword xsMacro PERL_ARGS_ASSERT_PARSER_FREE_NEXTTOKE_OPS
+syn keyword xsMacro PERL_ARGS_ASSERT_PARSE_GV_STASH_NAME
+syn keyword xsMacro PERL_ARGS_ASSERT_PARSE_IDENT
+syn keyword xsMacro PERL_ARGS_ASSERT_PARSE_LPAREN_QUESTION_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_PARSE_UNICODE_OPTS
+syn keyword xsMacro PERL_ARGS_ASSERT_PATH_IS_SEARCHABLE
+syn keyword xsMacro PERL_ARGS_ASSERT_PERLIO_READ
+syn keyword xsMacro PERL_ARGS_ASSERT_PERLIO_UNREAD
+syn keyword xsMacro PERL_ARGS_ASSERT_PERLIO_WRITE
+syn keyword xsMacro PERL_ARGS_ASSERT_PERL_ALLOC_USING
+syn keyword xsMacro PERL_ARGS_ASSERT_PERL_CLONE
+syn keyword xsMacro PERL_ARGS_ASSERT_PERL_CLONE_USING
+syn keyword xsMacro PERL_ARGS_ASSERT_PERL_CONSTRUCT
+syn keyword xsMacro PERL_ARGS_ASSERT_PERL_DESTRUCT PERL_ARGS_ASSERT_PERL_FREE
+syn keyword xsMacro PERL_ARGS_ASSERT_PERL_PARSE PERL_ARGS_ASSERT_PERL_RUN
+syn keyword xsMacro PERL_ARGS_ASSERT_PMRUNTIME PERL_ARGS_ASSERT_PMTRANS
+syn keyword xsMacro PERL_ARGS_ASSERT_PM_DESCRIPTION
+syn keyword xsMacro PERL_ARGS_ASSERT_POPULATE_ANYOF_FROM_INVLIST
+syn keyword xsMacro PERL_ARGS_ASSERT_POPULATE_ISA PERL_ARGS_ASSERT_PREGCOMP
+syn keyword xsMacro PERL_ARGS_ASSERT_PREGEXEC PERL_ARGS_ASSERT_PREGFREE2
+syn keyword xsMacro PERL_ARGS_ASSERT_PRESCAN_VERSION
+syn keyword xsMacro PERL_ARGS_ASSERT_PRINTBUF
+syn keyword xsMacro PERL_ARGS_ASSERT_PRINTF_NOCONTEXT
+syn keyword xsMacro PERL_ARGS_ASSERT_PROCESS_SPECIAL_BLOCKS
+syn keyword xsMacro PERL_ARGS_ASSERT_PTR_TABLE_FETCH
+syn keyword xsMacro PERL_ARGS_ASSERT_PTR_TABLE_FIND
+syn keyword xsMacro PERL_ARGS_ASSERT_PTR_TABLE_SPLIT
+syn keyword xsMacro PERL_ARGS_ASSERT_PTR_TABLE_STORE
+syn keyword xsMacro PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS
+syn keyword xsMacro PERL_ARGS_ASSERT_PUT_CODE_POINT
+syn keyword xsMacro PERL_ARGS_ASSERT_PUT_RANGE PERL_ARGS_ASSERT_PV_DISPLAY
+syn keyword xsMacro PERL_ARGS_ASSERT_PV_ESCAPE PERL_ARGS_ASSERT_PV_PRETTY
+syn keyword xsMacro PERL_ARGS_ASSERT_PV_UNI_DISPLAY PERL_ARGS_ASSERT_QERROR
+syn keyword xsMacro PERL_ARGS_ASSERT_QSORTSVU
+syn keyword xsMacro PERL_ARGS_ASSERT_QUADMATH_FORMAT_NEEDED
+syn keyword xsMacro PERL_ARGS_ASSERT_QUADMATH_FORMAT_SINGLE
+syn keyword xsMacro PERL_ARGS_ASSERT_REENTRANT_RETRY
+syn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PVN
+syn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_SV
+syn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PVN
+syn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_SV
+syn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_VALUE
+syn keyword xsMacro PERL_ARGS_ASSERT_REFTO PERL_ARGS_ASSERT_REG
+syn keyword xsMacro PERL_ARGS_ASSERT_REG2LANODE PERL_ARGS_ASSERT_REGANODE
+syn keyword xsMacro PERL_ARGS_ASSERT_REGATOM PERL_ARGS_ASSERT_REGBRANCH
+syn keyword xsMacro PERL_ARGS_ASSERT_REGCLASS PERL_ARGS_ASSERT_REGCLASS_SWASH
+syn keyword xsMacro PERL_ARGS_ASSERT_REGCPPOP PERL_ARGS_ASSERT_REGCPPUSH
+syn keyword xsMacro PERL_ARGS_ASSERT_REGCURLY PERL_ARGS_ASSERT_REGDUMP
+syn keyword xsMacro PERL_ARGS_ASSERT_REGDUPE_INTERNAL
+syn keyword xsMacro PERL_ARGS_ASSERT_REGEXEC_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_REGFREE_INTERNAL
+syn keyword xsMacro PERL_ARGS_ASSERT_REGHOP3 PERL_ARGS_ASSERT_REGHOP4
+syn keyword xsMacro PERL_ARGS_ASSERT_REGHOPMAYBE3 PERL_ARGS_ASSERT_REGINCLASS
+syn keyword xsMacro PERL_ARGS_ASSERT_REGINSERT PERL_ARGS_ASSERT_REGMATCH
+syn keyword xsMacro PERL_ARGS_ASSERT_REGNODE_GUTS PERL_ARGS_ASSERT_REGPATWS
+syn keyword xsMacro PERL_ARGS_ASSERT_REGPIECE PERL_ARGS_ASSERT_REGPPOSIXCC
+syn keyword xsMacro PERL_ARGS_ASSERT_REGPROP PERL_ARGS_ASSERT_REGREPEAT
+syn keyword xsMacro PERL_ARGS_ASSERT_REGTAIL PERL_ARGS_ASSERT_REGTAIL_STUDY
+syn keyword xsMacro PERL_ARGS_ASSERT_REGTRY
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_CHECK_NAMED_BUFF_MATCHED
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_ALL
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_EXISTS
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_FETCH
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_FIRSTKEY
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_ITER
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_NEXTKEY
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_SCALAR
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_NODE
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_FETCH
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_LENGTH
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_STORE
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_QR_PACKAGE
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_RECODE
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_SCAN_NAME
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_SKIPCOMMENT
+syn keyword xsMacro PERL_ARGS_ASSERT_REG_TEMP_COPY PERL_ARGS_ASSERT_REPEATCPY
+syn keyword xsMacro PERL_ARGS_ASSERT_REPORT_REDEFINED_CV
+syn keyword xsMacro PERL_ARGS_ASSERT_REQUIRE_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_REQUIRE_TIE_MOD
+syn keyword xsMacro PERL_ARGS_ASSERT_RE_COMPILE PERL_ARGS_ASSERT_RE_CROAK2
+syn keyword xsMacro PERL_ARGS_ASSERT_RE_DUP_GUTS
+syn keyword xsMacro PERL_ARGS_ASSERT_RE_INTUIT_START
+syn keyword xsMacro PERL_ARGS_ASSERT_RE_INTUIT_STRING
+syn keyword xsMacro PERL_ARGS_ASSERT_RE_OP_COMPILE PERL_ARGS_ASSERT_RNINSTR
+syn keyword xsMacro PERL_ARGS_ASSERT_RSIGNAL_SAVE
+syn keyword xsMacro PERL_ARGS_ASSERT_RUN_USER_FILTER
+syn keyword xsMacro PERL_ARGS_ASSERT_RV2CV_OP_CV PERL_ARGS_ASSERT_RVPV_DUP
+syn keyword xsMacro PERL_ARGS_ASSERT_RXRES_FREE
+syn keyword xsMacro PERL_ARGS_ASSERT_RXRES_RESTORE
+syn keyword xsMacro PERL_ARGS_ASSERT_RXRES_SAVE PERL_ARGS_ASSERT_SAME_DIRENT
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVESHAREDSVPV PERL_ARGS_ASSERT_SAVESVPV
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_ADELETE
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_AELEM_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_ALIASED_SV
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_APTR PERL_ARGS_ASSERT_SAVE_ARY
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_BOOL PERL_ARGS_ASSERT_SAVE_CLEARSV
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_DELETE
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_DESTRUCTOR
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_GENERIC_PVREF
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_GENERIC_SVREF
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_GP PERL_ARGS_ASSERT_SAVE_HASH
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_HDELETE
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_HEK_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_HELEM_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_HPTR PERL_ARGS_ASSERT_SAVE_I16
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_I32 PERL_ARGS_ASSERT_SAVE_I8
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_INT PERL_ARGS_ASSERT_SAVE_ITEM
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_IV PERL_ARGS_ASSERT_SAVE_LINES
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_LIST PERL_ARGS_ASSERT_SAVE_LONG
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_MAGIC_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_MORTALIZESV
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_NOGV PERL_ARGS_ASSERT_SAVE_PPTR
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SCALAR
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SCALAR_AT
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SET_SVFLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SHARED_PVREF
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SPTR PERL_ARGS_ASSERT_SAVE_STRLEN
+syn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SVREF PERL_ARGS_ASSERT_SAVE_VPTR
+syn keyword xsMacro PERL_ARGS_ASSERT_SCALARBOOLEAN
+syn keyword xsMacro PERL_ARGS_ASSERT_SCALARVOID PERL_ARGS_ASSERT_SCAN_BIN
+syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_COMMIT PERL_ARGS_ASSERT_SCAN_CONST
+syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_FORMLINE
+syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_HEREDOC PERL_ARGS_ASSERT_SCAN_HEX
+syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_IDENT
+syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_INPUTSYMBOL
+syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_NUM PERL_ARGS_ASSERT_SCAN_OCT
+syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_PAT PERL_ARGS_ASSERT_SCAN_STR
+syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_SUBST PERL_ARGS_ASSERT_SCAN_TRANS
+syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_VERSION
+syn keyword xsMacro PERL_ARGS_ASSERT_SCAN_VSTRING PERL_ARGS_ASSERT_SCAN_WORD
+syn keyword xsMacro PERL_ARGS_ASSERT_SEARCH_CONST PERL_ARGS_ASSERT_SETDEFOUT
+syn keyword xsMacro PERL_ARGS_ASSERT_SET_ANYOF_ARG
+syn keyword xsMacro PERL_ARGS_ASSERT_SET_CONTEXT PERL_ARGS_ASSERT_SET_PADLIST
+syn keyword xsMacro PERL_ARGS_ASSERT_SHARE_HEK
+syn keyword xsMacro PERL_ARGS_ASSERT_SHARE_HEK_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SHOULD_WARN_NL
+syn keyword xsMacro PERL_ARGS_ASSERT_SIMPLIFY_SORT PERL_ARGS_ASSERT_SI_DUP
+syn keyword xsMacro PERL_ARGS_ASSERT_SKIPSPACE_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SLAB_FREE PERL_ARGS_ASSERT_SLAB_TO_RO
+syn keyword xsMacro PERL_ARGS_ASSERT_SLAB_TO_RW PERL_ARGS_ASSERT_SOFTREF2XV
+syn keyword xsMacro PERL_ARGS_ASSERT_SORTCV PERL_ARGS_ASSERT_SORTCV_STACKED
+syn keyword xsMacro PERL_ARGS_ASSERT_SORTCV_XSUB PERL_ARGS_ASSERT_SORTSV
+syn keyword xsMacro PERL_ARGS_ASSERT_SORTSV_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL
+syn keyword xsMacro PERL_ARGS_ASSERT_SSC_ADD_RANGE PERL_ARGS_ASSERT_SSC_AND
+syn keyword xsMacro PERL_ARGS_ASSERT_SSC_ANYTHING
+syn keyword xsMacro PERL_ARGS_ASSERT_SSC_CLEAR_LOCALE
+syn keyword xsMacro PERL_ARGS_ASSERT_SSC_CP_AND PERL_ARGS_ASSERT_SSC_FINALIZE
+syn keyword xsMacro PERL_ARGS_ASSERT_SSC_INIT
+syn keyword xsMacro PERL_ARGS_ASSERT_SSC_INTERSECTION
+syn keyword xsMacro PERL_ARGS_ASSERT_SSC_IS_ANYTHING
+syn keyword xsMacro PERL_ARGS_ASSERT_SSC_IS_CP_POSIXL_INIT
+syn keyword xsMacro PERL_ARGS_ASSERT_SSC_OR PERL_ARGS_ASSERT_SSC_UNION
+syn keyword xsMacro PERL_ARGS_ASSERT_SS_DUP PERL_ARGS_ASSERT_STACK_GROW
+syn keyword xsMacro PERL_ARGS_ASSERT_START_GLOB
+syn keyword xsMacro PERL_ARGS_ASSERT_STDIZE_LOCALE
+syn keyword xsMacro PERL_ARGS_ASSERT_STRIP_RETURN
+syn keyword xsMacro PERL_ARGS_ASSERT_STR_TO_VERSION
+syn keyword xsMacro PERL_ARGS_ASSERT_STUDY_CHUNK
+syn keyword xsMacro PERL_ARGS_ASSERT_SUB_CRUSH_DEPTH
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_2BOOL_FLAGS PERL_ARGS_ASSERT_SV_2CV
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_2IO PERL_ARGS_ASSERT_SV_2IUV_COMMON
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_2IV PERL_ARGS_ASSERT_SV_2IV_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_2NUM PERL_ARGS_ASSERT_SV_2NV_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_2PV PERL_ARGS_ASSERT_SV_2PVBYTE
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_2PVBYTE_NOLEN
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_2PVUTF8
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_2PVUTF8_NOLEN
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_2PV_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_2PV_NOLEN PERL_ARGS_ASSERT_SV_2UV
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_2UV_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_ADD_ARENA
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_ADD_BACKREF
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_BACKOFF PERL_ARGS_ASSERT_SV_BLESS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_BUF_TO_RO
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_BUF_TO_RW PERL_ARGS_ASSERT_SV_CATPV
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVF PERL_ARGS_ASSERT_SV_CATPVF_MG
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVF_MG_NOCONTEXT
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVF_NOCONTEXT
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVN
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVN_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVN_MG
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPV_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPV_MG PERL_ARGS_ASSERT_SV_CATSV
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATSV_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_CATSV_MG
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_CAT_DECODE PERL_ARGS_ASSERT_SV_CHOP
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_CLEAR
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_COLLXFRM_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_COPYPV
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_COPYPV_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_DEL_BACKREF
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_DERIVED_FROM
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_DERIVED_FROM_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_DERIVED_FROM_PVN
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_DERIVED_FROM_SV
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_DISPLAY PERL_ARGS_ASSERT_SV_DOES
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_DOES_PV PERL_ARGS_ASSERT_SV_DOES_PVN
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_DOES_SV PERL_ARGS_ASSERT_SV_DUMP
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_DUP PERL_ARGS_ASSERT_SV_DUP_COMMON
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_DUP_INC
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_DUP_INC_MULTIPLE
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_EXP_GROW
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_FORCE_NORMAL
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_FORCE_NORMAL_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_FREE2 PERL_ARGS_ASSERT_SV_GETS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_GET_BACKREFS PERL_ARGS_ASSERT_SV_GROW
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_INSERT
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_INSERT_FLAGS PERL_ARGS_ASSERT_SV_ISA
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_IV PERL_ARGS_ASSERT_SV_I_NCMP
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_KILL_BACKREFS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_LEN_UTF8_NOMG
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_MAGIC PERL_ARGS_ASSERT_SV_MAGICEXT
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_MAGICEXT_MGLOB
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_NCMP PERL_ARGS_ASSERT_SV_NV
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_OR_PV_POS_U2B
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_B2U
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_B2U_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_B2U_MIDWAY
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_U2B
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_U2B_CACHED
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_U2B_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_U2B_FORWARDS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_U2B_MIDWAY PERL_ARGS_ASSERT_SV_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_PVBYTE PERL_ARGS_ASSERT_SV_PVBYTEN
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_PVBYTEN_FORCE PERL_ARGS_ASSERT_SV_PVN
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_PVN_FORCE
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_PVN_FORCE_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_PVN_NOMG PERL_ARGS_ASSERT_SV_PVUTF8
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_PVUTF8N
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_PVUTF8N_FORCE
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_RECODE_TO_UTF8
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_REF PERL_ARGS_ASSERT_SV_REFTYPE
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_RELEASE_COW
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_REPLACE PERL_ARGS_ASSERT_SV_RESET
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_RVWEAKEN PERL_ARGS_ASSERT_SV_SETHEK
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETIV PERL_ARGS_ASSERT_SV_SETIV_MG
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETNV PERL_ARGS_ASSERT_SV_SETNV_MG
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPV PERL_ARGS_ASSERT_SV_SETPVF
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVF_MG
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVF_MG_NOCONTEXT
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVF_NOCONTEXT
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVIV
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVIV_MG PERL_ARGS_ASSERT_SV_SETPVN
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVN_MG
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPV_MG
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETREF_IV
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETREF_NV
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETREF_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETREF_PVN
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETREF_UV PERL_ARGS_ASSERT_SV_SETSV
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETSV_COW
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETSV_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETSV_MG PERL_ARGS_ASSERT_SV_SETUV
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_SETUV_MG PERL_ARGS_ASSERT_SV_TAINT
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_TAINTED PERL_ARGS_ASSERT_SV_UNGLOB
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_UNI_DISPLAY
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_UNMAGIC
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_UNMAGICEXT PERL_ARGS_ASSERT_SV_UNREF
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_UNREF_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_UNTAINT PERL_ARGS_ASSERT_SV_UPGRADE
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_USEPVN
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_USEPVN_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_USEPVN_MG
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_UTF8_DECODE
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_UTF8_ENCODE
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_UTF8_UPGRADE
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_UV PERL_ARGS_ASSERT_SV_VCATPVF
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_VCATPVFN
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_VCATPVFN_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_VCATPVF_MG
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_VSETPVF PERL_ARGS_ASSERT_SV_VSETPVFN
+syn keyword xsMacro PERL_ARGS_ASSERT_SV_VSETPVF_MG
+syn keyword xsMacro PERL_ARGS_ASSERT_SWALLOW_BOM PERL_ARGS_ASSERT_SWASH_FETCH
+syn keyword xsMacro PERL_ARGS_ASSERT_SWASH_INIT
+syn keyword xsMacro PERL_ARGS_ASSERT_SWASH_SCAN_LIST_LINE
+syn keyword xsMacro PERL_ARGS_ASSERT_SWATCH_GET PERL_ARGS_ASSERT_SYS_INIT
+syn keyword xsMacro PERL_ARGS_ASSERT_SYS_INIT3
+syn keyword xsMacro PERL_ARGS_ASSERT_SYS_INTERN_DUP
+syn keyword xsMacro PERL_ARGS_ASSERT_TAINT_PROPER
+syn keyword xsMacro PERL_ARGS_ASSERT_TIED_METHOD
+syn keyword xsMacro PERL_ARGS_ASSERT_TOKENIZE_USE PERL_ARGS_ASSERT_TOKEQ
+syn keyword xsMacro PERL_ARGS_ASSERT_TOKEREPORT
+syn keyword xsMacro PERL_ARGS_ASSERT_TOO_FEW_ARGUMENTS_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_TOO_MANY_ARGUMENTS_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_TO_BYTE_SUBSTR
+syn keyword xsMacro PERL_ARGS_ASSERT_TO_UNI_LOWER
+syn keyword xsMacro PERL_ARGS_ASSERT_TO_UNI_TITLE
+syn keyword xsMacro PERL_ARGS_ASSERT_TO_UNI_UPPER
+syn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_CASE
+syn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_FOLD
+syn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_LOWER
+syn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_SUBSTR
+syn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_TITLE
+syn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_UPPER
+syn keyword xsMacro PERL_ARGS_ASSERT_TRANSLATE_SUBSTR_OFFSETS
+syn keyword xsMacro PERL_ARGS_ASSERT_UIV_2BUF PERL_ARGS_ASSERT_UNLNK
+syn keyword xsMacro PERL_ARGS_ASSERT_UNPACKSTRING PERL_ARGS_ASSERT_UNPACK_REC
+syn keyword xsMacro PERL_ARGS_ASSERT_UNPACK_STR
+syn keyword xsMacro PERL_ARGS_ASSERT_UNREFERENCED_TO_TMP_STACK
+syn keyword xsMacro PERL_ARGS_ASSERT_UPG_VERSION
+syn keyword xsMacro PERL_ARGS_ASSERT_UTF16_TEXTFILTER
+syn keyword xsMacro PERL_ARGS_ASSERT_UTF16_TO_UTF8
+syn keyword xsMacro PERL_ARGS_ASSERT_UTF16_TO_UTF8_REVERSED
+syn keyword xsMacro PERL_ARGS_ASSERT_UTF8N_TO_UVCHR
+syn keyword xsMacro PERL_ARGS_ASSERT_UTF8N_TO_UVUNI
+syn keyword xsMacro PERL_ARGS_ASSERT_UTF8_DISTANCE PERL_ARGS_ASSERT_UTF8_HOP
+syn keyword xsMacro PERL_ARGS_ASSERT_UTF8_LENGTH
+syn keyword xsMacro PERL_ARGS_ASSERT_UTF8_MG_LEN_CACHE_UPDATE
+syn keyword xsMacro PERL_ARGS_ASSERT_UTF8_MG_POS_CACHE_UPDATE
+syn keyword xsMacro PERL_ARGS_ASSERT_UTF8_TO_BYTES
+syn keyword xsMacro PERL_ARGS_ASSERT_UTF8_TO_UVCHR
+syn keyword xsMacro PERL_ARGS_ASSERT_UTF8_TO_UVUNI
+syn keyword xsMacro PERL_ARGS_ASSERT_UTF8_TO_UVUNI_BUF
+syn keyword xsMacro PERL_ARGS_ASSERT_UTILIZE
+syn keyword xsMacro PERL_ARGS_ASSERT_UVOFFUNI_TO_UTF8_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_UVUNI_TO_UTF8
+syn keyword xsMacro PERL_ARGS_ASSERT_UVUNI_TO_UTF8_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT_VALIDATE_PROTO
+syn keyword xsMacro PERL_ARGS_ASSERT_VALIDATE_SUID
+syn keyword xsMacro PERL_ARGS_ASSERT_VALID_UTF8_TO_UVCHR
+syn keyword xsMacro PERL_ARGS_ASSERT_VALID_UTF8_TO_UVUNI
+syn keyword xsMacro PERL_ARGS_ASSERT_VCMP PERL_ARGS_ASSERT_VDEB
+syn keyword xsMacro PERL_ARGS_ASSERT_VFORM PERL_ARGS_ASSERT_VISIT
+syn keyword xsMacro PERL_ARGS_ASSERT_VIVIFY_DEFELEM
+syn keyword xsMacro PERL_ARGS_ASSERT_VIVIFY_REF PERL_ARGS_ASSERT_VLOAD_MODULE
+syn keyword xsMacro PERL_ARGS_ASSERT_VMESS PERL_ARGS_ASSERT_VNEWSVPVF
+syn keyword xsMacro PERL_ARGS_ASSERT_VNORMAL PERL_ARGS_ASSERT_VNUMIFY
+syn keyword xsMacro PERL_ARGS_ASSERT_VSTRINGIFY PERL_ARGS_ASSERT_VVERIFY
+syn keyword xsMacro PERL_ARGS_ASSERT_VWARN PERL_ARGS_ASSERT_VWARNER
+syn keyword xsMacro PERL_ARGS_ASSERT_WAIT4PID PERL_ARGS_ASSERT_WARN
+syn keyword xsMacro PERL_ARGS_ASSERT_WARNER PERL_ARGS_ASSERT_WARNER_NOCONTEXT
+syn keyword xsMacro PERL_ARGS_ASSERT_WARN_NOCONTEXT PERL_ARGS_ASSERT_WARN_SV
+syn keyword xsMacro PERL_ARGS_ASSERT_WATCH PERL_ARGS_ASSERT_WHICHSIG_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_WHICHSIG_PVN
+syn keyword xsMacro PERL_ARGS_ASSERT_WHICHSIG_SV
+syn keyword xsMacro PERL_ARGS_ASSERT_WIN32_CROAK_NOT_IMPLEMENTED
+syn keyword xsMacro PERL_ARGS_ASSERT_WITH_QUEUED_ERRORS
+syn keyword xsMacro PERL_ARGS_ASSERT_WRAP_OP_CHECKER
+syn keyword xsMacro PERL_ARGS_ASSERT_WRITE_TO_STDERR
+syn keyword xsMacro PERL_ARGS_ASSERT_XS_HANDSHAKE
+syn keyword xsMacro PERL_ARGS_ASSERT_XS_VERSION_BOOTCHECK
+syn keyword xsMacro PERL_ARGS_ASSERT_YYERROR PERL_ARGS_ASSERT_YYERROR_PV
+syn keyword xsMacro PERL_ARGS_ASSERT_YYERROR_PVN PERL_ARGS_ASSERT_YYWARN
+syn keyword xsMacro PERL_ARGS_ASSERT__APPEND_RANGE_TO_INVLIST
+syn keyword xsMacro PERL_ARGS_ASSERT__CORE_SWASH_INIT
+syn keyword xsMacro PERL_ARGS_ASSERT__GET_REGCLASS_NONBITMAP_DATA
+syn keyword xsMacro PERL_ARGS_ASSERT__GET_SWASH_INVLIST
+syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_ARRAY_INIT
+syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_CONTAINS_CP
+syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_CONTENTS
+syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_DUMP
+syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_INTERSECTION_MAYBE_COMPLEMENT_2ND
+syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_INVERT
+syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_LEN
+syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_POPULATE_SWATCH
+syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_SEARCH
+syn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_UNION_MAYBE_COMPLEMENT_2ND
+syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_CHAR_SLOW
+syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_FOO
+syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_IDCONT
+syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_IDSTART
+syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_MARK
+syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_PERL_IDCONT
+syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_PERL_IDSTART
+syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_XIDCONT
+syn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_XIDSTART
+syn keyword xsMacro PERL_ARGS_ASSERT__MAKE_EXACTF_INVLIST
+syn keyword xsMacro PERL_ARGS_ASSERT__NEW_INVLIST_C_ARRAY
+syn keyword xsMacro PERL_ARGS_ASSERT__SETUP_CANNED_INVLIST
+syn keyword xsMacro PERL_ARGS_ASSERT__SWASH_INVERSION_HASH
+syn keyword xsMacro PERL_ARGS_ASSERT__SWASH_TO_INVLIST
+syn keyword xsMacro PERL_ARGS_ASSERT__TO_FOLD_LATIN1
+syn keyword xsMacro PERL_ARGS_ASSERT__TO_UNI_FOLD_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT__TO_UPPER_TITLE_LATIN1
+syn keyword xsMacro PERL_ARGS_ASSERT__TO_UTF8_FOLD_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT__TO_UTF8_LOWER_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT__TO_UTF8_TITLE_FLAGS
+syn keyword xsMacro PERL_ARGS_ASSERT__TO_UTF8_UPPER_FLAGS PERL_ASYNC_CHECK
+syn keyword xsMacro PERL_BITFIELD16 PERL_BITFIELD32 PERL_BITFIELD8
+syn keyword xsMacro PERL_CALLCONV PERL_CALLCONV_NO_RET PERL_CHECK_INITED
+syn keyword xsMacro PERL_CKDEF PERL_DEB PERL_DEB2 PERL_DEBUG PERL_DEBUG_PAD
+syn keyword xsMacro PERL_DEBUG_PAD_ZERO PERL_DECIMAL_VERSION
+syn keyword xsMacro PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION
+syn keyword xsMacro PERL_DONT_CREATE_GVSV PERL_DRAND48_QUAD
+syn keyword xsMacro PERL_ENABLE_EXPERIMENTAL_REGEX_OPTIMISATIONS
+syn keyword xsMacro PERL_ENABLE_EXTENDED_TRIE_OPTIMISATION
+syn keyword xsMacro PERL_ENABLE_POSITIVE_ASSERTION_STUDY
+syn keyword xsMacro PERL_ENABLE_TRIE_OPTIMISATION PERL_EXIT_ABORT
+syn keyword xsMacro PERL_EXIT_DESTRUCT_END PERL_EXIT_EXPECTED PERL_EXIT_WARN
+syn keyword xsMacro PERL_EXPORT_C PERL_FILE_IS_ABSOLUTE PERL_FILTER_EXISTS
+syn keyword xsMacro PERL_FLUSHALL_FOR_CHILD PERL_FPU_INIT PERL_FPU_POST_EXEC
+syn keyword xsMacro PERL_FPU_PRE_EXEC PERL_FS_VERSION PERL_FS_VER_FMT
+syn keyword xsMacro PERL_GCC_BRACE_GROUPS_FORBIDDEN PERL_GET_CONTEXT
+syn keyword xsMacro PERL_GET_INTERP PERL_GET_THX PERL_GET_VARS
+syn keyword xsMacro PERL_GIT_UNPUSHED_COMMITS PERL_GLOBAL_STRUCT
+syn keyword xsMacro PERL_GPROF_MONCONTROL PERL_HASH PERL_HASH_DEFAULT_HvMAX
+syn keyword xsMacro PERL_HASH_FUNC PERL_HASH_FUNC_ONE_AT_A_TIME_HARD
+syn keyword xsMacro PERL_HASH_INTERNAL PERL_HASH_ITER_BUCKET
+syn keyword xsMacro PERL_HASH_RANDOMIZE_KEYS PERL_HASH_SEED
+syn keyword xsMacro PERL_HASH_SEED_BYTES PERL_HASH_WITH_SEED
+syn keyword xsMacro PERL_HV_ALLOC_AUX_SIZE PERL_HV_ARRAY_ALLOC_BYTES
+syn keyword xsMacro PERL_IMPLICIT_CONTEXT PERL_INTERPRETER_SIZE_UPTO_MEMBER
+syn keyword xsMacro PERL_INT_MAX PERL_INT_MIN PERL_LOADMOD_DENY
+syn keyword xsMacro PERL_LOADMOD_IMPORT_OPS PERL_LOADMOD_NOIMPORT
+syn keyword xsMacro PERL_LONG_MAX PERL_LONG_MIN PERL_MALLOC_WRAP
+syn keyword xsMacro PERL_MEMORY_DEBUG_HEADER_SIZE PERL_MG_UFUNC
+syn keyword xsMacro PERL_MY_SNPRINTF_GUARDED PERL_MY_SNPRINTF_POST_GUARD
+syn keyword xsMacro PERL_MY_VSNPRINTF_GUARDED PERL_MY_VSNPRINTF_POST_GUARD
+syn keyword xsMacro PERL_NEW_COPY_ON_WRITE PERL_NO_DEV_RANDOM
+syn keyword xsMacro PERL_OBJECT_THIS PERL_OBJECT_THIS_ PERL_PADNAME_MINIMAL
+syn keyword xsMacro PERL_PADSEQ_INTRO PERL_PATCHNUM PERL_POISON_EXPR
+syn keyword xsMacro PERL_PPADDR_INITED PERL_PPDEF PERL_PRESERVE_IVUV
+syn keyword xsMacro PERL_PRIeldbl PERL_PRIfldbl PERL_PRIgldbl
+syn keyword xsMacro PERL_PV_ESCAPE_ALL PERL_PV_ESCAPE_DWIM
+syn keyword xsMacro PERL_PV_ESCAPE_FIRSTCHAR PERL_PV_ESCAPE_NOBACKSLASH
+syn keyword xsMacro PERL_PV_ESCAPE_NOCLEAR PERL_PV_ESCAPE_NONASCII
+syn keyword xsMacro PERL_PV_ESCAPE_QUOTE PERL_PV_ESCAPE_RE PERL_PV_ESCAPE_UNI
+syn keyword xsMacro PERL_PV_ESCAPE_UNI_DETECT PERL_PV_PRETTY_DUMP
+syn keyword xsMacro PERL_PV_PRETTY_ELLIPSES PERL_PV_PRETTY_EXACTSIZE
+syn keyword xsMacro PERL_PV_PRETTY_LTGT PERL_PV_PRETTY_NOCLEAR
+syn keyword xsMacro PERL_PV_PRETTY_QUOTE PERL_PV_PRETTY_REGPROP PERL_QUAD_MAX
+syn keyword xsMacro PERL_QUAD_MIN PERL_REENTR_API PERL_REGMATCH_SLAB_SLOTS
+syn keyword xsMacro PERL_RELOCATABLE_INC PERL_REVISION PERL_SAWAMPERSAND
+syn keyword xsMacro PERL_SCAN_ALLOW_UNDERSCORES PERL_SCAN_DISALLOW_PREFIX
+syn keyword xsMacro PERL_SCAN_GREATER_THAN_UV_MAX PERL_SCAN_SILENT_ILLDIGIT
+syn keyword xsMacro PERL_SCAN_SILENT_NON_PORTABLE PERL_SCAN_TRAILING
+syn keyword xsMacro PERL_SCNfldbl PERL_SCRIPT_MODE PERL_SEEN_HV_FUNC_H
+syn keyword xsMacro PERL_SET_CONTEXT PERL_SET_INTERP PERL_SET_PHASE
+syn keyword xsMacro PERL_SET_THX PERL_SHORT_MAX PERL_SHORT_MIN
+syn keyword xsMacro PERL_SIGNALS_UNSAFE_FLAG PERL_SNPRINTF_CHECK
+syn keyword xsMacro PERL_STACK_OVERFLOW_CHECK PERL_STATIC_INLINE
+syn keyword xsMacro PERL_STATIC_INLINE_NO_RET PERL_STATIC_NO_RET
+syn keyword xsMacro PERL_STRLEN_EXPAND_SHIFT PERL_STRLEN_ROUNDUP
+syn keyword xsMacro PERL_STRLEN_ROUNDUP_QUANTUM PERL_SUBVERSION
+syn keyword xsMacro PERL_SUB_DEPTH_WARN PERL_SYS_FPU_INIT PERL_SYS_INIT
+syn keyword xsMacro PERL_SYS_INIT3 PERL_SYS_INIT3_BODY PERL_SYS_INIT_BODY
+syn keyword xsMacro PERL_SYS_TERM PERL_SYS_TERM_BODY PERL_TARGETARCH
+syn keyword xsMacro PERL_UCHAR_MAX PERL_UCHAR_MIN PERL_UINT_MAX PERL_UINT_MIN
+syn keyword xsMacro PERL_ULONG_MAX PERL_ULONG_MIN PERL_UNICODE_ALL_FLAGS
+syn keyword xsMacro PERL_UNICODE_ARGV PERL_UNICODE_ARGV_FLAG
+syn keyword xsMacro PERL_UNICODE_DEFAULT_FLAGS PERL_UNICODE_IN
+syn keyword xsMacro PERL_UNICODE_INOUT PERL_UNICODE_INOUT_FLAG
+syn keyword xsMacro PERL_UNICODE_IN_FLAG PERL_UNICODE_LOCALE
+syn keyword xsMacro PERL_UNICODE_LOCALE_FLAG PERL_UNICODE_MAX
+syn keyword xsMacro PERL_UNICODE_OUT PERL_UNICODE_OUT_FLAG PERL_UNICODE_STD
+syn keyword xsMacro PERL_UNICODE_STDERR PERL_UNICODE_STDERR_FLAG
+syn keyword xsMacro PERL_UNICODE_STDIN PERL_UNICODE_STDIN_FLAG
+syn keyword xsMacro PERL_UNICODE_STDOUT PERL_UNICODE_STDOUT_FLAG
+syn keyword xsMacro PERL_UNICODE_STD_FLAG PERL_UNICODE_UTF8CACHEASSERT
+syn keyword xsMacro PERL_UNICODE_UTF8CACHEASSERT_FLAG
+syn keyword xsMacro PERL_UNICODE_WIDESYSCALLS PERL_UNICODE_WIDESYSCALLS_FLAG
+syn keyword xsMacro PERL_UNUSED_ARG PERL_UNUSED_CONTEXT PERL_UNUSED_DECL
+syn keyword xsMacro PERL_UNUSED_RESULT PERL_UNUSED_VAR PERL_UQUAD_MAX
+syn keyword xsMacro PERL_UQUAD_MIN PERL_USES_PL_PIDSTATUS
+syn keyword xsMacro PERL_USE_GCC_BRACE_GROUPS PERL_USHORT_MAX PERL_USHORT_MIN
+syn keyword xsMacro PERL_VERSION PERL_VERSION_DECIMAL PERL_VERSION_GE
+syn keyword xsMacro PERL_VERSION_LT PERL_VERSION_STRING
+syn keyword xsMacro PERL_WAIT_FOR_CHILDREN PERL_WARNHOOK_FATAL
+syn keyword xsMacro PERL_WRITE_MSG_TO_CONSOLE PERL_XS_EXPORT_C
+syn keyword xsMacro PHASE_CHANGE_PROBE PHOSTNAME PIPESOCK_MODE PIPE_OPEN_MODE
+syn keyword xsMacro PLUGEXPR PLUGSTMT PLUS PL_AboveLatin1 PL_Argv PL_Cmd
+syn keyword xsMacro PL_DBcontrol PL_DBcv PL_DBgv PL_DBline PL_DBsignal
+syn keyword xsMacro PL_DBsignal_iv PL_DBsingle PL_DBsingle_iv PL_DBsub
+syn keyword xsMacro PL_DBtrace PL_DBtrace_iv PL_Dir PL_Env PL_GCB_invlist
+syn keyword xsMacro PL_Gappctx PL_Gcheck PL_Gcheck_mutex PL_Gcsighandlerp
+syn keyword xsMacro PL_Gcurinterp PL_Gdo_undump PL_Gdollarzero_mutex
+syn keyword xsMacro PL_Gfold_locale PL_Ghash_seed PL_Ghash_seed_set
+syn keyword xsMacro PL_Ghints_mutex PL_Gkeyword_plugin PL_Gmalloc_mutex
+syn keyword xsMacro PL_Gmmap_page_size PL_Gmy_ctx_mutex PL_Gmy_cxt_index
+syn keyword xsMacro PL_Gop_mutex PL_Gop_seq PL_Gop_sequence
+syn keyword xsMacro PL_Gperlio_debug_fd PL_Gperlio_fd_refcnt
+syn keyword xsMacro PL_Gperlio_fd_refcnt_size PL_Gperlio_mutex PL_Gppaddr
+syn keyword xsMacro PL_Gsh_path PL_Gsig_defaulting PL_Gsig_handlers_initted
+syn keyword xsMacro PL_Gsig_ignoring PL_Gsig_trapped PL_Gsigfpe_saved
+syn keyword xsMacro PL_Gsv_placeholder PL_Gthr_key PL_Gtimesbase
+syn keyword xsMacro PL_Guse_safe_putenv PL_Gveto_cleanup PL_Gwatch_pvx
+syn keyword xsMacro PL_HASH_RAND_BITS_ENABLED PL_HasMultiCharFold PL_InBitmap
+syn keyword xsMacro PL_LIO PL_Latin1 PL_Mem PL_MemParse PL_MemShared
+syn keyword xsMacro PL_NonL1NonFinalFold PL_Posix_ptrs PL_Proc
+syn keyword xsMacro PL_RANDOM_STATE_TYPE PL_SB_invlist PL_Sock PL_StdIO PL_Sv
+syn keyword xsMacro PL_UpperLatin1 PL_WB_invlist PL_XPosix_ptrs PL_Xpv
+syn keyword xsMacro PL_amagic_generation PL_an PL_appctx PL_argvgv
+syn keyword xsMacro PL_argvout_stack PL_argvoutgv PL_basetime PL_beginav
+syn keyword xsMacro PL_beginav_save PL_blockhooks PL_body_arenas
+syn keyword xsMacro PL_body_roots PL_bodytarget PL_breakable_sub_gen
+syn keyword xsMacro PL_check_mutex PL_checkav PL_checkav_save PL_chopset
+syn keyword xsMacro PL_clocktick PL_collation_ix PL_collation_name
+syn keyword xsMacro PL_collation_standard PL_collxfrm_base PL_collxfrm_mult
+syn keyword xsMacro PL_colors PL_colorset PL_compcv PL_compiling PL_comppad
+syn keyword xsMacro PL_comppad_name PL_comppad_name_fill
+syn keyword xsMacro PL_comppad_name_floor PL_constpadix PL_cop_seqmax
+syn keyword xsMacro PL_cryptseen PL_cshlen PL_csighandlerp PL_curcop
+syn keyword xsMacro PL_curcopdb PL_curinterp PL_curpad PL_curpm PL_curstack
+syn keyword xsMacro PL_curstackinfo PL_curstash PL_curstname
+syn keyword xsMacro PL_custom_op_descs PL_custom_op_names PL_custom_ops
+syn keyword xsMacro PL_cv_has_eval PL_dbargs PL_debstash PL_debug
+syn keyword xsMacro PL_debug_pad PL_def_layerlist PL_defgv PL_defoutgv
+syn keyword xsMacro PL_defstash PL_delaymagic PL_delaymagic_egid
+syn keyword xsMacro PL_delaymagic_euid PL_delaymagic_gid PL_delaymagic_uid
+syn keyword xsMacro PL_destroyhook PL_diehook PL_dirty PL_do_undump
+syn keyword xsMacro PL_dollarzero_mutex PL_doswitches PL_dowarn PL_dumper_fd
+syn keyword xsMacro PL_dumpindent PL_e_script PL_efloatbuf PL_efloatsize
+syn keyword xsMacro PL_encoding PL_endav PL_envgv PL_errgv PL_errors
+syn keyword xsMacro PL_eval_root PL_eval_start PL_evalseq PL_exit_flags
+syn keyword xsMacro PL_exitlist PL_exitlistlen PL_fdpid PL_filemode
+syn keyword xsMacro PL_firstgv PL_forkprocess PL_formtarget PL_generation
+syn keyword xsMacro PL_gensym PL_globalstash PL_globhook PL_hash_rand_bits
+syn keyword xsMacro PL_hash_rand_bits_enabled PL_hash_seed PL_hash_seed_set
+syn keyword xsMacro PL_hintgv PL_hints PL_hints_mutex PL_hv_fetch_ent_mh
+syn keyword xsMacro PL_in_clean_all PL_in_clean_objs PL_in_eval
+syn keyword xsMacro PL_in_load_module PL_in_utf8_CTYPE_locale PL_incgv
+syn keyword xsMacro PL_initav PL_inplace PL_isarev PL_keyword_plugin
+syn keyword xsMacro PL_known_layers PL_last_in_gv PL_last_swash_hv
+syn keyword xsMacro PL_last_swash_key PL_last_swash_klen PL_last_swash_slen
+syn keyword xsMacro PL_last_swash_tmps PL_lastfd PL_lastgotoprobe
+syn keyword xsMacro PL_laststatval PL_laststype PL_lex_encoding PL_localizing
+syn keyword xsMacro PL_localpatches PL_lockhook PL_main_cv PL_main_root
+syn keyword xsMacro PL_main_start PL_mainstack PL_malloc_mutex PL_markstack
+syn keyword xsMacro PL_markstack_max PL_markstack_ptr PL_max_intro_pending
+syn keyword xsMacro PL_maxo PL_maxsysfd PL_memory_debug_header PL_mess_sv
+syn keyword xsMacro PL_min_intro_pending PL_minus_E PL_minus_F PL_minus_a
+syn keyword xsMacro PL_minus_c PL_minus_l PL_minus_n PL_minus_p
+syn keyword xsMacro PL_mmap_page_size PL_modcount PL_modglobal
+syn keyword xsMacro PL_multideref_pc PL_my_ctx_mutex PL_my_cxt_index
+syn keyword xsMacro PL_my_cxt_keys PL_my_cxt_list PL_my_cxt_size PL_nomemok
+syn keyword xsMacro PL_numeric_local PL_numeric_name PL_numeric_radix_sv
+syn keyword xsMacro PL_numeric_standard PL_ofsgv PL_oldname PL_op
+syn keyword xsMacro PL_op_exec_cnt PL_op_mask PL_op_mutex PL_op_seq
+syn keyword xsMacro PL_op_sequence PL_opfreehook PL_origalen PL_origargc
+syn keyword xsMacro PL_origargv PL_origenviron PL_origfilename PL_ors_sv
+syn keyword xsMacro PL_osname PL_pad_reset_pending PL_padix PL_padix_floor
+syn keyword xsMacro PL_padlist_generation PL_padname_const PL_padname_undef
+syn keyword xsMacro PL_parser PL_patchlevel PL_peepp PL_perl_destruct_level
+syn keyword xsMacro PL_perldb PL_perlio PL_perlio_debug_fd
+syn keyword xsMacro PL_perlio_fd_refcnt PL_perlio_fd_refcnt_size
+syn keyword xsMacro PL_perlio_mutex PL_phase PL_pidstatus PL_preambleav
+syn keyword xsMacro PL_profiledata PL_psig_name PL_psig_pend PL_psig_ptr
+syn keyword xsMacro PL_ptr_table PL_random_state PL_reentrant_buffer
+syn keyword xsMacro PL_reentrant_retint PL_reg_curpm PL_regex_pad
+syn keyword xsMacro PL_regex_padav PL_registered_mros PL_regmatch_slab
+syn keyword xsMacro PL_regmatch_state PL_replgv PL_restartjmpenv PL_restartop
+syn keyword xsMacro PL_rpeepp PL_rs PL_runops PL_savebegin PL_savestack
+syn keyword xsMacro PL_savestack_ix PL_savestack_max PL_sawalias
+syn keyword xsMacro PL_sawampersand PL_scopestack PL_scopestack_ix
+syn keyword xsMacro PL_scopestack_max PL_scopestack_name PL_secondgv
+syn keyword xsMacro PL_sharehook PL_sig_defaulting PL_sig_handlers_initted
+syn keyword xsMacro PL_sig_ignoring PL_sig_pending PL_sig_trapped
+syn keyword xsMacro PL_sigfpe_saved PL_sighandlerp PL_signalhook PL_signals
+syn keyword xsMacro PL_sort_RealCmp PL_sortcop PL_sortstash PL_splitstr
+syn keyword xsMacro PL_srand_called PL_stack_base PL_stack_max PL_stack_sp
+syn keyword xsMacro PL_start_env PL_stashcache PL_stashpad PL_stashpadix
+syn keyword xsMacro PL_stashpadmax PL_statbuf PL_statcache PL_statgv
+syn keyword xsMacro PL_statname PL_statusvalue PL_statusvalue_posix
+syn keyword xsMacro PL_statusvalue_vms PL_stderrgv PL_stdingv PL_strtab
+syn keyword xsMacro PL_sub_generation PL_subline PL_subname PL_sv_arenaroot
+syn keyword xsMacro PL_sv_consts PL_sv_count PL_sv_no PL_sv_placeholder
+syn keyword xsMacro PL_sv_root PL_sv_serial PL_sv_undef PL_sv_yes
+syn keyword xsMacro PL_sys_intern PL_taint_warn PL_tainted PL_tainting
+syn keyword xsMacro PL_thr_key PL_threadhook PL_timesbase PL_timesbuf
+syn keyword xsMacro PL_tmps_floor PL_tmps_ix PL_tmps_max PL_tmps_stack
+syn keyword xsMacro PL_top_env PL_toptarget PL_unicode PL_unitcheckav
+syn keyword xsMacro PL_unitcheckav_save PL_unlockhook PL_unsafe
+syn keyword xsMacro PL_use_safe_putenv PL_utf8_charname_begin
+syn keyword xsMacro PL_utf8_charname_continue PL_utf8_foldable
+syn keyword xsMacro PL_utf8_foldclosures PL_utf8_idcont PL_utf8_idstart
+syn keyword xsMacro PL_utf8_mark PL_utf8_perl_idcont PL_utf8_perl_idstart
+syn keyword xsMacro PL_utf8_swash_ptrs PL_utf8_tofold PL_utf8_tolower
+syn keyword xsMacro PL_utf8_totitle PL_utf8_toupper PL_utf8_xidcont
+syn keyword xsMacro PL_utf8_xidstart PL_utf8cache PL_utf8locale
+syn keyword xsMacro PL_veto_cleanup PL_vtbl_arylen PL_vtbl_arylen_p
+syn keyword xsMacro PL_vtbl_backref PL_vtbl_bm PL_vtbl_checkcall
+syn keyword xsMacro PL_vtbl_collxfrm PL_vtbl_dbline PL_vtbl_debugvar
+syn keyword xsMacro PL_vtbl_defelem PL_vtbl_env PL_vtbl_envelem PL_vtbl_fm
+syn keyword xsMacro PL_vtbl_hints PL_vtbl_hintselem PL_vtbl_isa
+syn keyword xsMacro PL_vtbl_isaelem PL_vtbl_lvref PL_vtbl_mglob PL_vtbl_nkeys
+syn keyword xsMacro PL_vtbl_ovrld PL_vtbl_pack PL_vtbl_packelem PL_vtbl_pos
+syn keyword xsMacro PL_vtbl_regdata PL_vtbl_regdatum PL_vtbl_regexp
+syn keyword xsMacro PL_vtbl_sigelem PL_vtbl_substr PL_vtbl_sv PL_vtbl_taint
+syn keyword xsMacro PL_vtbl_utf8 PL_vtbl_uvar PL_vtbl_vec PL_warn_locale
+syn keyword xsMacro PL_warnhook PL_watch_pvx PL_watchaddr PL_watchok
+syn keyword xsMacro PL_xsubfilename PMFUNC PM_GETRE PM_SETRE PMf_BASE_SHIFT
+syn keyword xsMacro PMf_CHARSET PMf_CODELIST_PRIVATE PMf_CONST PMf_CONTINUE
+syn keyword xsMacro PMf_EVAL PMf_EXTENDED PMf_EXTENDED_MORE PMf_FOLD
+syn keyword xsMacro PMf_GLOBAL PMf_HAS_CV PMf_IS_QR PMf_KEEP PMf_KEEPCOPY
+syn keyword xsMacro PMf_MULTILINE PMf_NOCAPTURE PMf_NONDESTRUCT PMf_ONCE
+syn keyword xsMacro PMf_RETAINT PMf_SINGLELINE PMf_SPLIT PMf_STRICT PMf_USED
+syn keyword xsMacro PMf_USE_RE_EVAL PNf PNfARG POPBLOCK POPEVAL POPFORMAT
+syn keyword xsMacro POPLOOP POPMARK POPSTACK POPSTACK_TO POPSUB POPSUBST
+syn keyword xsMacro POP_MULTICALL POP_SAVEARRAY POPi POPl POPn POPp POPpbytex
+syn keyword xsMacro POPpconstx POPpx POPs POPu POPul POSIXA POSIXD POSIXL
+syn keyword xsMacro POSIXU POSIX_CC_COUNT POSIX_SWASH_COUNT POSTDEC POSTINC
+syn keyword xsMacro POSTJOIN POWOP PP PREC_LOW PREDEC PREGf_ANCH
+syn keyword xsMacro PREGf_ANCH_GPOS PREGf_ANCH_MBOL PREGf_ANCH_SBOL
+syn keyword xsMacro PREGf_CANY_SEEN PREGf_CUTGROUP_SEEN PREGf_GPOS_FLOAT
+syn keyword xsMacro PREGf_GPOS_SEEN PREGf_IMPLICIT PREGf_NAUGHTY PREGf_NOSCAN
+syn keyword xsMacro PREGf_SKIP PREGf_USE_RE_EVAL PREGf_VERBARG_SEEN PREINC
+syn keyword xsMacro PRESCAN_VERSION PREVOPER PRINTF_FORMAT_NULL_OK PRIVATEREF
+syn keyword xsMacro PRIVLIB PRIVLIB_EXP PRIVSHIFT PROCSELFEXE_PATH PRUNE
+syn keyword xsMacro PSEUDO PTHREAD_ATFORK PTHREAD_ATTR_SETDETACHSTATE
+syn keyword xsMacro PTHREAD_CREATE PTHREAD_CREATE_JOINABLE
+syn keyword xsMacro PTHREAD_GETSPECIFIC PTHREAD_GETSPECIFIC_INT PTR2IV PTR2NV
+syn keyword xsMacro PTR2UV PTR2nat PTR2ul PTRSIZE PTRV PUSHBLOCK PUSHEVAL
+syn keyword xsMacro PUSHFORMAT PUSHGIVEN PUSHLOOP_FOR PUSHLOOP_PLAIN PUSHMARK
+syn keyword xsMacro PUSHSTACK PUSHSTACKi PUSHSUB PUSHSUBST PUSHSUB_BASE
+syn keyword xsMacro PUSHSUB_DB PUSHSUB_GET_LVALUE_MASK PUSHTARG PUSHWHEN
+syn keyword xsMacro PUSH_MULTICALL PUSH_MULTICALL_FLAGS PUSHi PUSHmortal
+syn keyword xsMacro PUSHn PUSHp PUSHs PUSHu PUTBACK PWGECOS PWPASSWD PadARRAY
+syn keyword xsMacro PadMAX PadlistARRAY PadlistMAX PadlistNAMES
+syn keyword xsMacro PadlistNAMESARRAY PadlistNAMESMAX PadlistREFCNT
+syn keyword xsMacro PadnameFLAGS PadnameIsOUR PadnameIsSTATE
+syn keyword xsMacro PadnameIsSTATE_on PadnameLEN PadnameLVALUE
+syn keyword xsMacro PadnameLVALUE_on PadnameOURSTASH PadnameOURSTASH_set
+syn keyword xsMacro PadnameOUTER PadnamePROTOCV PadnamePV PadnameREFCNT
+syn keyword xsMacro PadnameREFCNT_dec PadnameSV PadnameTYPE PadnameTYPE_set
+syn keyword xsMacro PadnameUTF8 PadnamelistARRAY PadnamelistMAX
+syn keyword xsMacro PadnamelistMAXNAMED PadnamelistREFCNT
+syn keyword xsMacro PadnamelistREFCNT_dec Pause PeRl_CaTiFy PeRl_INT64_C
+syn keyword xsMacro PeRl_StGiFy PeRl_UINT64_C PerlDir_chdir PerlDir_close
+syn keyword xsMacro PerlDir_mapA PerlDir_mapW PerlDir_mkdir PerlDir_open
+syn keyword xsMacro PerlDir_read PerlDir_rewind PerlDir_rmdir PerlDir_seek
+syn keyword xsMacro PerlDir_tell PerlEnv_ENVgetenv PerlEnv_ENVgetenv_len
+syn keyword xsMacro PerlEnv_clearenv PerlEnv_free_childdir
+syn keyword xsMacro PerlEnv_free_childenv PerlEnv_get_child_IO
+syn keyword xsMacro PerlEnv_get_childdir PerlEnv_get_childenv PerlEnv_getenv
+syn keyword xsMacro PerlEnv_getenv_len PerlEnv_lib_path PerlEnv_os_id
+syn keyword xsMacro PerlEnv_putenv PerlEnv_sitelib_path PerlEnv_uname
+syn keyword xsMacro PerlEnv_vendorlib_path PerlIOArg PerlIOBase PerlIONext
+syn keyword xsMacro PerlIOSelf PerlIOValid PerlIO_canset_cnt
+syn keyword xsMacro PerlIO_exportFILE PerlIO_fast_gets PerlIO_fdopen
+syn keyword xsMacro PerlIO_findFILE PerlIO_getc PerlIO_getname
+syn keyword xsMacro PerlIO_has_base PerlIO_has_cntptr PerlIO_importFILE
+syn keyword xsMacro PerlIO_isutf8 PerlIO_open PerlIO_printf PerlIO_putc
+syn keyword xsMacro PerlIO_puts PerlIO_releaseFILE PerlIO_reopen
+syn keyword xsMacro PerlIO_rewind PerlIO_stdoutf PerlIO_tmpfile PerlIO_ungetc
+syn keyword xsMacro PerlIO_vprintf PerlLIO_access PerlLIO_chmod PerlLIO_chown
+syn keyword xsMacro PerlLIO_chsize PerlLIO_close PerlLIO_dup PerlLIO_dup2
+syn keyword xsMacro PerlLIO_flock PerlLIO_fstat PerlLIO_ioctl PerlLIO_isatty
+syn keyword xsMacro PerlLIO_link PerlLIO_lseek PerlLIO_lstat PerlLIO_mkstemp
+syn keyword xsMacro PerlLIO_mktemp PerlLIO_open PerlLIO_open3 PerlLIO_read
+syn keyword xsMacro PerlLIO_rename PerlLIO_setmode PerlLIO_stat
+syn keyword xsMacro PerlLIO_tmpnam PerlLIO_umask PerlLIO_unlink PerlLIO_utime
+syn keyword xsMacro PerlLIO_write PerlMemParse_calloc PerlMemParse_free
+syn keyword xsMacro PerlMemParse_free_lock PerlMemParse_get_lock
+syn keyword xsMacro PerlMemParse_is_locked PerlMemParse_malloc
+syn keyword xsMacro PerlMemParse_realloc PerlMemShared_calloc
+syn keyword xsMacro PerlMemShared_free PerlMemShared_free_lock
+syn keyword xsMacro PerlMemShared_get_lock PerlMemShared_is_locked
+syn keyword xsMacro PerlMemShared_malloc PerlMemShared_realloc PerlMem_calloc
+syn keyword xsMacro PerlMem_free PerlMem_free_lock PerlMem_get_lock
+syn keyword xsMacro PerlMem_is_locked PerlMem_malloc PerlMem_realloc
+syn keyword xsMacro PerlProc_DynaLoad PerlProc_GetOSError PerlProc__exit
+syn keyword xsMacro PerlProc_abort PerlProc_crypt PerlProc_execl
+syn keyword xsMacro PerlProc_execv PerlProc_execvp PerlProc_exit
+syn keyword xsMacro PerlProc_fork PerlProc_getegid PerlProc_geteuid
+syn keyword xsMacro PerlProc_getgid PerlProc_getlogin PerlProc_getpid
+syn keyword xsMacro PerlProc_gettimeofday PerlProc_getuid PerlProc_kill
+syn keyword xsMacro PerlProc_killpg PerlProc_lasthost PerlProc_longjmp
+syn keyword xsMacro PerlProc_pause PerlProc_pclose PerlProc_pipe
+syn keyword xsMacro PerlProc_popen PerlProc_popen_list PerlProc_setgid
+syn keyword xsMacro PerlProc_setjmp PerlProc_setuid PerlProc_signal
+syn keyword xsMacro PerlProc_sleep PerlProc_spawnvp PerlProc_times
+syn keyword xsMacro PerlProc_wait PerlProc_waitpid PerlSIO_canset_cnt
+syn keyword xsMacro PerlSIO_clearerr PerlSIO_fast_gets PerlSIO_fclose
+syn keyword xsMacro PerlSIO_fdopen PerlSIO_fdupopen PerlSIO_feof
+syn keyword xsMacro PerlSIO_ferror PerlSIO_fflush PerlSIO_fgetc
+syn keyword xsMacro PerlSIO_fgetpos PerlSIO_fgets PerlSIO_fileno
+syn keyword xsMacro PerlSIO_fopen PerlSIO_fputc PerlSIO_fputs PerlSIO_fread
+syn keyword xsMacro PerlSIO_freopen PerlSIO_fseek PerlSIO_fsetpos
+syn keyword xsMacro PerlSIO_ftell PerlSIO_fwrite PerlSIO_get_base
+syn keyword xsMacro PerlSIO_get_bufsiz PerlSIO_get_cnt PerlSIO_get_ptr
+syn keyword xsMacro PerlSIO_has_base PerlSIO_has_cntptr PerlSIO_init
+syn keyword xsMacro PerlSIO_printf PerlSIO_rewind PerlSIO_set_cnt
+syn keyword xsMacro PerlSIO_set_ptr PerlSIO_setbuf PerlSIO_setlinebuf
+syn keyword xsMacro PerlSIO_setvbuf PerlSIO_stderr PerlSIO_stdin
+syn keyword xsMacro PerlSIO_stdout PerlSIO_stdoutf PerlSIO_tmpfile
+syn keyword xsMacro PerlSIO_ungetc PerlSIO_vprintf PerlSock_accept
+syn keyword xsMacro PerlSock_bind PerlSock_closesocket PerlSock_connect
+syn keyword xsMacro PerlSock_endhostent PerlSock_endnetent
+syn keyword xsMacro PerlSock_endprotoent PerlSock_endservent
+syn keyword xsMacro PerlSock_gethostbyaddr PerlSock_gethostbyname
+syn keyword xsMacro PerlSock_gethostent PerlSock_gethostname
+syn keyword xsMacro PerlSock_getnetbyaddr PerlSock_getnetbyname
+syn keyword xsMacro PerlSock_getnetent PerlSock_getpeername
+syn keyword xsMacro PerlSock_getprotobyname PerlSock_getprotobynumber
+syn keyword xsMacro PerlSock_getprotoent PerlSock_getservbyname
+syn keyword xsMacro PerlSock_getservbyport PerlSock_getservent
+syn keyword xsMacro PerlSock_getsockname PerlSock_getsockopt PerlSock_htonl
+syn keyword xsMacro PerlSock_htons PerlSock_inet_addr PerlSock_inet_ntoa
+syn keyword xsMacro PerlSock_listen PerlSock_ntohl PerlSock_ntohs
+syn keyword xsMacro PerlSock_recv PerlSock_recvfrom PerlSock_select
+syn keyword xsMacro PerlSock_send PerlSock_sendto PerlSock_sethostent
+syn keyword xsMacro PerlSock_setnetent PerlSock_setprotoent
+syn keyword xsMacro PerlSock_setservent PerlSock_setsockopt PerlSock_shutdown
+syn keyword xsMacro PerlSock_socket PerlSock_socketpair Perl_acos Perl_asin
+syn keyword xsMacro Perl_assert Perl_atan Perl_atan2 Perl_atof Perl_atof2
+syn keyword xsMacro Perl_ceil Perl_cos Perl_cosh Perl_custom_op_xop
+syn keyword xsMacro Perl_debug_log Perl_drand48 Perl_drand48_init
+syn keyword xsMacro Perl_error_log Perl_exp Perl_floor Perl_fmod
+syn keyword xsMacro Perl_fp_class_denorm Perl_fp_class_inf Perl_fp_class_nan
+syn keyword xsMacro Perl_fp_class_ndenorm Perl_fp_class_ninf
+syn keyword xsMacro Perl_fp_class_nnorm Perl_fp_class_norm
+syn keyword xsMacro Perl_fp_class_nzero Perl_fp_class_pdenorm
+syn keyword xsMacro Perl_fp_class_pinf Perl_fp_class_pnorm
+syn keyword xsMacro Perl_fp_class_pzero Perl_fp_class_qnan Perl_fp_class_snan
+syn keyword xsMacro Perl_fp_class_zero Perl_free_c_backtrace Perl_frexp
+syn keyword xsMacro Perl_isfinite Perl_isfinitel Perl_isinf Perl_isnan
+syn keyword xsMacro Perl_ldexp Perl_log Perl_log10 Perl_malloc_good_size
+syn keyword xsMacro Perl_modf Perl_pow Perl_pp_accept Perl_pp_aelemfast_lex
+syn keyword xsMacro Perl_pp_andassign Perl_pp_avalues Perl_pp_bind
+syn keyword xsMacro Perl_pp_bit_xor Perl_pp_chmod Perl_pp_chomp
+syn keyword xsMacro Perl_pp_connect Perl_pp_cos Perl_pp_custom
+syn keyword xsMacro Perl_pp_dbmclose Perl_pp_dofile Perl_pp_dor
+syn keyword xsMacro Perl_pp_dorassign Perl_pp_dump Perl_pp_egrent
+syn keyword xsMacro Perl_pp_enetent Perl_pp_eprotoent Perl_pp_epwent
+syn keyword xsMacro Perl_pp_eservent Perl_pp_exp Perl_pp_fcntl
+syn keyword xsMacro Perl_pp_ftatime Perl_pp_ftbinary Perl_pp_ftblk
+syn keyword xsMacro Perl_pp_ftchr Perl_pp_ftctime Perl_pp_ftdir
+syn keyword xsMacro Perl_pp_fteexec Perl_pp_fteowned Perl_pp_fteread
+syn keyword xsMacro Perl_pp_ftewrite Perl_pp_ftfile Perl_pp_ftmtime
+syn keyword xsMacro Perl_pp_ftpipe Perl_pp_ftrexec Perl_pp_ftrwrite
+syn keyword xsMacro Perl_pp_ftsgid Perl_pp_ftsize Perl_pp_ftsock
+syn keyword xsMacro Perl_pp_ftsuid Perl_pp_ftsvtx Perl_pp_ftzero
+syn keyword xsMacro Perl_pp_getpeername Perl_pp_getsockname Perl_pp_ggrgid
+syn keyword xsMacro Perl_pp_ggrnam Perl_pp_ghbyaddr Perl_pp_ghbyname
+syn keyword xsMacro Perl_pp_gnbyaddr Perl_pp_gnbyname Perl_pp_gpbyname
+syn keyword xsMacro Perl_pp_gpbynumber Perl_pp_gpwnam Perl_pp_gpwuid
+syn keyword xsMacro Perl_pp_gsbyname Perl_pp_gsbyport Perl_pp_gsockopt
+syn keyword xsMacro Perl_pp_hex Perl_pp_i_postdec Perl_pp_i_postinc
+syn keyword xsMacro Perl_pp_i_predec Perl_pp_i_preinc Perl_pp_keys
+syn keyword xsMacro Perl_pp_kill Perl_pp_lcfirst Perl_pp_lineseq
+syn keyword xsMacro Perl_pp_listen Perl_pp_localtime Perl_pp_log
+syn keyword xsMacro Perl_pp_lstat Perl_pp_mapstart Perl_pp_msgctl
+syn keyword xsMacro Perl_pp_msgget Perl_pp_msgrcv Perl_pp_msgsnd
+syn keyword xsMacro Perl_pp_nbit_xor Perl_pp_orassign Perl_pp_padany
+syn keyword xsMacro Perl_pp_pop Perl_pp_postdec Perl_pp_predec Perl_pp_reach
+syn keyword xsMacro Perl_pp_read Perl_pp_recv Perl_pp_regcmaybe
+syn keyword xsMacro Perl_pp_rindex Perl_pp_rv2hv Perl_pp_rvalues Perl_pp_say
+syn keyword xsMacro Perl_pp_sbit_xor Perl_pp_scalar Perl_pp_schomp
+syn keyword xsMacro Perl_pp_scope Perl_pp_seek Perl_pp_semop Perl_pp_send
+syn keyword xsMacro Perl_pp_sge Perl_pp_sgrent Perl_pp_sgt Perl_pp_shmctl
+syn keyword xsMacro Perl_pp_shmget Perl_pp_shmread Perl_pp_shutdown
+syn keyword xsMacro Perl_pp_slt Perl_pp_snetent Perl_pp_socket
+syn keyword xsMacro Perl_pp_sprotoent Perl_pp_spwent Perl_pp_sqrt
+syn keyword xsMacro Perl_pp_sservent Perl_pp_ssockopt Perl_pp_symlink
+syn keyword xsMacro Perl_pp_transr Perl_pp_unlink Perl_pp_utime
+syn keyword xsMacro Perl_pp_values Perl_safesysmalloc_size Perl_sharepvn
+syn keyword xsMacro Perl_signbit Perl_sin Perl_sinh Perl_sqrt Perl_strtod
+syn keyword xsMacro Perl_tan Perl_tanh Perl_va_copy PmopSTASH PmopSTASHPV
+syn keyword xsMacro PmopSTASHPV_set PmopSTASH_set Poison PoisonFree PoisonNew
+syn keyword xsMacro PoisonPADLIST PoisonWith QR_PAT_MODS QUADKIND QUAD_IS_INT
+syn keyword xsMacro QUAD_IS_INT64_T QUAD_IS_LONG QUAD_IS_LONG_LONG
+syn keyword xsMacro QUAD_IS___INT64 QUESTION_MARK_CTRL QWLIST RANDBITS
+syn keyword xsMacro RANDOM_R_PROTO RD_NODATA READDIR64_R_PROTO
+syn keyword xsMacro READDIR_R_PROTO READ_XDIGIT REENTRANT_PROTO_B_B
+syn keyword xsMacro REENTRANT_PROTO_B_BI REENTRANT_PROTO_B_BW
+syn keyword xsMacro REENTRANT_PROTO_B_CCD REENTRANT_PROTO_B_CCS
+syn keyword xsMacro REENTRANT_PROTO_B_IBI REENTRANT_PROTO_B_IBW
+syn keyword xsMacro REENTRANT_PROTO_B_SB REENTRANT_PROTO_B_SBI
+syn keyword xsMacro REENTRANT_PROTO_I_BI REENTRANT_PROTO_I_BW
+syn keyword xsMacro REENTRANT_PROTO_I_CCSBWR REENTRANT_PROTO_I_CCSD
+syn keyword xsMacro REENTRANT_PROTO_I_CII REENTRANT_PROTO_I_CIISD
+syn keyword xsMacro REENTRANT_PROTO_I_CSBI REENTRANT_PROTO_I_CSBIR
+syn keyword xsMacro REENTRANT_PROTO_I_CSBWR REENTRANT_PROTO_I_CSBWRE
+syn keyword xsMacro REENTRANT_PROTO_I_CSD REENTRANT_PROTO_I_CWISBWRE
+syn keyword xsMacro REENTRANT_PROTO_I_CWISD REENTRANT_PROTO_I_D
+syn keyword xsMacro REENTRANT_PROTO_I_H REENTRANT_PROTO_I_IBI
+syn keyword xsMacro REENTRANT_PROTO_I_IBW REENTRANT_PROTO_I_ICBI
+syn keyword xsMacro REENTRANT_PROTO_I_ICSBWR REENTRANT_PROTO_I_ICSD
+syn keyword xsMacro REENTRANT_PROTO_I_ID REENTRANT_PROTO_I_IISD
+syn keyword xsMacro REENTRANT_PROTO_I_ISBWR REENTRANT_PROTO_I_ISD
+syn keyword xsMacro REENTRANT_PROTO_I_LISBI REENTRANT_PROTO_I_LISD
+syn keyword xsMacro REENTRANT_PROTO_I_SB REENTRANT_PROTO_I_SBI
+syn keyword xsMacro REENTRANT_PROTO_I_SBIE REENTRANT_PROTO_I_SBIH
+syn keyword xsMacro REENTRANT_PROTO_I_SBIR REENTRANT_PROTO_I_SBWR
+syn keyword xsMacro REENTRANT_PROTO_I_SBWRE REENTRANT_PROTO_I_SD
+syn keyword xsMacro REENTRANT_PROTO_I_TISD REENTRANT_PROTO_I_TS
+syn keyword xsMacro REENTRANT_PROTO_I_TSBI REENTRANT_PROTO_I_TSBIR
+syn keyword xsMacro REENTRANT_PROTO_I_TSBWR REENTRANT_PROTO_I_TSR
+syn keyword xsMacro REENTRANT_PROTO_I_TsISBWRE REENTRANT_PROTO_I_UISBWRE
+syn keyword xsMacro REENTRANT_PROTO_I_uISBWRE REENTRANT_PROTO_S_CBI
+syn keyword xsMacro REENTRANT_PROTO_S_CCSBI REENTRANT_PROTO_S_CIISBIE
+syn keyword xsMacro REENTRANT_PROTO_S_CSBI REENTRANT_PROTO_S_CSBIE
+syn keyword xsMacro REENTRANT_PROTO_S_CWISBIE REENTRANT_PROTO_S_CWISBWIE
+syn keyword xsMacro REENTRANT_PROTO_S_ICSBI REENTRANT_PROTO_S_ISBI
+syn keyword xsMacro REENTRANT_PROTO_S_LISBI REENTRANT_PROTO_S_SBI
+syn keyword xsMacro REENTRANT_PROTO_S_SBIE REENTRANT_PROTO_S_SBW
+syn keyword xsMacro REENTRANT_PROTO_S_TISBI REENTRANT_PROTO_S_TSBI
+syn keyword xsMacro REENTRANT_PROTO_S_TSBIE REENTRANT_PROTO_S_TWISBIE
+syn keyword xsMacro REENTRANT_PROTO_V_D REENTRANT_PROTO_V_H
+syn keyword xsMacro REENTRANT_PROTO_V_ID REENTR_H REENTR_MEMZERO REF
+syn keyword xsMacro REFCOUNTED_HE_EXISTS REFCOUNTED_HE_KEY_UTF8 REFF REFFA
+syn keyword xsMacro REFFL REFFU REFGEN REF_HE_KEY REGMATCH_STATE_MAX
+syn keyword xsMacro REGNODE_MAX REGNODE_SIMPLE REGNODE_VARIES REG_ANY
+syn keyword xsMacro REG_CANY_SEEN REG_CUTGROUP_SEEN REG_EXTFLAGS_NAME_SIZE
+syn keyword xsMacro REG_GOSTART_SEEN REG_GPOS_SEEN REG_INFTY
+syn keyword xsMacro REG_INTFLAGS_NAME_SIZE REG_LOOKBEHIND_SEEN REG_MAGIC
+syn keyword xsMacro REG_RECURSE_SEEN REG_RUN_ON_COMMENT_SEEN
+syn keyword xsMacro REG_TOP_LEVEL_BRANCHES_SEEN REG_UNBOUNDED_QUANTIFIER_SEEN
+syn keyword xsMacro REG_UNFOLDED_MULTI_SEEN REG_VERBARG_SEEN
+syn keyword xsMacro REG_ZERO_LEN_SEEN RELOP RENUM REQUIRE RESTORE_ERRNO
+syn keyword xsMacro RESTORE_LC_NUMERIC RESTORE_LC_NUMERIC_STANDARD
+syn keyword xsMacro RESTORE_LC_NUMERIC_UNDERLYING RESTORE_NUMERIC_LOCAL
+syn keyword xsMacro RESTORE_NUMERIC_STANDARD RETPUSHNO RETPUSHUNDEF
+syn keyword xsMacro RETPUSHYES RETSETNO RETSETTARG RETSETUNDEF RETSETYES
+syn keyword xsMacro RETURN RETURNOP RETURNX RETURN_PROBE REXEC_CHECKED
+syn keyword xsMacro REXEC_COPY_SKIP_POST REXEC_COPY_SKIP_PRE REXEC_COPY_STR
+syn keyword xsMacro REXEC_FAIL_ON_UNDERFLOW REXEC_IGNOREPOS REXEC_NOT_FIRST
+syn keyword xsMacro REXEC_SCREAM RE_DEBUG_COMPILE_DUMP RE_DEBUG_COMPILE_FLAGS
+syn keyword xsMacro RE_DEBUG_COMPILE_MASK RE_DEBUG_COMPILE_OPTIMISE
+syn keyword xsMacro RE_DEBUG_COMPILE_PARSE RE_DEBUG_COMPILE_TEST
+syn keyword xsMacro RE_DEBUG_COMPILE_TRIE RE_DEBUG_EXECUTE_INTUIT
+syn keyword xsMacro RE_DEBUG_EXECUTE_MASK RE_DEBUG_EXECUTE_MATCH
+syn keyword xsMacro RE_DEBUG_EXECUTE_TRIE RE_DEBUG_EXTRA_BUFFERS
+syn keyword xsMacro RE_DEBUG_EXTRA_GPOS RE_DEBUG_EXTRA_MASK
+syn keyword xsMacro RE_DEBUG_EXTRA_OFFDEBUG RE_DEBUG_EXTRA_OFFSETS
+syn keyword xsMacro RE_DEBUG_EXTRA_OPTIMISE RE_DEBUG_EXTRA_STACK
+syn keyword xsMacro RE_DEBUG_EXTRA_STATE RE_DEBUG_EXTRA_TRIE RE_DEBUG_FLAG
+syn keyword xsMacro RE_DEBUG_FLAGS RE_PV_COLOR_DECL RE_PV_QUOTED_DECL
+syn keyword xsMacro RE_SV_DUMPLEN RE_SV_ESCAPE RE_SV_TAIL
+syn keyword xsMacro RE_TRACK_PATTERN_OFFSETS RE_TRIE_MAXBUF_INIT
+syn keyword xsMacro RE_TRIE_MAXBUF_NAME RMS_DIR RMS_FAC RMS_FEX RMS_FNF
+syn keyword xsMacro RMS_IFI RMS_ISI RMS_PRV ROTL32 ROTL64 ROTL_UV
+syn keyword xsMacro RUNOPS_DEFAULT RV2CVOPCV_FLAG_MASK RV2CVOPCV_MARK_EARLY
+syn keyword xsMacro RV2CVOPCV_MAYBE_NAME_GV RV2CVOPCV_RETURN_NAME_GV
+syn keyword xsMacro RV2CVOPCV_RETURN_STUB RX_ANCHORED_SUBSTR RX_ANCHORED_UTF8
+syn keyword xsMacro RX_BUFF_IDX_CARET_FULLMATCH RX_BUFF_IDX_CARET_POSTMATCH
+syn keyword xsMacro RX_BUFF_IDX_CARET_PREMATCH RX_BUFF_IDX_FULLMATCH
+syn keyword xsMacro RX_BUFF_IDX_POSTMATCH RX_BUFF_IDX_PREMATCH
+syn keyword xsMacro RX_CHECK_SUBSTR RX_COMPFLAGS RX_ENGINE RX_EXTFLAGS
+syn keyword xsMacro RX_FLOAT_SUBSTR RX_FLOAT_UTF8 RX_GOFS RX_HAS_CUTGROUP
+syn keyword xsMacro RX_INTFLAGS RX_ISTAINTED RX_LASTCLOSEPAREN RX_LASTPAREN
+syn keyword xsMacro RX_MATCH_COPIED RX_MATCH_COPIED_off RX_MATCH_COPIED_on
+syn keyword xsMacro RX_MATCH_COPIED_set RX_MATCH_COPY_FREE RX_MATCH_TAINTED
+syn keyword xsMacro RX_MATCH_TAINTED_off RX_MATCH_TAINTED_on
+syn keyword xsMacro RX_MATCH_TAINTED_set RX_MATCH_UTF8 RX_MATCH_UTF8_off
+syn keyword xsMacro RX_MATCH_UTF8_on RX_MATCH_UTF8_set RX_MINLEN RX_MINLENRET
+syn keyword xsMacro RX_NPARENS RX_OFFS RX_PRECOMP RX_PRECOMP_const RX_PRELEN
+syn keyword xsMacro RX_REFCNT RX_SAVED_COPY RX_SUBBEG RX_SUBCOFFSET RX_SUBLEN
+syn keyword xsMacro RX_SUBOFFSET RX_TAINT_on RX_UTF8 RX_WRAPLEN RX_WRAPPED
+syn keyword xsMacro RX_WRAPPED_const RX_ZERO_LEN RXapif_ALL RXapif_CLEAR
+syn keyword xsMacro RXapif_DELETE RXapif_EXISTS RXapif_FETCH RXapif_FIRSTKEY
+syn keyword xsMacro RXapif_NEXTKEY RXapif_ONE RXapif_REGNAME RXapif_REGNAMES
+syn keyword xsMacro RXapif_REGNAMES_COUNT RXapif_SCALAR RXapif_STORE
+syn keyword xsMacro RXf_BASE_SHIFT RXf_CHECK_ALL RXf_COPY_DONE RXf_EVAL_SEEN
+syn keyword xsMacro RXf_INTUIT_TAIL RXf_IS_ANCHORED RXf_MATCH_UTF8
+syn keyword xsMacro RXf_NO_INPLACE_SUBST RXf_NULL RXf_PMf_CHARSET
+syn keyword xsMacro RXf_PMf_COMPILETIME RXf_PMf_EXTENDED
+syn keyword xsMacro RXf_PMf_EXTENDED_MORE RXf_PMf_FLAGCOPYMASK RXf_PMf_FOLD
+syn keyword xsMacro RXf_PMf_KEEPCOPY RXf_PMf_MULTILINE RXf_PMf_NOCAPTURE
+syn keyword xsMacro RXf_PMf_SINGLELINE RXf_PMf_SPLIT RXf_PMf_STD_PMMOD
+syn keyword xsMacro RXf_PMf_STD_PMMOD_SHIFT RXf_PMf_STRICT RXf_SKIPWHITE
+syn keyword xsMacro RXf_SPLIT RXf_START_ONLY RXf_TAINTED RXf_TAINTED_SEEN
+syn keyword xsMacro RXf_UNBOUNDED_QUANTIFIER_SEEN RXf_USE_INTUIT
+syn keyword xsMacro RXf_USE_INTUIT_ML RXf_USE_INTUIT_NOML RXf_WHITE RXi_GET
+syn keyword xsMacro RXi_GET_DECL RXi_SET RXp_COMPFLAGS RXp_EXTFLAGS
+syn keyword xsMacro RXp_INTFLAGS RXp_MATCH_COPIED RXp_MATCH_COPIED_off
+syn keyword xsMacro RXp_MATCH_COPIED_on RXp_MATCH_TAINTED
+syn keyword xsMacro RXp_MATCH_TAINTED_on RXp_MATCH_UTF8 RXp_PAREN_NAMES ReANY
+syn keyword xsMacro ReREFCNT_dec ReREFCNT_inc Renew Renewc RsPARA RsRECORD
+syn keyword xsMacro RsSIMPLE RsSNARF SAFE_TRIE_NODENUM SANY SAVEADELETE
+syn keyword xsMacro SAVEBOOL SAVECLEARSV SAVECOMPILEWARNINGS SAVECOMPPAD
+syn keyword xsMacro SAVECOPFILE SAVECOPFILE_FREE SAVECOPLINE
+syn keyword xsMacro SAVECOPSTASH_FREE SAVEDELETE SAVEDESTRUCTOR
+syn keyword xsMacro SAVEDESTRUCTOR_X SAVEFREECOPHH SAVEFREEOP SAVEFREEPADNAME
+syn keyword xsMacro SAVEFREEPV SAVEFREESV SAVEGENERICPV SAVEGENERICSV
+syn keyword xsMacro SAVEHDELETE SAVEHINTS SAVEI16 SAVEI32 SAVEI8 SAVEINT
+syn keyword xsMacro SAVEIV SAVELONG SAVEMORTALIZESV SAVEOP
+syn keyword xsMacro SAVEPADSVANDMORTALIZE SAVEPARSER SAVEPPTR SAVESETSVFLAGS
+syn keyword xsMacro SAVESHAREDPV SAVESPTR SAVESTACK_POS SAVESWITCHSTACK
+syn keyword xsMacro SAVETMPS SAVEVPTR SAVE_DEFSV SAVE_ERRNO SAVE_MASK
+syn keyword xsMacro SAVE_TIGHT_SHIFT SAVEf_KEEPOLDELEM SAVEf_SETMAGIC
+syn keyword xsMacro SAVEt_ADELETE SAVEt_AELEM SAVEt_ALLOC SAVEt_APTR
+syn keyword xsMacro SAVEt_ARG0_MAX SAVEt_ARG1_MAX SAVEt_ARG2_MAX SAVEt_AV
+syn keyword xsMacro SAVEt_BOOL SAVEt_CLEARPADRANGE SAVEt_CLEARSV
+syn keyword xsMacro SAVEt_COMPILE_WARNINGS SAVEt_COMPPAD SAVEt_DELETE
+syn keyword xsMacro SAVEt_DESTRUCTOR SAVEt_DESTRUCTOR_X SAVEt_FREECOPHH
+syn keyword xsMacro SAVEt_FREEOP SAVEt_FREEPADNAME SAVEt_FREEPV SAVEt_FREESV
+syn keyword xsMacro SAVEt_GENERIC_PVREF SAVEt_GENERIC_SVREF SAVEt_GP
+syn keyword xsMacro SAVEt_GP_ALIASED_SV SAVEt_GVSLOT SAVEt_GVSV SAVEt_HELEM
+syn keyword xsMacro SAVEt_HINTS SAVEt_HPTR SAVEt_HV SAVEt_I16 SAVEt_I32
+syn keyword xsMacro SAVEt_I32_SMALL SAVEt_I8 SAVEt_INT SAVEt_INT_SMALL
+syn keyword xsMacro SAVEt_ITEM SAVEt_IV SAVEt_LONG SAVEt_MORTALIZESV
+syn keyword xsMacro SAVEt_NSTAB SAVEt_OP SAVEt_PADSV_AND_MORTALIZE
+syn keyword xsMacro SAVEt_PARSER SAVEt_PPTR SAVEt_READONLY_OFF
+syn keyword xsMacro SAVEt_REGCONTEXT SAVEt_SAVESWITCHSTACK SAVEt_SET_SVFLAGS
+syn keyword xsMacro SAVEt_SHARED_PVREF SAVEt_SPTR SAVEt_STACK_POS
+syn keyword xsMacro SAVEt_STRLEN SAVEt_SV SAVEt_SVREF SAVEt_VPTR
+syn keyword xsMacro SAWAMPERSAND_LEFT SAWAMPERSAND_MIDDLE SAWAMPERSAND_RIGHT
+syn keyword xsMacro SBOL SB_ENUM_COUNT SCAN_DEF SCAN_REPL SCAN_TR
+syn keyword xsMacro SCAN_VERSION SCHED_YIELD SCOPE_SAVES_SIGNAL_MASK SEEK_CUR
+syn keyword xsMacro SEEK_END SEEK_SET SELECT_MIN_BITS SEOL SETERRNO
+syn keyword xsMacro SETGRENT_R_PROTO SETHOSTENT_R_PROTO SETLOCALE_R_PROTO
+syn keyword xsMacro SETNETENT_R_PROTO SETPROTOENT_R_PROTO SETPWENT_R_PROTO
+syn keyword xsMacro SETSERVENT_R_PROTO SETTARG SET_MARK_OFFSET
+syn keyword xsMacro SET_NUMERIC_LOCAL SET_NUMERIC_STANDARD
+syn keyword xsMacro SET_NUMERIC_UNDERLYING SET_THR SET_THREAD_SELF SETi SETn
+syn keyword xsMacro SETp SETs SETu SHARP_S_SKIP SHIFTOP SHORTSIZE SH_PATH
+syn keyword xsMacro SIGABRT SIGILL SIG_NAME SIG_NUM SIG_SIZE SINGLE_PAT_MOD
+syn keyword xsMacro SIPROUND SITEARCH SITEARCH_EXP SITELIB SITELIB_EXP
+syn keyword xsMacro SITELIB_STEM SIZE_ALIGN SIZE_ONLY SKIP SKIP_next
+syn keyword xsMacro SKIP_next_fail SLOPPYDIVIDE SOCKET_OPEN_MODE SPAGAIN
+syn keyword xsMacro SPRINTF_RETURNS_STRLEN SRAND48_R_PROTO SRANDOM_R_PROTO
+syn keyword xsMacro SSCHECK SSC_MATCHES_EMPTY_STRING SSGROW SSNEW SSNEWa
+syn keyword xsMacro SSNEWat SSNEWt SSPOPBOOL SSPOPDPTR SSPOPDXPTR SSPOPINT
+syn keyword xsMacro SSPOPIV SSPOPLONG SSPOPPTR SSPOPUV SSPTR SSPTRt
+syn keyword xsMacro SSPUSHBOOL SSPUSHDPTR SSPUSHDXPTR SSPUSHINT SSPUSHIV
+syn keyword xsMacro SSPUSHLONG SSPUSHPTR SSPUSHUV SS_ACCVIO SS_ADD_BOOL
+syn keyword xsMacro SS_ADD_DPTR SS_ADD_DXPTR SS_ADD_END SS_ADD_INT SS_ADD_IV
+syn keyword xsMacro SS_ADD_LONG SS_ADD_PTR SS_ADD_UV SS_BUFFEROVF
+syn keyword xsMacro SS_DEVOFFLINE SS_IVCHAN SS_MAXPUSH SS_NOPRIV SS_NORMAL
+syn keyword xsMacro SSize_t_MAX ST STANDARD_C STAR STARTPERL START_EXTERN_C
+syn keyword xsMacro START_MY_CXT STATIC STATIC_ASSERT_1 STATIC_ASSERT_2
+syn keyword xsMacro STATIC_ASSERT_GLOBAL STATIC_ASSERT_STMT
+syn keyword xsMacro STATUS_ALL_FAILURE STATUS_ALL_SUCCESS STATUS_CURRENT
+syn keyword xsMacro STATUS_EXIT STATUS_EXIT_SET STATUS_NATIVE
+syn keyword xsMacro STATUS_NATIVE_CHILD_SET STATUS_UNIX STATUS_UNIX_EXIT_SET
+syn keyword xsMacro STATUS_UNIX_SET STDCHAR STDIO_STREAM_ARRAY STD_PAT_MODS
+syn keyword xsMacro STD_PMMOD_FLAGS_CLEAR STD_PMMOD_FLAGS_PARSE_X_WARN
+syn keyword xsMacro STMT_END STMT_START STORE_LC_NUMERIC_FORCE_TO_UNDERLYING
+syn keyword xsMacro STORE_LC_NUMERIC_SET_TO_NEEDED
+syn keyword xsMacro STORE_LC_NUMERIC_STANDARD_SET_UNDERLYING
+syn keyword xsMacro STORE_LC_NUMERIC_UNDERLYING_SET_STANDARD
+syn keyword xsMacro STORE_NUMERIC_LOCAL_SET_STANDARD
+syn keyword xsMacro STORE_NUMERIC_STANDARD_FORCE_LOCAL
+syn keyword xsMacro STORE_NUMERIC_STANDARD_SET_LOCAL STRERROR_R_PROTO STRING
+syn keyword xsMacro STRINGIFY STRUCT_OFFSET STRUCT_SV STR_LEN STR_SZ
+syn keyword xsMacro STR_WITH_LEN ST_INO_SIGN ST_INO_SIZE SUB
+syn keyword xsMacro SUBST_TAINT_BOOLRET SUBST_TAINT_PAT SUBST_TAINT_REPL
+syn keyword xsMacro SUBST_TAINT_RETAINT SUBST_TAINT_STR SUBVERSION SUCCEED
+syn keyword xsMacro SUSPEND SVTYPEMASK SV_CATBYTES SV_CATUTF8
+syn keyword xsMacro SV_CHECK_THINKFIRST SV_CHECK_THINKFIRST_COW_DROP SV_CONST
+syn keyword xsMacro SV_CONSTS_COUNT SV_CONST_BINMODE SV_CONST_CLEAR
+syn keyword xsMacro SV_CONST_CLOSE SV_CONST_DELETE SV_CONST_DESTROY
+syn keyword xsMacro SV_CONST_EOF SV_CONST_EXISTS SV_CONST_EXTEND
+syn keyword xsMacro SV_CONST_FETCH SV_CONST_FETCHSIZE SV_CONST_FILENO
+syn keyword xsMacro SV_CONST_FIRSTKEY SV_CONST_GETC SV_CONST_NEXTKEY
+syn keyword xsMacro SV_CONST_OPEN SV_CONST_POP SV_CONST_PRINT SV_CONST_PRINTF
+syn keyword xsMacro SV_CONST_PUSH SV_CONST_READ SV_CONST_READLINE
+syn keyword xsMacro SV_CONST_RETURN SV_CONST_SCALAR SV_CONST_SEEK
+syn keyword xsMacro SV_CONST_SHIFT SV_CONST_SPLICE SV_CONST_STORE
+syn keyword xsMacro SV_CONST_STORESIZE SV_CONST_TELL SV_CONST_TIEARRAY
+syn keyword xsMacro SV_CONST_TIEHANDLE SV_CONST_TIEHASH SV_CONST_TIESCALAR
+syn keyword xsMacro SV_CONST_UNSHIFT SV_CONST_UNTIE SV_CONST_WRITE
+syn keyword xsMacro SV_COW_DROP_PV SV_COW_OTHER_PVS SV_COW_REFCNT_MAX
+syn keyword xsMacro SV_COW_SHARED_HASH_KEYS SV_DO_COW_SVSETSV
+syn keyword xsMacro SV_FORCE_UTF8_UPGRADE SV_GMAGIC SV_HAS_TRAILING_NUL
+syn keyword xsMacro SV_IMMEDIATE_UNREF SV_MUTABLE_RETURN SV_NOSTEAL
+syn keyword xsMacro SV_SAVED_COPY SV_SKIP_OVERLOAD SV_SMAGIC
+syn keyword xsMacro SV_UNDEF_RETURNS_NULL SV_UTF8_NO_ENCODING SVrepl_EVAL
+syn keyword xsMacro SVt_FIRST SVt_MASK SWITCHSTACK SYMBIAN SYSTEM_GMTIME_MAX
+syn keyword xsMacro SYSTEM_GMTIME_MIN SYSTEM_LOCALTIME_MAX
+syn keyword xsMacro SYSTEM_LOCALTIME_MIN S_IEXEC S_IFIFO S_IFMT S_IREAD
+syn keyword xsMacro S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU S_ISBLK
+syn keyword xsMacro S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISLNK S_ISREG S_ISSOCK
+syn keyword xsMacro S_ISUID S_IWGRP S_IWOTH S_IWRITE S_IWUSR S_IXGRP S_IXOTH
+syn keyword xsMacro S_IXUSR S_PAT_MODS Safefree Semctl Sigjmp_buf Siglongjmp
+syn keyword xsMacro Sigsetjmp Size_t_MAX Size_t_size StGiFy StashHANDLER Stat
+syn keyword xsMacro Strerror Strtol Strtoul StructCopy SvAMAGIC SvANY
+syn keyword xsMacro SvCANCOW SvCANEXISTDELETE SvCOMPILED SvCOMPILED_off
+syn keyword xsMacro SvCOMPILED_on SvCUR SvCUR_set SvDESTROYABLE SvEND
+syn keyword xsMacro SvEND_set SvENDx SvEVALED SvEVALED_off SvEVALED_on SvFAKE
+syn keyword xsMacro SvFAKE_off SvFAKE_on SvFLAGS SvGAMAGIC SvGETMAGIC SvGID
+syn keyword xsMacro SvGMAGICAL SvGMAGICAL_off SvGMAGICAL_on SvGROW
+syn keyword xsMacro SvGROW_mutable SvIMMORTAL SvIOK SvIOK_UV SvIOK_nog
+syn keyword xsMacro SvIOK_nogthink SvIOK_notUV SvIOK_off SvIOK_on SvIOK_only
+syn keyword xsMacro SvIOK_only_UV SvIOKp SvIOKp_on SvIS_FREED SvIV SvIVX
+syn keyword xsMacro SvIVXx SvIV_nomg SvIV_please SvIV_please_nomg SvIV_set
+syn keyword xsMacro SvIVx SvIsCOW SvIsCOW_normal SvIsCOW_off SvIsCOW_on
+syn keyword xsMacro SvIsCOW_shared_hash SvIsUV SvIsUV_off SvIsUV_on SvLEN
+syn keyword xsMacro SvLEN_set SvLENx SvLOCK SvMAGIC SvMAGICAL SvMAGICAL_off
+syn keyword xsMacro SvMAGICAL_on SvMAGIC_set SvNIOK SvNIOK_nog
+syn keyword xsMacro SvNIOK_nogthink SvNIOK_off SvNIOKp SvNOK SvNOK_nog
+syn keyword xsMacro SvNOK_nogthink SvNOK_off SvNOK_on SvNOK_only SvNOKp
+syn keyword xsMacro SvNOKp_on SvNV SvNVX SvNVXx SvNV_nomg SvNV_set SvNVx
+syn keyword xsMacro SvOBJECT SvOBJECT_off SvOBJECT_on SvOK SvOK_off
+syn keyword xsMacro SvOK_off_exc_UV SvOKp SvOOK SvOOK_off SvOOK_offset
+syn keyword xsMacro SvOOK_on SvOURSTASH SvOURSTASH_set SvPADMY SvPADMY_on
+syn keyword xsMacro SvPADSTALE SvPADSTALE_off SvPADSTALE_on SvPADTMP
+syn keyword xsMacro SvPADTMP_off SvPADTMP_on SvPAD_OUR SvPAD_OUR_on
+syn keyword xsMacro SvPAD_STATE SvPAD_STATE_on SvPAD_TYPED SvPAD_TYPED_on
+syn keyword xsMacro SvPCS_IMPORTED SvPCS_IMPORTED_off SvPCS_IMPORTED_on
+syn keyword xsMacro SvPEEK SvPOK SvPOK_byte_nog SvPOK_byte_nogthink
+syn keyword xsMacro SvPOK_byte_pure_nogthink SvPOK_nog SvPOK_nogthink
+syn keyword xsMacro SvPOK_off SvPOK_on SvPOK_only SvPOK_only_UTF8
+syn keyword xsMacro SvPOK_pure_nogthink SvPOK_utf8_nog SvPOK_utf8_nogthink
+syn keyword xsMacro SvPOK_utf8_pure_nogthink SvPOKp SvPOKp_on SvPV SvPVX
+syn keyword xsMacro SvPVX_const SvPVX_mutable SvPVXtrue SvPVXx SvPV_const
+syn keyword xsMacro SvPV_flags SvPV_flags_const SvPV_flags_const_nolen
+syn keyword xsMacro SvPV_flags_mutable SvPV_force SvPV_force_flags
+syn keyword xsMacro SvPV_force_flags_mutable SvPV_force_flags_nolen
+syn keyword xsMacro SvPV_force_mutable SvPV_force_nolen SvPV_force_nomg
+syn keyword xsMacro SvPV_force_nomg_nolen SvPV_free SvPV_mutable SvPV_nolen
+syn keyword xsMacro SvPV_nolen_const SvPV_nomg SvPV_nomg_const
+syn keyword xsMacro SvPV_nomg_const_nolen SvPV_nomg_nolen SvPV_renew SvPV_set
+syn keyword xsMacro SvPV_shrink_to_cur SvPVbyte SvPVbyte_force SvPVbyte_nolen
+syn keyword xsMacro SvPVbytex SvPVbytex_force SvPVbytex_nolen SvPVutf8
+syn keyword xsMacro SvPVutf8_force SvPVutf8_nolen SvPVutf8x SvPVutf8x_force
+syn keyword xsMacro SvPVx SvPVx_const SvPVx_force SvPVx_nolen
+syn keyword xsMacro SvPVx_nolen_const SvREADONLY SvREADONLY_off SvREADONLY_on
+syn keyword xsMacro SvREFCNT SvREFCNT_IMMORTAL SvREFCNT_dec SvREFCNT_dec_NN
+syn keyword xsMacro SvREFCNT_inc SvREFCNT_inc_NN SvREFCNT_inc_simple
+syn keyword xsMacro SvREFCNT_inc_simple_NN SvREFCNT_inc_simple_void
+syn keyword xsMacro SvREFCNT_inc_simple_void_NN SvREFCNT_inc_void
+syn keyword xsMacro SvREFCNT_inc_void_NN SvRELEASE_IVX SvRELEASE_IVX_
+syn keyword xsMacro SvRMAGICAL SvRMAGICAL_off SvRMAGICAL_on SvROK SvROK_off
+syn keyword xsMacro SvROK_on SvRV SvRV_const SvRV_set SvRVx SvRX SvRXOK
+syn keyword xsMacro SvSCREAM SvSCREAM_off SvSCREAM_on SvSETMAGIC SvSHARE
+syn keyword xsMacro SvSHARED_HASH SvSHARED_HEK_FROM_PV SvSMAGICAL
+syn keyword xsMacro SvSMAGICAL_off SvSMAGICAL_on SvSTASH SvSTASH_set
+syn keyword xsMacro SvSetMagicSV SvSetMagicSV_nosteal SvSetSV SvSetSV_and
+syn keyword xsMacro SvSetSV_nosteal SvSetSV_nosteal_and SvTAIL SvTAIL_off
+syn keyword xsMacro SvTAIL_on SvTAINT SvTAINTED SvTAINTED_off SvTAINTED_on
+syn keyword xsMacro SvTEMP SvTEMP_off SvTEMP_on SvTHINKFIRST SvTIED_mg
+syn keyword xsMacro SvTIED_obj SvTRUE SvTRUE_NN SvTRUE_common SvTRUE_nomg
+syn keyword xsMacro SvTRUE_nomg_NN SvTRUEx SvTRUEx_nomg SvTYPE SvUID SvUNLOCK
+syn keyword xsMacro SvUOK SvUOK_nog SvUOK_nogthink SvUPGRADE SvUTF8
+syn keyword xsMacro SvUTF8_off SvUTF8_on SvUV SvUVX SvUVXx SvUV_nomg SvUV_set
+syn keyword xsMacro SvUVx SvVALID SvVALID_off SvVALID_on SvVOK SvVSTRING_mg
+syn keyword xsMacro SvWEAKREF SvWEAKREF_off SvWEAKREF_on Sv_Grow TAIL TAINT
+syn keyword xsMacro TAINTING_get TAINTING_set TAINT_ENV TAINT_IF TAINT_NOT
+syn keyword xsMacro TAINT_PROPER TAINT_WARN_get TAINT_WARN_set TAINT_get
+syn keyword xsMacro TAINT_set THING THR THREAD_CREATE
+syn keyword xsMacro THREAD_CREATE_NEEDS_STACK THREAD_POST_CREATE
+syn keyword xsMacro THREAD_RET_CAST THREAD_RET_TYPE
+syn keyword xsMacro TIED_METHOD_ARGUMENTS_ON_STACK
+syn keyword xsMacro TIED_METHOD_MORTALIZE_NOT_NEEDED TIED_METHOD_SAY
+syn keyword xsMacro TIME64_CONFIG_H TIME64_H TM TMPNAM_R_PROTO TOO_LATE_FOR
+syn keyword xsMacro TOO_LATE_FOR_ TOPBLOCK TOPMARK TOPi TOPl TOPm1s TOPn TOPp
+syn keyword xsMacro TOPp1s TOPpx TOPs TOPu TOPul TRIE TRIEC TRIE_BITMAP
+syn keyword xsMacro TRIE_BITMAP_BYTE TRIE_BITMAP_CLEAR TRIE_BITMAP_SET
+syn keyword xsMacro TRIE_BITMAP_TEST TRIE_CHARCOUNT TRIE_NODEIDX TRIE_NODENUM
+syn keyword xsMacro TRIE_WORDS_OFFSET TRIE_next TRIE_next_fail TRUE
+syn keyword xsMacro TTYNAME_R_PROTO TWO_BYTE_UTF8_TO_NATIVE
+syn keyword xsMacro TWO_BYTE_UTF8_TO_UNI TYPE_CHARS TYPE_DIGITS Timeval
+syn keyword xsMacro U16SIZE U16TYPE U16_CONST U16_MAX U16_MIN U32SIZE U32TYPE
+syn keyword xsMacro U32_ALIGNMENT_REQUIRED U32_CONST U32_MAX U32_MAX_P1
+syn keyword xsMacro U32_MAX_P1_HALF U32_MIN U64SIZE U64TYPE U64_CONST U8SIZE
+syn keyword xsMacro U8TO16_LE U8TO32_LE U8TO64_LE U8TYPE U8_MAX U8_MIN
+syn keyword xsMacro UCHARAT UINT32_MIN UINT64_C UINT64_MIN UMINUS
+syn keyword xsMacro UNALIGNED_SAFE UNDERBAR UNICODE_ALLOW_ANY
+syn keyword xsMacro UNICODE_ALLOW_SUPER UNICODE_ALLOW_SURROGATE
+syn keyword xsMacro UNICODE_BYTE_ORDER_MARK UNICODE_DISALLOW_FE_FF
+syn keyword xsMacro UNICODE_DISALLOW_ILLEGAL_INTERCHANGE
+syn keyword xsMacro UNICODE_DISALLOW_NONCHAR UNICODE_DISALLOW_SUPER
+syn keyword xsMacro UNICODE_DISALLOW_SURROGATE
+syn keyword xsMacro UNICODE_GREEK_CAPITAL_LETTER_SIGMA
+syn keyword xsMacro UNICODE_GREEK_SMALL_LETTER_FINAL_SIGMA
+syn keyword xsMacro UNICODE_GREEK_SMALL_LETTER_SIGMA
+syn keyword xsMacro UNICODE_IS_BYTE_ORDER_MARK UNICODE_IS_FE_FF
+syn keyword xsMacro UNICODE_IS_NONCHAR UNICODE_IS_REPLACEMENT
+syn keyword xsMacro UNICODE_IS_SUPER UNICODE_IS_SURROGATE UNICODE_LINE_SEPA_0
+syn keyword xsMacro UNICODE_LINE_SEPA_1 UNICODE_LINE_SEPA_2
+syn keyword xsMacro UNICODE_PARA_SEPA_0 UNICODE_PARA_SEPA_1
+syn keyword xsMacro UNICODE_PARA_SEPA_2 UNICODE_PAT_MOD UNICODE_PAT_MODS
+syn keyword xsMacro UNICODE_REPLACEMENT UNICODE_SURROGATE_FIRST
+syn keyword xsMacro UNICODE_SURROGATE_LAST UNICODE_WARN_FE_FF
+syn keyword xsMacro UNICODE_WARN_ILLEGAL_INTERCHANGE UNICODE_WARN_NONCHAR
+syn keyword xsMacro UNICODE_WARN_SUPER UNICODE_WARN_SURROGATE UNIOP UNIOPSUB
+syn keyword xsMacro UNISKIP UNI_DISPLAY_BACKSLASH UNI_DISPLAY_ISPRINT
+syn keyword xsMacro UNI_DISPLAY_QQ UNI_DISPLAY_REGEX UNI_IS_INVARIANT
+syn keyword xsMacro UNI_TO_NATIVE UNKNOWN_ERRNO_MSG UNLESS UNLESSM UNLIKELY
+syn keyword xsMacro UNLINK UNLOCK_DOLLARZERO_MUTEX UNLOCK_LC_NUMERIC_STANDARD
+syn keyword xsMacro UNLOCK_NUMERIC_STANDARD UNOP_AUX_item_sv UNTIL
+syn keyword xsMacro UPG_VERSION USE USE_64_BIT_ALL USE_64_BIT_INT
+syn keyword xsMacro USE_64_BIT_RAWIO USE_64_BIT_STDIO USE_BSDPGRP
+syn keyword xsMacro USE_DYNAMIC_LOADING USE_ENVIRON_ARRAY USE_HASH_SEED
+syn keyword xsMacro USE_HEAP_INSTEAD_OF_STACK USE_LARGE_FILES USE_LEFT
+syn keyword xsMacro USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE
+syn keyword xsMacro USE_LOCALE_MESSAGES USE_LOCALE_MONETARY
+syn keyword xsMacro USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_PERLIO
+syn keyword xsMacro USE_PERL_PERTURB_KEYS USE_REENTRANT_API
+syn keyword xsMacro USE_SEMCTL_SEMID_DS USE_SEMCTL_SEMUN USE_STAT_BLOCKS
+syn keyword xsMacro USE_STAT_RDEV USE_STDIO USE_STRUCT_COPY USE_SYSTEM_GMTIME
+syn keyword xsMacro USE_SYSTEM_LOCALTIME USE_THREADS USE_TM64
+syn keyword xsMacro USE_UTF8_IN_NAMES USING_MSVC6 UTF8SKIP UTF8_ACCUMULATE
+syn keyword xsMacro UTF8_ALLOW_ANY UTF8_ALLOW_ANYUV UTF8_ALLOW_CONTINUATION
+syn keyword xsMacro UTF8_ALLOW_DEFAULT UTF8_ALLOW_EMPTY UTF8_ALLOW_FFFF
+syn keyword xsMacro UTF8_ALLOW_LONG UTF8_ALLOW_NON_CONTINUATION
+syn keyword xsMacro UTF8_ALLOW_SHORT UTF8_ALLOW_SURROGATE UTF8_CHECK_ONLY
+syn keyword xsMacro UTF8_DISALLOW_FE_FF UTF8_DISALLOW_ILLEGAL_INTERCHANGE
+syn keyword xsMacro UTF8_DISALLOW_NONCHAR UTF8_DISALLOW_SUPER
+syn keyword xsMacro UTF8_DISALLOW_SURROGATE UTF8_EIGHT_BIT_HI
+syn keyword xsMacro UTF8_EIGHT_BIT_LO
+syn keyword xsMacro UTF8_FIRST_PROBLEMATIC_CODE_POINT_FIRST_BYTE
+syn keyword xsMacro UTF8_IS_ABOVE_LATIN1 UTF8_IS_CONTINUATION
+syn keyword xsMacro UTF8_IS_CONTINUED UTF8_IS_DOWNGRADEABLE_START
+syn keyword xsMacro UTF8_IS_INVARIANT UTF8_IS_NEXT_CHAR_DOWNGRADEABLE
+syn keyword xsMacro UTF8_IS_NONCHAR_
+syn keyword xsMacro UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC
+syn keyword xsMacro UTF8_IS_REPLACEMENT UTF8_IS_START UTF8_IS_SUPER
+syn keyword xsMacro UTF8_IS_SURROGATE UTF8_MAXBYTES UTF8_MAXBYTES_CASE
+syn keyword xsMacro UTF8_MAXLEN UTF8_MAX_FOLD_CHAR_EXPAND UTF8_QUAD_MAX
+syn keyword xsMacro UTF8_TWO_BYTE_HI UTF8_TWO_BYTE_HI_nocast UTF8_TWO_BYTE_LO
+syn keyword xsMacro UTF8_TWO_BYTE_LO_nocast UTF8_WARN_FE_FF
+syn keyword xsMacro UTF8_WARN_ILLEGAL_INTERCHANGE UTF8_WARN_NONCHAR
+syn keyword xsMacro UTF8_WARN_SUPER UTF8_WARN_SURROGATE UTF8f UTF8fARG
+syn keyword xsMacro UTF_ACCUMULATION_OVERFLOW_MASK UTF_ACCUMULATION_SHIFT
+syn keyword xsMacro UTF_CONTINUATION_MARK UTF_CONTINUATION_MASK
+syn keyword xsMacro UTF_START_MARK UTF_START_MASK UTF_TO_NATIVE
+syn keyword xsMacro UVCHR_IS_INVARIANT UVCHR_SKIP UVSIZE UVTYPE UVXf UV_DIG
+syn keyword xsMacro UV_MAX UV_MAX_P1 UV_MAX_P1_HALF UV_MIN UVf U_32 U_I U_L
+syn keyword xsMacro U_S U_V Uid_t_f Uid_t_sign Uid_t_size VAL_EAGAIN
+syn keyword xsMacro VAL_O_NONBLOCK VCMP VERB VNORMAL VNUMIFY VOL VSTRINGIFY
+syn keyword xsMacro VTBL_amagic VTBL_amagicelem VTBL_arylen VTBL_bm
+syn keyword xsMacro VTBL_collxfrm VTBL_dbline VTBL_defelem VTBL_env
+syn keyword xsMacro VTBL_envelem VTBL_fm VTBL_glob VTBL_isa VTBL_isaelem
+syn keyword xsMacro VTBL_mglob VTBL_nkeys VTBL_pack VTBL_packelem VTBL_pos
+syn keyword xsMacro VTBL_regdata VTBL_regdatum VTBL_regexp VTBL_sigelem
+syn keyword xsMacro VTBL_substr VTBL_sv VTBL_taint VTBL_uvar VTBL_vec
+syn keyword xsMacro VT_NATIVE VUTIL_REPLACE_CORE VVERIFY WARN_ALL
+syn keyword xsMacro WARN_ALLstring WARN_AMBIGUOUS WARN_BAREWORD WARN_CLOSED
+syn keyword xsMacro WARN_CLOSURE WARN_DEBUGGING WARN_DEPRECATED WARN_DIGIT
+syn keyword xsMacro WARN_EXEC WARN_EXITING WARN_EXPERIMENTAL
+syn keyword xsMacro WARN_EXPERIMENTAL__AUTODEREF WARN_EXPERIMENTAL__BITWISE
+syn keyword xsMacro WARN_EXPERIMENTAL__CONST_ATTR
+syn keyword xsMacro WARN_EXPERIMENTAL__LEXICAL_SUBS
+syn keyword xsMacro WARN_EXPERIMENTAL__LEXICAL_TOPIC
+syn keyword xsMacro WARN_EXPERIMENTAL__POSTDEREF
+syn keyword xsMacro WARN_EXPERIMENTAL__REFALIASING
+syn keyword xsMacro WARN_EXPERIMENTAL__REGEX_SETS
+syn keyword xsMacro WARN_EXPERIMENTAL__RE_STRICT
+syn keyword xsMacro WARN_EXPERIMENTAL__SIGNATURES
+syn keyword xsMacro WARN_EXPERIMENTAL__SMARTMATCH
+syn keyword xsMacro WARN_EXPERIMENTAL__WIN32_PERLIO WARN_GLOB
+syn keyword xsMacro WARN_ILLEGALPROTO WARN_IMPRECISION WARN_INPLACE
+syn keyword xsMacro WARN_INTERNAL WARN_IO WARN_LAYER WARN_LOCALE WARN_MALLOC
+syn keyword xsMacro WARN_MISC WARN_MISSING WARN_NEWLINE WARN_NONCHAR
+syn keyword xsMacro WARN_NONEstring WARN_NON_UNICODE WARN_NUMERIC WARN_ONCE
+syn keyword xsMacro WARN_OVERFLOW WARN_PACK WARN_PARENTHESIS WARN_PIPE
+syn keyword xsMacro WARN_PORTABLE WARN_PRECEDENCE WARN_PRINTF WARN_PROTOTYPE
+syn keyword xsMacro WARN_QW WARN_RECURSION WARN_REDEFINE WARN_REDUNDANT
+syn keyword xsMacro WARN_REGEXP WARN_RESERVED WARN_SEMICOLON WARN_SEVERE
+syn keyword xsMacro WARN_SIGNAL WARN_SUBSTR WARN_SURROGATE WARN_SYNTAX
+syn keyword xsMacro WARN_SYSCALLS WARN_TAINT WARN_THREADS WARN_UNINITIALIZED
+syn keyword xsMacro WARN_UNOPENED WARN_UNPACK WARN_UNTIE WARN_UTF8 WARN_VOID
+syn keyword xsMacro WARNshift WARNsize WB_ENUM_COUNT WEXITSTATUS WHEN WHILE
+syn keyword xsMacro WHILEM WHILEM_A_max WHILEM_A_max_fail WHILEM_A_min
+syn keyword xsMacro WHILEM_A_min_fail WHILEM_A_pre WHILEM_A_pre_fail
+syn keyword xsMacro WHILEM_B_max WHILEM_B_max_fail WHILEM_B_min
+syn keyword xsMacro WHILEM_B_min_fail WIDEST_UTYPE WIFEXITED WIFSIGNALED
+syn keyword xsMacro WIFSTOPPED WIN32SCK_IS_STDSCK WNOHANG WORD WSTOPSIG
+syn keyword xsMacro WTERMSIG WUNTRACED XDIGIT_VALUE XHvTOTALKEYS
+syn keyword xsMacro XOPd_xop_class XOPd_xop_desc XOPd_xop_name XOPd_xop_peep
+syn keyword xsMacro XOPf_xop_class XOPf_xop_desc XOPf_xop_name XOPf_xop_peep
+syn keyword xsMacro XPUSHTARG XPUSHi XPUSHmortal XPUSHn XPUSHp XPUSHs XPUSHu
+syn keyword xsMacro XPUSHundef XS XSANY XSINTERFACE_CVT XSINTERFACE_CVT_ANON
+syn keyword xsMacro XSINTERFACE_FUNC XSINTERFACE_FUNC_SET XSPROTO XSRETURN
+syn keyword xsMacro XSRETURN_EMPTY XSRETURN_IV XSRETURN_NO XSRETURN_NV
+syn keyword xsMacro XSRETURN_PV XSRETURN_PVN XSRETURN_UNDEF XSRETURN_UV
+syn keyword xsMacro XSRETURN_YES XST_mIV XST_mNO XST_mNV XST_mPV XST_mPVN
+syn keyword xsMacro XST_mUNDEF XST_mUV XST_mYES XS_APIVERSION_BOOTCHECK
+syn keyword xsMacro XS_APIVERSION_POPMARK_BOOTCHECK
+syn keyword xsMacro XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK
+syn keyword xsMacro XS_BOTHVERSION_BOOTCHECK XS_BOTHVERSION_POPMARK_BOOTCHECK
+syn keyword xsMacro XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK
+syn keyword xsMacro XS_DYNAMIC_FILENAME XS_EXTERNAL XS_INTERNAL
+syn keyword xsMacro XS_SETXSUBFN_POPMARK XS_VERSION_BOOTCHECK XSprePUSH
+syn keyword xsMacro XTENDED_PAT_MOD XopDISABLE XopENABLE XopENTRY
+syn keyword xsMacro XopENTRYCUSTOM XopENTRY_set XopFLAGS YADAYADA YIELD
+syn keyword xsMacro YYEMPTY YYSTYPE_IS_DECLARED YYSTYPE_IS_TRIVIAL
+syn keyword xsMacro YYTOKENTYPE Zero ZeroD _ _CANNOT _CC_ALPHA
+syn keyword xsMacro _CC_ALPHANUMERIC _CC_ASCII _CC_BLANK _CC_CASED
+syn keyword xsMacro _CC_CHARNAME_CONT _CC_CNTRL _CC_DIGIT _CC_GRAPH
+syn keyword xsMacro _CC_IDFIRST _CC_IS_IN_SOME_FOLD _CC_LOWER
+syn keyword xsMacro _CC_MNEMONIC_CNTRL _CC_NONLATIN1_FOLD
+syn keyword xsMacro _CC_NONLATIN1_SIMPLE_FOLD _CC_NON_FINAL_FOLD _CC_PRINT
+syn keyword xsMacro _CC_PUNCT _CC_QUOTEMETA _CC_SPACE _CC_UPPER _CC_VERTSPACE
+syn keyword xsMacro _CC_WORDCHAR _CC_XDIGIT _CC_mask _CC_mask_A
+syn keyword xsMacro _CHECK_AND_OUTPUT_WIDE_LOCALE_CP_MSG
+syn keyword xsMacro _CHECK_AND_OUTPUT_WIDE_LOCALE_UTF8_MSG
+syn keyword xsMacro _CHECK_AND_WARN_PROBLEMATIC_LOCALE
+syn keyword xsMacro _CORE_SWASH_INIT_ACCEPT_INVLIST
+syn keyword xsMacro _CORE_SWASH_INIT_RETURN_IF_UNDEF
+syn keyword xsMacro _CORE_SWASH_INIT_USER_DEFINED_PROPERTY _CPERLarg
+syn keyword xsMacro _FIRST_NON_SWASH_CC _GNU_SOURCE
+syn keyword xsMacro _HAS_NONLATIN1_FOLD_CLOSURE_ONLY_FOR_USE_BY_REGCOMP_DOT_C_AND_REGEXEC_DOT_C
+syn keyword xsMacro _HAS_NONLATIN1_SIMPLE_FOLD_CLOSURE_ONLY_FOR_USE_BY_REGCOMP_DOT_C_AND_REGEXEC_DOT_C
+syn keyword xsMacro _HIGHEST_REGCOMP_DOT_H_SYNC _INC_PERL_XSUB_H
+syn keyword xsMacro _IS_IN_SOME_FOLD_ONLY_FOR_USE_BY_REGCOMP_DOT_C
+syn keyword xsMacro _IS_MNEMONIC_CNTRL_ONLY_FOR_USE_BY_REGCOMP_DOT_C
+syn keyword xsMacro _IS_NON_FINAL_FOLD_ONLY_FOR_USE_BY_REGCOMP_DOT_C _LC_CAST
+syn keyword xsMacro _MEM_WRAP_NEEDS_RUNTIME_CHECK _MEM_WRAP_WILL_WRAP
+syn keyword xsMacro _NOT_IN_NUMERIC_STANDARD _NOT_IN_NUMERIC_UNDERLYING
+syn keyword xsMacro _NV_BODYLESS_UNION _OP_SIBPARENT_FIELDNAME _PERLIOL_H
+syn keyword xsMacro _PERLIO_H _PERL_OBJECT_THIS _REGEXP_COMMON
+syn keyword xsMacro _RXf_PMf_CHARSET_SHIFT _RXf_PMf_SHIFT_COMPILETIME
+syn keyword xsMacro _RXf_PMf_SHIFT_NEXT _STDIO_H _STDIO_INCLUDED _V
+syn keyword xsMacro _XPVCV_COMMON _XPV_HEAD __ASSERT_ __BASE_TWO_BYTE_HI
+syn keyword xsMacro __BASE_TWO_BYTE_LO __Inc__IPerl___
+syn keyword xsMacro __PATCHLEVEL_H_INCLUDED__ __PL_inf_float_int32
+syn keyword xsMacro __PL_nan_float_int32 __STDIO_LOADED
+syn keyword xsMacro __attribute__deprecated__ __attribute__format__
+syn keyword xsMacro __attribute__format__null_ok__ __attribute__malloc__
+syn keyword xsMacro __attribute__nonnull__ __attribute__noreturn__
+syn keyword xsMacro __attribute__pure__ __attribute__unused__
+syn keyword xsMacro __attribute__warn_unused_result__ __filbuf __flsbuf
+syn keyword xsMacro __has_builtin __perlapi_h__ _config_h_ _exit _filbuf
+syn keyword xsMacro _flsbuf _generic_LC _generic_LC_base
+syn keyword xsMacro _generic_LC_func_utf8 _generic_LC_swash_utf8
+syn keyword xsMacro _generic_LC_swash_uvchr _generic_LC_underscore
+syn keyword xsMacro _generic_LC_utf8 _generic_LC_uvchr _generic_func_utf8
+syn keyword xsMacro _generic_isCC _generic_isCC_A _generic_swash_uni
+syn keyword xsMacro _generic_swash_utf8 _generic_toFOLD_LC
+syn keyword xsMacro _generic_toLOWER_LC _generic_toUPPER_LC _generic_uni
+syn keyword xsMacro _generic_utf8 _generic_utf8_no_upper_latin1 _isQMC
+syn keyword xsMacro _isQUOTEMETA _swab_16_ _swab_32_ _swab_64_ aTHXa aTHXo
+syn keyword xsMacro aTHXo_ aTHXx aTHXx_ abort accept access
+syn keyword xsMacro anchored_end_shift anchored_offset anchored_substr
+syn keyword xsMacro anchored_utf8 asctime assert assert_ assert_not_ROK
+syn keyword xsMacro assert_not_glob atoll av_tindex bcmp bind blk_eval
+syn keyword xsMacro blk_format blk_gimme blk_givwhen blk_loop blk_oldcop
+syn keyword xsMacro blk_oldmarksp blk_oldpm blk_oldscopesp blk_oldsp blk_sub
+syn keyword xsMacro blk_u16 bool boolSV cBINOP cBINOPo cBINOPx cBOOL cCOP
+syn keyword xsMacro cCOPo cCOPx cGVOP_gv cGVOPo_gv cGVOPx_gv cLISTOP cLISTOPo
+syn keyword xsMacro cLISTOPx cLOGOP cLOGOPo cLOGOPx cLOOP cLOOPo cLOOPx
+syn keyword xsMacro cMETHOPx cMETHOPx_meth cMETHOPx_rclass cPADOP cPADOPo
+syn keyword xsMacro cPADOPx cPMOP cPMOPo cPMOPx cPVOP cPVOPo cPVOPx cSVOP
+syn keyword xsMacro cSVOP_sv cSVOPo cSVOPo_sv cSVOPx cSVOPx_sv cSVOPx_svp
+syn keyword xsMacro cUNOP cUNOP_AUX cUNOP_AUXo cUNOP_AUXx cUNOPo cUNOPx chdir
+syn keyword xsMacro check_end_shift check_offset_max check_offset_min
+syn keyword xsMacro check_substr check_utf8 child_offset_bits chmod chsize
+syn keyword xsMacro ckDEAD ckWARN ckWARN2 ckWARN2_d ckWARN3 ckWARN3_d ckWARN4
+syn keyword xsMacro ckWARN4_d ckWARN_d close closedir connect cop_hints_2hv
+syn keyword xsMacro cop_hints_fetch_pv cop_hints_fetch_pvn
+syn keyword xsMacro cop_hints_fetch_pvs cop_hints_fetch_sv cophh_2hv
+syn keyword xsMacro cophh_copy cophh_delete_pv cophh_delete_pvn
+syn keyword xsMacro cophh_delete_pvs cophh_delete_sv cophh_fetch_pv
+syn keyword xsMacro cophh_fetch_pvn cophh_fetch_pvs cophh_fetch_sv cophh_free
+syn keyword xsMacro cophh_new_empty cophh_store_pv cophh_store_pvn
+syn keyword xsMacro cophh_store_pvs cophh_store_sv crypt ctermid ctime
+syn keyword xsMacro cv_ckproto cx_type cxstack cxstack_ix cxstack_max
+syn keyword xsMacro dATARGET dAX dAXMARK dEXT dEXTCONST dITEMS dJMPENV dMARK
+syn keyword xsMacro dMULTICALL dMY_CXT dMY_CXT_INTERP dMY_CXT_SV dNOOP
+syn keyword xsMacro dORIGMARK dPOPPOPiirl dPOPPOPnnrl dPOPPOPssrl dPOPTOPiirl
+syn keyword xsMacro dPOPTOPiirl_nomg dPOPTOPiirl_ul_nomg dPOPTOPnnrl
+syn keyword xsMacro dPOPTOPnnrl_nomg dPOPTOPssrl dPOPXiirl dPOPXiirl_ul_nomg
+syn keyword xsMacro dPOPXnnrl dPOPXssrl dPOPiv dPOPnv dPOPnv_nomg dPOPss
+syn keyword xsMacro dPOPuv dSAVEDERRNO dSAVE_ERRNO dSP dSS_ADD dTARG dTARGET
+syn keyword xsMacro dTARGETSTACKED dTHR dTHX dTHXa dTHXo dTHXoa dTHXs dTHXx
+syn keyword xsMacro dTOPiv dTOPnv dTOPss dTOPuv dUNDERBAR dVAR dXSARGS
+syn keyword xsMacro dXSBOOTARGSAPIVERCHK dXSBOOTARGSNOVERCHK
+syn keyword xsMacro dXSBOOTARGSXSAPIVERCHK dXSFUNCTION dXSI32 dXSTARG
+syn keyword xsMacro dXSUB_SYS deprecate djSP do_open dup dup2 endgrent
+syn keyword xsMacro endhostent endnetent endprotoent endpwent endservent
+syn keyword xsMacro environ execl execv execvp fcntl fd_set fdopen fileno
+syn keyword xsMacro float_end_shift float_max_offset float_min_offset
+syn keyword xsMacro float_substr float_utf8 flock flockfile foldEQ_utf8
+syn keyword xsMacro frewind fscanf fstat ftell ftruncate ftrylockfile
+syn keyword xsMacro funlockfile fwrite1 get_cvs getc_unlocked getegid geteuid
+syn keyword xsMacro getgid getgrent getgrgid getgrnam gethostbyaddr
+syn keyword xsMacro gethostbyname gethostent gethostname getlogin
+syn keyword xsMacro getnetbyaddr getnetbyname getnetent getpeername getpid
+syn keyword xsMacro getprotobyname getprotobynumber getprotoent getpwent
+syn keyword xsMacro getpwnam getpwuid getservbyname getservbyport getservent
+syn keyword xsMacro getsockname getsockopt getspnam gettimeofday getuid getw
+syn keyword xsMacro gv_AVadd gv_HVadd gv_IOadd gv_SVadd gv_autoload4
+syn keyword xsMacro gv_efullname3 gv_fetchmeth gv_fetchmeth_autoload
+syn keyword xsMacro gv_fetchmethod gv_fetchmethod_flags gv_fetchpvn
+syn keyword xsMacro gv_fetchpvs gv_fetchsv_nomg gv_fullname3 gv_init
+syn keyword xsMacro gv_method_changed gv_stashpvs htoni htonl htons htovl
+syn keyword xsMacro htovs hv_delete hv_delete_ent hv_deletehek hv_exists
+syn keyword xsMacro hv_exists_ent hv_fetch hv_fetch_ent hv_fetchhek hv_fetchs
+syn keyword xsMacro hv_iternext hv_magic hv_store hv_store_ent hv_store_flags
+syn keyword xsMacro hv_storehek hv_stores hv_undef ibcmp ibcmp_locale
+syn keyword xsMacro ibcmp_utf8 inet_addr inet_ntoa init_os_extras ioctl
+syn keyword xsMacro isALNUM isALNUMC isALNUMC_A isALNUMC_L1 isALNUMC_LC
+syn keyword xsMacro isALNUMC_LC_utf8 isALNUMC_LC_uvchr isALNUMC_uni
+syn keyword xsMacro isALNUMC_utf8 isALNUMU isALNUM_LC isALNUM_LC_utf8
+syn keyword xsMacro isALNUM_LC_uvchr isALNUM_lazy_if isALNUM_uni isALNUM_utf8
+syn keyword xsMacro isALPHA isALPHANUMERIC isALPHANUMERIC_A isALPHANUMERIC_L1
+syn keyword xsMacro isALPHANUMERIC_LC isALPHANUMERIC_LC_utf8
+syn keyword xsMacro isALPHANUMERIC_LC_uvchr isALPHANUMERIC_uni
+syn keyword xsMacro isALPHANUMERIC_utf8 isALPHAU isALPHA_A isALPHA_FOLD_EQ
+syn keyword xsMacro isALPHA_FOLD_NE isALPHA_L1 isALPHA_LC isALPHA_LC_utf8
+syn keyword xsMacro isALPHA_LC_uvchr isALPHA_uni isALPHA_utf8 isASCII
+syn keyword xsMacro isASCII_A isASCII_L1 isASCII_LC isASCII_LC_utf8
+syn keyword xsMacro isASCII_LC_uvchr isASCII_uni isASCII_utf8 isBLANK
+syn keyword xsMacro isBLANK_A isBLANK_L1 isBLANK_LC isBLANK_LC_uni
+syn keyword xsMacro isBLANK_LC_utf8 isBLANK_LC_uvchr isBLANK_uni isBLANK_utf8
+syn keyword xsMacro isCHARNAME_CONT isCNTRL isCNTRL_A isCNTRL_L1 isCNTRL_LC
+syn keyword xsMacro isCNTRL_LC_utf8 isCNTRL_LC_uvchr isCNTRL_uni isCNTRL_utf8
+syn keyword xsMacro isDIGIT isDIGIT_A isDIGIT_L1 isDIGIT_LC isDIGIT_LC_utf8
+syn keyword xsMacro isDIGIT_LC_uvchr isDIGIT_uni isDIGIT_utf8 isGRAPH
+syn keyword xsMacro isGRAPH_A isGRAPH_L1 isGRAPH_LC isGRAPH_LC_utf8
+syn keyword xsMacro isGRAPH_LC_uvchr isGRAPH_uni isGRAPH_utf8 isGV
+syn keyword xsMacro isGV_with_GP isGV_with_GP_off isGV_with_GP_on isIDCONT
+syn keyword xsMacro isIDCONT_A isIDCONT_L1 isIDCONT_LC isIDCONT_LC_utf8
+syn keyword xsMacro isIDCONT_LC_uvchr isIDCONT_uni isIDCONT_utf8 isIDFIRST
+syn keyword xsMacro isIDFIRST_A isIDFIRST_L1 isIDFIRST_LC isIDFIRST_LC_utf8
+syn keyword xsMacro isIDFIRST_LC_uvchr isIDFIRST_lazy_if isIDFIRST_uni
+syn keyword xsMacro isIDFIRST_utf8 isLEXWARN_off isLEXWARN_on isLOWER
+syn keyword xsMacro isLOWER_A isLOWER_L1 isLOWER_LC isLOWER_LC_utf8
+syn keyword xsMacro isLOWER_LC_uvchr isLOWER_uni isLOWER_utf8 isOCTAL
+syn keyword xsMacro isOCTAL_A isOCTAL_L1 isPRINT isPRINT_A isPRINT_L1
+syn keyword xsMacro isPRINT_LC isPRINT_LC_utf8 isPRINT_LC_uvchr isPRINT_uni
+syn keyword xsMacro isPRINT_utf8 isPSXSPC isPSXSPC_A isPSXSPC_L1 isPSXSPC_LC
+syn keyword xsMacro isPSXSPC_LC_utf8 isPSXSPC_LC_uvchr isPSXSPC_uni
+syn keyword xsMacro isPSXSPC_utf8 isPUNCT isPUNCT_A isPUNCT_L1 isPUNCT_LC
+syn keyword xsMacro isPUNCT_LC_utf8 isPUNCT_LC_uvchr isPUNCT_uni isPUNCT_utf8
+syn keyword xsMacro isREGEXP isSPACE isSPACE_A isSPACE_L1 isSPACE_LC
+syn keyword xsMacro isSPACE_LC_utf8 isSPACE_LC_uvchr isSPACE_uni isSPACE_utf8
+syn keyword xsMacro isUPPER isUPPER_A isUPPER_L1 isUPPER_LC isUPPER_LC_utf8
+syn keyword xsMacro isUPPER_LC_uvchr isUPPER_uni isUPPER_utf8 isUTF8_CHAR
+syn keyword xsMacro isVERTWS_uni isVERTWS_utf8 isWARN_ONCE isWARN_on
+syn keyword xsMacro isWARNf_on isWORDCHAR isWORDCHAR_A isWORDCHAR_L1
+syn keyword xsMacro isWORDCHAR_LC isWORDCHAR_LC_utf8 isWORDCHAR_LC_uvchr
+syn keyword xsMacro isWORDCHAR_lazy_if isWORDCHAR_uni isWORDCHAR_utf8
+syn keyword xsMacro isXDIGIT isXDIGIT_A isXDIGIT_L1 isXDIGIT_LC
+syn keyword xsMacro isXDIGIT_LC_utf8 isXDIGIT_LC_uvchr isXDIGIT_uni
+syn keyword xsMacro isXDIGIT_utf8 is_ANYOF_SYNTHETIC is_FOLDS_TO_MULTI_utf8
+syn keyword xsMacro is_HORIZWS_cp_high is_HORIZWS_high is_LAX_VERSION
+syn keyword xsMacro is_LNBREAK_latin1_safe is_LNBREAK_safe
+syn keyword xsMacro is_LNBREAK_utf8_safe is_MULTI_CHAR_FOLD_latin1_safe
+syn keyword xsMacro is_MULTI_CHAR_FOLD_utf8_safe
+syn keyword xsMacro is_MULTI_CHAR_FOLD_utf8_safe_part0
+syn keyword xsMacro is_MULTI_CHAR_FOLD_utf8_safe_part1 is_NONCHAR_utf8
+syn keyword xsMacro is_PATWS_cp is_PATWS_safe
+syn keyword xsMacro is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp
+syn keyword xsMacro is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8
+syn keyword xsMacro is_PROBLEMATIC_LOCALE_FOLD_cp
+syn keyword xsMacro is_PROBLEMATIC_LOCALE_FOLD_utf8 is_QUOTEMETA_high
+syn keyword xsMacro is_QUOTEMETA_high_part0 is_QUOTEMETA_high_part1
+syn keyword xsMacro is_REPLACEMENT_utf8_safe is_STRICT_VERSION
+syn keyword xsMacro is_SURROGATE_utf8 is_UTF8_CHAR_utf8_no_length_checks
+syn keyword xsMacro is_VERTWS_cp_high is_VERTWS_high is_XDIGIT_cp_high
+syn keyword xsMacro is_XDIGIT_high is_XPERLSPACE_cp_high is_XPERLSPACE_high
+syn keyword xsMacro is_ascii_string is_utf8_char_buf is_utf8_string_loc
+syn keyword xsMacro isatty isnormal kBINOP kCOP kGVOP_gv kLISTOP kLOGOP kLOOP
+syn keyword xsMacro kPADOP kPMOP kPVOP kSVOP kSVOP_sv kUNOP kUNOP_AUX kill
+syn keyword xsMacro killpg lex_stuff_pvs link listen lockf longjmp lseek
+syn keyword xsMacro lstat mPUSHi mPUSHn mPUSHp mPUSHs mPUSHu mXPUSHi mXPUSHn
+syn keyword xsMacro mXPUSHp mXPUSHs mXPUSHu memEQ memEQs memNE memNEs memchr
+syn keyword xsMacro memcmp memzero mkdir mktemp my my_binmode my_lstat
+syn keyword xsMacro my_setlocale my_snprintf my_sprintf my_stat my_strlcat
+syn keyword xsMacro my_strlcpy my_vsnprintf newATTRSUB newAV newGVgen newHV
+syn keyword xsMacro newIO newRV_inc newSUB newSVpadname newSVpvn_utf8
+syn keyword xsMacro newSVpvs newSVpvs_flags newSVpvs_share newXSproto ntohi
+syn keyword xsMacro ntohl ntohs opASSIGN op_lvalue open opendir pTHX_1
+syn keyword xsMacro pTHX_12 pTHX_2 pTHX_3 pTHX_4 pTHX_5 pTHX_6 pTHX_7 pTHX_8
+syn keyword xsMacro pTHX_9 pTHX_FORMAT pTHX_VALUE pTHX_VALUE_ pTHX__FORMAT
+syn keyword xsMacro pTHX__VALUE pTHX__VALUE_ pTHXo pTHXo_ pTHXx pTHXx_ pVAR
+syn keyword xsMacro pWARN_ALL pWARN_NONE pWARN_STD packWARN packWARN2
+syn keyword xsMacro packWARN3 packWARN4 pad_add_name_pvs pad_findmy_pvs
+syn keyword xsMacro pad_peg padadd_NO_DUP_CHECK padadd_OUR padadd_STALEOK
+syn keyword xsMacro padadd_STATE padnew_CLONE padnew_SAVE padnew_SAVESUB
+syn keyword xsMacro panic_write2 pause pclose pipe popen prepare_SV_for_RV
+syn keyword xsMacro pthread_attr_init pthread_condattr_default pthread_create
+syn keyword xsMacro pthread_key_create pthread_keycreate
+syn keyword xsMacro pthread_mutexattr_default pthread_mutexattr_init
+syn keyword xsMacro pthread_mutexattr_settype putc_unlocked putenv putw read
+syn keyword xsMacro readdir readdir64 recv recvfrom ref
+syn keyword xsMacro refcounted_he_fetch_pvs refcounted_he_new_pvs rename
+syn keyword xsMacro rewinddir rmdir safecalloc safefree safemalloc
+syn keyword xsMacro saferealloc save_aelem save_freeop save_freepv
+syn keyword xsMacro save_freesv save_helem save_mortalizesv save_op savepvs
+syn keyword xsMacro savesharedpvs sb_dstr sb_iters sb_m sb_maxiters
+syn keyword xsMacro sb_oldsave sb_orig sb_rflags sb_rx sb_rxres sb_rxtainted
+syn keyword xsMacro sb_s sb_strend sb_targ seedDrand01 seekdir select send
+syn keyword xsMacro sendto set_ANYOF_SYNTHETIC setbuf setgid setgrent
+syn keyword xsMacro sethostent setjmp setlinebuf setlocale setmode setnetent
+syn keyword xsMacro setprotoent setpwent setregid setreuid setservent
+syn keyword xsMacro setsockopt setuid setvbuf share_hek_hek sharepvn shutdown
+syn keyword xsMacro signal sleep socket socketpair specialWARN stat stdoutf
+syn keyword xsMacro strEQ strGE strGT strLE strLT strNE strchr strerror
+syn keyword xsMacro strnEQ strnNE strrchr strtoll strtoull sv_2bool
+syn keyword xsMacro sv_2bool_nomg sv_2iv sv_2nv sv_2pv sv_2pv_nolen
+syn keyword xsMacro sv_2pv_nomg sv_2pvbyte_nolen sv_2pvutf8_nolen sv_2uv
+syn keyword xsMacro sv_cathek sv_catpv_nomg sv_catpvn sv_catpvn_mg
+syn keyword xsMacro sv_catpvn_nomg sv_catpvn_nomg_maybeutf8
+syn keyword xsMacro sv_catpvn_nomg_utf8_upgrade sv_catpvs sv_catpvs_flags
+syn keyword xsMacro sv_catpvs_mg sv_catpvs_nomg sv_catsv sv_catsv_mg
+syn keyword xsMacro sv_catsv_nomg sv_catxmlpvs sv_cmp sv_cmp_locale
+syn keyword xsMacro sv_collxfrm sv_copypv_nomg sv_eq sv_force_normal
+syn keyword xsMacro sv_insert sv_mortalcopy sv_nolocking sv_nounlocking
+syn keyword xsMacro sv_or_pv_len_utf8 sv_pv sv_pvbyte sv_pvn_force
+syn keyword xsMacro sv_pvn_force_nomg sv_pvutf8 sv_setgid sv_setpvs
+syn keyword xsMacro sv_setpvs_mg sv_setref_pvs sv_setsv sv_setsv_nomg
+syn keyword xsMacro sv_setuid sv_taint sv_unref sv_usepvn sv_usepvn_mg
+syn keyword xsMacro sv_utf8_upgrade sv_utf8_upgrade_flags
+syn keyword xsMacro sv_utf8_upgrade_nomg tTHX telldir times tmpfile tmpnam
+syn keyword xsMacro toCTRL toFOLD toFOLD_A toFOLD_LC toFOLD_uni toFOLD_utf8
+syn keyword xsMacro toLOWER toLOWER_A toLOWER_L1 toLOWER_LATIN1 toLOWER_LC
+syn keyword xsMacro toLOWER_uni toLOWER_utf8 toTITLE toTITLE_A toTITLE_uni
+syn keyword xsMacro toTITLE_utf8 toUPPER toUPPER_A toUPPER_LATIN1_MOD
+syn keyword xsMacro toUPPER_LC toUPPER_uni toUPPER_utf8 to_uni_fold
+syn keyword xsMacro to_utf8_fold to_utf8_lower to_utf8_title to_utf8_upper
+syn keyword xsMacro truncate tryAMAGICbin_MG tryAMAGICunDEREF
+syn keyword xsMacro tryAMAGICunTARGETlist tryAMAGICun_MG ttyname umask uname
+syn keyword xsMacro unlink unpackWARN1 unpackWARN2 unpackWARN3 unpackWARN4
+syn keyword xsMacro utf8_to_uvchr_buf utime uvchr_to_utf8 uvchr_to_utf8_flags
+syn keyword xsMacro vTHX vfprintf vtohl vtohs wait want_vtbl_bm want_vtbl_fm
+syn keyword xsMacro whichsig write xio_any xio_dirp xiv_iv xlv_targoff
+syn keyword xsMacro xpv_len xuv_uv yystype
+
+" Define the default highlighting.
+hi def link xsPrivate Error
+hi def link xsSuperseded Error
+hi def link xsType Type
+hi def link xsString String
+hi def link xsConstant Constant
+hi def link xsException Exception
+hi def link xsKeyword Keyword
+hi def link xsFunction Function
+hi def link xsVariable Identifier
+hi def link xsMacro Macro
+
+let b:current_syntax = "xs"
+
+" vim: ts=8
diff --git a/runtime/syntax/xsd.vim b/runtime/syntax/xsd.vim
new file mode 100644
index 0000000..5ba6b44
--- /dev/null
+++ b/runtime/syntax/xsd.vim
@@ -0,0 +1,61 @@
+" Vim syntax file
+" Language: XSD (XML Schema)
+" Maintainer: Johannes Zellner <johannes@zellner.org>
+" Last Change: Tue, 27 Apr 2004 14:54:59 CEST
+" Filenames: *.xsd
+" $Id: xsd.vim,v 1.1 2004/06/13 18:20:48 vimboss Exp $
+
+" REFERENCES:
+" [1] http://www.w3.org/TR/xmlschema-0
+"
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime syntax/xml.vim
+
+syn cluster xmlTagHook add=xsdElement
+syn case match
+
+syn match xsdElement '\%(xsd:\)\@<=all'
+syn match xsdElement '\%(xsd:\)\@<=annotation'
+syn match xsdElement '\%(xsd:\)\@<=any'
+syn match xsdElement '\%(xsd:\)\@<=anyAttribute'
+syn match xsdElement '\%(xsd:\)\@<=appInfo'
+syn match xsdElement '\%(xsd:\)\@<=attribute'
+syn match xsdElement '\%(xsd:\)\@<=attributeGroup'
+syn match xsdElement '\%(xsd:\)\@<=choice'
+syn match xsdElement '\%(xsd:\)\@<=complexContent'
+syn match xsdElement '\%(xsd:\)\@<=complexType'
+syn match xsdElement '\%(xsd:\)\@<=documentation'
+syn match xsdElement '\%(xsd:\)\@<=element'
+syn match xsdElement '\%(xsd:\)\@<=enumeration'
+syn match xsdElement '\%(xsd:\)\@<=extension'
+syn match xsdElement '\%(xsd:\)\@<=field'
+syn match xsdElement '\%(xsd:\)\@<=group'
+syn match xsdElement '\%(xsd:\)\@<=import'
+syn match xsdElement '\%(xsd:\)\@<=include'
+syn match xsdElement '\%(xsd:\)\@<=key'
+syn match xsdElement '\%(xsd:\)\@<=keyref'
+syn match xsdElement '\%(xsd:\)\@<=length'
+syn match xsdElement '\%(xsd:\)\@<=list'
+syn match xsdElement '\%(xsd:\)\@<=maxInclusive'
+syn match xsdElement '\%(xsd:\)\@<=maxLength'
+syn match xsdElement '\%(xsd:\)\@<=minInclusive'
+syn match xsdElement '\%(xsd:\)\@<=minLength'
+syn match xsdElement '\%(xsd:\)\@<=pattern'
+syn match xsdElement '\%(xsd:\)\@<=redefine'
+syn match xsdElement '\%(xsd:\)\@<=restriction'
+syn match xsdElement '\%(xsd:\)\@<=schema'
+syn match xsdElement '\%(xsd:\)\@<=selector'
+syn match xsdElement '\%(xsd:\)\@<=sequence'
+syn match xsdElement '\%(xsd:\)\@<=simpleContent'
+syn match xsdElement '\%(xsd:\)\@<=simpleType'
+syn match xsdElement '\%(xsd:\)\@<=union'
+syn match xsdElement '\%(xsd:\)\@<=unique'
+
+hi def link xsdElement Statement
+
+" vim: ts=8
diff --git a/runtime/syntax/xslt.vim b/runtime/syntax/xslt.vim
new file mode 100644
index 0000000..900b8ca
--- /dev/null
+++ b/runtime/syntax/xslt.vim
@@ -0,0 +1,71 @@
+" Vim syntax file
+" Language: XSLT
+" Maintainer: Bogdan Barbu <l4b.bogdan.barbu@gmail.com>
+" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
+" Last Change: Fri, 17 Jan 2020 07:15:37 +0200
+" Filenames: *.xsl
+" $Id: xslt.vim,v 1.1 2004/06/13 15:52:10 vimboss Exp $
+
+" REFERENCES:
+" [1] http://www.w3.org/TR/xslt
+" [2] http://www.w3.org/TR/xslt20
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime syntax/xml.vim
+
+syn cluster xmlTagHook add=xslElement
+syn case match
+
+syn match xslElement '\%(xsl:\)\@<=analyze-string'
+syn match xslElement '\%(xsl:\)\@<=apply-imports'
+syn match xslElement '\%(xsl:\)\@<=apply-templates'
+syn match xslElement '\%(xsl:\)\@<=attribute'
+syn match xslElement '\%(xsl:\)\@<=attribute-set'
+syn match xslElement '\%(xsl:\)\@<=call-template'
+syn match xslElement '\%(xsl:\)\@<=character-map'
+syn match xslElement '\%(xsl:\)\@<=choose'
+syn match xslElement '\%(xsl:\)\@<=comment'
+syn match xslElement '\%(xsl:\)\@<=copy'
+syn match xslElement '\%(xsl:\)\@<=copy-of'
+syn match xslElement '\%(xsl:\)\@<=decimal-format'
+syn match xslElement '\%(xsl:\)\@<=document'
+syn match xslElement '\%(xsl:\)\@<=element'
+syn match xslElement '\%(xsl:\)\@<=fallback'
+syn match xslElement '\%(xsl:\)\@<=for-each'
+syn match xslElement '\%(xsl:\)\@<=for-each-group'
+syn match xslElement '\%(xsl:\)\@<=function'
+syn match xslElement '\%(xsl:\)\@<=if'
+syn match xslElement '\%(xsl:\)\@<=include'
+syn match xslElement '\%(xsl:\)\@<=import'
+syn match xslElement '\%(xsl:\)\@<=import-schema'
+syn match xslElement '\%(xsl:\)\@<=key'
+syn match xslElement '\%(xsl:\)\@<=message'
+syn match xslElement '\%(xsl:\)\@<=namespace'
+syn match xslElement '\%(xsl:\)\@<=namespace-alias'
+syn match xslElement '\%(xsl:\)\@<=number'
+syn match xslElement '\%(xsl:\)\@<=otherwise'
+syn match xslElement '\%(xsl:\)\@<=output'
+syn match xslElement '\%(xsl:\)\@<=param'
+syn match xslElement '\%(xsl:\)\@<=perform-sort'
+syn match xslElement '\%(xsl:\)\@<=processing-instruction'
+syn match xslElement '\%(xsl:\)\@<=preserve-space'
+syn match xslElement '\%(xsl:\)\@<=script'
+syn match xslElement '\%(xsl:\)\@<=sequence'
+syn match xslElement '\%(xsl:\)\@<=sort'
+syn match xslElement '\%(xsl:\)\@<=strip-space'
+syn match xslElement '\%(xsl:\)\@<=stylesheet'
+syn match xslElement '\%(xsl:\)\@<=template'
+syn match xslElement '\%(xsl:\)\@<=transform'
+syn match xslElement '\%(xsl:\)\@<=text'
+syn match xslElement '\%(xsl:\)\@<=value-of'
+syn match xslElement '\%(xsl:\)\@<=variable'
+syn match xslElement '\%(xsl:\)\@<=when'
+syn match xslElement '\%(xsl:\)\@<=with-param'
+
+hi def link xslElement Statement
+
+" vim: ts=8
diff --git a/runtime/syntax/xxd.vim b/runtime/syntax/xxd.vim
new file mode 100644
index 0000000..2f90b6b
--- /dev/null
+++ b/runtime/syntax/xxd.vim
@@ -0,0 +1,30 @@
+" Vim syntax file
+" Language: bin using xxd
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Last Change: Aug 31, 2016
+" Version: 11
+" Notes: use :help xxd to see how to invoke it
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_XXD
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match xxdAddress "^[0-9a-f]\+:" contains=xxdSep
+syn match xxdSep contained ":"
+syn match xxdAscii " .\{,16\}\r\=$"hs=s+2 contains=xxdDot
+syn match xxdDot contained "[.\r]"
+
+" Define the default highlighting.
+if !exists("skip_xxd_syntax_inits")
+
+ hi def link xxdAddress Constant
+ hi def link xxdSep Identifier
+ hi def link xxdAscii Statement
+
+endif
+
+let b:current_syntax = "xxd"
+
+" vim: ts=4
diff --git a/runtime/syntax/yacc.vim b/runtime/syntax/yacc.vim
new file mode 100644
index 0000000..3aa01e8
--- /dev/null
+++ b/runtime/syntax/yacc.vim
@@ -0,0 +1,120 @@
+" Vim syntax file
+" Language: Yacc
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Last Change: Mar 25, 2019
+" Version: 17
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_YACC
+"
+" Options: {{{1
+" g:yacc_uses_cpp : if this variable exists, then C++ is loaded rather than C
+
+" ---------------------------------------------------------------------
+" this version of syntax/yacc.vim requires 6.0 or later
+if exists("b:current_syntax")
+ syntax clear
+endif
+
+" ---------------------------------------------------------------------
+" Folding Support {{{1
+if has("folding")
+ com! -nargs=+ SynFold <args> fold
+else
+ com! -nargs=+ SynFold <args>
+endif
+
+" ---------------------------------------------------------------------
+" Read the C syntax to start with {{{1
+" Read the C/C++ syntax to start with
+let s:Cpath= fnameescape(expand("<sfile>:p:h").(exists("g:yacc_uses_cpp")? "/cpp.vim" : "/c.vim"))
+if !filereadable(s:Cpath)
+ for s:Cpath in split(globpath(&rtp,(exists("g:yacc_uses_cpp")? "syntax/cpp.vim" : "syntax/c.vim")),"\n")
+ if filereadable(fnameescape(s:Cpath))
+ let s:Cpath= fnameescape(s:Cpath)
+ break
+ endif
+ endfor
+endif
+exe "syn include @yaccCode ".s:Cpath
+
+" ---------------------------------------------------------------------
+" Yacc Clusters: {{{1
+syn cluster yaccInitCluster contains=yaccKey,yaccKeyActn,yaccBrkt,yaccType,yaccString,yaccUnionStart,yaccHeader2,yaccComment,yaccDefines,yaccParseParam,yaccParseOption
+syn cluster yaccRulesCluster contains=yaccNonterminal,yaccString,yaccComment
+
+" ---------------------------------------------------------------------
+" Yacc Sections: {{{1
+SynFold syn region yaccInit start='.'ms=s-1,rs=s-1 matchgroup=yaccSectionSep end='^%%\ze\(\s*/[*/].*\)\=$'me=e-2,re=e-2 contains=@yaccInitCluster nextgroup=yaccRules skipwhite skipempty contained
+SynFold syn region yaccInit2 start='\%^.'ms=s-1,rs=s-1 matchgroup=yaccSectionSep end='^%%\ze\(\s*/[*/].*\)\=$'me=e-2,re=e-2 contains=@yaccInitCluster nextgroup=yaccRules skipwhite skipempty
+SynFold syn region yaccHeader2 matchgroup=yaccSep start="^\s*\zs%{" end="^\s*%}" contains=@yaccCode nextgroup=yaccInit skipwhite skipempty contained
+SynFold syn region yaccHeader matchgroup=yaccSep start="^\s*\zs%{" end="^\s*%}" contains=@yaccCode nextgroup=yaccInit skipwhite skipempty
+SynFold syn region yaccRules matchgroup=yaccSectionSep start='^%%\ze\(\s*/[*/].*\)\=$' end='^%%\ze\(\s*/[*/].*\)\=$'me=e-2,re=e-2 contains=@yaccRulesCluster nextgroup=yaccEndCode skipwhite skipempty contained
+SynFold syn region yaccEndCode matchgroup=yaccSectionSep start='^%%\ze\(\s*/[*/].*\)\=$' end='\%$' contains=@yaccCode contained
+
+" ---------------------------------------------------------------------
+" Yacc Commands: {{{1
+syn match yaccDefines '^%define\s\+.*$'
+syn match yaccParseParam '%\(parse\|lex\)-param\>' skipwhite nextgroup=yaccParseParamStr
+syn match yaccParseOption '%\%(api\.pure\|pure-parser\|locations\|error-verbose\)\>'
+syn region yaccParseParamStr contained matchgroup=Delimiter start='{' end='}' contains=cStructure
+
+syn match yaccDelim "[:|]" contained
+syn match yaccOper "@\d\+" contained
+
+syn match yaccKey "^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>" contained
+syn match yaccKey "\s%\(prec\|expect\)\>" contained
+syn match yaccKey "\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+" contained
+syn keyword yaccKeyActn yyerrok yyclearin contained
+
+syn match yaccUnionStart "^%union" skipwhite skipnl nextgroup=yaccUnion contained
+SynFold syn region yaccUnion matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccCode contained
+syn match yaccBrkt "[<>]" contained
+syn match yaccType "<[a-zA-Z_][a-zA-Z0-9_]*>" contains=yaccBrkt contained
+
+SynFold syn region yaccNonterminal start="^\s*\a\w*\ze\_s*\(/\*\_.\{-}\*/\)\=\_s*:" matchgroup=yaccDelim end=";" matchgroup=yaccSectionSep end='^%%$'me=e-2,re=e-2 contains=yaccAction,yaccDelim,yaccString,yaccComment contained
+syn region yaccComment start="/\*" end="\*/"
+syn region yaccComment start="//" end="$"
+syn match yaccString "'[^']*'" contained
+
+
+" ---------------------------------------------------------------------
+" I'd really like to highlight just the outer {}. Any suggestions??? {{{1
+syn match yaccCurlyError "[{}]"
+SynFold syn region yaccAction matchgroup=yaccCurly start="{" end="}" contains=@yaccCode,yaccVar contained
+syn match yaccVar '\$\d\+\|\$\$\|\$<\I\i*>\$\|\$<\I\i*>\d\+' containedin=cParen,cPreProc,cMulti contained
+
+" ---------------------------------------------------------------------
+" Yacc synchronization: {{{1
+syn sync fromstart
+
+" ---------------------------------------------------------------------
+" Define the default highlighting. {{{1
+if !exists("skip_yacc_syn_inits")
+ hi def link yaccBrkt yaccStmt
+ hi def link yaccComment Comment
+ hi def link yaccCurly Delimiter
+ hi def link yaccCurlyError Error
+ hi def link yaccDefines cDefine
+ hi def link yaccDelim Delimiter
+ hi def link yaccKeyActn Special
+ hi def link yaccKey yaccStmt
+ hi def link yaccNonterminal Function
+ hi def link yaccOper yaccStmt
+ hi def link yaccParseOption cDefine
+ hi def link yaccParseParam yaccParseOption
+ hi def link yaccSectionSep Todo
+ hi def link yaccSep Delimiter
+ hi def link yaccStmt Statement
+ hi def link yaccString String
+ hi def link yaccType Type
+ hi def link yaccUnionStart yaccKey
+ hi def link yaccVar Special
+endif
+
+" ---------------------------------------------------------------------
+" Cleanup: {{{1
+delcommand SynFold
+let b:current_syntax = "yacc"
+
+" ---------------------------------------------------------------------
+" Modelines: {{{1
+" vim: ts=15 fdm=marker
diff --git a/runtime/syntax/yaml.vim b/runtime/syntax/yaml.vim
new file mode 100644
index 0000000..49f7d04
--- /dev/null
+++ b/runtime/syntax/yaml.vim
@@ -0,0 +1,243 @@
+" Vim syntax file
+" Language: YAML (YAML Ain't Markup Language) 1.2
+" Maintainer: Nikolai Pavlov <zyx.vim@gmail.com>
+" First author: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2015-03-28
+" removed duplicate yamlKeyValueDelimiter (pull #4799)
+
+if exists('b:current_syntax')
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Choose the schema to use
+" TODO: Validate schema
+if !exists('b:yaml_schema')
+ if exists('g:yaml_schema')
+ let b:yaml_schema = g:yaml_schema
+ else
+ let b:yaml_schema = 'core'
+ endif
+endif
+
+let s:ns_char = '\%([\n\r\uFEFF \t]\@!\p\)'
+let s:ns_word_char = '[[:alnum:]_\-]'
+let s:ns_uri_char = '\%(%\x\x\|'.s:ns_word_char.'\|[#/;?:@&=+$,.!~*''()[\]]\)'
+let s:ns_tag_char = '\%(%\x\x\|'.s:ns_word_char.'\|[#/;?:@&=+$.~*''()]\)'
+let s:c_ns_anchor_char = '\%([\n\r\uFEFF \t,[\]{}]\@!\p\)'
+let s:c_indicator = '[\-?:,[\]{}#&*!|>''"%@`]'
+let s:c_flow_indicator = '[,[\]{}]'
+
+let s:ns_char_without_c_indicator = substitute(s:ns_char, '\v\C[\zs', '\=s:c_indicator[1:-2]', '')
+
+let s:_collection = '[^\@!\(\%(\\\.\|\[^\\\]]\)\+\)]'
+let s:_neg_collection = '[^\(\%(\\\.\|\[^\\\]]\)\+\)]'
+function s:SimplifyToAssumeAllPrintable(p)
+ return substitute(a:p, '\V\C\\%('.s:_collection.'\\@!\\p\\)', '[^\1]', '')
+endfunction
+let s:ns_char = s:SimplifyToAssumeAllPrintable(s:ns_char)
+let s:ns_char_without_c_indicator = s:SimplifyToAssumeAllPrintable(s:ns_char_without_c_indicator)
+let s:c_ns_anchor_char = s:SimplifyToAssumeAllPrintable(s:c_ns_anchor_char)
+
+function s:SimplifyAdjacentCollections(p)
+ return substitute(a:p, '\V\C'.s:_collection.'\\|'.s:_collection, '[\1\2]', 'g')
+endfunction
+let s:ns_uri_char = s:SimplifyAdjacentCollections(s:ns_uri_char)
+let s:ns_tag_char = s:SimplifyAdjacentCollections(s:ns_tag_char)
+
+let s:c_verbatim_tag = '!<'.s:ns_uri_char.'\+>'
+let s:c_named_tag_handle = '!'.s:ns_word_char.'\+!'
+let s:c_secondary_tag_handle = '!!'
+let s:c_primary_tag_handle = '!'
+let s:c_tag_handle = '\%('.s:c_named_tag_handle.
+ \ '\|'.s:c_secondary_tag_handle.
+ \ '\|'.s:c_primary_tag_handle.'\)'
+let s:c_ns_shorthand_tag = s:c_tag_handle . s:ns_tag_char.'\+'
+let s:c_non_specific_tag = '!'
+let s:c_ns_tag_property = s:c_verbatim_tag.
+ \ '\|'.s:c_ns_shorthand_tag.
+ \ '\|'.s:c_non_specific_tag
+
+let s:c_ns_anchor_name = s:c_ns_anchor_char.'\+'
+let s:c_ns_anchor_property = '&'.s:c_ns_anchor_name
+let s:c_ns_alias_node = '\*'.s:c_ns_anchor_name
+
+let s:ns_directive_name = s:ns_char.'\+'
+
+let s:ns_local_tag_prefix = '!'.s:ns_uri_char.'*'
+let s:ns_global_tag_prefix = s:ns_tag_char.s:ns_uri_char.'*'
+let s:ns_tag_prefix = s:ns_local_tag_prefix.
+ \ '\|'.s:ns_global_tag_prefix
+
+let s:ns_plain_safe_out = s:ns_char
+let s:ns_plain_safe_in = '\%('.s:c_flow_indicator.'\@!'.s:ns_char.'\)'
+
+let s:ns_plain_safe_in = substitute(s:ns_plain_safe_in, '\V\C\\%('.s:_collection.'\\@!'.s:_neg_collection.'\\)', '[^\1\2]', '')
+let s:ns_plain_safe_in_without_colhash = substitute(s:ns_plain_safe_in, '\V\C'.s:_neg_collection, '[^\1:#]', '')
+let s:ns_plain_safe_out_without_colhash = substitute(s:ns_plain_safe_out, '\V\C'.s:_neg_collection, '[^\1:#]', '')
+
+let s:ns_plain_first_in = '\%('.s:ns_char_without_c_indicator.'\|[?:\-]\%('.s:ns_plain_safe_in.'\)\@=\)'
+let s:ns_plain_first_out = '\%('.s:ns_char_without_c_indicator.'\|[?:\-]\%('.s:ns_plain_safe_out.'\)\@=\)'
+
+let s:ns_plain_char_in = '\%('.s:ns_char.'#\|:'.s:ns_plain_safe_in.'\|'.s:ns_plain_safe_in_without_colhash.'\)'
+let s:ns_plain_char_out = '\%('.s:ns_char.'#\|:'.s:ns_plain_safe_out.'\|'.s:ns_plain_safe_out_without_colhash.'\)'
+
+let s:ns_plain_out = s:ns_plain_first_out . s:ns_plain_char_out.'*'
+let s:ns_plain_in = s:ns_plain_first_in . s:ns_plain_char_in.'*'
+
+
+syn keyword yamlTodo contained TODO FIXME XXX NOTE
+
+syn region yamlComment display oneline start='\%\(^\|\s\)#' end='$'
+ \ contains=yamlTodo
+
+execute 'syn region yamlDirective oneline start='.string('^\ze%'.s:ns_directive_name.'\s\+').' '.
+ \ 'end="$" '.
+ \ 'contains=yamlTAGDirective,'.
+ \ 'yamlYAMLDirective,'.
+ \ 'yamlReservedDirective '.
+ \ 'keepend'
+
+syn match yamlTAGDirective '%TAG\s\+' contained nextgroup=yamlTagHandle
+execute 'syn match yamlTagHandle contained nextgroup=yamlTagPrefix '.string(s:c_tag_handle.'\s\+')
+execute 'syn match yamlTagPrefix contained nextgroup=yamlComment ' . string(s:ns_tag_prefix)
+
+syn match yamlYAMLDirective '%YAML\s\+' contained nextgroup=yamlYAMLVersion
+syn match yamlYAMLVersion '\d\+\.\d\+' contained nextgroup=yamlComment
+
+execute 'syn match yamlReservedDirective contained nextgroup=yamlComment '.
+ \string('%\%(\%(TAG\|YAML\)\s\)\@!'.s:ns_directive_name)
+
+syn region yamlFlowString matchgroup=yamlFlowStringDelimiter start='"' skip='\\"' end='"'
+ \ contains=yamlEscape
+ \ nextgroup=yamlKeyValueDelimiter
+syn region yamlFlowString matchgroup=yamlFlowStringDelimiter start="'" skip="''" end="'"
+ \ contains=yamlSingleEscape
+ \ nextgroup=yamlKeyValueDelimiter
+syn match yamlEscape contained '\\\%([\\"abefnrtv\^0_ NLP\n]\|x\x\x\|u\x\{4}\|U\x\{8}\)'
+syn match yamlSingleEscape contained "''"
+
+syn match yamlBlockScalarHeader contained '\s\+\zs[|>]\%([+-]\=[1-9]\|[1-9]\=[+-]\)\='
+
+syn cluster yamlConstant contains=yamlBool,yamlNull
+
+syn cluster yamlFlow contains=yamlFlowString,yamlFlowMapping,yamlFlowCollection
+syn cluster yamlFlow add=yamlFlowMappingKey,yamlFlowMappingMerge
+syn cluster yamlFlow add=@yamlConstant,yamlPlainScalar,yamlFloat
+syn cluster yamlFlow add=yamlTimestamp,yamlInteger,yamlMappingKeyStart
+syn cluster yamlFlow add=yamlComment
+syn region yamlFlowMapping matchgroup=yamlFlowIndicator start='{' end='}' contains=@yamlFlow
+syn region yamlFlowCollection matchgroup=yamlFlowIndicator start='\[' end='\]' contains=@yamlFlow
+
+execute 'syn match yamlPlainScalar /'.s:ns_plain_out.'/'
+execute 'syn match yamlPlainScalar contained /'.s:ns_plain_in.'/'
+
+syn match yamlMappingKeyStart '?\ze\s'
+syn match yamlMappingKeyStart '?' contained
+
+execute 'syn match yamlFlowMappingKey /\%#=1'.s:ns_plain_in.'\%(\s\+'.s:ns_plain_in.'\)*\ze\s*:/ contained '.
+ \'nextgroup=yamlKeyValueDelimiter'
+syn match yamlFlowMappingMerge /<<\ze\s*:/ contained nextgroup=yamlKeyValueDelimiter
+
+syn match yamlBlockCollectionItemStart '^\s*\zs-\%(\s\+-\)*\s' nextgroup=yamlBlockMappingKey,yamlBlockMappingMerge
+" Use the old regexp engine, the NFA engine doesn't like all the \@ items.
+execute 'syn match yamlBlockMappingKey /\%#=1^\s*\zs'.s:ns_plain_out.'\%(\s\+'.s:ns_plain_out.'\)*\ze\s*:\%(\s\|$\)/ '.
+ \'nextgroup=yamlKeyValueDelimiter'
+execute 'syn match yamlBlockMappingKey /\%#=1\s*\zs'.s:ns_plain_out.'\%(\s\+'.s:ns_plain_out.'\)*\ze\s*:\%(\s\|$\)/ contained '.
+ \'nextgroup=yamlKeyValueDelimiter'
+syn match yamlBlockMappingMerge /^\s*\zs<<\ze:\%(\s\|$\)/ nextgroup=yamlKeyValueDelimiter
+syn match yamlBlockMappingMerge /<<\ze\s*:\%(\s\|$\)/ nextgroup=yamlKeyValueDelimiter contained
+
+syn match yamlKeyValueDelimiter /\s*:/ contained
+
+syn cluster yamlScalarWithSpecials contains=yamlPlainScalar,yamlBlockMappingKey,yamlFlowMappingKey
+
+let s:_bounder = s:SimplifyToAssumeAllPrintable('\%([[\]{}, \t]\@!\p\)')
+if b:yaml_schema is# 'json'
+ syn keyword yamlNull null contained containedin=@yamlScalarWithSpecials
+ syn keyword yamlBool true false
+ exe 'syn match yamlInteger /'.s:_bounder.'\@1<!\%(0\|-\=[1-9][0-9]*\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
+ exe 'syn match yamlFloat /'.s:_bounder.'\@1<!\%(-\=[1-9][0-9]*\%(\.[0-9]*\)\=\(e[-+]\=[0-9]\+\)\=\|0\|-\=\.inf\|\.nan\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
+elseif b:yaml_schema is# 'core'
+ syn keyword yamlNull null Null NULL contained containedin=@yamlScalarWithSpecials
+ syn keyword yamlBool true True TRUE false False FALSE contained containedin=@yamlScalarWithSpecials
+ exe 'syn match yamlNull /'.s:_bounder.'\@1<!\~'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
+ exe 'syn match yamlInteger /'.s:_bounder.'\@1<!\%([+-]\=\%(0\%(b[0-1_]\+\|[0-7_]\+\|x[0-9a-fA-F_]\+\)\=\|\%([1-9][0-9_]*\%(:[0-5]\=\d\)\+\)\)\|[1-9][0-9_]*\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
+ exe 'syn match yamlFloat /'.s:_bounder.'\@1<!\%([+-]\=\%(\%(\d[0-9_]*\)\.[0-9_]*\%([eE][+-]\=\d\+\)\=\|\.[0-9_]\+\%([eE][-+]\=[0-9]\+\)\=\|\d[0-9_]*\%(:[0-5]\=\d\)\+\.[0-9_]*\|\.\%(inf\|Inf\|INF\)\)\|\%(\.\%(nan\|NaN\|NAN\)\)\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
+elseif b:yaml_schema is# 'pyyaml'
+ syn keyword yamlNull null Null NULL contained containedin=@yamlScalarWithSpecials
+ syn keyword yamlBool true True TRUE false False FALSE yes Yes YES no No NO on On ON off Off OFF contained containedin=@yamlScalarWithSpecials
+ exe 'syn match yamlNull /'.s:_bounder.'\@1<!\~'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
+ exe 'syn match yamlFloat /'.s:_bounder.'\@1<!\%(\v[-+]?%(\d[0-9_]*)\.[0-9_]*%([eE][-+]\d+)?|\.[0-9_]+%([eE][-+]\d+)?|[-+]?\d[0-9_]*%(\:[0-5]?\d)+\.[0-9_]*|[-+]?\.%(inf|Inf|INF)|\.%(nan|NaN|NAN)\m\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
+ exe 'syn match yamlInteger /'.s:_bounder.'\@1<!\%(\v[-+]?0b[0-1_]+|[-+]?0[0-7_]+|[-+]?%(0|[1-9][0-9_]*)|[-+]?0x[0-9a-fA-F_]+|[-+]?[1-9][0-9_]*%(:[0-5]?\d)+\m\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
+ exe 'syn match yamlTimestamp /'.s:_bounder.'\@1<!\%(\v\d\d\d\d\-\d\d\-\d\d|\d\d\d\d \-\d\d? \-\d\d?%([Tt]|[ \t]+)\d\d?\:\d\d \:\d\d %(\.\d*)?%([ \t]*%(Z|[-+]\d\d?%(\:\d\d)?))?\m\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
+elseif b:yaml_schema is# 'failsafe'
+ " Nothing
+endif
+unlet s:_bounder
+
+
+execute 'syn match yamlNodeTag '.string(s:c_ns_tag_property)
+execute 'syn match yamlAnchor '.string(s:c_ns_anchor_property)
+execute 'syn match yamlAlias '.string(s:c_ns_alias_node)
+
+syn match yamlDocumentStart '^---\ze\%(\s\|$\)'
+syn match yamlDocumentEnd '^\.\.\.\ze\%(\s\|$\)'
+
+hi def link yamlTodo Todo
+hi def link yamlComment Comment
+
+hi def link yamlDocumentStart PreProc
+hi def link yamlDocumentEnd PreProc
+
+hi def link yamlDirectiveName Keyword
+
+hi def link yamlTAGDirective yamlDirectiveName
+hi def link yamlTagHandle String
+hi def link yamlTagPrefix String
+
+hi def link yamlYAMLDirective yamlDirectiveName
+hi def link yamlReservedDirective Error
+hi def link yamlYAMLVersion Number
+
+hi def link yamlString String
+hi def link yamlFlowString yamlString
+hi def link yamlFlowStringDelimiter yamlString
+hi def link yamlEscape SpecialChar
+hi def link yamlSingleEscape SpecialChar
+
+hi def link yamlBlockCollectionItemStart Label
+hi def link yamlBlockMappingKey Identifier
+hi def link yamlBlockMappingMerge Special
+
+hi def link yamlFlowMappingKey Identifier
+hi def link yamlFlowMappingMerge Special
+
+hi def link yamlMappingKeyStart Special
+hi def link yamlFlowIndicator Special
+hi def link yamlKeyValueDelimiter Special
+
+hi def link yamlConstant Constant
+
+hi def link yamlNull yamlConstant
+hi def link yamlBool yamlConstant
+
+hi def link yamlAnchor Type
+hi def link yamlAlias Type
+hi def link yamlNodeTag Type
+
+hi def link yamlInteger Number
+hi def link yamlFloat Float
+hi def link yamlTimestamp Number
+
+let b:current_syntax = "yaml"
+
+unlet s:ns_word_char s:ns_uri_char s:c_verbatim_tag s:c_named_tag_handle s:c_secondary_tag_handle s:c_primary_tag_handle s:c_tag_handle s:ns_tag_char s:c_ns_shorthand_tag s:c_non_specific_tag s:c_ns_tag_property s:c_ns_anchor_char s:c_ns_anchor_name s:c_ns_anchor_property s:c_ns_alias_node s:ns_char s:ns_directive_name s:ns_local_tag_prefix s:ns_global_tag_prefix s:ns_tag_prefix s:c_indicator s:ns_plain_safe_out s:c_flow_indicator s:ns_plain_safe_in s:ns_plain_first_in s:ns_plain_first_out s:ns_plain_char_in s:ns_plain_char_out s:ns_plain_out s:ns_plain_in s:ns_char_without_c_indicator s:ns_plain_safe_in_without_colhash s:ns_plain_safe_out_without_colhash
+unlet s:_collection s:_neg_collection
+delfunction s:SimplifyAdjacentCollections
+delfunction s:SimplifyToAssumeAllPrintable
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/z8a.vim b/runtime/syntax/z8a.vim
new file mode 100644
index 0000000..6809eb9
--- /dev/null
+++ b/runtime/syntax/z8a.vim
@@ -0,0 +1,101 @@
+" Vim syntax file
+" Language: Z80 assembler asz80
+" Maintainer: Milan Pikula <www@fornax.elf.stuba.sk>
+" Last Change: 2003 May 11
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+" Common Z80 Assembly instructions
+syn keyword z8aInstruction adc add and bit ccf cp cpd cpdr cpi cpir cpl
+syn keyword z8aInstruction daa di djnz ei exx halt im in
+syn keyword z8aInstruction ind ini indr inir jp jr ld ldd lddr ldi ldir
+syn keyword z8aInstruction neg nop or otdr otir out outd outi
+syn keyword z8aInstruction res rl rla rlc rlca rld
+syn keyword z8aInstruction rr rra rrc rrca rrd sbc scf set sla sra
+syn keyword z8aInstruction srl sub xor
+" syn keyword z8aInstruction push pop call ret reti retn inc dec ex rst
+
+" Any other stuff
+syn match z8aIdentifier "[a-z_][a-z0-9_]*"
+
+" Instructions changing stack
+syn keyword z8aSpecInst push pop call ret reti retn rst
+syn match z8aInstruction "\<inc\>"
+syn match z8aInstruction "\<dec\>"
+syn match z8aInstruction "\<ex\>"
+syn match z8aSpecInst "\<inc\s\+sp\>"me=s+3
+syn match z8aSpecInst "\<dec\s\+sp\>"me=s+3
+syn match z8aSpecInst "\<ex\s\+(\s*sp\s*)\s*,\s*hl\>"me=s+2
+
+"Labels
+syn match z8aLabel "[a-z_][a-z0-9_]*:"
+syn match z8aSpecialLabel "[a-z_][a-z0-9_]*::"
+
+" PreProcessor commands
+syn match z8aPreProc "\.org"
+syn match z8aPreProc "\.globl"
+syn match z8aPreProc "\.db"
+syn match z8aPreProc "\.dw"
+syn match z8aPreProc "\.ds"
+syn match z8aPreProc "\.byte"
+syn match z8aPreProc "\.word"
+syn match z8aPreProc "\.blkb"
+syn match z8aPreProc "\.blkw"
+syn match z8aPreProc "\.ascii"
+syn match z8aPreProc "\.asciz"
+syn match z8aPreProc "\.module"
+syn match z8aPreProc "\.title"
+syn match z8aPreProc "\.sbttl"
+syn match z8aPreProc "\.even"
+syn match z8aPreProc "\.odd"
+syn match z8aPreProc "\.area"
+syn match z8aPreProc "\.page"
+syn match z8aPreProc "\.setdp"
+syn match z8aPreProc "\.radix"
+syn match z8aInclude "\.include"
+syn match z8aPreCondit "\.if"
+syn match z8aPreCondit "\.else"
+syn match z8aPreCondit "\.endif"
+
+" Common strings
+syn match z8aString "\".*\""
+syn match z8aString "\'.*\'"
+
+" Numbers
+syn match z8aNumber "[0-9]\+"
+syn match z8aNumber "0[xXhH][0-9a-fA-F]\+"
+syn match z8aNumber "0[bB][0-1]*"
+syn match z8aNumber "0[oO\@qQ][0-7]\+"
+syn match z8aNumber "0[dD][0-9]\+"
+
+" Character constant
+syn match z8aString "\#\'."hs=s+1
+
+" Comments
+syn match z8aComment ";.*"
+
+syn case match
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link z8aSection Special
+hi def link z8aLabel Label
+hi def link z8aSpecialLabel Label
+hi def link z8aComment Comment
+hi def link z8aInstruction Statement
+hi def link z8aSpecInst Statement
+hi def link z8aInclude Include
+hi def link z8aPreCondit PreCondit
+hi def link z8aPreProc PreProc
+hi def link z8aNumber Number
+hi def link z8aString String
+
+
+let b:current_syntax = "z8a"
+" vim: ts=8
diff --git a/runtime/syntax/zig.vim b/runtime/syntax/zig.vim
new file mode 100644
index 0000000..e09b5e8
--- /dev/null
+++ b/runtime/syntax/zig.vim
@@ -0,0 +1,292 @@
+" Vim syntax file
+" Language: Zig
+" Upstream: https://github.com/ziglang/zig.vim
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+let s:zig_syntax_keywords = {
+ \ 'zigBoolean': ["true"
+ \ , "false"]
+ \ , 'zigNull': ["null"]
+ \ , 'zigType': ["bool"
+ \ , "f16"
+ \ , "f32"
+ \ , "f64"
+ \ , "f80"
+ \ , "f128"
+ \ , "void"
+ \ , "type"
+ \ , "anytype"
+ \ , "anyerror"
+ \ , "anyframe"
+ \ , "volatile"
+ \ , "linksection"
+ \ , "noreturn"
+ \ , "allowzero"
+ \ , "i0"
+ \ , "u0"
+ \ , "isize"
+ \ , "usize"
+ \ , "comptime_int"
+ \ , "comptime_float"
+ \ , "c_short"
+ \ , "c_ushort"
+ \ , "c_int"
+ \ , "c_uint"
+ \ , "c_long"
+ \ , "c_ulong"
+ \ , "c_longlong"
+ \ , "c_ulonglong"
+ \ , "c_longdouble"
+ \ , "anyopaque"]
+ \ , 'zigConstant': ["undefined"
+ \ , "unreachable"]
+ \ , 'zigConditional': ["if"
+ \ , "else"
+ \ , "switch"]
+ \ , 'zigRepeat': ["while"
+ \ , "for"]
+ \ , 'zigComparatorWord': ["and"
+ \ , "or"
+ \ , "orelse"]
+ \ , 'zigStructure': ["struct"
+ \ , "enum"
+ \ , "union"
+ \ , "error"
+ \ , "packed"
+ \ , "opaque"]
+ \ , 'zigException': ["error"]
+ \ , 'zigVarDecl': ["var"
+ \ , "const"
+ \ , "comptime"
+ \ , "threadlocal"]
+ \ , 'zigDummyVariable': ["_"]
+ \ , 'zigKeyword': ["fn"
+ \ , "try"
+ \ , "test"
+ \ , "pub"
+ \ , "usingnamespace"]
+ \ , 'zigExecution': ["return"
+ \ , "break"
+ \ , "continue"]
+ \ , 'zigMacro': ["defer"
+ \ , "errdefer"
+ \ , "async"
+ \ , "nosuspend"
+ \ , "await"
+ \ , "suspend"
+ \ , "resume"
+ \ , "export"
+ \ , "extern"]
+ \ , 'zigPreProc': ["catch"
+ \ , "inline"
+ \ , "noinline"
+ \ , "asm"
+ \ , "callconv"
+ \ , "noalias"]
+ \ , 'zigBuiltinFn': ["align"
+ \ , "@addWithOverflow"
+ \ , "@as"
+ \ , "@atomicLoad"
+ \ , "@atomicStore"
+ \ , "@bitCast"
+ \ , "@breakpoint"
+ \ , "@alignCast"
+ \ , "@alignOf"
+ \ , "@cDefine"
+ \ , "@cImport"
+ \ , "@cInclude"
+ \ , "@cUndef"
+ \ , "@clz"
+ \ , "@cmpxchgWeak"
+ \ , "@cmpxchgStrong"
+ \ , "@compileError"
+ \ , "@compileLog"
+ \ , "@ctz"
+ \ , "@popCount"
+ \ , "@divExact"
+ \ , "@divFloor"
+ \ , "@divTrunc"
+ \ , "@embedFile"
+ \ , "@export"
+ \ , "@extern"
+ \ , "@tagName"
+ \ , "@TagType"
+ \ , "@errorName"
+ \ , "@call"
+ \ , "@errorReturnTrace"
+ \ , "@fence"
+ \ , "@fieldParentPtr"
+ \ , "@field"
+ \ , "@unionInit"
+ \ , "@frameAddress"
+ \ , "@import"
+ \ , "@newStackCall"
+ \ , "@asyncCall"
+ \ , "@intToPtr"
+ \ , "@max"
+ \ , "@min"
+ \ , "@memcpy"
+ \ , "@memset"
+ \ , "@mod"
+ \ , "@mulAdd"
+ \ , "@mulWithOverflow"
+ \ , "@splat"
+ \ , "@src"
+ \ , "@bitOffsetOf"
+ \ , "@byteOffsetOf"
+ \ , "@offsetOf"
+ \ , "@OpaqueType"
+ \ , "@panic"
+ \ , "@prefetch"
+ \ , "@ptrCast"
+ \ , "@ptrToInt"
+ \ , "@rem"
+ \ , "@returnAddress"
+ \ , "@setCold"
+ \ , "@Type"
+ \ , "@shuffle"
+ \ , "@reduce"
+ \ , "@select"
+ \ , "@setRuntimeSafety"
+ \ , "@setEvalBranchQuota"
+ \ , "@setFloatMode"
+ \ , "@shlExact"
+ \ , "@This"
+ \ , "@hasDecl"
+ \ , "@hasField"
+ \ , "@shlWithOverflow"
+ \ , "@shrExact"
+ \ , "@sizeOf"
+ \ , "@bitSizeOf"
+ \ , "@sqrt"
+ \ , "@byteSwap"
+ \ , "@subWithOverflow"
+ \ , "@intCast"
+ \ , "@floatCast"
+ \ , "@intToFloat"
+ \ , "@floatToInt"
+ \ , "@boolToInt"
+ \ , "@errSetCast"
+ \ , "@truncate"
+ \ , "@typeInfo"
+ \ , "@typeName"
+ \ , "@TypeOf"
+ \ , "@atomicRmw"
+ \ , "@intToError"
+ \ , "@errorToInt"
+ \ , "@intToEnum"
+ \ , "@enumToInt"
+ \ , "@setAlignStack"
+ \ , "@frame"
+ \ , "@Frame"
+ \ , "@frameSize"
+ \ , "@bitReverse"
+ \ , "@Vector"
+ \ , "@sin"
+ \ , "@cos"
+ \ , "@tan"
+ \ , "@exp"
+ \ , "@exp2"
+ \ , "@log"
+ \ , "@log2"
+ \ , "@log10"
+ \ , "@fabs"
+ \ , "@floor"
+ \ , "@ceil"
+ \ , "@trunc"
+ \ , "@wasmMemorySize"
+ \ , "@wasmMemoryGrow"
+ \ , "@round"]
+ \ }
+
+function! s:syntax_keyword(dict)
+ for key in keys(a:dict)
+ execute 'syntax keyword' key join(a:dict[key], ' ')
+ endfor
+endfunction
+
+call s:syntax_keyword(s:zig_syntax_keywords)
+
+syntax match zigType "\v<[iu][1-9]\d*>"
+syntax match zigOperator display "\V\[-+/*=^&?|!><%~]"
+syntax match zigArrowCharacter display "\V->"
+
+" 12_34 (. but not ..)? (12_34)? (exponent 12_34)?
+syntax match zigDecNumber display "\v<\d%(_?\d)*%(\.\.@!)?%(\d%(_?\d)*)?%([eE][+-]?\d%(_?\d)*)?"
+syntax match zigHexNumber display "\v<0x\x%(_?\x)*%(\.\.@!)?%(\x%(_?\x)*)?%([pP][+-]?\d%(_?\d)*)?"
+syntax match zigOctNumber display "\v<0o\o%(_?\o)*"
+syntax match zigBinNumber display "\v<0b[01]%(_?[01])*"
+
+syntax match zigCharacterInvalid display contained /b\?'\zs[\n\r\t']\ze'/
+syntax match zigCharacterInvalidUnicode display contained /b'\zs[^[:cntrl:][:graph:][:alnum:][:space:]]\ze'/
+syntax match zigCharacter /b'\([^\\]\|\\\(.\|x\x\{2}\)\)'/ contains=zigEscape,zigEscapeError,zigCharacterInvalid,zigCharacterInvalidUnicode
+syntax match zigCharacter /'\([^\\]\|\\\(.\|x\x\{2}\|u\x\{4}\|U\x\{6}\)\)'/ contains=zigEscape,zigEscapeUnicode,zigEscapeError,zigCharacterInvalid
+
+syntax region zigBlock start="{" end="}" transparent fold
+
+syntax region zigCommentLine start="//" end="$" contains=zigTodo,@Spell
+syntax region zigCommentLineDoc start="//[/!]/\@!" end="$" contains=zigTodo,@Spell
+
+syntax match zigMultilineStringPrefix /c\?\\\\/ contained containedin=zigMultilineString
+syntax region zigMultilineString matchgroup=zigMultilineStringDelimiter start="c\?\\\\" end="$" contains=zigMultilineStringPrefix display
+
+syntax keyword zigTodo contained TODO
+
+syntax region zigString matchgroup=zigStringDelimiter start=+c\?"+ skip=+\\\\\|\\"+ end=+"+ oneline contains=zigEscape,zigEscapeUnicode,zigEscapeError,@Spell
+syntax match zigEscapeError display contained /\\./
+syntax match zigEscape display contained /\\\([nrt\\'"]\|x\x\{2}\)/
+syntax match zigEscapeUnicode display contained /\\\(u\x\{4}\|U\x\{6}\)/
+
+highlight default link zigDecNumber zigNumber
+highlight default link zigHexNumber zigNumber
+highlight default link zigOctNumber zigNumber
+highlight default link zigBinNumber zigNumber
+
+highlight default link zigBuiltinFn Statement
+highlight default link zigKeyword Keyword
+highlight default link zigType Type
+highlight default link zigCommentLine Comment
+highlight default link zigCommentLineDoc Comment
+highlight default link zigDummyVariable Comment
+highlight default link zigTodo Todo
+highlight default link zigString String
+highlight default link zigStringDelimiter String
+highlight default link zigMultilineString String
+highlight default link zigMultilineStringContent String
+highlight default link zigMultilineStringPrefix String
+highlight default link zigMultilineStringDelimiter Delimiter
+highlight default link zigCharacterInvalid Error
+highlight default link zigCharacterInvalidUnicode zigCharacterInvalid
+highlight default link zigCharacter Character
+highlight default link zigEscape Special
+highlight default link zigEscapeUnicode zigEscape
+highlight default link zigEscapeError Error
+highlight default link zigBoolean Boolean
+highlight default link zigNull Boolean
+highlight default link zigConstant Constant
+highlight default link zigNumber Number
+highlight default link zigArrowCharacter zigOperator
+highlight default link zigOperator Operator
+highlight default link zigStructure Structure
+highlight default link zigExecution Special
+highlight default link zigMacro Macro
+highlight default link zigConditional Conditional
+highlight default link zigComparatorWord Keyword
+highlight default link zigRepeat Repeat
+highlight default link zigSpecial Special
+highlight default link zigVarDecl Function
+highlight default link zigPreProc PreProc
+highlight default link zigException Exception
+
+delfunction s:syntax_keyword
+
+let b:current_syntax = "zig"
+
+let &cpo = s:cpo_save
+unlet! s:cpo_save
diff --git a/runtime/syntax/zimbu.vim b/runtime/syntax/zimbu.vim
new file mode 100644
index 0000000..1a7a485
--- /dev/null
+++ b/runtime/syntax/zimbu.vim
@@ -0,0 +1,160 @@
+" Vim syntax file
+" Language: Zimbu
+" Maintainer: Bram Moolenaar
+" Last Change: 2014 Nov 23
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn include @Ccode syntax/c.vim
+
+syn keyword zimbuTodo TODO FIXME XXX contained
+syn match zimbuNoBar "|" contained
+syn match zimbuParam "|[^| ]\+|" contained contains=zimbuNoBar
+syn match zimbuNoBacktick "`" contained
+syn match zimbuCode "`[^`]\+`" contained contains=zimbuNoBacktick
+syn match zimbuComment "#.*$" contains=zimbuTodo,zimbuParam,zimbuCode,@Spell
+syn match zimbuComment "/\*.\{-}\*/" contains=zimbuTodo,zimbuParam,zimbuCode,@Spell
+
+syn match zimbuChar "'\\\=.'"
+
+syn keyword zimbuBasicType bool status
+syn keyword zimbuBasicType int1 int2 int3 int4 int5 int6 int7
+syn keyword zimbuBasicType int9 int10 int11 int12 int13 int14 int15
+syn keyword zimbuBasicType int int8 int16 int32 int64 bigInt
+syn keyword zimbuBasicType nat nat8 byte nat16 nat32 nat64 bigNat
+syn keyword zimbuBasicType nat1 nat2 nat3 nat4 nat5 nat6 nat7
+syn keyword zimbuBasicType nat9 nat10 nat11 nat12 nat13 nat14 nat15
+syn keyword zimbuBasicType float float32 float64 float80 float128
+syn keyword zimbuBasicType fixed1 fixed2 fixed3 fixed4 fixed5 fixed6
+syn keyword zimbuBasicType fixed7 fixed8 fixed9 fixed10 fixed11 fixed12
+syn keyword zimbuBasicType fixed13 fixed14 fixed15
+
+syn keyword zimbuCompType string varString
+syn keyword zimbuCompType byteString varByteString
+syn keyword zimbuCompType tuple array list dict dictList set callback
+syn keyword zimbuCompType sortedList multiDict multiDictList multiSet
+syn keyword zimbuCompType complex complex32 complex64 complex80 complex128
+syn keyword zimbuCompType proc func def thread evalThread lock cond pipe
+
+syn keyword zimbuType VAR dyn type USE GET
+syn match zimbuType "IO.File"
+syn match zimbuType "IO.Stat"
+
+syn keyword zimbuStatement IF ELSE ELSEIF IFNIL WHILE REPEAT FOR IN TO STEP
+syn keyword zimbuStatement DO UNTIL SWITCH WITH
+syn keyword zimbuStatement TRY CATCH FINALLY
+syn keyword zimbuStatement GENERATE_IF GENERATE_ELSE GENERATE_ELSEIF
+syn keyword zimbuStatement GENERATE_ERROR
+syn keyword zimbuStatement BUILD_IF BUILD_ELSE BUILD_ELSEIF
+syn keyword zimbuStatement CASE DEFAULT FINAL ABSTRACT VIRTUAL DEFINE REPLACE
+syn keyword zimbuStatement IMPLEMENTS EXTENDS PARENT LOCAL
+syn keyword zimbuStatement PART ALIAS TYPE CONNECT WRAP
+syn keyword zimbuStatement BREAK CONTINUE PROCEED
+syn keyword zimbuStatement RETURN EXIT THROW DEFER
+syn keyword zimbuStatement IMPORT AS OPTIONS MAIN
+syn keyword zimbuStatement INTERFACE PIECE INCLUDE MODULE ENUM BITS
+syn keyword zimbuStatement SHARED STATIC
+syn keyword zimbuStatement LAMBDA
+syn match zimbuStatement "\<\(FUNC\|PROC\|DEF\)\>"
+syn match zimbuStatement "\<CLASS\>"
+syn match zimbuStatement "}"
+
+syn match zimbuAttribute "@backtrace=no\>"
+syn match zimbuAttribute "@backtrace=yes\>"
+syn match zimbuAttribute "@abstract\>"
+syn match zimbuAttribute "@earlyInit\>"
+syn match zimbuAttribute "@default\>"
+syn match zimbuAttribute "@define\>"
+syn match zimbuAttribute "@replace\>"
+syn match zimbuAttribute "@final\>"
+syn match zimbuAttribute "@primitive\>"
+syn match zimbuAttribute "@notOnExit\>"
+
+syn match zimbuAttribute "@private\>"
+syn match zimbuAttribute "@protected\>"
+syn match zimbuAttribute "@public\>"
+syn match zimbuAttribute "@local\>"
+syn match zimbuAttribute "@file\>"
+syn match zimbuAttribute "@directory\>"
+syn match zimbuAttribute "@read=private\>"
+syn match zimbuAttribute "@read=protected\>"
+syn match zimbuAttribute "@read=public\>"
+syn match zimbuAttribute "@read=file\>"
+syn match zimbuAttribute "@read=directory\>"
+syn match zimbuAttribute "@items=private\>"
+syn match zimbuAttribute "@items=protected\>"
+syn match zimbuAttribute "@items=public\>"
+syn match zimbuAttribute "@items=file\>"
+syn match zimbuAttribute "@items=directory\>"
+
+syn keyword zimbuMethod NEW EQUAL COPY COMPARE SIZE GET SET INIT EARLYINIT
+
+syn keyword zimbuOperator IS ISNOT ISA ISNOTA
+
+syn keyword zimbuModule ARG CHECK E GC IO LOG PROTO SYS HTTP ZC ZWT T TIME THREAD
+
+syn match zimbuImport "\.\zsPROTO"
+syn match zimbuImport "\.\zsCHEADER"
+
+"syn match zimbuString +"\([^"\\]\|\\.\)*\("\|$\)+ contains=zimbuStringExpr
+syn region zimbuString start=+"+ skip=+[^"\\]\|\\.+ end=+"\|$+ contains=zimbuStringExpr
+syn match zimbuString +R"\([^"]\|""\)*\("\|$\)+
+syn region zimbuLongString start=+''"+ end=+"''+
+syn match zimbuStringExpr +\\([^)]*)+hs=s+2,he=e-1 contained contains=zimbuString,zimbuParenPairOuter
+syn region zimbuParenPairOuter start=+(+ms=s+1 end=+)+me=e-1 contained contains=zimbuString,zimbuParenPair
+syn region zimbuParenPair start=+(+ end=+)+ contained contains=zimbuString,zimbuParenPair
+
+syn keyword zimbuFixed TRUE FALSE NIL THIS THISTYPE FAIL OK
+syn keyword zimbuError NULL
+
+" trailing whitespace
+syn match zimbuSpaceError display excludenl "\S\s\+$"ms=s+1
+" mixed tabs and spaces
+syn match zimbuSpaceError display " \+\t"
+syn match zimbuSpaceError display "\t\+ "
+
+syn match zimbuUses contained "\<uses([a-zA-Z_ ,]*)"
+syn match zimbuBlockgc contained "blockgc"
+syn match zimbuBlockComment contained " #.*"
+
+syn region zimbuCregion matchgroup=zimbuCblock start="^>>>" end="^<<<.*" contains=@Ccode,zimbuUses,zimbuBlockgc,zimbuBlockComment keepend
+
+" Assume long strings and C regions don't take more than 200 lines.
+syn sync minlines=200
+
+" When we find the start of a long string, without a # or " before it, we are
+" sure to be inside a long string.
+syn sync match zimbuLongStringSync grouphere zimbuLongString +^[^"#]*''\"+
+
+hi def link zimbuBasicType Type
+hi def link zimbuCompType Type
+hi def link zimbuType Type
+hi def link zimbuStatement Statement
+hi def link zimbuOperator Statement
+hi def link zimbuMethod PreProc
+hi def link zimbuModule PreProc
+hi def link zimbuImport PreProc
+hi def link zimbuUses PreProc
+hi def link zimbuBlockgc PreProc
+hi def link zimbuAttribute PreProc
+hi def link zimbuString Constant
+hi def link zimbuLongString Special
+hi def link zimbuChar Constant
+hi def link zimbuFixed Constant
+hi def link zimbuComment Comment
+hi def link zimbuCommentStart zimbuComment
+hi def link zimbuBlockComment Comment
+hi def link zimbuCblock Comment
+hi def link zimbuTodo Todo
+hi def link zimbuParam Constant
+hi def link zimbuCode Statement
+hi def link zimbuNoBar Ignore
+hi def link zimbuNoBacktick Ignore
+hi def link zimbuSpaceError Error
+hi def link zimbuError Error
+
+let b:current_syntax = "zimbu"
+
+" vim: ts=8
diff --git a/runtime/syntax/zir.vim b/runtime/syntax/zir.vim
new file mode 100644
index 0000000..6553d32
--- /dev/null
+++ b/runtime/syntax/zir.vim
@@ -0,0 +1,49 @@
+" Vim syntax file
+" Language: Zir
+" Upstream: https://github.com/ziglang/zig.vim
+
+if exists("b:current_syntax")
+ finish
+endif
+let b:current_syntax = "zir"
+
+syn region zirCommentLine start=";" end="$" contains=zirTodo,@Spell
+
+syn region zirBlock start="{" end="}" transparent fold
+
+syn keyword zirKeyword primitive fntype int str as ptrtoint fieldptr deref asm unreachable export ref fn
+
+syn keyword zirTodo contained TODO
+
+syn region zirString start=+c\?"+ skip=+\\\\\|\\"+ end=+"+ oneline contains=zirEscape,zirEscapeUnicode,zirEscapeError,@Spell
+
+syn match zirEscapeError display contained /\\./
+syn match zirEscape display contained /\\\([nrt\\'"]\|x\x\{2}\)/
+syn match zirEscapeUnicode display contained /\\\(u\x\{4}\|U\x\{6}\)/
+
+syn match zirDecNumber display "\<[0-9]\+\%(.[0-9]\+\)\=\%([eE][+-]\?[0-9]\+\)\="
+syn match zirHexNumber display "\<0x[a-fA-F0-9]\+\%([a-fA-F0-9]\+\%([pP][+-]\?[0-9]\+\)\?\)\="
+syn match zirOctNumber display "\<0o[0-7]\+"
+syn match zirBinNumber display "\<0b[01]\+\%(.[01]\+\%([eE][+-]\?[0-9]\+\)\?\)\="
+
+syn match zirGlobal display "[^a-zA-Z0-9_]\?\zs@[a-zA-Z0-9_]\+"
+syn match zirLocal display "[^a-zA-Z0-9_]\?\zs%[a-zA-Z0-9_]\+"
+
+hi def link zirCommentLine Comment
+hi def link zirTodo Todo
+
+hi def link zirKeyword Keyword
+
+hi def link zirString Constant
+
+hi def link zirEscape Special
+hi def link zirEscapeUnicode zirEscape
+hi def link zirEscapeError Error
+
+hi def link zirDecNumber Constant
+hi def link zirHexNumber Constant
+hi def link zirOctNumber Constant
+hi def link zirBinNumber Constant
+
+hi def link zirGlobal Identifier
+hi def link zirLocal Identifier
diff --git a/runtime/syntax/zsh.vim b/runtime/syntax/zsh.vim
new file mode 100644
index 0000000..69671c5
--- /dev/null
+++ b/runtime/syntax/zsh.vim
@@ -0,0 +1,359 @@
+" Vim syntax file
+" Language: Zsh shell script
+" Maintainer: Christian Brabandt <cb@256bit.org>
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2022-07-26
+" License: Vim (see :h license)
+" Repository: https://github.com/chrisbra/vim-zsh
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+function! s:ContainedGroup()
+ " needs 7.4.2008 for execute() function
+ let result='TOP'
+ " vim-pandoc syntax defines the @langname cluster for embedded syntax languages
+ " However, if no syntax is defined yet, `syn list @zsh` will return
+ " "No syntax items defined", so make sure the result is actually a valid syn cluster
+ for cluster in ['markdownHighlight_zsh', 'zsh']
+ try
+ " markdown syntax defines embedded clusters as @markdownhighlight_<lang>,
+ " pandoc just uses @<lang>, so check both for both clusters
+ let a=split(execute('syn list @'. cluster), "\n")
+ if len(a) == 2 && a[0] =~# '^---' && a[1] =~? cluster
+ return '@'. cluster
+ endif
+ catch /E392/
+ " ignore
+ endtry
+ endfor
+ return result
+endfunction
+
+let s:contained=s:ContainedGroup()
+
+syn iskeyword @,48-57,_,192-255,#,-
+if get(g:, 'zsh_fold_enable', 0)
+ setlocal foldmethod=syntax
+endif
+
+syn match zshQuoted '\\.'
+syn match zshPOSIXQuoted '\\[xX][0-9a-fA-F]\{1,2}'
+syn match zshPOSIXQuoted '\\[0-7]\{1,3}'
+syn match zshPOSIXQuoted '\\u[0-9a-fA-F]\{1,4}'
+syn match zshPOSIXQuoted '\\U[1-9a-fA-F]\{1,8}'
+
+syn region zshString matchgroup=zshStringDelimiter start=+"+ end=+"+
+ \ contains=zshQuoted,@zshDerefs,@zshSubstQuoted fold
+syn region zshString matchgroup=zshStringDelimiter start=+'+ end=+'+ fold
+syn region zshPOSIXString matchgroup=zshStringDelimiter start=+\$'+
+ \ skip=+\\[\\']+ end=+'+ contains=zshPOSIXQuoted,zshQuoted
+syn match zshJobSpec '%\(\d\+\|?\=\w\+\|[%+-]\)'
+
+syn match zshNumber '[+-]\=\<\d\+\>'
+syn match zshNumber '[+-]\=\<0x\x\+\>'
+syn match zshNumber '[+-]\=\<0\o\+\>'
+syn match zshNumber '[+-]\=\d\+#[-+]\=\w\+\>'
+syn match zshNumber '[+-]\=\d\+\.\d\+\>'
+
+syn keyword zshPrecommand noglob nocorrect exec command builtin - time
+
+syn keyword zshDelimiter do done end
+
+syn keyword zshConditional if then elif else fi esac select
+
+syn keyword zshCase case nextgroup=zshCaseWord skipwhite
+syn match zshCaseWord /\S\+/ nextgroup=zshCaseIn skipwhite contained transparent
+syn keyword zshCaseIn in nextgroup=zshCasePattern skipwhite skipnl contained
+syn match zshCasePattern /\S[^)]*)/ contained
+
+syn keyword zshRepeat while until repeat
+
+syn keyword zshRepeat for foreach nextgroup=zshVariable skipwhite
+
+syn keyword zshException always
+
+syn keyword zshKeyword function nextgroup=zshKSHFunction skipwhite
+
+syn match zshKSHFunction contained '\w\S\+'
+syn match zshFunction '^\s*\k\+\ze\s*()'
+
+syn match zshOperator '||\|&&\|;\|&!\='
+
+ " <<<, <, <>, and variants.
+syn match zshRedir '\d\=\(<<<\|<&\s*[0-9p-]\=\|<>\?\)'
+ " >, >>, and variants.
+syn match zshRedir '\d\=\(>&\s*[0-9p-]\=\|&>>\?\|>>\?&\?\)[|!]\='
+ " | and |&, but only if it's not preceeded or
+ " followed by a | to avoid matching ||.
+syn match zshRedir '|\@1<!|&\=|\@!'
+
+syn region zshHereDoc matchgroup=zshRedir
+ \ start='<\@<!<<\s*\z([^<]\S*\)'
+ \ end='^\z1\>'
+ \ contains=@zshSubst,@zshDerefs,zshQuoted,zshPOSIXString
+syn region zshHereDoc matchgroup=zshRedir
+ \ start='<\@<!<<\s*\\\z(\S\+\)'
+ \ end='^\z1\>'
+ \ contains=@zshSubst,@zshDerefs,zshQuoted,zshPOSIXString
+syn region zshHereDoc matchgroup=zshRedir
+ \ start='<\@<!<<-\s*\\\=\z(\S\+\)'
+ \ end='^\s*\z1\>'
+ \ contains=@zshSubst,@zshDerefs,zshQuoted,zshPOSIXString
+syn region zshHereDoc matchgroup=zshRedir
+ \ start=+<\@<!<<\s*\(["']\)\z(\S\+\)\1+
+ \ end='^\z1\>'
+syn region zshHereDoc matchgroup=zshRedir
+ \ start=+<\@<!<<-\s*\(["']\)\z(\S\+\)\1+
+ \ end='^\s*\z1\>'
+
+syn match zshVariable '\<\h\w*' contained
+
+syn match zshVariableDef '\<\h\w*\ze+\=='
+" XXX: how safe is this?
+syn region zshVariableDef oneline
+ \ start='\$\@<!\<\h\w*\[' end='\]\ze+\?=\?'
+ \ contains=@zshSubst
+
+syn cluster zshDerefs contains=zshShortDeref,zshLongDeref,zshDeref,zshDollarVar
+
+syn match zshShortDeref '\$[!#$*@?_-]\w\@!'
+syn match zshShortDeref '\$[=^~]*[#+]*\d\+\>'
+
+syn match zshLongDeref '\$\%(ARGC\|argv\|status\|pipestatus\|CPUTYPE\|EGID\|EUID\|ERRNO\|GID\|HOST\|LINENO\|LOGNAME\)'
+syn match zshLongDeref '\$\%(MACHTYPE\|OLDPWD OPTARG\|OPTIND\|OSTYPE\|PPID\|PWD\|RANDOM\|SECONDS\|SHLVL\|signals\)'
+syn match zshLongDeref '\$\%(TRY_BLOCK_ERROR\|TTY\|TTYIDLE\|UID\|USERNAME\|VENDOR\|ZSH_NAME\|ZSH_VERSION\|REPLY\|reply\|TERM\)'
+
+syn match zshDollarVar '\$\h\w*'
+syn match zshDeref '\$[=^~]*[#+]*\h\w*\>'
+
+syn match zshCommands '\%(^\|\s\)[.:]\ze\s'
+syn keyword zshCommands alias autoload bg bindkey break bye cap cd
+ \ chdir clone comparguments compcall compctl
+ \ compdescribe compfiles compgroups compquote
+ \ comptags comptry compvalues continue dirs
+ \ disable disown echo echotc echoti emulate
+ \ enable eval exec exit export false fc fg
+ \ functions getcap getln getopts hash history
+ \ jobs kill let limit log logout popd print
+ \ printf prompt pushd pushln pwd r read
+ \ rehash return sched set setcap shift
+ \ source stat suspend test times trap true
+ \ ttyctl type ulimit umask unalias unfunction
+ \ unhash unlimit unset vared wait
+ \ whence where which zcompile zformat zftp zle
+ \ zmodload zparseopts zprof zpty zrecompile
+ \ zregexparse zsocket zstyle ztcp
+
+" Options, generated by from the zsh source with the make-options.zsh script.
+syn case ignore
+syn match zshOptStart
+ \ /\v^\s*%(%(un)?setopt|set\s+[-+]o)/
+ \ nextgroup=zshOption skipwhite
+syn keyword zshOption nextgroup=zshOption,zshComment skipwhite contained
+ \ auto_cd no_auto_cd autocd noautocd auto_pushd no_auto_pushd autopushd noautopushd cdable_vars
+ \ no_cdable_vars cdablevars nocdablevars cd_silent no_cd_silent cdsilent nocdsilent chase_dots
+ \ no_chase_dots chasedots nochasedots chase_links no_chase_links chaselinks nochaselinks posix_cd
+ \ posixcd no_posix_cd noposixcd pushd_ignore_dups no_pushd_ignore_dups pushdignoredups
+ \ nopushdignoredups pushd_minus no_pushd_minus pushdminus nopushdminus pushd_silent no_pushd_silent
+ \ pushdsilent nopushdsilent pushd_to_home no_pushd_to_home pushdtohome nopushdtohome
+ \ always_last_prompt no_always_last_prompt alwayslastprompt noalwayslastprompt always_to_end
+ \ no_always_to_end alwaystoend noalwaystoend auto_list no_auto_list autolist noautolist auto_menu
+ \ no_auto_menu automenu noautomenu auto_name_dirs no_auto_name_dirs autonamedirs noautonamedirs
+ \ auto_param_keys no_auto_param_keys autoparamkeys noautoparamkeys auto_param_slash
+ \ no_auto_param_slash autoparamslash noautoparamslash auto_remove_slash no_auto_remove_slash
+ \ autoremoveslash noautoremoveslash bash_auto_list no_bash_auto_list bashautolist nobashautolist
+ \ complete_aliases no_complete_aliases completealiases nocompletealiases complete_in_word
+ \ no_complete_in_word completeinword nocompleteinword glob_complete no_glob_complete globcomplete
+ \ noglobcomplete hash_list_all no_hash_list_all hashlistall nohashlistall list_ambiguous
+ \ no_list_ambiguous listambiguous nolistambiguous list_beep no_list_beep listbeep nolistbeep
+ \ list_packed no_list_packed listpacked nolistpacked list_rows_first no_list_rows_first listrowsfirst
+ \ nolistrowsfirst list_types no_list_types listtypes nolisttypes menu_complete no_menu_complete
+ \ menucomplete nomenucomplete rec_exact no_rec_exact recexact norecexact bad_pattern no_bad_pattern
+ \ badpattern nobadpattern bare_glob_qual no_bare_glob_qual bareglobqual nobareglobqual brace_ccl
+ \ no_brace_ccl braceccl nobraceccl case_glob no_case_glob caseglob nocaseglob case_match
+ \ no_case_match casematch nocasematch case_paths no_case_paths casepaths nocasepaths csh_null_glob
+ \ no_csh_null_glob cshnullglob nocshnullglob equals no_equals noequals extended_glob no_extended_glob
+ \ extendedglob noextendedglob force_float no_force_float forcefloat noforcefloat glob no_glob noglob
+ \ glob_assign no_glob_assign globassign noglobassign glob_dots no_glob_dots globdots noglobdots
+ \ glob_star_short no_glob_star_short globstarshort noglobstarshort glob_subst no_glob_subst globsubst
+ \ noglobsubst hist_subst_pattern no_hist_subst_pattern histsubstpattern nohistsubstpattern
+ \ ignore_braces no_ignore_braces ignorebraces noignorebraces ignore_close_braces
+ \ no_ignore_close_braces ignoreclosebraces noignoreclosebraces ksh_glob no_ksh_glob kshglob nokshglob
+ \ magic_equal_subst no_magic_equal_subst magicequalsubst nomagicequalsubst mark_dirs no_mark_dirs
+ \ markdirs nomarkdirs multibyte no_multibyte nomultibyte nomatch no_nomatch nonomatch null_glob
+ \ no_null_glob nullglob nonullglob numeric_glob_sort no_numeric_glob_sort numericglobsort
+ \ nonumericglobsort rc_expand_param no_rc_expand_param rcexpandparam norcexpandparam rematch_pcre
+ \ no_rematch_pcre rematchpcre norematchpcre sh_glob no_sh_glob shglob noshglob unset no_unset nounset
+ \ warn_create_global no_warn_create_global warncreateglobal nowarncreateglobal warn_nested_var
+ \ no_warn_nested_var warnnestedvar no_warnnestedvar append_history no_append_history appendhistory
+ \ noappendhistory bang_hist no_bang_hist banghist nobanghist extended_history no_extended_history
+ \ extendedhistory noextendedhistory hist_allow_clobber no_hist_allow_clobber histallowclobber
+ \ nohistallowclobber hist_beep no_hist_beep histbeep nohistbeep hist_expire_dups_first
+ \ no_hist_expire_dups_first histexpiredupsfirst nohistexpiredupsfirst hist_fcntl_lock
+ \ no_hist_fcntl_lock histfcntllock nohistfcntllock hist_find_no_dups no_hist_find_no_dups
+ \ histfindnodups nohistfindnodups hist_ignore_all_dups no_hist_ignore_all_dups histignorealldups
+ \ nohistignorealldups hist_ignore_dups no_hist_ignore_dups histignoredups nohistignoredups
+ \ hist_ignore_space no_hist_ignore_space histignorespace nohistignorespace hist_lex_words
+ \ no_hist_lex_words histlexwords nohistlexwords hist_no_functions no_hist_no_functions
+ \ histnofunctions nohistnofunctions hist_no_store no_hist_no_store histnostore nohistnostore
+ \ hist_reduce_blanks no_hist_reduce_blanks histreduceblanks nohistreduceblanks hist_save_by_copy
+ \ no_hist_save_by_copy histsavebycopy nohistsavebycopy hist_save_no_dups no_hist_save_no_dups
+ \ histsavenodups nohistsavenodups hist_verify no_hist_verify histverify nohistverify
+ \ inc_append_history no_inc_append_history incappendhistory noincappendhistory
+ \ inc_append_history_time no_inc_append_history_time incappendhistorytime noincappendhistorytime
+ \ share_history no_share_history sharehistory nosharehistory all_export no_all_export allexport
+ \ noallexport global_export no_global_export globalexport noglobalexport global_rcs no_global_rcs
+ \ globalrcs noglobalrcs rcs no_rcs norcs aliases no_aliases noaliases clobber no_clobber noclobber
+ \ clobber_empty no_clobber_empty clobberempty noclobberempty correct no_correct nocorrect correct_all
+ \ no_correct_all correctall nocorrectall dvorak no_dvorak nodvorak flow_control no_flow_control
+ \ flowcontrol noflowcontrol ignore_eof no_ignore_eof ignoreeof noignoreeof interactive_comments
+ \ no_interactive_comments interactivecomments nointeractivecomments hash_cmds no_hash_cmds hashcmds
+ \ nohashcmds hash_dirs no_hash_dirs hashdirs nohashdirs hash_executables_only
+ \ no_hash_executables_only hashexecutablesonly nohashexecutablesonly mail_warning no_mail_warning
+ \ mailwarning nomailwarning path_dirs no_path_dirs pathdirs nopathdirs path_script no_path_script
+ \ pathscript nopathscript print_eight_bit no_print_eight_bit printeightbit noprinteightbit
+ \ print_exit_value no_print_exit_value printexitvalue noprintexitvalue rc_quotes no_rc_quotes
+ \ rcquotes norcquotes rm_star_silent no_rm_star_silent rmstarsilent normstarsilent rm_star_wait
+ \ no_rm_star_wait rmstarwait normstarwait short_loops no_short_loops shortloops noshortloops
+ \ short_repeat no_short_repeat shortrepeat noshortrepeat sun_keyboard_hack no_sun_keyboard_hack
+ \ sunkeyboardhack nosunkeyboardhack auto_continue no_auto_continue autocontinue noautocontinue
+ \ auto_resume no_auto_resume autoresume noautoresume bg_nice no_bg_nice bgnice nobgnice check_jobs
+ \ no_check_jobs checkjobs nocheckjobs check_running_jobs no_check_running_jobs checkrunningjobs
+ \ nocheckrunningjobs hup no_hup nohup long_list_jobs no_long_list_jobs longlistjobs nolonglistjobs
+ \ monitor no_monitor nomonitor notify no_notify nonotify posix_jobs posixjobs no_posix_jobs
+ \ noposixjobs prompt_bang no_prompt_bang promptbang nopromptbang prompt_cr no_prompt_cr promptcr
+ \ nopromptcr prompt_sp no_prompt_sp promptsp nopromptsp prompt_percent no_prompt_percent
+ \ promptpercent nopromptpercent prompt_subst no_prompt_subst promptsubst nopromptsubst
+ \ transient_rprompt no_transient_rprompt transientrprompt notransientrprompt alias_func_def
+ \ no_alias_func_def aliasfuncdef noaliasfuncdef c_bases no_c_bases cbases nocbases c_precedences
+ \ no_c_precedences cprecedences nocprecedences debug_before_cmd no_debug_before_cmd debugbeforecmd
+ \ nodebugbeforecmd err_exit no_err_exit errexit noerrexit err_return no_err_return errreturn
+ \ noerrreturn eval_lineno no_eval_lineno evallineno noevallineno exec no_exec noexec function_argzero
+ \ no_function_argzero functionargzero nofunctionargzero local_loops no_local_loops localloops
+ \ nolocalloops local_options no_local_options localoptions nolocaloptions local_patterns
+ \ no_local_patterns localpatterns nolocalpatterns local_traps no_local_traps localtraps nolocaltraps
+ \ multi_func_def no_multi_func_def multifuncdef nomultifuncdef multios no_multios nomultios
+ \ octal_zeroes no_octal_zeroes octalzeroes nooctalzeroes pipe_fail no_pipe_fail pipefail nopipefail
+ \ source_trace no_source_trace sourcetrace nosourcetrace typeset_silent no_typeset_silent
+ \ typesetsilent notypesetsilent typeset_to_unset no_typeset_to_unset typesettounset notypesettounset
+ \ verbose no_verbose noverbose xtrace no_xtrace noxtrace append_create no_append_create appendcreate
+ \ noappendcreate bash_rematch no_bash_rematch bashrematch nobashrematch bsd_echo no_bsd_echo bsdecho
+ \ nobsdecho continue_on_error no_continue_on_error continueonerror nocontinueonerror
+ \ csh_junkie_history no_csh_junkie_history cshjunkiehistory nocshjunkiehistory csh_junkie_loops
+ \ no_csh_junkie_loops cshjunkieloops nocshjunkieloops csh_junkie_quotes no_csh_junkie_quotes
+ \ cshjunkiequotes nocshjunkiequotes csh_nullcmd no_csh_nullcmd cshnullcmd nocshnullcmd ksh_arrays
+ \ no_ksh_arrays ksharrays noksharrays ksh_autoload no_ksh_autoload kshautoload nokshautoload
+ \ ksh_option_print no_ksh_option_print kshoptionprint nokshoptionprint ksh_typeset no_ksh_typeset
+ \ kshtypeset nokshtypeset ksh_zero_subscript no_ksh_zero_subscript kshzerosubscript
+ \ nokshzerosubscript posix_aliases no_posix_aliases posixaliases noposixaliases posix_argzero
+ \ no_posix_argzero posixargzero noposixargzero posix_builtins no_posix_builtins posixbuiltins
+ \ noposixbuiltins posix_identifiers no_posix_identifiers posixidentifiers noposixidentifiers
+ \ posix_strings no_posix_strings posixstrings noposixstrings posix_traps no_posix_traps posixtraps
+ \ noposixtraps sh_file_expansion no_sh_file_expansion shfileexpansion noshfileexpansion sh_nullcmd
+ \ no_sh_nullcmd shnullcmd noshnullcmd sh_option_letters no_sh_option_letters shoptionletters
+ \ noshoptionletters sh_word_split no_sh_word_split shwordsplit noshwordsplit traps_async
+ \ no_traps_async trapsasync notrapsasync interactive no_interactive nointeractive login no_login
+ \ nologin privileged no_privileged noprivileged restricted no_restricted norestricted shin_stdin
+ \ no_shin_stdin shinstdin noshinstdin single_command no_single_command singlecommand nosinglecommand
+ \ beep no_beep nobeep combining_chars no_combining_chars combiningchars nocombiningchars emacs
+ \ no_emacs noemacs overstrike no_overstrike nooverstrike single_line_zle no_single_line_zle
+ \ singlelinezle nosinglelinezle vi no_vi novi zle no_zle nozle brace_expand no_brace_expand
+ \ braceexpand nobraceexpand dot_glob no_dot_glob dotglob nodotglob hash_all no_hash_all hashall
+ \ nohashall hist_append no_hist_append histappend nohistappend hist_expand no_hist_expand histexpand
+ \ nohistexpand log no_log nolog mail_warn no_mail_warn mailwarn nomailwarn one_cmd no_one_cmd onecmd
+ \ noonecmd physical no_physical nophysical prompt_vars no_prompt_vars promptvars nopromptvars stdin
+ \ no_stdin nostdin track_all no_track_all trackall notrackall
+syn case match
+
+syn keyword zshTypes float integer local typeset declare private readonly
+
+" XXX: this may be too much
+" syn match zshSwitches '\s\zs--\=[a-zA-Z0-9-]\+'
+
+" TODO: $[...] is the same as $((...)), so add that as well.
+syn cluster zshSubst contains=zshSubst,zshOldSubst,zshMathSubst
+syn cluster zshSubstQuoted contains=zshSubstQuoted,zshOldSubst,zshMathSubst
+exe 'syn region zshSubst matchgroup=zshSubstDelim transparent start=/\$(/ skip=/\\)/ end=/)/ contains='.s:contained. ' fold'
+exe 'syn region zshSubstQuoted matchgroup=zshSubstDelim transparent start=/\$(/ skip=/\\)/ end=/)/ contains='.s:contained. ' fold'
+syn region zshSubstQuoted matchgroup=zshSubstDelim start='\${' skip='\\}' end='}' contains=@zshSubst,zshBrackets,zshQuoted fold
+syn region zshParentheses transparent start='(' skip='\\)' end=')' fold
+syn region zshGlob start='(#' end=')'
+syn region zshMathSubst matchgroup=zshSubstDelim transparent
+ \ start='\%(\$\?\)[<=>]\@<!((' skip='\\)' end='))'
+ \ contains=zshParentheses,@zshSubst,zshNumber,
+ \ @zshDerefs,zshString fold
+" The ms=s+1 prevents matching zshBrackets several times on opening brackets
+" (see https://github.com/chrisbra/vim-zsh/issues/21#issuecomment-576330348)
+syn region zshBrackets contained transparent start='{'ms=s+1 skip='\\}'
+ \ end='}' fold
+exe 'syn region zshBrackets transparent start=/{/ms=s+1 skip=/\\}/ end=/}/ contains='.s:contained. ' fold'
+
+syn region zshSubst matchgroup=zshSubstDelim start='\${' skip='\\}'
+ \ end='}' contains=@zshSubst,zshBrackets,zshQuoted,zshString fold
+exe 'syn region zshOldSubst matchgroup=zshSubstDelim start=/`/ skip=/\\[\\`]/ end=/`/ contains='.s:contained. ',zshOldSubst fold'
+
+syn sync minlines=50 maxlines=90
+syn sync match zshHereDocSync grouphere NONE '<<-\=\s*\%(\\\=\S\+\|\(["']\)\S\+\1\)'
+syn sync match zshHereDocEndSync groupthere NONE '^\s*EO\a\+\>'
+
+syn keyword zshTodo contained TODO FIXME XXX NOTE
+
+syn region zshComment oneline start='\%(^\|\s\+\)#' end='$'
+ \ contains=zshTodo,@Spell fold
+
+syn region zshComment start='^\s*#' end='^\%(\s*#\)\@!'
+ \ contains=zshTodo,@Spell fold
+
+syn match zshPreProc '^\%1l#\%(!\|compdef\|autoload\).*$'
+
+hi def link zshTodo Todo
+hi def link zshComment Comment
+hi def link zshPreProc PreProc
+hi def link zshQuoted SpecialChar
+hi def link zshPOSIXQuoted SpecialChar
+hi def link zshString String
+hi def link zshStringDelimiter zshString
+hi def link zshPOSIXString zshString
+hi def link zshJobSpec Special
+hi def link zshPrecommand Special
+hi def link zshDelimiter Keyword
+hi def link zshConditional Conditional
+hi def link zshCase zshConditional
+hi def link zshCaseIn zshCase
+hi def link zshException Exception
+hi def link zshRepeat Repeat
+hi def link zshKeyword Keyword
+hi def link zshFunction None
+hi def link zshKSHFunction zshFunction
+hi def link zshHereDoc String
+hi def link zshOperator None
+hi def link zshRedir Operator
+hi def link zshVariable None
+hi def link zshVariableDef zshVariable
+hi def link zshDereferencing PreProc
+hi def link zshShortDeref zshDereferencing
+hi def link zshLongDeref zshDereferencing
+hi def link zshDeref zshDereferencing
+hi def link zshDollarVar zshDereferencing
+hi def link zshCommands Keyword
+hi def link zshOptStart Keyword
+hi def link zshOption Constant
+hi def link zshTypes Type
+hi def link zshSwitches Special
+hi def link zshNumber Number
+hi def link zshSubst PreProc
+hi def link zshSubstQuoted zshSubst
+hi def link zshMathSubst zshSubst
+hi def link zshOldSubst zshSubst
+hi def link zshSubstDelim zshSubst
+hi def link zshGlob zshSubst
+
+let b:current_syntax = "zsh"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save